(function webpackUniversalModuleDefinition(root, factory) { if(typeof exports === 'object' && typeof module === 'object') module.exports = factory(); else if(typeof define === 'function' && define.amd) define("Muxy", [], factory); else if(typeof exports === 'object') exports["Muxy"] = factory(); else root["Muxy"] = factory(); })(this, function() { return /******/ (function(modules) { // webpackBootstrap /******/ // The module cache /******/ var installedModules = {}; /******/ /******/ // The require function /******/ function __webpack_require__(moduleId) { /******/ /******/ // Check if module is in cache /******/ if(installedModules[moduleId]) { /******/ return installedModules[moduleId].exports; /******/ } /******/ // Create a new module (and put it into the cache) /******/ var module = installedModules[moduleId] = { /******/ i: moduleId, /******/ l: false, /******/ exports: {} /******/ }; /******/ /******/ // Execute the module function /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); /******/ /******/ // Flag the module as loaded /******/ module.l = true; /******/ /******/ // Return the exports of the module /******/ return module.exports; /******/ } /******/ /******/ /******/ // expose the modules object (__webpack_modules__) /******/ __webpack_require__.m = modules; /******/ /******/ // expose the module cache /******/ __webpack_require__.c = installedModules; /******/ /******/ // define getter function for harmony exports /******/ __webpack_require__.d = function(exports, name, getter) { /******/ if(!__webpack_require__.o(exports, name)) { /******/ Object.defineProperty(exports, name, { /******/ configurable: false, /******/ enumerable: true, /******/ get: getter /******/ }); /******/ } /******/ }; /******/ /******/ // getDefaultExport function for compatibility with non-harmony modules /******/ __webpack_require__.n = function(module) { /******/ var getter = module && module.__esModule ? /******/ function getDefault() { return module['default']; } : /******/ function getModuleExports() { return module; }; /******/ __webpack_require__.d(getter, 'a', getter); /******/ return getter; /******/ }; /******/ /******/ // Object.prototype.hasOwnProperty.call /******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; /******/ /******/ // __webpack_public_path__ /******/ __webpack_require__.p = ""; /******/ /******/ // Load entry module and return exports /******/ return __webpack_require__(__webpack_require__.s = 56); /******/ }) /************************************************************************/ /******/ ([ /* 0 */ /***/ (function(module, exports, __webpack_require__) { var store = __webpack_require__(28)('wks') , uid = __webpack_require__(19) , Symbol = __webpack_require__(1).Symbol , USE_SYMBOL = typeof Symbol == 'function'; var $exports = module.exports = function(name){ return store[name] || (store[name] = USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name)); }; $exports.store = store; /***/ }), /* 1 */ /***/ (function(module, exports) { // https://github.com/zloirock/core-js/issues/86#issuecomment-115759028 var global = module.exports = typeof window != 'undefined' && window.Math == Math ? window : typeof self != 'undefined' && self.Math == Math ? self : Function('return this')(); if(typeof __g == 'number')__g = global; // eslint-disable-line no-undef /***/ }), /* 2 */ /***/ (function(module, exports) { var core = module.exports = {version: '2.4.0'}; if(typeof __e == 'number')__e = core; // eslint-disable-line no-undef /***/ }), /* 3 */ /***/ (function(module, exports, __webpack_require__) { var anObject = __webpack_require__(8) , IE8_DOM_DEFINE = __webpack_require__(41) , toPrimitive = __webpack_require__(32) , dP = Object.defineProperty; exports.f = __webpack_require__(4) ? Object.defineProperty : function defineProperty(O, P, Attributes){ anObject(O); P = toPrimitive(P, true); anObject(Attributes); if(IE8_DOM_DEFINE)try { return dP(O, P, Attributes); } catch(e){ /* empty */ } if('get' in Attributes || 'set' in Attributes)throw TypeError('Accessors not supported!'); if('value' in Attributes)O[P] = Attributes.value; return O; }; /***/ }), /* 4 */ /***/ (function(module, exports, __webpack_require__) { // Thank's IE8 for his funny defineProperty module.exports = !__webpack_require__(15)(function(){ return Object.defineProperty({}, 'a', {get: function(){ return 7; }}).a != 7; }); /***/ }), /* 5 */ /***/ (function(module, exports) { var hasOwnProperty = {}.hasOwnProperty; module.exports = function(it, key){ return hasOwnProperty.call(it, key); }; /***/ }), /* 6 */ /***/ (function(module, exports, __webpack_require__) { // to indexed object, toObject with fallback for non-array-like ES3 strings var IObject = __webpack_require__(60) , defined = __webpack_require__(25); module.exports = function(it){ return IObject(defined(it)); }; /***/ }), /* 7 */ /***/ (function(module, exports, __webpack_require__) { var dP = __webpack_require__(3) , createDesc = __webpack_require__(21); module.exports = __webpack_require__(4) ? function(object, key, value){ return dP.f(object, key, createDesc(1, value)); } : function(object, key, value){ object[key] = value; return object; }; /***/ }), /* 8 */ /***/ (function(module, exports, __webpack_require__) { var isObject = __webpack_require__(14); module.exports = function(it){ if(!isObject(it))throw TypeError(it + ' is not an object!'); return it; }; /***/ }), /* 9 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; exports.__esModule = true; exports.default = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }; /***/ }), /* 10 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; exports.__esModule = true; var _defineProperty = __webpack_require__(98); var _defineProperty2 = _interopRequireDefault(_defineProperty); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } exports.default = 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; (0, _defineProperty2.default)(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); /***/ }), /* 11 */ /***/ (function(module, exports, __webpack_require__) { // 19.1.2.14 / 15.2.3.14 Object.keys(O) var $keys = __webpack_require__(39) , enumBugKeys = __webpack_require__(29); module.exports = Object.keys || function keys(O){ return $keys(O, enumBugKeys); }; /***/ }), /* 12 */ /***/ (function(module, exports) { var toString = {}.toString; module.exports = function(it){ return toString.call(it).slice(8, -1); }; /***/ }), /* 13 */ /***/ (function(module, exports, __webpack_require__) { var global = __webpack_require__(1) , core = __webpack_require__(2) , ctx = __webpack_require__(20) , hide = __webpack_require__(7) , PROTOTYPE = 'prototype'; var $export = function(type, name, source){ var IS_FORCED = type & $export.F , IS_GLOBAL = type & $export.G , IS_STATIC = type & $export.S , IS_PROTO = type & $export.P , IS_BIND = type & $export.B , IS_WRAP = type & $export.W , exports = IS_GLOBAL ? core : core[name] || (core[name] = {}) , expProto = exports[PROTOTYPE] , target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE] , key, own, out; if(IS_GLOBAL)source = name; for(key in source){ // contains in native own = !IS_FORCED && target && target[key] !== undefined; if(own && key in exports)continue; // export native or passed out = own ? target[key] : source[key]; // prevent global pollution for namespaces exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key] // bind timers to global for call from export context : IS_BIND && own ? ctx(out, global) // wrap global constructors for prevent change them in library : IS_WRAP && target[key] == out ? (function(C){ var F = function(a, b, c){ if(this instanceof C){ switch(arguments.length){ case 0: return new C; case 1: return new C(a); case 2: return new C(a, b); } return new C(a, b, c); } return C.apply(this, arguments); }; F[PROTOTYPE] = C[PROTOTYPE]; return F; // make static versions for prototype methods })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out; // export proto methods to core.%CONSTRUCTOR%.methods.%NAME% if(IS_PROTO){ (exports.virtual || (exports.virtual = {}))[key] = out; // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME% if(type & $export.R && expProto && !expProto[key])hide(expProto, key, out); } } }; // type bitmap $export.F = 1; // forced $export.G = 2; // global $export.S = 4; // static $export.P = 8; // proto $export.B = 16; // bind $export.W = 32; // wrap $export.U = 64; // safe $export.R = 128; // real proto method for `library` module.exports = $export; /***/ }), /* 14 */ /***/ (function(module, exports) { module.exports = function(it){ return typeof it === 'object' ? it !== null : typeof it === 'function'; }; /***/ }), /* 15 */ /***/ (function(module, exports) { module.exports = function(exec){ try { return !!exec(); } catch(e){ return true; } }; /***/ }), /* 16 */ /***/ (function(module, exports, __webpack_require__) { module.exports = { "default": __webpack_require__(64), __esModule: true }; /***/ }), /* 17 */ /***/ (function(module, exports) { module.exports = {}; /***/ }), /* 18 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.CurrentEnvironment = exports.ENVIRONMENTS = undefined; var _typeof2 = __webpack_require__(51); var _typeof3 = _interopRequireDefault(_typeof2); var _promise = __webpack_require__(16); var _promise2 = _interopRequireDefault(_promise); exports.errorPromise = errorPromise; exports.consolePrint = consolePrint; exports.eventPatternMatch = eventPatternMatch; exports.forceType = forceType; function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var ENVIRONMENTS = exports.ENVIRONMENTS = { SANDBOX_DEV: { environment: 'sandbox' }, SANDBOX_TWITCH: { environment: 'sandbox' }, PRODUCTION: { environment: 'production' }, SERVER: { environment: 'production' } }; function environmentDetector(overrideWindow) { var vWindow = void 0; if (typeof window !== 'undefined') { vWindow = window; } if (overrideWindow) { vWindow = overrideWindow; } try { if (typeof module !== 'undefined' && module.exports && typeof vWindow === 'undefined') { return ENVIRONMENTS.SERVER; } if (!isWindowFramed()) { return ENVIRONMENTS.SANDBOX_DEV; } if (vWindow.location.origin.indexOf('.ext-twitch.tv') !== -1) { return ENVIRONMENTS.PRODUCTION; } if (vWindow.document.referrer.indexOf('twitch.tv') !== -1) { return ENVIRONMENTS.SANDBOX_TWITCH; } } catch (err) { consolePrint(err, { type: 'error' }); } return ENVIRONMENTS.SANDBOX_DEV; } var CurrentEnvironment = exports.CurrentEnvironment = environmentDetector; function errorPromise(err) { return _promise2.default.reject(err); } function widestLine(lines) { return Math.max.apply(null, lines.map(function (x) { return x.length; })); } function asciiBox(lines) { var contentWidth = widestLine(lines); var intro = ' '.repeat(contentWidth / 2) + '\uD83E\uDD8A'; var out = [intro]; out.push('\u250C' + '─'.repeat(contentWidth + 2) + '\u2510'); lines.forEach(function (line) { var paddingRight = ' '.repeat(contentWidth - line.length); out.push('| ' + line + paddingRight + ' |'); }); out.push('\u2514' + '─'.repeat(contentWidth + 2) + '\u2518'); return out; } function consolePrint(lines) { var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; var style = 'font-family: monospace;'; var lineArr = Array.isArray(lines) ? lines : [lines]; var type = options.type || 'log'; if (options.boxed) { lineArr = asciiBox(lineArr); } if (options.style) { style += options.style; } if (CurrentEnvironment() === ENVIRONMENTS.SERVER) { console[type].call(this, lineArr.join('\n')); } else { console[type].call(this, '%c' + lineArr.join('\n'), style); } } function eventPatternMatch(input, pattern) { var inputParts = input.split(':'); var patternParts = pattern.split(':'); if (inputParts.length !== patternParts.length) { return false; } for (var i = 0; i < inputParts.length; i += 1) { if (inputParts[i] !== patternParts[i] && patternParts[i] !== '*') { return false; } } return true; } function forceType(value, type) { var types = [].concat(type); var typeString = typeof value === 'undefined' ? 'undefined' : (0, _typeof3.default)(value); if (types.indexOf(typeString) === -1) { throw new TypeError('expected \'' + typeString + '\' to be one of [' + types + ']'); } } function isWindowFramed() { var isNotChildWindow = !window.opener; var hasWindowAncestors = !!(window.top && window != window.top || window.parent && window != window.parent); return isNotChildWindow && hasWindowAncestors; } /***/ }), /* 19 */ /***/ (function(module, exports) { var id = 0 , px = Math.random(); module.exports = function(key){ return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36)); }; /***/ }), /* 20 */ /***/ (function(module, exports, __webpack_require__) { // optional / simple context binding var aFunction = __webpack_require__(30); module.exports = function(fn, that, length){ aFunction(fn); if(that === undefined)return fn; switch(length){ case 1: return function(a){ return fn.call(that, a); }; case 2: return function(a, b){ return fn.call(that, a, b); }; case 3: return function(a, b, c){ return fn.call(that, a, b, c); }; } return function(/* ...args */){ return fn.apply(that, arguments); }; }; /***/ }), /* 21 */ /***/ (function(module, exports) { module.exports = function(bitmap, value){ return { enumerable : !(bitmap & 1), configurable: !(bitmap & 2), writable : !(bitmap & 4), value : value }; }; /***/ }), /* 22 */ /***/ (function(module, exports) { module.exports = true; /***/ }), /* 23 */ /***/ (function(module, exports, __webpack_require__) { var def = __webpack_require__(3).f , has = __webpack_require__(5) , TAG = __webpack_require__(0)('toStringTag'); module.exports = function(it, tag, stat){ if(it && !has(it = stat ? it : it.prototype, TAG))def(it, TAG, {configurable: true, value: tag}); }; /***/ }), /* 24 */ /***/ (function(module, exports) { var g; // This works in non-strict mode g = (function() { return this; })(); try { // This works if eval is allowed (see CSP) g = g || Function("return this")() || (1,eval)("this"); } catch(e) { // This works if the window reference is available if(typeof window === "object") g = window; } // g can still be undefined, but nothing to do about it... // We return undefined, instead of nothing here, so it's // easier to handle this case. if(!global) { ...} module.exports = g; /***/ }), /* 25 */ /***/ (function(module, exports) { // 7.2.1 RequireObjectCoercible(argument) module.exports = function(it){ if(it == undefined)throw TypeError("Can't call method on " + it); return it; }; /***/ }), /* 26 */ /***/ (function(module, exports) { // 7.1.4 ToInteger var ceil = Math.ceil , floor = Math.floor; module.exports = function(it){ return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it); }; /***/ }), /* 27 */ /***/ (function(module, exports, __webpack_require__) { var shared = __webpack_require__(28)('keys') , uid = __webpack_require__(19); module.exports = function(key){ return shared[key] || (shared[key] = uid(key)); }; /***/ }), /* 28 */ /***/ (function(module, exports, __webpack_require__) { var global = __webpack_require__(1) , SHARED = '__core-js_shared__' , store = global[SHARED] || (global[SHARED] = {}); module.exports = function(key){ return store[key] || (store[key] = {}); }; /***/ }), /* 29 */ /***/ (function(module, exports) { // IE 8- don't enum bug keys module.exports = ( 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf' ).split(','); /***/ }), /* 30 */ /***/ (function(module, exports) { module.exports = function(it){ if(typeof it != 'function')throw TypeError(it + ' is not a function!'); return it; }; /***/ }), /* 31 */ /***/ (function(module, exports, __webpack_require__) { var isObject = __webpack_require__(14) , document = __webpack_require__(1).document // in old IE typeof document.createElement is 'object' , is = isObject(document) && isObject(document.createElement); module.exports = function(it){ return is ? document.createElement(it) : {}; }; /***/ }), /* 32 */ /***/ (function(module, exports, __webpack_require__) { // 7.1.1 ToPrimitive(input [, PreferredType]) var isObject = __webpack_require__(14); // instead of the ES6 spec version, we didn't implement @@toPrimitive case // and the second argument - flag - preferred type is a string module.exports = function(it, S){ if(!isObject(it))return it; var fn, val; if(S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it)))return val; if(typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it)))return val; if(!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it)))return val; throw TypeError("Can't convert object to primitive value"); }; /***/ }), /* 33 */ /***/ (function(module, exports, __webpack_require__) { exports.f = __webpack_require__(0); /***/ }), /* 34 */ /***/ (function(module, exports, __webpack_require__) { var global = __webpack_require__(1) , core = __webpack_require__(2) , LIBRARY = __webpack_require__(22) , wksExt = __webpack_require__(33) , defineProperty = __webpack_require__(3).f; module.exports = function(name){ var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {}); if(name.charAt(0) != '_' && !(name in $Symbol))defineProperty($Symbol, name, {value: wksExt.f(name)}); }; /***/ }), /* 35 */ /***/ (function(module, exports) { exports.f = {}.propertyIsEnumerable; /***/ }), /* 36 */ /***/ (function(module, exports, __webpack_require__) { module.exports = { "default": __webpack_require__(102), __esModule: true }; /***/ }), /* 37 */ /***/ (function(module, exports, __webpack_require__) { module.exports = { "default": __webpack_require__(58), __esModule: true }; /***/ }), /* 38 */ /***/ (function(module, exports, __webpack_require__) { // 7.1.13 ToObject(argument) var defined = __webpack_require__(25); module.exports = function(it){ return Object(defined(it)); }; /***/ }), /* 39 */ /***/ (function(module, exports, __webpack_require__) { var has = __webpack_require__(5) , toIObject = __webpack_require__(6) , arrayIndexOf = __webpack_require__(61)(false) , IE_PROTO = __webpack_require__(27)('IE_PROTO'); module.exports = function(object, names){ var O = toIObject(object) , i = 0 , result = [] , key; for(key in O)if(key != IE_PROTO)has(O, key) && result.push(key); // Don't enum bug & hidden keys while(names.length > i)if(has(O, key = names[i++])){ ~arrayIndexOf(result, key) || result.push(key); } return result; }; /***/ }), /* 40 */ /***/ (function(module, exports, __webpack_require__) { // 7.1.15 ToLength var toInteger = __webpack_require__(26) , min = Math.min; module.exports = function(it){ return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991 }; /***/ }), /* 41 */ /***/ (function(module, exports, __webpack_require__) { module.exports = !__webpack_require__(4) && !__webpack_require__(15)(function(){ return Object.defineProperty(__webpack_require__(31)('div'), 'a', {get: function(){ return 7; }}).a != 7; }); /***/ }), /* 42 */ /***/ (function(module, exports) { /***/ }), /* 43 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; var $at = __webpack_require__(65)(true); // 21.1.3.27 String.prototype[@@iterator]() __webpack_require__(44)(String, 'String', function(iterated){ this._t = String(iterated); // target this._i = 0; // next index // 21.1.5.2.1 %StringIteratorPrototype%.next() }, function(){ var O = this._t , index = this._i , point; if(index >= O.length)return {value: undefined, done: true}; point = $at(O, index); this._i += point.length; return {value: point, done: false}; }); /***/ }), /* 44 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; var LIBRARY = __webpack_require__(22) , $export = __webpack_require__(13) , redefine = __webpack_require__(45) , hide = __webpack_require__(7) , has = __webpack_require__(5) , Iterators = __webpack_require__(17) , $iterCreate = __webpack_require__(66) , setToStringTag = __webpack_require__(23) , getPrototypeOf = __webpack_require__(68) , ITERATOR = __webpack_require__(0)('iterator') , BUGGY = !([].keys && 'next' in [].keys()) // Safari has buggy iterators w/o `next` , FF_ITERATOR = '@@iterator' , KEYS = 'keys' , VALUES = 'values'; var returnThis = function(){ return this; }; module.exports = function(Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED){ $iterCreate(Constructor, NAME, next); var getMethod = function(kind){ if(!BUGGY && kind in proto)return proto[kind]; switch(kind){ case KEYS: return function keys(){ return new Constructor(this, kind); }; case VALUES: return function values(){ return new Constructor(this, kind); }; } return function entries(){ return new Constructor(this, kind); }; }; var TAG = NAME + ' Iterator' , DEF_VALUES = DEFAULT == VALUES , VALUES_BUG = false , proto = Base.prototype , $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT] , $default = $native || getMethod(DEFAULT) , $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined , $anyNative = NAME == 'Array' ? proto.entries || $native : $native , methods, key, IteratorPrototype; // Fix native if($anyNative){ IteratorPrototype = getPrototypeOf($anyNative.call(new Base)); if(IteratorPrototype !== Object.prototype){ // Set @@toStringTag to native iterators setToStringTag(IteratorPrototype, TAG, true); // fix for some old engines if(!LIBRARY && !has(IteratorPrototype, ITERATOR))hide(IteratorPrototype, ITERATOR, returnThis); } } // fix Array#{values, @@iterator}.name in V8 / FF if(DEF_VALUES && $native && $native.name !== VALUES){ VALUES_BUG = true; $default = function values(){ return $native.call(this); }; } // Define iterator if((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])){ hide(proto, ITERATOR, $default); } // Plug for library Iterators[NAME] = $default; Iterators[TAG] = returnThis; if(DEFAULT){ methods = { values: DEF_VALUES ? $default : getMethod(VALUES), keys: IS_SET ? $default : getMethod(KEYS), entries: $entries }; if(FORCED)for(key in methods){ if(!(key in proto))redefine(proto, key, methods[key]); } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods); } return methods; }; /***/ }), /* 45 */ /***/ (function(module, exports, __webpack_require__) { module.exports = __webpack_require__(7); /***/ }), /* 46 */ /***/ (function(module, exports, __webpack_require__) { // 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties]) var anObject = __webpack_require__(8) , dPs = __webpack_require__(67) , enumBugKeys = __webpack_require__(29) , IE_PROTO = __webpack_require__(27)('IE_PROTO') , Empty = function(){ /* empty */ } , PROTOTYPE = 'prototype'; // Create object with fake `null` prototype: use iframe Object with cleared prototype var createDict = function(){ // Thrash, waste and sodomy: IE GC bug var iframe = __webpack_require__(31)('iframe') , i = enumBugKeys.length , lt = '<' , gt = '>' , iframeDocument; iframe.style.display = 'none'; __webpack_require__(47).appendChild(iframe); iframe.src = 'javascript:'; // eslint-disable-line no-script-url // createDict = iframe.contentWindow.Object; // html.removeChild(iframe); iframeDocument = iframe.contentWindow.document; iframeDocument.open(); iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt); iframeDocument.close(); createDict = iframeDocument.F; while(i--)delete createDict[PROTOTYPE][enumBugKeys[i]]; return createDict(); }; module.exports = Object.create || function create(O, Properties){ var result; if(O !== null){ Empty[PROTOTYPE] = anObject(O); result = new Empty; Empty[PROTOTYPE] = null; // add "__proto__" for Object.getPrototypeOf polyfill result[IE_PROTO] = O; } else result = createDict(); return Properties === undefined ? result : dPs(result, Properties); }; /***/ }), /* 47 */ /***/ (function(module, exports, __webpack_require__) { module.exports = __webpack_require__(1).document && document.documentElement; /***/ }), /* 48 */ /***/ (function(module, exports, __webpack_require__) { __webpack_require__(69); var global = __webpack_require__(1) , hide = __webpack_require__(7) , Iterators = __webpack_require__(17) , TO_STRING_TAG = __webpack_require__(0)('toStringTag'); for(var collections = ['NodeList', 'DOMTokenList', 'MediaList', 'StyleSheetList', 'CSSRuleList'], i = 0; i < 5; i++){ var NAME = collections[i] , Collection = global[NAME] , proto = Collection && Collection.prototype; if(proto && !proto[TO_STRING_TAG])hide(proto, TO_STRING_TAG, NAME); Iterators[NAME] = Iterators.Array; } /***/ }), /* 49 */ /***/ (function(module, exports, __webpack_require__) { // getting tag from 19.1.3.6 Object.prototype.toString() var cof = __webpack_require__(12) , TAG = __webpack_require__(0)('toStringTag') // ES3 wrong here , ARG = cof(function(){ return arguments; }()) == 'Arguments'; // fallback for IE11 Script Access Denied error var tryGet = function(it, key){ try { return it[key]; } catch(e){ /* empty */ } }; module.exports = function(it){ var O, T, B; return it === undefined ? 'Undefined' : it === null ? 'Null' // @@toStringTag case : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T // builtinTag case : ARG ? cof(O) // ES3 arguments fallback : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B; }; /***/ }), /* 50 */ /***/ (function(module, exports, __webpack_require__) { var ctx = __webpack_require__(20) , invoke = __webpack_require__(79) , html = __webpack_require__(47) , cel = __webpack_require__(31) , global = __webpack_require__(1) , process = global.process , setTask = global.setImmediate , clearTask = global.clearImmediate , MessageChannel = global.MessageChannel , counter = 0 , queue = {} , ONREADYSTATECHANGE = 'onreadystatechange' , defer, channel, port; var run = function(){ var id = +this; if(queue.hasOwnProperty(id)){ var fn = queue[id]; delete queue[id]; fn(); } }; var listener = function(event){ run.call(event.data); }; // Node.js 0.9+ & IE10+ has setImmediate, otherwise: if(!setTask || !clearTask){ setTask = function setImmediate(fn){ var args = [], i = 1; while(arguments.length > i)args.push(arguments[i++]); queue[++counter] = function(){ invoke(typeof fn == 'function' ? fn : Function(fn), args); }; defer(counter); return counter; }; clearTask = function clearImmediate(id){ delete queue[id]; }; // Node.js 0.8- if(__webpack_require__(12)(process) == 'process'){ defer = function(id){ process.nextTick(ctx(run, id, 1)); }; // Browsers with MessageChannel, includes WebWorkers } else if(MessageChannel){ channel = new MessageChannel; port = channel.port2; channel.port1.onmessage = listener; defer = ctx(port.postMessage, port, 1); // Browsers with postMessage, skip WebWorkers // IE8 has postMessage, but it's sync & typeof its postMessage is 'object' } else if(global.addEventListener && typeof postMessage == 'function' && !global.importScripts){ defer = function(id){ global.postMessage(id + '', '*'); }; global.addEventListener('message', listener, false); // IE8- } else if(ONREADYSTATECHANGE in cel('script')){ defer = function(id){ html.appendChild(cel('script'))[ONREADYSTATECHANGE] = function(){ html.removeChild(this); run.call(id); }; }; // Rest old browsers } else { defer = function(id){ setTimeout(ctx(run, id, 1), 0); }; } } module.exports = { set: setTask, clear: clearTask }; /***/ }), /* 51 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; exports.__esModule = true; var _iterator = __webpack_require__(84); var _iterator2 = _interopRequireDefault(_iterator); var _symbol = __webpack_require__(86); var _symbol2 = _interopRequireDefault(_symbol); var _typeof = typeof _symbol2.default === "function" && typeof _iterator2.default === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof _symbol2.default === "function" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? "symbol" : typeof obj; }; function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } exports.default = typeof _symbol2.default === "function" && _typeof(_iterator2.default) === "symbol" ? function (obj) { return typeof obj === "undefined" ? "undefined" : _typeof(obj); } : function (obj) { return obj && typeof _symbol2.default === "function" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? "symbol" : typeof obj === "undefined" ? "undefined" : _typeof(obj); }; /***/ }), /* 52 */ /***/ (function(module, exports) { exports.f = Object.getOwnPropertySymbols; /***/ }), /* 53 */ /***/ (function(module, exports, __webpack_require__) { // 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O) var $keys = __webpack_require__(39) , hiddenKeys = __webpack_require__(29).concat('length', 'prototype'); exports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O){ return $keys(O, hiddenKeys); }; /***/ }), /* 54 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var _promise = __webpack_require__(16); var _promise2 = _interopRequireDefault(_promise); var _stringify = __webpack_require__(36); var _stringify2 = _interopRequireDefault(_stringify); var _classCallCheck2 = __webpack_require__(9); var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); var _createClass2 = __webpack_require__(10); var _createClass3 = _interopRequireDefault(_createClass2); var _base = __webpack_require__(103); var _base2 = _interopRequireDefault(_base); var _xhrPromise = __webpack_require__(55); var _xhrPromise2 = _interopRequireDefault(_xhrPromise); var _util = __webpack_require__(18); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var API_URL = 'https://api.muxy.io'; var SANDBOX_URL = 'https://sandbox.api.muxy.io'; var SERVER_URL = API_URL; var ServerState = { AUTHENTICATION: 'authentication', USER: 'user_info', VIEWER: 'viewer_state', CHANNEL: 'channel_state', EXTENSION: 'extension_state', ALL: 'all_state' }; var Client = function () { function Client() { var _this = this; (0, _classCallCheck3.default)(this, Client); this.getState = function (identifier, substate) { return _this.signedRequest(identifier, 'GET', substate || ServerState.ALL); }; this.postState = function (identifier, substate, data) { return _this.signedRequest(identifier, 'POST', substate || ServerState.ALL, data); }; this.getUserInfo = function (identifier) { return _this.getState(identifier, ServerState.USER); }; this.getViewerState = function (identifier) { return _this.getState(identifier, ServerState.VIEWER); }; this.getChannelState = function (identifier) { return _this.getState(identifier, ServerState.CHANNEL); }; this.getExtensionState = function (identifier) { return _this.getState(identifier, ServerState.EXTENSION); }; this.setViewerState = function (identifier, state) { return _this.postState(identifier, ServerState.VIEWER, (0, _stringify2.default)(state)); }; this.setChannelState = function (identifier, state) { return _this.postState(identifier, ServerState.CHANNEL, (0, _stringify2.default)(state)); }; this.getAccumulation = function (identifier, id, start) { return _this.signedRequest(identifier, 'GET', 'accumulate?id=' + (id || 'default') + '&start=' + start); }; this.accumulate = function (identifier, id, data) { return _this.signedRequest(identifier, 'POST', 'accumulate?id=' + (id || 'default'), (0, _stringify2.default)(data)); }; this.vote = function (identifier, id, data) { return _this.signedRequest(identifier, 'POST', 'vote?id=' + (id || 'default'), (0, _stringify2.default)(data)); }; this.getVotes = function (identifier, id) { return _this.signedRequest(identifier, 'GET', 'vote?id=' + (id || 'default')); }; this.rank = function (identifier, data) { return _this.signedRequest(identifier, 'POST', 'rank', (0, _stringify2.default)(data)); }; this.getRank = function (identifier) { return _this.signedRequest(identifier, 'GET', 'rank'); }; this.deleteRank = function (identifier) { return _this.signedRequest(identifier, 'DELETE', 'rank'); }; this.getJSONStore = function (identifier, id) { return _this.signedRequest(identifier, 'GET', 'json_store?id=' + (id || 'default')); }; this.validateCode = function (identifier, code) { return _this.signedRequest(identifier, 'POST', 'validate_pin', (0, _stringify2.default)({ pin: code })); }; this.pinTokenExists = function (identifier) { return _this.signedRequest(identifier, 'GET', 'pin_token_exists'); }; this.revokeAllPINCodes = function (identifier) { return _this.signedRequest(identifier, 'DELETE', 'pin'); }; } (0, _createClass3.default)(Client, [{ key: 'updateAuth', value: function updateAuth(token) { this.token = token; } }, { key: 'signedRequest', value: function signedRequest(extensionID, method, endpoint, data) { var _this2 = this; if (!this.validateJWT()) { return (0, _util.errorPromise)('Your authentication token has expired.'); } return new _promise2.default(function (resolve, reject) { var xhrPromise = new _xhrPromise2.default(); xhrPromise.send({ method: method, url: SERVER_URL + '/v1/e/' + endpoint, headers: { Authorization: extensionID + ' ' + _this2.token }, data: data }).catch(reject).then(function (resp) { try { if (resp.status < 400) { resolve(resp.responseText); } else if (resp.responseText) { reject(resp.responseText); } else { reject('Server returned status ' + resp.status); } } catch (err) { reject(err); } }); }); } }, { key: 'validateJWT', value: function validateJWT() { try { var splitToken = this.token.split('.'); if (splitToken.length !== 3) { return false; } var tk = JSON.parse(_base2.default.decode(splitToken[1])); if (!tk.exp) { return false; } var now = new Date().valueOf(); if (tk.exp < now / 1000) { return false; } return true; } catch (err) { return false; } } }], [{ key: 'fetchTestAuth', value: function fetchTestAuth(testExtensionID, channelID, role) { return new _promise2.default(function (resolve, reject) { var xhrPromise = new _xhrPromise2.default(); xhrPromise.send({ method: 'POST', url: SANDBOX_URL + '/v1/e/authtoken', data: (0, _stringify2.default)({ app_id: testExtensionID, channel_id: channelID, role: role }) }).catch(reject).then(function (resp) { if (resp && resp.status < 400) { SERVER_URL = SANDBOX_URL; var auth = resp.responseText; auth.clientId = testExtensionID; auth.channelId = channelID; auth.userId = 'T12345678'; resolve(auth); } else { reject(); } }); }); } }, { key: 'setEnvironment', value: function setEnvironment(env) { if (env === _util.ENVIRONMENTS.SANDBOX_DEV || env === _util.ENVIRONMENTS.SANDBOX_TWITCH) { SERVER_URL = SANDBOX_URL; } } }]); return Client; }(); exports.default = Client; /***/ }), /* 55 */ /***/ (function(module, exports, __webpack_require__) { module.exports = __webpack_require__(105); /***/ }), /* 56 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; var _muxy = __webpack_require__(57); var _muxy2 = _interopRequireDefault(_muxy); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } module.exports = new _muxy2.default(); /***/ }), /* 57 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var _keys = __webpack_require__(37); var _keys2 = _interopRequireDefault(_keys); var _promise = __webpack_require__(16); var _promise2 = _interopRequireDefault(_promise); exports.default = Muxy; var _util = __webpack_require__(18); var _analytics = __webpack_require__(97); var _analytics2 = _interopRequireDefault(_analytics); var _stateClient = __webpack_require__(54); var _stateClient2 = _interopRequireDefault(_stateClient); var _twitchExt = __webpack_require__(116); var _twitchExt2 = _interopRequireDefault(_twitchExt); var _twitchClient = __webpack_require__(117); var _twitchClient2 = _interopRequireDefault(_twitchClient); var _messenger = __webpack_require__(118); var _messenger2 = _interopRequireDefault(_messenger); var _sdk = __webpack_require__(120); var _sdk2 = _interopRequireDefault(_sdk); var _user = __webpack_require__(121); var _user2 = _interopRequireDefault(_user); var _package = __webpack_require__(122); var PackageConfig = _interopRequireWildcard(_package); function _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; } } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function Muxy() { var muxy = {}; muxy.setupCalled = false; muxy.testChannelID = '23161357'; muxy.testJWTRole = 'viewer'; muxy.SDKClients = {}; muxy.client = new _stateClient2.default(); muxy.messenger = new _messenger2.default(); muxy.twitchClientID = ''; muxy.cachedTwitchClient = null; muxy.analytics = null; muxy.context = {}; muxy.loadPromise = new _promise2.default(function (resolve, reject) { muxy.loadResolve = resolve; muxy.loadReject = reject; }); var SDKInfoText = ['Muxy Extensions SDK', 'v' + PackageConfig.version + ' \xA9 ' + new Date().getFullYear() + ' ' + PackageConfig.author, PackageConfig.repository, '']; switch ((0, _util.CurrentEnvironment)()) { case _util.ENVIRONMENTS.SANDBOX_DEV: SDKInfoText.push('Running in sandbox environment outside of Twitch'); break; case _util.ENVIRONMENTS.SANDBOX_TWITCH: SDKInfoText.push('Running in sandbox environment on Twitch'); break; case _util.ENVIRONMENTS.PRODUCTION: SDKInfoText.push('Running on production'); break; case _util.ENVIRONMENTS.SERVER: SDKInfoText.push('Running on a NodeJS server'); break; default: SDKInfoText.push('Could not determine execution environment.'); } _stateClient2.default.setEnvironment((0, _util.CurrentEnvironment)()); (0, _util.consolePrint)(SDKInfoText, { boxed: true }); muxy.watchAuth = function (extensionID) { _twitchExt2.default.extensionID = extensionID; _twitchExt2.default.testChannelID = muxy.testChannelID; _twitchExt2.default.testJWTRole = muxy.testJWTRole; _twitchExt2.default.onAuthorized(function (auth) { if (!auth) { muxy.loadReject(); return; } muxy.twitchClientID = auth.clientId; muxy.messenger.extensionID = auth.clientId; muxy.messenger.channelID = auth.channelId; muxy.client.updateAuth(auth.token); var resolvePromise = function resolvePromise(user) { muxy.user = user; var keys = (0, _keys2.default)(muxy.SDKClients); for (var i = 0; i < keys.length; i += 1) { muxy.SDKClients[keys[i]].user = muxy.user; } if (muxy.analytics) { muxy.analytics.user = muxy.user; } muxy.loadResolve(); }; var onFirstAuth = function onFirstAuth() { muxy.client.getUserInfo(extensionID).then(function (userinfo) { var user = new _user2.default(auth); user.ip = userinfo.ip_address; user.registeredWithMuxy = userinfo.registered || false; user.visualizationID = userinfo.visualization_id || ''; updateUserContextSettings(); resolvePromise(user); }); }; if (muxy.user) { muxy.user.updateAuth(auth); resolvePromise(muxy.user); } else { onFirstAuth(); } }); function updateUserContextSettings() { if (!muxy.user || !muxy.context) { return; } if (muxy.context.isFullScreen) { muxy.user.videoMode = 'fullscreen'; } else if (muxy.context.isTheatreMode) { muxy.user.videoMode = 'theatre'; } else { muxy.user.videoMode = 'default'; } muxy.user.game = muxy.context.game; muxy.user.bitrate = Math.round(muxy.context.bitrate || 0); muxy.user.latency = muxy.context.hlsLatencyBroadcaster; muxy.user.buffer = muxy.context.bufferSize; if (muxy.context.bufferSize < 1 && muxy.analytics) { muxy.analytics.sendEvent('video', 'buffer', 1); } } _twitchExt2.default.onContext(function (context) { muxy.context = context; if (muxy.user) { updateUserContextSettings(); } }); }; muxy.setup = function (options) { muxy.twitchClientID = options.extensionID; muxy.cachedTwitchClient = new _twitchClient2.default(muxy.twitchClientID); if (options.uaString) { muxy.analytics = new _analytics2.default(options.uaString, muxy.loadPromise); } muxy.setupCalled = true; }; muxy.SDK = function NewSDK(id) { if (!muxy.setupCalled) { throw new Error('muxy.setup() must be called before creating a new SDK instance'); } var identifier = id || muxy.twitchClientID; if (!identifier) { return null; } if (!muxy.watchingAuth) { muxy.watchingAuth = true; muxy.watchAuth(identifier); } if (!muxy.SDKClients[identifier]) { muxy.SDKClients[identifier] = new _sdk2.default(identifier, muxy.client, muxy.user, muxy.messenger, muxy.analytics, muxy.loadPromise); } return muxy.SDKClients[identifier]; }; muxy.TwitchClient = function NewTwitchClient() { if (!muxy.setupCalled) { throw new Error('muxy.setup() must be called before creating a new TwitchClient instance'); } return muxy.cachedTwitchClient; }; return muxy; } /***/ }), /* 58 */ /***/ (function(module, exports, __webpack_require__) { __webpack_require__(59); module.exports = __webpack_require__(2).Object.keys; /***/ }), /* 59 */ /***/ (function(module, exports, __webpack_require__) { // 19.1.2.14 Object.keys(O) var toObject = __webpack_require__(38) , $keys = __webpack_require__(11); __webpack_require__(63)('keys', function(){ return function keys(it){ return $keys(toObject(it)); }; }); /***/ }), /* 60 */ /***/ (function(module, exports, __webpack_require__) { // fallback for non-array-like ES3 and non-enumerable old V8 strings var cof = __webpack_require__(12); module.exports = Object('z').propertyIsEnumerable(0) ? Object : function(it){ return cof(it) == 'String' ? it.split('') : Object(it); }; /***/ }), /* 61 */ /***/ (function(module, exports, __webpack_require__) { // false -> Array#indexOf // true -> Array#includes var toIObject = __webpack_require__(6) , toLength = __webpack_require__(40) , toIndex = __webpack_require__(62); module.exports = function(IS_INCLUDES){ return function($this, el, fromIndex){ var O = toIObject($this) , length = toLength(O.length) , index = toIndex(fromIndex, length) , value; // Array#includes uses SameValueZero equality algorithm if(IS_INCLUDES && el != el)while(length > index){ value = O[index++]; if(value != value)return true; // Array#toIndex ignores holes, Array#includes - not } else for(;length > index; index++)if(IS_INCLUDES || index in O){ if(O[index] === el)return IS_INCLUDES || index || 0; } return !IS_INCLUDES && -1; }; }; /***/ }), /* 62 */ /***/ (function(module, exports, __webpack_require__) { var toInteger = __webpack_require__(26) , max = Math.max , min = Math.min; module.exports = function(index, length){ index = toInteger(index); return index < 0 ? max(index + length, 0) : min(index, length); }; /***/ }), /* 63 */ /***/ (function(module, exports, __webpack_require__) { // most Object methods by ES6 should accept primitives var $export = __webpack_require__(13) , core = __webpack_require__(2) , fails = __webpack_require__(15); module.exports = function(KEY, exec){ var fn = (core.Object || {})[KEY] || Object[KEY] , exp = {}; exp[KEY] = exec(fn); $export($export.S + $export.F * fails(function(){ fn(1); }), 'Object', exp); }; /***/ }), /* 64 */ /***/ (function(module, exports, __webpack_require__) { __webpack_require__(42); __webpack_require__(43); __webpack_require__(48); __webpack_require__(72); module.exports = __webpack_require__(2).Promise; /***/ }), /* 65 */ /***/ (function(module, exports, __webpack_require__) { var toInteger = __webpack_require__(26) , defined = __webpack_require__(25); // true -> String#at // false -> String#codePointAt module.exports = function(TO_STRING){ return function(that, pos){ var s = String(defined(that)) , i = toInteger(pos) , l = s.length , a, b; if(i < 0 || i >= l)return TO_STRING ? '' : undefined; a = s.charCodeAt(i); return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff ? TO_STRING ? s.charAt(i) : a : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000; }; }; /***/ }), /* 66 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; var create = __webpack_require__(46) , descriptor = __webpack_require__(21) , setToStringTag = __webpack_require__(23) , IteratorPrototype = {}; // 25.1.2.1.1 %IteratorPrototype%[@@iterator]() __webpack_require__(7)(IteratorPrototype, __webpack_require__(0)('iterator'), function(){ return this; }); module.exports = function(Constructor, NAME, next){ Constructor.prototype = create(IteratorPrototype, {next: descriptor(1, next)}); setToStringTag(Constructor, NAME + ' Iterator'); }; /***/ }), /* 67 */ /***/ (function(module, exports, __webpack_require__) { var dP = __webpack_require__(3) , anObject = __webpack_require__(8) , getKeys = __webpack_require__(11); module.exports = __webpack_require__(4) ? Object.defineProperties : function defineProperties(O, Properties){ anObject(O); var keys = getKeys(Properties) , length = keys.length , i = 0 , P; while(length > i)dP.f(O, P = keys[i++], Properties[P]); return O; }; /***/ }), /* 68 */ /***/ (function(module, exports, __webpack_require__) { // 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O) var has = __webpack_require__(5) , toObject = __webpack_require__(38) , IE_PROTO = __webpack_require__(27)('IE_PROTO') , ObjectProto = Object.prototype; module.exports = Object.getPrototypeOf || function(O){ O = toObject(O); if(has(O, IE_PROTO))return O[IE_PROTO]; if(typeof O.constructor == 'function' && O instanceof O.constructor){ return O.constructor.prototype; } return O instanceof Object ? ObjectProto : null; }; /***/ }), /* 69 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; var addToUnscopables = __webpack_require__(70) , step = __webpack_require__(71) , Iterators = __webpack_require__(17) , toIObject = __webpack_require__(6); // 22.1.3.4 Array.prototype.entries() // 22.1.3.13 Array.prototype.keys() // 22.1.3.29 Array.prototype.values() // 22.1.3.30 Array.prototype[@@iterator]() module.exports = __webpack_require__(44)(Array, 'Array', function(iterated, kind){ this._t = toIObject(iterated); // target this._i = 0; // next index this._k = kind; // kind // 22.1.5.2.1 %ArrayIteratorPrototype%.next() }, function(){ var O = this._t , kind = this._k , index = this._i++; if(!O || index >= O.length){ this._t = undefined; return step(1); } if(kind == 'keys' )return step(0, index); if(kind == 'values')return step(0, O[index]); return step(0, [index, O[index]]); }, 'values'); // argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7) Iterators.Arguments = Iterators.Array; addToUnscopables('keys'); addToUnscopables('values'); addToUnscopables('entries'); /***/ }), /* 70 */ /***/ (function(module, exports) { module.exports = function(){ /* empty */ }; /***/ }), /* 71 */ /***/ (function(module, exports) { module.exports = function(done, value){ return {value: value, done: !!done}; }; /***/ }), /* 72 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; var LIBRARY = __webpack_require__(22) , global = __webpack_require__(1) , ctx = __webpack_require__(20) , classof = __webpack_require__(49) , $export = __webpack_require__(13) , isObject = __webpack_require__(14) , aFunction = __webpack_require__(30) , anInstance = __webpack_require__(73) , forOf = __webpack_require__(74) , speciesConstructor = __webpack_require__(78) , task = __webpack_require__(50).set , microtask = __webpack_require__(80)() , PROMISE = 'Promise' , TypeError = global.TypeError , process = global.process , $Promise = global[PROMISE] , process = global.process , isNode = classof(process) == 'process' , empty = function(){ /* empty */ } , Internal, GenericPromiseCapability, Wrapper; var USE_NATIVE = !!function(){ try { // correct subclassing with @@species support var promise = $Promise.resolve(1) , FakePromise = (promise.constructor = {})[__webpack_require__(0)('species')] = function(exec){ exec(empty, empty); }; // unhandled rejections tracking support, NodeJS Promise without it fails @@species test return (isNode || typeof PromiseRejectionEvent == 'function') && promise.then(empty) instanceof FakePromise; } catch(e){ /* empty */ } }(); // helpers var sameConstructor = function(a, b){ // with library wrapper special case return a === b || a === $Promise && b === Wrapper; }; var isThenable = function(it){ var then; return isObject(it) && typeof (then = it.then) == 'function' ? then : false; }; var newPromiseCapability = function(C){ return sameConstructor($Promise, C) ? new PromiseCapability(C) : new GenericPromiseCapability(C); }; var PromiseCapability = GenericPromiseCapability = function(C){ var resolve, reject; this.promise = new C(function($$resolve, $$reject){ if(resolve !== undefined || reject !== undefined)throw TypeError('Bad Promise constructor'); resolve = $$resolve; reject = $$reject; }); this.resolve = aFunction(resolve); this.reject = aFunction(reject); }; var perform = function(exec){ try { exec(); } catch(e){ return {error: e}; } }; var notify = function(promise, isReject){ if(promise._n)return; promise._n = true; var chain = promise._c; microtask(function(){ var value = promise._v , ok = promise._s == 1 , i = 0; var run = function(reaction){ var handler = ok ? reaction.ok : reaction.fail , resolve = reaction.resolve , reject = reaction.reject , domain = reaction.domain , result, then; try { if(handler){ if(!ok){ if(promise._h == 2)onHandleUnhandled(promise); promise._h = 1; } if(handler === true)result = value; else { if(domain)domain.enter(); result = handler(value); if(domain)domain.exit(); } if(result === reaction.promise){ reject(TypeError('Promise-chain cycle')); } else if(then = isThenable(result)){ then.call(result, resolve, reject); } else resolve(result); } else reject(value); } catch(e){ reject(e); } }; while(chain.length > i)run(chain[i++]); // variable length - can't use forEach promise._c = []; promise._n = false; if(isReject && !promise._h)onUnhandled(promise); }); }; var onUnhandled = function(promise){ task.call(global, function(){ var value = promise._v , abrupt, handler, console; if(isUnhandled(promise)){ abrupt = perform(function(){ if(isNode){ process.emit('unhandledRejection', value, promise); } else if(handler = global.onunhandledrejection){ handler({promise: promise, reason: value}); } else if((console = global.console) && console.error){ console.error('Unhandled promise rejection', value); } }); // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should promise._h = isNode || isUnhandled(promise) ? 2 : 1; } promise._a = undefined; if(abrupt)throw abrupt.error; }); }; var isUnhandled = function(promise){ if(promise._h == 1)return false; var chain = promise._a || promise._c , i = 0 , reaction; while(chain.length > i){ reaction = chain[i++]; if(reaction.fail || !isUnhandled(reaction.promise))return false; } return true; }; var onHandleUnhandled = function(promise){ task.call(global, function(){ var handler; if(isNode){ process.emit('rejectionHandled', promise); } else if(handler = global.onrejectionhandled){ handler({promise: promise, reason: promise._v}); } }); }; var $reject = function(value){ var promise = this; if(promise._d)return; promise._d = true; promise = promise._w || promise; // unwrap promise._v = value; promise._s = 2; if(!promise._a)promise._a = promise._c.slice(); notify(promise, true); }; var $resolve = function(value){ var promise = this , then; if(promise._d)return; promise._d = true; promise = promise._w || promise; // unwrap try { if(promise === value)throw TypeError("Promise can't be resolved itself"); if(then = isThenable(value)){ microtask(function(){ var wrapper = {_w: promise, _d: false}; // wrap try { then.call(value, ctx($resolve, wrapper, 1), ctx($reject, wrapper, 1)); } catch(e){ $reject.call(wrapper, e); } }); } else { promise._v = value; promise._s = 1; notify(promise, false); } } catch(e){ $reject.call({_w: promise, _d: false}, e); // wrap } }; // constructor polyfill if(!USE_NATIVE){ // 25.4.3.1 Promise(executor) $Promise = function Promise(executor){ anInstance(this, $Promise, PROMISE, '_h'); aFunction(executor); Internal.call(this); try { executor(ctx($resolve, this, 1), ctx($reject, this, 1)); } catch(err){ $reject.call(this, err); } }; Internal = function Promise(executor){ this._c = []; // <- awaiting reactions this._a = undefined; // <- checked in isUnhandled reactions this._s = 0; // <- state this._d = false; // <- done this._v = undefined; // <- value this._h = 0; // <- rejection state, 0 - default, 1 - handled, 2 - unhandled this._n = false; // <- notify }; Internal.prototype = __webpack_require__(81)($Promise.prototype, { // 25.4.5.3 Promise.prototype.then(onFulfilled, onRejected) then: function then(onFulfilled, onRejected){ var reaction = newPromiseCapability(speciesConstructor(this, $Promise)); reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true; reaction.fail = typeof onRejected == 'function' && onRejected; reaction.domain = isNode ? process.domain : undefined; this._c.push(reaction); if(this._a)this._a.push(reaction); if(this._s)notify(this, false); return reaction.promise; }, // 25.4.5.1 Promise.prototype.catch(onRejected) 'catch': function(onRejected){ return this.then(undefined, onRejected); } }); PromiseCapability = function(){ var promise = new Internal; this.promise = promise; this.resolve = ctx($resolve, promise, 1); this.reject = ctx($reject, promise, 1); }; } $export($export.G + $export.W + $export.F * !USE_NATIVE, {Promise: $Promise}); __webpack_require__(23)($Promise, PROMISE); __webpack_require__(82)(PROMISE); Wrapper = __webpack_require__(2)[PROMISE]; // statics $export($export.S + $export.F * !USE_NATIVE, PROMISE, { // 25.4.4.5 Promise.reject(r) reject: function reject(r){ var capability = newPromiseCapability(this) , $$reject = capability.reject; $$reject(r); return capability.promise; } }); $export($export.S + $export.F * (LIBRARY || !USE_NATIVE), PROMISE, { // 25.4.4.6 Promise.resolve(x) resolve: function resolve(x){ // instanceof instead of internal slot check because we should fix it without replacement native Promise core if(x instanceof $Promise && sameConstructor(x.constructor, this))return x; var capability = newPromiseCapability(this) , $$resolve = capability.resolve; $$resolve(x); return capability.promise; } }); $export($export.S + $export.F * !(USE_NATIVE && __webpack_require__(83)(function(iter){ $Promise.all(iter)['catch'](empty); })), PROMISE, { // 25.4.4.1 Promise.all(iterable) all: function all(iterable){ var C = this , capability = newPromiseCapability(C) , resolve = capability.resolve , reject = capability.reject; var abrupt = perform(function(){ var values = [] , index = 0 , remaining = 1; forOf(iterable, false, function(promise){ var $index = index++ , alreadyCalled = false; values.push(undefined); remaining++; C.resolve(promise).then(function(value){ if(alreadyCalled)return; alreadyCalled = true; values[$index] = value; --remaining || resolve(values); }, reject); }); --remaining || resolve(values); }); if(abrupt)reject(abrupt.error); return capability.promise; }, // 25.4.4.4 Promise.race(iterable) race: function race(iterable){ var C = this , capability = newPromiseCapability(C) , reject = capability.reject; var abrupt = perform(function(){ forOf(iterable, false, function(promise){ C.resolve(promise).then(capability.resolve, reject); }); }); if(abrupt)reject(abrupt.error); return capability.promise; } }); /***/ }), /* 73 */ /***/ (function(module, exports) { module.exports = function(it, Constructor, name, forbiddenField){ if(!(it instanceof Constructor) || (forbiddenField !== undefined && forbiddenField in it)){ throw TypeError(name + ': incorrect invocation!'); } return it; }; /***/ }), /* 74 */ /***/ (function(module, exports, __webpack_require__) { var ctx = __webpack_require__(20) , call = __webpack_require__(75) , isArrayIter = __webpack_require__(76) , anObject = __webpack_require__(8) , toLength = __webpack_require__(40) , getIterFn = __webpack_require__(77) , BREAK = {} , RETURN = {}; var exports = module.exports = function(iterable, entries, fn, that, ITERATOR){ var iterFn = ITERATOR ? function(){ return iterable; } : getIterFn(iterable) , f = ctx(fn, that, entries ? 2 : 1) , index = 0 , length, step, iterator, result; if(typeof iterFn != 'function')throw TypeError(iterable + ' is not iterable!'); // fast case for arrays with default iterator if(isArrayIter(iterFn))for(length = toLength(iterable.length); length > index; index++){ result = entries ? f(anObject(step = iterable[index])[0], step[1]) : f(iterable[index]); if(result === BREAK || result === RETURN)return result; } else for(iterator = iterFn.call(iterable); !(step = iterator.next()).done; ){ result = call(iterator, f, step.value, entries); if(result === BREAK || result === RETURN)return result; } }; exports.BREAK = BREAK; exports.RETURN = RETURN; /***/ }), /* 75 */ /***/ (function(module, exports, __webpack_require__) { // call something on iterator step with safe closing on error var anObject = __webpack_require__(8); module.exports = function(iterator, fn, value, entries){ try { return entries ? fn(anObject(value)[0], value[1]) : fn(value); // 7.4.6 IteratorClose(iterator, completion) } catch(e){ var ret = iterator['return']; if(ret !== undefined)anObject(ret.call(iterator)); throw e; } }; /***/ }), /* 76 */ /***/ (function(module, exports, __webpack_require__) { // check on default Array iterator var Iterators = __webpack_require__(17) , ITERATOR = __webpack_require__(0)('iterator') , ArrayProto = Array.prototype; module.exports = function(it){ return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it); }; /***/ }), /* 77 */ /***/ (function(module, exports, __webpack_require__) { var classof = __webpack_require__(49) , ITERATOR = __webpack_require__(0)('iterator') , Iterators = __webpack_require__(17); module.exports = __webpack_require__(2).getIteratorMethod = function(it){ if(it != undefined)return it[ITERATOR] || it['@@iterator'] || Iterators[classof(it)]; }; /***/ }), /* 78 */ /***/ (function(module, exports, __webpack_require__) { // 7.3.20 SpeciesConstructor(O, defaultConstructor) var anObject = __webpack_require__(8) , aFunction = __webpack_require__(30) , SPECIES = __webpack_require__(0)('species'); module.exports = function(O, D){ var C = anObject(O).constructor, S; return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? D : aFunction(S); }; /***/ }), /* 79 */ /***/ (function(module, exports) { // fast apply, http://jsperf.lnkit.com/fast-apply/5 module.exports = function(fn, args, that){ var un = that === undefined; switch(args.length){ case 0: return un ? fn() : fn.call(that); case 1: return un ? fn(args[0]) : fn.call(that, args[0]); case 2: return un ? fn(args[0], args[1]) : fn.call(that, args[0], args[1]); case 3: return un ? fn(args[0], args[1], args[2]) : fn.call(that, args[0], args[1], args[2]); case 4: return un ? fn(args[0], args[1], args[2], args[3]) : fn.call(that, args[0], args[1], args[2], args[3]); } return fn.apply(that, args); }; /***/ }), /* 80 */ /***/ (function(module, exports, __webpack_require__) { var global = __webpack_require__(1) , macrotask = __webpack_require__(50).set , Observer = global.MutationObserver || global.WebKitMutationObserver , process = global.process , Promise = global.Promise , isNode = __webpack_require__(12)(process) == 'process'; module.exports = function(){ var head, last, notify; var flush = function(){ var parent, fn; if(isNode && (parent = process.domain))parent.exit(); while(head){ fn = head.fn; head = head.next; try { fn(); } catch(e){ if(head)notify(); else last = undefined; throw e; } } last = undefined; if(parent)parent.enter(); }; // Node.js if(isNode){ notify = function(){ process.nextTick(flush); }; // browsers with MutationObserver } else if(Observer){ var toggle = true , node = document.createTextNode(''); new Observer(flush).observe(node, {characterData: true}); // eslint-disable-line no-new notify = function(){ node.data = toggle = !toggle; }; // environments with maybe non-completely correct, but existent Promise } else if(Promise && Promise.resolve){ var promise = Promise.resolve(); notify = function(){ promise.then(flush); }; // for other environments - macrotask based on: // - setImmediate // - MessageChannel // - window.postMessag // - onreadystatechange // - setTimeout } else { notify = function(){ // strange IE + webpack dev server bug - use .call(global) macrotask.call(global, flush); }; } return function(fn){ var task = {fn: fn, next: undefined}; if(last)last.next = task; if(!head){ head = task; notify(); } last = task; }; }; /***/ }), /* 81 */ /***/ (function(module, exports, __webpack_require__) { var hide = __webpack_require__(7); module.exports = function(target, src, safe){ for(var key in src){ if(safe && target[key])target[key] = src[key]; else hide(target, key, src[key]); } return target; }; /***/ }), /* 82 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; var global = __webpack_require__(1) , core = __webpack_require__(2) , dP = __webpack_require__(3) , DESCRIPTORS = __webpack_require__(4) , SPECIES = __webpack_require__(0)('species'); module.exports = function(KEY){ var C = typeof core[KEY] == 'function' ? core[KEY] : global[KEY]; if(DESCRIPTORS && C && !C[SPECIES])dP.f(C, SPECIES, { configurable: true, get: function(){ return this; } }); }; /***/ }), /* 83 */ /***/ (function(module, exports, __webpack_require__) { var ITERATOR = __webpack_require__(0)('iterator') , SAFE_CLOSING = false; try { var riter = [7][ITERATOR](); riter['return'] = function(){ SAFE_CLOSING = true; }; Array.from(riter, function(){ throw 2; }); } catch(e){ /* empty */ } module.exports = function(exec, skipClosing){ if(!skipClosing && !SAFE_CLOSING)return false; var safe = false; try { var arr = [7] , iter = arr[ITERATOR](); iter.next = function(){ return {done: safe = true}; }; arr[ITERATOR] = function(){ return iter; }; exec(arr); } catch(e){ /* empty */ } return safe; }; /***/ }), /* 84 */ /***/ (function(module, exports, __webpack_require__) { module.exports = { "default": __webpack_require__(85), __esModule: true }; /***/ }), /* 85 */ /***/ (function(module, exports, __webpack_require__) { __webpack_require__(43); __webpack_require__(48); module.exports = __webpack_require__(33).f('iterator'); /***/ }), /* 86 */ /***/ (function(module, exports, __webpack_require__) { module.exports = { "default": __webpack_require__(87), __esModule: true }; /***/ }), /* 87 */ /***/ (function(module, exports, __webpack_require__) { __webpack_require__(88); __webpack_require__(42); __webpack_require__(95); __webpack_require__(96); module.exports = __webpack_require__(2).Symbol; /***/ }), /* 88 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; // ECMAScript 6 symbols shim var global = __webpack_require__(1) , has = __webpack_require__(5) , DESCRIPTORS = __webpack_require__(4) , $export = __webpack_require__(13) , redefine = __webpack_require__(45) , META = __webpack_require__(89).KEY , $fails = __webpack_require__(15) , shared = __webpack_require__(28) , setToStringTag = __webpack_require__(23) , uid = __webpack_require__(19) , wks = __webpack_require__(0) , wksExt = __webpack_require__(33) , wksDefine = __webpack_require__(34) , keyOf = __webpack_require__(90) , enumKeys = __webpack_require__(91) , isArray = __webpack_require__(92) , anObject = __webpack_require__(8) , toIObject = __webpack_require__(6) , toPrimitive = __webpack_require__(32) , createDesc = __webpack_require__(21) , _create = __webpack_require__(46) , gOPNExt = __webpack_require__(93) , $GOPD = __webpack_require__(94) , $DP = __webpack_require__(3) , $keys = __webpack_require__(11) , gOPD = $GOPD.f , dP = $DP.f , gOPN = gOPNExt.f , $Symbol = global.Symbol , $JSON = global.JSON , _stringify = $JSON && $JSON.stringify , PROTOTYPE = 'prototype' , HIDDEN = wks('_hidden') , TO_PRIMITIVE = wks('toPrimitive') , isEnum = {}.propertyIsEnumerable , SymbolRegistry = shared('symbol-registry') , AllSymbols = shared('symbols') , OPSymbols = shared('op-symbols') , ObjectProto = Object[PROTOTYPE] , USE_NATIVE = typeof $Symbol == 'function' , QObject = global.QObject; // Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173 var setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild; // fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687 var setSymbolDesc = DESCRIPTORS && $fails(function(){ return _create(dP({}, 'a', { get: function(){ return dP(this, 'a', {value: 7}).a; } })).a != 7; }) ? function(it, key, D){ var protoDesc = gOPD(ObjectProto, key); if(protoDesc)delete ObjectProto[key]; dP(it, key, D); if(protoDesc && it !== ObjectProto)dP(ObjectProto, key, protoDesc); } : dP; var wrap = function(tag){ var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]); sym._k = tag; return sym; }; var isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function(it){ return typeof it == 'symbol'; } : function(it){ return it instanceof $Symbol; }; var $defineProperty = function defineProperty(it, key, D){ if(it === ObjectProto)$defineProperty(OPSymbols, key, D); anObject(it); key = toPrimitive(key, true); anObject(D); if(has(AllSymbols, key)){ if(!D.enumerable){ if(!has(it, HIDDEN))dP(it, HIDDEN, createDesc(1, {})); it[HIDDEN][key] = true; } else { if(has(it, HIDDEN) && it[HIDDEN][key])it[HIDDEN][key] = false; D = _create(D, {enumerable: createDesc(0, false)}); } return setSymbolDesc(it, key, D); } return dP(it, key, D); }; var $defineProperties = function defineProperties(it, P){ anObject(it); var keys = enumKeys(P = toIObject(P)) , i = 0 , l = keys.length , key; while(l > i)$defineProperty(it, key = keys[i++], P[key]); return it; }; var $create = function create(it, P){ return P === undefined ? _create(it) : $defineProperties(_create(it), P); }; var $propertyIsEnumerable = function propertyIsEnumerable(key){ var E = isEnum.call(this, key = toPrimitive(key, true)); if(this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key))return false; return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true; }; var $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key){ it = toIObject(it); key = toPrimitive(key, true); if(it === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key))return; var D = gOPD(it, key); if(D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key]))D.enumerable = true; return D; }; var $getOwnPropertyNames = function getOwnPropertyNames(it){ var names = gOPN(toIObject(it)) , result = [] , i = 0 , key; while(names.length > i){ if(!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META)result.push(key); } return result; }; var $getOwnPropertySymbols = function getOwnPropertySymbols(it){ var IS_OP = it === ObjectProto , names = gOPN(IS_OP ? OPSymbols : toIObject(it)) , result = [] , i = 0 , key; while(names.length > i){ if(has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : true))result.push(AllSymbols[key]); } return result; }; // 19.4.1.1 Symbol([description]) if(!USE_NATIVE){ $Symbol = function Symbol(){ if(this instanceof $Symbol)throw TypeError('Symbol is not a constructor!'); var tag = uid(arguments.length > 0 ? arguments[0] : undefined); var $set = function(value){ if(this === ObjectProto)$set.call(OPSymbols, value); if(has(this, HIDDEN) && has(this[HIDDEN], tag))this[HIDDEN][tag] = false; setSymbolDesc(this, tag, createDesc(1, value)); }; if(DESCRIPTORS && setter)setSymbolDesc(ObjectProto, tag, {configurable: true, set: $set}); return wrap(tag); }; redefine($Symbol[PROTOTYPE], 'toString', function toString(){ return this._k; }); $GOPD.f = $getOwnPropertyDescriptor; $DP.f = $defineProperty; __webpack_require__(53).f = gOPNExt.f = $getOwnPropertyNames; __webpack_require__(35).f = $propertyIsEnumerable; __webpack_require__(52).f = $getOwnPropertySymbols; if(DESCRIPTORS && !__webpack_require__(22)){ redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true); } wksExt.f = function(name){ return wrap(wks(name)); } } $export($export.G + $export.W + $export.F * !USE_NATIVE, {Symbol: $Symbol}); for(var symbols = ( // 19.4.2.2, 19.4.2.3, 19.4.2.4, 19.4.2.6, 19.4.2.8, 19.4.2.9, 19.4.2.10, 19.4.2.11, 19.4.2.12, 19.4.2.13, 19.4.2.14 'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables' ).split(','), i = 0; symbols.length > i; )wks(symbols[i++]); for(var symbols = $keys(wks.store), i = 0; symbols.length > i; )wksDefine(symbols[i++]); $export($export.S + $export.F * !USE_NATIVE, 'Symbol', { // 19.4.2.1 Symbol.for(key) 'for': function(key){ return has(SymbolRegistry, key += '') ? SymbolRegistry[key] : SymbolRegistry[key] = $Symbol(key); }, // 19.4.2.5 Symbol.keyFor(sym) keyFor: function keyFor(key){ if(isSymbol(key))return keyOf(SymbolRegistry, key); throw TypeError(key + ' is not a symbol!'); }, useSetter: function(){ setter = true; }, useSimple: function(){ setter = false; } }); $export($export.S + $export.F * !USE_NATIVE, 'Object', { // 19.1.2.2 Object.create(O [, Properties]) create: $create, // 19.1.2.4 Object.defineProperty(O, P, Attributes) defineProperty: $defineProperty, // 19.1.2.3 Object.defineProperties(O, Properties) defineProperties: $defineProperties, // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P) getOwnPropertyDescriptor: $getOwnPropertyDescriptor, // 19.1.2.7 Object.getOwnPropertyNames(O) getOwnPropertyNames: $getOwnPropertyNames, // 19.1.2.8 Object.getOwnPropertySymbols(O) getOwnPropertySymbols: $getOwnPropertySymbols }); // 24.3.2 JSON.stringify(value [, replacer [, space]]) $JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function(){ var S = $Symbol(); // MS Edge converts symbol values to JSON as {} // WebKit converts symbol values to JSON as null // V8 throws on boxed symbols return _stringify([S]) != '[null]' || _stringify({a: S}) != '{}' || _stringify(Object(S)) != '{}'; })), 'JSON', { stringify: function stringify(it){ if(it === undefined || isSymbol(it))return; // IE8 returns string on undefined var args = [it] , i = 1 , replacer, $replacer; while(arguments.length > i)args.push(arguments[i++]); replacer = args[1]; if(typeof replacer == 'function')$replacer = replacer; if($replacer || !isArray(replacer))replacer = function(key, value){ if($replacer)value = $replacer.call(this, key, value); if(!isSymbol(value))return value; }; args[1] = replacer; return _stringify.apply($JSON, args); } }); // 19.4.3.4 Symbol.prototype[@@toPrimitive](hint) $Symbol[PROTOTYPE][TO_PRIMITIVE] || __webpack_require__(7)($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf); // 19.4.3.5 Symbol.prototype[@@toStringTag] setToStringTag($Symbol, 'Symbol'); // 20.2.1.9 Math[@@toStringTag] setToStringTag(Math, 'Math', true); // 24.3.3 JSON[@@toStringTag] setToStringTag(global.JSON, 'JSON', true); /***/ }), /* 89 */ /***/ (function(module, exports, __webpack_require__) { var META = __webpack_require__(19)('meta') , isObject = __webpack_require__(14) , has = __webpack_require__(5) , setDesc = __webpack_require__(3).f , id = 0; var isExtensible = Object.isExtensible || function(){ return true; }; var FREEZE = !__webpack_require__(15)(function(){ return isExtensible(Object.preventExtensions({})); }); var setMeta = function(it){ setDesc(it, META, {value: { i: 'O' + ++id, // object ID w: {} // weak collections IDs }}); }; var fastKey = function(it, create){ // return primitive with prefix if(!isObject(it))return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it; if(!has(it, META)){ // can't set metadata to uncaught frozen object if(!isExtensible(it))return 'F'; // not necessary to add metadata if(!create)return 'E'; // add missing metadata setMeta(it); // return object ID } return it[META].i; }; var getWeak = function(it, create){ if(!has(it, META)){ // can't set metadata to uncaught frozen object if(!isExtensible(it))return true; // not necessary to add metadata if(!create)return false; // add missing metadata setMeta(it); // return hash weak collections IDs } return it[META].w; }; // add metadata on freeze-family methods calling var onFreeze = function(it){ if(FREEZE && meta.NEED && isExtensible(it) && !has(it, META))setMeta(it); return it; }; var meta = module.exports = { KEY: META, NEED: false, fastKey: fastKey, getWeak: getWeak, onFreeze: onFreeze }; /***/ }), /* 90 */ /***/ (function(module, exports, __webpack_require__) { var getKeys = __webpack_require__(11) , toIObject = __webpack_require__(6); module.exports = function(object, el){ var O = toIObject(object) , keys = getKeys(O) , length = keys.length , index = 0 , key; while(length > index)if(O[key = keys[index++]] === el)return key; }; /***/ }), /* 91 */ /***/ (function(module, exports, __webpack_require__) { // all enumerable object keys, includes symbols var getKeys = __webpack_require__(11) , gOPS = __webpack_require__(52) , pIE = __webpack_require__(35); module.exports = function(it){ var result = getKeys(it) , getSymbols = gOPS.f; if(getSymbols){ var symbols = getSymbols(it) , isEnum = pIE.f , i = 0 , key; while(symbols.length > i)if(isEnum.call(it, key = symbols[i++]))result.push(key); } return result; }; /***/ }), /* 92 */ /***/ (function(module, exports, __webpack_require__) { // 7.2.2 IsArray(argument) var cof = __webpack_require__(12); module.exports = Array.isArray || function isArray(arg){ return cof(arg) == 'Array'; }; /***/ }), /* 93 */ /***/ (function(module, exports, __webpack_require__) { // fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window var toIObject = __webpack_require__(6) , gOPN = __webpack_require__(53).f , toString = {}.toString; var windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames ? Object.getOwnPropertyNames(window) : []; var getWindowNames = function(it){ try { return gOPN(it); } catch(e){ return windowNames.slice(); } }; module.exports.f = function getOwnPropertyNames(it){ return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it)); }; /***/ }), /* 94 */ /***/ (function(module, exports, __webpack_require__) { var pIE = __webpack_require__(35) , createDesc = __webpack_require__(21) , toIObject = __webpack_require__(6) , toPrimitive = __webpack_require__(32) , has = __webpack_require__(5) , IE8_DOM_DEFINE = __webpack_require__(41) , gOPD = Object.getOwnPropertyDescriptor; exports.f = __webpack_require__(4) ? gOPD : function getOwnPropertyDescriptor(O, P){ O = toIObject(O); P = toPrimitive(P, true); if(IE8_DOM_DEFINE)try { return gOPD(O, P); } catch(e){ /* empty */ } if(has(O, P))return createDesc(!pIE.f.call(O, P), O[P]); }; /***/ }), /* 95 */ /***/ (function(module, exports, __webpack_require__) { __webpack_require__(34)('asyncIterator'); /***/ }), /* 96 */ /***/ (function(module, exports, __webpack_require__) { __webpack_require__(34)('observable'); /***/ }), /* 97 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var _classCallCheck2 = __webpack_require__(9); var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); var _createClass2 = __webpack_require__(10); var _createClass3 = _interopRequireDefault(_createClass2); var _gumshoe = __webpack_require__(101); var _gumshoe2 = _interopRequireDefault(_gumshoe); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var ANALYTICS_ENDPOINT = 'https://info.muxy.io'; var Analytics = function () { function Analytics(uaString, loadPromise) { var _this = this; (0, _classCallCheck3.default)(this, Analytics); this.ready = false; this.uaString = uaString; this.loadPromise = loadPromise; this.user = null; this.gumshoe = (0, _gumshoe2.default)(); this.gumshoe.transport({ name: 'muxy-extension-sdk', send: function send(data, fn) { var d = data; delete d.pageData; _this.gumshoe.reqwest({ data: d, url: ANALYTICS_ENDPOINT, method: 'POST', contentType: 'application/x-www-form-urlencoded', crossOrigin: true }, function () { if (fn) { fn(null); } }); }, map: this.mapData.bind(this) }); this.gumshoe({ transport: 'muxy-extension-sdk' }); this.loadPromise.then(function () { _this.ready = true; }); } (0, _createClass3.default)(Analytics, [{ key: 'mapData', value: function mapData(data) { var appName = 'Muxy'; var ip = ''; var channelID = null; var opaqueID = null; var userID = null; var role = null; var game = null; var videoMode = null; var latency = null; var bitrate = null; if (this.user) { ip = this.user.ip; channelID = this.user.channelID; opaqueID = this.user.twitchOpaqueID; userID = !opaqueID || opaqueID[0] !== 'U' ? null : opaqueID; role = this.user.role; game = this.user.game; videoMode = this.user.videoMode; latency = this.user.latency; bitrate = this.user.bitrate; } var pd = data.pageData; pd.ipAddress = ip; var result = { aid: appName, an: appName, cid: opaqueID || data.clientUuid || data.sessionUuid || '00000000-0000-0000-0000-000000000000', dh: pd.hostName, dl: pd.url, dp: pd.path, dr: pd.referer, dt: pd.title, je: pd.javaEnabled, sr: pd.screenResolution, t: 'event', tid: this.uaString, ua: pd.userAgent, uid: userID, uip: ip, ul: pd.language, v: 1, vp: pd.viewportHeight + 'x' + pd.viewportWidth, cd1: channelID, cd2: role, cd3: game, cd4: videoMode, cm2: latency, cm3: bitrate }; if (data.eventName === 'page.view') { result.t = 'pageview'; } else { result.ec = data.eventName; result.ea = data.eventData.name; result.el = data.eventData.label; result.ev = data.eventData.value; } return result; } }, { key: 'sendEvent', value: function sendEvent(category, name) { var value = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1; var label = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : ''; if (!this.ready) { throw new Error('muxy.Analytics used before ready'); } var data = { name: name, value: value, label: label }; this.gumshoe.send(category, data); } }, { key: 'pageView', value: function pageView() { if (!this.ready) { throw new Error('muxy.Analytics used before ready'); } this.gumshoe.send('page.view', {}); } }]); return Analytics; }(); exports.default = Analytics; /***/ }), /* 98 */ /***/ (function(module, exports, __webpack_require__) { module.exports = { "default": __webpack_require__(99), __esModule: true }; /***/ }), /* 99 */ /***/ (function(module, exports, __webpack_require__) { __webpack_require__(100); var $Object = __webpack_require__(2).Object; module.exports = function defineProperty(it, key, desc){ return $Object.defineProperty(it, key, desc); }; /***/ }), /* 100 */ /***/ (function(module, exports, __webpack_require__) { var $export = __webpack_require__(13); // 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes) $export($export.S + $export.F * !__webpack_require__(4), 'Object', {defineProperty: __webpack_require__(3).f}); /***/ }), /* 101 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var _stringify = __webpack_require__(36); var _stringify2 = _interopRequireDefault(_stringify); var _typeof2 = __webpack_require__(51); var _typeof3 = _interopRequireDefault(_typeof2); var _keys = __webpack_require__(37); var _keys2 = _interopRequireDefault(_keys); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } if (!String.prototype.trim) { (function () { var rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g; String.prototype.trim = function () { return this.replace(rtrim, ''); }; })(); } if (!Array.prototype.reduce) { Array.prototype.reduce = function (callback) { 'use strict'; if (this == null) { throw new TypeError('Array.prototype.reduce called on null or undefined'); } if (typeof callback !== 'function') { throw new TypeError(callback + ' is not a function'); } var t = Object(this), len = t.length >>> 0, k = 0, value; if (arguments.length == 2) { value = arguments[1]; } else { while (k < len && !k in t) { k++; } if (k >= len) { throw new TypeError('Reduce of empty array with no initial value'); } value = t[k++]; } for (; k < len; k++) { if (k in t) { value = callback(value, t[k], k, t); } } return value; }; } function perfnow() { var perf = window.performance || {}; perf.now = perf.now || perf.mozNow || perf.msNow || perf.oNow || perf.webkitNow || Date.now || function () { return new Date().getTime(); }; return perf; }; function gumshoeFactory() { 'use strict'; var context = {}, queryString, store, undefined; (function contextSetup() { (function (c) { 'use strict'; var queryString = {}; queryString.parse = function (str) { if (typeof str !== 'string') { return {}; } str = str.trim().replace(/^(\?|#)/, ''); if (!str) { return {}; } return str.trim().split('&').reduce(function (ret, param) { var parts = param.replace(/\+/g, ' ').split('='); var key = parts[0]; var val = parts[1]; key = decodeURIComponent(key); val = val === undefined ? null : decodeURIComponent(val); if (!ret.hasOwnProperty(key)) { ret[key] = val; } else if (Array.isArray(ret[key])) { ret[key].push(val); } else { ret[key] = [ret[key], val]; } return ret; }, {}); }; queryString.stringify = function (obj) { return obj ? (0, _keys2.default)(obj).map(function (key) { var val = obj[key]; if (Array.isArray(val)) { return val.map(function (val2) { return encodeURIComponent(key) + '=' + encodeURIComponent(val2); }).join('&'); } return encodeURIComponent(key) + '=' + encodeURIComponent(val); }).join('&') : ''; }; c.queryString = queryString; })(this); !function (name, context, definition) { context[name] = definition(); }('reqwest', this, function () { var win = window, doc = document, httpsRe = /^http/, protocolRe = /(^\w+):\/\//, twoHundo = /^(20\d|1223)$/, byTag = 'getElementsByTagName', readyState = 'readyState', contentType = 'Content-Type', requestedWith = 'X-Requested-With', head = doc[byTag]('head')[0], uniqid = 0, callbackPrefix = 'reqwest_' + +new Date(), lastValue, xmlHttpRequest = 'XMLHttpRequest', xDomainRequest = 'XDomainRequest', noop = function noop() {}, isArray = typeof Array.isArray == 'function' ? Array.isArray : function (a) { return a instanceof Array; }, defaultHeaders = { 'contentType': 'application/x-www-form-urlencoded', 'requestedWith': xmlHttpRequest, 'accept': { '*': 'text/javascript, text/html, application/xml, text/xml, */*', 'xml': 'application/xml, text/xml', 'html': 'text/html', 'text': 'text/plain', 'json': 'application/json, text/javascript', 'js': 'application/javascript, text/javascript' } }, xhr = function xhr(o) { if (o['crossOrigin'] === true) { var xhr = win[xmlHttpRequest] ? new XMLHttpRequest() : null; if (xhr && 'withCredentials' in xhr) { return xhr; } else if (win[xDomainRequest]) { return new XDomainRequest(); } else { throw new Error('Browser does not support cross-origin requests'); } } else if (win[xmlHttpRequest]) { return new XMLHttpRequest(); } else { return new ActiveXObject('Microsoft.XMLHTTP'); } }, globalSetupOptions = { dataFilter: function dataFilter(data) { return data; } }; function succeed(r) { var protocol = protocolRe.exec(r.url); protocol = protocol && protocol[1] || window.location.protocol; return httpsRe.test(protocol) ? twoHundo.test(r.request.status) : !!r.request.responseText; } function handleReadyState(r, success, error) { return function () { if (r._aborted) return error(r.request); if (r._timedOut) return error(r.request, 'Request is aborted: timeout'); if (r.request && r.request[readyState] == 4) { r.request.onreadystatechange = noop; if (succeed(r)) success(r.request);else error(r.request); } }; } function setHeaders(http, o) { var headers = o['headers'] || {}, h; headers['Accept'] = headers['Accept'] || defaultHeaders['accept'][o['type']] || defaultHeaders['accept']['*']; var isAFormData = typeof FormData === 'function' && o['data'] instanceof FormData; if (!o['crossOrigin'] && !headers[requestedWith]) headers[requestedWith] = defaultHeaders['requestedWith']; if (!headers[contentType] && !isAFormData) headers[contentType] = o['contentType'] || defaultHeaders['contentType']; for (h in headers) { headers.hasOwnProperty(h) && 'setRequestHeader' in http && http.setRequestHeader(h, headers[h]); } } function setCredentials(http, o) { if (typeof o['withCredentials'] !== 'undefined' && typeof http.withCredentials !== 'undefined') { http.withCredentials = !!o['withCredentials']; } } function generalCallback(data) { lastValue = data; } function urlappend(url, s) { return url + (/\?/.test(url) ? '&' : '?') + s; } function handleJsonp(o, fn, err, url) { var reqId = uniqid++, cbkey = o['jsonpCallback'] || 'callback', cbval = o['jsonpCallbackName'] || reqwest.getcallbackPrefix(reqId), cbreg = new RegExp('((^|\\?|&)' + cbkey + ')=([^&]+)'), match = url.match(cbreg), script = doc.createElement('script'), loaded = 0, isIE10 = navigator.userAgent.indexOf('MSIE 10.0') !== -1; if (match) { if (match[3] === '?') { url = url.replace(cbreg, '$1=' + cbval); } else { cbval = match[3]; } } else { url = urlappend(url, cbkey + '=' + cbval); } win[cbval] = generalCallback; script.type = 'text/javascript'; script.src = url; script.async = true; if (typeof script.onreadystatechange !== 'undefined' && !isIE10) { script.htmlFor = script.id = '_reqwest_' + reqId; } script.onload = script.onreadystatechange = function () { if (script[readyState] && script[readyState] !== 'complete' && script[readyState] !== 'loaded' || loaded) { return false; } script.onload = script.onreadystatechange = null; script.onclick && script.onclick(); fn(lastValue); lastValue = undefined; head.removeChild(script); loaded = 1; }; head.appendChild(script); return { abort: function abort() { script.onload = script.onreadystatechange = null; err({}, 'Request is aborted: timeout', {}); lastValue = undefined; head.removeChild(script); loaded = 1; } }; } function getRequest(fn, err) { var o = this.o, method = (o['method'] || 'GET').toUpperCase(), url = typeof o === 'string' ? o : o['url'], data = o['processData'] !== false && o['data'] && typeof o['data'] !== 'string' ? reqwest.toQueryString(o['data']) : o['data'] || null, http, sendWait = false; if ((o['type'] == 'jsonp' || method == 'GET') && data) { url = urlappend(url, data); data = null; } if (o['type'] == 'jsonp') return handleJsonp(o, fn, err, url); http = o.xhr && o.xhr(o) || xhr(o); http.open(method, url, o['async'] === false ? false : true); setHeaders(http, o); setCredentials(http, o); if (win[xDomainRequest] && http instanceof win[xDomainRequest]) { http.onload = fn; http.onerror = err; http.onprogress = function () {}; sendWait = true; } else { http.onreadystatechange = handleReadyState(this, fn, err); } o['before'] && o['before'](http); if (sendWait) { setTimeout(function () { http.send(data); }, 200); } else { http.send(data); } return http; } function Reqwest(o, fn) { this.o = o; this.fn = fn; init.apply(this, arguments); } function setType(header) { if (header.match('json')) return 'json'; if (header.match('javascript')) return 'js'; if (header.match('text')) return 'html'; if (header.match('xml')) return 'xml'; } function init(o, fn) { this.url = typeof o == 'string' ? o : o['url']; this.timeout = null; this._fulfilled = false; this._successHandler = function () {}; this._fulfillmentHandlers = []; this._errorHandlers = []; this._completeHandlers = []; this._erred = false; this._responseArgs = {}; var self = this; fn = fn || function () {}; if (o['timeout']) { this.timeout = setTimeout(function () { timedOut(); }, o['timeout']); } if (o['success']) { this._successHandler = function () { o['success'].apply(o, arguments); }; } if (o['error']) { this._errorHandlers.push(function () { o['error'].apply(o, arguments); }); } if (o['complete']) { this._completeHandlers.push(function () { o['complete'].apply(o, arguments); }); } function complete(resp) { o['timeout'] && clearTimeout(self.timeout); self.timeout = null; while (self._completeHandlers.length > 0) { self._completeHandlers.shift()(resp); } } function success(resp) { var type = o['type'] || resp && setType(resp.getResponseHeader('Content-Type')); resp = type !== 'jsonp' ? self.request : resp; var filteredResponse = globalSetupOptions.dataFilter(resp.responseText, type), r = filteredResponse; try { resp.responseText = r; } catch (e) {} if (r) { switch (type) { case 'json': try { resp = win.JSON.parse(r); } catch (err) { return error(resp, 'Could not parse JSON in response', err); } break; } } self._responseArgs.resp = resp; self._fulfilled = true; fn(resp); self._successHandler(resp); while (self._fulfillmentHandlers.length > 0) { resp = self._fulfillmentHandlers.shift()(resp); } complete(resp); } function timedOut() { self._timedOut = true; if (typeof self.request !== 'undefined' && typeof self.request.abort === 'function') { self.request.abort(); } } function error(resp, msg, t) { resp = self.request; self._responseArgs.resp = resp; self._responseArgs.msg = msg; self._responseArgs.t = t; self._erred = true; while (self._errorHandlers.length > 0) { self._errorHandlers.shift()(resp, msg, t); } complete(resp); } this.request = getRequest.call(this, success, error); } Reqwest.prototype = { abort: function abort() { this._aborted = true; if (typeof this.request !== 'undefined' && typeof this.request.abort === 'function') { this.request.abort(); } }, retry: function retry() { this._aborted = false; this._timedOut = false; init.call(this, this.o, this.fn); }, then: function then(success, fail) { success = success || function () {}; fail = fail || function () {}; if (this._fulfilled) { this._responseArgs.resp = success(this._responseArgs.resp); } else if (this._erred) { fail(this._responseArgs.resp, this._responseArgs.msg, this._responseArgs.t); } else { this._fulfillmentHandlers.push(success); this._errorHandlers.push(fail); } return this; }, always: function always(fn) { if (this._fulfilled || this._erred) { fn(this._responseArgs.resp); } else { this._completeHandlers.push(fn); } return this; }, fail: function fail(fn) { if (this._erred) { fn(this._responseArgs.resp, this._responseArgs.msg, this._responseArgs.t); } else { this._errorHandlers.push(fn); } return this; }, 'catch': function _catch(fn) { return this.fail(fn); } }; function reqwest(o, fn) { return new Reqwest(o, fn); } function normalize(s) { return s ? s.replace(/\r?\n/g, '\r\n') : ''; } function serial(el, cb) { var n = el.name, t = el.tagName.toLowerCase(), optCb = function optCb(o) { if (o && !o['disabled']) cb(n, normalize(o['attributes']['value'] && o['attributes']['value']['specified'] ? o['value'] : o['text'])); }, ch, ra, val, i; if (el.disabled || !n) return; switch (t) { case 'input': if (!/reset|button|image|file/i.test(el.type)) { ch = /checkbox/i.test(el.type); ra = /radio/i.test(el.type); val = el.value;(!(ch || ra) || el.checked) && cb(n, normalize(ch && val === '' ? 'on' : val)); } break; case 'textarea': cb(n, normalize(el.value)); break; case 'select': if (el.type.toLowerCase() === 'select-one') { optCb(el.selectedIndex >= 0 ? el.options[el.selectedIndex] : null); } else { for (i = 0; el.length && i < el.length; i++) { el.options[i].selected && optCb(el.options[i]); } } break; } } function eachFormElement() { var cb = this, e, i, serializeSubtags = function serializeSubtags(e, tags) { var i, j, fa; for (i = 0; i < tags.length; i++) { fa = e[byTag](tags[i]); for (j = 0; j < fa.length; j++) { serial(fa[j], cb); } } }; for (i = 0; i < arguments.length; i++) { e = arguments[i]; if (/input|select|textarea/i.test(e.tagName)) serial(e, cb); serializeSubtags(e, ['input', 'select', 'textarea']); } } function serializeQueryString() { return reqwest.toQueryString(reqwest.serializeArray.apply(null, arguments)); } function serializeHash() { var hash = {}; eachFormElement.apply(function (name, value) { if (name in hash) { hash[name] && !isArray(hash[name]) && (hash[name] = [hash[name]]); hash[name].push(value); } else hash[name] = value; }, arguments); return hash; } reqwest.serializeArray = function () { var arr = []; eachFormElement.apply(function (name, value) { arr.push({ name: name, value: value }); }, arguments); return arr; }; reqwest.serialize = function () { if (arguments.length === 0) return ''; var opt, fn, args = Array.prototype.slice.call(arguments, 0); opt = args.pop(); opt && opt.nodeType && args.push(opt) && (opt = null); opt && (opt = opt.type); if (opt == 'map') fn = serializeHash;else if (opt == 'array') fn = reqwest.serializeArray;else fn = serializeQueryString; return fn.apply(null, args); }; reqwest.toQueryString = function (o, trad) { var prefix, i, traditional = trad || false, s = [], enc = encodeURIComponent, add = function add(key, value) { value = 'function' === typeof value ? value() : value == null ? '' : value; s[s.length] = enc(key) + '=' + enc(value); }; if (isArray(o)) { for (i = 0; o && i < o.length; i++) { add(o[i]['name'], o[i]['value']); } } else { for (prefix in o) { if (o.hasOwnProperty(prefix)) buildParams(prefix, o[prefix], traditional, add); } } return s.join('&').replace(/%20/g, '+'); }; function buildParams(prefix, obj, traditional, add) { var name, i, v, rbracket = /\[\]$/; if (isArray(obj)) { for (i = 0; obj && i < obj.length; i++) { v = obj[i]; if (traditional || rbracket.test(prefix)) { add(prefix, v); } else { buildParams(prefix + '[' + ((typeof v === 'undefined' ? 'undefined' : (0, _typeof3.default)(v)) === 'object' ? i : '') + ']', v, traditional, add); } } } else if (obj && obj.toString() === '[object Object]') { for (name in obj) { buildParams(prefix + '[' + name + ']', obj[name], traditional, add); } } else { add(prefix, obj); } } reqwest.getcallbackPrefix = function () { return callbackPrefix; }; reqwest.compat = function (o, fn) { if (o) { o['type'] && (o['method'] = o['type']) && delete o['type']; o['dataType'] && (o['type'] = o['dataType']); o['jsonpCallback'] && (o['jsonpCallbackName'] = o['jsonpCallback']) && delete o['jsonpCallback']; o['jsonp'] && (o['jsonpCallback'] = o['jsonp']); } return new Reqwest(o, fn); }; reqwest.ajaxSetup = function (options) { options = options || {}; for (var k in options) { globalSetupOptions[k] = options[k]; } }; return reqwest; }); ;(function (window, define) { var _ = { version: "2.3.0", areas: {}, apis: {}, inherit: function inherit(api, o) { for (var p in api) { if (!o.hasOwnProperty(p)) { o[p] = api[p]; } } return o; }, stringify: function stringify(d) { return d === undefined || typeof d === "function" ? d + '' : (0, _stringify2.default)(d); }, parse: function parse(s) { try { return JSON.parse(s); } catch (e) { return s; } }, fn: function fn(name, _fn) { _.storeAPI[name] = _fn; for (var api in _.apis) { _.apis[api][name] = _fn; } }, get: function get(area, key) { return area.getItem(key); }, set: function set(area, key, string) { area.setItem(key, string); }, remove: function remove(area, key) { area.removeItem(key); }, key: function key(area, i) { return area.key(i); }, length: function length(area) { return area.length; }, clear: function clear(area) { area.clear(); }, Store: function Store(id, area, namespace) { var store = _.inherit(_.storeAPI, function (key, data, overwrite) { if (arguments.length === 0) { return store.getAll(); } if (data !== undefined) { return store.set(key, data, overwrite); } if (typeof key === "string") { return store.get(key); } if (!key) { return store.clear(); } return store.setAll(key, data); }); store._id = id; try { var testKey = '_safariPrivate_'; area.setItem(testKey, 'sucks'); store._area = area; area.removeItem(testKey); } catch (e) {} if (!store._area) { store._area = _.inherit(_.storageAPI, { items: {}, name: 'fake' }); } store._ns = namespace || ''; if (!_.areas[id]) { _.areas[id] = store._area; } if (!_.apis[store._ns + store._id]) { _.apis[store._ns + store._id] = store; } return store; }, storeAPI: { area: function area(id, _area) { var store = this[id]; if (!store || !store.area) { store = _.Store(id, _area, this._ns); if (!this[id]) { this[id] = store; } } return store; }, namespace: function namespace(_namespace, noSession) { if (!_namespace) { return this._ns ? this._ns.substring(0, this._ns.length - 1) : ''; } var ns = _namespace, store = this[ns]; if (!store || !store.namespace) { store = _.Store(this._id, this._area, this._ns + ns + '.'); if (!this[ns]) { this[ns] = store; } if (!noSession) { store.area('session', _.areas.session); } } return store; }, isFake: function isFake() { return this._area.name === 'fake'; }, toString: function toString() { return 'store' + (this._ns ? '.' + this.namespace() : '') + '[' + this._id + ']'; }, has: function has(key) { if (this._area.has) { return this._area.has(this._in(key)); } return !!(this._in(key) in this._area); }, size: function size() { return this.keys().length; }, each: function each(fn, and) { for (var i = 0, m = _.length(this._area); i < m; i++) { var key = this._out(_.key(this._area, i)); if (key !== undefined) { if (fn.call(this, key, and || this.get(key)) === false) { break; } } if (m > _.length(this._area)) { m--;i--; } } return and || this; }, keys: function keys() { return this.each(function (k, list) { list.push(k); }, []); }, get: function get(key, alt) { var s = _.get(this._area, this._in(key)); return s !== null ? _.parse(s) : alt || s; }, getAll: function getAll() { return this.each(function (k, all) { all[k] = this.get(k); }, {}); }, set: function set(key, data, overwrite) { var d = this.get(key); if (d != null && overwrite === false) { return data; } return _.set(this._area, this._in(key), _.stringify(data), overwrite) || d; }, setAll: function setAll(data, overwrite) { var changed, val; for (var key in data) { val = data[key]; if (this.set(key, val, overwrite) !== val) { changed = true; } } return changed; }, remove: function remove(key) { var d = this.get(key); _.remove(this._area, this._in(key)); return d; }, clear: function clear() { if (!this._ns) { _.clear(this._area); } else { this.each(function (k) { _.remove(this._area, this._in(k)); }, 1); } return this; }, clearAll: function clearAll() { var area = this._area; for (var id in _.areas) { if (_.areas.hasOwnProperty(id)) { this._area = _.areas[id]; this.clear(); } } this._area = area; return this; }, _in: function _in(k) { if (typeof k !== "string") { k = _.stringify(k); } return this._ns ? this._ns + k : k; }, _out: function _out(k) { return this._ns ? k && k.indexOf(this._ns) === 0 ? k.substring(this._ns.length) : undefined : k; } }, storageAPI: { length: 0, has: function has(k) { return this.items.hasOwnProperty(k); }, key: function key(i) { var c = 0; for (var k in this.items) { if (this.has(k) && i === c++) { return k; } } }, setItem: function setItem(k, v) { if (!this.has(k)) { this.length++; } this.items[k] = v; }, removeItem: function removeItem(k) { if (this.has(k)) { delete this.items[k]; this.length--; } }, getItem: function getItem(k) { return this.has(k) ? this.items[k] : null; }, clear: function clear() { for (var k in this.list) { this.removeItem(k); } }, toString: function toString() { return this.length + ' items in ' + this.name + 'Storage'; } } }; if (window.store) { _.conflict = window.store; } var store = _.Store("local", function () { try { return localStorage; } catch (e) {} }()); store.local = store; store._ = _; store.area("session", function () { try { return sessionStorage; } catch (e) {} }()); window.store = store; if (typeof define === 'function' && define.amd !== undefined) { define(function () { return store; }); } else if (typeof module !== 'undefined' && module.exports) { module.exports = store; } })(this, this.define); }).call(context); queryString = context.queryString; store = context.store; function extend(obj) { if (!isObject(obj)) { return obj; } var source, prop; for (var i = 1, length = arguments.length; i < length; i++) { source = arguments[i]; for (prop in source) { obj[prop] = source[prop]; } } return obj; } function isArray(obj) { return '[object Array]' === Object.prototype.toString.call(obj); } function isFunction(obj) { return '' + (typeof obj === 'undefined' ? 'undefined' : (0, _typeof3.default)(obj)) === 'function'; } function isObject(obj) { var type = typeof obj === 'undefined' ? 'undefined' : (0, _typeof3.default)(obj); return type === 'function' || type === 'object' && !!obj; } function isString(value) { return typeof value == 'string' || value && (typeof value === 'undefined' ? 'undefined' : (0, _typeof3.default)(value)) == 'object' && Object.prototype.toString.call(value) == '[object String]' || false; } function uuidv4() { var d = perfnow().now(); var uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) { var r = (d + Math.random() * 16) % 16 | 0; d = Math.floor(d / 16); return (c == 'x' ? r : r & 0x3 | 0x8).toString(16); }); return uuid; } var defaults = { transport: '', queueTimeout: 100 }, localStore = store.namespace('gumshoe'), storage = store.namespace('gumshoe').session, queue = storage('queue') || [], transports = {}; if (!isArray(queue)) { queue = []; } function gumshoe(options) { var clientUuid = localStore('clientUuid'); options = extend({}, defaults, options); if (isString(options.transport)) { options.transport = [options.transport]; } else if (!isArray(options.transport)) { throw 'Gumeshoe: Transport property must be a [String] or [Array].'; } if (!clientUuid) { clientUuid = uuidv4(); localStore({ clientUuid: clientUuid }); } options.clientUuid = clientUuid; session(options.sessionFn); gumshoe.options = options; } function each(obj, iterator, context) { if (obj === null) { return; } if (Array.prototype.forEach && obj.forEach === Array.prototype.forEach) { obj.forEach(iterator, context); } else if (obj.length === +obj.length) { for (var i = 0, l = obj.length; i < l; i++) { if (iterator.call(context, obj[i], i, obj) === {}) { return; } } } else { for (var key in obj) { if (obj.hasOwnProperty(key)) { if (iterator.call(context, obj[key], key, obj) === {}) { return; } } } } } function map(obj, iterator, context) { var results = []; if (!obj) { return results; } if (Array.prototype.map && obj.map === Array.prototype.map) { return obj.map(iterator, context); } each(obj, function (value, index, list) { results[results.length] = iterator.call(context, value, index, list); }); return results; } function collectPlugins() { var result, plugins = navigator.plugins || []; result = map(plugins, function (plugin) { var mimeTypes = map(plugin, function (mimeType) { var type = mimeType.type; if (mimeType.suffixes) { type += '~' + mimeType.suffixes; } return type; }); return { description: plugin.description, filename: plugin.filename, mimeTypes: mimeTypes, name: plugin.name }; }); return result; } function collect() { function getViewport() { var e = window, a = 'inner'; if (!('innerWidth' in window)) { a = 'client'; e = document.documentElement || document.body; } return { width: e[a + 'Width'], height: e[a + 'Height'] }; } var viewport = getViewport(), query = queryString.parse(location.search), result = { characterSet: document.characterSet || document.charset || document.inputEncoding || 'Unknown', colorDepth: screen.colorDepth + '', googleClickId: query.gclid || '', hash: window.location.hash, host: window.location.host, hostName: window.location.hostname, ipAddress: '', javaEnabled: navigator.javaEnabled ? navigator.javaEnabled() : false, language: window.navigator.userLanguage || window.navigator.language || 'Unknown', loginKey: query.lk || '', origin: window.location.origin || '', path: window.location.pathname, platform: window.navigator.platform, plugins: collectPlugins(), port: window.location.port || 80, promotionKey: query.pkey || '', protocol: window.location.protocol, queryString: window.location.search, referer: document.referrer, screenAvailHeight: screen.availHeight, screenAvailWidth: screen.availWidth, screenHeight: screen.height, screenOrientationAngle: '', screenOrientationType: '', screenPixelDepth: screen.pixelDepth + '', screenResolution: screen.width + 'x' + screen.height, screenWidth: screen.width, title: document.title, url: window.location.href, userAgent: window.navigator.userAgent, utmCampaign: query.utm_campaign || '', utmContent: query.utm_content || '', utmMedium: query.utm_medium || '', utmSource: query.utm_source || '', utmTerm: query.utm_term || '', viewportHeight: viewport.height, viewportResolution: viewport.width + 'x' + viewport.height, viewportWidth: viewport.width }, intFields = ['port', 'screenAvailHeight', 'screenAvailWidth', 'screenHeight', 'screenOrientationAngle', 'screenWidth', 'viewportHeight', 'viewportWidth'], prop, value; if (result.javaEnabled === undefined) { result.javaEnabled = false; } if (screen.orientation) { result.screenOrientationAngle = parseInt(screen.orientation.angle ? screen.orientation.angle : '0'); result.screenOrientationType = screen.orientation.type ? screen.orientation.type : ''; if (isNaN(result.screenOrientationAngle)) { result.screenOrientationAngle = 0; } } for (var i = 0; i < intFields.length; i++) { prop = intFields[i]; value = parseInt(result[prop]); if (isNaN(value)) { value = 0; } result[prop] = value; } return result; } function session(fn) { function getUtm() { return { campaign: query.utm_campaign || '', medium: query.utm_medium || '', source: query.utm_source || '', utmTerm: query.utm_term || '' }; } var now = new Date().getTime(), query = queryString.parse(location.search), lastUtm = storage('utm') || getUtm(), utm = getUtm(), timestamp, difference; storage('utm', utm); if (!storage('uuid')) { storage('uuid', uuidv4()); storage('timestamp', now); } else { timestamp = storage('timestamp'); difference = now - timestamp; if (fn) { if (fn.call(this, timestamp, difference, query)) { storage('uuid', uuidv4()); } } else if ((0, _stringify2.default)(lastUtm) !== (0, _stringify2.default)(utm) || difference > 1000 * 60 * 30) { storage('uuid', uuidv4()); } } } function send(eventName, eventData) { var pageData = collect(), baseData = { clientUuid: gumshoe.options.clientUuid, eventName: eventName, eventData: eventData || {}, gumshoe: '0.8.1', pageData: pageData, sessionUuid: storage('uuid'), timestamp: new Date().getTime(), timezoneOffset: new Date().getTimezoneOffset(), uuid: uuidv4() }, transportFound = false; session(gumshoe.options.sessionFn); if (gumshoe.options.transport) { for (var i = 0; i < gumshoe.options.transport.length; i++) { var transportName = gumshoe.options.transport[i], transport, data; if (transportName && transports[transportName]) { transportFound = true; transport = transports[transportName]; data = transport.map ? transport.map(baseData) : baseData; data = extend(baseData, data); if (!isString(data.eventData)) { data.eventData = (0, _stringify2.default)(data.eventData); } if (!isString(data.pageData.plugins)) { data.pageData.plugins = (0, _stringify2.default)(data.pageData.plugins); } if (!data.pageData.ipAddress) { data.pageData.ipAddress = ''; } pushEvent(eventName, transportName, data); } else { throw 'Gumshoe: The transport name: ' + transportName + ', doesn\'t map to a valid transport.'; } } } } function nextEvent() { if (!queue.length) { return; } var nevent = queue.shift(), transport = transports[nevent.transportName]; storage('queue', queue); transport.send(nevent.data, function (err, result) { if (err) { console.warn('Gumshoe: Retrying. Error received from transport: ' + nevent.transportName + ', for event: ' + nevent.eventName); queue.push(nevent); } }); setTimeout(nextEvent, gumshoe.options.queueTimeout); } function pushEvent(eventName, transportName, data) { var transport; if (storage.isFake()) { transport = transports[transportName]; transport.send(data); return; } queue.push({ eventName: eventName, transportName: transportName, data: data }); storage('queue', queue); setTimeout(nextEvent, gumshoe.options.queueTimeout); } function transport(tp) { if (!tp.name) { throw 'Gumshoe: Transport [Object] must have a name defined.'; } transports[tp.name] = tp; } gumshoe.version = '0.8.1'; gumshoe.options = {}; gumshoe.extend = extend; gumshoe.reqwest = context.reqwest; gumshoe.send = send; gumshoe.transport = transport; gumshoe.uuid = uuidv4; gumshoe._ = { collect: collect, localStorage: localStore, queryString: queryString, queue: queue, storage: storage, transports: transports }; return gumshoe; } exports.default = gumshoeFactory; /***/ }), /* 102 */ /***/ (function(module, exports, __webpack_require__) { var core = __webpack_require__(2) , $JSON = core.JSON || (core.JSON = {stringify: JSON.stringify}); module.exports = function stringify(it){ // eslint-disable-line no-unused-vars return $JSON.stringify.apply($JSON, arguments); }; /***/ }), /* 103 */ /***/ (function(module, exports, __webpack_require__) { /* WEBPACK VAR INJECTION */(function(module, global) {var __WEBPACK_AMD_DEFINE_RESULT__;/*! http://mths.be/base64 v0.1.0 by @mathias | MIT license */ ;(function(root) { // Detect free variables `exports`. var freeExports = typeof exports == 'object' && exports; // Detect free variable `module`. var freeModule = typeof module == 'object' && module && module.exports == freeExports && module; // Detect free variable `global`, from Node.js or Browserified code, and use // it as `root`. var freeGlobal = typeof global == 'object' && global; if (freeGlobal.global === freeGlobal || freeGlobal.window === freeGlobal) { root = freeGlobal; } /*--------------------------------------------------------------------------*/ var InvalidCharacterError = function(message) { this.message = message; }; InvalidCharacterError.prototype = new Error; InvalidCharacterError.prototype.name = 'InvalidCharacterError'; var error = function(message) { // Note: the error messages used throughout this file match those used by // the native `atob`/`btoa` implementation in Chromium. throw new InvalidCharacterError(message); }; var TABLE = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'; // http://whatwg.org/html/common-microsyntaxes.html#space-character var REGEX_SPACE_CHARACTERS = /[\t\n\f\r ]/g; // `decode` is designed to be fully compatible with `atob` as described in the // HTML Standard. http://whatwg.org/html/webappapis.html#dom-windowbase64-atob // The optimized base64-decoding algorithm used is based on @atk’s excellent // implementation. https://gist.github.com/atk/1020396 var decode = function(input) { input = String(input) .replace(REGEX_SPACE_CHARACTERS, ''); var length = input.length; if (length % 4 == 0) { input = input.replace(/==?$/, ''); length = input.length; } if ( length % 4 == 1 || // http://whatwg.org/C#alphanumeric-ascii-characters /[^+a-zA-Z0-9/]/.test(input) ) { error( 'Invalid character: the string to be decoded is not correctly encoded.' ); } var bitCounter = 0; var bitStorage; var buffer; var output = ''; var position = -1; while (++position < length) { buffer = TABLE.indexOf(input.charAt(position)); bitStorage = bitCounter % 4 ? bitStorage * 64 + buffer : buffer; // Unless this is the first of a group of 4 characters… if (bitCounter++ % 4) { // …convert the first 8 bits to a single ASCII character. output += String.fromCharCode( 0xFF & bitStorage >> (-2 * bitCounter & 6) ); } } return output; }; // `encode` is designed to be fully compatible with `btoa` as described in the // HTML Standard: http://whatwg.org/html/webappapis.html#dom-windowbase64-btoa var encode = function(input) { input = String(input); if (/[^\0-\xFF]/.test(input)) { // Note: no need to special-case astral symbols here, as surrogates are // matched, and the input is supposed to only contain ASCII anyway. error( 'The string to be encoded contains characters outside of the ' + 'Latin1 range.' ); } var padding = input.length % 3; var output = ''; var position = -1; var a; var b; var c; var d; var buffer; // Make sure any padding is handled outside of the loop. var length = input.length - padding; while (++position < length) { // Read three bytes, i.e. 24 bits. a = input.charCodeAt(position) << 16; b = input.charCodeAt(++position) << 8; c = input.charCodeAt(++position); buffer = a + b + c; // Turn the 24 bits into four chunks of 6 bits each, and append the // matching character for each of them to the output. output += ( TABLE.charAt(buffer >> 18 & 0x3F) + TABLE.charAt(buffer >> 12 & 0x3F) + TABLE.charAt(buffer >> 6 & 0x3F) + TABLE.charAt(buffer & 0x3F) ); } if (padding == 2) { a = input.charCodeAt(position) << 8; b = input.charCodeAt(++position); buffer = a + b; output += ( TABLE.charAt(buffer >> 10) + TABLE.charAt((buffer >> 4) & 0x3F) + TABLE.charAt((buffer << 2) & 0x3F) + '=' ); } else if (padding == 1) { buffer = input.charCodeAt(position); output += ( TABLE.charAt(buffer >> 2) + TABLE.charAt((buffer << 4) & 0x3F) + '==' ); } return output; }; var base64 = { 'encode': encode, 'decode': decode, 'version': '0.1.0' }; // Some AMD build optimizers, like r.js, check for specific condition patterns // like the following: if ( true ) { !(__WEBPACK_AMD_DEFINE_RESULT__ = function() { return base64; }.call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); } else if (freeExports && !freeExports.nodeType) { if (freeModule) { // in Node.js or RingoJS v0.8.0+ freeModule.exports = base64; } else { // in Narwhal or RingoJS v0.7.0- for (var key in base64) { base64.hasOwnProperty(key) && (freeExports[key] = base64[key]); } } } else { // in Rhino or a web browser root.base64 = base64; } }(this)); /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(104)(module), __webpack_require__(24))) /***/ }), /* 104 */ /***/ (function(module, exports) { module.exports = function(module) { if(!module.webpackPolyfill) { module.deprecate = function() {}; module.paths = []; // module.parent = undefined by default if(!module.children) module.children = []; Object.defineProperty(module, "loaded", { enumerable: true, get: function() { return module.l; } }); Object.defineProperty(module, "id", { enumerable: true, get: function() { return module.i; } }); module.webpackPolyfill = 1; } return module; }; /***/ }), /* 105 */ /***/ (function(module, exports, __webpack_require__) { /* WEBPACK VAR INJECTION */(function(global) {if (global.Promise == null) { global.Promise = __webpack_require__(106); } if (Object.assign == null) { Object.defineProperty(Object, 'assign', { enumerable: false, configurable: true, writable: true, value: __webpack_require__(110) }); } module.exports = __webpack_require__(111); /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(24))) /***/ }), /* 106 */ /***/ (function(module, exports, __webpack_require__) { /* WEBPACK VAR INJECTION */(function(global, setImmediate) {!function(t){"use strict";function e(t){if(t){var e=this;t(function(t){e.resolve(t)},function(t){e.reject(t)})}}function n(t,e){if("function"==typeof t.y)try{var n=t.y.call(i,e);t.p.resolve(n)}catch(o){t.p.reject(o)}else t.p.resolve(e)}function o(t,e){if("function"==typeof t.n)try{var n=t.n.call(i,e);t.p.resolve(n)}catch(o){t.p.reject(o)}else t.p.reject(e)}var r,i,c="fulfilled",u="rejected",s="undefined",f=function(){function e(){for(;n.length-o;){try{n[o]()}catch(e){t.console&&t.console.error(e)}n[o++]=i,o==r&&(n.splice(0,r),o=0)}}var n=[],o=0,r=1024,c=function(){if(typeof MutationObserver!==s){var t=document.createElement("div"),n=new MutationObserver(e);return n.observe(t,{attributes:!0}),function(){t.setAttribute("a",0)}}return typeof setImmediate!==s?function(){setImmediate(e)}:function(){setTimeout(e,0)}}();return function(t){n.push(t),n.length-o==1&&c()}}();e.prototype={resolve:function(t){if(this.state===r){if(t===this)return this.reject(new TypeError("Attempt to resolve promise with self"));var e=this;if(t&&("function"==typeof t||"object"==typeof t))try{var o=!0,i=t.then;if("function"==typeof i)return void i.call(t,function(t){o&&(o=!1,e.resolve(t))},function(t){o&&(o=!1,e.reject(t))})}catch(u){return void(o&&this.reject(u))}this.state=c,this.v=t,e.c&&f(function(){for(var o=0,r=e.c.length;r>o;o++)n(e.c[o],t)})}},reject:function(n){if(this.state===r){this.state=u,this.v=n;var i=this.c;i?f(function(){for(var t=0,e=i.length;e>t;t++)o(i[t],n)}):!e.suppressUncaughtRejectionError&&t.console&&t.console.log("You upset Zousan. Please catch rejections: ",n,n?n.stack:null)}},then:function(t,i){var u=new e,s={y:t,n:i,p:u};if(this.state===r)this.c?this.c.push(s):this.c=[s];else{var l=this.state,a=this.v;f(function(){l===c?n(s,a):o(s,a)})}return u},"catch":function(t){return this.then(null,t)},"finally":function(t){return this.then(t,t)},timeout:function(t,n){n=n||"Timeout";var o=this;return new e(function(e,r){setTimeout(function(){r(Error(n))},t),o.then(function(t){e(t)},function(t){r(t)})})}},e.resolve=function(t){var n=new e;return n.resolve(t),n},e.reject=function(t){var n=new e;return n.reject(t),n},e.all=function(t){function n(n,c){n&&"function"==typeof n.then||(n=e.resolve(n)),n.then(function(e){o[c]=e,r++,r==t.length&&i.resolve(o)},function(t){i.reject(t)})}for(var o=[],r=0,i=new e,c=0;c= 0) { item._idleTimeoutId = setTimeout(function onTimeout() { if (item._onTimeout) item._onTimeout(); }, msecs); } }; // setimmediate attaches itself to the global object __webpack_require__(108); exports.setImmediate = setImmediate; exports.clearImmediate = clearImmediate; /***/ }), /* 108 */ /***/ (function(module, exports, __webpack_require__) { /* WEBPACK VAR INJECTION */(function(global, process) {(function (global, undefined) { "use strict"; if (global.setImmediate) { return; } var nextHandle = 1; // Spec says greater than zero var tasksByHandle = {}; var currentlyRunningATask = false; var doc = global.document; var registerImmediate; function setImmediate(callback) { // Callback can either be a function or a string if (typeof callback !== "function") { callback = new Function("" + callback); } // Copy function arguments var args = new Array(arguments.length - 1); for (var i = 0; i < args.length; i++) { args[i] = arguments[i + 1]; } // Store and register the task var task = { callback: callback, args: args }; tasksByHandle[nextHandle] = task; registerImmediate(nextHandle); return nextHandle++; } function clearImmediate(handle) { delete tasksByHandle[handle]; } function run(task) { var callback = task.callback; var args = task.args; switch (args.length) { case 0: callback(); break; case 1: callback(args[0]); break; case 2: callback(args[0], args[1]); break; case 3: callback(args[0], args[1], args[2]); break; default: callback.apply(undefined, args); break; } } function runIfPresent(handle) { // From the spec: "Wait until any invocations of this algorithm started before this one have completed." // So if we're currently running a task, we'll need to delay this invocation. if (currentlyRunningATask) { // Delay by doing a setTimeout. setImmediate was tried instead, but in Firefox 7 it generated a // "too much recursion" error. setTimeout(runIfPresent, 0, handle); } else { var task = tasksByHandle[handle]; if (task) { currentlyRunningATask = true; try { run(task); } finally { clearImmediate(handle); currentlyRunningATask = false; } } } } function installNextTickImplementation() { registerImmediate = function(handle) { process.nextTick(function () { runIfPresent(handle); }); }; } function canUsePostMessage() { // The test against `importScripts` prevents this implementation from being installed inside a web worker, // where `global.postMessage` means something completely different and can't be used for this purpose. if (global.postMessage && !global.importScripts) { var postMessageIsAsynchronous = true; var oldOnMessage = global.onmessage; global.onmessage = function() { postMessageIsAsynchronous = false; }; global.postMessage("", "*"); global.onmessage = oldOnMessage; return postMessageIsAsynchronous; } } function installPostMessageImplementation() { // Installs an event handler on `global` for the `message` event: see // * https://developer.mozilla.org/en/DOM/window.postMessage // * http://www.whatwg.org/specs/web-apps/current-work/multipage/comms.html#crossDocumentMessages var messagePrefix = "setImmediate$" + Math.random() + "$"; var onGlobalMessage = function(event) { if (event.source === global && typeof event.data === "string" && event.data.indexOf(messagePrefix) === 0) { runIfPresent(+event.data.slice(messagePrefix.length)); } }; if (global.addEventListener) { global.addEventListener("message", onGlobalMessage, false); } else { global.attachEvent("onmessage", onGlobalMessage); } registerImmediate = function(handle) { global.postMessage(messagePrefix + handle, "*"); }; } function installMessageChannelImplementation() { var channel = new MessageChannel(); channel.port1.onmessage = function(event) { var handle = event.data; runIfPresent(handle); }; registerImmediate = function(handle) { channel.port2.postMessage(handle); }; } function installReadyStateChangeImplementation() { var html = doc.documentElement; registerImmediate = function(handle) { // Create a