mirror of
https://github.com/billz/raspap-webgui.git
synced 2023-10-10 13:37:24 +02:00
1 line
648 KiB
Plaintext
1 line
648 KiB
Plaintext
{"version":3,"sources":["webpack:///index.min.js","webpack:///webpack/bootstrap c999e2f6d9a134306bac","webpack:///(webpack)/buildin/global.js","webpack:///./node_modules/debug/src/browser.js","webpack:///./node_modules/component-emitter/index.js","webpack:///./node_modules/engine.io-parser/lib/browser.js","webpack:///./lib/browser.utils.js","webpack:///./node_modules/parseqs/index.js","webpack:///./node_modules/component-inherit/index.js","webpack:///./lib/emitter.js","webpack:///./node_modules/socket.io-parser/index.js","webpack:///./node_modules/engine.io-client/lib/xmlhttprequest.js","webpack:///./node_modules/engine.io-client/lib/transport.js","webpack:///./lib/ghostmode.scroll.js","webpack:///./lib/events.js","webpack:///./lib/socket.js","webpack:///./node_modules/parseuri/index.js","webpack:///./node_modules/process/browser.js","webpack:///./node_modules/has-binary2/index.js","webpack:///./node_modules/socket.io-parser/is-buffer.js","webpack:///./node_modules/socket.io-client/lib/manager.js","webpack:///./node_modules/engine.io-client/lib/transports/index.js","webpack:///./node_modules/engine.io-client/lib/transports/polling.js","webpack:///./node_modules/yeast/index.js","webpack:///./node_modules/indexof/index.js","webpack:///./node_modules/socket.io-client/lib/socket.js","webpack:///./node_modules/socket.io-client/lib/on.js","webpack:///./node_modules/component-bind/index.js","webpack:///./lib/notify.js","webpack:///./lib/ghostmode.clicks.js","webpack:///./lib/ghostmode.forms.js","webpack:///./lib/ghostmode.forms.input.js","webpack:///./lib/ghostmode.forms.toggles.js","webpack:///./lib/ghostmode.forms.submit.js","webpack:///./lib/ghostmode.location.js","webpack:///./lib/index.js","webpack:///./node_modules/socket.io-client/lib/index.js","webpack:///./node_modules/socket.io-client/lib/url.js","webpack:///./node_modules/debug/src/debug.js","webpack:///./node_modules/ms/index.js","webpack:///./node_modules/has-binary2/node_modules/isarray/index.js","webpack:///./node_modules/socket.io-parser/binary.js","webpack:///./node_modules/socket.io-parser/node_modules/isarray/index.js","webpack:///./node_modules/engine.io-client/lib/index.js","webpack:///./node_modules/engine.io-client/lib/socket.js","webpack:///./node_modules/has-cors/index.js","webpack:///./node_modules/engine.io-client/lib/transports/polling-xhr.js","webpack:///./node_modules/engine.io-parser/lib/keys.js","webpack:///./node_modules/arraybuffer.slice/index.js","webpack:///./node_modules/after/index.js","webpack:///./node_modules/engine.io-parser/lib/utf8.js","webpack:///(webpack)/buildin/module.js","webpack:///./node_modules/base64-arraybuffer/lib/base64-arraybuffer.js","webpack:///./node_modules/blob/index.js","webpack:///./node_modules/engine.io-client/lib/transports/polling-jsonp.js","webpack:///./node_modules/engine.io-client/lib/transports/websocket.js","webpack:///./node_modules/to-array/index.js","webpack:///./node_modules/backo2/index.js","webpack:///./lib/client-shims.js","webpack:///./lib/code-sync.js","webpack:///./vendor/Reloader.ts","webpack:///./lib/utils.ts","webpack:///./vendor/Timer.ts","webpack:///./node_modules/nanologger/index.js","webpack:///./node_modules/assert/assert.js","webpack:///./node_modules/util/util.js","webpack:///./node_modules/util/support/isBufferBrowser.js","webpack:///./node_modules/util/node_modules/inherits/inherits_browser.js","webpack:///./node_modules/xtend/immutable.js","webpack:///./lib/browser-sync.js","webpack:///./lib/tab.js","webpack:///./lib/ghostmode.js"],"names":["modules","__webpack_require__","moduleId","installedModules","exports","module","i","l","call","m","c","d","name","getter","o","Object","defineProperty","configurable","enumerable","get","n","__esModule","object","property","prototype","hasOwnProperty","p","s","g","this","Function","eval","e","window","process","useColors","type","document","documentElement","style","WebkitAppearance","console","firebug","exception","table","navigator","userAgent","toLowerCase","match","parseInt","RegExp","$1","formatArgs","args","namespace","humanize","diff","color","splice","index","lastC","replace","log","apply","arguments","save","namespaces","storage","removeItem","debug","load","r","env","DEBUG","chrome","local","localStorage","colors","formatters","j","v","JSON","stringify","err","message","enable","Emitter","obj","mixin","key","on","addEventListener","event","fn","_callbacks","push","once","off","removeListener","removeAllListeners","removeEventListener","length","callbacks","cb","emit","slice","len","listeners","hasListeners","global","encodeBase64Object","packet","callback","packets","data","encodeArrayBuffer","supportsBinary","encodeBase64Packet","contentArray","Uint8Array","resultBuffer","byteLength","buffer","encodeBlobAsArrayBuffer","fr","FileReader","onload","result","encodePacket","readAsArrayBuffer","encodeBlob","dontSendBlobs","Blob","tryDecode","utf8","decode","strict","map","ary","each","done","Array","next","after","el","error","msg","base64encoder","keys","hasBinary","sliceBuffer","ArrayBuffer","isAndroid","test","isPhantomJS","protocol","open","close","ping","pong","upgrade","noop","packetslist","utf8encode","undefined","base64","encoded","encode","String","b64","split","readAsDataURL","b64data","fromCharCode","typed","basic","btoa","decodePacket","binaryType","utf8decode","charAt","decodeBase64Packet","substr","Number","substring","asArray","rest","encodePayload","setLengthHeader","encodeOne","doneCallback","isBinary","encodePayloadAsBlob","encodePayloadAsArrayBuffer","results","join","decodePayload","decodePayloadAsBinary","chr","encodedPackets","totalLength","reduce","acc","toString","resultArray","bufferIndex","forEach","isString","ab","view","charCodeAt","lenStr","binaryIdentifier","size","lengthAry","blob","bufferTail","buffers","tailArray","msgLength","total","utils","getWindow","getDocument","getBody","getElementsByTagName","getBrowserScrollPosition","scrollX","scrollY","$window","$document","dElement","dBody","body","pageYOffset","pageXOffset","scrollLeft","scrollTop","x","y","getScrollSpace","scrollHeight","clientWidth","clientHeight","saveScrollPosition","pos","cookie","restoreScrollPosition","scrollTo","getElementIndex","tagName","elem","allElems","indexOf","forceChange","blur","focus","getElementData","getSingleElement","setScroll","reloadBrowser","location","reload","coll","isOldIe","attachEvent","getLocation","url","createElement","href","host","str","encodeURIComponent","qs","qry","pairs","pair","decodeURIComponent","a","b","constructor","events","func","Encoder","encodeAsString","BINARY_EVENT","BINARY_ACK","attachments","nsp","id","encodeAsBinary","writeEncoding","bloblessData","deconstruction","binary","deconstructPacket","pack","unshift","removeBlobs","Decoder","reconstructor","decodeString","types","buf","Error","tryParse","parse","BinaryReconstructor","reconPack","ERROR","hasBin","isBuf","CONNECT","DISCONNECT","EVENT","ACK","add","takeBinaryData","destroy","finishedReconstruction","binData","reconstructPacket","hasCORS","opts","xdomain","xscheme","enablesXDR","XMLHttpRequest","XDomainRequest","concat","Transport","path","hostname","port","secure","query","timestampParam","timestampRequests","readyState","agent","socket","pfx","passphrase","cert","ca","ciphers","rejectUnauthorized","forceNode","extraHeaders","localAddress","parser","onError","desc","description","doOpen","doClose","onClose","send","write","onOpen","writable","onData","onPacket","WINDOW_EVENT_NAME","canEmitEvents","init","bs","eventManager","addElementScrollEvents","selector","elems","querySelectorAll","cacheSelector","cache","addEvent","browserEventForElement","options","browserEvent","socketEvent","socketEventForElement","canSync","scrollSpace","scrollProportionally","position","proportional","raw","scrollOne","getScrollPosition","getScrollTopPercentage","getScrollPercentage","scrollPosition","_ElementCache","guidCounter","expando","Date","getTime","getData","guid","removeData","removeAttribute","_fixEvent","returnTrue","returnFalse","stopPropagation","old","prop","target","srcElement","relatedTarget","fromElement","toElement","preventDefault","returnValue","isDefaultPrevented","cancelBubble","isPropagationStopped","stopImmediatePropagation","isImmediatePropagationStopped","clientX","doc","pageX","clientLeft","pageY","clientY","clientTop","which","charCode","keyCode","button","_EventManager","tidyUp","isEmpty","handlers","dispatcher","detachEvent","nextGuid","disabled","removeEvent","removeType","t","proxy","context","ret","triggerClick","evObj","createEvent","setTimeout","initEvent","dispatchEvent","createEventObject","fireEvent","manager","socketConfig","___browserSync___","socketUrl","io","getPath","pathname","re","parts","src","exec","uri","source","authority","ipv6uri","defaultSetTimout","defaultClearTimeout","runTimeout","fun","cachedSetTimeout","runClearTimeout","marker","cachedClearTimeout","clearTimeout","cleanUpNextTick","draining","currentQueue","queue","queueIndex","drainQueue","timeout","run","Item","array","nextTick","title","browser","argv","version","versions","addListener","prependListener","prependOnceListener","binding","cwd","chdir","dir","umask","isArray","Buffer","isBuffer","withNativeBlob","withNativeFile","File","toJSON","Manager","nsps","subs","reconnection","reconnectionAttempts","Infinity","reconnectionDelay","reconnectionDelayMax","randomizationFactor","backoff","Backoff","min","max","jitter","connecting","lastPing","encoding","packetBuffer","_parser","encoder","decoder","autoConnect","eio","Socket","bind","has","emitAll","updateSocketIds","generateId","engine","_reconnection","_reconnectionAttempts","_reconnectionDelay","setMin","_randomizationFactor","setJitter","_reconnectionDelayMax","setMax","_timeout","maybeReconnectOnOpen","reconnecting","attempts","reconnect","connect","self","skipReconnect","openSub","onopen","errorSub","cleanup","timer","onping","onpong","ondata","ondecoded","onerror","onConnecting","processPacketQueue","shift","subsLength","disconnect","reset","onclose","reason","delay","duration","onreconnect","attempt","polling","xd","xs","jsonp","isSSL","forceJSONP","XHR","JSONP","websocket","Polling","forceBase64","hasXHR2","parseqs","inherit","yeast","responseType","poll","pause","onPause","doPoll","callbackfn","doWrite","schema","sid","num","alphabet","Math","floor","decoded","now","prev","seed","arr","json","ids","acks","receiveBuffer","sendBuffer","connected","disconnected","toArray","connect_error","connect_timeout","reconnect_attempt","reconnect_failed","reconnect_error","subEvents","ev","compress","flags","pop","onpacket","onconnect","onevent","onack","ondisconnect","ack","sent","emitBuffered","timeoutInt","styles","display","padding","fontFamily","fontSize","zIndex","right","top","borderBottomLeftRadius","backgroundColor","margin","textAlign","pointerEvents","cssStyles","notify","cssText","rule","flashFn","watchEvent","emitter","override","flash","getElem","$body","innerHTML","appendChild","parentNode","removeChild","tabHidden","plugins","inputs","toggles","submit","checkOpt","ghostMode","forms","value","addEvents","domElems","checked","setPath","setUrl","codeSync","BrowserSync","shouldReload","initialised","reloadOnRestart","BS","client","browserSync","__karma__","__bs_scroll__","__bs_clicks__","__bs_location__","__bs_inputs__","__bs_toggles__","__bs_submit__","__bs_forms__","__bs_utils__","__bs_emitter__","__bs","__bs_notify__","__bs_code_sync__","__bs_ghost_mode__","__bs_socket__","__bs_index__","lookup","parsed","sameNamespace","newConnection","forceNew","multiplex","managers","loc","parseuri","ipv6","selectColor","hash","abs","createDebug","enabled","curr","ms","prevTime","coerce","format","formatter","val","names","skips","disable","stack","parseFloat","h","fmtShort","round","fmtLong","plural","ceil","isNaN","long","_deconstructPacket","placeholder","_placeholder","newData","_reconstructPacket","packetData","_removeBlobs","curKey","containingObject","pendingBlobs","fileReader","transports","transportOptions","writeBuffer","prevBufferLen","policyPort","rememberUpgrade","onlyBinaryUpgrades","perMessageDeflate","threshold","freeGlobal","upgrades","pingInterval","pingTimeout","pingIntervalTimer","pingTimeoutTimer","clone","priorWebsocketSuccess","createTransport","EIO","transport","requestTimeout","protocols","setTransport","onDrain","probe","onTransportOpen","upgradeLosesBinary","failed","upgrading","flush","freezeTransport","onTransportClose","onupgrade","to","onHandshake","setPing","code","filterUpgrades","onHeartbeat","sendPacket","cleanupAndClose","waitForUpgrade","filteredUpgrades","empty","Request","method","async","create","unloadHandler","requests","abort","request","req","sendXhr","pollXhr","xhr","setDisableHeaderCheck","setRequestHeader","withCredentials","hasXDR","onLoad","responseText","onreadystatechange","contentType","getResponseHeader","status","requestsCount","onSuccess","fromError","response","arraybuffer","start","end","bytes","abv","ii","count","err_cb","bail","__WEBPACK_AMD_DEFINE_RESULT__","root","ucs2decode","string","extra","output","counter","ucs2encode","stringFromCharCode","checkScalarValue","codePoint","toUpperCase","createByte","encodeCodePoint","symbol","codePoints","byteString","readContinuationByte","byteIndex","byteCount","continuationByte","byteArray","decodeSymbol","byte1","byte2","byte3","byte4","tmp","freeExports","webpackPolyfill","deprecate","paths","children","chars","encoded1","encoded2","encoded3","encoded4","bufferLength","mapArrayBufferViews","chunk","copy","set","byteOffset","BlobBuilderConstructor","bb","BlobBuilder","append","getBlob","BlobConstructor","WebKitBlobBuilder","MSBlobBuilder","MozBlobBuilder","blobSupported","blobSupportsArrayBufferView","blobBuilderSupported","JSONPPolling","___eio","script","rNewline","rEscapedNewline","form","iframe","insertAt","insertBefore","head","complete","initIframe","html","iframeId","area","className","left","setAttribute","action","WS","usingBrowserWebSocket","BrowserWebSocket","WebSocket","NodeWebSocket","MozWebSocket","check","headers","ws","supports","addEventListeners","onmessage","list","factor","pow","rand","random","deviation","find","thisArg","T","A","k","TypeError","O","kValue","mappedValue","filter","res","__assign","assign","Reloader_1","Timer_1","sync","nanlogger","magenta","reloader","Reloader","Timer","tagNames","css","jpg","jpeg","png","svg","gif","js","attrs","link","img","blacklist","incoming","ext","current","scrollRestoreTechnique","saveScrollInName","saveScrollInCookie","PRE","SUF","regex","saved","newname","hardReload","scroll","injectChanges","basename","isBlacklisted","liveCSS","liveImg","some","confirm","hiddenElem","utils_1","IMAGE_STYLES","styleNames","logger","importCacheWaitPeriod","addPlugin","plugin","analyze","stylesheetReloadTimeout","trace","reloadStylesheet","reloadImages","domData","getElems","getMatches","attr","swapFile","fileExtension","matches","urlMatcher","currentValue","timeStamp","suffix","anchor","search","updateSearch","timestamps","info","reloadPage","_this","generateUniqueString","images","pathsMatch","pathFromUrl","generateCacheBustUrl","_a","reloadStyleImages","styleSheets","styleSheet","reloadStylesheetImages","rules","cssRules","CSSRule","IMPORT_RULE","STYLE_RULE","MEDIA_RULE","styleName","newValue","links","rel","__LiveReload_pendingRemoval","imported","_i","from","sheet","collectImportedStylesheets","_b","_c","StyleFix","pickBestMatch","linkHref","reattachImportedRule","reattachStylesheetLink","CHARSET_RULE","waitUntilCssLoads","callbackExecuted","executeCallback","knownToSupportCssOnLoad","poll_1","getAttribute","media","cloneNode","parent","lastChild","nextSibling","additionalWaitingTime","parentStyleSheet","newRule","__LiveReload_newHref","tempLink","insertRule","deleteRule","oldParams","splitUrl","params","overrideURL","serverURL","originalUrl","sep","item","tuple","objects","pathFunc","score","bestMatch","numberOfMatchingSegments","path1","path2","comps1","reverse","comps2","eqCount","running","_handler","stop","Nanologger","assert","equal","_name","_colors","xtend","defaultColors","logLevel","getItem","_logLevel","levels","getTimeStamp","date","pad","getHours","getMinutes","getSeconds","emojis","warn","fatal","foreground","background","black","red","green","yellow","blue","cyan","white","brightBlack","_print","level","time","emoji","msgColor","objs","arg","compare","_isBuffer","pToString","isView","arrbuf","DataView","getName","util","isFunction","functionsHaveNames","truncate","inspect","something","rawname","getMessage","actual","operator","expected","fail","stackStartFunction","AssertionError","ok","_deepEqual","memos","isDate","isRegExp","multiline","lastIndex","ignoreCase","Float32Array","Float64Array","actualIndex","objEquiv","isArguments","actualVisitedObjects","isPrimitive","getPrototypeOf","aIsArgs","bIsArgs","pSlice","ka","objectKeys","kb","sort","notDeepStrictEqual","expectedException","isPrototypeOf","_tryBlock","block","_throws","shouldThrow","userProvidedMessage","isUnwantedException","isError","isUnexpectedException","hasOwn","generatedMessage","captureStackTrace","out","fn_name","idx","next_line","inherits","notEqual","deepEqual","deepStrictEqual","notDeepEqual","strictEqual","notStrictEqual","throws","doesNotThrow","ifError","ctx","seen","stylize","stylizeNoColor","depth","isBoolean","showHidden","_extend","isUndefined","customInspect","stylizeWithColor","formatValue","styleType","arrayToHash","recurseTimes","primitive","formatPrimitive","visibleKeys","getOwnPropertyNames","formatError","base","braces","toUTCString","formatArray","formatProperty","reduceToSingleString","simple","isNumber","isNull","getOwnPropertyDescriptor","line","numLinesEst","cur","ar","isNullOrUndefined","isSymbol","isObject","objectToString","timestamp","getDate","months","getMonth","formatRegExp","f","_","deprecated","warned","throwDeprecation","traceDeprecation","noDeprecation","debugEnviron","debugs","debuglog","NODE_DEBUG","pid","bold","italic","underline","inverse","grey","special","number","boolean","null","regexp","origin","fill","readUInt8","ctor","superCtor","super_","TempCtor","extend","getByPath","tempPath","optPath","getOption","opt","handleVisibilityChange","hidden","visibilityChange","mozHidden","msHidden","webkitHidden","clicks"],"mappings":"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","file":"index.min.js","sourcesContent":["/******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 33);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports) {\n\nvar g;\r\n\r\n// This works in non-strict mode\r\ng = (function() {\r\n\treturn this;\r\n})();\r\n\r\ntry {\r\n\t// This works if eval is allowed (see CSP)\r\n\tg = g || Function(\"return this\")() || (1,eval)(\"this\");\r\n} catch(e) {\r\n\t// This works if the window reference is available\r\n\tif(typeof window === \"object\")\r\n\t\tg = window;\r\n}\r\n\r\n// g can still be undefined, but nothing to do about it...\r\n// We return undefined, instead of nothing here, so it's\r\n// easier to handle this case. if(!global) { ...}\r\n\r\nmodule.exports = g;\r\n\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(process) {/**\n * This is the web browser implementation of `debug()`.\n *\n * Expose `debug()` as the module.\n */\n\nexports = module.exports = __webpack_require__(37);\nexports.log = log;\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = 'undefined' != typeof chrome\n && 'undefined' != typeof chrome.storage\n ? chrome.storage.local\n : localstorage();\n\n/**\n * Colors.\n */\n\nexports.colors = [\n 'lightseagreen',\n 'forestgreen',\n 'goldenrod',\n 'dodgerblue',\n 'darkorchid',\n 'crimson'\n];\n\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n\nfunction useColors() {\n // NB: In an Electron preload script, document will be defined but not fully\n // initialized. Since we know we're in Chrome, we'll just detect this case\n // explicitly\n if (typeof window !== 'undefined' && window.process && window.process.type === 'renderer') {\n return true;\n }\n\n // is webkit? http://stackoverflow.com/a/16459606/376773\n // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n return (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||\n // is firebug? http://stackoverflow.com/a/398120/376773\n (typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||\n // is firefox >= v31?\n // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/) && parseInt(RegExp.$1, 10) >= 31) ||\n // double check webkit in userAgent just in case we are in a worker\n (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/));\n}\n\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nexports.formatters.j = function(v) {\n try {\n return JSON.stringify(v);\n } catch (err) {\n return '[UnexpectedJSONParseError]: ' + err.message;\n }\n};\n\n\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n var useColors = this.useColors;\n\n args[0] = (useColors ? '%c' : '')\n + this.namespace\n + (useColors ? ' %c' : ' ')\n + args[0]\n + (useColors ? '%c ' : ' ')\n + '+' + exports.humanize(this.diff);\n\n if (!useColors) return;\n\n var c = 'color: ' + this.color;\n args.splice(1, 0, c, 'color: inherit')\n\n // the final \"%c\" is somewhat tricky, because there could be other\n // arguments passed either before or after the %c, so we need to\n // figure out the correct index to insert the CSS into\n var index = 0;\n var lastC = 0;\n args[0].replace(/%[a-zA-Z%]/g, function(match) {\n if ('%%' === match) return;\n index++;\n if ('%c' === match) {\n // we only are interested in the *last* %c\n // (the user may have provided their own)\n lastC = index;\n }\n });\n\n args.splice(lastC, 0, c);\n}\n\n/**\n * Invokes `console.log()` when available.\n * No-op when `console.log` is not a \"function\".\n *\n * @api public\n */\n\nfunction log() {\n // this hackery is required for IE8/9, where\n // the `console.log` function doesn't have 'apply'\n return 'object' === typeof console\n && console.log\n && Function.prototype.apply.call(console.log, console, arguments);\n}\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\n\nfunction save(namespaces) {\n try {\n if (null == namespaces) {\n exports.storage.removeItem('debug');\n } else {\n exports.storage.debug = namespaces;\n }\n } catch(e) {}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\n\nfunction load() {\n var r;\n try {\n r = exports.storage.debug;\n } catch(e) {}\n\n // If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n if (!r && typeof process !== 'undefined' && 'env' in process) {\n r = process.env.DEBUG;\n }\n\n return r;\n}\n\n/**\n * Enable namespaces listed in `localStorage.debug` initially.\n */\n\nexports.enable(load());\n\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\nfunction localstorage() {\n try {\n return window.localStorage;\n } catch (e) {}\n}\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(15)))\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\r\n/**\r\n * Expose `Emitter`.\r\n */\r\n\r\nif (true) {\r\n module.exports = Emitter;\r\n}\r\n\r\n/**\r\n * Initialize a new `Emitter`.\r\n *\r\n * @api public\r\n */\r\n\r\nfunction Emitter(obj) {\r\n if (obj) return mixin(obj);\r\n};\r\n\r\n/**\r\n * Mixin the emitter properties.\r\n *\r\n * @param {Object} obj\r\n * @return {Object}\r\n * @api private\r\n */\r\n\r\nfunction mixin(obj) {\r\n for (var key in Emitter.prototype) {\r\n obj[key] = Emitter.prototype[key];\r\n }\r\n return obj;\r\n}\r\n\r\n/**\r\n * Listen on the given `event` with `fn`.\r\n *\r\n * @param {String} event\r\n * @param {Function} fn\r\n * @return {Emitter}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.on =\r\nEmitter.prototype.addEventListener = function(event, fn){\r\n this._callbacks = this._callbacks || {};\r\n (this._callbacks['$' + event] = this._callbacks['$' + event] || [])\r\n .push(fn);\r\n return this;\r\n};\r\n\r\n/**\r\n * Adds an `event` listener that will be invoked a single\r\n * time then automatically removed.\r\n *\r\n * @param {String} event\r\n * @param {Function} fn\r\n * @return {Emitter}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.once = function(event, fn){\r\n function on() {\r\n this.off(event, on);\r\n fn.apply(this, arguments);\r\n }\r\n\r\n on.fn = fn;\r\n this.on(event, on);\r\n return this;\r\n};\r\n\r\n/**\r\n * Remove the given callback for `event` or all\r\n * registered callbacks.\r\n *\r\n * @param {String} event\r\n * @param {Function} fn\r\n * @return {Emitter}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.off =\r\nEmitter.prototype.removeListener =\r\nEmitter.prototype.removeAllListeners =\r\nEmitter.prototype.removeEventListener = function(event, fn){\r\n this._callbacks = this._callbacks || {};\r\n\r\n // all\r\n if (0 == arguments.length) {\r\n this._callbacks = {};\r\n return this;\r\n }\r\n\r\n // specific event\r\n var callbacks = this._callbacks['$' + event];\r\n if (!callbacks) return this;\r\n\r\n // remove all handlers\r\n if (1 == arguments.length) {\r\n delete this._callbacks['$' + event];\r\n return this;\r\n }\r\n\r\n // remove specific handler\r\n var cb;\r\n for (var i = 0; i < callbacks.length; i++) {\r\n cb = callbacks[i];\r\n if (cb === fn || cb.fn === fn) {\r\n callbacks.splice(i, 1);\r\n break;\r\n }\r\n }\r\n return this;\r\n};\r\n\r\n/**\r\n * Emit `event` with the given args.\r\n *\r\n * @param {String} event\r\n * @param {Mixed} ...\r\n * @return {Emitter}\r\n */\r\n\r\nEmitter.prototype.emit = function(event){\r\n this._callbacks = this._callbacks || {};\r\n var args = [].slice.call(arguments, 1)\r\n , callbacks = this._callbacks['$' + event];\r\n\r\n if (callbacks) {\r\n callbacks = callbacks.slice(0);\r\n for (var i = 0, len = callbacks.length; i < len; ++i) {\r\n callbacks[i].apply(this, args);\r\n }\r\n }\r\n\r\n return this;\r\n};\r\n\r\n/**\r\n * Return array of callbacks for `event`.\r\n *\r\n * @param {String} event\r\n * @return {Array}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.listeners = function(event){\r\n this._callbacks = this._callbacks || {};\r\n return this._callbacks['$' + event] || [];\r\n};\r\n\r\n/**\r\n * Check if this emitter has `event` handlers.\r\n *\r\n * @param {String} event\r\n * @return {Boolean}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.hasListeners = function(event){\r\n return !! this.listeners(event).length;\r\n};\r\n\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(global) {/**\n * Module dependencies.\n */\n\nvar keys = __webpack_require__(46);\nvar hasBinary = __webpack_require__(16);\nvar sliceBuffer = __webpack_require__(47);\nvar after = __webpack_require__(48);\nvar utf8 = __webpack_require__(49);\n\nvar base64encoder;\nif (global && global.ArrayBuffer) {\n base64encoder = __webpack_require__(51);\n}\n\n/**\n * Check if we are running an android browser. That requires us to use\n * ArrayBuffer with polling transports...\n *\n * http://ghinda.net/jpeg-blob-ajax-android/\n */\n\nvar isAndroid = typeof navigator !== 'undefined' && /Android/i.test(navigator.userAgent);\n\n/**\n * Check if we are running in PhantomJS.\n * Uploading a Blob with PhantomJS does not work correctly, as reported here:\n * https://github.com/ariya/phantomjs/issues/11395\n * @type boolean\n */\nvar isPhantomJS = typeof navigator !== 'undefined' && /PhantomJS/i.test(navigator.userAgent);\n\n/**\n * When true, avoids using Blobs to encode payloads.\n * @type boolean\n */\nvar dontSendBlobs = isAndroid || isPhantomJS;\n\n/**\n * Current protocol version.\n */\n\nexports.protocol = 3;\n\n/**\n * Packet types.\n */\n\nvar packets = exports.packets = {\n open: 0 // non-ws\n , close: 1 // non-ws\n , ping: 2\n , pong: 3\n , message: 4\n , upgrade: 5\n , noop: 6\n};\n\nvar packetslist = keys(packets);\n\n/**\n * Premade error packet.\n */\n\nvar err = { type: 'error', data: 'parser error' };\n\n/**\n * Create a blob api even for blob builder when vendor prefixes exist\n */\n\nvar Blob = __webpack_require__(52);\n\n/**\n * Encodes a packet.\n *\n * <packet type id> [ <data> ]\n *\n * Example:\n *\n * 5hello world\n * 3\n * 4\n *\n * Binary is encoded in an identical principle\n *\n * @api private\n */\n\nexports.encodePacket = function (packet, supportsBinary, utf8encode, callback) {\n if (typeof supportsBinary === 'function') {\n callback = supportsBinary;\n supportsBinary = false;\n }\n\n if (typeof utf8encode === 'function') {\n callback = utf8encode;\n utf8encode = null;\n }\n\n var data = (packet.data === undefined)\n ? undefined\n : packet.data.buffer || packet.data;\n\n if (global.ArrayBuffer && data instanceof ArrayBuffer) {\n return encodeArrayBuffer(packet, supportsBinary, callback);\n } else if (Blob && data instanceof global.Blob) {\n return encodeBlob(packet, supportsBinary, callback);\n }\n\n // might be an object with { base64: true, data: dataAsBase64String }\n if (data && data.base64) {\n return encodeBase64Object(packet, callback);\n }\n\n // Sending data as a utf-8 string\n var encoded = packets[packet.type];\n\n // data fragment is optional\n if (undefined !== packet.data) {\n encoded += utf8encode ? utf8.encode(String(packet.data), { strict: false }) : String(packet.data);\n }\n\n return callback('' + encoded);\n\n};\n\nfunction encodeBase64Object(packet, callback) {\n // packet data is an object { base64: true, data: dataAsBase64String }\n var message = 'b' + exports.packets[packet.type] + packet.data.data;\n return callback(message);\n}\n\n/**\n * Encode packet helpers for binary types\n */\n\nfunction encodeArrayBuffer(packet, supportsBinary, callback) {\n if (!supportsBinary) {\n return exports.encodeBase64Packet(packet, callback);\n }\n\n var data = packet.data;\n var contentArray = new Uint8Array(data);\n var resultBuffer = new Uint8Array(1 + data.byteLength);\n\n resultBuffer[0] = packets[packet.type];\n for (var i = 0; i < contentArray.length; i++) {\n resultBuffer[i+1] = contentArray[i];\n }\n\n return callback(resultBuffer.buffer);\n}\n\nfunction encodeBlobAsArrayBuffer(packet, supportsBinary, callback) {\n if (!supportsBinary) {\n return exports.encodeBase64Packet(packet, callback);\n }\n\n var fr = new FileReader();\n fr.onload = function() {\n packet.data = fr.result;\n exports.encodePacket(packet, supportsBinary, true, callback);\n };\n return fr.readAsArrayBuffer(packet.data);\n}\n\nfunction encodeBlob(packet, supportsBinary, callback) {\n if (!supportsBinary) {\n return exports.encodeBase64Packet(packet, callback);\n }\n\n if (dontSendBlobs) {\n return encodeBlobAsArrayBuffer(packet, supportsBinary, callback);\n }\n\n var length = new Uint8Array(1);\n length[0] = packets[packet.type];\n var blob = new Blob([length.buffer, packet.data]);\n\n return callback(blob);\n}\n\n/**\n * Encodes a packet with binary data in a base64 string\n *\n * @param {Object} packet, has `type` and `data`\n * @return {String} base64 encoded message\n */\n\nexports.encodeBase64Packet = function(packet, callback) {\n var message = 'b' + exports.packets[packet.type];\n if (Blob && packet.data instanceof global.Blob) {\n var fr = new FileReader();\n fr.onload = function() {\n var b64 = fr.result.split(',')[1];\n callback(message + b64);\n };\n return fr.readAsDataURL(packet.data);\n }\n\n var b64data;\n try {\n b64data = String.fromCharCode.apply(null, new Uint8Array(packet.data));\n } catch (e) {\n // iPhone Safari doesn't let you apply with typed arrays\n var typed = new Uint8Array(packet.data);\n var basic = new Array(typed.length);\n for (var i = 0; i < typed.length; i++) {\n basic[i] = typed[i];\n }\n b64data = String.fromCharCode.apply(null, basic);\n }\n message += global.btoa(b64data);\n return callback(message);\n};\n\n/**\n * Decodes a packet. Changes format to Blob if requested.\n *\n * @return {Object} with `type` and `data` (if any)\n * @api private\n */\n\nexports.decodePacket = function (data, binaryType, utf8decode) {\n if (data === undefined) {\n return err;\n }\n // String data\n if (typeof data === 'string') {\n if (data.charAt(0) === 'b') {\n return exports.decodeBase64Packet(data.substr(1), binaryType);\n }\n\n if (utf8decode) {\n data = tryDecode(data);\n if (data === false) {\n return err;\n }\n }\n var type = data.charAt(0);\n\n if (Number(type) != type || !packetslist[type]) {\n return err;\n }\n\n if (data.length > 1) {\n return { type: packetslist[type], data: data.substring(1) };\n } else {\n return { type: packetslist[type] };\n }\n }\n\n var asArray = new Uint8Array(data);\n var type = asArray[0];\n var rest = sliceBuffer(data, 1);\n if (Blob && binaryType === 'blob') {\n rest = new Blob([rest]);\n }\n return { type: packetslist[type], data: rest };\n};\n\nfunction tryDecode(data) {\n try {\n data = utf8.decode(data, { strict: false });\n } catch (e) {\n return false;\n }\n return data;\n}\n\n/**\n * Decodes a packet encoded in a base64 string\n *\n * @param {String} base64 encoded message\n * @return {Object} with `type` and `data` (if any)\n */\n\nexports.decodeBase64Packet = function(msg, binaryType) {\n var type = packetslist[msg.charAt(0)];\n if (!base64encoder) {\n return { type: type, data: { base64: true, data: msg.substr(1) } };\n }\n\n var data = base64encoder.decode(msg.substr(1));\n\n if (binaryType === 'blob' && Blob) {\n data = new Blob([data]);\n }\n\n return { type: type, data: data };\n};\n\n/**\n * Encodes multiple messages (payload).\n *\n * <length>:data\n *\n * Example:\n *\n * 11:hello world2:hi\n *\n * If any contents are binary, they will be encoded as base64 strings. Base64\n * encoded strings are marked with a b before the length specifier\n *\n * @param {Array} packets\n * @api private\n */\n\nexports.encodePayload = function (packets, supportsBinary, callback) {\n if (typeof supportsBinary === 'function') {\n callback = supportsBinary;\n supportsBinary = null;\n }\n\n var isBinary = hasBinary(packets);\n\n if (supportsBinary && isBinary) {\n if (Blob && !dontSendBlobs) {\n return exports.encodePayloadAsBlob(packets, callback);\n }\n\n return exports.encodePayloadAsArrayBuffer(packets, callback);\n }\n\n if (!packets.length) {\n return callback('0:');\n }\n\n function setLengthHeader(message) {\n return message.length + ':' + message;\n }\n\n function encodeOne(packet, doneCallback) {\n exports.encodePacket(packet, !isBinary ? false : supportsBinary, false, function(message) {\n doneCallback(null, setLengthHeader(message));\n });\n }\n\n map(packets, encodeOne, function(err, results) {\n return callback(results.join(''));\n });\n};\n\n/**\n * Async array map using after\n */\n\nfunction map(ary, each, done) {\n var result = new Array(ary.length);\n var next = after(ary.length, done);\n\n var eachWithIndex = function(i, el, cb) {\n each(el, function(error, msg) {\n result[i] = msg;\n cb(error, result);\n });\n };\n\n for (var i = 0; i < ary.length; i++) {\n eachWithIndex(i, ary[i], next);\n }\n}\n\n/*\n * Decodes data when a payload is maybe expected. Possible binary contents are\n * decoded from their base64 representation\n *\n * @param {String} data, callback method\n * @api public\n */\n\nexports.decodePayload = function (data, binaryType, callback) {\n if (typeof data !== 'string') {\n return exports.decodePayloadAsBinary(data, binaryType, callback);\n }\n\n if (typeof binaryType === 'function') {\n callback = binaryType;\n binaryType = null;\n }\n\n var packet;\n if (data === '') {\n // parser error - ignoring payload\n return callback(err, 0, 1);\n }\n\n var length = '', n, msg;\n\n for (var i = 0, l = data.length; i < l; i++) {\n var chr = data.charAt(i);\n\n if (chr !== ':') {\n length += chr;\n continue;\n }\n\n if (length === '' || (length != (n = Number(length)))) {\n // parser error - ignoring payload\n return callback(err, 0, 1);\n }\n\n msg = data.substr(i + 1, n);\n\n if (length != msg.length) {\n // parser error - ignoring payload\n return callback(err, 0, 1);\n }\n\n if (msg.length) {\n packet = exports.decodePacket(msg, binaryType, false);\n\n if (err.type === packet.type && err.data === packet.data) {\n // parser error in individual packet - ignoring payload\n return callback(err, 0, 1);\n }\n\n var ret = callback(packet, i + n, l);\n if (false === ret) return;\n }\n\n // advance cursor\n i += n;\n length = '';\n }\n\n if (length !== '') {\n // parser error - ignoring payload\n return callback(err, 0, 1);\n }\n\n};\n\n/**\n * Encodes multiple messages (payload) as binary.\n *\n * <1 = binary, 0 = string><number from 0-9><number from 0-9>[...]<number\n * 255><data>\n *\n * Example:\n * 1 3 255 1 2 3, if the binary contents are interpreted as 8 bit integers\n *\n * @param {Array} packets\n * @return {ArrayBuffer} encoded payload\n * @api private\n */\n\nexports.encodePayloadAsArrayBuffer = function(packets, callback) {\n if (!packets.length) {\n return callback(new ArrayBuffer(0));\n }\n\n function encodeOne(packet, doneCallback) {\n exports.encodePacket(packet, true, true, function(data) {\n return doneCallback(null, data);\n });\n }\n\n map(packets, encodeOne, function(err, encodedPackets) {\n var totalLength = encodedPackets.reduce(function(acc, p) {\n var len;\n if (typeof p === 'string'){\n len = p.length;\n } else {\n len = p.byteLength;\n }\n return acc + len.toString().length + len + 2; // string/binary identifier + separator = 2\n }, 0);\n\n var resultArray = new Uint8Array(totalLength);\n\n var bufferIndex = 0;\n encodedPackets.forEach(function(p) {\n var isString = typeof p === 'string';\n var ab = p;\n if (isString) {\n var view = new Uint8Array(p.length);\n for (var i = 0; i < p.length; i++) {\n view[i] = p.charCodeAt(i);\n }\n ab = view.buffer;\n }\n\n if (isString) { // not true binary\n resultArray[bufferIndex++] = 0;\n } else { // true binary\n resultArray[bufferIndex++] = 1;\n }\n\n var lenStr = ab.byteLength.toString();\n for (var i = 0; i < lenStr.length; i++) {\n resultArray[bufferIndex++] = parseInt(lenStr[i]);\n }\n resultArray[bufferIndex++] = 255;\n\n var view = new Uint8Array(ab);\n for (var i = 0; i < view.length; i++) {\n resultArray[bufferIndex++] = view[i];\n }\n });\n\n return callback(resultArray.buffer);\n });\n};\n\n/**\n * Encode as Blob\n */\n\nexports.encodePayloadAsBlob = function(packets, callback) {\n function encodeOne(packet, doneCallback) {\n exports.encodePacket(packet, true, true, function(encoded) {\n var binaryIdentifier = new Uint8Array(1);\n binaryIdentifier[0] = 1;\n if (typeof encoded === 'string') {\n var view = new Uint8Array(encoded.length);\n for (var i = 0; i < encoded.length; i++) {\n view[i] = encoded.charCodeAt(i);\n }\n encoded = view.buffer;\n binaryIdentifier[0] = 0;\n }\n\n var len = (encoded instanceof ArrayBuffer)\n ? encoded.byteLength\n : encoded.size;\n\n var lenStr = len.toString();\n var lengthAry = new Uint8Array(lenStr.length + 1);\n for (var i = 0; i < lenStr.length; i++) {\n lengthAry[i] = parseInt(lenStr[i]);\n }\n lengthAry[lenStr.length] = 255;\n\n if (Blob) {\n var blob = new Blob([binaryIdentifier.buffer, lengthAry.buffer, encoded]);\n doneCallback(null, blob);\n }\n });\n }\n\n map(packets, encodeOne, function(err, results) {\n return callback(new Blob(results));\n });\n};\n\n/*\n * Decodes data when a payload is maybe expected. Strings are decoded by\n * interpreting each byte as a key code for entries marked to start with 0. See\n * description of encodePayloadAsBinary\n *\n * @param {ArrayBuffer} data, callback method\n * @api public\n */\n\nexports.decodePayloadAsBinary = function (data, binaryType, callback) {\n if (typeof binaryType === 'function') {\n callback = binaryType;\n binaryType = null;\n }\n\n var bufferTail = data;\n var buffers = [];\n\n while (bufferTail.byteLength > 0) {\n var tailArray = new Uint8Array(bufferTail);\n var isString = tailArray[0] === 0;\n var msgLength = '';\n\n for (var i = 1; ; i++) {\n if (tailArray[i] === 255) break;\n\n // 310 = char length of Number.MAX_VALUE\n if (msgLength.length > 310) {\n return callback(err, 0, 1);\n }\n\n msgLength += tailArray[i];\n }\n\n bufferTail = sliceBuffer(bufferTail, 2 + msgLength.length);\n msgLength = parseInt(msgLength);\n\n var msg = sliceBuffer(bufferTail, 0, msgLength);\n if (isString) {\n try {\n msg = String.fromCharCode.apply(null, new Uint8Array(msg));\n } catch (e) {\n // iPhone Safari doesn't let you apply to typed arrays\n var typed = new Uint8Array(msg);\n msg = '';\n for (var i = 0; i < typed.length; i++) {\n msg += String.fromCharCode(typed[i]);\n }\n }\n }\n\n buffers.push(msg);\n bufferTail = sliceBuffer(bufferTail, msgLength);\n }\n\n var total = buffers.length;\n buffers.forEach(function(buffer, i) {\n callback(exports.decodePacket(buffer, binaryType, true), i, total);\n });\n};\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0)))\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar utils = exports;\r\n/**\r\n * @returns {window}\r\n */\r\nutils.getWindow = function () {\r\n return window;\r\n};\r\n/**\r\n * @returns {HTMLDocument}\r\n */\r\nutils.getDocument = function () {\r\n return document;\r\n};\r\n/**\r\n * @returns {HTMLElement}\r\n */\r\nutils.getBody = function () {\r\n return document.getElementsByTagName(\"body\")[0];\r\n};\r\n/**\r\n * Get the current x/y position crossbow\r\n * @returns {{x: *, y: *}}\r\n */\r\nutils.getBrowserScrollPosition = function () {\r\n var $window = exports.getWindow();\r\n var $document = exports.getDocument();\r\n var scrollX;\r\n var scrollY;\r\n var dElement = $document.documentElement;\r\n var dBody = $document.body;\r\n if ($window.pageYOffset !== undefined) {\r\n scrollX = $window.pageXOffset;\r\n scrollY = $window.pageYOffset;\r\n }\r\n else {\r\n scrollX = dElement.scrollLeft || dBody.scrollLeft || 0;\r\n scrollY = dElement.scrollTop || dBody.scrollTop || 0;\r\n }\r\n return {\r\n x: scrollX,\r\n y: scrollY\r\n };\r\n};\r\n/**\r\n * @returns {{x: number, y: number}}\r\n */\r\nutils.getScrollSpace = function () {\r\n var $document = exports.getDocument();\r\n var dElement = $document.documentElement;\r\n var dBody = $document.body;\r\n return {\r\n x: dBody.scrollHeight - dElement.clientWidth,\r\n y: dBody.scrollHeight - dElement.clientHeight\r\n };\r\n};\r\n/**\r\n * Saves scroll position into cookies\r\n */\r\nutils.saveScrollPosition = function () {\r\n var pos = utils.getBrowserScrollPosition();\r\n pos = [pos.x, pos.y];\r\n utils.getDocument.cookie = \"bs_scroll_pos=\" + pos.join(\",\");\r\n};\r\n/**\r\n * Restores scroll position from cookies\r\n */\r\nutils.restoreScrollPosition = function () {\r\n var pos = utils\r\n .getDocument()\r\n .cookie.replace(/(?:(?:^|.*;\\s*)bs_scroll_pos\\s*\\=\\s*([^;]*).*$)|^.*$/, \"$1\")\r\n .split(\",\");\r\n utils.getWindow().scrollTo(pos[0], pos[1]);\r\n};\r\n/**\r\n * @param tagName\r\n * @param elem\r\n * @returns {*|number}\r\n */\r\nutils.getElementIndex = function (tagName, elem) {\r\n var allElems = utils.getDocument().getElementsByTagName(tagName);\r\n return Array.prototype.indexOf.call(allElems, elem);\r\n};\r\n/**\r\n * Force Change event on radio & checkboxes (IE)\r\n */\r\nutils.forceChange = function (elem) {\r\n elem.blur();\r\n elem.focus();\r\n};\r\n/**\r\n * @param elem\r\n * @returns {{tagName: (elem.tagName|*), index: *}}\r\n */\r\nutils.getElementData = function (elem) {\r\n var tagName = elem.tagName;\r\n var index = utils.getElementIndex(tagName, elem);\r\n return {\r\n tagName: tagName,\r\n index: index\r\n };\r\n};\r\n/**\r\n * @param {string} tagName\r\n * @param {number} index\r\n */\r\nutils.getSingleElement = function (tagName, index) {\r\n var elems = utils.getDocument().getElementsByTagName(tagName);\r\n return elems[index];\r\n};\r\n/**\r\n * Get the body element\r\n */\r\nutils.getBody = function () {\r\n return utils.getDocument().getElementsByTagName(\"body\")[0];\r\n};\r\n/**\r\n * @param {{x: number, y: number}} pos\r\n */\r\nutils.setScroll = function (pos) {\r\n utils.getWindow().scrollTo(pos.x, pos.y);\r\n};\r\n/**\r\n * Hard reload\r\n */\r\nutils.reloadBrowser = function () {\r\n utils.getWindow().location.reload(true);\r\n};\r\n/**\r\n * Foreach polyfill\r\n * @param coll\r\n * @param fn\r\n */\r\nutils.forEach = function (coll, fn) {\r\n for (var i = 0, n = coll.length; i < n; i += 1) {\r\n fn(coll[i], i, coll);\r\n }\r\n};\r\n/**\r\n * Are we dealing with old IE?\r\n * @returns {boolean}\r\n */\r\nutils.isOldIe = function () {\r\n return typeof utils.getWindow().attachEvent !== \"undefined\";\r\n};\r\n/**\r\n * Split the URL information\r\n * @returns {object}\r\n */\r\nutils.getLocation = function (url) {\r\n var location = utils.getDocument().createElement(\"a\");\r\n location.href = url;\r\n if (location.host === \"\") {\r\n location.href = location.href;\r\n }\r\n return location;\r\n};\r\n\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports) {\n\n/**\r\n * Compiles a querystring\r\n * Returns string representation of the object\r\n *\r\n * @param {Object}\r\n * @api private\r\n */\r\n\r\nexports.encode = function (obj) {\r\n var str = '';\r\n\r\n for (var i in obj) {\r\n if (obj.hasOwnProperty(i)) {\r\n if (str.length) str += '&';\r\n str += encodeURIComponent(i) + '=' + encodeURIComponent(obj[i]);\r\n }\r\n }\r\n\r\n return str;\r\n};\r\n\r\n/**\r\n * Parses a simple querystring into an object\r\n *\r\n * @param {String} qs\r\n * @api private\r\n */\r\n\r\nexports.decode = function(qs){\r\n var qry = {};\r\n var pairs = qs.split('&');\r\n for (var i = 0, l = pairs.length; i < l; i++) {\r\n var pair = pairs[i].split('=');\r\n qry[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1]);\r\n }\r\n return qry;\r\n};\r\n\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports) {\n\n\nmodule.exports = function(a, b){\n var fn = function(){};\n fn.prototype = b.prototype;\n a.prototype = new fn;\n a.prototype.constructor = a;\n};\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nexports.events = {};\r\n/**\r\n * @param name\r\n * @param data\r\n */\r\nexports.emit = function (name, data) {\r\n var event = exports.events[name];\r\n var listeners;\r\n if (event && event.listeners) {\r\n listeners = event.listeners;\r\n for (var i = 0, n = listeners.length; i < n; i += 1) {\r\n listeners[i](data);\r\n }\r\n }\r\n};\r\n/**\r\n * @param name\r\n * @param func\r\n */\r\nexports.on = function (name, func) {\r\n var events = exports.events;\r\n if (!events[name]) {\r\n events[name] = {\r\n listeners: [func]\r\n };\r\n }\r\n else {\r\n events[name].listeners.push(func);\r\n }\r\n};\r\n\n\n/***/ }),\n/* 8 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/**\n * Module dependencies.\n */\n\nvar debug = __webpack_require__(1)('socket.io-parser');\nvar Emitter = __webpack_require__(2);\nvar hasBin = __webpack_require__(16);\nvar binary = __webpack_require__(40);\nvar isBuf = __webpack_require__(17);\n\n/**\n * Protocol version.\n *\n * @api public\n */\n\nexports.protocol = 4;\n\n/**\n * Packet types.\n *\n * @api public\n */\n\nexports.types = [\n 'CONNECT',\n 'DISCONNECT',\n 'EVENT',\n 'ACK',\n 'ERROR',\n 'BINARY_EVENT',\n 'BINARY_ACK'\n];\n\n/**\n * Packet type `connect`.\n *\n * @api public\n */\n\nexports.CONNECT = 0;\n\n/**\n * Packet type `disconnect`.\n *\n * @api public\n */\n\nexports.DISCONNECT = 1;\n\n/**\n * Packet type `event`.\n *\n * @api public\n */\n\nexports.EVENT = 2;\n\n/**\n * Packet type `ack`.\n *\n * @api public\n */\n\nexports.ACK = 3;\n\n/**\n * Packet type `error`.\n *\n * @api public\n */\n\nexports.ERROR = 4;\n\n/**\n * Packet type 'binary event'\n *\n * @api public\n */\n\nexports.BINARY_EVENT = 5;\n\n/**\n * Packet type `binary ack`. For acks with binary arguments.\n *\n * @api public\n */\n\nexports.BINARY_ACK = 6;\n\n/**\n * Encoder constructor.\n *\n * @api public\n */\n\nexports.Encoder = Encoder;\n\n/**\n * Decoder constructor.\n *\n * @api public\n */\n\nexports.Decoder = Decoder;\n\n/**\n * A socket.io Encoder instance\n *\n * @api public\n */\n\nfunction Encoder() {}\n\n/**\n * Encode a packet as a single string if non-binary, or as a\n * buffer sequence, depending on packet type.\n *\n * @param {Object} obj - packet object\n * @param {Function} callback - function to handle encodings (likely engine.write)\n * @return Calls callback with Array of encodings\n * @api public\n */\n\nEncoder.prototype.encode = function(obj, callback){\n if ((obj.type === exports.EVENT || obj.type === exports.ACK) && hasBin(obj.data)) {\n obj.type = obj.type === exports.EVENT ? exports.BINARY_EVENT : exports.BINARY_ACK;\n }\n\n debug('encoding packet %j', obj);\n\n if (exports.BINARY_EVENT === obj.type || exports.BINARY_ACK === obj.type) {\n encodeAsBinary(obj, callback);\n }\n else {\n var encoding = encodeAsString(obj);\n callback([encoding]);\n }\n};\n\n/**\n * Encode packet as string.\n *\n * @param {Object} packet\n * @return {String} encoded\n * @api private\n */\n\nfunction encodeAsString(obj) {\n\n // first is type\n var str = '' + obj.type;\n\n // attachments if we have them\n if (exports.BINARY_EVENT === obj.type || exports.BINARY_ACK === obj.type) {\n str += obj.attachments + '-';\n }\n\n // if we have a namespace other than `/`\n // we append it followed by a comma `,`\n if (obj.nsp && '/' !== obj.nsp) {\n str += obj.nsp + ',';\n }\n\n // immediately followed by the id\n if (null != obj.id) {\n str += obj.id;\n }\n\n // json data\n if (null != obj.data) {\n str += JSON.stringify(obj.data);\n }\n\n debug('encoded %j as %s', obj, str);\n return str;\n}\n\n/**\n * Encode packet as 'buffer sequence' by removing blobs, and\n * deconstructing packet into object with placeholders and\n * a list of buffers.\n *\n * @param {Object} packet\n * @return {Buffer} encoded\n * @api private\n */\n\nfunction encodeAsBinary(obj, callback) {\n\n function writeEncoding(bloblessData) {\n var deconstruction = binary.deconstructPacket(bloblessData);\n var pack = encodeAsString(deconstruction.packet);\n var buffers = deconstruction.buffers;\n\n buffers.unshift(pack); // add packet info to beginning of data list\n callback(buffers); // write all the buffers\n }\n\n binary.removeBlobs(obj, writeEncoding);\n}\n\n/**\n * A socket.io Decoder instance\n *\n * @return {Object} decoder\n * @api public\n */\n\nfunction Decoder() {\n this.reconstructor = null;\n}\n\n/**\n * Mix in `Emitter` with Decoder.\n */\n\nEmitter(Decoder.prototype);\n\n/**\n * Decodes an ecoded packet string into packet JSON.\n *\n * @param {String} obj - encoded packet\n * @return {Object} packet\n * @api public\n */\n\nDecoder.prototype.add = function(obj) {\n var packet;\n if (typeof obj === 'string') {\n packet = decodeString(obj);\n if (exports.BINARY_EVENT === packet.type || exports.BINARY_ACK === packet.type) { // binary packet's json\n this.reconstructor = new BinaryReconstructor(packet);\n\n // no attachments, labeled binary but no binary data to follow\n if (this.reconstructor.reconPack.attachments === 0) {\n this.emit('decoded', packet);\n }\n } else { // non-binary full packet\n this.emit('decoded', packet);\n }\n }\n else if (isBuf(obj) || obj.base64) { // raw binary data\n if (!this.reconstructor) {\n throw new Error('got binary data when not reconstructing a packet');\n } else {\n packet = this.reconstructor.takeBinaryData(obj);\n if (packet) { // received final buffer\n this.reconstructor = null;\n this.emit('decoded', packet);\n }\n }\n }\n else {\n throw new Error('Unknown type: ' + obj);\n }\n};\n\n/**\n * Decode a packet String (JSON data)\n *\n * @param {String} str\n * @return {Object} packet\n * @api private\n */\n\nfunction decodeString(str) {\n var i = 0;\n // look up type\n var p = {\n type: Number(str.charAt(0))\n };\n\n if (null == exports.types[p.type]) return error();\n\n // look up attachments if type binary\n if (exports.BINARY_EVENT === p.type || exports.BINARY_ACK === p.type) {\n var buf = '';\n while (str.charAt(++i) !== '-') {\n buf += str.charAt(i);\n if (i == str.length) break;\n }\n if (buf != Number(buf) || str.charAt(i) !== '-') {\n throw new Error('Illegal attachments');\n }\n p.attachments = Number(buf);\n }\n\n // look up namespace (if any)\n if ('/' === str.charAt(i + 1)) {\n p.nsp = '';\n while (++i) {\n var c = str.charAt(i);\n if (',' === c) break;\n p.nsp += c;\n if (i === str.length) break;\n }\n } else {\n p.nsp = '/';\n }\n\n // look up id\n var next = str.charAt(i + 1);\n if ('' !== next && Number(next) == next) {\n p.id = '';\n while (++i) {\n var c = str.charAt(i);\n if (null == c || Number(c) != c) {\n --i;\n break;\n }\n p.id += str.charAt(i);\n if (i === str.length) break;\n }\n p.id = Number(p.id);\n }\n\n // look up json data\n if (str.charAt(++i)) {\n p = tryParse(p, str.substr(i));\n }\n\n debug('decoded %s as %j', str, p);\n return p;\n}\n\nfunction tryParse(p, str) {\n try {\n p.data = JSON.parse(str);\n } catch(e){\n return error();\n }\n return p; \n}\n\n/**\n * Deallocates a parser's resources\n *\n * @api public\n */\n\nDecoder.prototype.destroy = function() {\n if (this.reconstructor) {\n this.reconstructor.finishedReconstruction();\n }\n};\n\n/**\n * A manager of a binary event's 'buffer sequence'. Should\n * be constructed whenever a packet of type BINARY_EVENT is\n * decoded.\n *\n * @param {Object} packet\n * @return {BinaryReconstructor} initialized reconstructor\n * @api private\n */\n\nfunction BinaryReconstructor(packet) {\n this.reconPack = packet;\n this.buffers = [];\n}\n\n/**\n * Method to be called when binary data received from connection\n * after a BINARY_EVENT packet.\n *\n * @param {Buffer | ArrayBuffer} binData - the raw binary data received\n * @return {null | Object} returns null if more binary data is expected or\n * a reconstructed packet object if all buffers have been received.\n * @api private\n */\n\nBinaryReconstructor.prototype.takeBinaryData = function(binData) {\n this.buffers.push(binData);\n if (this.buffers.length === this.reconPack.attachments) { // done with buffer list\n var packet = binary.reconstructPacket(this.reconPack, this.buffers);\n this.finishedReconstruction();\n return packet;\n }\n return null;\n};\n\n/**\n * Cleans up binary packet reconstruction variables.\n *\n * @api private\n */\n\nBinaryReconstructor.prototype.finishedReconstruction = function() {\n this.reconPack = null;\n this.buffers = [];\n};\n\nfunction error() {\n return {\n type: exports.ERROR,\n data: 'parser error'\n };\n}\n\n\n/***/ }),\n/* 9 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(global) {// browser shim for xmlhttprequest module\n\nvar hasCORS = __webpack_require__(44);\n\nmodule.exports = function (opts) {\n var xdomain = opts.xdomain;\n\n // scheme must be same when usign XDomainRequest\n // http://blogs.msdn.com/b/ieinternals/archive/2010/05/13/xdomainrequest-restrictions-limitations-and-workarounds.aspx\n var xscheme = opts.xscheme;\n\n // XDomainRequest has a flow of not sending cookie, therefore it should be disabled as a default.\n // https://github.com/Automattic/engine.io-client/pull/217\n var enablesXDR = opts.enablesXDR;\n\n // XMLHttpRequest can be disabled on IE\n try {\n if ('undefined' !== typeof XMLHttpRequest && (!xdomain || hasCORS)) {\n return new XMLHttpRequest();\n }\n } catch (e) { }\n\n // Use XDomainRequest for IE8 if enablesXDR is true\n // because loading bar keeps flashing when using jsonp-polling\n // https://github.com/yujiosaka/socke.io-ie8-loading-example\n try {\n if ('undefined' !== typeof XDomainRequest && !xscheme && enablesXDR) {\n return new XDomainRequest();\n }\n } catch (e) { }\n\n if (!xdomain) {\n try {\n return new global[['Active'].concat('Object').join('X')]('Microsoft.XMLHTTP');\n } catch (e) { }\n }\n};\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0)))\n\n/***/ }),\n/* 10 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/**\n * Module dependencies.\n */\n\nvar parser = __webpack_require__(3);\nvar Emitter = __webpack_require__(2);\n\n/**\n * Module exports.\n */\n\nmodule.exports = Transport;\n\n/**\n * Transport abstract constructor.\n *\n * @param {Object} options.\n * @api private\n */\n\nfunction Transport (opts) {\n this.path = opts.path;\n this.hostname = opts.hostname;\n this.port = opts.port;\n this.secure = opts.secure;\n this.query = opts.query;\n this.timestampParam = opts.timestampParam;\n this.timestampRequests = opts.timestampRequests;\n this.readyState = '';\n this.agent = opts.agent || false;\n this.socket = opts.socket;\n this.enablesXDR = opts.enablesXDR;\n\n // SSL options for Node.js client\n this.pfx = opts.pfx;\n this.key = opts.key;\n this.passphrase = opts.passphrase;\n this.cert = opts.cert;\n this.ca = opts.ca;\n this.ciphers = opts.ciphers;\n this.rejectUnauthorized = opts.rejectUnauthorized;\n this.forceNode = opts.forceNode;\n\n // other options for Node.js client\n this.extraHeaders = opts.extraHeaders;\n this.localAddress = opts.localAddress;\n}\n\n/**\n * Mix in `Emitter`.\n */\n\nEmitter(Transport.prototype);\n\n/**\n * Emits an error.\n *\n * @param {String} str\n * @return {Transport} for chaining\n * @api public\n */\n\nTransport.prototype.onError = function (msg, desc) {\n var err = new Error(msg);\n err.type = 'TransportError';\n err.description = desc;\n this.emit('error', err);\n return this;\n};\n\n/**\n * Opens the transport.\n *\n * @api public\n */\n\nTransport.prototype.open = function () {\n if ('closed' === this.readyState || '' === this.readyState) {\n this.readyState = 'opening';\n this.doOpen();\n }\n\n return this;\n};\n\n/**\n * Closes the transport.\n *\n * @api private\n */\n\nTransport.prototype.close = function () {\n if ('opening' === this.readyState || 'open' === this.readyState) {\n this.doClose();\n this.onClose();\n }\n\n return this;\n};\n\n/**\n * Sends multiple packets.\n *\n * @param {Array} packets\n * @api private\n */\n\nTransport.prototype.send = function (packets) {\n if ('open' === this.readyState) {\n this.write(packets);\n } else {\n throw new Error('Transport not open');\n }\n};\n\n/**\n * Called upon open\n *\n * @api private\n */\n\nTransport.prototype.onOpen = function () {\n this.readyState = 'open';\n this.writable = true;\n this.emit('open');\n};\n\n/**\n * Called with data.\n *\n * @param {String} data\n * @api private\n */\n\nTransport.prototype.onData = function (data) {\n var packet = parser.decodePacket(data, this.socket.binaryType);\n this.onPacket(packet);\n};\n\n/**\n * Called with a decoded packet.\n */\n\nTransport.prototype.onPacket = function (packet) {\n this.emit('packet', packet);\n};\n\n/**\n * Called upon close.\n *\n * @api private\n */\n\nTransport.prototype.onClose = function () {\n this.readyState = 'closed';\n this.emit('close');\n};\n\n\n/***/ }),\n/* 11 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\n/**\r\n * This is the plugin for syncing scroll between devices\r\n * @type {string}\r\n */\r\nvar WINDOW_EVENT_NAME = \"scroll\";\r\nvar ELEMENT_EVENT_NAME = \"scroll:element\";\r\nvar OPT_PATH = \"ghostMode.scroll\";\r\nvar utils;\r\nexports.canEmitEvents = true;\r\n/**\r\n * @param {BrowserSync} bs\r\n * @param eventManager\r\n */\r\nexports.init = function (bs, eventManager) {\r\n utils = bs.utils;\r\n var opts = bs.options;\r\n /**\r\n * Window Scroll events\r\n */\r\n eventManager.addEvent(window, WINDOW_EVENT_NAME, exports.browserEvent(bs));\r\n bs.socket.on(WINDOW_EVENT_NAME, exports.socketEvent(bs));\r\n /**\r\n * element Scroll Events\r\n */\r\n var cache = {};\r\n addElementScrollEvents(\"scrollElements\", false);\r\n addElementScrollEvents(\"scrollElementMapping\", true);\r\n bs.socket.on(ELEMENT_EVENT_NAME, exports.socketEventForElement(bs, cache));\r\n function addElementScrollEvents(key, map) {\r\n if (!opts[key] ||\r\n !opts[key].length ||\r\n !(\"querySelectorAll\" in document)) {\r\n return;\r\n }\r\n utils.forEach(opts[key], function (selector) {\r\n var elems = document.querySelectorAll(selector) || [];\r\n utils.forEach(elems, function (elem) {\r\n var data = utils.getElementData(elem);\r\n data.cacheSelector = data.tagName + \":\" + data.index;\r\n data.map = map;\r\n cache[data.cacheSelector] = elem;\r\n eventManager.addEvent(elem, WINDOW_EVENT_NAME, exports.browserEventForElement(bs, elem, data));\r\n });\r\n });\r\n }\r\n};\r\n/**\r\n * @param {BrowserSync} bs\r\n */\r\nexports.socketEvent = function (bs) {\r\n return function (data) {\r\n if (!bs.canSync(data, OPT_PATH)) {\r\n return false;\r\n }\r\n var scrollSpace = utils.getScrollSpace();\r\n exports.canEmitEvents = false;\r\n if (bs.options && bs.options.scrollProportionally) {\r\n return window.scrollTo(0, scrollSpace.y * data.position.proportional); // % of y axis of scroll to px\r\n }\r\n else {\r\n return window.scrollTo(0, data.position.raw.y);\r\n }\r\n };\r\n};\r\n/**\r\n * @param bs\r\n */\r\nexports.socketEventForElement = function (bs, cache) {\r\n return function (data) {\r\n if (!bs.canSync(data, OPT_PATH)) {\r\n return false;\r\n }\r\n exports.canEmitEvents = false;\r\n function scrollOne(selector, pos) {\r\n if (cache[selector]) {\r\n cache[selector].scrollTop = pos;\r\n }\r\n }\r\n if (data.map) {\r\n return Object.keys(cache).forEach(function (key) {\r\n scrollOne(key, data.position);\r\n });\r\n }\r\n scrollOne(data.elem.cacheSelector, data.position);\r\n };\r\n};\r\n/**\r\n * @param bs\r\n */\r\nexports.browserEventForElement = function (bs, elem, data) {\r\n return function () {\r\n var canSync = exports.canEmitEvents;\r\n if (canSync) {\r\n bs.socket.emit(ELEMENT_EVENT_NAME, {\r\n position: elem.scrollTop,\r\n elem: data,\r\n map: data.map\r\n });\r\n }\r\n exports.canEmitEvents = true;\r\n };\r\n};\r\nexports.browserEvent = function (bs) {\r\n return function () {\r\n var canSync = exports.canEmitEvents;\r\n if (canSync) {\r\n bs.socket.emit(WINDOW_EVENT_NAME, {\r\n position: exports.getScrollPosition()\r\n });\r\n }\r\n exports.canEmitEvents = true;\r\n };\r\n};\r\n/**\r\n * @returns {{raw: number, proportional: number}}\r\n */\r\nexports.getScrollPosition = function () {\r\n var pos = utils.getBrowserScrollPosition();\r\n return {\r\n raw: pos,\r\n proportional: exports.getScrollTopPercentage(pos) // Get % of y axis of scroll\r\n };\r\n};\r\n/**\r\n * @param {{x: number, y: number}} scrollSpace\r\n * @param scrollPosition\r\n * @returns {{x: number, y: number}}\r\n */\r\nexports.getScrollPercentage = function (scrollSpace, scrollPosition) {\r\n var x = scrollPosition.x / scrollSpace.x;\r\n var y = scrollPosition.y / scrollSpace.y;\r\n return {\r\n x: x || 0,\r\n y: y\r\n };\r\n};\r\n/**\r\n * Get just the percentage of Y axis of scroll\r\n * @returns {number}\r\n */\r\nexports.getScrollTopPercentage = function (pos) {\r\n var scrollSpace = utils.getScrollSpace();\r\n var percentage = exports.getScrollPercentage(scrollSpace, pos);\r\n return percentage.y;\r\n};\r\n\n\n/***/ }),\n/* 12 */\n/***/ (function(module, exports) {\n\nexports._ElementCache = function () {\r\n var cache = {}, guidCounter = 1, expando = \"data\" + new Date().getTime();\r\n this.getData = function (elem) {\r\n var guid = elem[expando];\r\n if (!guid) {\r\n guid = elem[expando] = guidCounter++;\r\n cache[guid] = {};\r\n }\r\n return cache[guid];\r\n };\r\n this.removeData = function (elem) {\r\n var guid = elem[expando];\r\n if (!guid)\r\n return;\r\n delete cache[guid];\r\n try {\r\n delete elem[expando];\r\n }\r\n catch (e) {\r\n if (elem.removeAttribute) {\r\n elem.removeAttribute(expando);\r\n }\r\n }\r\n };\r\n};\r\n/**\r\n * Fix an event\r\n * @param event\r\n * @returns {*}\r\n */\r\nexports._fixEvent = function (event) {\r\n function returnTrue() {\r\n return true;\r\n }\r\n function returnFalse() {\r\n return false;\r\n }\r\n if (!event || !event.stopPropagation) {\r\n var old = event || window.event;\r\n // Clone the old object so that we can modify the values\r\n event = {};\r\n for (var prop in old) {\r\n event[prop] = old[prop];\r\n }\r\n // The event occurred on this element\r\n if (!event.target) {\r\n event.target = event.srcElement || document;\r\n }\r\n // Handle which other element the event is related to\r\n event.relatedTarget =\r\n event.fromElement === event.target\r\n ? event.toElement\r\n : event.fromElement;\r\n // Stop the default browser action\r\n event.preventDefault = function () {\r\n event.returnValue = false;\r\n event.isDefaultPrevented = returnTrue;\r\n };\r\n event.isDefaultPrevented = returnFalse;\r\n // Stop the event from bubbling\r\n event.stopPropagation = function () {\r\n event.cancelBubble = true;\r\n event.isPropagationStopped = returnTrue;\r\n };\r\n event.isPropagationStopped = returnFalse;\r\n // Stop the event from bubbling and executing other handlers\r\n event.stopImmediatePropagation = function () {\r\n this.isImmediatePropagationStopped = returnTrue;\r\n this.stopPropagation();\r\n };\r\n event.isImmediatePropagationStopped = returnFalse;\r\n // Handle mouse position\r\n if (event.clientX != null) {\r\n var doc = document.documentElement, body = document.body;\r\n event.pageX =\r\n event.clientX +\r\n ((doc && doc.scrollLeft) || (body && body.scrollLeft) || 0) -\r\n ((doc && doc.clientLeft) || (body && body.clientLeft) || 0);\r\n event.pageY =\r\n event.clientY +\r\n ((doc && doc.scrollTop) || (body && body.scrollTop) || 0) -\r\n ((doc && doc.clientTop) || (body && body.clientTop) || 0);\r\n }\r\n // Handle key presses\r\n event.which = event.charCode || event.keyCode;\r\n // Fix button for mouse clicks:\r\n // 0 == left; 1 == middle; 2 == right\r\n if (event.button != null) {\r\n event.button =\r\n event.button & 1\r\n ? 0\r\n : event.button & 4 ? 1 : event.button & 2 ? 2 : 0;\r\n }\r\n }\r\n return event;\r\n};\r\n/**\r\n * @constructor\r\n */\r\nexports._EventManager = function (cache) {\r\n var nextGuid = 1;\r\n this.addEvent = function (elem, type, fn) {\r\n var data = cache.getData(elem);\r\n if (!data.handlers)\r\n data.handlers = {};\r\n if (!data.handlers[type])\r\n data.handlers[type] = [];\r\n if (!fn.guid)\r\n fn.guid = nextGuid++;\r\n data.handlers[type].push(fn);\r\n if (!data.dispatcher) {\r\n data.disabled = false;\r\n data.dispatcher = function (event) {\r\n if (data.disabled)\r\n return;\r\n event = exports._fixEvent(event);\r\n var handlers = data.handlers[event.type];\r\n if (handlers) {\r\n for (var n = 0; n < handlers.length; n++) {\r\n handlers[n].call(elem, event);\r\n }\r\n }\r\n };\r\n }\r\n if (data.handlers[type].length == 1) {\r\n if (document.addEventListener) {\r\n elem.addEventListener(type, data.dispatcher, false);\r\n }\r\n else if (document.attachEvent) {\r\n elem.attachEvent(\"on\" + type, data.dispatcher);\r\n }\r\n }\r\n };\r\n function tidyUp(elem, type) {\r\n function isEmpty(object) {\r\n for (var prop in object) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n var data = cache.getData(elem);\r\n if (data.handlers[type].length === 0) {\r\n delete data.handlers[type];\r\n if (document.removeEventListener) {\r\n elem.removeEventListener(type, data.dispatcher, false);\r\n }\r\n else if (document.detachEvent) {\r\n elem.detachEvent(\"on\" + type, data.dispatcher);\r\n }\r\n }\r\n if (isEmpty(data.handlers)) {\r\n delete data.handlers;\r\n delete data.dispatcher;\r\n }\r\n if (isEmpty(data)) {\r\n cache.removeData(elem);\r\n }\r\n }\r\n this.removeEvent = function (elem, type, fn) {\r\n var data = cache.getData(elem);\r\n if (!data.handlers)\r\n return;\r\n var removeType = function (t) {\r\n data.handlers[t] = [];\r\n tidyUp(elem, t);\r\n };\r\n if (!type) {\r\n for (var t in data.handlers)\r\n removeType(t);\r\n return;\r\n }\r\n var handlers = data.handlers[type];\r\n if (!handlers)\r\n return;\r\n if (!fn) {\r\n removeType(type);\r\n return;\r\n }\r\n if (fn.guid) {\r\n for (var n = 0; n < handlers.length; n++) {\r\n if (handlers[n].guid === fn.guid) {\r\n handlers.splice(n--, 1);\r\n }\r\n }\r\n }\r\n tidyUp(elem, type);\r\n };\r\n this.proxy = function (context, fn) {\r\n if (!fn.guid) {\r\n fn.guid = nextGuid++;\r\n }\r\n var ret = function () {\r\n return fn.apply(context, arguments);\r\n };\r\n ret.guid = fn.guid;\r\n return ret;\r\n };\r\n};\r\n/**\r\n * Trigger a click on an element\r\n * @param elem\r\n */\r\nexports.triggerClick = function (elem) {\r\n var evObj;\r\n if (document.createEvent) {\r\n window.setTimeout(function () {\r\n evObj = document.createEvent(\"MouseEvents\");\r\n evObj.initEvent(\"click\", true, true);\r\n elem.dispatchEvent(evObj);\r\n }, 0);\r\n }\r\n else {\r\n window.setTimeout(function () {\r\n if (document.createEventObject) {\r\n evObj = document.createEventObject();\r\n evObj.cancelBubble = true;\r\n elem.fireEvent(\"on\" + \"click\", evObj);\r\n }\r\n }, 0);\r\n }\r\n};\r\nvar cache = new exports._ElementCache();\r\nvar eventManager = new exports._EventManager(cache);\r\neventManager.triggerClick = exports.triggerClick;\r\nexports.manager = eventManager;\r\n\n\n/***/ }),\n/* 13 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar socket = __webpack_require__(35);\r\n/**\r\n * @type {{emit: emit, on: on}}\r\n */\r\nvar socketConfig = window.___browserSync___.socketConfig;\r\nvar socketUrl = window.___browserSync___.socketUrl;\r\nvar io = socket(socketUrl, socketConfig);\r\n/**\r\n * *****BACK-COMPAT*******\r\n * Scripts that come after Browsersync may rely on the previous window.___browserSync___.socket\r\n */\r\nwindow.___browserSync___.socket = io;\r\n/**\r\n * @returns {string}\r\n */\r\nexports.getPath = function () {\r\n return window.location.pathname;\r\n};\r\n/**\r\n * Alias for socket.emit\r\n * @param name\r\n * @param data\r\n */\r\nexports.emit = function (name, data) {\r\n if (io && io.emit) {\r\n // send relative path of where the event is sent\r\n data.url = exports.getPath();\r\n io.emit(name, data);\r\n }\r\n};\r\n/**\r\n * Alias for socket.on\r\n * @param name\r\n * @param func\r\n */\r\nexports.on = function (name, func) {\r\n io.on(name, func);\r\n};\r\n\n\n/***/ }),\n/* 14 */\n/***/ (function(module, exports) {\n\n/**\r\n * Parses an URI\r\n *\r\n * @author Steven Levithan <stevenlevithan.com> (MIT license)\r\n * @api private\r\n */\r\n\r\nvar re = /^(?:(?![^:@]+:[^:@\\/]*@)(http|https|ws|wss):\\/\\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\\/?#]*)(?::(\\d*))?)(((\\/(?:[^?#](?![^?#\\/]*\\.[^?#\\/.]+(?:[?#]|$)))*\\/?)?([^?#\\/]*))(?:\\?([^#]*))?(?:#(.*))?)/;\r\n\r\nvar parts = [\r\n 'source', 'protocol', 'authority', 'userInfo', 'user', 'password', 'host', 'port', 'relative', 'path', 'directory', 'file', 'query', 'anchor'\r\n];\r\n\r\nmodule.exports = function parseuri(str) {\r\n var src = str,\r\n b = str.indexOf('['),\r\n e = str.indexOf(']');\r\n\r\n if (b != -1 && e != -1) {\r\n str = str.substring(0, b) + str.substring(b, e).replace(/:/g, ';') + str.substring(e, str.length);\r\n }\r\n\r\n var m = re.exec(str || ''),\r\n uri = {},\r\n i = 14;\r\n\r\n while (i--) {\r\n uri[parts[i]] = m[i] || '';\r\n }\r\n\r\n if (b != -1 && e != -1) {\r\n uri.source = src;\r\n uri.host = uri.host.substring(1, uri.host.length - 1).replace(/;/g, ':');\r\n uri.authority = uri.authority.replace('[', '').replace(']', '').replace(/;/g, ':');\r\n uri.ipv6uri = true;\r\n }\r\n\r\n return uri;\r\n};\r\n\n\n/***/ }),\n/* 15 */\n/***/ (function(module, exports) {\n\n// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n\n\n/***/ }),\n/* 16 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(global) {/* global Blob File */\n\n/*\n * Module requirements.\n */\n\nvar isArray = __webpack_require__(39);\n\nvar toString = Object.prototype.toString;\nvar withNativeBlob = typeof global.Blob === 'function' || toString.call(global.Blob) === '[object BlobConstructor]';\nvar withNativeFile = typeof global.File === 'function' || toString.call(global.File) === '[object FileConstructor]';\n\n/**\n * Module exports.\n */\n\nmodule.exports = hasBinary;\n\n/**\n * Checks for binary data.\n *\n * Supports Buffer, ArrayBuffer, Blob and File.\n *\n * @param {Object} anything\n * @api public\n */\n\nfunction hasBinary (obj) {\n if (!obj || typeof obj !== 'object') {\n return false;\n }\n\n if (isArray(obj)) {\n for (var i = 0, l = obj.length; i < l; i++) {\n if (hasBinary(obj[i])) {\n return true;\n }\n }\n return false;\n }\n\n if ((typeof global.Buffer === 'function' && global.Buffer.isBuffer && global.Buffer.isBuffer(obj)) ||\n (typeof global.ArrayBuffer === 'function' && obj instanceof ArrayBuffer) ||\n (withNativeBlob && obj instanceof Blob) ||\n (withNativeFile && obj instanceof File)\n ) {\n return true;\n }\n\n // see: https://github.com/Automattic/has-binary/pull/4\n if (obj.toJSON && typeof obj.toJSON === 'function' && arguments.length === 1) {\n return hasBinary(obj.toJSON(), true);\n }\n\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key) && hasBinary(obj[key])) {\n return true;\n }\n }\n\n return false;\n}\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0)))\n\n/***/ }),\n/* 17 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(global) {\nmodule.exports = isBuf;\n\n/**\n * Returns true if obj is a buffer or an arraybuffer.\n *\n * @api private\n */\n\nfunction isBuf(obj) {\n return (global.Buffer && global.Buffer.isBuffer(obj)) ||\n (global.ArrayBuffer && obj instanceof ArrayBuffer);\n}\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0)))\n\n/***/ }),\n/* 18 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/**\n * Module dependencies.\n */\n\nvar eio = __webpack_require__(42);\nvar Socket = __webpack_require__(23);\nvar Emitter = __webpack_require__(2);\nvar parser = __webpack_require__(8);\nvar on = __webpack_require__(24);\nvar bind = __webpack_require__(25);\nvar debug = __webpack_require__(1)('socket.io-client:manager');\nvar indexOf = __webpack_require__(22);\nvar Backoff = __webpack_require__(57);\n\n/**\n * IE6+ hasOwnProperty\n */\n\nvar has = Object.prototype.hasOwnProperty;\n\n/**\n * Module exports\n */\n\nmodule.exports = Manager;\n\n/**\n * `Manager` constructor.\n *\n * @param {String} engine instance or engine uri/opts\n * @param {Object} options\n * @api public\n */\n\nfunction Manager (uri, opts) {\n if (!(this instanceof Manager)) return new Manager(uri, opts);\n if (uri && ('object' === typeof uri)) {\n opts = uri;\n uri = undefined;\n }\n opts = opts || {};\n\n opts.path = opts.path || '/socket.io';\n this.nsps = {};\n this.subs = [];\n this.opts = opts;\n this.reconnection(opts.reconnection !== false);\n this.reconnectionAttempts(opts.reconnectionAttempts || Infinity);\n this.reconnectionDelay(opts.reconnectionDelay || 1000);\n this.reconnectionDelayMax(opts.reconnectionDelayMax || 5000);\n this.randomizationFactor(opts.randomizationFactor || 0.5);\n this.backoff = new Backoff({\n min: this.reconnectionDelay(),\n max: this.reconnectionDelayMax(),\n jitter: this.randomizationFactor()\n });\n this.timeout(null == opts.timeout ? 20000 : opts.timeout);\n this.readyState = 'closed';\n this.uri = uri;\n this.connecting = [];\n this.lastPing = null;\n this.encoding = false;\n this.packetBuffer = [];\n var _parser = opts.parser || parser;\n this.encoder = new _parser.Encoder();\n this.decoder = new _parser.Decoder();\n this.autoConnect = opts.autoConnect !== false;\n if (this.autoConnect) this.open();\n}\n\n/**\n * Propagate given event to sockets and emit on `this`\n *\n * @api private\n */\n\nManager.prototype.emitAll = function () {\n this.emit.apply(this, arguments);\n for (var nsp in this.nsps) {\n if (has.call(this.nsps, nsp)) {\n this.nsps[nsp].emit.apply(this.nsps[nsp], arguments);\n }\n }\n};\n\n/**\n * Update `socket.id` of all sockets\n *\n * @api private\n */\n\nManager.prototype.updateSocketIds = function () {\n for (var nsp in this.nsps) {\n if (has.call(this.nsps, nsp)) {\n this.nsps[nsp].id = this.generateId(nsp);\n }\n }\n};\n\n/**\n * generate `socket.id` for the given `nsp`\n *\n * @param {String} nsp\n * @return {String}\n * @api private\n */\n\nManager.prototype.generateId = function (nsp) {\n return (nsp === '/' ? '' : (nsp + '#')) + this.engine.id;\n};\n\n/**\n * Mix in `Emitter`.\n */\n\nEmitter(Manager.prototype);\n\n/**\n * Sets the `reconnection` config.\n *\n * @param {Boolean} true/false if it should automatically reconnect\n * @return {Manager} self or value\n * @api public\n */\n\nManager.prototype.reconnection = function (v) {\n if (!arguments.length) return this._reconnection;\n this._reconnection = !!v;\n return this;\n};\n\n/**\n * Sets the reconnection attempts config.\n *\n * @param {Number} max reconnection attempts before giving up\n * @return {Manager} self or value\n * @api public\n */\n\nManager.prototype.reconnectionAttempts = function (v) {\n if (!arguments.length) return this._reconnectionAttempts;\n this._reconnectionAttempts = v;\n return this;\n};\n\n/**\n * Sets the delay between reconnections.\n *\n * @param {Number} delay\n * @return {Manager} self or value\n * @api public\n */\n\nManager.prototype.reconnectionDelay = function (v) {\n if (!arguments.length) return this._reconnectionDelay;\n this._reconnectionDelay = v;\n this.backoff && this.backoff.setMin(v);\n return this;\n};\n\nManager.prototype.randomizationFactor = function (v) {\n if (!arguments.length) return this._randomizationFactor;\n this._randomizationFactor = v;\n this.backoff && this.backoff.setJitter(v);\n return this;\n};\n\n/**\n * Sets the maximum delay between reconnections.\n *\n * @param {Number} delay\n * @return {Manager} self or value\n * @api public\n */\n\nManager.prototype.reconnectionDelayMax = function (v) {\n if (!arguments.length) return this._reconnectionDelayMax;\n this._reconnectionDelayMax = v;\n this.backoff && this.backoff.setMax(v);\n return this;\n};\n\n/**\n * Sets the connection timeout. `false` to disable\n *\n * @return {Manager} self or value\n * @api public\n */\n\nManager.prototype.timeout = function (v) {\n if (!arguments.length) return this._timeout;\n this._timeout = v;\n return this;\n};\n\n/**\n * Starts trying to reconnect if reconnection is enabled and we have not\n * started reconnecting yet\n *\n * @api private\n */\n\nManager.prototype.maybeReconnectOnOpen = function () {\n // Only try to reconnect if it's the first time we're connecting\n if (!this.reconnecting && this._reconnection && this.backoff.attempts === 0) {\n // keeps reconnection from firing twice for the same reconnection loop\n this.reconnect();\n }\n};\n\n/**\n * Sets the current transport `socket`.\n *\n * @param {Function} optional, callback\n * @return {Manager} self\n * @api public\n */\n\nManager.prototype.open =\nManager.prototype.connect = function (fn, opts) {\n debug('readyState %s', this.readyState);\n if (~this.readyState.indexOf('open')) return this;\n\n debug('opening %s', this.uri);\n this.engine = eio(this.uri, this.opts);\n var socket = this.engine;\n var self = this;\n this.readyState = 'opening';\n this.skipReconnect = false;\n\n // emit `open`\n var openSub = on(socket, 'open', function () {\n self.onopen();\n fn && fn();\n });\n\n // emit `connect_error`\n var errorSub = on(socket, 'error', function (data) {\n debug('connect_error');\n self.cleanup();\n self.readyState = 'closed';\n self.emitAll('connect_error', data);\n if (fn) {\n var err = new Error('Connection error');\n err.data = data;\n fn(err);\n } else {\n // Only do this if there is no fn to handle the error\n self.maybeReconnectOnOpen();\n }\n });\n\n // emit `connect_timeout`\n if (false !== this._timeout) {\n var timeout = this._timeout;\n debug('connect attempt will timeout after %d', timeout);\n\n // set timer\n var timer = setTimeout(function () {\n debug('connect attempt timed out after %d', timeout);\n openSub.destroy();\n socket.close();\n socket.emit('error', 'timeout');\n self.emitAll('connect_timeout', timeout);\n }, timeout);\n\n this.subs.push({\n destroy: function () {\n clearTimeout(timer);\n }\n });\n }\n\n this.subs.push(openSub);\n this.subs.push(errorSub);\n\n return this;\n};\n\n/**\n * Called upon transport open.\n *\n * @api private\n */\n\nManager.prototype.onopen = function () {\n debug('open');\n\n // clear old subs\n this.cleanup();\n\n // mark as open\n this.readyState = 'open';\n this.emit('open');\n\n // add new subs\n var socket = this.engine;\n this.subs.push(on(socket, 'data', bind(this, 'ondata')));\n this.subs.push(on(socket, 'ping', bind(this, 'onping')));\n this.subs.push(on(socket, 'pong', bind(this, 'onpong')));\n this.subs.push(on(socket, 'error', bind(this, 'onerror')));\n this.subs.push(on(socket, 'close', bind(this, 'onclose')));\n this.subs.push(on(this.decoder, 'decoded', bind(this, 'ondecoded')));\n};\n\n/**\n * Called upon a ping.\n *\n * @api private\n */\n\nManager.prototype.onping = function () {\n this.lastPing = new Date();\n this.emitAll('ping');\n};\n\n/**\n * Called upon a packet.\n *\n * @api private\n */\n\nManager.prototype.onpong = function () {\n this.emitAll('pong', new Date() - this.lastPing);\n};\n\n/**\n * Called with data.\n *\n * @api private\n */\n\nManager.prototype.ondata = function (data) {\n this.decoder.add(data);\n};\n\n/**\n * Called when parser fully decodes a packet.\n *\n * @api private\n */\n\nManager.prototype.ondecoded = function (packet) {\n this.emit('packet', packet);\n};\n\n/**\n * Called upon socket error.\n *\n * @api private\n */\n\nManager.prototype.onerror = function (err) {\n debug('error', err);\n this.emitAll('error', err);\n};\n\n/**\n * Creates a new socket for the given `nsp`.\n *\n * @return {Socket}\n * @api public\n */\n\nManager.prototype.socket = function (nsp, opts) {\n var socket = this.nsps[nsp];\n if (!socket) {\n socket = new Socket(this, nsp, opts);\n this.nsps[nsp] = socket;\n var self = this;\n socket.on('connecting', onConnecting);\n socket.on('connect', function () {\n socket.id = self.generateId(nsp);\n });\n\n if (this.autoConnect) {\n // manually call here since connecting event is fired before listening\n onConnecting();\n }\n }\n\n function onConnecting () {\n if (!~indexOf(self.connecting, socket)) {\n self.connecting.push(socket);\n }\n }\n\n return socket;\n};\n\n/**\n * Called upon a socket close.\n *\n * @param {Socket} socket\n */\n\nManager.prototype.destroy = function (socket) {\n var index = indexOf(this.connecting, socket);\n if (~index) this.connecting.splice(index, 1);\n if (this.connecting.length) return;\n\n this.close();\n};\n\n/**\n * Writes a packet.\n *\n * @param {Object} packet\n * @api private\n */\n\nManager.prototype.packet = function (packet) {\n debug('writing packet %j', packet);\n var self = this;\n if (packet.query && packet.type === 0) packet.nsp += '?' + packet.query;\n\n if (!self.encoding) {\n // encode, then write to engine with result\n self.encoding = true;\n this.encoder.encode(packet, function (encodedPackets) {\n for (var i = 0; i < encodedPackets.length; i++) {\n self.engine.write(encodedPackets[i], packet.options);\n }\n self.encoding = false;\n self.processPacketQueue();\n });\n } else { // add packet to the queue\n self.packetBuffer.push(packet);\n }\n};\n\n/**\n * If packet buffer is non-empty, begins encoding the\n * next packet in line.\n *\n * @api private\n */\n\nManager.prototype.processPacketQueue = function () {\n if (this.packetBuffer.length > 0 && !this.encoding) {\n var pack = this.packetBuffer.shift();\n this.packet(pack);\n }\n};\n\n/**\n * Clean up transport subscriptions and packet buffer.\n *\n * @api private\n */\n\nManager.prototype.cleanup = function () {\n debug('cleanup');\n\n var subsLength = this.subs.length;\n for (var i = 0; i < subsLength; i++) {\n var sub = this.subs.shift();\n sub.destroy();\n }\n\n this.packetBuffer = [];\n this.encoding = false;\n this.lastPing = null;\n\n this.decoder.destroy();\n};\n\n/**\n * Close the current socket.\n *\n * @api private\n */\n\nManager.prototype.close =\nManager.prototype.disconnect = function () {\n debug('disconnect');\n this.skipReconnect = true;\n this.reconnecting = false;\n if ('opening' === this.readyState) {\n // `onclose` will not fire because\n // an open event never happened\n this.cleanup();\n }\n this.backoff.reset();\n this.readyState = 'closed';\n if (this.engine) this.engine.close();\n};\n\n/**\n * Called upon engine close.\n *\n * @api private\n */\n\nManager.prototype.onclose = function (reason) {\n debug('onclose');\n\n this.cleanup();\n this.backoff.reset();\n this.readyState = 'closed';\n this.emit('close', reason);\n\n if (this._reconnection && !this.skipReconnect) {\n this.reconnect();\n }\n};\n\n/**\n * Attempt a reconnection.\n *\n * @api private\n */\n\nManager.prototype.reconnect = function () {\n if (this.reconnecting || this.skipReconnect) return this;\n\n var self = this;\n\n if (this.backoff.attempts >= this._reconnectionAttempts) {\n debug('reconnect failed');\n this.backoff.reset();\n this.emitAll('reconnect_failed');\n this.reconnecting = false;\n } else {\n var delay = this.backoff.duration();\n debug('will wait %dms before reconnect attempt', delay);\n\n this.reconnecting = true;\n var timer = setTimeout(function () {\n if (self.skipReconnect) return;\n\n debug('attempting reconnect');\n self.emitAll('reconnect_attempt', self.backoff.attempts);\n self.emitAll('reconnecting', self.backoff.attempts);\n\n // check again for the case socket closed in above events\n if (self.skipReconnect) return;\n\n self.open(function (err) {\n if (err) {\n debug('reconnect attempt error');\n self.reconnecting = false;\n self.reconnect();\n self.emitAll('reconnect_error', err.data);\n } else {\n debug('reconnect success');\n self.onreconnect();\n }\n });\n }, delay);\n\n this.subs.push({\n destroy: function () {\n clearTimeout(timer);\n }\n });\n }\n};\n\n/**\n * Called upon successful reconnect.\n *\n * @api private\n */\n\nManager.prototype.onreconnect = function () {\n var attempt = this.backoff.attempts;\n this.reconnecting = false;\n this.backoff.reset();\n this.updateSocketIds();\n this.emitAll('reconnect', attempt);\n};\n\n\n/***/ }),\n/* 19 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(global) {/**\n * Module dependencies\n */\n\nvar XMLHttpRequest = __webpack_require__(9);\nvar XHR = __webpack_require__(45);\nvar JSONP = __webpack_require__(53);\nvar websocket = __webpack_require__(54);\n\n/**\n * Export transports.\n */\n\nexports.polling = polling;\nexports.websocket = websocket;\n\n/**\n * Polling transport polymorphic constructor.\n * Decides on xhr vs jsonp based on feature detection.\n *\n * @api private\n */\n\nfunction polling (opts) {\n var xhr;\n var xd = false;\n var xs = false;\n var jsonp = false !== opts.jsonp;\n\n if (global.location) {\n var isSSL = 'https:' === location.protocol;\n var port = location.port;\n\n // some user agents have empty `location.port`\n if (!port) {\n port = isSSL ? 443 : 80;\n }\n\n xd = opts.hostname !== location.hostname || port !== opts.port;\n xs = opts.secure !== isSSL;\n }\n\n opts.xdomain = xd;\n opts.xscheme = xs;\n xhr = new XMLHttpRequest(opts);\n\n if ('open' in xhr && !opts.forceJSONP) {\n return new XHR(opts);\n } else {\n if (!jsonp) throw new Error('JSONP disabled');\n return new JSONP(opts);\n }\n}\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0)))\n\n/***/ }),\n/* 20 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/**\n * Module dependencies.\n */\n\nvar Transport = __webpack_require__(10);\nvar parseqs = __webpack_require__(5);\nvar parser = __webpack_require__(3);\nvar inherit = __webpack_require__(6);\nvar yeast = __webpack_require__(21);\nvar debug = __webpack_require__(1)('engine.io-client:polling');\n\n/**\n * Module exports.\n */\n\nmodule.exports = Polling;\n\n/**\n * Is XHR2 supported?\n */\n\nvar hasXHR2 = (function () {\n var XMLHttpRequest = __webpack_require__(9);\n var xhr = new XMLHttpRequest({ xdomain: false });\n return null != xhr.responseType;\n})();\n\n/**\n * Polling interface.\n *\n * @param {Object} opts\n * @api private\n */\n\nfunction Polling (opts) {\n var forceBase64 = (opts && opts.forceBase64);\n if (!hasXHR2 || forceBase64) {\n this.supportsBinary = false;\n }\n Transport.call(this, opts);\n}\n\n/**\n * Inherits from Transport.\n */\n\ninherit(Polling, Transport);\n\n/**\n * Transport name.\n */\n\nPolling.prototype.name = 'polling';\n\n/**\n * Opens the socket (triggers polling). We write a PING message to determine\n * when the transport is open.\n *\n * @api private\n */\n\nPolling.prototype.doOpen = function () {\n this.poll();\n};\n\n/**\n * Pauses polling.\n *\n * @param {Function} callback upon buffers are flushed and transport is paused\n * @api private\n */\n\nPolling.prototype.pause = function (onPause) {\n var self = this;\n\n this.readyState = 'pausing';\n\n function pause () {\n debug('paused');\n self.readyState = 'paused';\n onPause();\n }\n\n if (this.polling || !this.writable) {\n var total = 0;\n\n if (this.polling) {\n debug('we are currently polling - waiting to pause');\n total++;\n this.once('pollComplete', function () {\n debug('pre-pause polling complete');\n --total || pause();\n });\n }\n\n if (!this.writable) {\n debug('we are currently writing - waiting to pause');\n total++;\n this.once('drain', function () {\n debug('pre-pause writing complete');\n --total || pause();\n });\n }\n } else {\n pause();\n }\n};\n\n/**\n * Starts polling cycle.\n *\n * @api public\n */\n\nPolling.prototype.poll = function () {\n debug('polling');\n this.polling = true;\n this.doPoll();\n this.emit('poll');\n};\n\n/**\n * Overloads onData to detect payloads.\n *\n * @api private\n */\n\nPolling.prototype.onData = function (data) {\n var self = this;\n debug('polling got data %s', data);\n var callback = function (packet, index, total) {\n // if its the first message we consider the transport open\n if ('opening' === self.readyState) {\n self.onOpen();\n }\n\n // if its a close packet, we close the ongoing requests\n if ('close' === packet.type) {\n self.onClose();\n return false;\n }\n\n // otherwise bypass onData and handle the message\n self.onPacket(packet);\n };\n\n // decode payload\n parser.decodePayload(data, this.socket.binaryType, callback);\n\n // if an event did not trigger closing\n if ('closed' !== this.readyState) {\n // if we got data we're not polling\n this.polling = false;\n this.emit('pollComplete');\n\n if ('open' === this.readyState) {\n this.poll();\n } else {\n debug('ignoring poll - transport state \"%s\"', this.readyState);\n }\n }\n};\n\n/**\n * For polling, send a close packet.\n *\n * @api private\n */\n\nPolling.prototype.doClose = function () {\n var self = this;\n\n function close () {\n debug('writing close packet');\n self.write([{ type: 'close' }]);\n }\n\n if ('open' === this.readyState) {\n debug('transport open - closing');\n close();\n } else {\n // in case we're trying to close while\n // handshaking is in progress (GH-164)\n debug('transport not open - deferring close');\n this.once('open', close);\n }\n};\n\n/**\n * Writes a packets payload.\n *\n * @param {Array} data packets\n * @param {Function} drain callback\n * @api private\n */\n\nPolling.prototype.write = function (packets) {\n var self = this;\n this.writable = false;\n var callbackfn = function () {\n self.writable = true;\n self.emit('drain');\n };\n\n parser.encodePayload(packets, this.supportsBinary, function (data) {\n self.doWrite(data, callbackfn);\n });\n};\n\n/**\n * Generates uri for connection.\n *\n * @api private\n */\n\nPolling.prototype.uri = function () {\n var query = this.query || {};\n var schema = this.secure ? 'https' : 'http';\n var port = '';\n\n // cache busting is forced\n if (false !== this.timestampRequests) {\n query[this.timestampParam] = yeast();\n }\n\n if (!this.supportsBinary && !query.sid) {\n query.b64 = 1;\n }\n\n query = parseqs.encode(query);\n\n // avoid port if default for schema\n if (this.port && (('https' === schema && Number(this.port) !== 443) ||\n ('http' === schema && Number(this.port) !== 80))) {\n port = ':' + this.port;\n }\n\n // prepend ? to query\n if (query.length) {\n query = '?' + query;\n }\n\n var ipv6 = this.hostname.indexOf(':') !== -1;\n return schema + '://' + (ipv6 ? '[' + this.hostname + ']' : this.hostname) + port + this.path + query;\n};\n\n\n/***/ }),\n/* 21 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar alphabet = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_'.split('')\n , length = 64\n , map = {}\n , seed = 0\n , i = 0\n , prev;\n\n/**\n * Return a string representing the specified number.\n *\n * @param {Number} num The number to convert.\n * @returns {String} The string representation of the number.\n * @api public\n */\nfunction encode(num) {\n var encoded = '';\n\n do {\n encoded = alphabet[num % length] + encoded;\n num = Math.floor(num / length);\n } while (num > 0);\n\n return encoded;\n}\n\n/**\n * Return the integer value specified by the given string.\n *\n * @param {String} str The string to convert.\n * @returns {Number} The integer value represented by the string.\n * @api public\n */\nfunction decode(str) {\n var decoded = 0;\n\n for (i = 0; i < str.length; i++) {\n decoded = decoded * length + map[str.charAt(i)];\n }\n\n return decoded;\n}\n\n/**\n * Yeast: A tiny growing id generator.\n *\n * @returns {String} A unique id.\n * @api public\n */\nfunction yeast() {\n var now = encode(+new Date());\n\n if (now !== prev) return seed = 0, prev = now;\n return now +'.'+ encode(seed++);\n}\n\n//\n// Map each character to its index.\n//\nfor (; i < length; i++) map[alphabet[i]] = i;\n\n//\n// Expose the `yeast`, `encode` and `decode` functions.\n//\nyeast.encode = encode;\nyeast.decode = decode;\nmodule.exports = yeast;\n\n\n/***/ }),\n/* 22 */\n/***/ (function(module, exports) {\n\n\nvar indexOf = [].indexOf;\n\nmodule.exports = function(arr, obj){\n if (indexOf) return arr.indexOf(obj);\n for (var i = 0; i < arr.length; ++i) {\n if (arr[i] === obj) return i;\n }\n return -1;\n};\n\n/***/ }),\n/* 23 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/**\n * Module dependencies.\n */\n\nvar parser = __webpack_require__(8);\nvar Emitter = __webpack_require__(2);\nvar toArray = __webpack_require__(56);\nvar on = __webpack_require__(24);\nvar bind = __webpack_require__(25);\nvar debug = __webpack_require__(1)('socket.io-client:socket');\nvar parseqs = __webpack_require__(5);\n\n/**\n * Module exports.\n */\n\nmodule.exports = exports = Socket;\n\n/**\n * Internal events (blacklisted).\n * These events can't be emitted by the user.\n *\n * @api private\n */\n\nvar events = {\n connect: 1,\n connect_error: 1,\n connect_timeout: 1,\n connecting: 1,\n disconnect: 1,\n error: 1,\n reconnect: 1,\n reconnect_attempt: 1,\n reconnect_failed: 1,\n reconnect_error: 1,\n reconnecting: 1,\n ping: 1,\n pong: 1\n};\n\n/**\n * Shortcut to `Emitter#emit`.\n */\n\nvar emit = Emitter.prototype.emit;\n\n/**\n * `Socket` constructor.\n *\n * @api public\n */\n\nfunction Socket (io, nsp, opts) {\n this.io = io;\n this.nsp = nsp;\n this.json = this; // compat\n this.ids = 0;\n this.acks = {};\n this.receiveBuffer = [];\n this.sendBuffer = [];\n this.connected = false;\n this.disconnected = true;\n if (opts && opts.query) {\n this.query = opts.query;\n }\n if (this.io.autoConnect) this.open();\n}\n\n/**\n * Mix in `Emitter`.\n */\n\nEmitter(Socket.prototype);\n\n/**\n * Subscribe to open, close and packet events\n *\n * @api private\n */\n\nSocket.prototype.subEvents = function () {\n if (this.subs) return;\n\n var io = this.io;\n this.subs = [\n on(io, 'open', bind(this, 'onopen')),\n on(io, 'packet', bind(this, 'onpacket')),\n on(io, 'close', bind(this, 'onclose'))\n ];\n};\n\n/**\n * \"Opens\" the socket.\n *\n * @api public\n */\n\nSocket.prototype.open =\nSocket.prototype.connect = function () {\n if (this.connected) return this;\n\n this.subEvents();\n this.io.open(); // ensure open\n if ('open' === this.io.readyState) this.onopen();\n this.emit('connecting');\n return this;\n};\n\n/**\n * Sends a `message` event.\n *\n * @return {Socket} self\n * @api public\n */\n\nSocket.prototype.send = function () {\n var args = toArray(arguments);\n args.unshift('message');\n this.emit.apply(this, args);\n return this;\n};\n\n/**\n * Override `emit`.\n * If the event is in `events`, it's emitted normally.\n *\n * @param {String} event name\n * @return {Socket} self\n * @api public\n */\n\nSocket.prototype.emit = function (ev) {\n if (events.hasOwnProperty(ev)) {\n emit.apply(this, arguments);\n return this;\n }\n\n var args = toArray(arguments);\n var packet = { type: parser.EVENT, data: args };\n\n packet.options = {};\n packet.options.compress = !this.flags || false !== this.flags.compress;\n\n // event ack callback\n if ('function' === typeof args[args.length - 1]) {\n debug('emitting packet with ack id %d', this.ids);\n this.acks[this.ids] = args.pop();\n packet.id = this.ids++;\n }\n\n if (this.connected) {\n this.packet(packet);\n } else {\n this.sendBuffer.push(packet);\n }\n\n delete this.flags;\n\n return this;\n};\n\n/**\n * Sends a packet.\n *\n * @param {Object} packet\n * @api private\n */\n\nSocket.prototype.packet = function (packet) {\n packet.nsp = this.nsp;\n this.io.packet(packet);\n};\n\n/**\n * Called upon engine `open`.\n *\n * @api private\n */\n\nSocket.prototype.onopen = function () {\n debug('transport is open - connecting');\n\n // write connect packet if necessary\n if ('/' !== this.nsp) {\n if (this.query) {\n var query = typeof this.query === 'object' ? parseqs.encode(this.query) : this.query;\n debug('sending connect packet with query %s', query);\n this.packet({type: parser.CONNECT, query: query});\n } else {\n this.packet({type: parser.CONNECT});\n }\n }\n};\n\n/**\n * Called upon engine `close`.\n *\n * @param {String} reason\n * @api private\n */\n\nSocket.prototype.onclose = function (reason) {\n debug('close (%s)', reason);\n this.connected = false;\n this.disconnected = true;\n delete this.id;\n this.emit('disconnect', reason);\n};\n\n/**\n * Called with socket packet.\n *\n * @param {Object} packet\n * @api private\n */\n\nSocket.prototype.onpacket = function (packet) {\n if (packet.nsp !== this.nsp) return;\n\n switch (packet.type) {\n case parser.CONNECT:\n this.onconnect();\n break;\n\n case parser.EVENT:\n this.onevent(packet);\n break;\n\n case parser.BINARY_EVENT:\n this.onevent(packet);\n break;\n\n case parser.ACK:\n this.onack(packet);\n break;\n\n case parser.BINARY_ACK:\n this.onack(packet);\n break;\n\n case parser.DISCONNECT:\n this.ondisconnect();\n break;\n\n case parser.ERROR:\n this.emit('error', packet.data);\n break;\n }\n};\n\n/**\n * Called upon a server event.\n *\n * @param {Object} packet\n * @api private\n */\n\nSocket.prototype.onevent = function (packet) {\n var args = packet.data || [];\n debug('emitting event %j', args);\n\n if (null != packet.id) {\n debug('attaching ack callback to event');\n args.push(this.ack(packet.id));\n }\n\n if (this.connected) {\n emit.apply(this, args);\n } else {\n this.receiveBuffer.push(args);\n }\n};\n\n/**\n * Produces an ack callback to emit with an event.\n *\n * @api private\n */\n\nSocket.prototype.ack = function (id) {\n var self = this;\n var sent = false;\n return function () {\n // prevent double callbacks\n if (sent) return;\n sent = true;\n var args = toArray(arguments);\n debug('sending ack %j', args);\n\n self.packet({\n type: parser.ACK,\n id: id,\n data: args\n });\n };\n};\n\n/**\n * Called upon a server acknowlegement.\n *\n * @param {Object} packet\n * @api private\n */\n\nSocket.prototype.onack = function (packet) {\n var ack = this.acks[packet.id];\n if ('function' === typeof ack) {\n debug('calling ack %s with %j', packet.id, packet.data);\n ack.apply(this, packet.data);\n delete this.acks[packet.id];\n } else {\n debug('bad ack %s', packet.id);\n }\n};\n\n/**\n * Called upon server connect.\n *\n * @api private\n */\n\nSocket.prototype.onconnect = function () {\n this.connected = true;\n this.disconnected = false;\n this.emit('connect');\n this.emitBuffered();\n};\n\n/**\n * Emit buffered events (received and emitted).\n *\n * @api private\n */\n\nSocket.prototype.emitBuffered = function () {\n var i;\n for (i = 0; i < this.receiveBuffer.length; i++) {\n emit.apply(this, this.receiveBuffer[i]);\n }\n this.receiveBuffer = [];\n\n for (i = 0; i < this.sendBuffer.length; i++) {\n this.packet(this.sendBuffer[i]);\n }\n this.sendBuffer = [];\n};\n\n/**\n * Called upon server disconnect.\n *\n * @api private\n */\n\nSocket.prototype.ondisconnect = function () {\n debug('server disconnect (%s)', this.nsp);\n this.destroy();\n this.onclose('io server disconnect');\n};\n\n/**\n * Called upon forced client/server side disconnections,\n * this method ensures the manager stops tracking us and\n * that reconnections don't get triggered for this.\n *\n * @api private.\n */\n\nSocket.prototype.destroy = function () {\n if (this.subs) {\n // clean subscriptions to avoid reconnections\n for (var i = 0; i < this.subs.length; i++) {\n this.subs[i].destroy();\n }\n this.subs = null;\n }\n\n this.io.destroy(this);\n};\n\n/**\n * Disconnects the socket manually.\n *\n * @return {Socket} self\n * @api public\n */\n\nSocket.prototype.close =\nSocket.prototype.disconnect = function () {\n if (this.connected) {\n debug('performing disconnect (%s)', this.nsp);\n this.packet({ type: parser.DISCONNECT });\n }\n\n // remove socket from pool\n this.destroy();\n\n if (this.connected) {\n // fire events\n this.onclose('io client disconnect');\n }\n return this;\n};\n\n/**\n * Sets the compress flag.\n *\n * @param {Boolean} if `true`, compresses the sending data\n * @return {Socket} self\n * @api public\n */\n\nSocket.prototype.compress = function (compress) {\n this.flags = this.flags || {};\n this.flags.compress = compress;\n return this;\n};\n\n\n/***/ }),\n/* 24 */\n/***/ (function(module, exports) {\n\n\n/**\n * Module exports.\n */\n\nmodule.exports = on;\n\n/**\n * Helper for subscriptions.\n *\n * @param {Object|EventEmitter} obj with `Emitter` mixin or `EventEmitter`\n * @param {String} event name\n * @param {Function} callback\n * @api public\n */\n\nfunction on (obj, ev, fn) {\n obj.on(ev, fn);\n return {\n destroy: function () {\n obj.removeListener(ev, fn);\n }\n };\n}\n\n\n/***/ }),\n/* 25 */\n/***/ (function(module, exports) {\n\n/**\n * Slice reference.\n */\n\nvar slice = [].slice;\n\n/**\n * Bind `obj` to `fn`.\n *\n * @param {Object} obj\n * @param {Function|String} fn or string\n * @return {Function}\n * @api public\n */\n\nmodule.exports = function(obj, fn){\n if ('string' == typeof fn) fn = obj[fn];\n if ('function' != typeof fn) throw new Error('bind() requires a function');\n var args = slice.call(arguments, 2);\n return function(){\n return fn.apply(obj, args.concat(slice.call(arguments)));\n }\n};\n\n\n/***/ }),\n/* 26 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar scroll = __webpack_require__(11);\r\nvar utils = __webpack_require__(4);\r\nvar styles = {\r\n display: \"none\",\r\n padding: \"15px\",\r\n fontFamily: \"sans-serif\",\r\n position: \"fixed\",\r\n fontSize: \"0.9em\",\r\n zIndex: 9999,\r\n right: 0,\r\n top: 0,\r\n borderBottomLeftRadius: \"5px\",\r\n backgroundColor: \"#1B2032\",\r\n margin: 0,\r\n color: \"white\",\r\n textAlign: \"center\",\r\n pointerEvents: \"none\"\r\n};\r\nvar elem;\r\nvar options;\r\nvar timeoutInt;\r\n/**\r\n * @param {BrowserSync} bs\r\n * @returns {*}\r\n */\r\nexports.init = function (bs) {\r\n options = bs.options;\r\n var cssStyles = styles;\r\n if (options.notify.styles) {\r\n if (Object.prototype.toString.call(options.notify.styles) ===\r\n \"[object Array]\") {\r\n // handle original array behavior, replace all styles with a joined copy\r\n cssStyles = options.notify.styles.join(\";\");\r\n }\r\n else {\r\n for (var key in options.notify.styles) {\r\n if (options.notify.styles.hasOwnProperty(key)) {\r\n cssStyles[key] = options.notify.styles[key];\r\n }\r\n }\r\n }\r\n }\r\n elem = document.createElement(\"DIV\");\r\n elem.id = \"__bs_notify__\";\r\n if (typeof cssStyles === \"string\") {\r\n elem.style.cssText = cssStyles;\r\n }\r\n else {\r\n for (var rule in cssStyles) {\r\n elem.style[rule] = cssStyles[rule];\r\n }\r\n }\r\n var flashFn = exports.watchEvent(bs);\r\n bs.emitter.on(\"notify\", flashFn);\r\n bs.socket.on(\"browser:notify\", flashFn);\r\n return elem;\r\n};\r\n/**\r\n * @returns {Function}\r\n */\r\nexports.watchEvent = function (bs) {\r\n return function (data) {\r\n if (bs.options.notify || data.override) {\r\n if (typeof data === \"string\") {\r\n return exports.flash(data);\r\n }\r\n exports.flash(data.message, data.timeout);\r\n }\r\n };\r\n};\r\n/**\r\n *\r\n */\r\nexports.getElem = function () {\r\n return elem;\r\n};\r\n/**\r\n * @param message\r\n * @param [timeout]\r\n * @returns {*}\r\n */\r\nexports.flash = function (message, timeout) {\r\n var elem = exports.getElem();\r\n var $body = utils.getBody();\r\n // return if notify was never initialised\r\n if (!elem) {\r\n return false;\r\n }\r\n elem.innerHTML = message;\r\n elem.style.display = \"block\";\r\n $body.appendChild(elem);\r\n if (timeoutInt) {\r\n clearTimeout(timeoutInt);\r\n timeoutInt = undefined;\r\n }\r\n timeoutInt = window.setTimeout(function () {\r\n elem.style.display = \"none\";\r\n if (elem.parentNode) {\r\n $body.removeChild(elem);\r\n }\r\n }, timeout || 2000);\r\n return elem;\r\n};\r\n\n\n/***/ }),\n/* 27 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\n/**\r\n * This is the plugin for syncing clicks between browsers\r\n * @type {string}\r\n */\r\nvar EVENT_NAME = \"click\";\r\nvar OPT_PATH = \"ghostMode.clicks\";\r\nexports.canEmitEvents = true;\r\n/**\r\n * @param {BrowserSync} bs\r\n * @param eventManager\r\n */\r\nexports.init = function (bs, eventManager) {\r\n eventManager.addEvent(document.body, EVENT_NAME, exports.browserEvent(bs));\r\n bs.socket.on(EVENT_NAME, exports.socketEvent(bs, eventManager));\r\n};\r\n/**\r\n * Uses event delegation to determine the clicked element\r\n * @param {BrowserSync} bs\r\n * @returns {Function}\r\n */\r\nexports.browserEvent = function (bs) {\r\n return function (event) {\r\n if (exports.canEmitEvents) {\r\n var elem = event.target || event.srcElement;\r\n if (elem.type === \"checkbox\" || elem.type === \"radio\") {\r\n bs.utils.forceChange(elem);\r\n return;\r\n }\r\n bs.socket.emit(EVENT_NAME, bs.utils.getElementData(elem));\r\n }\r\n else {\r\n exports.canEmitEvents = true;\r\n }\r\n };\r\n};\r\n/**\r\n * @param {BrowserSync} bs\r\n * @param {manager} eventManager\r\n * @returns {Function}\r\n */\r\nexports.socketEvent = function (bs, eventManager) {\r\n return function (data) {\r\n if (!bs.canSync(data, OPT_PATH) || bs.tabHidden) {\r\n return false;\r\n }\r\n var elem = bs.utils.getSingleElement(data.tagName, data.index);\r\n if (elem) {\r\n exports.canEmitEvents = false;\r\n eventManager.triggerClick(elem);\r\n }\r\n };\r\n};\r\n\n\n/***/ }),\n/* 28 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nexports.plugins = {\r\n inputs: __webpack_require__(29),\r\n toggles: __webpack_require__(30),\r\n submit: __webpack_require__(31)\r\n};\r\n/**\r\n * Load plugins for enabled options\r\n * @param bs\r\n */\r\nexports.init = function (bs, eventManager) {\r\n var checkOpt = true;\r\n var options = bs.options.ghostMode.forms;\r\n if (options === true) {\r\n checkOpt = false;\r\n }\r\n function init(name) {\r\n exports.plugins[name].init(bs, eventManager);\r\n }\r\n for (var name in exports.plugins) {\r\n if (!checkOpt) {\r\n init(name);\r\n }\r\n else {\r\n if (options[name]) {\r\n init(name);\r\n }\r\n }\r\n }\r\n};\r\n\n\n/***/ }),\n/* 29 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\n/**\r\n * This is the plugin for syncing clicks between browsers\r\n * @type {string}\r\n */\r\nvar EVENT_NAME = \"input:text\";\r\nvar OPT_PATH = \"ghostMode.forms.inputs\";\r\nexports.canEmitEvents = true;\r\n/**\r\n * @param {BrowserSync} bs\r\n * @param eventManager\r\n */\r\nexports.init = function (bs, eventManager) {\r\n eventManager.addEvent(document.body, \"keyup\", exports.browserEvent(bs));\r\n bs.socket.on(EVENT_NAME, exports.socketEvent(bs, eventManager));\r\n};\r\n/**\r\n * @param {BrowserSync} bs\r\n * @returns {Function}\r\n */\r\nexports.browserEvent = function (bs) {\r\n return function (event) {\r\n var elem = event.target || event.srcElement;\r\n var data;\r\n if (exports.canEmitEvents) {\r\n if (elem.tagName === \"INPUT\" || elem.tagName === \"TEXTAREA\") {\r\n data = bs.utils.getElementData(elem);\r\n data.value = elem.value;\r\n bs.socket.emit(EVENT_NAME, data);\r\n }\r\n }\r\n else {\r\n exports.canEmitEvents = true;\r\n }\r\n };\r\n};\r\n/**\r\n * @param {BrowserSync} bs\r\n * @returns {Function}\r\n */\r\nexports.socketEvent = function (bs) {\r\n return function (data) {\r\n if (!bs.canSync(data, OPT_PATH)) {\r\n return false;\r\n }\r\n var elem = bs.utils.getSingleElement(data.tagName, data.index);\r\n if (elem) {\r\n elem.value = data.value;\r\n return elem;\r\n }\r\n return false;\r\n };\r\n};\r\n\n\n/***/ }),\n/* 30 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\n/**\r\n * This is the plugin for syncing clicks between browsers\r\n * @type {string}\r\n */\r\nvar EVENT_NAME = \"input:toggles\";\r\nvar OPT_PATH = \"ghostMode.forms.toggles\";\r\nexports.canEmitEvents = true;\r\n/**\r\n * @param {BrowserSync} bs\r\n * @param eventManager\r\n */\r\nexports.init = function (bs, eventManager) {\r\n var browserEvent = exports.browserEvent(bs);\r\n exports.addEvents(eventManager, browserEvent);\r\n bs.socket.on(EVENT_NAME, exports.socketEvent(bs, eventManager));\r\n};\r\n/**\r\n * @param eventManager\r\n * @param event\r\n */\r\nexports.addEvents = function (eventManager, event) {\r\n var elems = document.getElementsByTagName(\"select\");\r\n var inputs = document.getElementsByTagName(\"input\");\r\n addEvents(elems);\r\n addEvents(inputs);\r\n function addEvents(domElems) {\r\n for (var i = 0, n = domElems.length; i < n; i += 1) {\r\n eventManager.addEvent(domElems[i], \"change\", event);\r\n }\r\n }\r\n};\r\n/**\r\n * @param {BrowserSync} bs\r\n * @returns {Function}\r\n */\r\nexports.browserEvent = function (bs) {\r\n return function (event) {\r\n if (exports.canEmitEvents) {\r\n var elem = event.target || event.srcElement;\r\n var data;\r\n if (elem.type === \"radio\" ||\r\n elem.type === \"checkbox\" ||\r\n elem.tagName === \"SELECT\") {\r\n data = bs.utils.getElementData(elem);\r\n data.type = elem.type;\r\n data.value = elem.value;\r\n data.checked = elem.checked;\r\n bs.socket.emit(EVENT_NAME, data);\r\n }\r\n }\r\n else {\r\n exports.canEmitEvents = true;\r\n }\r\n };\r\n};\r\n/**\r\n * @param {BrowserSync} bs\r\n * @returns {Function}\r\n */\r\nexports.socketEvent = function (bs) {\r\n return function (data) {\r\n if (!bs.canSync(data, OPT_PATH)) {\r\n return false;\r\n }\r\n exports.canEmitEvents = false;\r\n var elem = bs.utils.getSingleElement(data.tagName, data.index);\r\n if (elem) {\r\n if (data.type === \"radio\") {\r\n elem.checked = true;\r\n }\r\n if (data.type === \"checkbox\") {\r\n elem.checked = data.checked;\r\n }\r\n if (data.tagName === \"SELECT\") {\r\n elem.value = data.value;\r\n }\r\n return elem;\r\n }\r\n return false;\r\n };\r\n};\r\n\n\n/***/ }),\n/* 31 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\n/**\r\n * This is the plugin for syncing clicks between browsers\r\n * @type {string}\r\n */\r\nvar EVENT_NAME = \"form:submit\";\r\nvar OPT_PATH = \"ghostMode.forms.submit\";\r\nexports.canEmitEvents = true;\r\n/**\r\n * @param {BrowserSync} bs\r\n * @param eventManager\r\n */\r\nexports.init = function (bs, eventManager) {\r\n var browserEvent = exports.browserEvent(bs);\r\n eventManager.addEvent(document.body, \"submit\", browserEvent);\r\n eventManager.addEvent(document.body, \"reset\", browserEvent);\r\n bs.socket.on(EVENT_NAME, exports.socketEvent(bs, eventManager));\r\n};\r\n/**\r\n * @param {BrowserSync} bs\r\n * @returns {Function}\r\n */\r\nexports.browserEvent = function (bs) {\r\n return function (event) {\r\n if (exports.canEmitEvents) {\r\n var elem = event.target || event.srcElement;\r\n var data = bs.utils.getElementData(elem);\r\n data.type = event.type;\r\n bs.socket.emit(EVENT_NAME, data);\r\n }\r\n else {\r\n exports.canEmitEvents = true;\r\n }\r\n };\r\n};\r\n/**\r\n * @param {BrowserSync} bs\r\n * @returns {Function}\r\n */\r\nexports.socketEvent = function (bs) {\r\n return function (data) {\r\n if (!bs.canSync(data, OPT_PATH)) {\r\n return false;\r\n }\r\n var elem = bs.utils.getSingleElement(data.tagName, data.index);\r\n exports.canEmitEvents = false;\r\n if (elem && data.type === \"submit\") {\r\n elem.submit();\r\n }\r\n if (elem && data.type === \"reset\") {\r\n elem.reset();\r\n }\r\n return false;\r\n };\r\n};\r\n\n\n/***/ }),\n/* 32 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\n/**\r\n * This is the plugin for syncing location\r\n * @type {string}\r\n */\r\nvar EVENT_NAME = \"browser:location\";\r\nvar OPT_PATH = \"ghostMode.location\";\r\nexports.canEmitEvents = true;\r\n/**\r\n * @param {BrowserSync} bs\r\n */\r\nexports.init = function (bs) {\r\n bs.socket.on(EVENT_NAME, exports.socketEvent(bs));\r\n};\r\n/**\r\n * Respond to socket event\r\n */\r\nexports.socketEvent = function (bs) {\r\n return function (data) {\r\n if (!bs.canSync(data, OPT_PATH)) {\r\n return false;\r\n }\r\n if (data.path) {\r\n exports.setPath(data.path);\r\n }\r\n else {\r\n exports.setUrl(data.url);\r\n }\r\n };\r\n};\r\n/**\r\n * @param url\r\n */\r\nexports.setUrl = function (url) {\r\n window.location = url;\r\n};\r\n/**\r\n * @param path\r\n */\r\nexports.setPath = function (path) {\r\n window.location =\r\n window.location.protocol + \"//\" + window.location.host + path;\r\n};\r\n\n\n/***/ }),\n/* 33 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(34);\n\n\n/***/ }),\n/* 34 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar socket = __webpack_require__(13);\r\nvar shims = __webpack_require__(58);\r\nvar notify = __webpack_require__(26);\r\nvar codeSync = __webpack_require__(59);\r\nvar BrowserSync = __webpack_require__(69);\r\nvar ghostMode = __webpack_require__(71);\r\nvar emitter = __webpack_require__(7);\r\nvar events = __webpack_require__(12);\r\nvar utils = __webpack_require__(4);\r\nvar shouldReload = false;\r\nvar initialised = false;\r\n/**\r\n * @param options\r\n */\r\nexports.init = function (options) {\r\n if (shouldReload && options.reloadOnRestart) {\r\n utils.reloadBrowser();\r\n }\r\n var BS = window.___browserSync___ || {};\r\n if (!BS.client) {\r\n BS.client = true;\r\n var browserSync = new BrowserSync(options);\r\n // Always init on page load\r\n ghostMode.init(browserSync);\r\n codeSync.init(browserSync);\r\n notify.init(browserSync);\r\n if (options.notify) {\r\n notify.flash(\"Connected to BrowserSync\");\r\n }\r\n }\r\n if (!initialised) {\r\n socket.on(\"disconnect\", function () {\r\n if (options.notify) {\r\n notify.flash(\"Disconnected from BrowserSync\");\r\n }\r\n shouldReload = true;\r\n });\r\n initialised = true;\r\n }\r\n};\r\n/**\r\n * Handle individual socket connections\r\n */\r\nsocket.on(\"connection\", exports.init);\r\n/**debug:start**/\r\nif (window.__karma__) {\r\n window.__bs_scroll__ = __webpack_require__(11);\r\n window.__bs_clicks__ = __webpack_require__(27);\r\n window.__bs_location__ = __webpack_require__(32);\r\n window.__bs_inputs__ = __webpack_require__(29);\r\n window.__bs_toggles__ = __webpack_require__(30);\r\n window.__bs_submit__ = __webpack_require__(31);\r\n window.__bs_forms__ = __webpack_require__(28);\r\n window.__bs_utils__ = __webpack_require__(4);\r\n window.__bs_emitter__ = emitter;\r\n window.__bs = BrowserSync;\r\n window.__bs_notify__ = notify;\r\n window.__bs_code_sync__ = codeSync;\r\n window.__bs_ghost_mode__ = ghostMode;\r\n window.__bs_socket__ = socket;\r\n window.__bs_index__ = exports;\r\n}\r\n\n\n/***/ }),\n/* 35 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/**\n * Module dependencies.\n */\n\nvar url = __webpack_require__(36);\nvar parser = __webpack_require__(8);\nvar Manager = __webpack_require__(18);\nvar debug = __webpack_require__(1)('socket.io-client');\n\n/**\n * Module exports.\n */\n\nmodule.exports = exports = lookup;\n\n/**\n * Managers cache.\n */\n\nvar cache = exports.managers = {};\n\n/**\n * Looks up an existing `Manager` for multiplexing.\n * If the user summons:\n *\n * `io('http://localhost/a');`\n * `io('http://localhost/b');`\n *\n * We reuse the existing instance based on same scheme/port/host,\n * and we initialize sockets for each namespace.\n *\n * @api public\n */\n\nfunction lookup (uri, opts) {\n if (typeof uri === 'object') {\n opts = uri;\n uri = undefined;\n }\n\n opts = opts || {};\n\n var parsed = url(uri);\n var source = parsed.source;\n var id = parsed.id;\n var path = parsed.path;\n var sameNamespace = cache[id] && path in cache[id].nsps;\n var newConnection = opts.forceNew || opts['force new connection'] ||\n false === opts.multiplex || sameNamespace;\n\n var io;\n\n if (newConnection) {\n debug('ignoring socket cache for %s', source);\n io = Manager(source, opts);\n } else {\n if (!cache[id]) {\n debug('new io instance for %s', source);\n cache[id] = Manager(source, opts);\n }\n io = cache[id];\n }\n if (parsed.query && !opts.query) {\n opts.query = parsed.query;\n }\n return io.socket(parsed.path, opts);\n}\n\n/**\n * Protocol version.\n *\n * @api public\n */\n\nexports.protocol = parser.protocol;\n\n/**\n * `connect`.\n *\n * @param {String} uri\n * @api public\n */\n\nexports.connect = lookup;\n\n/**\n * Expose constructors for standalone build.\n *\n * @api public\n */\n\nexports.Manager = __webpack_require__(18);\nexports.Socket = __webpack_require__(23);\n\n\n/***/ }),\n/* 36 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(global) {\n/**\n * Module dependencies.\n */\n\nvar parseuri = __webpack_require__(14);\nvar debug = __webpack_require__(1)('socket.io-client:url');\n\n/**\n * Module exports.\n */\n\nmodule.exports = url;\n\n/**\n * URL parser.\n *\n * @param {String} url\n * @param {Object} An object meant to mimic window.location.\n * Defaults to window.location.\n * @api public\n */\n\nfunction url (uri, loc) {\n var obj = uri;\n\n // default to window.location\n loc = loc || global.location;\n if (null == uri) uri = loc.protocol + '//' + loc.host;\n\n // relative path support\n if ('string' === typeof uri) {\n if ('/' === uri.charAt(0)) {\n if ('/' === uri.charAt(1)) {\n uri = loc.protocol + uri;\n } else {\n uri = loc.host + uri;\n }\n }\n\n if (!/^(https?|wss?):\\/\\//.test(uri)) {\n debug('protocol-less url %s', uri);\n if ('undefined' !== typeof loc) {\n uri = loc.protocol + '//' + uri;\n } else {\n uri = 'https://' + uri;\n }\n }\n\n // parse\n debug('parse %s', uri);\n obj = parseuri(uri);\n }\n\n // make sure we treat `localhost:80` and `localhost` equally\n if (!obj.port) {\n if (/^(http|ws)$/.test(obj.protocol)) {\n obj.port = '80';\n } else if (/^(http|ws)s$/.test(obj.protocol)) {\n obj.port = '443';\n }\n }\n\n obj.path = obj.path || '/';\n\n var ipv6 = obj.host.indexOf(':') !== -1;\n var host = ipv6 ? '[' + obj.host + ']' : obj.host;\n\n // define unique id\n obj.id = obj.protocol + '://' + host + ':' + obj.port;\n // define href\n obj.href = obj.protocol + '://' + host + (loc && loc.port === obj.port ? '' : (':' + obj.port));\n\n return obj;\n}\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0)))\n\n/***/ }),\n/* 37 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n *\n * Expose `debug()` as the module.\n */\n\nexports = module.exports = createDebug.debug = createDebug['default'] = createDebug;\nexports.coerce = coerce;\nexports.disable = disable;\nexports.enable = enable;\nexports.enabled = enabled;\nexports.humanize = __webpack_require__(38);\n\n/**\n * The currently active debug mode names, and names to skip.\n */\n\nexports.names = [];\nexports.skips = [];\n\n/**\n * Map of special \"%n\" handling functions, for the debug \"format\" argument.\n *\n * Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n */\n\nexports.formatters = {};\n\n/**\n * Previous log timestamp.\n */\n\nvar prevTime;\n\n/**\n * Select a color.\n * @param {String} namespace\n * @return {Number}\n * @api private\n */\n\nfunction selectColor(namespace) {\n var hash = 0, i;\n\n for (i in namespace) {\n hash = ((hash << 5) - hash) + namespace.charCodeAt(i);\n hash |= 0; // Convert to 32bit integer\n }\n\n return exports.colors[Math.abs(hash) % exports.colors.length];\n}\n\n/**\n * Create a debugger with the given `namespace`.\n *\n * @param {String} namespace\n * @return {Function}\n * @api public\n */\n\nfunction createDebug(namespace) {\n\n function debug() {\n // disabled?\n if (!debug.enabled) return;\n\n var self = debug;\n\n // set `diff` timestamp\n var curr = +new Date();\n var ms = curr - (prevTime || curr);\n self.diff = ms;\n self.prev = prevTime;\n self.curr = curr;\n prevTime = curr;\n\n // turn the `arguments` into a proper Array\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n\n args[0] = exports.coerce(args[0]);\n\n if ('string' !== typeof args[0]) {\n // anything else let's inspect with %O\n args.unshift('%O');\n }\n\n // apply any `formatters` transformations\n var index = 0;\n args[0] = args[0].replace(/%([a-zA-Z%])/g, function(match, format) {\n // if we encounter an escaped % then don't increase the array index\n if (match === '%%') return match;\n index++;\n var formatter = exports.formatters[format];\n if ('function' === typeof formatter) {\n var val = args[index];\n match = formatter.call(self, val);\n\n // now we need to remove `args[index]` since it's inlined in the `format`\n args.splice(index, 1);\n index--;\n }\n return match;\n });\n\n // apply env-specific formatting (colors, etc.)\n exports.formatArgs.call(self, args);\n\n var logFn = debug.log || exports.log || console.log.bind(console);\n logFn.apply(self, args);\n }\n\n debug.namespace = namespace;\n debug.enabled = exports.enabled(namespace);\n debug.useColors = exports.useColors();\n debug.color = selectColor(namespace);\n\n // env-specific initialization logic for debug instances\n if ('function' === typeof exports.init) {\n exports.init(debug);\n }\n\n return debug;\n}\n\n/**\n * Enables a debug mode by namespaces. This can include modes\n * separated by a colon and wildcards.\n *\n * @param {String} namespaces\n * @api public\n */\n\nfunction enable(namespaces) {\n exports.save(namespaces);\n\n exports.names = [];\n exports.skips = [];\n\n var split = (typeof namespaces === 'string' ? namespaces : '').split(/[\\s,]+/);\n var len = split.length;\n\n for (var i = 0; i < len; i++) {\n if (!split[i]) continue; // ignore empty strings\n namespaces = split[i].replace(/\\*/g, '.*?');\n if (namespaces[0] === '-') {\n exports.skips.push(new RegExp('^' + namespaces.substr(1) + '$'));\n } else {\n exports.names.push(new RegExp('^' + namespaces + '$'));\n }\n }\n}\n\n/**\n * Disable debug output.\n *\n * @api public\n */\n\nfunction disable() {\n exports.enable('');\n}\n\n/**\n * Returns true if the given mode name is enabled, false otherwise.\n *\n * @param {String} name\n * @return {Boolean}\n * @api public\n */\n\nfunction enabled(name) {\n var i, len;\n for (i = 0, len = exports.skips.length; i < len; i++) {\n if (exports.skips[i].test(name)) {\n return false;\n }\n }\n for (i = 0, len = exports.names.length; i < len; i++) {\n if (exports.names[i].test(name)) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * Coerce `val`.\n *\n * @param {Mixed} val\n * @return {Mixed}\n * @api private\n */\n\nfunction coerce(val) {\n if (val instanceof Error) return val.stack || val.message;\n return val;\n}\n\n\n/***/ }),\n/* 38 */\n/***/ (function(module, exports) {\n\n/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n * - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function(val, options) {\n options = options || {};\n var type = typeof val;\n if (type === 'string' && val.length > 0) {\n return parse(val);\n } else if (type === 'number' && isNaN(val) === false) {\n return options.long ? fmtLong(val) : fmtShort(val);\n }\n throw new Error(\n 'val is not a non-empty string or a valid number. val=' +\n JSON.stringify(val)\n );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n str = String(str);\n if (str.length > 100) {\n return;\n }\n var match = /^((?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(\n str\n );\n if (!match) {\n return;\n }\n var n = parseFloat(match[1]);\n var type = (match[2] || 'ms').toLowerCase();\n switch (type) {\n case 'years':\n case 'year':\n case 'yrs':\n case 'yr':\n case 'y':\n return n * y;\n case 'days':\n case 'day':\n case 'd':\n return n * d;\n case 'hours':\n case 'hour':\n case 'hrs':\n case 'hr':\n case 'h':\n return n * h;\n case 'minutes':\n case 'minute':\n case 'mins':\n case 'min':\n case 'm':\n return n * m;\n case 'seconds':\n case 'second':\n case 'secs':\n case 'sec':\n case 's':\n return n * s;\n case 'milliseconds':\n case 'millisecond':\n case 'msecs':\n case 'msec':\n case 'ms':\n return n;\n default:\n return undefined;\n }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n if (ms >= d) {\n return Math.round(ms / d) + 'd';\n }\n if (ms >= h) {\n return Math.round(ms / h) + 'h';\n }\n if (ms >= m) {\n return Math.round(ms / m) + 'm';\n }\n if (ms >= s) {\n return Math.round(ms / s) + 's';\n }\n return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n return plural(ms, d, 'day') ||\n plural(ms, h, 'hour') ||\n plural(ms, m, 'minute') ||\n plural(ms, s, 'second') ||\n ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, n, name) {\n if (ms < n) {\n return;\n }\n if (ms < n * 1.5) {\n return Math.floor(ms / n) + ' ' + name;\n }\n return Math.ceil(ms / n) + ' ' + name + 's';\n}\n\n\n/***/ }),\n/* 39 */\n/***/ (function(module, exports) {\n\nvar toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n\n\n/***/ }),\n/* 40 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(global) {/*global Blob,File*/\n\n/**\n * Module requirements\n */\n\nvar isArray = __webpack_require__(41);\nvar isBuf = __webpack_require__(17);\nvar toString = Object.prototype.toString;\nvar withNativeBlob = typeof global.Blob === 'function' || toString.call(global.Blob) === '[object BlobConstructor]';\nvar withNativeFile = typeof global.File === 'function' || toString.call(global.File) === '[object FileConstructor]';\n\n/**\n * Replaces every Buffer | ArrayBuffer in packet with a numbered placeholder.\n * Anything with blobs or files should be fed through removeBlobs before coming\n * here.\n *\n * @param {Object} packet - socket.io event packet\n * @return {Object} with deconstructed packet and list of buffers\n * @api public\n */\n\nexports.deconstructPacket = function(packet) {\n var buffers = [];\n var packetData = packet.data;\n var pack = packet;\n pack.data = _deconstructPacket(packetData, buffers);\n pack.attachments = buffers.length; // number of binary 'attachments'\n return {packet: pack, buffers: buffers};\n};\n\nfunction _deconstructPacket(data, buffers) {\n if (!data) return data;\n\n if (isBuf(data)) {\n var placeholder = { _placeholder: true, num: buffers.length };\n buffers.push(data);\n return placeholder;\n } else if (isArray(data)) {\n var newData = new Array(data.length);\n for (var i = 0; i < data.length; i++) {\n newData[i] = _deconstructPacket(data[i], buffers);\n }\n return newData;\n } else if (typeof data === 'object' && !(data instanceof Date)) {\n var newData = {};\n for (var key in data) {\n newData[key] = _deconstructPacket(data[key], buffers);\n }\n return newData;\n }\n return data;\n}\n\n/**\n * Reconstructs a binary packet from its placeholder packet and buffers\n *\n * @param {Object} packet - event packet with placeholders\n * @param {Array} buffers - binary buffers to put in placeholder positions\n * @return {Object} reconstructed packet\n * @api public\n */\n\nexports.reconstructPacket = function(packet, buffers) {\n packet.data = _reconstructPacket(packet.data, buffers);\n packet.attachments = undefined; // no longer useful\n return packet;\n};\n\nfunction _reconstructPacket(data, buffers) {\n if (!data) return data;\n\n if (data && data._placeholder) {\n return buffers[data.num]; // appropriate buffer (should be natural order anyway)\n } else if (isArray(data)) {\n for (var i = 0; i < data.length; i++) {\n data[i] = _reconstructPacket(data[i], buffers);\n }\n } else if (typeof data === 'object') {\n for (var key in data) {\n data[key] = _reconstructPacket(data[key], buffers);\n }\n }\n\n return data;\n}\n\n/**\n * Asynchronously removes Blobs or Files from data via\n * FileReader's readAsArrayBuffer method. Used before encoding\n * data as msgpack. Calls callback with the blobless data.\n *\n * @param {Object} data\n * @param {Function} callback\n * @api private\n */\n\nexports.removeBlobs = function(data, callback) {\n function _removeBlobs(obj, curKey, containingObject) {\n if (!obj) return obj;\n\n // convert any blob\n if ((withNativeBlob && obj instanceof Blob) ||\n (withNativeFile && obj instanceof File)) {\n pendingBlobs++;\n\n // async filereader\n var fileReader = new FileReader();\n fileReader.onload = function() { // this.result == arraybuffer\n if (containingObject) {\n containingObject[curKey] = this.result;\n }\n else {\n bloblessData = this.result;\n }\n\n // if nothing pending its callback time\n if(! --pendingBlobs) {\n callback(bloblessData);\n }\n };\n\n fileReader.readAsArrayBuffer(obj); // blob -> arraybuffer\n } else if (isArray(obj)) { // handle array\n for (var i = 0; i < obj.length; i++) {\n _removeBlobs(obj[i], i, obj);\n }\n } else if (typeof obj === 'object' && !isBuf(obj)) { // and object\n for (var key in obj) {\n _removeBlobs(obj[key], key, obj);\n }\n }\n }\n\n var pendingBlobs = 0;\n var bloblessData = data;\n _removeBlobs(bloblessData);\n if (!pendingBlobs) {\n callback(bloblessData);\n }\n};\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0)))\n\n/***/ }),\n/* 41 */\n/***/ (function(module, exports) {\n\nvar toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n\n\n/***/ }),\n/* 42 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\nmodule.exports = __webpack_require__(43);\n\n/**\n * Exports parser\n *\n * @api public\n *\n */\nmodule.exports.parser = __webpack_require__(3);\n\n\n/***/ }),\n/* 43 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(global) {/**\n * Module dependencies.\n */\n\nvar transports = __webpack_require__(19);\nvar Emitter = __webpack_require__(2);\nvar debug = __webpack_require__(1)('engine.io-client:socket');\nvar index = __webpack_require__(22);\nvar parser = __webpack_require__(3);\nvar parseuri = __webpack_require__(14);\nvar parseqs = __webpack_require__(5);\n\n/**\n * Module exports.\n */\n\nmodule.exports = Socket;\n\n/**\n * Socket constructor.\n *\n * @param {String|Object} uri or options\n * @param {Object} options\n * @api public\n */\n\nfunction Socket (uri, opts) {\n if (!(this instanceof Socket)) return new Socket(uri, opts);\n\n opts = opts || {};\n\n if (uri && 'object' === typeof uri) {\n opts = uri;\n uri = null;\n }\n\n if (uri) {\n uri = parseuri(uri);\n opts.hostname = uri.host;\n opts.secure = uri.protocol === 'https' || uri.protocol === 'wss';\n opts.port = uri.port;\n if (uri.query) opts.query = uri.query;\n } else if (opts.host) {\n opts.hostname = parseuri(opts.host).host;\n }\n\n this.secure = null != opts.secure ? opts.secure\n : (global.location && 'https:' === location.protocol);\n\n if (opts.hostname && !opts.port) {\n // if no port is specified manually, use the protocol default\n opts.port = this.secure ? '443' : '80';\n }\n\n this.agent = opts.agent || false;\n this.hostname = opts.hostname ||\n (global.location ? location.hostname : 'localhost');\n this.port = opts.port || (global.location && location.port\n ? location.port\n : (this.secure ? 443 : 80));\n this.query = opts.query || {};\n if ('string' === typeof this.query) this.query = parseqs.decode(this.query);\n this.upgrade = false !== opts.upgrade;\n this.path = (opts.path || '/engine.io').replace(/\\/$/, '') + '/';\n this.forceJSONP = !!opts.forceJSONP;\n this.jsonp = false !== opts.jsonp;\n this.forceBase64 = !!opts.forceBase64;\n this.enablesXDR = !!opts.enablesXDR;\n this.timestampParam = opts.timestampParam || 't';\n this.timestampRequests = opts.timestampRequests;\n this.transports = opts.transports || ['polling', 'websocket'];\n this.transportOptions = opts.transportOptions || {};\n this.readyState = '';\n this.writeBuffer = [];\n this.prevBufferLen = 0;\n this.policyPort = opts.policyPort || 843;\n this.rememberUpgrade = opts.rememberUpgrade || false;\n this.binaryType = null;\n this.onlyBinaryUpgrades = opts.onlyBinaryUpgrades;\n this.perMessageDeflate = false !== opts.perMessageDeflate ? (opts.perMessageDeflate || {}) : false;\n\n if (true === this.perMessageDeflate) this.perMessageDeflate = {};\n if (this.perMessageDeflate && null == this.perMessageDeflate.threshold) {\n this.perMessageDeflate.threshold = 1024;\n }\n\n // SSL options for Node.js client\n this.pfx = opts.pfx || null;\n this.key = opts.key || null;\n this.passphrase = opts.passphrase || null;\n this.cert = opts.cert || null;\n this.ca = opts.ca || null;\n this.ciphers = opts.ciphers || null;\n this.rejectUnauthorized = opts.rejectUnauthorized === undefined ? true : opts.rejectUnauthorized;\n this.forceNode = !!opts.forceNode;\n\n // other options for Node.js client\n var freeGlobal = typeof global === 'object' && global;\n if (freeGlobal.global === freeGlobal) {\n if (opts.extraHeaders && Object.keys(opts.extraHeaders).length > 0) {\n this.extraHeaders = opts.extraHeaders;\n }\n\n if (opts.localAddress) {\n this.localAddress = opts.localAddress;\n }\n }\n\n // set on handshake\n this.id = null;\n this.upgrades = null;\n this.pingInterval = null;\n this.pingTimeout = null;\n\n // set on heartbeat\n this.pingIntervalTimer = null;\n this.pingTimeoutTimer = null;\n\n this.open();\n}\n\nSocket.priorWebsocketSuccess = false;\n\n/**\n * Mix in `Emitter`.\n */\n\nEmitter(Socket.prototype);\n\n/**\n * Protocol version.\n *\n * @api public\n */\n\nSocket.protocol = parser.protocol; // this is an int\n\n/**\n * Expose deps for legacy compatibility\n * and standalone browser access.\n */\n\nSocket.Socket = Socket;\nSocket.Transport = __webpack_require__(10);\nSocket.transports = __webpack_require__(19);\nSocket.parser = __webpack_require__(3);\n\n/**\n * Creates transport of the given type.\n *\n * @param {String} transport name\n * @return {Transport}\n * @api private\n */\n\nSocket.prototype.createTransport = function (name) {\n debug('creating transport \"%s\"', name);\n var query = clone(this.query);\n\n // append engine.io protocol identifier\n query.EIO = parser.protocol;\n\n // transport name\n query.transport = name;\n\n // per-transport options\n var options = this.transportOptions[name] || {};\n\n // session id if we already have one\n if (this.id) query.sid = this.id;\n\n var transport = new transports[name]({\n query: query,\n socket: this,\n agent: options.agent || this.agent,\n hostname: options.hostname || this.hostname,\n port: options.port || this.port,\n secure: options.secure || this.secure,\n path: options.path || this.path,\n forceJSONP: options.forceJSONP || this.forceJSONP,\n jsonp: options.jsonp || this.jsonp,\n forceBase64: options.forceBase64 || this.forceBase64,\n enablesXDR: options.enablesXDR || this.enablesXDR,\n timestampRequests: options.timestampRequests || this.timestampRequests,\n timestampParam: options.timestampParam || this.timestampParam,\n policyPort: options.policyPort || this.policyPort,\n pfx: options.pfx || this.pfx,\n key: options.key || this.key,\n passphrase: options.passphrase || this.passphrase,\n cert: options.cert || this.cert,\n ca: options.ca || this.ca,\n ciphers: options.ciphers || this.ciphers,\n rejectUnauthorized: options.rejectUnauthorized || this.rejectUnauthorized,\n perMessageDeflate: options.perMessageDeflate || this.perMessageDeflate,\n extraHeaders: options.extraHeaders || this.extraHeaders,\n forceNode: options.forceNode || this.forceNode,\n localAddress: options.localAddress || this.localAddress,\n requestTimeout: options.requestTimeout || this.requestTimeout,\n protocols: options.protocols || void (0)\n });\n\n return transport;\n};\n\nfunction clone (obj) {\n var o = {};\n for (var i in obj) {\n if (obj.hasOwnProperty(i)) {\n o[i] = obj[i];\n }\n }\n return o;\n}\n\n/**\n * Initializes transport to use and starts probe.\n *\n * @api private\n */\nSocket.prototype.open = function () {\n var transport;\n if (this.rememberUpgrade && Socket.priorWebsocketSuccess && this.transports.indexOf('websocket') !== -1) {\n transport = 'websocket';\n } else if (0 === this.transports.length) {\n // Emit error on next tick so it can be listened to\n var self = this;\n setTimeout(function () {\n self.emit('error', 'No transports available');\n }, 0);\n return;\n } else {\n transport = this.transports[0];\n }\n this.readyState = 'opening';\n\n // Retry with the next transport if the transport is disabled (jsonp: false)\n try {\n transport = this.createTransport(transport);\n } catch (e) {\n this.transports.shift();\n this.open();\n return;\n }\n\n transport.open();\n this.setTransport(transport);\n};\n\n/**\n * Sets the current transport. Disables the existing one (if any).\n *\n * @api private\n */\n\nSocket.prototype.setTransport = function (transport) {\n debug('setting transport %s', transport.name);\n var self = this;\n\n if (this.transport) {\n debug('clearing existing transport %s', this.transport.name);\n this.transport.removeAllListeners();\n }\n\n // set up transport\n this.transport = transport;\n\n // set up transport listeners\n transport\n .on('drain', function () {\n self.onDrain();\n })\n .on('packet', function (packet) {\n self.onPacket(packet);\n })\n .on('error', function (e) {\n self.onError(e);\n })\n .on('close', function () {\n self.onClose('transport close');\n });\n};\n\n/**\n * Probes a transport.\n *\n * @param {String} transport name\n * @api private\n */\n\nSocket.prototype.probe = function (name) {\n debug('probing transport \"%s\"', name);\n var transport = this.createTransport(name, { probe: 1 });\n var failed = false;\n var self = this;\n\n Socket.priorWebsocketSuccess = false;\n\n function onTransportOpen () {\n if (self.onlyBinaryUpgrades) {\n var upgradeLosesBinary = !this.supportsBinary && self.transport.supportsBinary;\n failed = failed || upgradeLosesBinary;\n }\n if (failed) return;\n\n debug('probe transport \"%s\" opened', name);\n transport.send([{ type: 'ping', data: 'probe' }]);\n transport.once('packet', function (msg) {\n if (failed) return;\n if ('pong' === msg.type && 'probe' === msg.data) {\n debug('probe transport \"%s\" pong', name);\n self.upgrading = true;\n self.emit('upgrading', transport);\n if (!transport) return;\n Socket.priorWebsocketSuccess = 'websocket' === transport.name;\n\n debug('pausing current transport \"%s\"', self.transport.name);\n self.transport.pause(function () {\n if (failed) return;\n if ('closed' === self.readyState) return;\n debug('changing transport and sending upgrade packet');\n\n cleanup();\n\n self.setTransport(transport);\n transport.send([{ type: 'upgrade' }]);\n self.emit('upgrade', transport);\n transport = null;\n self.upgrading = false;\n self.flush();\n });\n } else {\n debug('probe transport \"%s\" failed', name);\n var err = new Error('probe error');\n err.transport = transport.name;\n self.emit('upgradeError', err);\n }\n });\n }\n\n function freezeTransport () {\n if (failed) return;\n\n // Any callback called by transport should be ignored since now\n failed = true;\n\n cleanup();\n\n transport.close();\n transport = null;\n }\n\n // Handle any error that happens while probing\n function onerror (err) {\n var error = new Error('probe error: ' + err);\n error.transport = transport.name;\n\n freezeTransport();\n\n debug('probe transport \"%s\" failed because of error: %s', name, err);\n\n self.emit('upgradeError', error);\n }\n\n function onTransportClose () {\n onerror('transport closed');\n }\n\n // When the socket is closed while we're probing\n function onclose () {\n onerror('socket closed');\n }\n\n // When the socket is upgraded while we're probing\n function onupgrade (to) {\n if (transport && to.name !== transport.name) {\n debug('\"%s\" works - aborting \"%s\"', to.name, transport.name);\n freezeTransport();\n }\n }\n\n // Remove all listeners on the transport and on self\n function cleanup () {\n transport.removeListener('open', onTransportOpen);\n transport.removeListener('error', onerror);\n transport.removeListener('close', onTransportClose);\n self.removeListener('close', onclose);\n self.removeListener('upgrading', onupgrade);\n }\n\n transport.once('open', onTransportOpen);\n transport.once('error', onerror);\n transport.once('close', onTransportClose);\n\n this.once('close', onclose);\n this.once('upgrading', onupgrade);\n\n transport.open();\n};\n\n/**\n * Called when connection is deemed open.\n *\n * @api public\n */\n\nSocket.prototype.onOpen = function () {\n debug('socket open');\n this.readyState = 'open';\n Socket.priorWebsocketSuccess = 'websocket' === this.transport.name;\n this.emit('open');\n this.flush();\n\n // we check for `readyState` in case an `open`\n // listener already closed the socket\n if ('open' === this.readyState && this.upgrade && this.transport.pause) {\n debug('starting upgrade probes');\n for (var i = 0, l = this.upgrades.length; i < l; i++) {\n this.probe(this.upgrades[i]);\n }\n }\n};\n\n/**\n * Handles a packet.\n *\n * @api private\n */\n\nSocket.prototype.onPacket = function (packet) {\n if ('opening' === this.readyState || 'open' === this.readyState ||\n 'closing' === this.readyState) {\n debug('socket receive: type \"%s\", data \"%s\"', packet.type, packet.data);\n\n this.emit('packet', packet);\n\n // Socket is live - any packet counts\n this.emit('heartbeat');\n\n switch (packet.type) {\n case 'open':\n this.onHandshake(JSON.parse(packet.data));\n break;\n\n case 'pong':\n this.setPing();\n this.emit('pong');\n break;\n\n case 'error':\n var err = new Error('server error');\n err.code = packet.data;\n this.onError(err);\n break;\n\n case 'message':\n this.emit('data', packet.data);\n this.emit('message', packet.data);\n break;\n }\n } else {\n debug('packet received with socket readyState \"%s\"', this.readyState);\n }\n};\n\n/**\n * Called upon handshake completion.\n *\n * @param {Object} handshake obj\n * @api private\n */\n\nSocket.prototype.onHandshake = function (data) {\n this.emit('handshake', data);\n this.id = data.sid;\n this.transport.query.sid = data.sid;\n this.upgrades = this.filterUpgrades(data.upgrades);\n this.pingInterval = data.pingInterval;\n this.pingTimeout = data.pingTimeout;\n this.onOpen();\n // In case open handler closes socket\n if ('closed' === this.readyState) return;\n this.setPing();\n\n // Prolong liveness of socket on heartbeat\n this.removeListener('heartbeat', this.onHeartbeat);\n this.on('heartbeat', this.onHeartbeat);\n};\n\n/**\n * Resets ping timeout.\n *\n * @api private\n */\n\nSocket.prototype.onHeartbeat = function (timeout) {\n clearTimeout(this.pingTimeoutTimer);\n var self = this;\n self.pingTimeoutTimer = setTimeout(function () {\n if ('closed' === self.readyState) return;\n self.onClose('ping timeout');\n }, timeout || (self.pingInterval + self.pingTimeout));\n};\n\n/**\n * Pings server every `this.pingInterval` and expects response\n * within `this.pingTimeout` or closes connection.\n *\n * @api private\n */\n\nSocket.prototype.setPing = function () {\n var self = this;\n clearTimeout(self.pingIntervalTimer);\n self.pingIntervalTimer = setTimeout(function () {\n debug('writing ping packet - expecting pong within %sms', self.pingTimeout);\n self.ping();\n self.onHeartbeat(self.pingTimeout);\n }, self.pingInterval);\n};\n\n/**\n* Sends a ping packet.\n*\n* @api private\n*/\n\nSocket.prototype.ping = function () {\n var self = this;\n this.sendPacket('ping', function () {\n self.emit('ping');\n });\n};\n\n/**\n * Called on `drain` event\n *\n * @api private\n */\n\nSocket.prototype.onDrain = function () {\n this.writeBuffer.splice(0, this.prevBufferLen);\n\n // setting prevBufferLen = 0 is very important\n // for example, when upgrading, upgrade packet is sent over,\n // and a nonzero prevBufferLen could cause problems on `drain`\n this.prevBufferLen = 0;\n\n if (0 === this.writeBuffer.length) {\n this.emit('drain');\n } else {\n this.flush();\n }\n};\n\n/**\n * Flush write buffers.\n *\n * @api private\n */\n\nSocket.prototype.flush = function () {\n if ('closed' !== this.readyState && this.transport.writable &&\n !this.upgrading && this.writeBuffer.length) {\n debug('flushing %d packets in socket', this.writeBuffer.length);\n this.transport.send(this.writeBuffer);\n // keep track of current length of writeBuffer\n // splice writeBuffer and callbackBuffer on `drain`\n this.prevBufferLen = this.writeBuffer.length;\n this.emit('flush');\n }\n};\n\n/**\n * Sends a message.\n *\n * @param {String} message.\n * @param {Function} callback function.\n * @param {Object} options.\n * @return {Socket} for chaining.\n * @api public\n */\n\nSocket.prototype.write =\nSocket.prototype.send = function (msg, options, fn) {\n this.sendPacket('message', msg, options, fn);\n return this;\n};\n\n/**\n * Sends a packet.\n *\n * @param {String} packet type.\n * @param {String} data.\n * @param {Object} options.\n * @param {Function} callback function.\n * @api private\n */\n\nSocket.prototype.sendPacket = function (type, data, options, fn) {\n if ('function' === typeof data) {\n fn = data;\n data = undefined;\n }\n\n if ('function' === typeof options) {\n fn = options;\n options = null;\n }\n\n if ('closing' === this.readyState || 'closed' === this.readyState) {\n return;\n }\n\n options = options || {};\n options.compress = false !== options.compress;\n\n var packet = {\n type: type,\n data: data,\n options: options\n };\n this.emit('packetCreate', packet);\n this.writeBuffer.push(packet);\n if (fn) this.once('flush', fn);\n this.flush();\n};\n\n/**\n * Closes the connection.\n *\n * @api private\n */\n\nSocket.prototype.close = function () {\n if ('opening' === this.readyState || 'open' === this.readyState) {\n this.readyState = 'closing';\n\n var self = this;\n\n if (this.writeBuffer.length) {\n this.once('drain', function () {\n if (this.upgrading) {\n waitForUpgrade();\n } else {\n close();\n }\n });\n } else if (this.upgrading) {\n waitForUpgrade();\n } else {\n close();\n }\n }\n\n function close () {\n self.onClose('forced close');\n debug('socket closing - telling transport to close');\n self.transport.close();\n }\n\n function cleanupAndClose () {\n self.removeListener('upgrade', cleanupAndClose);\n self.removeListener('upgradeError', cleanupAndClose);\n close();\n }\n\n function waitForUpgrade () {\n // wait for upgrade to finish since we can't send packets while pausing a transport\n self.once('upgrade', cleanupAndClose);\n self.once('upgradeError', cleanupAndClose);\n }\n\n return this;\n};\n\n/**\n * Called upon transport error\n *\n * @api private\n */\n\nSocket.prototype.onError = function (err) {\n debug('socket error %j', err);\n Socket.priorWebsocketSuccess = false;\n this.emit('error', err);\n this.onClose('transport error', err);\n};\n\n/**\n * Called upon transport close.\n *\n * @api private\n */\n\nSocket.prototype.onClose = function (reason, desc) {\n if ('opening' === this.readyState || 'open' === this.readyState || 'closing' === this.readyState) {\n debug('socket close with reason: \"%s\"', reason);\n var self = this;\n\n // clear timers\n clearTimeout(this.pingIntervalTimer);\n clearTimeout(this.pingTimeoutTimer);\n\n // stop event from firing again for transport\n this.transport.removeAllListeners('close');\n\n // ensure transport won't stay open\n this.transport.close();\n\n // ignore further transport communication\n this.transport.removeAllListeners();\n\n // set ready state\n this.readyState = 'closed';\n\n // clear session id\n this.id = null;\n\n // emit close event\n this.emit('close', reason, desc);\n\n // clean buffers after, so users can still\n // grab the buffers on `close` event\n self.writeBuffer = [];\n self.prevBufferLen = 0;\n }\n};\n\n/**\n * Filters upgrades, returning only those matching client transports.\n *\n * @param {Array} server upgrades\n * @api private\n *\n */\n\nSocket.prototype.filterUpgrades = function (upgrades) {\n var filteredUpgrades = [];\n for (var i = 0, j = upgrades.length; i < j; i++) {\n if (~index(this.transports, upgrades[i])) filteredUpgrades.push(upgrades[i]);\n }\n return filteredUpgrades;\n};\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0)))\n\n/***/ }),\n/* 44 */\n/***/ (function(module, exports) {\n\n\n/**\n * Module exports.\n *\n * Logic borrowed from Modernizr:\n *\n * - https://github.com/Modernizr/Modernizr/blob/master/feature-detects/cors.js\n */\n\ntry {\n module.exports = typeof XMLHttpRequest !== 'undefined' &&\n 'withCredentials' in new XMLHttpRequest();\n} catch (err) {\n // if XMLHttp support is disabled in IE then it will throw\n // when trying to create\n module.exports = false;\n}\n\n\n/***/ }),\n/* 45 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(global) {/**\n * Module requirements.\n */\n\nvar XMLHttpRequest = __webpack_require__(9);\nvar Polling = __webpack_require__(20);\nvar Emitter = __webpack_require__(2);\nvar inherit = __webpack_require__(6);\nvar debug = __webpack_require__(1)('engine.io-client:polling-xhr');\n\n/**\n * Module exports.\n */\n\nmodule.exports = XHR;\nmodule.exports.Request = Request;\n\n/**\n * Empty function\n */\n\nfunction empty () {}\n\n/**\n * XHR Polling constructor.\n *\n * @param {Object} opts\n * @api public\n */\n\nfunction XHR (opts) {\n Polling.call(this, opts);\n this.requestTimeout = opts.requestTimeout;\n this.extraHeaders = opts.extraHeaders;\n\n if (global.location) {\n var isSSL = 'https:' === location.protocol;\n var port = location.port;\n\n // some user agents have empty `location.port`\n if (!port) {\n port = isSSL ? 443 : 80;\n }\n\n this.xd = opts.hostname !== global.location.hostname ||\n port !== opts.port;\n this.xs = opts.secure !== isSSL;\n }\n}\n\n/**\n * Inherits from Polling.\n */\n\ninherit(XHR, Polling);\n\n/**\n * XHR supports binary\n */\n\nXHR.prototype.supportsBinary = true;\n\n/**\n * Creates a request.\n *\n * @param {String} method\n * @api private\n */\n\nXHR.prototype.request = function (opts) {\n opts = opts || {};\n opts.uri = this.uri();\n opts.xd = this.xd;\n opts.xs = this.xs;\n opts.agent = this.agent || false;\n opts.supportsBinary = this.supportsBinary;\n opts.enablesXDR = this.enablesXDR;\n\n // SSL options for Node.js client\n opts.pfx = this.pfx;\n opts.key = this.key;\n opts.passphrase = this.passphrase;\n opts.cert = this.cert;\n opts.ca = this.ca;\n opts.ciphers = this.ciphers;\n opts.rejectUnauthorized = this.rejectUnauthorized;\n opts.requestTimeout = this.requestTimeout;\n\n // other options for Node.js client\n opts.extraHeaders = this.extraHeaders;\n\n return new Request(opts);\n};\n\n/**\n * Sends data.\n *\n * @param {String} data to send.\n * @param {Function} called upon flush.\n * @api private\n */\n\nXHR.prototype.doWrite = function (data, fn) {\n var isBinary = typeof data !== 'string' && data !== undefined;\n var req = this.request({ method: 'POST', data: data, isBinary: isBinary });\n var self = this;\n req.on('success', fn);\n req.on('error', function (err) {\n self.onError('xhr post error', err);\n });\n this.sendXhr = req;\n};\n\n/**\n * Starts a poll cycle.\n *\n * @api private\n */\n\nXHR.prototype.doPoll = function () {\n debug('xhr poll');\n var req = this.request();\n var self = this;\n req.on('data', function (data) {\n self.onData(data);\n });\n req.on('error', function (err) {\n self.onError('xhr poll error', err);\n });\n this.pollXhr = req;\n};\n\n/**\n * Request constructor\n *\n * @param {Object} options\n * @api public\n */\n\nfunction Request (opts) {\n this.method = opts.method || 'GET';\n this.uri = opts.uri;\n this.xd = !!opts.xd;\n this.xs = !!opts.xs;\n this.async = false !== opts.async;\n this.data = undefined !== opts.data ? opts.data : null;\n this.agent = opts.agent;\n this.isBinary = opts.isBinary;\n this.supportsBinary = opts.supportsBinary;\n this.enablesXDR = opts.enablesXDR;\n this.requestTimeout = opts.requestTimeout;\n\n // SSL options for Node.js client\n this.pfx = opts.pfx;\n this.key = opts.key;\n this.passphrase = opts.passphrase;\n this.cert = opts.cert;\n this.ca = opts.ca;\n this.ciphers = opts.ciphers;\n this.rejectUnauthorized = opts.rejectUnauthorized;\n\n // other options for Node.js client\n this.extraHeaders = opts.extraHeaders;\n\n this.create();\n}\n\n/**\n * Mix in `Emitter`.\n */\n\nEmitter(Request.prototype);\n\n/**\n * Creates the XHR object and sends the request.\n *\n * @api private\n */\n\nRequest.prototype.create = function () {\n var opts = { agent: this.agent, xdomain: this.xd, xscheme: this.xs, enablesXDR: this.enablesXDR };\n\n // SSL options for Node.js client\n opts.pfx = this.pfx;\n opts.key = this.key;\n opts.passphrase = this.passphrase;\n opts.cert = this.cert;\n opts.ca = this.ca;\n opts.ciphers = this.ciphers;\n opts.rejectUnauthorized = this.rejectUnauthorized;\n\n var xhr = this.xhr = new XMLHttpRequest(opts);\n var self = this;\n\n try {\n debug('xhr open %s: %s', this.method, this.uri);\n xhr.open(this.method, this.uri, this.async);\n try {\n if (this.extraHeaders) {\n xhr.setDisableHeaderCheck && xhr.setDisableHeaderCheck(true);\n for (var i in this.extraHeaders) {\n if (this.extraHeaders.hasOwnProperty(i)) {\n xhr.setRequestHeader(i, this.extraHeaders[i]);\n }\n }\n }\n } catch (e) {}\n\n if ('POST' === this.method) {\n try {\n if (this.isBinary) {\n xhr.setRequestHeader('Content-type', 'application/octet-stream');\n } else {\n xhr.setRequestHeader('Content-type', 'text/plain;charset=UTF-8');\n }\n } catch (e) {}\n }\n\n try {\n xhr.setRequestHeader('Accept', '*/*');\n } catch (e) {}\n\n // ie6 check\n if ('withCredentials' in xhr) {\n xhr.withCredentials = true;\n }\n\n if (this.requestTimeout) {\n xhr.timeout = this.requestTimeout;\n }\n\n if (this.hasXDR()) {\n xhr.onload = function () {\n self.onLoad();\n };\n xhr.onerror = function () {\n self.onError(xhr.responseText);\n };\n } else {\n xhr.onreadystatechange = function () {\n if (xhr.readyState === 2) {\n var contentType;\n try {\n contentType = xhr.getResponseHeader('Content-Type');\n } catch (e) {}\n if (contentType === 'application/octet-stream') {\n xhr.responseType = 'arraybuffer';\n }\n }\n if (4 !== xhr.readyState) return;\n if (200 === xhr.status || 1223 === xhr.status) {\n self.onLoad();\n } else {\n // make sure the `error` event handler that's user-set\n // does not throw in the same tick and gets caught here\n setTimeout(function () {\n self.onError(xhr.status);\n }, 0);\n }\n };\n }\n\n debug('xhr data %s', this.data);\n xhr.send(this.data);\n } catch (e) {\n // Need to defer since .create() is called directly fhrom the constructor\n // and thus the 'error' event can only be only bound *after* this exception\n // occurs. Therefore, also, we cannot throw here at all.\n setTimeout(function () {\n self.onError(e);\n }, 0);\n return;\n }\n\n if (global.document) {\n this.index = Request.requestsCount++;\n Request.requests[this.index] = this;\n }\n};\n\n/**\n * Called upon successful response.\n *\n * @api private\n */\n\nRequest.prototype.onSuccess = function () {\n this.emit('success');\n this.cleanup();\n};\n\n/**\n * Called if we have data.\n *\n * @api private\n */\n\nRequest.prototype.onData = function (data) {\n this.emit('data', data);\n this.onSuccess();\n};\n\n/**\n * Called upon error.\n *\n * @api private\n */\n\nRequest.prototype.onError = function (err) {\n this.emit('error', err);\n this.cleanup(true);\n};\n\n/**\n * Cleans up house.\n *\n * @api private\n */\n\nRequest.prototype.cleanup = function (fromError) {\n if ('undefined' === typeof this.xhr || null === this.xhr) {\n return;\n }\n // xmlhttprequest\n if (this.hasXDR()) {\n this.xhr.onload = this.xhr.onerror = empty;\n } else {\n this.xhr.onreadystatechange = empty;\n }\n\n if (fromError) {\n try {\n this.xhr.abort();\n } catch (e) {}\n }\n\n if (global.document) {\n delete Request.requests[this.index];\n }\n\n this.xhr = null;\n};\n\n/**\n * Called upon load.\n *\n * @api private\n */\n\nRequest.prototype.onLoad = function () {\n var data;\n try {\n var contentType;\n try {\n contentType = this.xhr.getResponseHeader('Content-Type');\n } catch (e) {}\n if (contentType === 'application/octet-stream') {\n data = this.xhr.response || this.xhr.responseText;\n } else {\n data = this.xhr.responseText;\n }\n } catch (e) {\n this.onError(e);\n }\n if (null != data) {\n this.onData(data);\n }\n};\n\n/**\n * Check if it has XDomainRequest.\n *\n * @api private\n */\n\nRequest.prototype.hasXDR = function () {\n return 'undefined' !== typeof global.XDomainRequest && !this.xs && this.enablesXDR;\n};\n\n/**\n * Aborts the request.\n *\n * @api public\n */\n\nRequest.prototype.abort = function () {\n this.cleanup();\n};\n\n/**\n * Aborts pending requests when unloading the window. This is needed to prevent\n * memory leaks (e.g. when using IE) and to ensure that no spurious error is\n * emitted.\n */\n\nRequest.requestsCount = 0;\nRequest.requests = {};\n\nif (global.document) {\n if (global.attachEvent) {\n global.attachEvent('onunload', unloadHandler);\n } else if (global.addEventListener) {\n global.addEventListener('beforeunload', unloadHandler, false);\n }\n}\n\nfunction unloadHandler () {\n for (var i in Request.requests) {\n if (Request.requests.hasOwnProperty(i)) {\n Request.requests[i].abort();\n }\n }\n}\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0)))\n\n/***/ }),\n/* 46 */\n/***/ (function(module, exports) {\n\n\n/**\n * Gets the keys for an object.\n *\n * @return {Array} keys\n * @api private\n */\n\nmodule.exports = Object.keys || function keys (obj){\n var arr = [];\n var has = Object.prototype.hasOwnProperty;\n\n for (var i in obj) {\n if (has.call(obj, i)) {\n arr.push(i);\n }\n }\n return arr;\n};\n\n\n/***/ }),\n/* 47 */\n/***/ (function(module, exports) {\n\n/**\n * An abstraction for slicing an arraybuffer even when\n * ArrayBuffer.prototype.slice is not supported\n *\n * @api public\n */\n\nmodule.exports = function(arraybuffer, start, end) {\n var bytes = arraybuffer.byteLength;\n start = start || 0;\n end = end || bytes;\n\n if (arraybuffer.slice) { return arraybuffer.slice(start, end); }\n\n if (start < 0) { start += bytes; }\n if (end < 0) { end += bytes; }\n if (end > bytes) { end = bytes; }\n\n if (start >= bytes || start >= end || bytes === 0) {\n return new ArrayBuffer(0);\n }\n\n var abv = new Uint8Array(arraybuffer);\n var result = new Uint8Array(end - start);\n for (var i = start, ii = 0; i < end; i++, ii++) {\n result[ii] = abv[i];\n }\n return result.buffer;\n};\n\n\n/***/ }),\n/* 48 */\n/***/ (function(module, exports) {\n\nmodule.exports = after\n\nfunction after(count, callback, err_cb) {\n var bail = false\n err_cb = err_cb || noop\n proxy.count = count\n\n return (count === 0) ? callback() : proxy\n\n function proxy(err, result) {\n if (proxy.count <= 0) {\n throw new Error('after called too many times')\n }\n --proxy.count\n\n // after first error, rest are passed to err_cb\n if (err) {\n bail = true\n callback(err)\n // future error callbacks will go to error handler\n callback = err_cb\n } else if (proxy.count === 0 && !bail) {\n callback(null, result)\n }\n }\n}\n\nfunction noop() {}\n\n\n/***/ }),\n/* 49 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(module, global) {var __WEBPACK_AMD_DEFINE_RESULT__;/*! https://mths.be/utf8js v2.1.2 by @mathias */\n;(function(root) {\n\n\t// Detect free variables `exports`\n\tvar freeExports = typeof exports == 'object' && exports;\n\n\t// Detect free variable `module`\n\tvar freeModule = typeof module == 'object' && module &&\n\t\tmodule.exports == freeExports && module;\n\n\t// Detect free variable `global`, from Node.js or Browserified code,\n\t// and use it as `root`\n\tvar freeGlobal = typeof global == 'object' && global;\n\tif (freeGlobal.global === freeGlobal || freeGlobal.window === freeGlobal) {\n\t\troot = freeGlobal;\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\tvar stringFromCharCode = String.fromCharCode;\n\n\t// Taken from https://mths.be/punycode\n\tfunction ucs2decode(string) {\n\t\tvar output = [];\n\t\tvar counter = 0;\n\t\tvar length = string.length;\n\t\tvar value;\n\t\tvar extra;\n\t\twhile (counter < length) {\n\t\t\tvalue = string.charCodeAt(counter++);\n\t\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t\t// high surrogate, and there is a next character\n\t\t\t\textra = string.charCodeAt(counter++);\n\t\t\t\tif ((extra & 0xFC00) == 0xDC00) { // low surrogate\n\t\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t\t} else {\n\t\t\t\t\t// unmatched surrogate; only append this code unit, in case the next\n\t\t\t\t\t// code unit is the high surrogate of a surrogate pair\n\t\t\t\t\toutput.push(value);\n\t\t\t\t\tcounter--;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\toutput.push(value);\n\t\t\t}\n\t\t}\n\t\treturn output;\n\t}\n\n\t// Taken from https://mths.be/punycode\n\tfunction ucs2encode(array) {\n\t\tvar length = array.length;\n\t\tvar index = -1;\n\t\tvar value;\n\t\tvar output = '';\n\t\twhile (++index < length) {\n\t\t\tvalue = array[index];\n\t\t\tif (value > 0xFFFF) {\n\t\t\t\tvalue -= 0x10000;\n\t\t\t\toutput += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800);\n\t\t\t\tvalue = 0xDC00 | value & 0x3FF;\n\t\t\t}\n\t\t\toutput += stringFromCharCode(value);\n\t\t}\n\t\treturn output;\n\t}\n\n\tfunction checkScalarValue(codePoint, strict) {\n\t\tif (codePoint >= 0xD800 && codePoint <= 0xDFFF) {\n\t\t\tif (strict) {\n\t\t\t\tthrow Error(\n\t\t\t\t\t'Lone surrogate U+' + codePoint.toString(16).toUpperCase() +\n\t\t\t\t\t' is not a scalar value'\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t}\n\t/*--------------------------------------------------------------------------*/\n\n\tfunction createByte(codePoint, shift) {\n\t\treturn stringFromCharCode(((codePoint >> shift) & 0x3F) | 0x80);\n\t}\n\n\tfunction encodeCodePoint(codePoint, strict) {\n\t\tif ((codePoint & 0xFFFFFF80) == 0) { // 1-byte sequence\n\t\t\treturn stringFromCharCode(codePoint);\n\t\t}\n\t\tvar symbol = '';\n\t\tif ((codePoint & 0xFFFFF800) == 0) { // 2-byte sequence\n\t\t\tsymbol = stringFromCharCode(((codePoint >> 6) & 0x1F) | 0xC0);\n\t\t}\n\t\telse if ((codePoint & 0xFFFF0000) == 0) { // 3-byte sequence\n\t\t\tif (!checkScalarValue(codePoint, strict)) {\n\t\t\t\tcodePoint = 0xFFFD;\n\t\t\t}\n\t\t\tsymbol = stringFromCharCode(((codePoint >> 12) & 0x0F) | 0xE0);\n\t\t\tsymbol += createByte(codePoint, 6);\n\t\t}\n\t\telse if ((codePoint & 0xFFE00000) == 0) { // 4-byte sequence\n\t\t\tsymbol = stringFromCharCode(((codePoint >> 18) & 0x07) | 0xF0);\n\t\t\tsymbol += createByte(codePoint, 12);\n\t\t\tsymbol += createByte(codePoint, 6);\n\t\t}\n\t\tsymbol += stringFromCharCode((codePoint & 0x3F) | 0x80);\n\t\treturn symbol;\n\t}\n\n\tfunction utf8encode(string, opts) {\n\t\topts = opts || {};\n\t\tvar strict = false !== opts.strict;\n\n\t\tvar codePoints = ucs2decode(string);\n\t\tvar length = codePoints.length;\n\t\tvar index = -1;\n\t\tvar codePoint;\n\t\tvar byteString = '';\n\t\twhile (++index < length) {\n\t\t\tcodePoint = codePoints[index];\n\t\t\tbyteString += encodeCodePoint(codePoint, strict);\n\t\t}\n\t\treturn byteString;\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\tfunction readContinuationByte() {\n\t\tif (byteIndex >= byteCount) {\n\t\t\tthrow Error('Invalid byte index');\n\t\t}\n\n\t\tvar continuationByte = byteArray[byteIndex] & 0xFF;\n\t\tbyteIndex++;\n\n\t\tif ((continuationByte & 0xC0) == 0x80) {\n\t\t\treturn continuationByte & 0x3F;\n\t\t}\n\n\t\t// If we end up here, it’s not a continuation byte\n\t\tthrow Error('Invalid continuation byte');\n\t}\n\n\tfunction decodeSymbol(strict) {\n\t\tvar byte1;\n\t\tvar byte2;\n\t\tvar byte3;\n\t\tvar byte4;\n\t\tvar codePoint;\n\n\t\tif (byteIndex > byteCount) {\n\t\t\tthrow Error('Invalid byte index');\n\t\t}\n\n\t\tif (byteIndex == byteCount) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Read first byte\n\t\tbyte1 = byteArray[byteIndex] & 0xFF;\n\t\tbyteIndex++;\n\n\t\t// 1-byte sequence (no continuation bytes)\n\t\tif ((byte1 & 0x80) == 0) {\n\t\t\treturn byte1;\n\t\t}\n\n\t\t// 2-byte sequence\n\t\tif ((byte1 & 0xE0) == 0xC0) {\n\t\t\tbyte2 = readContinuationByte();\n\t\t\tcodePoint = ((byte1 & 0x1F) << 6) | byte2;\n\t\t\tif (codePoint >= 0x80) {\n\t\t\t\treturn codePoint;\n\t\t\t} else {\n\t\t\t\tthrow Error('Invalid continuation byte');\n\t\t\t}\n\t\t}\n\n\t\t// 3-byte sequence (may include unpaired surrogates)\n\t\tif ((byte1 & 0xF0) == 0xE0) {\n\t\t\tbyte2 = readContinuationByte();\n\t\t\tbyte3 = readContinuationByte();\n\t\t\tcodePoint = ((byte1 & 0x0F) << 12) | (byte2 << 6) | byte3;\n\t\t\tif (codePoint >= 0x0800) {\n\t\t\t\treturn checkScalarValue(codePoint, strict) ? codePoint : 0xFFFD;\n\t\t\t} else {\n\t\t\t\tthrow Error('Invalid continuation byte');\n\t\t\t}\n\t\t}\n\n\t\t// 4-byte sequence\n\t\tif ((byte1 & 0xF8) == 0xF0) {\n\t\t\tbyte2 = readContinuationByte();\n\t\t\tbyte3 = readContinuationByte();\n\t\t\tbyte4 = readContinuationByte();\n\t\t\tcodePoint = ((byte1 & 0x07) << 0x12) | (byte2 << 0x0C) |\n\t\t\t\t(byte3 << 0x06) | byte4;\n\t\t\tif (codePoint >= 0x010000 && codePoint <= 0x10FFFF) {\n\t\t\t\treturn codePoint;\n\t\t\t}\n\t\t}\n\n\t\tthrow Error('Invalid UTF-8 detected');\n\t}\n\n\tvar byteArray;\n\tvar byteCount;\n\tvar byteIndex;\n\tfunction utf8decode(byteString, opts) {\n\t\topts = opts || {};\n\t\tvar strict = false !== opts.strict;\n\n\t\tbyteArray = ucs2decode(byteString);\n\t\tbyteCount = byteArray.length;\n\t\tbyteIndex = 0;\n\t\tvar codePoints = [];\n\t\tvar tmp;\n\t\twhile ((tmp = decodeSymbol(strict)) !== false) {\n\t\t\tcodePoints.push(tmp);\n\t\t}\n\t\treturn ucs2encode(codePoints);\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\tvar utf8 = {\n\t\t'version': '2.1.2',\n\t\t'encode': utf8encode,\n\t\t'decode': utf8decode\n\t};\n\n\t// Some AMD build optimizers, like r.js, check for specific condition patterns\n\t// like the following:\n\tif (\n\t\ttrue\n\t) {\n\t\t!(__WEBPACK_AMD_DEFINE_RESULT__ = (function() {\n\t\t\treturn utf8;\n\t\t}).call(exports, __webpack_require__, exports, module),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\t}\telse if (freeExports && !freeExports.nodeType) {\n\t\tif (freeModule) { // in Node.js or RingoJS v0.8.0+\n\t\t\tfreeModule.exports = utf8;\n\t\t} else { // in Narwhal or RingoJS v0.7.0-\n\t\t\tvar object = {};\n\t\t\tvar hasOwnProperty = object.hasOwnProperty;\n\t\t\tfor (var key in utf8) {\n\t\t\t\thasOwnProperty.call(utf8, key) && (freeExports[key] = utf8[key]);\n\t\t\t}\n\t\t}\n\t} else { // in Rhino or a web browser\n\t\troot.utf8 = utf8;\n\t}\n\n}(this));\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(50)(module), __webpack_require__(0)))\n\n/***/ }),\n/* 50 */\n/***/ (function(module, exports) {\n\nmodule.exports = function(module) {\r\n\tif(!module.webpackPolyfill) {\r\n\t\tmodule.deprecate = function() {};\r\n\t\tmodule.paths = [];\r\n\t\t// module.parent = undefined by default\r\n\t\tif(!module.children) module.children = [];\r\n\t\tObject.defineProperty(module, \"loaded\", {\r\n\t\t\tenumerable: true,\r\n\t\t\tget: function() {\r\n\t\t\t\treturn module.l;\r\n\t\t\t}\r\n\t\t});\r\n\t\tObject.defineProperty(module, \"id\", {\r\n\t\t\tenumerable: true,\r\n\t\t\tget: function() {\r\n\t\t\t\treturn module.i;\r\n\t\t\t}\r\n\t\t});\r\n\t\tmodule.webpackPolyfill = 1;\r\n\t}\r\n\treturn module;\r\n};\r\n\n\n/***/ }),\n/* 51 */\n/***/ (function(module, exports) {\n\n/*\n * base64-arraybuffer\n * https://github.com/niklasvh/base64-arraybuffer\n *\n * Copyright (c) 2012 Niklas von Hertzen\n * Licensed under the MIT license.\n */\n(function(){\n \"use strict\";\n\n var chars = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\n\n // Use a lookup table to find the index.\n var lookup = new Uint8Array(256);\n for (var i = 0; i < chars.length; i++) {\n lookup[chars.charCodeAt(i)] = i;\n }\n\n exports.encode = function(arraybuffer) {\n var bytes = new Uint8Array(arraybuffer),\n i, len = bytes.length, base64 = \"\";\n\n for (i = 0; i < len; i+=3) {\n base64 += chars[bytes[i] >> 2];\n base64 += chars[((bytes[i] & 3) << 4) | (bytes[i + 1] >> 4)];\n base64 += chars[((bytes[i + 1] & 15) << 2) | (bytes[i + 2] >> 6)];\n base64 += chars[bytes[i + 2] & 63];\n }\n\n if ((len % 3) === 2) {\n base64 = base64.substring(0, base64.length - 1) + \"=\";\n } else if (len % 3 === 1) {\n base64 = base64.substring(0, base64.length - 2) + \"==\";\n }\n\n return base64;\n };\n\n exports.decode = function(base64) {\n var bufferLength = base64.length * 0.75,\n len = base64.length, i, p = 0,\n encoded1, encoded2, encoded3, encoded4;\n\n if (base64[base64.length - 1] === \"=\") {\n bufferLength--;\n if (base64[base64.length - 2] === \"=\") {\n bufferLength--;\n }\n }\n\n var arraybuffer = new ArrayBuffer(bufferLength),\n bytes = new Uint8Array(arraybuffer);\n\n for (i = 0; i < len; i+=4) {\n encoded1 = lookup[base64.charCodeAt(i)];\n encoded2 = lookup[base64.charCodeAt(i+1)];\n encoded3 = lookup[base64.charCodeAt(i+2)];\n encoded4 = lookup[base64.charCodeAt(i+3)];\n\n bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n }\n\n return arraybuffer;\n };\n})();\n\n\n/***/ }),\n/* 52 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(global) {/**\n * Create a blob builder even when vendor prefixes exist\n */\n\nvar BlobBuilder = global.BlobBuilder\n || global.WebKitBlobBuilder\n || global.MSBlobBuilder\n || global.MozBlobBuilder;\n\n/**\n * Check if Blob constructor is supported\n */\n\nvar blobSupported = (function() {\n try {\n var a = new Blob(['hi']);\n return a.size === 2;\n } catch(e) {\n return false;\n }\n})();\n\n/**\n * Check if Blob constructor supports ArrayBufferViews\n * Fails in Safari 6, so we need to map to ArrayBuffers there.\n */\n\nvar blobSupportsArrayBufferView = blobSupported && (function() {\n try {\n var b = new Blob([new Uint8Array([1,2])]);\n return b.size === 2;\n } catch(e) {\n return false;\n }\n})();\n\n/**\n * Check if BlobBuilder is supported\n */\n\nvar blobBuilderSupported = BlobBuilder\n && BlobBuilder.prototype.append\n && BlobBuilder.prototype.getBlob;\n\n/**\n * Helper function that maps ArrayBufferViews to ArrayBuffers\n * Used by BlobBuilder constructor and old browsers that didn't\n * support it in the Blob constructor.\n */\n\nfunction mapArrayBufferViews(ary) {\n for (var i = 0; i < ary.length; i++) {\n var chunk = ary[i];\n if (chunk.buffer instanceof ArrayBuffer) {\n var buf = chunk.buffer;\n\n // if this is a subarray, make a copy so we only\n // include the subarray region from the underlying buffer\n if (chunk.byteLength !== buf.byteLength) {\n var copy = new Uint8Array(chunk.byteLength);\n copy.set(new Uint8Array(buf, chunk.byteOffset, chunk.byteLength));\n buf = copy.buffer;\n }\n\n ary[i] = buf;\n }\n }\n}\n\nfunction BlobBuilderConstructor(ary, options) {\n options = options || {};\n\n var bb = new BlobBuilder();\n mapArrayBufferViews(ary);\n\n for (var i = 0; i < ary.length; i++) {\n bb.append(ary[i]);\n }\n\n return (options.type) ? bb.getBlob(options.type) : bb.getBlob();\n};\n\nfunction BlobConstructor(ary, options) {\n mapArrayBufferViews(ary);\n return new Blob(ary, options || {});\n};\n\nmodule.exports = (function() {\n if (blobSupported) {\n return blobSupportsArrayBufferView ? global.Blob : BlobConstructor;\n } else if (blobBuilderSupported) {\n return BlobBuilderConstructor;\n } else {\n return undefined;\n }\n})();\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0)))\n\n/***/ }),\n/* 53 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(global) {\n/**\n * Module requirements.\n */\n\nvar Polling = __webpack_require__(20);\nvar inherit = __webpack_require__(6);\n\n/**\n * Module exports.\n */\n\nmodule.exports = JSONPPolling;\n\n/**\n * Cached regular expressions.\n */\n\nvar rNewline = /\\n/g;\nvar rEscapedNewline = /\\\\n/g;\n\n/**\n * Global JSONP callbacks.\n */\n\nvar callbacks;\n\n/**\n * Noop.\n */\n\nfunction empty () { }\n\n/**\n * JSONP Polling constructor.\n *\n * @param {Object} opts.\n * @api public\n */\n\nfunction JSONPPolling (opts) {\n Polling.call(this, opts);\n\n this.query = this.query || {};\n\n // define global callbacks array if not present\n // we do this here (lazily) to avoid unneeded global pollution\n if (!callbacks) {\n // we need to consider multiple engines in the same page\n if (!global.___eio) global.___eio = [];\n callbacks = global.___eio;\n }\n\n // callback identifier\n this.index = callbacks.length;\n\n // add callback to jsonp global\n var self = this;\n callbacks.push(function (msg) {\n self.onData(msg);\n });\n\n // append to query string\n this.query.j = this.index;\n\n // prevent spurious errors from being emitted when the window is unloaded\n if (global.document && global.addEventListener) {\n global.addEventListener('beforeunload', function () {\n if (self.script) self.script.onerror = empty;\n }, false);\n }\n}\n\n/**\n * Inherits from Polling.\n */\n\ninherit(JSONPPolling, Polling);\n\n/*\n * JSONP only supports binary as base64 encoded strings\n */\n\nJSONPPolling.prototype.supportsBinary = false;\n\n/**\n * Closes the socket.\n *\n * @api private\n */\n\nJSONPPolling.prototype.doClose = function () {\n if (this.script) {\n this.script.parentNode.removeChild(this.script);\n this.script = null;\n }\n\n if (this.form) {\n this.form.parentNode.removeChild(this.form);\n this.form = null;\n this.iframe = null;\n }\n\n Polling.prototype.doClose.call(this);\n};\n\n/**\n * Starts a poll cycle.\n *\n * @api private\n */\n\nJSONPPolling.prototype.doPoll = function () {\n var self = this;\n var script = document.createElement('script');\n\n if (this.script) {\n this.script.parentNode.removeChild(this.script);\n this.script = null;\n }\n\n script.async = true;\n script.src = this.uri();\n script.onerror = function (e) {\n self.onError('jsonp poll error', e);\n };\n\n var insertAt = document.getElementsByTagName('script')[0];\n if (insertAt) {\n insertAt.parentNode.insertBefore(script, insertAt);\n } else {\n (document.head || document.body).appendChild(script);\n }\n this.script = script;\n\n var isUAgecko = 'undefined' !== typeof navigator && /gecko/i.test(navigator.userAgent);\n\n if (isUAgecko) {\n setTimeout(function () {\n var iframe = document.createElement('iframe');\n document.body.appendChild(iframe);\n document.body.removeChild(iframe);\n }, 100);\n }\n};\n\n/**\n * Writes with a hidden iframe.\n *\n * @param {String} data to send\n * @param {Function} called upon flush.\n * @api private\n */\n\nJSONPPolling.prototype.doWrite = function (data, fn) {\n var self = this;\n\n if (!this.form) {\n var form = document.createElement('form');\n var area = document.createElement('textarea');\n var id = this.iframeId = 'eio_iframe_' + this.index;\n var iframe;\n\n form.className = 'socketio';\n form.style.position = 'absolute';\n form.style.top = '-1000px';\n form.style.left = '-1000px';\n form.target = id;\n form.method = 'POST';\n form.setAttribute('accept-charset', 'utf-8');\n area.name = 'd';\n form.appendChild(area);\n document.body.appendChild(form);\n\n this.form = form;\n this.area = area;\n }\n\n this.form.action = this.uri();\n\n function complete () {\n initIframe();\n fn();\n }\n\n function initIframe () {\n if (self.iframe) {\n try {\n self.form.removeChild(self.iframe);\n } catch (e) {\n self.onError('jsonp polling iframe removal error', e);\n }\n }\n\n try {\n // ie6 dynamic iframes with target=\"\" support (thanks Chris Lambacher)\n var html = '<iframe src=\"javascript:0\" name=\"' + self.iframeId + '\">';\n iframe = document.createElement(html);\n } catch (e) {\n iframe = document.createElement('iframe');\n iframe.name = self.iframeId;\n iframe.src = 'javascript:0';\n }\n\n iframe.id = self.iframeId;\n\n self.form.appendChild(iframe);\n self.iframe = iframe;\n }\n\n initIframe();\n\n // escape \\n to prevent it from being converted into \\r\\n by some UAs\n // double escaping is required for escaped new lines because unescaping of new lines can be done safely on server-side\n data = data.replace(rEscapedNewline, '\\\\\\n');\n this.area.value = data.replace(rNewline, '\\\\n');\n\n try {\n this.form.submit();\n } catch (e) {}\n\n if (this.iframe.attachEvent) {\n this.iframe.onreadystatechange = function () {\n if (self.iframe.readyState === 'complete') {\n complete();\n }\n };\n } else {\n this.iframe.onload = complete;\n }\n};\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0)))\n\n/***/ }),\n/* 54 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(global) {/**\n * Module dependencies.\n */\n\nvar Transport = __webpack_require__(10);\nvar parser = __webpack_require__(3);\nvar parseqs = __webpack_require__(5);\nvar inherit = __webpack_require__(6);\nvar yeast = __webpack_require__(21);\nvar debug = __webpack_require__(1)('engine.io-client:websocket');\nvar BrowserWebSocket = global.WebSocket || global.MozWebSocket;\nvar NodeWebSocket;\nif (typeof window === 'undefined') {\n try {\n NodeWebSocket = __webpack_require__(55);\n } catch (e) { }\n}\n\n/**\n * Get either the `WebSocket` or `MozWebSocket` globals\n * in the browser or try to resolve WebSocket-compatible\n * interface exposed by `ws` for Node-like environment.\n */\n\nvar WebSocket = BrowserWebSocket;\nif (!WebSocket && typeof window === 'undefined') {\n WebSocket = NodeWebSocket;\n}\n\n/**\n * Module exports.\n */\n\nmodule.exports = WS;\n\n/**\n * WebSocket transport constructor.\n *\n * @api {Object} connection options\n * @api public\n */\n\nfunction WS (opts) {\n var forceBase64 = (opts && opts.forceBase64);\n if (forceBase64) {\n this.supportsBinary = false;\n }\n this.perMessageDeflate = opts.perMessageDeflate;\n this.usingBrowserWebSocket = BrowserWebSocket && !opts.forceNode;\n this.protocols = opts.protocols;\n if (!this.usingBrowserWebSocket) {\n WebSocket = NodeWebSocket;\n }\n Transport.call(this, opts);\n}\n\n/**\n * Inherits from Transport.\n */\n\ninherit(WS, Transport);\n\n/**\n * Transport name.\n *\n * @api public\n */\n\nWS.prototype.name = 'websocket';\n\n/*\n * WebSockets support binary\n */\n\nWS.prototype.supportsBinary = true;\n\n/**\n * Opens socket.\n *\n * @api private\n */\n\nWS.prototype.doOpen = function () {\n if (!this.check()) {\n // let probe timeout\n return;\n }\n\n var uri = this.uri();\n var protocols = this.protocols;\n var opts = {\n agent: this.agent,\n perMessageDeflate: this.perMessageDeflate\n };\n\n // SSL options for Node.js client\n opts.pfx = this.pfx;\n opts.key = this.key;\n opts.passphrase = this.passphrase;\n opts.cert = this.cert;\n opts.ca = this.ca;\n opts.ciphers = this.ciphers;\n opts.rejectUnauthorized = this.rejectUnauthorized;\n if (this.extraHeaders) {\n opts.headers = this.extraHeaders;\n }\n if (this.localAddress) {\n opts.localAddress = this.localAddress;\n }\n\n try {\n this.ws = this.usingBrowserWebSocket ? (protocols ? new WebSocket(uri, protocols) : new WebSocket(uri)) : new WebSocket(uri, protocols, opts);\n } catch (err) {\n return this.emit('error', err);\n }\n\n if (this.ws.binaryType === undefined) {\n this.supportsBinary = false;\n }\n\n if (this.ws.supports && this.ws.supports.binary) {\n this.supportsBinary = true;\n this.ws.binaryType = 'nodebuffer';\n } else {\n this.ws.binaryType = 'arraybuffer';\n }\n\n this.addEventListeners();\n};\n\n/**\n * Adds event listeners to the socket\n *\n * @api private\n */\n\nWS.prototype.addEventListeners = function () {\n var self = this;\n\n this.ws.onopen = function () {\n self.onOpen();\n };\n this.ws.onclose = function () {\n self.onClose();\n };\n this.ws.onmessage = function (ev) {\n self.onData(ev.data);\n };\n this.ws.onerror = function (e) {\n self.onError('websocket error', e);\n };\n};\n\n/**\n * Writes data to socket.\n *\n * @param {Array} array of packets.\n * @api private\n */\n\nWS.prototype.write = function (packets) {\n var self = this;\n this.writable = false;\n\n // encodePacket efficient as it uses WS framing\n // no need for encodePayload\n var total = packets.length;\n for (var i = 0, l = total; i < l; i++) {\n (function (packet) {\n parser.encodePacket(packet, self.supportsBinary, function (data) {\n if (!self.usingBrowserWebSocket) {\n // always create a new object (GH-437)\n var opts = {};\n if (packet.options) {\n opts.compress = packet.options.compress;\n }\n\n if (self.perMessageDeflate) {\n var len = 'string' === typeof data ? global.Buffer.byteLength(data) : data.length;\n if (len < self.perMessageDeflate.threshold) {\n opts.compress = false;\n }\n }\n }\n\n // Sometimes the websocket has already been closed but the browser didn't\n // have a chance of informing us about it yet, in that case send will\n // throw an error\n try {\n if (self.usingBrowserWebSocket) {\n // TypeError is thrown when passing the second argument on Safari\n self.ws.send(data);\n } else {\n self.ws.send(data, opts);\n }\n } catch (e) {\n debug('websocket closed before onclose event');\n }\n\n --total || done();\n });\n })(packets[i]);\n }\n\n function done () {\n self.emit('flush');\n\n // fake drain\n // defer to next tick to allow Socket to clear writeBuffer\n setTimeout(function () {\n self.writable = true;\n self.emit('drain');\n }, 0);\n }\n};\n\n/**\n * Called upon close\n *\n * @api private\n */\n\nWS.prototype.onClose = function () {\n Transport.prototype.onClose.call(this);\n};\n\n/**\n * Closes socket.\n *\n * @api private\n */\n\nWS.prototype.doClose = function () {\n if (typeof this.ws !== 'undefined') {\n this.ws.close();\n }\n};\n\n/**\n * Generates uri for connection.\n *\n * @api private\n */\n\nWS.prototype.uri = function () {\n var query = this.query || {};\n var schema = this.secure ? 'wss' : 'ws';\n var port = '';\n\n // avoid port if default for schema\n if (this.port && (('wss' === schema && Number(this.port) !== 443) ||\n ('ws' === schema && Number(this.port) !== 80))) {\n port = ':' + this.port;\n }\n\n // append timestamp to URI\n if (this.timestampRequests) {\n query[this.timestampParam] = yeast();\n }\n\n // communicate binary support capabilities\n if (!this.supportsBinary) {\n query.b64 = 1;\n }\n\n query = parseqs.encode(query);\n\n // prepend ? to query\n if (query.length) {\n query = '?' + query;\n }\n\n var ipv6 = this.hostname.indexOf(':') !== -1;\n return schema + '://' + (ipv6 ? '[' + this.hostname + ']' : this.hostname) + port + this.path + query;\n};\n\n/**\n * Feature detection for WebSocket.\n *\n * @return {Boolean} whether this transport is available.\n * @api public\n */\n\nWS.prototype.check = function () {\n return !!WebSocket && !('__initialize' in WebSocket && this.name === WS.prototype.name);\n};\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0)))\n\n/***/ }),\n/* 55 */\n/***/ (function(module, exports) {\n\n/* (ignored) */\n\n/***/ }),\n/* 56 */\n/***/ (function(module, exports) {\n\nmodule.exports = toArray\n\nfunction toArray(list, index) {\n var array = []\n\n index = index || 0\n\n for (var i = index || 0; i < list.length; i++) {\n array[i - index] = list[i]\n }\n\n return array\n}\n\n\n/***/ }),\n/* 57 */\n/***/ (function(module, exports) {\n\n\n/**\n * Expose `Backoff`.\n */\n\nmodule.exports = Backoff;\n\n/**\n * Initialize backoff timer with `opts`.\n *\n * - `min` initial timeout in milliseconds [100]\n * - `max` max timeout [10000]\n * - `jitter` [0]\n * - `factor` [2]\n *\n * @param {Object} opts\n * @api public\n */\n\nfunction Backoff(opts) {\n opts = opts || {};\n this.ms = opts.min || 100;\n this.max = opts.max || 10000;\n this.factor = opts.factor || 2;\n this.jitter = opts.jitter > 0 && opts.jitter <= 1 ? opts.jitter : 0;\n this.attempts = 0;\n}\n\n/**\n * Return the backoff duration.\n *\n * @return {Number}\n * @api public\n */\n\nBackoff.prototype.duration = function(){\n var ms = this.ms * Math.pow(this.factor, this.attempts++);\n if (this.jitter) {\n var rand = Math.random();\n var deviation = Math.floor(rand * this.jitter * ms);\n ms = (Math.floor(rand * 10) & 1) == 0 ? ms - deviation : ms + deviation;\n }\n return Math.min(ms, this.max) | 0;\n};\n\n/**\n * Reset the number of attempts.\n *\n * @api public\n */\n\nBackoff.prototype.reset = function(){\n this.attempts = 0;\n};\n\n/**\n * Set the minimum duration\n *\n * @api public\n */\n\nBackoff.prototype.setMin = function(min){\n this.ms = min;\n};\n\n/**\n * Set the maximum duration\n *\n * @api public\n */\n\nBackoff.prototype.setMax = function(max){\n this.max = max;\n};\n\n/**\n * Set the jitter\n *\n * @api public\n */\n\nBackoff.prototype.setJitter = function(jitter){\n this.jitter = jitter;\n};\n\n\n\n/***/ }),\n/* 58 */\n/***/ (function(module, exports) {\n\nif (!(\"indexOf\" in Array.prototype)) {\r\n Array.prototype.indexOf = function (find, i) {\r\n if (i === undefined) {\r\n i = 0;\r\n }\r\n if (i < 0) {\r\n i += this.length;\r\n }\r\n if (i < 0) {\r\n i = 0;\r\n }\r\n for (var n = this.length; i < n; i += 1) {\r\n if (i in this && this[i] === find) {\r\n return i;\r\n }\r\n }\r\n return -1;\r\n };\r\n}\r\n// Production steps of ECMA-262, Edition 5, 15.4.4.19\r\n// Reference: http://es5.github.io/#x15.4.4.19\r\nif (!Array.prototype.map) {\r\n Array.prototype.map = function (callback, thisArg) {\r\n var T, A, k;\r\n if (this == null) {\r\n throw new TypeError(\" this is null or not defined\");\r\n }\r\n // 1. Let O be the result of calling ToObject passing the |this|\r\n // value as the argument.\r\n var O = Object(this);\r\n // 2. Let lenValue be the result of calling the Get internal\r\n // method of O with the argument \"length\".\r\n // 3. Let len be ToUint32(lenValue).\r\n var len = O.length >>> 0;\r\n // 4. If IsCallable(callback) is false, throw a TypeError exception.\r\n // See: http://es5.github.com/#x9.11\r\n if (typeof callback !== \"function\") {\r\n throw new TypeError(callback + \" is not a function\");\r\n }\r\n // 5. If thisArg was supplied, let T be thisArg; else let T be undefined.\r\n if (arguments.length > 1) {\r\n T = thisArg;\r\n }\r\n // 6. Let A be a new array created as if by the expression new Array(len)\r\n // where Array is the standard built-in constructor with that name and\r\n // len is the value of len.\r\n A = new Array(len);\r\n // 7. Let k be 0\r\n k = 0;\r\n // 8. Repeat, while k < len\r\n while (k < len) {\r\n var kValue, mappedValue;\r\n // a. Let Pk be ToString(k).\r\n // This is implicit for LHS operands of the in operator\r\n // b. Let kPresent be the result of calling the HasProperty internal\r\n // method of O with argument Pk.\r\n // This step can be combined with c\r\n // c. If kPresent is true, then\r\n if (k in O) {\r\n // i. Let kValue be the result of calling the Get internal\r\n // method of O with argument Pk.\r\n kValue = O[k];\r\n // ii. Let mappedValue be the result of calling the Call internal\r\n // method of callback with T as the this value and argument\r\n // list containing kValue, k, and O.\r\n mappedValue = callback.call(T, kValue, k, O);\r\n // iii. Call the DefineOwnProperty internal method of A with arguments\r\n // Pk, Property Descriptor\r\n // { Value: mappedValue,\r\n // Writable: true,\r\n // Enumerable: true,\r\n // Configurable: true },\r\n // and false.\r\n // In browsers that support Object.defineProperty, use the following:\r\n // Object.defineProperty(A, k, {\r\n // value: mappedValue,\r\n // writable: true,\r\n // enumerable: true,\r\n // configurable: true\r\n // });\r\n // For best browser support, use the following:\r\n A[k] = mappedValue;\r\n }\r\n // d. Increase k by 1.\r\n k++;\r\n }\r\n // 9. return A\r\n return A;\r\n };\r\n}\r\nif (!Array.prototype.filter) {\r\n Array.prototype.filter = function (fun /*, thisArg*/) {\r\n \"use strict\";\r\n if (this === void 0 || this === null) {\r\n throw new TypeError();\r\n }\r\n var t = Object(this);\r\n var len = t.length >>> 0;\r\n if (typeof fun !== \"function\") {\r\n throw new TypeError();\r\n }\r\n var res = [];\r\n var thisArg = arguments.length >= 2 ? arguments[1] : void 0;\r\n for (var i = 0; i < len; i++) {\r\n if (i in t) {\r\n var val = t[i];\r\n // NOTE: Technically this should Object.defineProperty at\r\n // the next index, as push can be affected by\r\n // properties on Object.prototype and Array.prototype.\r\n // But that method's new, and collisions should be\r\n // rare, so use the more-compatible alternative.\r\n if (fun.call(thisArg, val, i, t)) {\r\n res.push(val);\r\n }\r\n }\r\n }\r\n return res;\r\n };\r\n}\r\n\n\n/***/ }),\n/* 59 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __assign = (this && this.__assign) || Object.assign || function(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\r\n t[p] = s[p];\r\n }\r\n return t;\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar Reloader_1 = __webpack_require__(60);\r\nvar Timer_1 = __webpack_require__(62);\r\nvar events = __webpack_require__(12);\r\nvar utils = __webpack_require__(4);\r\nvar emitter = __webpack_require__(7);\r\nvar sync = exports;\r\nvar nanlogger = __webpack_require__(63);\r\nvar log = nanlogger(\"Browsersync\", { colors: { magenta: \"#0F2634\" } });\r\nvar reloader = new Reloader_1.Reloader(window, log, Timer_1.Timer);\r\nvar options = {\r\n tagNames: {\r\n css: \"link\",\r\n jpg: \"img\",\r\n jpeg: \"img\",\r\n png: \"img\",\r\n svg: \"img\",\r\n gif: \"img\",\r\n js: \"script\"\r\n },\r\n attrs: {\r\n link: \"href\",\r\n img: \"src\",\r\n script: \"src\"\r\n },\r\n blacklist: [\r\n // never allow .map files through\r\n function (incoming) {\r\n return incoming.ext === \"map\";\r\n }\r\n ]\r\n};\r\nvar OPT_PATH = \"codeSync\";\r\nvar current = function () {\r\n return window.location.pathname;\r\n};\r\n/**\r\n * @param {BrowserSync} bs\r\n */\r\nsync.init = function (bs) {\r\n if (bs.options.tagNames) {\r\n options.tagNames = bs.options.tagNames;\r\n }\r\n if (bs.options.scrollRestoreTechnique === \"window.name\") {\r\n sync.saveScrollInName(emitter);\r\n }\r\n else {\r\n sync.saveScrollInCookie(utils.getWindow(), utils.getDocument());\r\n }\r\n bs.socket.on(\"file:reload\", sync.reload(bs));\r\n bs.socket.on(\"browser:reload\", function () {\r\n if (bs.canSync({ url: current() }, OPT_PATH)) {\r\n sync.reloadBrowser(true, bs);\r\n }\r\n });\r\n};\r\n/**\r\n * Use window.name to store/restore scroll position\r\n */\r\nsync.saveScrollInName = function () {\r\n var PRE = \"<<BS_START>>\";\r\n var SUF = \"<<BS_END>>\";\r\n var regex = new RegExp(PRE + \"(.+?)\" + SUF);\r\n var $window = utils.getWindow();\r\n var saved = {};\r\n /**\r\n * Listen for the browser:hardReload event.\r\n * When it runs, save the current scroll position\r\n * in window.name\r\n */\r\n emitter.on(\"browser:hardReload\", function (data) {\r\n var newname = [\r\n $window.name,\r\n PRE,\r\n JSON.stringify({\r\n bs: {\r\n hardReload: true,\r\n scroll: data.scrollPosition\r\n }\r\n }),\r\n SUF\r\n ].join(\"\");\r\n $window.name = newname;\r\n });\r\n /**\r\n * On page load, check window.name for an existing\r\n * BS json blob & parse it.\r\n */\r\n try {\r\n var json = $window.name.match(regex);\r\n if (json) {\r\n saved = JSON.parse(json[1]);\r\n }\r\n }\r\n catch (e) {\r\n saved = {};\r\n }\r\n /**\r\n * If the JSON was parsed correctly, try to\r\n * find a scroll property and restore it.\r\n */\r\n if (saved.bs && saved.bs.hardReload && saved.bs.scroll) {\r\n utils.setScroll(saved.bs.scroll);\r\n }\r\n /**\r\n * Remove any existing BS json from window.name\r\n * to ensure we don't interfere with any other\r\n * libs who may be using it.\r\n */\r\n $window.name = $window.name.replace(regex, \"\");\r\n};\r\n/**\r\n * Use a cookie-drop to save scroll position of\r\n * @param $window\r\n * @param $document\r\n */\r\nsync.saveScrollInCookie = function ($window, $document) {\r\n if (!utils.isOldIe()) {\r\n return;\r\n }\r\n if ($document.readyState === \"complete\") {\r\n utils.restoreScrollPosition();\r\n }\r\n else {\r\n events.manager.addEvent($document, \"readystatechange\", function () {\r\n if ($document.readyState === \"complete\") {\r\n utils.restoreScrollPosition();\r\n }\r\n });\r\n }\r\n emitter.on(\"browser:hardReload\", utils.saveScrollPosition);\r\n};\r\n/**\r\n * @param {BrowserSync} bs\r\n * @returns {*}\r\n */\r\nsync.reload = function (bs) {\r\n /**\r\n * @param data - from socket\r\n */\r\n return function (data) {\r\n if (!bs.canSync({ url: current() }, OPT_PATH)) {\r\n return;\r\n }\r\n if (data.url || !bs.options.injectChanges) {\r\n sync.reloadBrowser(true);\r\n }\r\n if (data.basename && data.ext) {\r\n if (sync.isBlacklisted(data)) {\r\n return;\r\n }\r\n reloader.reload(data, __assign({}, options, { liveCSS: true, liveImg: true }));\r\n }\r\n };\r\n};\r\n/**\r\n * @param incoming\r\n * @returns {boolean}\r\n */\r\nsync.isBlacklisted = function (incoming) {\r\n return options.blacklist.some(function (fn) {\r\n return fn(incoming);\r\n });\r\n};\r\n/**\r\n * @param confirm\r\n */\r\nsync.reloadBrowser = function (confirm) {\r\n emitter.emit(\"browser:hardReload\", {\r\n scrollPosition: utils.getBrowserScrollPosition()\r\n });\r\n if (confirm) {\r\n utils.reloadBrowser();\r\n }\r\n};\r\n\n\n/***/ }),\n/* 60 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n/**\r\n *\r\n * With thanks to https://github.com/livereload/livereload-js\r\n * :) :) :)\r\n *\r\n */\r\nvar utils_1 = __webpack_require__(61);\r\nvar hiddenElem;\r\nvar IMAGE_STYLES = [\r\n { selector: 'background', styleNames: ['backgroundImage'] },\r\n { selector: 'border', styleNames: ['borderImage', 'webkitBorderImage', 'MozBorderImage'] }\r\n];\r\nvar Reloader = /** @class */ (function () {\r\n function Reloader(window, logger, Timer) {\r\n this.window = window;\r\n this.logger = logger;\r\n this.Timer = Timer;\r\n this.window = window;\r\n this.Timer = Timer;\r\n this.document = this.window.document;\r\n this.importCacheWaitPeriod = 200;\r\n this.plugins = [];\r\n }\r\n Reloader.prototype.addPlugin = function (plugin) {\r\n return this.plugins.push(plugin);\r\n };\r\n Reloader.prototype.analyze = function (callback) {\r\n return null;\r\n // return results;\r\n };\r\n Reloader.prototype.reload = function (data, options, cb) {\r\n this.options = options; // avoid passing it through all the funcs\r\n var path = data.path;\r\n if (this.options.stylesheetReloadTimeout == null) {\r\n this.options.stylesheetReloadTimeout = 15000;\r\n }\r\n this.plugins.forEach(function (plugin) {\r\n if (plugin.reload && plugin.reload(path, options)) {\r\n return;\r\n }\r\n });\r\n if (options.liveCSS) {\r\n if (path.match(/\\.css$/i)) {\r\n this.logger.trace(\"path.match(/\\\\.css$/i)\", true);\r\n if (this.reloadStylesheet(path)) {\r\n return;\r\n }\r\n }\r\n }\r\n if (options.liveImg) {\r\n if (path.match(/\\.(jpe?g|png|gif)$/i)) {\r\n this.logger.trace(\"/\\\\.(jpe?g|png|gif)$/i\", true);\r\n this.reloadImages(path);\r\n return;\r\n }\r\n }\r\n this.logger.trace('Falling back to legacy method of replacing assets');\r\n /**\r\n * LEGACY\r\n */\r\n var domData = Reloader.getElems(data.ext, options);\r\n var elems = Reloader.getMatches(domData.elems, data.basename, domData.attr);\r\n for (var i = 0, n = elems.length; i < n; i += 1) {\r\n this.swapFile(elems[i], domData, options);\r\n }\r\n (cb || function () { })(elems, domData);\r\n };\r\n Reloader.getElems = function (fileExtension, options) {\r\n var tagName = options.tagNames[fileExtension];\r\n var attr = options.attrs[tagName];\r\n return {\r\n attr: attr,\r\n tagName: tagName,\r\n elems: document.getElementsByTagName(tagName)\r\n };\r\n };\r\n Reloader.getMatches = function (elems, url, attr) {\r\n if (url[0] === \"*\") {\r\n return elems;\r\n }\r\n var matches = [];\r\n var urlMatcher = new RegExp(\"(^|/)\" + url);\r\n for (var i = 0, len = elems.length; i < len; i += 1) {\r\n if (urlMatcher.test(elems[i][attr])) {\r\n matches.push(elems[i]);\r\n }\r\n }\r\n return matches;\r\n };\r\n ;\r\n Reloader.prototype.swapFile = function (elem, domData, options) {\r\n var attr = domData.attr;\r\n var currentValue = elem[attr];\r\n var timeStamp = new Date().getTime();\r\n var key = \"browsersync-legacy\";\r\n var suffix = key + \"=\" + timeStamp;\r\n var anchor = utils_1.getLocation(currentValue);\r\n var search = utils_1.updateSearch(anchor.search, key, suffix);\r\n switch (domData.tagName) {\r\n case 'link': {\r\n this.logger.trace(\"replacing LINK \" + attr);\r\n this.reloadStylesheet(currentValue);\r\n break;\r\n }\r\n case 'img': {\r\n this.reloadImages(currentValue);\r\n break;\r\n }\r\n default: {\r\n if (options.timestamps === false) {\r\n elem[attr] = anchor.href;\r\n }\r\n else {\r\n elem[attr] = anchor.href.split(\"?\")[0] + search;\r\n }\r\n this.logger.info(\"reloading \" + elem[attr]);\r\n setTimeout(function () {\r\n if (!hiddenElem) {\r\n hiddenElem = document.createElement(\"DIV\");\r\n document.body.appendChild(hiddenElem);\r\n }\r\n else {\r\n hiddenElem.style.display = \"none\";\r\n hiddenElem.style.display = \"block\";\r\n }\r\n }, 200);\r\n }\r\n }\r\n return {\r\n elem: elem,\r\n timeStamp: timeStamp\r\n };\r\n };\r\n ;\r\n Reloader.prototype.reloadPage = function () {\r\n return this.window.document.location.reload();\r\n };\r\n Reloader.prototype.reloadImages = function (path) {\r\n var _this = this;\r\n var expando = this.generateUniqueString();\r\n [].slice.call(this.document.images).forEach(function (img) {\r\n if (utils_1.pathsMatch(path, utils_1.pathFromUrl(img.src))) {\r\n img.src = _this.generateCacheBustUrl(img.src, expando);\r\n }\r\n });\r\n if (this.document.querySelectorAll) {\r\n IMAGE_STYLES.forEach(function (_a) {\r\n var selector = _a.selector, styleNames = _a.styleNames;\r\n [].slice.call(_this.document.querySelectorAll(\"[style*=\" + selector + \"]\")).forEach(function (img) {\r\n _this.reloadStyleImages(img.style, styleNames, path, expando);\r\n });\r\n });\r\n }\r\n if (this.document.styleSheets) {\r\n return [].slice.call(this.document.styleSheets)\r\n .map(function (styleSheet) {\r\n return _this.reloadStylesheetImages(styleSheet, path, expando);\r\n });\r\n }\r\n };\r\n Reloader.prototype.reloadStylesheetImages = function (styleSheet, path, expando) {\r\n var _this = this;\r\n var rules;\r\n try {\r\n rules = styleSheet != null ? styleSheet.cssRules : undefined;\r\n }\r\n catch (e) { }\r\n //\r\n if (!rules) {\r\n return;\r\n }\r\n [].slice.call(rules).forEach(function (rule) {\r\n switch (rule.type) {\r\n case CSSRule.IMPORT_RULE:\r\n _this.reloadStylesheetImages(rule.styleSheet, path, expando);\r\n break;\r\n case CSSRule.STYLE_RULE:\r\n [].slice.call(IMAGE_STYLES).forEach(function (_a) {\r\n var styleNames = _a.styleNames;\r\n _this.reloadStyleImages(rule.style, styleNames, path, expando);\r\n });\r\n break;\r\n case CSSRule.MEDIA_RULE:\r\n _this.reloadStylesheetImages(rule, path, expando);\r\n break;\r\n }\r\n });\r\n };\r\n Reloader.prototype.reloadStyleImages = function (style, styleNames, path, expando) {\r\n var _this = this;\r\n [].slice.call(styleNames).forEach(function (styleName) {\r\n var value = style[styleName];\r\n if (typeof value === 'string') {\r\n var newValue = value.replace(new RegExp(\"\\\\burl\\\\s*\\\\(([^)]*)\\\\)\"), function (match, src) {\r\n if (utils_1.pathsMatch(path, utils_1.pathFromUrl(src))) {\r\n return \"url(\" + _this.generateCacheBustUrl(src, expando) + \")\";\r\n }\r\n else {\r\n return match;\r\n }\r\n });\r\n if (newValue !== value) {\r\n style[styleName] = newValue;\r\n }\r\n }\r\n });\r\n };\r\n Reloader.prototype.reloadStylesheet = function (path) {\r\n var _this = this;\r\n // has to be a real array, because DOMNodeList will be modified\r\n var link;\r\n var links = ((function () {\r\n var result = [];\r\n [].slice.call(_this.document.getElementsByTagName('link')).forEach(function (link) {\r\n if (link.rel.match(/^stylesheet$/i) && !link.__LiveReload_pendingRemoval) {\r\n result.push(link);\r\n }\r\n });\r\n return result;\r\n })());\r\n // find all imported stylesheets\r\n var imported = [];\r\n for (var _i = 0, _a = Array.from(this.document.getElementsByTagName('style')); _i < _a.length; _i++) {\r\n var style = _a[_i];\r\n if (style.sheet) {\r\n this.collectImportedStylesheets(style, style.sheet, imported);\r\n }\r\n }\r\n for (var _b = 0, _c = Array.from(links); _b < _c.length; _b++) {\r\n link = _c[_b];\r\n this.collectImportedStylesheets(link, link.sheet, imported);\r\n }\r\n // handle prefixfree\r\n if (this.window.StyleFix && this.document.querySelectorAll) {\r\n [].slice.call(this.document.querySelectorAll('style[data-href]')).forEach(function (style) {\r\n links.push(style);\r\n });\r\n }\r\n this.logger.debug(\"found \" + links.length + \" LINKed stylesheets, \" + imported.length + \" @imported stylesheets\");\r\n var match = utils_1.pickBestMatch(path, links.concat(imported), function (l) { return utils_1.pathFromUrl(_this.linkHref(l)); });\r\n if (match) {\r\n if (match.object && match.object.rule) {\r\n this.logger.info(\"reloading imported stylesheet: \" + match.object.href);\r\n this.reattachImportedRule(match.object);\r\n }\r\n else {\r\n this.logger.info(\"reloading stylesheet: \" + this.linkHref(match.object));\r\n this.reattachStylesheetLink(match.object);\r\n }\r\n }\r\n else {\r\n this.logger.info(\"reloading all stylesheets because path '\" + path + \"' did not match any specific one\");\r\n links.forEach(function (link) { return _this.reattachStylesheetLink(link); });\r\n }\r\n return true;\r\n };\r\n Reloader.prototype.collectImportedStylesheets = function (link, styleSheet, result) {\r\n // in WebKit, styleSheet.cssRules is null for inaccessible stylesheets;\r\n // Firefox/Opera may throw exceptions\r\n var rules;\r\n try {\r\n rules = styleSheet != null ? styleSheet.cssRules : undefined;\r\n }\r\n catch (e) { }\r\n //\r\n if (rules && rules.length) {\r\n for (var index = 0; index < rules.length; index++) {\r\n var rule = rules[index];\r\n switch (rule.type) {\r\n case CSSRule.CHARSET_RULE:\r\n break;\r\n case CSSRule.IMPORT_RULE:\r\n result.push({ link: link, rule: rule, index: index, href: rule.href });\r\n this.collectImportedStylesheets(link, rule.styleSheet, result);\r\n break;\r\n default:\r\n break; // import rules can only be preceded by charset rules\r\n }\r\n }\r\n }\r\n };\r\n Reloader.prototype.waitUntilCssLoads = function (clone, func) {\r\n var _this = this;\r\n var callbackExecuted = false;\r\n var executeCallback = function () {\r\n if (callbackExecuted) {\r\n return;\r\n }\r\n callbackExecuted = true;\r\n return func();\r\n };\r\n // supported by Chrome 19+, Safari 5.2+, Firefox 9+, Opera 9+, IE6+\r\n // http://www.zachleat.com/web/load-css-dynamically/\r\n // http://pieisgood.org/test/script-link-events/\r\n clone.onload = function () {\r\n _this.logger.debug(\"the new stylesheet has finished loading\");\r\n _this.knownToSupportCssOnLoad = true;\r\n return executeCallback();\r\n };\r\n if (!this.knownToSupportCssOnLoad) {\r\n // polling\r\n var poll_1;\r\n (poll_1 = function () {\r\n if (clone.sheet) {\r\n _this.logger.debug(\"polling until the new CSS finishes loading...\");\r\n return executeCallback();\r\n }\r\n else {\r\n return _this.Timer.start(50, poll_1);\r\n }\r\n })();\r\n }\r\n // fail safe\r\n return this.Timer.start(this.options.stylesheetReloadTimeout, executeCallback);\r\n };\r\n Reloader.prototype.linkHref = function (link) {\r\n // prefixfree uses data-href when it turns LINK into STYLE\r\n return link.href || link.getAttribute('data-href');\r\n };\r\n Reloader.prototype.reattachStylesheetLink = function (link) {\r\n var _this = this;\r\n // ignore LINKs that will be removed by LR soon\r\n var clone;\r\n if (link.__LiveReload_pendingRemoval) {\r\n return;\r\n }\r\n link.__LiveReload_pendingRemoval = true;\r\n if (link.tagName === 'STYLE') {\r\n // prefixfree\r\n clone = this.document.createElement('link');\r\n clone.rel = 'stylesheet';\r\n clone.media = link.media;\r\n clone.disabled = link.disabled;\r\n }\r\n else {\r\n clone = link.cloneNode(false);\r\n }\r\n clone.href = this.generateCacheBustUrl(this.linkHref(link));\r\n // insert the new LINK before the old one\r\n var parent = link.parentNode;\r\n if (parent.lastChild === link) {\r\n parent.appendChild(clone);\r\n }\r\n else {\r\n parent.insertBefore(clone, link.nextSibling);\r\n }\r\n return this.waitUntilCssLoads(clone, function () {\r\n var additionalWaitingTime;\r\n if (/AppleWebKit/.test(navigator.userAgent)) {\r\n additionalWaitingTime = 5;\r\n }\r\n else {\r\n additionalWaitingTime = 200;\r\n }\r\n return _this.Timer.start(additionalWaitingTime, function () {\r\n if (!link.parentNode) {\r\n return;\r\n }\r\n link.parentNode.removeChild(link);\r\n clone.onreadystatechange = null;\r\n return (_this.window.StyleFix != null ? _this.window.StyleFix.link(clone) : undefined);\r\n });\r\n }); // prefixfree\r\n };\r\n Reloader.prototype.reattachImportedRule = function (_a) {\r\n var _this = this;\r\n var rule = _a.rule, index = _a.index, link = _a.link;\r\n var parent = rule.parentStyleSheet;\r\n var href = this.generateCacheBustUrl(rule.href);\r\n var media = rule.media.length ? [].join.call(rule.media, ', ') : '';\r\n var newRule = \"@import url(\\\"\" + href + \"\\\") \" + media + \";\";\r\n // used to detect if reattachImportedRule has been called again on the same rule\r\n rule.__LiveReload_newHref = href;\r\n // WORKAROUND FOR WEBKIT BUG: WebKit resets all styles if we add @import'ed\r\n // stylesheet that hasn't been cached yet. Workaround is to pre-cache the\r\n // stylesheet by temporarily adding it as a LINK tag.\r\n var tempLink = this.document.createElement(\"link\");\r\n tempLink.rel = 'stylesheet';\r\n tempLink.href = href;\r\n tempLink.__LiveReload_pendingRemoval = true; // exclude from path matching\r\n if (link.parentNode) {\r\n link.parentNode.insertBefore(tempLink, link);\r\n }\r\n // wait for it to load\r\n return this.Timer.start(this.importCacheWaitPeriod, function () {\r\n if (tempLink.parentNode) {\r\n tempLink.parentNode.removeChild(tempLink);\r\n }\r\n // if another reattachImportedRule call is in progress, abandon this one\r\n if (rule.__LiveReload_newHref !== href) {\r\n return;\r\n }\r\n parent.insertRule(newRule, index);\r\n parent.deleteRule(index + 1);\r\n // save the new rule, so that we can detect another reattachImportedRule call\r\n rule = parent.cssRules[index];\r\n rule.__LiveReload_newHref = href;\r\n // repeat again for good measure\r\n return _this.Timer.start(_this.importCacheWaitPeriod, function () {\r\n // if another reattachImportedRule call is in progress, abandon this one\r\n if (rule.__LiveReload_newHref !== href) {\r\n return;\r\n }\r\n parent.insertRule(newRule, index);\r\n return parent.deleteRule(index + 1);\r\n });\r\n });\r\n };\r\n Reloader.prototype.generateUniqueString = function () {\r\n return \"browsersync=\" + Date.now();\r\n };\r\n Reloader.prototype.generateCacheBustUrl = function (url, expando) {\r\n if (expando === void 0) { expando = this.generateUniqueString(); }\r\n var hash, oldParams;\r\n (_a = utils_1.splitUrl(url), url = _a.url, hash = _a.hash, oldParams = _a.params);\r\n if (this.options.overrideURL) {\r\n if (url.indexOf(this.options.serverURL) < 0) {\r\n var originalUrl = url;\r\n url = this.options.serverURL + this.options.overrideURL + \"?url=\" + encodeURIComponent(url);\r\n this.logger.debug(\"overriding source URL \" + originalUrl + \" with \" + url);\r\n }\r\n }\r\n var params = oldParams.replace(/(\\?|&)browsersync=(\\d+)/, function (match, sep) { return \"\" + sep + expando; });\r\n if (params === oldParams) {\r\n if (oldParams.length === 0) {\r\n params = \"?\" + expando;\r\n }\r\n else {\r\n params = oldParams + \"&\" + expando;\r\n }\r\n }\r\n return url + params + hash;\r\n var _a;\r\n };\r\n return Reloader;\r\n}());\r\nexports.Reloader = Reloader;\r\n\n\n/***/ }),\n/* 61 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nfunction each(incoming) {\r\n return [].slice.call(incoming || []);\r\n}\r\nexports.each = each;\r\nexports.splitUrl = function (url) {\r\n var hash, index, params;\r\n if ((index = url.indexOf(\"#\")) >= 0) {\r\n hash = url.slice(index);\r\n url = url.slice(0, index);\r\n }\r\n else {\r\n hash = \"\";\r\n }\r\n if ((index = url.indexOf(\"?\")) >= 0) {\r\n params = url.slice(index);\r\n url = url.slice(0, index);\r\n }\r\n else {\r\n params = \"\";\r\n }\r\n return { url: url, params: params, hash: hash };\r\n};\r\nexports.pathFromUrl = function (url) {\r\n var path;\r\n (url = exports.splitUrl(url).url);\r\n if (url.indexOf(\"file://\") === 0) {\r\n path = url.replace(new RegExp(\"^file://(localhost)?\"), \"\");\r\n }\r\n else {\r\n // http : // hostname :8080 /\r\n path = url.replace(new RegExp(\"^([^:]+:)?//([^:/]+)(:\\\\d*)?/\"), \"/\");\r\n }\r\n // decodeURI has special handling of stuff like semicolons, so use decodeURIComponent\r\n return decodeURIComponent(path);\r\n};\r\nexports.pickBestMatch = function (path, objects, pathFunc) {\r\n var score;\r\n var bestMatch = { score: 0, object: null };\r\n objects.forEach(function (object) {\r\n score = exports.numberOfMatchingSegments(path, pathFunc(object));\r\n if (score > bestMatch.score) {\r\n bestMatch = { object: object, score: score };\r\n }\r\n });\r\n if (bestMatch.score > 0) {\r\n return bestMatch;\r\n }\r\n else {\r\n return null;\r\n }\r\n};\r\nexports.numberOfMatchingSegments = function (path1, path2) {\r\n // get rid of leading slashes and normalize to lower case\r\n path1 = path1.replace(/^\\/+/, \"\").toLowerCase();\r\n path2 = path2.replace(/^\\/+/, \"\").toLowerCase();\r\n if (path1 === path2) {\r\n return 10000;\r\n }\r\n var comps1 = path1.split(\"/\").reverse();\r\n var comps2 = path2.split(\"/\").reverse();\r\n var len = Math.min(comps1.length, comps2.length);\r\n var eqCount = 0;\r\n while (eqCount < len && comps1[eqCount] === comps2[eqCount]) {\r\n ++eqCount;\r\n }\r\n return eqCount;\r\n};\r\nexports.pathsMatch = function (path1, path2) {\r\n return exports.numberOfMatchingSegments(path1, path2) > 0;\r\n};\r\nfunction getLocation(url) {\r\n var location = document.createElement(\"a\");\r\n location.href = url;\r\n if (location.host === \"\") {\r\n location.href = location.href;\r\n }\r\n return location;\r\n}\r\nexports.getLocation = getLocation;\r\n/**\r\n * @param {string} search\r\n * @param {string} key\r\n * @param {string} suffix\r\n */\r\nfunction updateSearch(search, key, suffix) {\r\n if (search === \"\") {\r\n return \"?\" + suffix;\r\n }\r\n return (\"?\" +\r\n search\r\n .slice(1)\r\n .split(\"&\")\r\n .map(function (item) {\r\n return item.split(\"=\");\r\n })\r\n .filter(function (tuple) {\r\n return tuple[0] !== key;\r\n })\r\n .map(function (item) {\r\n return [item[0], item[1]].join(\"=\");\r\n })\r\n .concat(suffix)\r\n .join(\"&\"));\r\n}\r\nexports.updateSearch = updateSearch;\r\n\n\n/***/ }),\n/* 62 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n/*\r\n * decaffeinate suggestions:\r\n * DS102: Remove unnecessary code created because of implicit returns\r\n * Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md\r\n */\r\nvar Timer = /** @class */ (function () {\r\n function Timer(func) {\r\n var _this = this;\r\n this.func = func;\r\n this.running = false;\r\n this.id = null;\r\n this._handler = function () {\r\n _this.running = false;\r\n _this.id = null;\r\n return _this.func();\r\n };\r\n }\r\n Timer.prototype.start = function (timeout) {\r\n if (this.running) {\r\n clearTimeout(this.id);\r\n }\r\n this.id = setTimeout(this._handler, timeout);\r\n return this.running = true;\r\n };\r\n Timer.prototype.stop = function () {\r\n if (this.running) {\r\n clearTimeout(this.id);\r\n this.running = false;\r\n return this.id = null;\r\n }\r\n };\r\n Timer.start = function (timeout, func) {\r\n setTimeout(func, timeout);\r\n };\r\n return Timer;\r\n}());\r\nexports.Timer = Timer;\r\n\n\n/***/ }),\n/* 63 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar assert = __webpack_require__(64)\nvar xtend = __webpack_require__(68)\n\nvar emojis = {\n trace: '🔍',\n debug: '🐛',\n info: '✨',\n warn: '⚠️',\n error: '🚨',\n fatal: '💀'\n}\n\nvar levels = {\n trace: 10,\n debug: 20,\n info: 30,\n warn: 40,\n error: 50,\n fatal: 60\n}\n\nvar defaultColors = {\n foreground: '#d3c0c8',\n background: '#2d2d2d',\n black: '#2d2d2d',\n red: '#f2777a',\n green: '#99cc99',\n yellow: '#ffcc66',\n blue: '#6699cc',\n magenta: '#cc99cc',\n cyan: '#66cccc',\n white: '#d3d0c8',\n brightBlack: '#747369'\n}\n\nmodule.exports = Nanologger\n\nfunction Nanologger (name, opts) {\n opts = opts || {}\n if (!(this instanceof Nanologger)) return new Nanologger(name, opts)\n\n assert.equal(typeof opts, 'object', 'nanologger: opts should be type object')\n\n this._name = name || ''\n this._colors = xtend(defaultColors, opts.colors || {})\n\n try {\n this.logLevel = window.localStorage.getItem('logLevel') || 'info'\n } catch (e) {\n this.logLevel = 'info'\n }\n\n this._logLevel = levels[this.logLevel]\n}\n\nNanologger.prototype.trace = function () {\n var args = [ 'trace' ]\n for (var i = 0, len = arguments.length; i < len; i++) args.push(arguments[i])\n this._print.apply(this, args)\n}\n\nNanologger.prototype.debug = function () {\n var args = [ 'debug' ]\n for (var i = 0, len = arguments.length; i < len; i++) args.push(arguments[i])\n this._print.apply(this, args)\n}\n\nNanologger.prototype.info = function () {\n var args = [ 'info' ]\n for (var i = 0, len = arguments.length; i < len; i++) args.push(arguments[i])\n this._print.apply(this, args)\n}\n\nNanologger.prototype.warn = function () {\n var args = [ 'warn' ]\n for (var i = 0, len = arguments.length; i < len; i++) args.push(arguments[i])\n this._print.apply(this, args)\n}\n\nNanologger.prototype.error = function () {\n var args = [ 'error' ]\n for (var i = 0, len = arguments.length; i < len; i++) args.push(arguments[i])\n this._print.apply(this, args)\n}\n\nNanologger.prototype.fatal = function () {\n var args = [ 'fatal' ]\n for (var i = 0, len = arguments.length; i < len; i++) args.push(arguments[i])\n this._print.apply(this, args)\n}\n\nNanologger.prototype._print = function (level) {\n if (levels[level] < this._logLevel) return\n\n var time = getTimeStamp()\n var emoji = emojis[level]\n var name = this._name || 'unknown'\n\n var msgColor = (level === 'error' || level.fatal)\n ? this._colors.red\n : level === 'warn'\n ? this._colors.yellow\n : this._colors.green\n\n var objs = []\n var args = [ null ]\n var msg = '%c%s ' + emoji + ' %c%s'\n\n args.push(color(this._colors.brightBlack), time)\n args.push(color(this._colors.magenta), name)\n\n for (var i = 1, len = arguments.length; i < len; i++) {\n var arg = arguments[i]\n if (typeof arg === 'string') {\n if (i === 1) {\n // first string argument is in color\n msg += ' %c%s'\n args.push(color(msgColor))\n args.push(arg)\n } else if (/ms$/.test(arg)) {\n // arguments finishing with 'ms', grey out\n msg += ' %c%s'\n args.push(color(this._colors.brightBlack))\n args.push(arg)\n } else {\n // normal colors\n msg += ' %c%s'\n args.push(color(this._colors.white))\n args.push(arg)\n }\n } else if (typeof arg === 'number') {\n msg += ' %c%d'\n args.push(color(this._colors.magenta))\n args.push(arg)\n } else {\n objs.push(arg)\n }\n }\n\n args[0] = msg\n objs.forEach(function (obj) {\n args.push(obj)\n })\n\n // In IE/Edge console functions don't inherit from Function.prototype\n // so this is necessary to get all the args applied.\n Function.prototype.apply.apply(console.log, [console, args])\n}\n\nfunction color (color) {\n return 'color: ' + color + ';'\n}\n\nfunction getTimeStamp () {\n var date = new Date()\n var hours = pad(date.getHours().toString())\n var minutes = pad(date.getMinutes().toString())\n var seconds = pad(date.getSeconds().toString())\n return hours + ':' + minutes + ':' + seconds\n}\n\nfunction pad (str) {\n return str.length !== 2 ? 0 + str : str\n}\n\n\n/***/ }),\n/* 64 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(global) {\n\n// compare and isBuffer taken from https://github.com/feross/buffer/blob/680e9e5e488f22aac27599a57dc844a6315928dd/index.js\n// original notice:\n\n/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>\n * @license MIT\n */\nfunction compare(a, b) {\n if (a === b) {\n return 0;\n }\n\n var x = a.length;\n var y = b.length;\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i];\n y = b[i];\n break;\n }\n }\n\n if (x < y) {\n return -1;\n }\n if (y < x) {\n return 1;\n }\n return 0;\n}\nfunction isBuffer(b) {\n if (global.Buffer && typeof global.Buffer.isBuffer === 'function') {\n return global.Buffer.isBuffer(b);\n }\n return !!(b != null && b._isBuffer);\n}\n\n// based on node assert, original notice:\n\n// http://wiki.commonjs.org/wiki/Unit_Testing/1.0\n//\n// THIS IS NOT TESTED NOR LIKELY TO WORK OUTSIDE V8!\n//\n// Originally from narwhal.js (http://narwhaljs.org)\n// Copyright (c) 2009 Thomas Robinson <280north.com>\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the 'Software'), to\n// deal in the Software without restriction, including without limitation the\n// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n// sell copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN\n// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar util = __webpack_require__(65);\nvar hasOwn = Object.prototype.hasOwnProperty;\nvar pSlice = Array.prototype.slice;\nvar functionsHaveNames = (function () {\n return function foo() {}.name === 'foo';\n}());\nfunction pToString (obj) {\n return Object.prototype.toString.call(obj);\n}\nfunction isView(arrbuf) {\n if (isBuffer(arrbuf)) {\n return false;\n }\n if (typeof global.ArrayBuffer !== 'function') {\n return false;\n }\n if (typeof ArrayBuffer.isView === 'function') {\n return ArrayBuffer.isView(arrbuf);\n }\n if (!arrbuf) {\n return false;\n }\n if (arrbuf instanceof DataView) {\n return true;\n }\n if (arrbuf.buffer && arrbuf.buffer instanceof ArrayBuffer) {\n return true;\n }\n return false;\n}\n// 1. The assert module provides functions that throw\n// AssertionError's when particular conditions are not met. The\n// assert module must conform to the following interface.\n\nvar assert = module.exports = ok;\n\n// 2. The AssertionError is defined in assert.\n// new assert.AssertionError({ message: message,\n// actual: actual,\n// expected: expected })\n\nvar regex = /\\s*function\\s+([^\\(\\s]*)\\s*/;\n// based on https://github.com/ljharb/function.prototype.name/blob/adeeeec8bfcc6068b187d7d9fb3d5bb1d3a30899/implementation.js\nfunction getName(func) {\n if (!util.isFunction(func)) {\n return;\n }\n if (functionsHaveNames) {\n return func.name;\n }\n var str = func.toString();\n var match = str.match(regex);\n return match && match[1];\n}\nassert.AssertionError = function AssertionError(options) {\n this.name = 'AssertionError';\n this.actual = options.actual;\n this.expected = options.expected;\n this.operator = options.operator;\n if (options.message) {\n this.message = options.message;\n this.generatedMessage = false;\n } else {\n this.message = getMessage(this);\n this.generatedMessage = true;\n }\n var stackStartFunction = options.stackStartFunction || fail;\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, stackStartFunction);\n } else {\n // non v8 browsers so we can have a stacktrace\n var err = new Error();\n if (err.stack) {\n var out = err.stack;\n\n // try to strip useless frames\n var fn_name = getName(stackStartFunction);\n var idx = out.indexOf('\\n' + fn_name);\n if (idx >= 0) {\n // once we have located the function frame\n // we need to strip out everything before it (and its line)\n var next_line = out.indexOf('\\n', idx + 1);\n out = out.substring(next_line + 1);\n }\n\n this.stack = out;\n }\n }\n};\n\n// assert.AssertionError instanceof Error\nutil.inherits(assert.AssertionError, Error);\n\nfunction truncate(s, n) {\n if (typeof s === 'string') {\n return s.length < n ? s : s.slice(0, n);\n } else {\n return s;\n }\n}\nfunction inspect(something) {\n if (functionsHaveNames || !util.isFunction(something)) {\n return util.inspect(something);\n }\n var rawname = getName(something);\n var name = rawname ? ': ' + rawname : '';\n return '[Function' + name + ']';\n}\nfunction getMessage(self) {\n return truncate(inspect(self.actual), 128) + ' ' +\n self.operator + ' ' +\n truncate(inspect(self.expected), 128);\n}\n\n// At present only the three keys mentioned above are used and\n// understood by the spec. Implementations or sub modules can pass\n// other keys to the AssertionError's constructor - they will be\n// ignored.\n\n// 3. All of the following functions must throw an AssertionError\n// when a corresponding condition is not met, with a message that\n// may be undefined if not provided. All assertion methods provide\n// both the actual and expected values to the assertion error for\n// display purposes.\n\nfunction fail(actual, expected, message, operator, stackStartFunction) {\n throw new assert.AssertionError({\n message: message,\n actual: actual,\n expected: expected,\n operator: operator,\n stackStartFunction: stackStartFunction\n });\n}\n\n// EXTENSION! allows for well behaved errors defined elsewhere.\nassert.fail = fail;\n\n// 4. Pure assertion tests whether a value is truthy, as determined\n// by !!guard.\n// assert.ok(guard, message_opt);\n// This statement is equivalent to assert.equal(true, !!guard,\n// message_opt);. To test strictly for the value true, use\n// assert.strictEqual(true, guard, message_opt);.\n\nfunction ok(value, message) {\n if (!value) fail(value, true, message, '==', assert.ok);\n}\nassert.ok = ok;\n\n// 5. The equality assertion tests shallow, coercive equality with\n// ==.\n// assert.equal(actual, expected, message_opt);\n\nassert.equal = function equal(actual, expected, message) {\n if (actual != expected) fail(actual, expected, message, '==', assert.equal);\n};\n\n// 6. The non-equality assertion tests for whether two objects are not equal\n// with != assert.notEqual(actual, expected, message_opt);\n\nassert.notEqual = function notEqual(actual, expected, message) {\n if (actual == expected) {\n fail(actual, expected, message, '!=', assert.notEqual);\n }\n};\n\n// 7. The equivalence assertion tests a deep equality relation.\n// assert.deepEqual(actual, expected, message_opt);\n\nassert.deepEqual = function deepEqual(actual, expected, message) {\n if (!_deepEqual(actual, expected, false)) {\n fail(actual, expected, message, 'deepEqual', assert.deepEqual);\n }\n};\n\nassert.deepStrictEqual = function deepStrictEqual(actual, expected, message) {\n if (!_deepEqual(actual, expected, true)) {\n fail(actual, expected, message, 'deepStrictEqual', assert.deepStrictEqual);\n }\n};\n\nfunction _deepEqual(actual, expected, strict, memos) {\n // 7.1. All identical values are equivalent, as determined by ===.\n if (actual === expected) {\n return true;\n } else if (isBuffer(actual) && isBuffer(expected)) {\n return compare(actual, expected) === 0;\n\n // 7.2. If the expected value is a Date object, the actual value is\n // equivalent if it is also a Date object that refers to the same time.\n } else if (util.isDate(actual) && util.isDate(expected)) {\n return actual.getTime() === expected.getTime();\n\n // 7.3 If the expected value is a RegExp object, the actual value is\n // equivalent if it is also a RegExp object with the same source and\n // properties (`global`, `multiline`, `lastIndex`, `ignoreCase`).\n } else if (util.isRegExp(actual) && util.isRegExp(expected)) {\n return actual.source === expected.source &&\n actual.global === expected.global &&\n actual.multiline === expected.multiline &&\n actual.lastIndex === expected.lastIndex &&\n actual.ignoreCase === expected.ignoreCase;\n\n // 7.4. Other pairs that do not both pass typeof value == 'object',\n // equivalence is determined by ==.\n } else if ((actual === null || typeof actual !== 'object') &&\n (expected === null || typeof expected !== 'object')) {\n return strict ? actual === expected : actual == expected;\n\n // If both values are instances of typed arrays, wrap their underlying\n // ArrayBuffers in a Buffer each to increase performance\n // This optimization requires the arrays to have the same type as checked by\n // Object.prototype.toString (aka pToString). Never perform binary\n // comparisons for Float*Arrays, though, since e.g. +0 === -0 but their\n // bit patterns are not identical.\n } else if (isView(actual) && isView(expected) &&\n pToString(actual) === pToString(expected) &&\n !(actual instanceof Float32Array ||\n actual instanceof Float64Array)) {\n return compare(new Uint8Array(actual.buffer),\n new Uint8Array(expected.buffer)) === 0;\n\n // 7.5 For all other Object pairs, including Array objects, equivalence is\n // determined by having the same number of owned properties (as verified\n // with Object.prototype.hasOwnProperty.call), the same set of keys\n // (although not necessarily the same order), equivalent values for every\n // corresponding key, and an identical 'prototype' property. Note: this\n // accounts for both named and indexed properties on Arrays.\n } else if (isBuffer(actual) !== isBuffer(expected)) {\n return false;\n } else {\n memos = memos || {actual: [], expected: []};\n\n var actualIndex = memos.actual.indexOf(actual);\n if (actualIndex !== -1) {\n if (actualIndex === memos.expected.indexOf(expected)) {\n return true;\n }\n }\n\n memos.actual.push(actual);\n memos.expected.push(expected);\n\n return objEquiv(actual, expected, strict, memos);\n }\n}\n\nfunction isArguments(object) {\n return Object.prototype.toString.call(object) == '[object Arguments]';\n}\n\nfunction objEquiv(a, b, strict, actualVisitedObjects) {\n if (a === null || a === undefined || b === null || b === undefined)\n return false;\n // if one is a primitive, the other must be same\n if (util.isPrimitive(a) || util.isPrimitive(b))\n return a === b;\n if (strict && Object.getPrototypeOf(a) !== Object.getPrototypeOf(b))\n return false;\n var aIsArgs = isArguments(a);\n var bIsArgs = isArguments(b);\n if ((aIsArgs && !bIsArgs) || (!aIsArgs && bIsArgs))\n return false;\n if (aIsArgs) {\n a = pSlice.call(a);\n b = pSlice.call(b);\n return _deepEqual(a, b, strict);\n }\n var ka = objectKeys(a);\n var kb = objectKeys(b);\n var key, i;\n // having the same number of owned properties (keys incorporates\n // hasOwnProperty)\n if (ka.length !== kb.length)\n return false;\n //the same set of keys (although not necessarily the same order),\n ka.sort();\n kb.sort();\n //~~~cheap key test\n for (i = ka.length - 1; i >= 0; i--) {\n if (ka[i] !== kb[i])\n return false;\n }\n //equivalent values for every corresponding key, and\n //~~~possibly expensive deep test\n for (i = ka.length - 1; i >= 0; i--) {\n key = ka[i];\n if (!_deepEqual(a[key], b[key], strict, actualVisitedObjects))\n return false;\n }\n return true;\n}\n\n// 8. The non-equivalence assertion tests for any deep inequality.\n// assert.notDeepEqual(actual, expected, message_opt);\n\nassert.notDeepEqual = function notDeepEqual(actual, expected, message) {\n if (_deepEqual(actual, expected, false)) {\n fail(actual, expected, message, 'notDeepEqual', assert.notDeepEqual);\n }\n};\n\nassert.notDeepStrictEqual = notDeepStrictEqual;\nfunction notDeepStrictEqual(actual, expected, message) {\n if (_deepEqual(actual, expected, true)) {\n fail(actual, expected, message, 'notDeepStrictEqual', notDeepStrictEqual);\n }\n}\n\n\n// 9. The strict equality assertion tests strict equality, as determined by ===.\n// assert.strictEqual(actual, expected, message_opt);\n\nassert.strictEqual = function strictEqual(actual, expected, message) {\n if (actual !== expected) {\n fail(actual, expected, message, '===', assert.strictEqual);\n }\n};\n\n// 10. The strict non-equality assertion tests for strict inequality, as\n// determined by !==. assert.notStrictEqual(actual, expected, message_opt);\n\nassert.notStrictEqual = function notStrictEqual(actual, expected, message) {\n if (actual === expected) {\n fail(actual, expected, message, '!==', assert.notStrictEqual);\n }\n};\n\nfunction expectedException(actual, expected) {\n if (!actual || !expected) {\n return false;\n }\n\n if (Object.prototype.toString.call(expected) == '[object RegExp]') {\n return expected.test(actual);\n }\n\n try {\n if (actual instanceof expected) {\n return true;\n }\n } catch (e) {\n // Ignore. The instanceof check doesn't work for arrow functions.\n }\n\n if (Error.isPrototypeOf(expected)) {\n return false;\n }\n\n return expected.call({}, actual) === true;\n}\n\nfunction _tryBlock(block) {\n var error;\n try {\n block();\n } catch (e) {\n error = e;\n }\n return error;\n}\n\nfunction _throws(shouldThrow, block, expected, message) {\n var actual;\n\n if (typeof block !== 'function') {\n throw new TypeError('\"block\" argument must be a function');\n }\n\n if (typeof expected === 'string') {\n message = expected;\n expected = null;\n }\n\n actual = _tryBlock(block);\n\n message = (expected && expected.name ? ' (' + expected.name + ').' : '.') +\n (message ? ' ' + message : '.');\n\n if (shouldThrow && !actual) {\n fail(actual, expected, 'Missing expected exception' + message);\n }\n\n var userProvidedMessage = typeof message === 'string';\n var isUnwantedException = !shouldThrow && util.isError(actual);\n var isUnexpectedException = !shouldThrow && actual && !expected;\n\n if ((isUnwantedException &&\n userProvidedMessage &&\n expectedException(actual, expected)) ||\n isUnexpectedException) {\n fail(actual, expected, 'Got unwanted exception' + message);\n }\n\n if ((shouldThrow && actual && expected &&\n !expectedException(actual, expected)) || (!shouldThrow && actual)) {\n throw actual;\n }\n}\n\n// 11. Expected to throw an error:\n// assert.throws(block, Error_opt, message_opt);\n\nassert.throws = function(block, /*optional*/error, /*optional*/message) {\n _throws(true, block, error, message);\n};\n\n// EXTENSION! This is annoying to write outside this module.\nassert.doesNotThrow = function(block, /*optional*/error, /*optional*/message) {\n _throws(false, block, error, message);\n};\n\nassert.ifError = function(err) { if (err) throw err; };\n\nvar objectKeys = Object.keys || function (obj) {\n var keys = [];\n for (var key in obj) {\n if (hasOwn.call(obj, key)) keys.push(key);\n }\n return keys;\n};\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0)))\n\n/***/ }),\n/* 65 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(global, process) {// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar formatRegExp = /%[sdj%]/g;\nexports.format = function(f) {\n if (!isString(f)) {\n var objects = [];\n for (var i = 0; i < arguments.length; i++) {\n objects.push(inspect(arguments[i]));\n }\n return objects.join(' ');\n }\n\n var i = 1;\n var args = arguments;\n var len = args.length;\n var str = String(f).replace(formatRegExp, function(x) {\n if (x === '%%') return '%';\n if (i >= len) return x;\n switch (x) {\n case '%s': return String(args[i++]);\n case '%d': return Number(args[i++]);\n case '%j':\n try {\n return JSON.stringify(args[i++]);\n } catch (_) {\n return '[Circular]';\n }\n default:\n return x;\n }\n });\n for (var x = args[i]; i < len; x = args[++i]) {\n if (isNull(x) || !isObject(x)) {\n str += ' ' + x;\n } else {\n str += ' ' + inspect(x);\n }\n }\n return str;\n};\n\n\n// Mark that a method should not be used.\n// Returns a modified function which warns once by default.\n// If --no-deprecation is set, then it is a no-op.\nexports.deprecate = function(fn, msg) {\n // Allow for deprecating things in the process of starting up.\n if (isUndefined(global.process)) {\n return function() {\n return exports.deprecate(fn, msg).apply(this, arguments);\n };\n }\n\n if (process.noDeprecation === true) {\n return fn;\n }\n\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (process.throwDeprecation) {\n throw new Error(msg);\n } else if (process.traceDeprecation) {\n console.trace(msg);\n } else {\n console.error(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n};\n\n\nvar debugs = {};\nvar debugEnviron;\nexports.debuglog = function(set) {\n if (isUndefined(debugEnviron))\n debugEnviron = process.env.NODE_DEBUG || '';\n set = set.toUpperCase();\n if (!debugs[set]) {\n if (new RegExp('\\\\b' + set + '\\\\b', 'i').test(debugEnviron)) {\n var pid = process.pid;\n debugs[set] = function() {\n var msg = exports.format.apply(exports, arguments);\n console.error('%s %d: %s', set, pid, msg);\n };\n } else {\n debugs[set] = function() {};\n }\n }\n return debugs[set];\n};\n\n\n/**\n * Echos the value of a value. Trys to print the value out\n * in the best way possible given the different types.\n *\n * @param {Object} obj The object to print out.\n * @param {Object} opts Optional options object that alters the output.\n */\n/* legacy: obj, showHidden, depth, colors*/\nfunction inspect(obj, opts) {\n // default options\n var ctx = {\n seen: [],\n stylize: stylizeNoColor\n };\n // legacy...\n if (arguments.length >= 3) ctx.depth = arguments[2];\n if (arguments.length >= 4) ctx.colors = arguments[3];\n if (isBoolean(opts)) {\n // legacy...\n ctx.showHidden = opts;\n } else if (opts) {\n // got an \"options\" object\n exports._extend(ctx, opts);\n }\n // set default options\n if (isUndefined(ctx.showHidden)) ctx.showHidden = false;\n if (isUndefined(ctx.depth)) ctx.depth = 2;\n if (isUndefined(ctx.colors)) ctx.colors = false;\n if (isUndefined(ctx.customInspect)) ctx.customInspect = true;\n if (ctx.colors) ctx.stylize = stylizeWithColor;\n return formatValue(ctx, obj, ctx.depth);\n}\nexports.inspect = inspect;\n\n\n// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics\ninspect.colors = {\n 'bold' : [1, 22],\n 'italic' : [3, 23],\n 'underline' : [4, 24],\n 'inverse' : [7, 27],\n 'white' : [37, 39],\n 'grey' : [90, 39],\n 'black' : [30, 39],\n 'blue' : [34, 39],\n 'cyan' : [36, 39],\n 'green' : [32, 39],\n 'magenta' : [35, 39],\n 'red' : [31, 39],\n 'yellow' : [33, 39]\n};\n\n// Don't use 'blue' not visible on cmd.exe\ninspect.styles = {\n 'special': 'cyan',\n 'number': 'yellow',\n 'boolean': 'yellow',\n 'undefined': 'grey',\n 'null': 'bold',\n 'string': 'green',\n 'date': 'magenta',\n // \"name\": intentionally not styling\n 'regexp': 'red'\n};\n\n\nfunction stylizeWithColor(str, styleType) {\n var style = inspect.styles[styleType];\n\n if (style) {\n return '\\u001b[' + inspect.colors[style][0] + 'm' + str +\n '\\u001b[' + inspect.colors[style][1] + 'm';\n } else {\n return str;\n }\n}\n\n\nfunction stylizeNoColor(str, styleType) {\n return str;\n}\n\n\nfunction arrayToHash(array) {\n var hash = {};\n\n array.forEach(function(val, idx) {\n hash[val] = true;\n });\n\n return hash;\n}\n\n\nfunction formatValue(ctx, value, recurseTimes) {\n // Provide a hook for user-specified inspect functions.\n // Check that value is an object with an inspect function on it\n if (ctx.customInspect &&\n value &&\n isFunction(value.inspect) &&\n // Filter out the util module, it's inspect function is special\n value.inspect !== exports.inspect &&\n // Also filter out any prototype objects using the circular check.\n !(value.constructor && value.constructor.prototype === value)) {\n var ret = value.inspect(recurseTimes, ctx);\n if (!isString(ret)) {\n ret = formatValue(ctx, ret, recurseTimes);\n }\n return ret;\n }\n\n // Primitive types cannot have properties\n var primitive = formatPrimitive(ctx, value);\n if (primitive) {\n return primitive;\n }\n\n // Look up the keys of the object.\n var keys = Object.keys(value);\n var visibleKeys = arrayToHash(keys);\n\n if (ctx.showHidden) {\n keys = Object.getOwnPropertyNames(value);\n }\n\n // IE doesn't make error fields non-enumerable\n // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx\n if (isError(value)\n && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {\n return formatError(value);\n }\n\n // Some type of object without properties can be shortcutted.\n if (keys.length === 0) {\n if (isFunction(value)) {\n var name = value.name ? ': ' + value.name : '';\n return ctx.stylize('[Function' + name + ']', 'special');\n }\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n }\n if (isDate(value)) {\n return ctx.stylize(Date.prototype.toString.call(value), 'date');\n }\n if (isError(value)) {\n return formatError(value);\n }\n }\n\n var base = '', array = false, braces = ['{', '}'];\n\n // Make Array say that they are Array\n if (isArray(value)) {\n array = true;\n braces = ['[', ']'];\n }\n\n // Make functions say that they are functions\n if (isFunction(value)) {\n var n = value.name ? ': ' + value.name : '';\n base = ' [Function' + n + ']';\n }\n\n // Make RegExps say that they are RegExps\n if (isRegExp(value)) {\n base = ' ' + RegExp.prototype.toString.call(value);\n }\n\n // Make dates with properties first say the date\n if (isDate(value)) {\n base = ' ' + Date.prototype.toUTCString.call(value);\n }\n\n // Make error with message first say the error\n if (isError(value)) {\n base = ' ' + formatError(value);\n }\n\n if (keys.length === 0 && (!array || value.length == 0)) {\n return braces[0] + base + braces[1];\n }\n\n if (recurseTimes < 0) {\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n } else {\n return ctx.stylize('[Object]', 'special');\n }\n }\n\n ctx.seen.push(value);\n\n var output;\n if (array) {\n output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);\n } else {\n output = keys.map(function(key) {\n return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);\n });\n }\n\n ctx.seen.pop();\n\n return reduceToSingleString(output, base, braces);\n}\n\n\nfunction formatPrimitive(ctx, value) {\n if (isUndefined(value))\n return ctx.stylize('undefined', 'undefined');\n if (isString(value)) {\n var simple = '\\'' + JSON.stringify(value).replace(/^\"|\"$/g, '')\n .replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"') + '\\'';\n return ctx.stylize(simple, 'string');\n }\n if (isNumber(value))\n return ctx.stylize('' + value, 'number');\n if (isBoolean(value))\n return ctx.stylize('' + value, 'boolean');\n // For some reason typeof null is \"object\", so special case here.\n if (isNull(value))\n return ctx.stylize('null', 'null');\n}\n\n\nfunction formatError(value) {\n return '[' + Error.prototype.toString.call(value) + ']';\n}\n\n\nfunction formatArray(ctx, value, recurseTimes, visibleKeys, keys) {\n var output = [];\n for (var i = 0, l = value.length; i < l; ++i) {\n if (hasOwnProperty(value, String(i))) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n String(i), true));\n } else {\n output.push('');\n }\n }\n keys.forEach(function(key) {\n if (!key.match(/^\\d+$/)) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n key, true));\n }\n });\n return output;\n}\n\n\nfunction formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {\n var name, str, desc;\n desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };\n if (desc.get) {\n if (desc.set) {\n str = ctx.stylize('[Getter/Setter]', 'special');\n } else {\n str = ctx.stylize('[Getter]', 'special');\n }\n } else {\n if (desc.set) {\n str = ctx.stylize('[Setter]', 'special');\n }\n }\n if (!hasOwnProperty(visibleKeys, key)) {\n name = '[' + key + ']';\n }\n if (!str) {\n if (ctx.seen.indexOf(desc.value) < 0) {\n if (isNull(recurseTimes)) {\n str = formatValue(ctx, desc.value, null);\n } else {\n str = formatValue(ctx, desc.value, recurseTimes - 1);\n }\n if (str.indexOf('\\n') > -1) {\n if (array) {\n str = str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n').substr(2);\n } else {\n str = '\\n' + str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n');\n }\n }\n } else {\n str = ctx.stylize('[Circular]', 'special');\n }\n }\n if (isUndefined(name)) {\n if (array && key.match(/^\\d+$/)) {\n return str;\n }\n name = JSON.stringify('' + key);\n if (name.match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)) {\n name = name.substr(1, name.length - 2);\n name = ctx.stylize(name, 'name');\n } else {\n name = name.replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"')\n .replace(/(^\"|\"$)/g, \"'\");\n name = ctx.stylize(name, 'string');\n }\n }\n\n return name + ': ' + str;\n}\n\n\nfunction reduceToSingleString(output, base, braces) {\n var numLinesEst = 0;\n var length = output.reduce(function(prev, cur) {\n numLinesEst++;\n if (cur.indexOf('\\n') >= 0) numLinesEst++;\n return prev + cur.replace(/\\u001b\\[\\d\\d?m/g, '').length + 1;\n }, 0);\n\n if (length > 60) {\n return braces[0] +\n (base === '' ? '' : base + '\\n ') +\n ' ' +\n output.join(',\\n ') +\n ' ' +\n braces[1];\n }\n\n return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];\n}\n\n\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\nfunction isArray(ar) {\n return Array.isArray(ar);\n}\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n return typeof arg === 'boolean';\n}\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n return arg === null;\n}\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n return arg == null;\n}\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n return typeof arg === 'string';\n}\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n return typeof arg === 'symbol';\n}\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n return isObject(re) && objectToString(re) === '[object RegExp]';\n}\nexports.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\nexports.isObject = isObject;\n\nfunction isDate(d) {\n return isObject(d) && objectToString(d) === '[object Date]';\n}\nexports.isDate = isDate;\n\nfunction isError(e) {\n return isObject(e) &&\n (objectToString(e) === '[object Error]' || e instanceof Error);\n}\nexports.isError = isError;\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n return arg === null ||\n typeof arg === 'boolean' ||\n typeof arg === 'number' ||\n typeof arg === 'string' ||\n typeof arg === 'symbol' || // ES6 symbol\n typeof arg === 'undefined';\n}\nexports.isPrimitive = isPrimitive;\n\nexports.isBuffer = __webpack_require__(66);\n\nfunction objectToString(o) {\n return Object.prototype.toString.call(o);\n}\n\n\nfunction pad(n) {\n return n < 10 ? '0' + n.toString(10) : n.toString(10);\n}\n\n\nvar months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',\n 'Oct', 'Nov', 'Dec'];\n\n// 26 Feb 16:19:34\nfunction timestamp() {\n var d = new Date();\n var time = [pad(d.getHours()),\n pad(d.getMinutes()),\n pad(d.getSeconds())].join(':');\n return [d.getDate(), months[d.getMonth()], time].join(' ');\n}\n\n\n// log is just a thin wrapper to console.log that prepends a timestamp\nexports.log = function() {\n console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));\n};\n\n\n/**\n * Inherit the prototype methods from one constructor into another.\n *\n * The Function.prototype.inherits from lang.js rewritten as a standalone\n * function (not on Function.prototype). NOTE: If this file is to be loaded\n * during bootstrapping this function needs to be rewritten using some native\n * functions as prototype setup using normal JavaScript does not work as\n * expected during bootstrapping (see mirror.js in r114903).\n *\n * @param {function} ctor Constructor function which needs to inherit the\n * prototype.\n * @param {function} superCtor Constructor function to inherit prototype from.\n */\nexports.inherits = __webpack_require__(67);\n\nexports._extend = function(origin, add) {\n // Don't do anything if add isn't an object\n if (!add || !isObject(add)) return origin;\n\n var keys = Object.keys(add);\n var i = keys.length;\n while (i--) {\n origin[keys[i]] = add[keys[i]];\n }\n return origin;\n};\n\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0), __webpack_require__(15)))\n\n/***/ }),\n/* 66 */\n/***/ (function(module, exports) {\n\nmodule.exports = function isBuffer(arg) {\n return arg && typeof arg === 'object'\n && typeof arg.copy === 'function'\n && typeof arg.fill === 'function'\n && typeof arg.readUInt8 === 'function';\n}\n\n/***/ }),\n/* 67 */\n/***/ (function(module, exports) {\n\nif (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n}\n\n\n/***/ }),\n/* 68 */\n/***/ (function(module, exports) {\n\nmodule.exports = extend\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction extend() {\n var target = {}\n\n for (var i = 0; i < arguments.length; i++) {\n var source = arguments[i]\n\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n target[key] = source[key]\n }\n }\n }\n\n return target\n}\n\n\n/***/ }),\n/* 69 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar socket = __webpack_require__(13);\r\nvar emitter = __webpack_require__(7);\r\nvar notify = __webpack_require__(26);\r\nvar tab = __webpack_require__(70);\r\nvar utils = __webpack_require__(4);\r\n/**\r\n * @constructor\r\n */\r\nvar BrowserSync = function (options) {\r\n this.options = options;\r\n this.socket = socket;\r\n this.emitter = emitter;\r\n this.utils = utils;\r\n this.tabHidden = false;\r\n var bs = this;\r\n /**\r\n * Options set\r\n */\r\n socket.on(\"options:set\", function (data) {\r\n emitter.emit(\"notify\", \"Setting options...\");\r\n bs.options = data.options;\r\n });\r\n emitter.on(\"tab:hidden\", function () {\r\n bs.tabHidden = true;\r\n });\r\n emitter.on(\"tab:visible\", function () {\r\n bs.tabHidden = false;\r\n });\r\n};\r\n/**\r\n * Helper to check if syncing is allowed\r\n * @param data\r\n * @param optPath\r\n * @returns {boolean}\r\n */\r\nBrowserSync.prototype.canSync = function (data, optPath) {\r\n data = data || {};\r\n if (data.override) {\r\n return true;\r\n }\r\n var canSync = true;\r\n if (optPath) {\r\n canSync = this.getOption(optPath);\r\n }\r\n return canSync && data.url === window.location.pathname;\r\n};\r\n/**\r\n * Helper to check if syncing is allowed\r\n * @returns {boolean}\r\n */\r\nBrowserSync.prototype.getOption = function (path) {\r\n if (path && path.match(/\\./)) {\r\n return getByPath(this.options, path);\r\n }\r\n else {\r\n var opt = this.options[path];\r\n if (isUndefined(opt)) {\r\n return false;\r\n }\r\n else {\r\n return opt;\r\n }\r\n }\r\n};\r\n/**\r\n * @type {Function}\r\n */\r\nmodule.exports = BrowserSync;\r\n/**\r\n * @param {String} val\r\n * @returns {boolean}\r\n */\r\nfunction isUndefined(val) {\r\n return \"undefined\" === typeof val;\r\n}\r\n/**\r\n * @param obj\r\n * @param path\r\n */\r\nfunction getByPath(obj, path) {\r\n for (var i = 0, tempPath = path.split(\".\"), len = tempPath.length; i < len; i++) {\r\n if (!obj || typeof obj !== \"object\") {\r\n return false;\r\n }\r\n obj = obj[tempPath[i]];\r\n }\r\n if (typeof obj === \"undefined\") {\r\n return false;\r\n }\r\n return obj;\r\n}\r\n\n\n/***/ }),\n/* 70 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar utils = __webpack_require__(4);\r\nvar emitter = __webpack_require__(7);\r\nvar $document = utils.getDocument();\r\n// Set the name of the hidden property and the change event for visibility\r\nvar hidden, visibilityChange;\r\nif (typeof $document.hidden !== \"undefined\") {\r\n // Opera 12.10 and Firefox 18 and later support\r\n hidden = \"hidden\";\r\n visibilityChange = \"visibilitychange\";\r\n}\r\nelse if (typeof $document.mozHidden !== \"undefined\") {\r\n hidden = \"mozHidden\";\r\n visibilityChange = \"mozvisibilitychange\";\r\n}\r\nelse if (typeof $document.msHidden !== \"undefined\") {\r\n hidden = \"msHidden\";\r\n visibilityChange = \"msvisibilitychange\";\r\n}\r\nelse if (typeof $document.webkitHidden !== \"undefined\") {\r\n hidden = \"webkitHidden\";\r\n visibilityChange = \"webkitvisibilitychange\";\r\n}\r\n// If the page is hidden, pause the video;\r\n// if the page is shown, play the video\r\nfunction handleVisibilityChange() {\r\n if ($document[hidden]) {\r\n emitter.emit(\"tab:hidden\");\r\n }\r\n else {\r\n emitter.emit(\"tab:visible\");\r\n }\r\n}\r\nif (typeof $document.addEventListener === \"undefined\" ||\r\n typeof $document[hidden] === \"undefined\") {\r\n //console.log('not supported');\r\n}\r\nelse {\r\n $document.addEventListener(visibilityChange, handleVisibilityChange, false);\r\n}\r\n\n\n/***/ }),\n/* 71 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar eventManager = __webpack_require__(12).manager;\r\nexports.plugins = {\r\n scroll: __webpack_require__(11),\r\n clicks: __webpack_require__(27),\r\n forms: __webpack_require__(28),\r\n location: __webpack_require__(32)\r\n};\r\n/**\r\n * Load plugins for enabled options\r\n * @param bs\r\n */\r\nexports.init = function (bs) {\r\n for (var name in exports.plugins) {\r\n if (bs.options.ghostMode[name]) {\r\n exports.plugins[name].init(bs, eventManager);\r\n }\r\n }\r\n};\r\n\n\n/***/ })\n/******/ ]);\n\n\n// WEBPACK FOOTER //\n// index.min.js"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 33);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap c999e2f6d9a134306bac","var g;\r\n\r\n// This works in non-strict mode\r\ng = (function() {\r\n\treturn this;\r\n})();\r\n\r\ntry {\r\n\t// This works if eval is allowed (see CSP)\r\n\tg = g || Function(\"return this\")() || (1,eval)(\"this\");\r\n} catch(e) {\r\n\t// This works if the window reference is available\r\n\tif(typeof window === \"object\")\r\n\t\tg = window;\r\n}\r\n\r\n// g can still be undefined, but nothing to do about it...\r\n// We return undefined, instead of nothing here, so it's\r\n// easier to handle this case. if(!global) { ...}\r\n\r\nmodule.exports = g;\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// (webpack)/buildin/global.js\n// module id = 0\n// module chunks = 0","/**\n * This is the web browser implementation of `debug()`.\n *\n * Expose `debug()` as the module.\n */\n\nexports = module.exports = require('./debug');\nexports.log = log;\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = 'undefined' != typeof chrome\n && 'undefined' != typeof chrome.storage\n ? chrome.storage.local\n : localstorage();\n\n/**\n * Colors.\n */\n\nexports.colors = [\n 'lightseagreen',\n 'forestgreen',\n 'goldenrod',\n 'dodgerblue',\n 'darkorchid',\n 'crimson'\n];\n\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n\nfunction useColors() {\n // NB: In an Electron preload script, document will be defined but not fully\n // initialized. Since we know we're in Chrome, we'll just detect this case\n // explicitly\n if (typeof window !== 'undefined' && window.process && window.process.type === 'renderer') {\n return true;\n }\n\n // is webkit? http://stackoverflow.com/a/16459606/376773\n // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n return (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||\n // is firebug? http://stackoverflow.com/a/398120/376773\n (typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||\n // is firefox >= v31?\n // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/) && parseInt(RegExp.$1, 10) >= 31) ||\n // double check webkit in userAgent just in case we are in a worker\n (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/));\n}\n\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nexports.formatters.j = function(v) {\n try {\n return JSON.stringify(v);\n } catch (err) {\n return '[UnexpectedJSONParseError]: ' + err.message;\n }\n};\n\n\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n var useColors = this.useColors;\n\n args[0] = (useColors ? '%c' : '')\n + this.namespace\n + (useColors ? ' %c' : ' ')\n + args[0]\n + (useColors ? '%c ' : ' ')\n + '+' + exports.humanize(this.diff);\n\n if (!useColors) return;\n\n var c = 'color: ' + this.color;\n args.splice(1, 0, c, 'color: inherit')\n\n // the final \"%c\" is somewhat tricky, because there could be other\n // arguments passed either before or after the %c, so we need to\n // figure out the correct index to insert the CSS into\n var index = 0;\n var lastC = 0;\n args[0].replace(/%[a-zA-Z%]/g, function(match) {\n if ('%%' === match) return;\n index++;\n if ('%c' === match) {\n // we only are interested in the *last* %c\n // (the user may have provided their own)\n lastC = index;\n }\n });\n\n args.splice(lastC, 0, c);\n}\n\n/**\n * Invokes `console.log()` when available.\n * No-op when `console.log` is not a \"function\".\n *\n * @api public\n */\n\nfunction log() {\n // this hackery is required for IE8/9, where\n // the `console.log` function doesn't have 'apply'\n return 'object' === typeof console\n && console.log\n && Function.prototype.apply.call(console.log, console, arguments);\n}\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\n\nfunction save(namespaces) {\n try {\n if (null == namespaces) {\n exports.storage.removeItem('debug');\n } else {\n exports.storage.debug = namespaces;\n }\n } catch(e) {}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\n\nfunction load() {\n var r;\n try {\n r = exports.storage.debug;\n } catch(e) {}\n\n // If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n if (!r && typeof process !== 'undefined' && 'env' in process) {\n r = process.env.DEBUG;\n }\n\n return r;\n}\n\n/**\n * Enable namespaces listed in `localStorage.debug` initially.\n */\n\nexports.enable(load());\n\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\nfunction localstorage() {\n try {\n return window.localStorage;\n } catch (e) {}\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/debug/src/browser.js\n// module id = 1\n// module chunks = 0","\r\n/**\r\n * Expose `Emitter`.\r\n */\r\n\r\nif (typeof module !== 'undefined') {\r\n module.exports = Emitter;\r\n}\r\n\r\n/**\r\n * Initialize a new `Emitter`.\r\n *\r\n * @api public\r\n */\r\n\r\nfunction Emitter(obj) {\r\n if (obj) return mixin(obj);\r\n};\r\n\r\n/**\r\n * Mixin the emitter properties.\r\n *\r\n * @param {Object} obj\r\n * @return {Object}\r\n * @api private\r\n */\r\n\r\nfunction mixin(obj) {\r\n for (var key in Emitter.prototype) {\r\n obj[key] = Emitter.prototype[key];\r\n }\r\n return obj;\r\n}\r\n\r\n/**\r\n * Listen on the given `event` with `fn`.\r\n *\r\n * @param {String} event\r\n * @param {Function} fn\r\n * @return {Emitter}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.on =\r\nEmitter.prototype.addEventListener = function(event, fn){\r\n this._callbacks = this._callbacks || {};\r\n (this._callbacks['$' + event] = this._callbacks['$' + event] || [])\r\n .push(fn);\r\n return this;\r\n};\r\n\r\n/**\r\n * Adds an `event` listener that will be invoked a single\r\n * time then automatically removed.\r\n *\r\n * @param {String} event\r\n * @param {Function} fn\r\n * @return {Emitter}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.once = function(event, fn){\r\n function on() {\r\n this.off(event, on);\r\n fn.apply(this, arguments);\r\n }\r\n\r\n on.fn = fn;\r\n this.on(event, on);\r\n return this;\r\n};\r\n\r\n/**\r\n * Remove the given callback for `event` or all\r\n * registered callbacks.\r\n *\r\n * @param {String} event\r\n * @param {Function} fn\r\n * @return {Emitter}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.off =\r\nEmitter.prototype.removeListener =\r\nEmitter.prototype.removeAllListeners =\r\nEmitter.prototype.removeEventListener = function(event, fn){\r\n this._callbacks = this._callbacks || {};\r\n\r\n // all\r\n if (0 == arguments.length) {\r\n this._callbacks = {};\r\n return this;\r\n }\r\n\r\n // specific event\r\n var callbacks = this._callbacks['$' + event];\r\n if (!callbacks) return this;\r\n\r\n // remove all handlers\r\n if (1 == arguments.length) {\r\n delete this._callbacks['$' + event];\r\n return this;\r\n }\r\n\r\n // remove specific handler\r\n var cb;\r\n for (var i = 0; i < callbacks.length; i++) {\r\n cb = callbacks[i];\r\n if (cb === fn || cb.fn === fn) {\r\n callbacks.splice(i, 1);\r\n break;\r\n }\r\n }\r\n return this;\r\n};\r\n\r\n/**\r\n * Emit `event` with the given args.\r\n *\r\n * @param {String} event\r\n * @param {Mixed} ...\r\n * @return {Emitter}\r\n */\r\n\r\nEmitter.prototype.emit = function(event){\r\n this._callbacks = this._callbacks || {};\r\n var args = [].slice.call(arguments, 1)\r\n , callbacks = this._callbacks['$' + event];\r\n\r\n if (callbacks) {\r\n callbacks = callbacks.slice(0);\r\n for (var i = 0, len = callbacks.length; i < len; ++i) {\r\n callbacks[i].apply(this, args);\r\n }\r\n }\r\n\r\n return this;\r\n};\r\n\r\n/**\r\n * Return array of callbacks for `event`.\r\n *\r\n * @param {String} event\r\n * @return {Array}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.listeners = function(event){\r\n this._callbacks = this._callbacks || {};\r\n return this._callbacks['$' + event] || [];\r\n};\r\n\r\n/**\r\n * Check if this emitter has `event` handlers.\r\n *\r\n * @param {String} event\r\n * @return {Boolean}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.hasListeners = function(event){\r\n return !! this.listeners(event).length;\r\n};\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/component-emitter/index.js\n// module id = 2\n// module chunks = 0","/**\n * Module dependencies.\n */\n\nvar keys = require('./keys');\nvar hasBinary = require('has-binary2');\nvar sliceBuffer = require('arraybuffer.slice');\nvar after = require('after');\nvar utf8 = require('./utf8');\n\nvar base64encoder;\nif (global && global.ArrayBuffer) {\n base64encoder = require('base64-arraybuffer');\n}\n\n/**\n * Check if we are running an android browser. That requires us to use\n * ArrayBuffer with polling transports...\n *\n * http://ghinda.net/jpeg-blob-ajax-android/\n */\n\nvar isAndroid = typeof navigator !== 'undefined' && /Android/i.test(navigator.userAgent);\n\n/**\n * Check if we are running in PhantomJS.\n * Uploading a Blob with PhantomJS does not work correctly, as reported here:\n * https://github.com/ariya/phantomjs/issues/11395\n * @type boolean\n */\nvar isPhantomJS = typeof navigator !== 'undefined' && /PhantomJS/i.test(navigator.userAgent);\n\n/**\n * When true, avoids using Blobs to encode payloads.\n * @type boolean\n */\nvar dontSendBlobs = isAndroid || isPhantomJS;\n\n/**\n * Current protocol version.\n */\n\nexports.protocol = 3;\n\n/**\n * Packet types.\n */\n\nvar packets = exports.packets = {\n open: 0 // non-ws\n , close: 1 // non-ws\n , ping: 2\n , pong: 3\n , message: 4\n , upgrade: 5\n , noop: 6\n};\n\nvar packetslist = keys(packets);\n\n/**\n * Premade error packet.\n */\n\nvar err = { type: 'error', data: 'parser error' };\n\n/**\n * Create a blob api even for blob builder when vendor prefixes exist\n */\n\nvar Blob = require('blob');\n\n/**\n * Encodes a packet.\n *\n * <packet type id> [ <data> ]\n *\n * Example:\n *\n * 5hello world\n * 3\n * 4\n *\n * Binary is encoded in an identical principle\n *\n * @api private\n */\n\nexports.encodePacket = function (packet, supportsBinary, utf8encode, callback) {\n if (typeof supportsBinary === 'function') {\n callback = supportsBinary;\n supportsBinary = false;\n }\n\n if (typeof utf8encode === 'function') {\n callback = utf8encode;\n utf8encode = null;\n }\n\n var data = (packet.data === undefined)\n ? undefined\n : packet.data.buffer || packet.data;\n\n if (global.ArrayBuffer && data instanceof ArrayBuffer) {\n return encodeArrayBuffer(packet, supportsBinary, callback);\n } else if (Blob && data instanceof global.Blob) {\n return encodeBlob(packet, supportsBinary, callback);\n }\n\n // might be an object with { base64: true, data: dataAsBase64String }\n if (data && data.base64) {\n return encodeBase64Object(packet, callback);\n }\n\n // Sending data as a utf-8 string\n var encoded = packets[packet.type];\n\n // data fragment is optional\n if (undefined !== packet.data) {\n encoded += utf8encode ? utf8.encode(String(packet.data), { strict: false }) : String(packet.data);\n }\n\n return callback('' + encoded);\n\n};\n\nfunction encodeBase64Object(packet, callback) {\n // packet data is an object { base64: true, data: dataAsBase64String }\n var message = 'b' + exports.packets[packet.type] + packet.data.data;\n return callback(message);\n}\n\n/**\n * Encode packet helpers for binary types\n */\n\nfunction encodeArrayBuffer(packet, supportsBinary, callback) {\n if (!supportsBinary) {\n return exports.encodeBase64Packet(packet, callback);\n }\n\n var data = packet.data;\n var contentArray = new Uint8Array(data);\n var resultBuffer = new Uint8Array(1 + data.byteLength);\n\n resultBuffer[0] = packets[packet.type];\n for (var i = 0; i < contentArray.length; i++) {\n resultBuffer[i+1] = contentArray[i];\n }\n\n return callback(resultBuffer.buffer);\n}\n\nfunction encodeBlobAsArrayBuffer(packet, supportsBinary, callback) {\n if (!supportsBinary) {\n return exports.encodeBase64Packet(packet, callback);\n }\n\n var fr = new FileReader();\n fr.onload = function() {\n packet.data = fr.result;\n exports.encodePacket(packet, supportsBinary, true, callback);\n };\n return fr.readAsArrayBuffer(packet.data);\n}\n\nfunction encodeBlob(packet, supportsBinary, callback) {\n if (!supportsBinary) {\n return exports.encodeBase64Packet(packet, callback);\n }\n\n if (dontSendBlobs) {\n return encodeBlobAsArrayBuffer(packet, supportsBinary, callback);\n }\n\n var length = new Uint8Array(1);\n length[0] = packets[packet.type];\n var blob = new Blob([length.buffer, packet.data]);\n\n return callback(blob);\n}\n\n/**\n * Encodes a packet with binary data in a base64 string\n *\n * @param {Object} packet, has `type` and `data`\n * @return {String} base64 encoded message\n */\n\nexports.encodeBase64Packet = function(packet, callback) {\n var message = 'b' + exports.packets[packet.type];\n if (Blob && packet.data instanceof global.Blob) {\n var fr = new FileReader();\n fr.onload = function() {\n var b64 = fr.result.split(',')[1];\n callback(message + b64);\n };\n return fr.readAsDataURL(packet.data);\n }\n\n var b64data;\n try {\n b64data = String.fromCharCode.apply(null, new Uint8Array(packet.data));\n } catch (e) {\n // iPhone Safari doesn't let you apply with typed arrays\n var typed = new Uint8Array(packet.data);\n var basic = new Array(typed.length);\n for (var i = 0; i < typed.length; i++) {\n basic[i] = typed[i];\n }\n b64data = String.fromCharCode.apply(null, basic);\n }\n message += global.btoa(b64data);\n return callback(message);\n};\n\n/**\n * Decodes a packet. Changes format to Blob if requested.\n *\n * @return {Object} with `type` and `data` (if any)\n * @api private\n */\n\nexports.decodePacket = function (data, binaryType, utf8decode) {\n if (data === undefined) {\n return err;\n }\n // String data\n if (typeof data === 'string') {\n if (data.charAt(0) === 'b') {\n return exports.decodeBase64Packet(data.substr(1), binaryType);\n }\n\n if (utf8decode) {\n data = tryDecode(data);\n if (data === false) {\n return err;\n }\n }\n var type = data.charAt(0);\n\n if (Number(type) != type || !packetslist[type]) {\n return err;\n }\n\n if (data.length > 1) {\n return { type: packetslist[type], data: data.substring(1) };\n } else {\n return { type: packetslist[type] };\n }\n }\n\n var asArray = new Uint8Array(data);\n var type = asArray[0];\n var rest = sliceBuffer(data, 1);\n if (Blob && binaryType === 'blob') {\n rest = new Blob([rest]);\n }\n return { type: packetslist[type], data: rest };\n};\n\nfunction tryDecode(data) {\n try {\n data = utf8.decode(data, { strict: false });\n } catch (e) {\n return false;\n }\n return data;\n}\n\n/**\n * Decodes a packet encoded in a base64 string\n *\n * @param {String} base64 encoded message\n * @return {Object} with `type` and `data` (if any)\n */\n\nexports.decodeBase64Packet = function(msg, binaryType) {\n var type = packetslist[msg.charAt(0)];\n if (!base64encoder) {\n return { type: type, data: { base64: true, data: msg.substr(1) } };\n }\n\n var data = base64encoder.decode(msg.substr(1));\n\n if (binaryType === 'blob' && Blob) {\n data = new Blob([data]);\n }\n\n return { type: type, data: data };\n};\n\n/**\n * Encodes multiple messages (payload).\n *\n * <length>:data\n *\n * Example:\n *\n * 11:hello world2:hi\n *\n * If any contents are binary, they will be encoded as base64 strings. Base64\n * encoded strings are marked with a b before the length specifier\n *\n * @param {Array} packets\n * @api private\n */\n\nexports.encodePayload = function (packets, supportsBinary, callback) {\n if (typeof supportsBinary === 'function') {\n callback = supportsBinary;\n supportsBinary = null;\n }\n\n var isBinary = hasBinary(packets);\n\n if (supportsBinary && isBinary) {\n if (Blob && !dontSendBlobs) {\n return exports.encodePayloadAsBlob(packets, callback);\n }\n\n return exports.encodePayloadAsArrayBuffer(packets, callback);\n }\n\n if (!packets.length) {\n return callback('0:');\n }\n\n function setLengthHeader(message) {\n return message.length + ':' + message;\n }\n\n function encodeOne(packet, doneCallback) {\n exports.encodePacket(packet, !isBinary ? false : supportsBinary, false, function(message) {\n doneCallback(null, setLengthHeader(message));\n });\n }\n\n map(packets, encodeOne, function(err, results) {\n return callback(results.join(''));\n });\n};\n\n/**\n * Async array map using after\n */\n\nfunction map(ary, each, done) {\n var result = new Array(ary.length);\n var next = after(ary.length, done);\n\n var eachWithIndex = function(i, el, cb) {\n each(el, function(error, msg) {\n result[i] = msg;\n cb(error, result);\n });\n };\n\n for (var i = 0; i < ary.length; i++) {\n eachWithIndex(i, ary[i], next);\n }\n}\n\n/*\n * Decodes data when a payload is maybe expected. Possible binary contents are\n * decoded from their base64 representation\n *\n * @param {String} data, callback method\n * @api public\n */\n\nexports.decodePayload = function (data, binaryType, callback) {\n if (typeof data !== 'string') {\n return exports.decodePayloadAsBinary(data, binaryType, callback);\n }\n\n if (typeof binaryType === 'function') {\n callback = binaryType;\n binaryType = null;\n }\n\n var packet;\n if (data === '') {\n // parser error - ignoring payload\n return callback(err, 0, 1);\n }\n\n var length = '', n, msg;\n\n for (var i = 0, l = data.length; i < l; i++) {\n var chr = data.charAt(i);\n\n if (chr !== ':') {\n length += chr;\n continue;\n }\n\n if (length === '' || (length != (n = Number(length)))) {\n // parser error - ignoring payload\n return callback(err, 0, 1);\n }\n\n msg = data.substr(i + 1, n);\n\n if (length != msg.length) {\n // parser error - ignoring payload\n return callback(err, 0, 1);\n }\n\n if (msg.length) {\n packet = exports.decodePacket(msg, binaryType, false);\n\n if (err.type === packet.type && err.data === packet.data) {\n // parser error in individual packet - ignoring payload\n return callback(err, 0, 1);\n }\n\n var ret = callback(packet, i + n, l);\n if (false === ret) return;\n }\n\n // advance cursor\n i += n;\n length = '';\n }\n\n if (length !== '') {\n // parser error - ignoring payload\n return callback(err, 0, 1);\n }\n\n};\n\n/**\n * Encodes multiple messages (payload) as binary.\n *\n * <1 = binary, 0 = string><number from 0-9><number from 0-9>[...]<number\n * 255><data>\n *\n * Example:\n * 1 3 255 1 2 3, if the binary contents are interpreted as 8 bit integers\n *\n * @param {Array} packets\n * @return {ArrayBuffer} encoded payload\n * @api private\n */\n\nexports.encodePayloadAsArrayBuffer = function(packets, callback) {\n if (!packets.length) {\n return callback(new ArrayBuffer(0));\n }\n\n function encodeOne(packet, doneCallback) {\n exports.encodePacket(packet, true, true, function(data) {\n return doneCallback(null, data);\n });\n }\n\n map(packets, encodeOne, function(err, encodedPackets) {\n var totalLength = encodedPackets.reduce(function(acc, p) {\n var len;\n if (typeof p === 'string'){\n len = p.length;\n } else {\n len = p.byteLength;\n }\n return acc + len.toString().length + len + 2; // string/binary identifier + separator = 2\n }, 0);\n\n var resultArray = new Uint8Array(totalLength);\n\n var bufferIndex = 0;\n encodedPackets.forEach(function(p) {\n var isString = typeof p === 'string';\n var ab = p;\n if (isString) {\n var view = new Uint8Array(p.length);\n for (var i = 0; i < p.length; i++) {\n view[i] = p.charCodeAt(i);\n }\n ab = view.buffer;\n }\n\n if (isString) { // not true binary\n resultArray[bufferIndex++] = 0;\n } else { // true binary\n resultArray[bufferIndex++] = 1;\n }\n\n var lenStr = ab.byteLength.toString();\n for (var i = 0; i < lenStr.length; i++) {\n resultArray[bufferIndex++] = parseInt(lenStr[i]);\n }\n resultArray[bufferIndex++] = 255;\n\n var view = new Uint8Array(ab);\n for (var i = 0; i < view.length; i++) {\n resultArray[bufferIndex++] = view[i];\n }\n });\n\n return callback(resultArray.buffer);\n });\n};\n\n/**\n * Encode as Blob\n */\n\nexports.encodePayloadAsBlob = function(packets, callback) {\n function encodeOne(packet, doneCallback) {\n exports.encodePacket(packet, true, true, function(encoded) {\n var binaryIdentifier = new Uint8Array(1);\n binaryIdentifier[0] = 1;\n if (typeof encoded === 'string') {\n var view = new Uint8Array(encoded.length);\n for (var i = 0; i < encoded.length; i++) {\n view[i] = encoded.charCodeAt(i);\n }\n encoded = view.buffer;\n binaryIdentifier[0] = 0;\n }\n\n var len = (encoded instanceof ArrayBuffer)\n ? encoded.byteLength\n : encoded.size;\n\n var lenStr = len.toString();\n var lengthAry = new Uint8Array(lenStr.length + 1);\n for (var i = 0; i < lenStr.length; i++) {\n lengthAry[i] = parseInt(lenStr[i]);\n }\n lengthAry[lenStr.length] = 255;\n\n if (Blob) {\n var blob = new Blob([binaryIdentifier.buffer, lengthAry.buffer, encoded]);\n doneCallback(null, blob);\n }\n });\n }\n\n map(packets, encodeOne, function(err, results) {\n return callback(new Blob(results));\n });\n};\n\n/*\n * Decodes data when a payload is maybe expected. Strings are decoded by\n * interpreting each byte as a key code for entries marked to start with 0. See\n * description of encodePayloadAsBinary\n *\n * @param {ArrayBuffer} data, callback method\n * @api public\n */\n\nexports.decodePayloadAsBinary = function (data, binaryType, callback) {\n if (typeof binaryType === 'function') {\n callback = binaryType;\n binaryType = null;\n }\n\n var bufferTail = data;\n var buffers = [];\n\n while (bufferTail.byteLength > 0) {\n var tailArray = new Uint8Array(bufferTail);\n var isString = tailArray[0] === 0;\n var msgLength = '';\n\n for (var i = 1; ; i++) {\n if (tailArray[i] === 255) break;\n\n // 310 = char length of Number.MAX_VALUE\n if (msgLength.length > 310) {\n return callback(err, 0, 1);\n }\n\n msgLength += tailArray[i];\n }\n\n bufferTail = sliceBuffer(bufferTail, 2 + msgLength.length);\n msgLength = parseInt(msgLength);\n\n var msg = sliceBuffer(bufferTail, 0, msgLength);\n if (isString) {\n try {\n msg = String.fromCharCode.apply(null, new Uint8Array(msg));\n } catch (e) {\n // iPhone Safari doesn't let you apply to typed arrays\n var typed = new Uint8Array(msg);\n msg = '';\n for (var i = 0; i < typed.length; i++) {\n msg += String.fromCharCode(typed[i]);\n }\n }\n }\n\n buffers.push(msg);\n bufferTail = sliceBuffer(bufferTail, msgLength);\n }\n\n var total = buffers.length;\n buffers.forEach(function(buffer, i) {\n callback(exports.decodePacket(buffer, binaryType, true), i, total);\n });\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/engine.io-parser/lib/browser.js\n// module id = 3\n// module chunks = 0","\"use strict\";\n\nvar utils = exports;\n\n/**\n * @returns {window}\n */\nutils.getWindow = function() {\n return window;\n};\n\n/**\n * @returns {HTMLDocument}\n */\nutils.getDocument = function() {\n return document;\n};\n\n/**\n * @returns {HTMLElement}\n */\nutils.getBody = function() {\n return document.getElementsByTagName(\"body\")[0];\n};\n\n/**\n * Get the current x/y position crossbow\n * @returns {{x: *, y: *}}\n */\nutils.getBrowserScrollPosition = function() {\n var $window = exports.getWindow();\n var $document = exports.getDocument();\n var scrollX;\n var scrollY;\n var dElement = $document.documentElement;\n var dBody = $document.body;\n\n if ($window.pageYOffset !== undefined) {\n scrollX = $window.pageXOffset;\n scrollY = $window.pageYOffset;\n } else {\n scrollX = dElement.scrollLeft || dBody.scrollLeft || 0;\n scrollY = dElement.scrollTop || dBody.scrollTop || 0;\n }\n\n return {\n x: scrollX,\n y: scrollY\n };\n};\n\n/**\n * @returns {{x: number, y: number}}\n */\nutils.getScrollSpace = function() {\n var $document = exports.getDocument();\n var dElement = $document.documentElement;\n var dBody = $document.body;\n return {\n x: dBody.scrollHeight - dElement.clientWidth,\n y: dBody.scrollHeight - dElement.clientHeight\n };\n};\n\n/**\n * Saves scroll position into cookies\n */\nutils.saveScrollPosition = function() {\n var pos = utils.getBrowserScrollPosition();\n pos = [pos.x, pos.y];\n utils.getDocument.cookie = \"bs_scroll_pos=\" + pos.join(\",\");\n};\n\n/**\n * Restores scroll position from cookies\n */\nutils.restoreScrollPosition = function() {\n var pos = utils\n .getDocument()\n .cookie.replace(\n /(?:(?:^|.*;\\s*)bs_scroll_pos\\s*\\=\\s*([^;]*).*$)|^.*$/,\n \"$1\"\n )\n .split(\",\");\n utils.getWindow().scrollTo(pos[0], pos[1]);\n};\n\n/**\n * @param tagName\n * @param elem\n * @returns {*|number}\n */\nutils.getElementIndex = function(tagName, elem) {\n var allElems = utils.getDocument().getElementsByTagName(tagName);\n return Array.prototype.indexOf.call(allElems, elem);\n};\n\n/**\n * Force Change event on radio & checkboxes (IE)\n */\nutils.forceChange = function(elem) {\n elem.blur();\n elem.focus();\n};\n\n/**\n * @param elem\n * @returns {{tagName: (elem.tagName|*), index: *}}\n */\nutils.getElementData = function(elem) {\n var tagName = elem.tagName;\n var index = utils.getElementIndex(tagName, elem);\n return {\n tagName: tagName,\n index: index\n };\n};\n\n/**\n * @param {string} tagName\n * @param {number} index\n */\nutils.getSingleElement = function(tagName, index) {\n var elems = utils.getDocument().getElementsByTagName(tagName);\n return elems[index];\n};\n\n/**\n * Get the body element\n */\nutils.getBody = function() {\n return utils.getDocument().getElementsByTagName(\"body\")[0];\n};\n\n/**\n * @param {{x: number, y: number}} pos\n */\nutils.setScroll = function(pos) {\n utils.getWindow().scrollTo(pos.x, pos.y);\n};\n\n/**\n * Hard reload\n */\nutils.reloadBrowser = function() {\n utils.getWindow().location.reload(true);\n};\n\n/**\n * Foreach polyfill\n * @param coll\n * @param fn\n */\nutils.forEach = function(coll, fn) {\n for (var i = 0, n = coll.length; i < n; i += 1) {\n fn(coll[i], i, coll);\n }\n};\n\n/**\n * Are we dealing with old IE?\n * @returns {boolean}\n */\nutils.isOldIe = function() {\n return typeof utils.getWindow().attachEvent !== \"undefined\";\n};\n\n/**\n * Split the URL information\n * @returns {object}\n */\nutils.getLocation = function(url) {\n var location = utils.getDocument().createElement(\"a\");\n location.href = url;\n\n if (location.host === \"\") {\n location.href = location.href;\n }\n\n return location;\n};\n\n\n\n// WEBPACK FOOTER //\n// ./lib/browser.utils.js","/**\r\n * Compiles a querystring\r\n * Returns string representation of the object\r\n *\r\n * @param {Object}\r\n * @api private\r\n */\r\n\r\nexports.encode = function (obj) {\r\n var str = '';\r\n\r\n for (var i in obj) {\r\n if (obj.hasOwnProperty(i)) {\r\n if (str.length) str += '&';\r\n str += encodeURIComponent(i) + '=' + encodeURIComponent(obj[i]);\r\n }\r\n }\r\n\r\n return str;\r\n};\r\n\r\n/**\r\n * Parses a simple querystring into an object\r\n *\r\n * @param {String} qs\r\n * @api private\r\n */\r\n\r\nexports.decode = function(qs){\r\n var qry = {};\r\n var pairs = qs.split('&');\r\n for (var i = 0, l = pairs.length; i < l; i++) {\r\n var pair = pairs[i].split('=');\r\n qry[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1]);\r\n }\r\n return qry;\r\n};\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/parseqs/index.js\n// module id = 5\n// module chunks = 0","\nmodule.exports = function(a, b){\n var fn = function(){};\n fn.prototype = b.prototype;\n a.prototype = new fn;\n a.prototype.constructor = a;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/component-inherit/index.js\n// module id = 6\n// module chunks = 0","\"use strict\";\n\nexports.events = {};\n\n/**\n * @param name\n * @param data\n */\nexports.emit = function(name, data) {\n var event = exports.events[name];\n var listeners;\n if (event && event.listeners) {\n listeners = event.listeners;\n for (var i = 0, n = listeners.length; i < n; i += 1) {\n listeners[i](data);\n }\n }\n};\n\n/**\n * @param name\n * @param func\n */\nexports.on = function(name, func) {\n var events = exports.events;\n if (!events[name]) {\n events[name] = {\n listeners: [func]\n };\n } else {\n events[name].listeners.push(func);\n }\n};\n\n\n\n// WEBPACK FOOTER //\n// ./lib/emitter.js","\n/**\n * Module dependencies.\n */\n\nvar debug = require('debug')('socket.io-parser');\nvar Emitter = require('component-emitter');\nvar hasBin = require('has-binary2');\nvar binary = require('./binary');\nvar isBuf = require('./is-buffer');\n\n/**\n * Protocol version.\n *\n * @api public\n */\n\nexports.protocol = 4;\n\n/**\n * Packet types.\n *\n * @api public\n */\n\nexports.types = [\n 'CONNECT',\n 'DISCONNECT',\n 'EVENT',\n 'ACK',\n 'ERROR',\n 'BINARY_EVENT',\n 'BINARY_ACK'\n];\n\n/**\n * Packet type `connect`.\n *\n * @api public\n */\n\nexports.CONNECT = 0;\n\n/**\n * Packet type `disconnect`.\n *\n * @api public\n */\n\nexports.DISCONNECT = 1;\n\n/**\n * Packet type `event`.\n *\n * @api public\n */\n\nexports.EVENT = 2;\n\n/**\n * Packet type `ack`.\n *\n * @api public\n */\n\nexports.ACK = 3;\n\n/**\n * Packet type `error`.\n *\n * @api public\n */\n\nexports.ERROR = 4;\n\n/**\n * Packet type 'binary event'\n *\n * @api public\n */\n\nexports.BINARY_EVENT = 5;\n\n/**\n * Packet type `binary ack`. For acks with binary arguments.\n *\n * @api public\n */\n\nexports.BINARY_ACK = 6;\n\n/**\n * Encoder constructor.\n *\n * @api public\n */\n\nexports.Encoder = Encoder;\n\n/**\n * Decoder constructor.\n *\n * @api public\n */\n\nexports.Decoder = Decoder;\n\n/**\n * A socket.io Encoder instance\n *\n * @api public\n */\n\nfunction Encoder() {}\n\n/**\n * Encode a packet as a single string if non-binary, or as a\n * buffer sequence, depending on packet type.\n *\n * @param {Object} obj - packet object\n * @param {Function} callback - function to handle encodings (likely engine.write)\n * @return Calls callback with Array of encodings\n * @api public\n */\n\nEncoder.prototype.encode = function(obj, callback){\n if ((obj.type === exports.EVENT || obj.type === exports.ACK) && hasBin(obj.data)) {\n obj.type = obj.type === exports.EVENT ? exports.BINARY_EVENT : exports.BINARY_ACK;\n }\n\n debug('encoding packet %j', obj);\n\n if (exports.BINARY_EVENT === obj.type || exports.BINARY_ACK === obj.type) {\n encodeAsBinary(obj, callback);\n }\n else {\n var encoding = encodeAsString(obj);\n callback([encoding]);\n }\n};\n\n/**\n * Encode packet as string.\n *\n * @param {Object} packet\n * @return {String} encoded\n * @api private\n */\n\nfunction encodeAsString(obj) {\n\n // first is type\n var str = '' + obj.type;\n\n // attachments if we have them\n if (exports.BINARY_EVENT === obj.type || exports.BINARY_ACK === obj.type) {\n str += obj.attachments + '-';\n }\n\n // if we have a namespace other than `/`\n // we append it followed by a comma `,`\n if (obj.nsp && '/' !== obj.nsp) {\n str += obj.nsp + ',';\n }\n\n // immediately followed by the id\n if (null != obj.id) {\n str += obj.id;\n }\n\n // json data\n if (null != obj.data) {\n str += JSON.stringify(obj.data);\n }\n\n debug('encoded %j as %s', obj, str);\n return str;\n}\n\n/**\n * Encode packet as 'buffer sequence' by removing blobs, and\n * deconstructing packet into object with placeholders and\n * a list of buffers.\n *\n * @param {Object} packet\n * @return {Buffer} encoded\n * @api private\n */\n\nfunction encodeAsBinary(obj, callback) {\n\n function writeEncoding(bloblessData) {\n var deconstruction = binary.deconstructPacket(bloblessData);\n var pack = encodeAsString(deconstruction.packet);\n var buffers = deconstruction.buffers;\n\n buffers.unshift(pack); // add packet info to beginning of data list\n callback(buffers); // write all the buffers\n }\n\n binary.removeBlobs(obj, writeEncoding);\n}\n\n/**\n * A socket.io Decoder instance\n *\n * @return {Object} decoder\n * @api public\n */\n\nfunction Decoder() {\n this.reconstructor = null;\n}\n\n/**\n * Mix in `Emitter` with Decoder.\n */\n\nEmitter(Decoder.prototype);\n\n/**\n * Decodes an ecoded packet string into packet JSON.\n *\n * @param {String} obj - encoded packet\n * @return {Object} packet\n * @api public\n */\n\nDecoder.prototype.add = function(obj) {\n var packet;\n if (typeof obj === 'string') {\n packet = decodeString(obj);\n if (exports.BINARY_EVENT === packet.type || exports.BINARY_ACK === packet.type) { // binary packet's json\n this.reconstructor = new BinaryReconstructor(packet);\n\n // no attachments, labeled binary but no binary data to follow\n if (this.reconstructor.reconPack.attachments === 0) {\n this.emit('decoded', packet);\n }\n } else { // non-binary full packet\n this.emit('decoded', packet);\n }\n }\n else if (isBuf(obj) || obj.base64) { // raw binary data\n if (!this.reconstructor) {\n throw new Error('got binary data when not reconstructing a packet');\n } else {\n packet = this.reconstructor.takeBinaryData(obj);\n if (packet) { // received final buffer\n this.reconstructor = null;\n this.emit('decoded', packet);\n }\n }\n }\n else {\n throw new Error('Unknown type: ' + obj);\n }\n};\n\n/**\n * Decode a packet String (JSON data)\n *\n * @param {String} str\n * @return {Object} packet\n * @api private\n */\n\nfunction decodeString(str) {\n var i = 0;\n // look up type\n var p = {\n type: Number(str.charAt(0))\n };\n\n if (null == exports.types[p.type]) return error();\n\n // look up attachments if type binary\n if (exports.BINARY_EVENT === p.type || exports.BINARY_ACK === p.type) {\n var buf = '';\n while (str.charAt(++i) !== '-') {\n buf += str.charAt(i);\n if (i == str.length) break;\n }\n if (buf != Number(buf) || str.charAt(i) !== '-') {\n throw new Error('Illegal attachments');\n }\n p.attachments = Number(buf);\n }\n\n // look up namespace (if any)\n if ('/' === str.charAt(i + 1)) {\n p.nsp = '';\n while (++i) {\n var c = str.charAt(i);\n if (',' === c) break;\n p.nsp += c;\n if (i === str.length) break;\n }\n } else {\n p.nsp = '/';\n }\n\n // look up id\n var next = str.charAt(i + 1);\n if ('' !== next && Number(next) == next) {\n p.id = '';\n while (++i) {\n var c = str.charAt(i);\n if (null == c || Number(c) != c) {\n --i;\n break;\n }\n p.id += str.charAt(i);\n if (i === str.length) break;\n }\n p.id = Number(p.id);\n }\n\n // look up json data\n if (str.charAt(++i)) {\n p = tryParse(p, str.substr(i));\n }\n\n debug('decoded %s as %j', str, p);\n return p;\n}\n\nfunction tryParse(p, str) {\n try {\n p.data = JSON.parse(str);\n } catch(e){\n return error();\n }\n return p; \n}\n\n/**\n * Deallocates a parser's resources\n *\n * @api public\n */\n\nDecoder.prototype.destroy = function() {\n if (this.reconstructor) {\n this.reconstructor.finishedReconstruction();\n }\n};\n\n/**\n * A manager of a binary event's 'buffer sequence'. Should\n * be constructed whenever a packet of type BINARY_EVENT is\n * decoded.\n *\n * @param {Object} packet\n * @return {BinaryReconstructor} initialized reconstructor\n * @api private\n */\n\nfunction BinaryReconstructor(packet) {\n this.reconPack = packet;\n this.buffers = [];\n}\n\n/**\n * Method to be called when binary data received from connection\n * after a BINARY_EVENT packet.\n *\n * @param {Buffer | ArrayBuffer} binData - the raw binary data received\n * @return {null | Object} returns null if more binary data is expected or\n * a reconstructed packet object if all buffers have been received.\n * @api private\n */\n\nBinaryReconstructor.prototype.takeBinaryData = function(binData) {\n this.buffers.push(binData);\n if (this.buffers.length === this.reconPack.attachments) { // done with buffer list\n var packet = binary.reconstructPacket(this.reconPack, this.buffers);\n this.finishedReconstruction();\n return packet;\n }\n return null;\n};\n\n/**\n * Cleans up binary packet reconstruction variables.\n *\n * @api private\n */\n\nBinaryReconstructor.prototype.finishedReconstruction = function() {\n this.reconPack = null;\n this.buffers = [];\n};\n\nfunction error() {\n return {\n type: exports.ERROR,\n data: 'parser error'\n };\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/socket.io-parser/index.js\n// module id = 8\n// module chunks = 0","// browser shim for xmlhttprequest module\n\nvar hasCORS = require('has-cors');\n\nmodule.exports = function (opts) {\n var xdomain = opts.xdomain;\n\n // scheme must be same when usign XDomainRequest\n // http://blogs.msdn.com/b/ieinternals/archive/2010/05/13/xdomainrequest-restrictions-limitations-and-workarounds.aspx\n var xscheme = opts.xscheme;\n\n // XDomainRequest has a flow of not sending cookie, therefore it should be disabled as a default.\n // https://github.com/Automattic/engine.io-client/pull/217\n var enablesXDR = opts.enablesXDR;\n\n // XMLHttpRequest can be disabled on IE\n try {\n if ('undefined' !== typeof XMLHttpRequest && (!xdomain || hasCORS)) {\n return new XMLHttpRequest();\n }\n } catch (e) { }\n\n // Use XDomainRequest for IE8 if enablesXDR is true\n // because loading bar keeps flashing when using jsonp-polling\n // https://github.com/yujiosaka/socke.io-ie8-loading-example\n try {\n if ('undefined' !== typeof XDomainRequest && !xscheme && enablesXDR) {\n return new XDomainRequest();\n }\n } catch (e) { }\n\n if (!xdomain) {\n try {\n return new global[['Active'].concat('Object').join('X')]('Microsoft.XMLHTTP');\n } catch (e) { }\n }\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/engine.io-client/lib/xmlhttprequest.js\n// module id = 9\n// module chunks = 0","/**\n * Module dependencies.\n */\n\nvar parser = require('engine.io-parser');\nvar Emitter = require('component-emitter');\n\n/**\n * Module exports.\n */\n\nmodule.exports = Transport;\n\n/**\n * Transport abstract constructor.\n *\n * @param {Object} options.\n * @api private\n */\n\nfunction Transport (opts) {\n this.path = opts.path;\n this.hostname = opts.hostname;\n this.port = opts.port;\n this.secure = opts.secure;\n this.query = opts.query;\n this.timestampParam = opts.timestampParam;\n this.timestampRequests = opts.timestampRequests;\n this.readyState = '';\n this.agent = opts.agent || false;\n this.socket = opts.socket;\n this.enablesXDR = opts.enablesXDR;\n\n // SSL options for Node.js client\n this.pfx = opts.pfx;\n this.key = opts.key;\n this.passphrase = opts.passphrase;\n this.cert = opts.cert;\n this.ca = opts.ca;\n this.ciphers = opts.ciphers;\n this.rejectUnauthorized = opts.rejectUnauthorized;\n this.forceNode = opts.forceNode;\n\n // other options for Node.js client\n this.extraHeaders = opts.extraHeaders;\n this.localAddress = opts.localAddress;\n}\n\n/**\n * Mix in `Emitter`.\n */\n\nEmitter(Transport.prototype);\n\n/**\n * Emits an error.\n *\n * @param {String} str\n * @return {Transport} for chaining\n * @api public\n */\n\nTransport.prototype.onError = function (msg, desc) {\n var err = new Error(msg);\n err.type = 'TransportError';\n err.description = desc;\n this.emit('error', err);\n return this;\n};\n\n/**\n * Opens the transport.\n *\n * @api public\n */\n\nTransport.prototype.open = function () {\n if ('closed' === this.readyState || '' === this.readyState) {\n this.readyState = 'opening';\n this.doOpen();\n }\n\n return this;\n};\n\n/**\n * Closes the transport.\n *\n * @api private\n */\n\nTransport.prototype.close = function () {\n if ('opening' === this.readyState || 'open' === this.readyState) {\n this.doClose();\n this.onClose();\n }\n\n return this;\n};\n\n/**\n * Sends multiple packets.\n *\n * @param {Array} packets\n * @api private\n */\n\nTransport.prototype.send = function (packets) {\n if ('open' === this.readyState) {\n this.write(packets);\n } else {\n throw new Error('Transport not open');\n }\n};\n\n/**\n * Called upon open\n *\n * @api private\n */\n\nTransport.prototype.onOpen = function () {\n this.readyState = 'open';\n this.writable = true;\n this.emit('open');\n};\n\n/**\n * Called with data.\n *\n * @param {String} data\n * @api private\n */\n\nTransport.prototype.onData = function (data) {\n var packet = parser.decodePacket(data, this.socket.binaryType);\n this.onPacket(packet);\n};\n\n/**\n * Called with a decoded packet.\n */\n\nTransport.prototype.onPacket = function (packet) {\n this.emit('packet', packet);\n};\n\n/**\n * Called upon close.\n *\n * @api private\n */\n\nTransport.prototype.onClose = function () {\n this.readyState = 'closed';\n this.emit('close');\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/engine.io-client/lib/transport.js\n// module id = 10\n// module chunks = 0","\"use strict\";\n\n/**\n * This is the plugin for syncing scroll between devices\n * @type {string}\n */\nvar WINDOW_EVENT_NAME = \"scroll\";\nvar ELEMENT_EVENT_NAME = \"scroll:element\";\nvar OPT_PATH = \"ghostMode.scroll\";\nvar utils;\n\nexports.canEmitEvents = true;\n\n/**\n * @param {BrowserSync} bs\n * @param eventManager\n */\nexports.init = function(bs, eventManager) {\n utils = bs.utils;\n var opts = bs.options;\n\n /**\n * Window Scroll events\n */\n eventManager.addEvent(window, WINDOW_EVENT_NAME, exports.browserEvent(bs));\n bs.socket.on(WINDOW_EVENT_NAME, exports.socketEvent(bs));\n\n /**\n * element Scroll Events\n */\n var cache = {};\n addElementScrollEvents(\"scrollElements\", false);\n addElementScrollEvents(\"scrollElementMapping\", true);\n bs.socket.on(ELEMENT_EVENT_NAME, exports.socketEventForElement(bs, cache));\n\n function addElementScrollEvents(key, map) {\n if (\n !opts[key] ||\n !opts[key].length ||\n !(\"querySelectorAll\" in document)\n ) {\n return;\n }\n utils.forEach(opts[key], function(selector) {\n var elems = document.querySelectorAll(selector) || [];\n utils.forEach(elems, function(elem) {\n var data = utils.getElementData(elem);\n data.cacheSelector = data.tagName + \":\" + data.index;\n data.map = map;\n cache[data.cacheSelector] = elem;\n eventManager.addEvent(\n elem,\n WINDOW_EVENT_NAME,\n exports.browserEventForElement(bs, elem, data)\n );\n });\n });\n }\n};\n\n/**\n * @param {BrowserSync} bs\n */\nexports.socketEvent = function(bs) {\n return function(data) {\n if (!bs.canSync(data, OPT_PATH)) {\n return false;\n }\n\n var scrollSpace = utils.getScrollSpace();\n\n exports.canEmitEvents = false;\n\n if (bs.options && bs.options.scrollProportionally) {\n return window.scrollTo(\n 0,\n scrollSpace.y * data.position.proportional\n ); // % of y axis of scroll to px\n } else {\n return window.scrollTo(0, data.position.raw.y);\n }\n };\n};\n\n/**\n * @param bs\n */\nexports.socketEventForElement = function(bs, cache) {\n return function(data) {\n if (!bs.canSync(data, OPT_PATH)) {\n return false;\n }\n\n exports.canEmitEvents = false;\n\n function scrollOne(selector, pos) {\n if (cache[selector]) {\n cache[selector].scrollTop = pos;\n }\n }\n\n if (data.map) {\n return Object.keys(cache).forEach(function(key) {\n scrollOne(key, data.position);\n });\n }\n\n scrollOne(data.elem.cacheSelector, data.position);\n };\n};\n\n/**\n * @param bs\n */\nexports.browserEventForElement = function(bs, elem, data) {\n return function() {\n var canSync = exports.canEmitEvents;\n if (canSync) {\n bs.socket.emit(ELEMENT_EVENT_NAME, {\n position: elem.scrollTop,\n elem: data,\n map: data.map\n });\n }\n exports.canEmitEvents = true;\n };\n};\n\nexports.browserEvent = function(bs) {\n return function() {\n var canSync = exports.canEmitEvents;\n\n if (canSync) {\n bs.socket.emit(WINDOW_EVENT_NAME, {\n position: exports.getScrollPosition()\n });\n }\n\n exports.canEmitEvents = true;\n };\n};\n\n/**\n * @returns {{raw: number, proportional: number}}\n */\nexports.getScrollPosition = function() {\n var pos = utils.getBrowserScrollPosition();\n return {\n raw: pos, // Get px of x and y axis of scroll\n proportional: exports.getScrollTopPercentage(pos) // Get % of y axis of scroll\n };\n};\n\n/**\n * @param {{x: number, y: number}} scrollSpace\n * @param scrollPosition\n * @returns {{x: number, y: number}}\n */\nexports.getScrollPercentage = function(scrollSpace, scrollPosition) {\n var x = scrollPosition.x / scrollSpace.x;\n var y = scrollPosition.y / scrollSpace.y;\n\n return {\n x: x || 0,\n y: y\n };\n};\n\n/**\n * Get just the percentage of Y axis of scroll\n * @returns {number}\n */\nexports.getScrollTopPercentage = function(pos) {\n var scrollSpace = utils.getScrollSpace();\n var percentage = exports.getScrollPercentage(scrollSpace, pos);\n return percentage.y;\n};\n\n\n\n// WEBPACK FOOTER //\n// ./lib/ghostmode.scroll.js","exports._ElementCache = function() {\n var cache = {},\n guidCounter = 1,\n expando = \"data\" + new Date().getTime();\n\n this.getData = function(elem) {\n var guid = elem[expando];\n if (!guid) {\n guid = elem[expando] = guidCounter++;\n cache[guid] = {};\n }\n return cache[guid];\n };\n\n this.removeData = function(elem) {\n var guid = elem[expando];\n if (!guid) return;\n delete cache[guid];\n try {\n delete elem[expando];\n } catch (e) {\n if (elem.removeAttribute) {\n elem.removeAttribute(expando);\n }\n }\n };\n};\n\n/**\n * Fix an event\n * @param event\n * @returns {*}\n */\nexports._fixEvent = function(event) {\n function returnTrue() {\n return true;\n }\n\n function returnFalse() {\n return false;\n }\n\n if (!event || !event.stopPropagation) {\n var old = event || window.event;\n\n // Clone the old object so that we can modify the values\n event = {};\n\n for (var prop in old) {\n event[prop] = old[prop];\n }\n\n // The event occurred on this element\n if (!event.target) {\n event.target = event.srcElement || document;\n }\n\n // Handle which other element the event is related to\n event.relatedTarget =\n event.fromElement === event.target\n ? event.toElement\n : event.fromElement;\n\n // Stop the default browser action\n event.preventDefault = function() {\n event.returnValue = false;\n event.isDefaultPrevented = returnTrue;\n };\n\n event.isDefaultPrevented = returnFalse;\n\n // Stop the event from bubbling\n event.stopPropagation = function() {\n event.cancelBubble = true;\n event.isPropagationStopped = returnTrue;\n };\n\n event.isPropagationStopped = returnFalse;\n\n // Stop the event from bubbling and executing other handlers\n event.stopImmediatePropagation = function() {\n this.isImmediatePropagationStopped = returnTrue;\n this.stopPropagation();\n };\n\n event.isImmediatePropagationStopped = returnFalse;\n\n // Handle mouse position\n if (event.clientX != null) {\n var doc = document.documentElement,\n body = document.body;\n\n event.pageX =\n event.clientX +\n ((doc && doc.scrollLeft) || (body && body.scrollLeft) || 0) -\n ((doc && doc.clientLeft) || (body && body.clientLeft) || 0);\n event.pageY =\n event.clientY +\n ((doc && doc.scrollTop) || (body && body.scrollTop) || 0) -\n ((doc && doc.clientTop) || (body && body.clientTop) || 0);\n }\n\n // Handle key presses\n event.which = event.charCode || event.keyCode;\n\n // Fix button for mouse clicks:\n // 0 == left; 1 == middle; 2 == right\n if (event.button != null) {\n event.button =\n event.button & 1\n ? 0\n : event.button & 4 ? 1 : event.button & 2 ? 2 : 0;\n }\n }\n\n return event;\n};\n\n/**\n * @constructor\n */\nexports._EventManager = function(cache) {\n var nextGuid = 1;\n\n this.addEvent = function(elem, type, fn) {\n var data = cache.getData(elem);\n\n if (!data.handlers) data.handlers = {};\n\n if (!data.handlers[type]) data.handlers[type] = [];\n\n if (!fn.guid) fn.guid = nextGuid++;\n\n data.handlers[type].push(fn);\n\n if (!data.dispatcher) {\n data.disabled = false;\n data.dispatcher = function(event) {\n if (data.disabled) return;\n event = exports._fixEvent(event);\n\n var handlers = data.handlers[event.type];\n if (handlers) {\n for (var n = 0; n < handlers.length; n++) {\n handlers[n].call(elem, event);\n }\n }\n };\n }\n\n if (data.handlers[type].length == 1) {\n if (document.addEventListener) {\n elem.addEventListener(type, data.dispatcher, false);\n } else if (document.attachEvent) {\n elem.attachEvent(\"on\" + type, data.dispatcher);\n }\n }\n };\n\n function tidyUp(elem, type) {\n function isEmpty(object) {\n for (var prop in object) {\n return false;\n }\n return true;\n }\n\n var data = cache.getData(elem);\n\n if (data.handlers[type].length === 0) {\n delete data.handlers[type];\n\n if (document.removeEventListener) {\n elem.removeEventListener(type, data.dispatcher, false);\n } else if (document.detachEvent) {\n elem.detachEvent(\"on\" + type, data.dispatcher);\n }\n }\n\n if (isEmpty(data.handlers)) {\n delete data.handlers;\n delete data.dispatcher;\n }\n\n if (isEmpty(data)) {\n cache.removeData(elem);\n }\n }\n\n this.removeEvent = function(elem, type, fn) {\n var data = cache.getData(elem);\n\n if (!data.handlers) return;\n\n var removeType = function(t) {\n data.handlers[t] = [];\n tidyUp(elem, t);\n };\n\n if (!type) {\n for (var t in data.handlers) removeType(t);\n return;\n }\n\n var handlers = data.handlers[type];\n if (!handlers) return;\n\n if (!fn) {\n removeType(type);\n return;\n }\n\n if (fn.guid) {\n for (var n = 0; n < handlers.length; n++) {\n if (handlers[n].guid === fn.guid) {\n handlers.splice(n--, 1);\n }\n }\n }\n tidyUp(elem, type);\n };\n\n this.proxy = function(context, fn) {\n if (!fn.guid) {\n fn.guid = nextGuid++;\n }\n var ret = function() {\n return fn.apply(context, arguments);\n };\n ret.guid = fn.guid;\n return ret;\n };\n};\n\n/**\n * Trigger a click on an element\n * @param elem\n */\nexports.triggerClick = function(elem) {\n var evObj;\n\n if (document.createEvent) {\n window.setTimeout(function() {\n evObj = document.createEvent(\"MouseEvents\");\n evObj.initEvent(\"click\", true, true);\n elem.dispatchEvent(evObj);\n }, 0);\n } else {\n window.setTimeout(function() {\n if (document.createEventObject) {\n evObj = document.createEventObject();\n evObj.cancelBubble = true;\n elem.fireEvent(\"on\" + \"click\", evObj);\n }\n }, 0);\n }\n};\n\nvar cache = new exports._ElementCache();\nvar eventManager = new exports._EventManager(cache);\n\neventManager.triggerClick = exports.triggerClick;\n\nexports.manager = eventManager;\n\n\n\n// WEBPACK FOOTER //\n// ./lib/events.js","var socket = require(\"socket.io-client\");\n\n/**\n * @type {{emit: emit, on: on}}\n */\nvar socketConfig = window.___browserSync___.socketConfig;\nvar socketUrl = window.___browserSync___.socketUrl;\nvar io = socket(socketUrl, socketConfig);\n\n/**\n * *****BACK-COMPAT*******\n * Scripts that come after Browsersync may rely on the previous window.___browserSync___.socket\n */\nwindow.___browserSync___.socket = io;\n\n/**\n * @returns {string}\n */\nexports.getPath = function() {\n return window.location.pathname;\n};\n/**\n * Alias for socket.emit\n * @param name\n * @param data\n */\nexports.emit = function(name, data) {\n if (io && io.emit) {\n // send relative path of where the event is sent\n data.url = exports.getPath();\n io.emit(name, data);\n }\n};\n\n/**\n * Alias for socket.on\n * @param name\n * @param func\n */\nexports.on = function(name, func) {\n io.on(name, func);\n};\n\n\n\n// WEBPACK FOOTER //\n// ./lib/socket.js","/**\r\n * Parses an URI\r\n *\r\n * @author Steven Levithan <stevenlevithan.com> (MIT license)\r\n * @api private\r\n */\r\n\r\nvar re = /^(?:(?![^:@]+:[^:@\\/]*@)(http|https|ws|wss):\\/\\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\\/?#]*)(?::(\\d*))?)(((\\/(?:[^?#](?![^?#\\/]*\\.[^?#\\/.]+(?:[?#]|$)))*\\/?)?([^?#\\/]*))(?:\\?([^#]*))?(?:#(.*))?)/;\r\n\r\nvar parts = [\r\n 'source', 'protocol', 'authority', 'userInfo', 'user', 'password', 'host', 'port', 'relative', 'path', 'directory', 'file', 'query', 'anchor'\r\n];\r\n\r\nmodule.exports = function parseuri(str) {\r\n var src = str,\r\n b = str.indexOf('['),\r\n e = str.indexOf(']');\r\n\r\n if (b != -1 && e != -1) {\r\n str = str.substring(0, b) + str.substring(b, e).replace(/:/g, ';') + str.substring(e, str.length);\r\n }\r\n\r\n var m = re.exec(str || ''),\r\n uri = {},\r\n i = 14;\r\n\r\n while (i--) {\r\n uri[parts[i]] = m[i] || '';\r\n }\r\n\r\n if (b != -1 && e != -1) {\r\n uri.source = src;\r\n uri.host = uri.host.substring(1, uri.host.length - 1).replace(/;/g, ':');\r\n uri.authority = uri.authority.replace('[', '').replace(']', '').replace(/;/g, ':');\r\n uri.ipv6uri = true;\r\n }\r\n\r\n return uri;\r\n};\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/parseuri/index.js\n// module id = 14\n// module chunks = 0","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/process/browser.js\n// module id = 15\n// module chunks = 0","/* global Blob File */\n\n/*\n * Module requirements.\n */\n\nvar isArray = require('isarray');\n\nvar toString = Object.prototype.toString;\nvar withNativeBlob = typeof global.Blob === 'function' || toString.call(global.Blob) === '[object BlobConstructor]';\nvar withNativeFile = typeof global.File === 'function' || toString.call(global.File) === '[object FileConstructor]';\n\n/**\n * Module exports.\n */\n\nmodule.exports = hasBinary;\n\n/**\n * Checks for binary data.\n *\n * Supports Buffer, ArrayBuffer, Blob and File.\n *\n * @param {Object} anything\n * @api public\n */\n\nfunction hasBinary (obj) {\n if (!obj || typeof obj !== 'object') {\n return false;\n }\n\n if (isArray(obj)) {\n for (var i = 0, l = obj.length; i < l; i++) {\n if (hasBinary(obj[i])) {\n return true;\n }\n }\n return false;\n }\n\n if ((typeof global.Buffer === 'function' && global.Buffer.isBuffer && global.Buffer.isBuffer(obj)) ||\n (typeof global.ArrayBuffer === 'function' && obj instanceof ArrayBuffer) ||\n (withNativeBlob && obj instanceof Blob) ||\n (withNativeFile && obj instanceof File)\n ) {\n return true;\n }\n\n // see: https://github.com/Automattic/has-binary/pull/4\n if (obj.toJSON && typeof obj.toJSON === 'function' && arguments.length === 1) {\n return hasBinary(obj.toJSON(), true);\n }\n\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key) && hasBinary(obj[key])) {\n return true;\n }\n }\n\n return false;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/has-binary2/index.js\n// module id = 16\n// module chunks = 0","\nmodule.exports = isBuf;\n\n/**\n * Returns true if obj is a buffer or an arraybuffer.\n *\n * @api private\n */\n\nfunction isBuf(obj) {\n return (global.Buffer && global.Buffer.isBuffer(obj)) ||\n (global.ArrayBuffer && obj instanceof ArrayBuffer);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/socket.io-parser/is-buffer.js\n// module id = 17\n// module chunks = 0","\n/**\n * Module dependencies.\n */\n\nvar eio = require('engine.io-client');\nvar Socket = require('./socket');\nvar Emitter = require('component-emitter');\nvar parser = require('socket.io-parser');\nvar on = require('./on');\nvar bind = require('component-bind');\nvar debug = require('debug')('socket.io-client:manager');\nvar indexOf = require('indexof');\nvar Backoff = require('backo2');\n\n/**\n * IE6+ hasOwnProperty\n */\n\nvar has = Object.prototype.hasOwnProperty;\n\n/**\n * Module exports\n */\n\nmodule.exports = Manager;\n\n/**\n * `Manager` constructor.\n *\n * @param {String} engine instance or engine uri/opts\n * @param {Object} options\n * @api public\n */\n\nfunction Manager (uri, opts) {\n if (!(this instanceof Manager)) return new Manager(uri, opts);\n if (uri && ('object' === typeof uri)) {\n opts = uri;\n uri = undefined;\n }\n opts = opts || {};\n\n opts.path = opts.path || '/socket.io';\n this.nsps = {};\n this.subs = [];\n this.opts = opts;\n this.reconnection(opts.reconnection !== false);\n this.reconnectionAttempts(opts.reconnectionAttempts || Infinity);\n this.reconnectionDelay(opts.reconnectionDelay || 1000);\n this.reconnectionDelayMax(opts.reconnectionDelayMax || 5000);\n this.randomizationFactor(opts.randomizationFactor || 0.5);\n this.backoff = new Backoff({\n min: this.reconnectionDelay(),\n max: this.reconnectionDelayMax(),\n jitter: this.randomizationFactor()\n });\n this.timeout(null == opts.timeout ? 20000 : opts.timeout);\n this.readyState = 'closed';\n this.uri = uri;\n this.connecting = [];\n this.lastPing = null;\n this.encoding = false;\n this.packetBuffer = [];\n var _parser = opts.parser || parser;\n this.encoder = new _parser.Encoder();\n this.decoder = new _parser.Decoder();\n this.autoConnect = opts.autoConnect !== false;\n if (this.autoConnect) this.open();\n}\n\n/**\n * Propagate given event to sockets and emit on `this`\n *\n * @api private\n */\n\nManager.prototype.emitAll = function () {\n this.emit.apply(this, arguments);\n for (var nsp in this.nsps) {\n if (has.call(this.nsps, nsp)) {\n this.nsps[nsp].emit.apply(this.nsps[nsp], arguments);\n }\n }\n};\n\n/**\n * Update `socket.id` of all sockets\n *\n * @api private\n */\n\nManager.prototype.updateSocketIds = function () {\n for (var nsp in this.nsps) {\n if (has.call(this.nsps, nsp)) {\n this.nsps[nsp].id = this.generateId(nsp);\n }\n }\n};\n\n/**\n * generate `socket.id` for the given `nsp`\n *\n * @param {String} nsp\n * @return {String}\n * @api private\n */\n\nManager.prototype.generateId = function (nsp) {\n return (nsp === '/' ? '' : (nsp + '#')) + this.engine.id;\n};\n\n/**\n * Mix in `Emitter`.\n */\n\nEmitter(Manager.prototype);\n\n/**\n * Sets the `reconnection` config.\n *\n * @param {Boolean} true/false if it should automatically reconnect\n * @return {Manager} self or value\n * @api public\n */\n\nManager.prototype.reconnection = function (v) {\n if (!arguments.length) return this._reconnection;\n this._reconnection = !!v;\n return this;\n};\n\n/**\n * Sets the reconnection attempts config.\n *\n * @param {Number} max reconnection attempts before giving up\n * @return {Manager} self or value\n * @api public\n */\n\nManager.prototype.reconnectionAttempts = function (v) {\n if (!arguments.length) return this._reconnectionAttempts;\n this._reconnectionAttempts = v;\n return this;\n};\n\n/**\n * Sets the delay between reconnections.\n *\n * @param {Number} delay\n * @return {Manager} self or value\n * @api public\n */\n\nManager.prototype.reconnectionDelay = function (v) {\n if (!arguments.length) return this._reconnectionDelay;\n this._reconnectionDelay = v;\n this.backoff && this.backoff.setMin(v);\n return this;\n};\n\nManager.prototype.randomizationFactor = function (v) {\n if (!arguments.length) return this._randomizationFactor;\n this._randomizationFactor = v;\n this.backoff && this.backoff.setJitter(v);\n return this;\n};\n\n/**\n * Sets the maximum delay between reconnections.\n *\n * @param {Number} delay\n * @return {Manager} self or value\n * @api public\n */\n\nManager.prototype.reconnectionDelayMax = function (v) {\n if (!arguments.length) return this._reconnectionDelayMax;\n this._reconnectionDelayMax = v;\n this.backoff && this.backoff.setMax(v);\n return this;\n};\n\n/**\n * Sets the connection timeout. `false` to disable\n *\n * @return {Manager} self or value\n * @api public\n */\n\nManager.prototype.timeout = function (v) {\n if (!arguments.length) return this._timeout;\n this._timeout = v;\n return this;\n};\n\n/**\n * Starts trying to reconnect if reconnection is enabled and we have not\n * started reconnecting yet\n *\n * @api private\n */\n\nManager.prototype.maybeReconnectOnOpen = function () {\n // Only try to reconnect if it's the first time we're connecting\n if (!this.reconnecting && this._reconnection && this.backoff.attempts === 0) {\n // keeps reconnection from firing twice for the same reconnection loop\n this.reconnect();\n }\n};\n\n/**\n * Sets the current transport `socket`.\n *\n * @param {Function} optional, callback\n * @return {Manager} self\n * @api public\n */\n\nManager.prototype.open =\nManager.prototype.connect = function (fn, opts) {\n debug('readyState %s', this.readyState);\n if (~this.readyState.indexOf('open')) return this;\n\n debug('opening %s', this.uri);\n this.engine = eio(this.uri, this.opts);\n var socket = this.engine;\n var self = this;\n this.readyState = 'opening';\n this.skipReconnect = false;\n\n // emit `open`\n var openSub = on(socket, 'open', function () {\n self.onopen();\n fn && fn();\n });\n\n // emit `connect_error`\n var errorSub = on(socket, 'error', function (data) {\n debug('connect_error');\n self.cleanup();\n self.readyState = 'closed';\n self.emitAll('connect_error', data);\n if (fn) {\n var err = new Error('Connection error');\n err.data = data;\n fn(err);\n } else {\n // Only do this if there is no fn to handle the error\n self.maybeReconnectOnOpen();\n }\n });\n\n // emit `connect_timeout`\n if (false !== this._timeout) {\n var timeout = this._timeout;\n debug('connect attempt will timeout after %d', timeout);\n\n // set timer\n var timer = setTimeout(function () {\n debug('connect attempt timed out after %d', timeout);\n openSub.destroy();\n socket.close();\n socket.emit('error', 'timeout');\n self.emitAll('connect_timeout', timeout);\n }, timeout);\n\n this.subs.push({\n destroy: function () {\n clearTimeout(timer);\n }\n });\n }\n\n this.subs.push(openSub);\n this.subs.push(errorSub);\n\n return this;\n};\n\n/**\n * Called upon transport open.\n *\n * @api private\n */\n\nManager.prototype.onopen = function () {\n debug('open');\n\n // clear old subs\n this.cleanup();\n\n // mark as open\n this.readyState = 'open';\n this.emit('open');\n\n // add new subs\n var socket = this.engine;\n this.subs.push(on(socket, 'data', bind(this, 'ondata')));\n this.subs.push(on(socket, 'ping', bind(this, 'onping')));\n this.subs.push(on(socket, 'pong', bind(this, 'onpong')));\n this.subs.push(on(socket, 'error', bind(this, 'onerror')));\n this.subs.push(on(socket, 'close', bind(this, 'onclose')));\n this.subs.push(on(this.decoder, 'decoded', bind(this, 'ondecoded')));\n};\n\n/**\n * Called upon a ping.\n *\n * @api private\n */\n\nManager.prototype.onping = function () {\n this.lastPing = new Date();\n this.emitAll('ping');\n};\n\n/**\n * Called upon a packet.\n *\n * @api private\n */\n\nManager.prototype.onpong = function () {\n this.emitAll('pong', new Date() - this.lastPing);\n};\n\n/**\n * Called with data.\n *\n * @api private\n */\n\nManager.prototype.ondata = function (data) {\n this.decoder.add(data);\n};\n\n/**\n * Called when parser fully decodes a packet.\n *\n * @api private\n */\n\nManager.prototype.ondecoded = function (packet) {\n this.emit('packet', packet);\n};\n\n/**\n * Called upon socket error.\n *\n * @api private\n */\n\nManager.prototype.onerror = function (err) {\n debug('error', err);\n this.emitAll('error', err);\n};\n\n/**\n * Creates a new socket for the given `nsp`.\n *\n * @return {Socket}\n * @api public\n */\n\nManager.prototype.socket = function (nsp, opts) {\n var socket = this.nsps[nsp];\n if (!socket) {\n socket = new Socket(this, nsp, opts);\n this.nsps[nsp] = socket;\n var self = this;\n socket.on('connecting', onConnecting);\n socket.on('connect', function () {\n socket.id = self.generateId(nsp);\n });\n\n if (this.autoConnect) {\n // manually call here since connecting event is fired before listening\n onConnecting();\n }\n }\n\n function onConnecting () {\n if (!~indexOf(self.connecting, socket)) {\n self.connecting.push(socket);\n }\n }\n\n return socket;\n};\n\n/**\n * Called upon a socket close.\n *\n * @param {Socket} socket\n */\n\nManager.prototype.destroy = function (socket) {\n var index = indexOf(this.connecting, socket);\n if (~index) this.connecting.splice(index, 1);\n if (this.connecting.length) return;\n\n this.close();\n};\n\n/**\n * Writes a packet.\n *\n * @param {Object} packet\n * @api private\n */\n\nManager.prototype.packet = function (packet) {\n debug('writing packet %j', packet);\n var self = this;\n if (packet.query && packet.type === 0) packet.nsp += '?' + packet.query;\n\n if (!self.encoding) {\n // encode, then write to engine with result\n self.encoding = true;\n this.encoder.encode(packet, function (encodedPackets) {\n for (var i = 0; i < encodedPackets.length; i++) {\n self.engine.write(encodedPackets[i], packet.options);\n }\n self.encoding = false;\n self.processPacketQueue();\n });\n } else { // add packet to the queue\n self.packetBuffer.push(packet);\n }\n};\n\n/**\n * If packet buffer is non-empty, begins encoding the\n * next packet in line.\n *\n * @api private\n */\n\nManager.prototype.processPacketQueue = function () {\n if (this.packetBuffer.length > 0 && !this.encoding) {\n var pack = this.packetBuffer.shift();\n this.packet(pack);\n }\n};\n\n/**\n * Clean up transport subscriptions and packet buffer.\n *\n * @api private\n */\n\nManager.prototype.cleanup = function () {\n debug('cleanup');\n\n var subsLength = this.subs.length;\n for (var i = 0; i < subsLength; i++) {\n var sub = this.subs.shift();\n sub.destroy();\n }\n\n this.packetBuffer = [];\n this.encoding = false;\n this.lastPing = null;\n\n this.decoder.destroy();\n};\n\n/**\n * Close the current socket.\n *\n * @api private\n */\n\nManager.prototype.close =\nManager.prototype.disconnect = function () {\n debug('disconnect');\n this.skipReconnect = true;\n this.reconnecting = false;\n if ('opening' === this.readyState) {\n // `onclose` will not fire because\n // an open event never happened\n this.cleanup();\n }\n this.backoff.reset();\n this.readyState = 'closed';\n if (this.engine) this.engine.close();\n};\n\n/**\n * Called upon engine close.\n *\n * @api private\n */\n\nManager.prototype.onclose = function (reason) {\n debug('onclose');\n\n this.cleanup();\n this.backoff.reset();\n this.readyState = 'closed';\n this.emit('close', reason);\n\n if (this._reconnection && !this.skipReconnect) {\n this.reconnect();\n }\n};\n\n/**\n * Attempt a reconnection.\n *\n * @api private\n */\n\nManager.prototype.reconnect = function () {\n if (this.reconnecting || this.skipReconnect) return this;\n\n var self = this;\n\n if (this.backoff.attempts >= this._reconnectionAttempts) {\n debug('reconnect failed');\n this.backoff.reset();\n this.emitAll('reconnect_failed');\n this.reconnecting = false;\n } else {\n var delay = this.backoff.duration();\n debug('will wait %dms before reconnect attempt', delay);\n\n this.reconnecting = true;\n var timer = setTimeout(function () {\n if (self.skipReconnect) return;\n\n debug('attempting reconnect');\n self.emitAll('reconnect_attempt', self.backoff.attempts);\n self.emitAll('reconnecting', self.backoff.attempts);\n\n // check again for the case socket closed in above events\n if (self.skipReconnect) return;\n\n self.open(function (err) {\n if (err) {\n debug('reconnect attempt error');\n self.reconnecting = false;\n self.reconnect();\n self.emitAll('reconnect_error', err.data);\n } else {\n debug('reconnect success');\n self.onreconnect();\n }\n });\n }, delay);\n\n this.subs.push({\n destroy: function () {\n clearTimeout(timer);\n }\n });\n }\n};\n\n/**\n * Called upon successful reconnect.\n *\n * @api private\n */\n\nManager.prototype.onreconnect = function () {\n var attempt = this.backoff.attempts;\n this.reconnecting = false;\n this.backoff.reset();\n this.updateSocketIds();\n this.emitAll('reconnect', attempt);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/socket.io-client/lib/manager.js\n// module id = 18\n// module chunks = 0","/**\n * Module dependencies\n */\n\nvar XMLHttpRequest = require('xmlhttprequest-ssl');\nvar XHR = require('./polling-xhr');\nvar JSONP = require('./polling-jsonp');\nvar websocket = require('./websocket');\n\n/**\n * Export transports.\n */\n\nexports.polling = polling;\nexports.websocket = websocket;\n\n/**\n * Polling transport polymorphic constructor.\n * Decides on xhr vs jsonp based on feature detection.\n *\n * @api private\n */\n\nfunction polling (opts) {\n var xhr;\n var xd = false;\n var xs = false;\n var jsonp = false !== opts.jsonp;\n\n if (global.location) {\n var isSSL = 'https:' === location.protocol;\n var port = location.port;\n\n // some user agents have empty `location.port`\n if (!port) {\n port = isSSL ? 443 : 80;\n }\n\n xd = opts.hostname !== location.hostname || port !== opts.port;\n xs = opts.secure !== isSSL;\n }\n\n opts.xdomain = xd;\n opts.xscheme = xs;\n xhr = new XMLHttpRequest(opts);\n\n if ('open' in xhr && !opts.forceJSONP) {\n return new XHR(opts);\n } else {\n if (!jsonp) throw new Error('JSONP disabled');\n return new JSONP(opts);\n }\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/engine.io-client/lib/transports/index.js\n// module id = 19\n// module chunks = 0","/**\n * Module dependencies.\n */\n\nvar Transport = require('../transport');\nvar parseqs = require('parseqs');\nvar parser = require('engine.io-parser');\nvar inherit = require('component-inherit');\nvar yeast = require('yeast');\nvar debug = require('debug')('engine.io-client:polling');\n\n/**\n * Module exports.\n */\n\nmodule.exports = Polling;\n\n/**\n * Is XHR2 supported?\n */\n\nvar hasXHR2 = (function () {\n var XMLHttpRequest = require('xmlhttprequest-ssl');\n var xhr = new XMLHttpRequest({ xdomain: false });\n return null != xhr.responseType;\n})();\n\n/**\n * Polling interface.\n *\n * @param {Object} opts\n * @api private\n */\n\nfunction Polling (opts) {\n var forceBase64 = (opts && opts.forceBase64);\n if (!hasXHR2 || forceBase64) {\n this.supportsBinary = false;\n }\n Transport.call(this, opts);\n}\n\n/**\n * Inherits from Transport.\n */\n\ninherit(Polling, Transport);\n\n/**\n * Transport name.\n */\n\nPolling.prototype.name = 'polling';\n\n/**\n * Opens the socket (triggers polling). We write a PING message to determine\n * when the transport is open.\n *\n * @api private\n */\n\nPolling.prototype.doOpen = function () {\n this.poll();\n};\n\n/**\n * Pauses polling.\n *\n * @param {Function} callback upon buffers are flushed and transport is paused\n * @api private\n */\n\nPolling.prototype.pause = function (onPause) {\n var self = this;\n\n this.readyState = 'pausing';\n\n function pause () {\n debug('paused');\n self.readyState = 'paused';\n onPause();\n }\n\n if (this.polling || !this.writable) {\n var total = 0;\n\n if (this.polling) {\n debug('we are currently polling - waiting to pause');\n total++;\n this.once('pollComplete', function () {\n debug('pre-pause polling complete');\n --total || pause();\n });\n }\n\n if (!this.writable) {\n debug('we are currently writing - waiting to pause');\n total++;\n this.once('drain', function () {\n debug('pre-pause writing complete');\n --total || pause();\n });\n }\n } else {\n pause();\n }\n};\n\n/**\n * Starts polling cycle.\n *\n * @api public\n */\n\nPolling.prototype.poll = function () {\n debug('polling');\n this.polling = true;\n this.doPoll();\n this.emit('poll');\n};\n\n/**\n * Overloads onData to detect payloads.\n *\n * @api private\n */\n\nPolling.prototype.onData = function (data) {\n var self = this;\n debug('polling got data %s', data);\n var callback = function (packet, index, total) {\n // if its the first message we consider the transport open\n if ('opening' === self.readyState) {\n self.onOpen();\n }\n\n // if its a close packet, we close the ongoing requests\n if ('close' === packet.type) {\n self.onClose();\n return false;\n }\n\n // otherwise bypass onData and handle the message\n self.onPacket(packet);\n };\n\n // decode payload\n parser.decodePayload(data, this.socket.binaryType, callback);\n\n // if an event did not trigger closing\n if ('closed' !== this.readyState) {\n // if we got data we're not polling\n this.polling = false;\n this.emit('pollComplete');\n\n if ('open' === this.readyState) {\n this.poll();\n } else {\n debug('ignoring poll - transport state \"%s\"', this.readyState);\n }\n }\n};\n\n/**\n * For polling, send a close packet.\n *\n * @api private\n */\n\nPolling.prototype.doClose = function () {\n var self = this;\n\n function close () {\n debug('writing close packet');\n self.write([{ type: 'close' }]);\n }\n\n if ('open' === this.readyState) {\n debug('transport open - closing');\n close();\n } else {\n // in case we're trying to close while\n // handshaking is in progress (GH-164)\n debug('transport not open - deferring close');\n this.once('open', close);\n }\n};\n\n/**\n * Writes a packets payload.\n *\n * @param {Array} data packets\n * @param {Function} drain callback\n * @api private\n */\n\nPolling.prototype.write = function (packets) {\n var self = this;\n this.writable = false;\n var callbackfn = function () {\n self.writable = true;\n self.emit('drain');\n };\n\n parser.encodePayload(packets, this.supportsBinary, function (data) {\n self.doWrite(data, callbackfn);\n });\n};\n\n/**\n * Generates uri for connection.\n *\n * @api private\n */\n\nPolling.prototype.uri = function () {\n var query = this.query || {};\n var schema = this.secure ? 'https' : 'http';\n var port = '';\n\n // cache busting is forced\n if (false !== this.timestampRequests) {\n query[this.timestampParam] = yeast();\n }\n\n if (!this.supportsBinary && !query.sid) {\n query.b64 = 1;\n }\n\n query = parseqs.encode(query);\n\n // avoid port if default for schema\n if (this.port && (('https' === schema && Number(this.port) !== 443) ||\n ('http' === schema && Number(this.port) !== 80))) {\n port = ':' + this.port;\n }\n\n // prepend ? to query\n if (query.length) {\n query = '?' + query;\n }\n\n var ipv6 = this.hostname.indexOf(':') !== -1;\n return schema + '://' + (ipv6 ? '[' + this.hostname + ']' : this.hostname) + port + this.path + query;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/engine.io-client/lib/transports/polling.js\n// module id = 20\n// module chunks = 0","'use strict';\n\nvar alphabet = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_'.split('')\n , length = 64\n , map = {}\n , seed = 0\n , i = 0\n , prev;\n\n/**\n * Return a string representing the specified number.\n *\n * @param {Number} num The number to convert.\n * @returns {String} The string representation of the number.\n * @api public\n */\nfunction encode(num) {\n var encoded = '';\n\n do {\n encoded = alphabet[num % length] + encoded;\n num = Math.floor(num / length);\n } while (num > 0);\n\n return encoded;\n}\n\n/**\n * Return the integer value specified by the given string.\n *\n * @param {String} str The string to convert.\n * @returns {Number} The integer value represented by the string.\n * @api public\n */\nfunction decode(str) {\n var decoded = 0;\n\n for (i = 0; i < str.length; i++) {\n decoded = decoded * length + map[str.charAt(i)];\n }\n\n return decoded;\n}\n\n/**\n * Yeast: A tiny growing id generator.\n *\n * @returns {String} A unique id.\n * @api public\n */\nfunction yeast() {\n var now = encode(+new Date());\n\n if (now !== prev) return seed = 0, prev = now;\n return now +'.'+ encode(seed++);\n}\n\n//\n// Map each character to its index.\n//\nfor (; i < length; i++) map[alphabet[i]] = i;\n\n//\n// Expose the `yeast`, `encode` and `decode` functions.\n//\nyeast.encode = encode;\nyeast.decode = decode;\nmodule.exports = yeast;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/yeast/index.js\n// module id = 21\n// module chunks = 0","\nvar indexOf = [].indexOf;\n\nmodule.exports = function(arr, obj){\n if (indexOf) return arr.indexOf(obj);\n for (var i = 0; i < arr.length; ++i) {\n if (arr[i] === obj) return i;\n }\n return -1;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/indexof/index.js\n// module id = 22\n// module chunks = 0","\n/**\n * Module dependencies.\n */\n\nvar parser = require('socket.io-parser');\nvar Emitter = require('component-emitter');\nvar toArray = require('to-array');\nvar on = require('./on');\nvar bind = require('component-bind');\nvar debug = require('debug')('socket.io-client:socket');\nvar parseqs = require('parseqs');\n\n/**\n * Module exports.\n */\n\nmodule.exports = exports = Socket;\n\n/**\n * Internal events (blacklisted).\n * These events can't be emitted by the user.\n *\n * @api private\n */\n\nvar events = {\n connect: 1,\n connect_error: 1,\n connect_timeout: 1,\n connecting: 1,\n disconnect: 1,\n error: 1,\n reconnect: 1,\n reconnect_attempt: 1,\n reconnect_failed: 1,\n reconnect_error: 1,\n reconnecting: 1,\n ping: 1,\n pong: 1\n};\n\n/**\n * Shortcut to `Emitter#emit`.\n */\n\nvar emit = Emitter.prototype.emit;\n\n/**\n * `Socket` constructor.\n *\n * @api public\n */\n\nfunction Socket (io, nsp, opts) {\n this.io = io;\n this.nsp = nsp;\n this.json = this; // compat\n this.ids = 0;\n this.acks = {};\n this.receiveBuffer = [];\n this.sendBuffer = [];\n this.connected = false;\n this.disconnected = true;\n if (opts && opts.query) {\n this.query = opts.query;\n }\n if (this.io.autoConnect) this.open();\n}\n\n/**\n * Mix in `Emitter`.\n */\n\nEmitter(Socket.prototype);\n\n/**\n * Subscribe to open, close and packet events\n *\n * @api private\n */\n\nSocket.prototype.subEvents = function () {\n if (this.subs) return;\n\n var io = this.io;\n this.subs = [\n on(io, 'open', bind(this, 'onopen')),\n on(io, 'packet', bind(this, 'onpacket')),\n on(io, 'close', bind(this, 'onclose'))\n ];\n};\n\n/**\n * \"Opens\" the socket.\n *\n * @api public\n */\n\nSocket.prototype.open =\nSocket.prototype.connect = function () {\n if (this.connected) return this;\n\n this.subEvents();\n this.io.open(); // ensure open\n if ('open' === this.io.readyState) this.onopen();\n this.emit('connecting');\n return this;\n};\n\n/**\n * Sends a `message` event.\n *\n * @return {Socket} self\n * @api public\n */\n\nSocket.prototype.send = function () {\n var args = toArray(arguments);\n args.unshift('message');\n this.emit.apply(this, args);\n return this;\n};\n\n/**\n * Override `emit`.\n * If the event is in `events`, it's emitted normally.\n *\n * @param {String} event name\n * @return {Socket} self\n * @api public\n */\n\nSocket.prototype.emit = function (ev) {\n if (events.hasOwnProperty(ev)) {\n emit.apply(this, arguments);\n return this;\n }\n\n var args = toArray(arguments);\n var packet = { type: parser.EVENT, data: args };\n\n packet.options = {};\n packet.options.compress = !this.flags || false !== this.flags.compress;\n\n // event ack callback\n if ('function' === typeof args[args.length - 1]) {\n debug('emitting packet with ack id %d', this.ids);\n this.acks[this.ids] = args.pop();\n packet.id = this.ids++;\n }\n\n if (this.connected) {\n this.packet(packet);\n } else {\n this.sendBuffer.push(packet);\n }\n\n delete this.flags;\n\n return this;\n};\n\n/**\n * Sends a packet.\n *\n * @param {Object} packet\n * @api private\n */\n\nSocket.prototype.packet = function (packet) {\n packet.nsp = this.nsp;\n this.io.packet(packet);\n};\n\n/**\n * Called upon engine `open`.\n *\n * @api private\n */\n\nSocket.prototype.onopen = function () {\n debug('transport is open - connecting');\n\n // write connect packet if necessary\n if ('/' !== this.nsp) {\n if (this.query) {\n var query = typeof this.query === 'object' ? parseqs.encode(this.query) : this.query;\n debug('sending connect packet with query %s', query);\n this.packet({type: parser.CONNECT, query: query});\n } else {\n this.packet({type: parser.CONNECT});\n }\n }\n};\n\n/**\n * Called upon engine `close`.\n *\n * @param {String} reason\n * @api private\n */\n\nSocket.prototype.onclose = function (reason) {\n debug('close (%s)', reason);\n this.connected = false;\n this.disconnected = true;\n delete this.id;\n this.emit('disconnect', reason);\n};\n\n/**\n * Called with socket packet.\n *\n * @param {Object} packet\n * @api private\n */\n\nSocket.prototype.onpacket = function (packet) {\n if (packet.nsp !== this.nsp) return;\n\n switch (packet.type) {\n case parser.CONNECT:\n this.onconnect();\n break;\n\n case parser.EVENT:\n this.onevent(packet);\n break;\n\n case parser.BINARY_EVENT:\n this.onevent(packet);\n break;\n\n case parser.ACK:\n this.onack(packet);\n break;\n\n case parser.BINARY_ACK:\n this.onack(packet);\n break;\n\n case parser.DISCONNECT:\n this.ondisconnect();\n break;\n\n case parser.ERROR:\n this.emit('error', packet.data);\n break;\n }\n};\n\n/**\n * Called upon a server event.\n *\n * @param {Object} packet\n * @api private\n */\n\nSocket.prototype.onevent = function (packet) {\n var args = packet.data || [];\n debug('emitting event %j', args);\n\n if (null != packet.id) {\n debug('attaching ack callback to event');\n args.push(this.ack(packet.id));\n }\n\n if (this.connected) {\n emit.apply(this, args);\n } else {\n this.receiveBuffer.push(args);\n }\n};\n\n/**\n * Produces an ack callback to emit with an event.\n *\n * @api private\n */\n\nSocket.prototype.ack = function (id) {\n var self = this;\n var sent = false;\n return function () {\n // prevent double callbacks\n if (sent) return;\n sent = true;\n var args = toArray(arguments);\n debug('sending ack %j', args);\n\n self.packet({\n type: parser.ACK,\n id: id,\n data: args\n });\n };\n};\n\n/**\n * Called upon a server acknowlegement.\n *\n * @param {Object} packet\n * @api private\n */\n\nSocket.prototype.onack = function (packet) {\n var ack = this.acks[packet.id];\n if ('function' === typeof ack) {\n debug('calling ack %s with %j', packet.id, packet.data);\n ack.apply(this, packet.data);\n delete this.acks[packet.id];\n } else {\n debug('bad ack %s', packet.id);\n }\n};\n\n/**\n * Called upon server connect.\n *\n * @api private\n */\n\nSocket.prototype.onconnect = function () {\n this.connected = true;\n this.disconnected = false;\n this.emit('connect');\n this.emitBuffered();\n};\n\n/**\n * Emit buffered events (received and emitted).\n *\n * @api private\n */\n\nSocket.prototype.emitBuffered = function () {\n var i;\n for (i = 0; i < this.receiveBuffer.length; i++) {\n emit.apply(this, this.receiveBuffer[i]);\n }\n this.receiveBuffer = [];\n\n for (i = 0; i < this.sendBuffer.length; i++) {\n this.packet(this.sendBuffer[i]);\n }\n this.sendBuffer = [];\n};\n\n/**\n * Called upon server disconnect.\n *\n * @api private\n */\n\nSocket.prototype.ondisconnect = function () {\n debug('server disconnect (%s)', this.nsp);\n this.destroy();\n this.onclose('io server disconnect');\n};\n\n/**\n * Called upon forced client/server side disconnections,\n * this method ensures the manager stops tracking us and\n * that reconnections don't get triggered for this.\n *\n * @api private.\n */\n\nSocket.prototype.destroy = function () {\n if (this.subs) {\n // clean subscriptions to avoid reconnections\n for (var i = 0; i < this.subs.length; i++) {\n this.subs[i].destroy();\n }\n this.subs = null;\n }\n\n this.io.destroy(this);\n};\n\n/**\n * Disconnects the socket manually.\n *\n * @return {Socket} self\n * @api public\n */\n\nSocket.prototype.close =\nSocket.prototype.disconnect = function () {\n if (this.connected) {\n debug('performing disconnect (%s)', this.nsp);\n this.packet({ type: parser.DISCONNECT });\n }\n\n // remove socket from pool\n this.destroy();\n\n if (this.connected) {\n // fire events\n this.onclose('io client disconnect');\n }\n return this;\n};\n\n/**\n * Sets the compress flag.\n *\n * @param {Boolean} if `true`, compresses the sending data\n * @return {Socket} self\n * @api public\n */\n\nSocket.prototype.compress = function (compress) {\n this.flags = this.flags || {};\n this.flags.compress = compress;\n return this;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/socket.io-client/lib/socket.js\n// module id = 23\n// module chunks = 0","\n/**\n * Module exports.\n */\n\nmodule.exports = on;\n\n/**\n * Helper for subscriptions.\n *\n * @param {Object|EventEmitter} obj with `Emitter` mixin or `EventEmitter`\n * @param {String} event name\n * @param {Function} callback\n * @api public\n */\n\nfunction on (obj, ev, fn) {\n obj.on(ev, fn);\n return {\n destroy: function () {\n obj.removeListener(ev, fn);\n }\n };\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/socket.io-client/lib/on.js\n// module id = 24\n// module chunks = 0","/**\n * Slice reference.\n */\n\nvar slice = [].slice;\n\n/**\n * Bind `obj` to `fn`.\n *\n * @param {Object} obj\n * @param {Function|String} fn or string\n * @return {Function}\n * @api public\n */\n\nmodule.exports = function(obj, fn){\n if ('string' == typeof fn) fn = obj[fn];\n if ('function' != typeof fn) throw new Error('bind() requires a function');\n var args = slice.call(arguments, 2);\n return function(){\n return fn.apply(obj, args.concat(slice.call(arguments)));\n }\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/component-bind/index.js\n// module id = 25\n// module chunks = 0","\"use strict\";\n\nvar scroll = require(\"./ghostmode.scroll\");\nvar utils = require(\"./browser.utils\");\n\nvar styles = {\n display: \"none\",\n padding: \"15px\",\n fontFamily: \"sans-serif\",\n position: \"fixed\",\n fontSize: \"0.9em\",\n zIndex: 9999,\n right: 0,\n top: 0,\n borderBottomLeftRadius: \"5px\",\n backgroundColor: \"#1B2032\",\n margin: 0,\n color: \"white\",\n textAlign: \"center\",\n pointerEvents: \"none\"\n};\n\nvar elem;\nvar options;\nvar timeoutInt;\n\n/**\n * @param {BrowserSync} bs\n * @returns {*}\n */\nexports.init = function(bs) {\n options = bs.options;\n\n var cssStyles = styles;\n\n if (options.notify.styles) {\n if (\n Object.prototype.toString.call(options.notify.styles) ===\n \"[object Array]\"\n ) {\n // handle original array behavior, replace all styles with a joined copy\n cssStyles = options.notify.styles.join(\";\");\n } else {\n for (var key in options.notify.styles) {\n if (options.notify.styles.hasOwnProperty(key)) {\n cssStyles[key] = options.notify.styles[key];\n }\n }\n }\n }\n\n elem = document.createElement(\"DIV\");\n elem.id = \"__bs_notify__\";\n\n if (typeof cssStyles === \"string\") {\n elem.style.cssText = cssStyles;\n } else {\n for (var rule in cssStyles) {\n elem.style[rule] = cssStyles[rule];\n }\n }\n\n var flashFn = exports.watchEvent(bs);\n\n bs.emitter.on(\"notify\", flashFn);\n bs.socket.on(\"browser:notify\", flashFn);\n\n return elem;\n};\n\n/**\n * @returns {Function}\n */\nexports.watchEvent = function(bs) {\n return function(data) {\n if (bs.options.notify || data.override) {\n if (typeof data === \"string\") {\n return exports.flash(data);\n }\n exports.flash(data.message, data.timeout);\n }\n };\n};\n\n/**\n *\n */\nexports.getElem = function() {\n return elem;\n};\n\n/**\n * @param message\n * @param [timeout]\n * @returns {*}\n */\nexports.flash = function(message, timeout) {\n var elem = exports.getElem();\n var $body = utils.getBody();\n\n // return if notify was never initialised\n if (!elem) {\n return false;\n }\n\n elem.innerHTML = message;\n elem.style.display = \"block\";\n\n $body.appendChild(elem);\n\n if (timeoutInt) {\n clearTimeout(timeoutInt);\n timeoutInt = undefined;\n }\n\n timeoutInt = window.setTimeout(function() {\n elem.style.display = \"none\";\n if (elem.parentNode) {\n $body.removeChild(elem);\n }\n }, timeout || 2000);\n\n return elem;\n};\n\n\n\n// WEBPACK FOOTER //\n// ./lib/notify.js","\"use strict\";\n\n/**\n * This is the plugin for syncing clicks between browsers\n * @type {string}\n */\nvar EVENT_NAME = \"click\";\nvar OPT_PATH = \"ghostMode.clicks\";\nexports.canEmitEvents = true;\n\n/**\n * @param {BrowserSync} bs\n * @param eventManager\n */\nexports.init = function(bs, eventManager) {\n eventManager.addEvent(document.body, EVENT_NAME, exports.browserEvent(bs));\n bs.socket.on(EVENT_NAME, exports.socketEvent(bs, eventManager));\n};\n\n/**\n * Uses event delegation to determine the clicked element\n * @param {BrowserSync} bs\n * @returns {Function}\n */\nexports.browserEvent = function(bs) {\n return function(event) {\n if (exports.canEmitEvents) {\n var elem = event.target || event.srcElement;\n\n if (elem.type === \"checkbox\" || elem.type === \"radio\") {\n bs.utils.forceChange(elem);\n return;\n }\n\n bs.socket.emit(EVENT_NAME, bs.utils.getElementData(elem));\n } else {\n exports.canEmitEvents = true;\n }\n };\n};\n\n/**\n * @param {BrowserSync} bs\n * @param {manager} eventManager\n * @returns {Function}\n */\nexports.socketEvent = function(bs, eventManager) {\n return function(data) {\n if (!bs.canSync(data, OPT_PATH) || bs.tabHidden) {\n return false;\n }\n\n var elem = bs.utils.getSingleElement(data.tagName, data.index);\n\n if (elem) {\n exports.canEmitEvents = false;\n eventManager.triggerClick(elem);\n }\n };\n};\n\n\n\n// WEBPACK FOOTER //\n// ./lib/ghostmode.clicks.js","\"use strict\";\n\nexports.plugins = {\n inputs: require(\"./ghostmode.forms.input\"),\n toggles: require(\"./ghostmode.forms.toggles\"),\n submit: require(\"./ghostmode.forms.submit\")\n};\n\n/**\n * Load plugins for enabled options\n * @param bs\n */\nexports.init = function(bs, eventManager) {\n var checkOpt = true;\n var options = bs.options.ghostMode.forms;\n\n if (options === true) {\n checkOpt = false;\n }\n\n function init(name) {\n exports.plugins[name].init(bs, eventManager);\n }\n\n for (var name in exports.plugins) {\n if (!checkOpt) {\n init(name);\n } else {\n if (options[name]) {\n init(name);\n }\n }\n }\n};\n\n\n\n// WEBPACK FOOTER //\n// ./lib/ghostmode.forms.js","\"use strict\";\n\n/**\n * This is the plugin for syncing clicks between browsers\n * @type {string}\n */\nvar EVENT_NAME = \"input:text\";\nvar OPT_PATH = \"ghostMode.forms.inputs\";\nexports.canEmitEvents = true;\n\n/**\n * @param {BrowserSync} bs\n * @param eventManager\n */\nexports.init = function(bs, eventManager) {\n eventManager.addEvent(document.body, \"keyup\", exports.browserEvent(bs));\n bs.socket.on(EVENT_NAME, exports.socketEvent(bs, eventManager));\n};\n\n/**\n * @param {BrowserSync} bs\n * @returns {Function}\n */\nexports.browserEvent = function(bs) {\n return function(event) {\n var elem = event.target || event.srcElement;\n var data;\n\n if (exports.canEmitEvents) {\n if (elem.tagName === \"INPUT\" || elem.tagName === \"TEXTAREA\") {\n data = bs.utils.getElementData(elem);\n data.value = elem.value;\n\n bs.socket.emit(EVENT_NAME, data);\n }\n } else {\n exports.canEmitEvents = true;\n }\n };\n};\n\n/**\n * @param {BrowserSync} bs\n * @returns {Function}\n */\nexports.socketEvent = function(bs) {\n return function(data) {\n if (!bs.canSync(data, OPT_PATH)) {\n return false;\n }\n\n var elem = bs.utils.getSingleElement(data.tagName, data.index);\n\n if (elem) {\n elem.value = data.value;\n return elem;\n }\n\n return false;\n };\n};\n\n\n\n// WEBPACK FOOTER //\n// ./lib/ghostmode.forms.input.js","\"use strict\";\n\n/**\n * This is the plugin for syncing clicks between browsers\n * @type {string}\n */\nvar EVENT_NAME = \"input:toggles\";\nvar OPT_PATH = \"ghostMode.forms.toggles\";\nexports.canEmitEvents = true;\n\n/**\n * @param {BrowserSync} bs\n * @param eventManager\n */\nexports.init = function(bs, eventManager) {\n var browserEvent = exports.browserEvent(bs);\n exports.addEvents(eventManager, browserEvent);\n bs.socket.on(EVENT_NAME, exports.socketEvent(bs, eventManager));\n};\n\n/**\n * @param eventManager\n * @param event\n */\nexports.addEvents = function(eventManager, event) {\n var elems = document.getElementsByTagName(\"select\");\n var inputs = document.getElementsByTagName(\"input\");\n\n addEvents(elems);\n addEvents(inputs);\n\n function addEvents(domElems) {\n for (var i = 0, n = domElems.length; i < n; i += 1) {\n eventManager.addEvent(domElems[i], \"change\", event);\n }\n }\n};\n\n/**\n * @param {BrowserSync} bs\n * @returns {Function}\n */\nexports.browserEvent = function(bs) {\n return function(event) {\n if (exports.canEmitEvents) {\n var elem = event.target || event.srcElement;\n var data;\n if (\n elem.type === \"radio\" ||\n elem.type === \"checkbox\" ||\n elem.tagName === \"SELECT\"\n ) {\n data = bs.utils.getElementData(elem);\n data.type = elem.type;\n data.value = elem.value;\n data.checked = elem.checked;\n bs.socket.emit(EVENT_NAME, data);\n }\n } else {\n exports.canEmitEvents = true;\n }\n };\n};\n\n/**\n * @param {BrowserSync} bs\n * @returns {Function}\n */\nexports.socketEvent = function(bs) {\n return function(data) {\n if (!bs.canSync(data, OPT_PATH)) {\n return false;\n }\n\n exports.canEmitEvents = false;\n\n var elem = bs.utils.getSingleElement(data.tagName, data.index);\n\n if (elem) {\n if (data.type === \"radio\") {\n elem.checked = true;\n }\n if (data.type === \"checkbox\") {\n elem.checked = data.checked;\n }\n if (data.tagName === \"SELECT\") {\n elem.value = data.value;\n }\n return elem;\n }\n return false;\n };\n};\n\n\n\n// WEBPACK FOOTER //\n// ./lib/ghostmode.forms.toggles.js","\"use strict\";\n\n/**\n * This is the plugin for syncing clicks between browsers\n * @type {string}\n */\nvar EVENT_NAME = \"form:submit\";\nvar OPT_PATH = \"ghostMode.forms.submit\";\nexports.canEmitEvents = true;\n\n/**\n * @param {BrowserSync} bs\n * @param eventManager\n */\nexports.init = function(bs, eventManager) {\n var browserEvent = exports.browserEvent(bs);\n eventManager.addEvent(document.body, \"submit\", browserEvent);\n eventManager.addEvent(document.body, \"reset\", browserEvent);\n bs.socket.on(EVENT_NAME, exports.socketEvent(bs, eventManager));\n};\n\n/**\n * @param {BrowserSync} bs\n * @returns {Function}\n */\nexports.browserEvent = function(bs) {\n return function(event) {\n if (exports.canEmitEvents) {\n var elem = event.target || event.srcElement;\n var data = bs.utils.getElementData(elem);\n data.type = event.type;\n bs.socket.emit(EVENT_NAME, data);\n } else {\n exports.canEmitEvents = true;\n }\n };\n};\n\n/**\n * @param {BrowserSync} bs\n * @returns {Function}\n */\nexports.socketEvent = function(bs) {\n return function(data) {\n if (!bs.canSync(data, OPT_PATH)) {\n return false;\n }\n\n var elem = bs.utils.getSingleElement(data.tagName, data.index);\n\n exports.canEmitEvents = false;\n\n if (elem && data.type === \"submit\") {\n elem.submit();\n }\n\n if (elem && data.type === \"reset\") {\n elem.reset();\n }\n return false;\n };\n};\n\n\n\n// WEBPACK FOOTER //\n// ./lib/ghostmode.forms.submit.js","\"use strict\";\n\n/**\n * This is the plugin for syncing location\n * @type {string}\n */\nvar EVENT_NAME = \"browser:location\";\nvar OPT_PATH = \"ghostMode.location\";\nexports.canEmitEvents = true;\n\n/**\n * @param {BrowserSync} bs\n */\nexports.init = function(bs) {\n bs.socket.on(EVENT_NAME, exports.socketEvent(bs));\n};\n\n/**\n * Respond to socket event\n */\nexports.socketEvent = function(bs) {\n return function(data) {\n if (!bs.canSync(data, OPT_PATH)) {\n return false;\n }\n\n if (data.path) {\n exports.setPath(data.path);\n } else {\n exports.setUrl(data.url);\n }\n };\n};\n\n/**\n * @param url\n */\nexports.setUrl = function(url) {\n window.location = url;\n};\n\n/**\n * @param path\n */\nexports.setPath = function(path) {\n window.location =\n window.location.protocol + \"//\" + window.location.host + path;\n};\n\n\n\n// WEBPACK FOOTER //\n// ./lib/ghostmode.location.js","\"use strict\";\n\nvar socket = require(\"./socket\");\nvar shims = require(\"./client-shims\");\nvar notify = require(\"./notify\");\nvar codeSync = require(\"./code-sync\");\nvar BrowserSync = require(\"./browser-sync\");\nvar ghostMode = require(\"./ghostmode\");\nvar emitter = require(\"./emitter\");\nvar events = require(\"./events\");\nvar utils = require(\"./browser.utils\");\n\nvar shouldReload = false;\nvar initialised = false;\n\n/**\n * @param options\n */\nexports.init = function(options) {\n if (shouldReload && options.reloadOnRestart) {\n utils.reloadBrowser();\n }\n\n var BS = window.___browserSync___ || {};\n\n if (!BS.client) {\n BS.client = true;\n\n var browserSync = new BrowserSync(options);\n\n // Always init on page load\n ghostMode.init(browserSync);\n codeSync.init(browserSync);\n\n notify.init(browserSync);\n\n if (options.notify) {\n notify.flash(\"Connected to BrowserSync\");\n }\n }\n\n if (!initialised) {\n socket.on(\"disconnect\", function() {\n if (options.notify) {\n notify.flash(\"Disconnected from BrowserSync\");\n }\n shouldReload = true;\n });\n initialised = true;\n }\n};\n\n/**\n * Handle individual socket connections\n */\nsocket.on(\"connection\", exports.init);\n\n/**debug:start**/\nif (window.__karma__) {\n window.__bs_scroll__ = require(\"./ghostmode.scroll\");\n window.__bs_clicks__ = require(\"./ghostmode.clicks\");\n window.__bs_location__ = require(\"./ghostmode.location\");\n window.__bs_inputs__ = require(\"./ghostmode.forms.input\");\n window.__bs_toggles__ = require(\"./ghostmode.forms.toggles\");\n window.__bs_submit__ = require(\"./ghostmode.forms.submit\");\n window.__bs_forms__ = require(\"./ghostmode.forms\");\n window.__bs_utils__ = require(\"./browser.utils\");\n window.__bs_emitter__ = emitter;\n window.__bs = BrowserSync;\n window.__bs_notify__ = notify;\n window.__bs_code_sync__ = codeSync;\n window.__bs_ghost_mode__ = ghostMode;\n window.__bs_socket__ = socket;\n window.__bs_index__ = exports;\n}\n/**debug:end**/\n\n\n\n// WEBPACK FOOTER //\n// ./lib/index.js","\n/**\n * Module dependencies.\n */\n\nvar url = require('./url');\nvar parser = require('socket.io-parser');\nvar Manager = require('./manager');\nvar debug = require('debug')('socket.io-client');\n\n/**\n * Module exports.\n */\n\nmodule.exports = exports = lookup;\n\n/**\n * Managers cache.\n */\n\nvar cache = exports.managers = {};\n\n/**\n * Looks up an existing `Manager` for multiplexing.\n * If the user summons:\n *\n * `io('http://localhost/a');`\n * `io('http://localhost/b');`\n *\n * We reuse the existing instance based on same scheme/port/host,\n * and we initialize sockets for each namespace.\n *\n * @api public\n */\n\nfunction lookup (uri, opts) {\n if (typeof uri === 'object') {\n opts = uri;\n uri = undefined;\n }\n\n opts = opts || {};\n\n var parsed = url(uri);\n var source = parsed.source;\n var id = parsed.id;\n var path = parsed.path;\n var sameNamespace = cache[id] && path in cache[id].nsps;\n var newConnection = opts.forceNew || opts['force new connection'] ||\n false === opts.multiplex || sameNamespace;\n\n var io;\n\n if (newConnection) {\n debug('ignoring socket cache for %s', source);\n io = Manager(source, opts);\n } else {\n if (!cache[id]) {\n debug('new io instance for %s', source);\n cache[id] = Manager(source, opts);\n }\n io = cache[id];\n }\n if (parsed.query && !opts.query) {\n opts.query = parsed.query;\n }\n return io.socket(parsed.path, opts);\n}\n\n/**\n * Protocol version.\n *\n * @api public\n */\n\nexports.protocol = parser.protocol;\n\n/**\n * `connect`.\n *\n * @param {String} uri\n * @api public\n */\n\nexports.connect = lookup;\n\n/**\n * Expose constructors for standalone build.\n *\n * @api public\n */\n\nexports.Manager = require('./manager');\nexports.Socket = require('./socket');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/socket.io-client/lib/index.js\n// module id = 35\n// module chunks = 0","\n/**\n * Module dependencies.\n */\n\nvar parseuri = require('parseuri');\nvar debug = require('debug')('socket.io-client:url');\n\n/**\n * Module exports.\n */\n\nmodule.exports = url;\n\n/**\n * URL parser.\n *\n * @param {String} url\n * @param {Object} An object meant to mimic window.location.\n * Defaults to window.location.\n * @api public\n */\n\nfunction url (uri, loc) {\n var obj = uri;\n\n // default to window.location\n loc = loc || global.location;\n if (null == uri) uri = loc.protocol + '//' + loc.host;\n\n // relative path support\n if ('string' === typeof uri) {\n if ('/' === uri.charAt(0)) {\n if ('/' === uri.charAt(1)) {\n uri = loc.protocol + uri;\n } else {\n uri = loc.host + uri;\n }\n }\n\n if (!/^(https?|wss?):\\/\\//.test(uri)) {\n debug('protocol-less url %s', uri);\n if ('undefined' !== typeof loc) {\n uri = loc.protocol + '//' + uri;\n } else {\n uri = 'https://' + uri;\n }\n }\n\n // parse\n debug('parse %s', uri);\n obj = parseuri(uri);\n }\n\n // make sure we treat `localhost:80` and `localhost` equally\n if (!obj.port) {\n if (/^(http|ws)$/.test(obj.protocol)) {\n obj.port = '80';\n } else if (/^(http|ws)s$/.test(obj.protocol)) {\n obj.port = '443';\n }\n }\n\n obj.path = obj.path || '/';\n\n var ipv6 = obj.host.indexOf(':') !== -1;\n var host = ipv6 ? '[' + obj.host + ']' : obj.host;\n\n // define unique id\n obj.id = obj.protocol + '://' + host + ':' + obj.port;\n // define href\n obj.href = obj.protocol + '://' + host + (loc && loc.port === obj.port ? '' : (':' + obj.port));\n\n return obj;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/socket.io-client/lib/url.js\n// module id = 36\n// module chunks = 0","\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n *\n * Expose `debug()` as the module.\n */\n\nexports = module.exports = createDebug.debug = createDebug['default'] = createDebug;\nexports.coerce = coerce;\nexports.disable = disable;\nexports.enable = enable;\nexports.enabled = enabled;\nexports.humanize = require('ms');\n\n/**\n * The currently active debug mode names, and names to skip.\n */\n\nexports.names = [];\nexports.skips = [];\n\n/**\n * Map of special \"%n\" handling functions, for the debug \"format\" argument.\n *\n * Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n */\n\nexports.formatters = {};\n\n/**\n * Previous log timestamp.\n */\n\nvar prevTime;\n\n/**\n * Select a color.\n * @param {String} namespace\n * @return {Number}\n * @api private\n */\n\nfunction selectColor(namespace) {\n var hash = 0, i;\n\n for (i in namespace) {\n hash = ((hash << 5) - hash) + namespace.charCodeAt(i);\n hash |= 0; // Convert to 32bit integer\n }\n\n return exports.colors[Math.abs(hash) % exports.colors.length];\n}\n\n/**\n * Create a debugger with the given `namespace`.\n *\n * @param {String} namespace\n * @return {Function}\n * @api public\n */\n\nfunction createDebug(namespace) {\n\n function debug() {\n // disabled?\n if (!debug.enabled) return;\n\n var self = debug;\n\n // set `diff` timestamp\n var curr = +new Date();\n var ms = curr - (prevTime || curr);\n self.diff = ms;\n self.prev = prevTime;\n self.curr = curr;\n prevTime = curr;\n\n // turn the `arguments` into a proper Array\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n\n args[0] = exports.coerce(args[0]);\n\n if ('string' !== typeof args[0]) {\n // anything else let's inspect with %O\n args.unshift('%O');\n }\n\n // apply any `formatters` transformations\n var index = 0;\n args[0] = args[0].replace(/%([a-zA-Z%])/g, function(match, format) {\n // if we encounter an escaped % then don't increase the array index\n if (match === '%%') return match;\n index++;\n var formatter = exports.formatters[format];\n if ('function' === typeof formatter) {\n var val = args[index];\n match = formatter.call(self, val);\n\n // now we need to remove `args[index]` since it's inlined in the `format`\n args.splice(index, 1);\n index--;\n }\n return match;\n });\n\n // apply env-specific formatting (colors, etc.)\n exports.formatArgs.call(self, args);\n\n var logFn = debug.log || exports.log || console.log.bind(console);\n logFn.apply(self, args);\n }\n\n debug.namespace = namespace;\n debug.enabled = exports.enabled(namespace);\n debug.useColors = exports.useColors();\n debug.color = selectColor(namespace);\n\n // env-specific initialization logic for debug instances\n if ('function' === typeof exports.init) {\n exports.init(debug);\n }\n\n return debug;\n}\n\n/**\n * Enables a debug mode by namespaces. This can include modes\n * separated by a colon and wildcards.\n *\n * @param {String} namespaces\n * @api public\n */\n\nfunction enable(namespaces) {\n exports.save(namespaces);\n\n exports.names = [];\n exports.skips = [];\n\n var split = (typeof namespaces === 'string' ? namespaces : '').split(/[\\s,]+/);\n var len = split.length;\n\n for (var i = 0; i < len; i++) {\n if (!split[i]) continue; // ignore empty strings\n namespaces = split[i].replace(/\\*/g, '.*?');\n if (namespaces[0] === '-') {\n exports.skips.push(new RegExp('^' + namespaces.substr(1) + '$'));\n } else {\n exports.names.push(new RegExp('^' + namespaces + '$'));\n }\n }\n}\n\n/**\n * Disable debug output.\n *\n * @api public\n */\n\nfunction disable() {\n exports.enable('');\n}\n\n/**\n * Returns true if the given mode name is enabled, false otherwise.\n *\n * @param {String} name\n * @return {Boolean}\n * @api public\n */\n\nfunction enabled(name) {\n var i, len;\n for (i = 0, len = exports.skips.length; i < len; i++) {\n if (exports.skips[i].test(name)) {\n return false;\n }\n }\n for (i = 0, len = exports.names.length; i < len; i++) {\n if (exports.names[i].test(name)) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * Coerce `val`.\n *\n * @param {Mixed} val\n * @return {Mixed}\n * @api private\n */\n\nfunction coerce(val) {\n if (val instanceof Error) return val.stack || val.message;\n return val;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/debug/src/debug.js\n// module id = 37\n// module chunks = 0","/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n * - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function(val, options) {\n options = options || {};\n var type = typeof val;\n if (type === 'string' && val.length > 0) {\n return parse(val);\n } else if (type === 'number' && isNaN(val) === false) {\n return options.long ? fmtLong(val) : fmtShort(val);\n }\n throw new Error(\n 'val is not a non-empty string or a valid number. val=' +\n JSON.stringify(val)\n );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n str = String(str);\n if (str.length > 100) {\n return;\n }\n var match = /^((?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(\n str\n );\n if (!match) {\n return;\n }\n var n = parseFloat(match[1]);\n var type = (match[2] || 'ms').toLowerCase();\n switch (type) {\n case 'years':\n case 'year':\n case 'yrs':\n case 'yr':\n case 'y':\n return n * y;\n case 'days':\n case 'day':\n case 'd':\n return n * d;\n case 'hours':\n case 'hour':\n case 'hrs':\n case 'hr':\n case 'h':\n return n * h;\n case 'minutes':\n case 'minute':\n case 'mins':\n case 'min':\n case 'm':\n return n * m;\n case 'seconds':\n case 'second':\n case 'secs':\n case 'sec':\n case 's':\n return n * s;\n case 'milliseconds':\n case 'millisecond':\n case 'msecs':\n case 'msec':\n case 'ms':\n return n;\n default:\n return undefined;\n }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n if (ms >= d) {\n return Math.round(ms / d) + 'd';\n }\n if (ms >= h) {\n return Math.round(ms / h) + 'h';\n }\n if (ms >= m) {\n return Math.round(ms / m) + 'm';\n }\n if (ms >= s) {\n return Math.round(ms / s) + 's';\n }\n return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n return plural(ms, d, 'day') ||\n plural(ms, h, 'hour') ||\n plural(ms, m, 'minute') ||\n plural(ms, s, 'second') ||\n ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, n, name) {\n if (ms < n) {\n return;\n }\n if (ms < n * 1.5) {\n return Math.floor(ms / n) + ' ' + name;\n }\n return Math.ceil(ms / n) + ' ' + name + 's';\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ms/index.js\n// module id = 38\n// module chunks = 0","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/has-binary2/node_modules/isarray/index.js\n// module id = 39\n// module chunks = 0","/*global Blob,File*/\n\n/**\n * Module requirements\n */\n\nvar isArray = require('isarray');\nvar isBuf = require('./is-buffer');\nvar toString = Object.prototype.toString;\nvar withNativeBlob = typeof global.Blob === 'function' || toString.call(global.Blob) === '[object BlobConstructor]';\nvar withNativeFile = typeof global.File === 'function' || toString.call(global.File) === '[object FileConstructor]';\n\n/**\n * Replaces every Buffer | ArrayBuffer in packet with a numbered placeholder.\n * Anything with blobs or files should be fed through removeBlobs before coming\n * here.\n *\n * @param {Object} packet - socket.io event packet\n * @return {Object} with deconstructed packet and list of buffers\n * @api public\n */\n\nexports.deconstructPacket = function(packet) {\n var buffers = [];\n var packetData = packet.data;\n var pack = packet;\n pack.data = _deconstructPacket(packetData, buffers);\n pack.attachments = buffers.length; // number of binary 'attachments'\n return {packet: pack, buffers: buffers};\n};\n\nfunction _deconstructPacket(data, buffers) {\n if (!data) return data;\n\n if (isBuf(data)) {\n var placeholder = { _placeholder: true, num: buffers.length };\n buffers.push(data);\n return placeholder;\n } else if (isArray(data)) {\n var newData = new Array(data.length);\n for (var i = 0; i < data.length; i++) {\n newData[i] = _deconstructPacket(data[i], buffers);\n }\n return newData;\n } else if (typeof data === 'object' && !(data instanceof Date)) {\n var newData = {};\n for (var key in data) {\n newData[key] = _deconstructPacket(data[key], buffers);\n }\n return newData;\n }\n return data;\n}\n\n/**\n * Reconstructs a binary packet from its placeholder packet and buffers\n *\n * @param {Object} packet - event packet with placeholders\n * @param {Array} buffers - binary buffers to put in placeholder positions\n * @return {Object} reconstructed packet\n * @api public\n */\n\nexports.reconstructPacket = function(packet, buffers) {\n packet.data = _reconstructPacket(packet.data, buffers);\n packet.attachments = undefined; // no longer useful\n return packet;\n};\n\nfunction _reconstructPacket(data, buffers) {\n if (!data) return data;\n\n if (data && data._placeholder) {\n return buffers[data.num]; // appropriate buffer (should be natural order anyway)\n } else if (isArray(data)) {\n for (var i = 0; i < data.length; i++) {\n data[i] = _reconstructPacket(data[i], buffers);\n }\n } else if (typeof data === 'object') {\n for (var key in data) {\n data[key] = _reconstructPacket(data[key], buffers);\n }\n }\n\n return data;\n}\n\n/**\n * Asynchronously removes Blobs or Files from data via\n * FileReader's readAsArrayBuffer method. Used before encoding\n * data as msgpack. Calls callback with the blobless data.\n *\n * @param {Object} data\n * @param {Function} callback\n * @api private\n */\n\nexports.removeBlobs = function(data, callback) {\n function _removeBlobs(obj, curKey, containingObject) {\n if (!obj) return obj;\n\n // convert any blob\n if ((withNativeBlob && obj instanceof Blob) ||\n (withNativeFile && obj instanceof File)) {\n pendingBlobs++;\n\n // async filereader\n var fileReader = new FileReader();\n fileReader.onload = function() { // this.result == arraybuffer\n if (containingObject) {\n containingObject[curKey] = this.result;\n }\n else {\n bloblessData = this.result;\n }\n\n // if nothing pending its callback time\n if(! --pendingBlobs) {\n callback(bloblessData);\n }\n };\n\n fileReader.readAsArrayBuffer(obj); // blob -> arraybuffer\n } else if (isArray(obj)) { // handle array\n for (var i = 0; i < obj.length; i++) {\n _removeBlobs(obj[i], i, obj);\n }\n } else if (typeof obj === 'object' && !isBuf(obj)) { // and object\n for (var key in obj) {\n _removeBlobs(obj[key], key, obj);\n }\n }\n }\n\n var pendingBlobs = 0;\n var bloblessData = data;\n _removeBlobs(bloblessData);\n if (!pendingBlobs) {\n callback(bloblessData);\n }\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/socket.io-parser/binary.js\n// module id = 40\n// module chunks = 0","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/socket.io-parser/node_modules/isarray/index.js\n// module id = 41\n// module chunks = 0","\nmodule.exports = require('./socket');\n\n/**\n * Exports parser\n *\n * @api public\n *\n */\nmodule.exports.parser = require('engine.io-parser');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/engine.io-client/lib/index.js\n// module id = 42\n// module chunks = 0","/**\n * Module dependencies.\n */\n\nvar transports = require('./transports/index');\nvar Emitter = require('component-emitter');\nvar debug = require('debug')('engine.io-client:socket');\nvar index = require('indexof');\nvar parser = require('engine.io-parser');\nvar parseuri = require('parseuri');\nvar parseqs = require('parseqs');\n\n/**\n * Module exports.\n */\n\nmodule.exports = Socket;\n\n/**\n * Socket constructor.\n *\n * @param {String|Object} uri or options\n * @param {Object} options\n * @api public\n */\n\nfunction Socket (uri, opts) {\n if (!(this instanceof Socket)) return new Socket(uri, opts);\n\n opts = opts || {};\n\n if (uri && 'object' === typeof uri) {\n opts = uri;\n uri = null;\n }\n\n if (uri) {\n uri = parseuri(uri);\n opts.hostname = uri.host;\n opts.secure = uri.protocol === 'https' || uri.protocol === 'wss';\n opts.port = uri.port;\n if (uri.query) opts.query = uri.query;\n } else if (opts.host) {\n opts.hostname = parseuri(opts.host).host;\n }\n\n this.secure = null != opts.secure ? opts.secure\n : (global.location && 'https:' === location.protocol);\n\n if (opts.hostname && !opts.port) {\n // if no port is specified manually, use the protocol default\n opts.port = this.secure ? '443' : '80';\n }\n\n this.agent = opts.agent || false;\n this.hostname = opts.hostname ||\n (global.location ? location.hostname : 'localhost');\n this.port = opts.port || (global.location && location.port\n ? location.port\n : (this.secure ? 443 : 80));\n this.query = opts.query || {};\n if ('string' === typeof this.query) this.query = parseqs.decode(this.query);\n this.upgrade = false !== opts.upgrade;\n this.path = (opts.path || '/engine.io').replace(/\\/$/, '') + '/';\n this.forceJSONP = !!opts.forceJSONP;\n this.jsonp = false !== opts.jsonp;\n this.forceBase64 = !!opts.forceBase64;\n this.enablesXDR = !!opts.enablesXDR;\n this.timestampParam = opts.timestampParam || 't';\n this.timestampRequests = opts.timestampRequests;\n this.transports = opts.transports || ['polling', 'websocket'];\n this.transportOptions = opts.transportOptions || {};\n this.readyState = '';\n this.writeBuffer = [];\n this.prevBufferLen = 0;\n this.policyPort = opts.policyPort || 843;\n this.rememberUpgrade = opts.rememberUpgrade || false;\n this.binaryType = null;\n this.onlyBinaryUpgrades = opts.onlyBinaryUpgrades;\n this.perMessageDeflate = false !== opts.perMessageDeflate ? (opts.perMessageDeflate || {}) : false;\n\n if (true === this.perMessageDeflate) this.perMessageDeflate = {};\n if (this.perMessageDeflate && null == this.perMessageDeflate.threshold) {\n this.perMessageDeflate.threshold = 1024;\n }\n\n // SSL options for Node.js client\n this.pfx = opts.pfx || null;\n this.key = opts.key || null;\n this.passphrase = opts.passphrase || null;\n this.cert = opts.cert || null;\n this.ca = opts.ca || null;\n this.ciphers = opts.ciphers || null;\n this.rejectUnauthorized = opts.rejectUnauthorized === undefined ? true : opts.rejectUnauthorized;\n this.forceNode = !!opts.forceNode;\n\n // other options for Node.js client\n var freeGlobal = typeof global === 'object' && global;\n if (freeGlobal.global === freeGlobal) {\n if (opts.extraHeaders && Object.keys(opts.extraHeaders).length > 0) {\n this.extraHeaders = opts.extraHeaders;\n }\n\n if (opts.localAddress) {\n this.localAddress = opts.localAddress;\n }\n }\n\n // set on handshake\n this.id = null;\n this.upgrades = null;\n this.pingInterval = null;\n this.pingTimeout = null;\n\n // set on heartbeat\n this.pingIntervalTimer = null;\n this.pingTimeoutTimer = null;\n\n this.open();\n}\n\nSocket.priorWebsocketSuccess = false;\n\n/**\n * Mix in `Emitter`.\n */\n\nEmitter(Socket.prototype);\n\n/**\n * Protocol version.\n *\n * @api public\n */\n\nSocket.protocol = parser.protocol; // this is an int\n\n/**\n * Expose deps for legacy compatibility\n * and standalone browser access.\n */\n\nSocket.Socket = Socket;\nSocket.Transport = require('./transport');\nSocket.transports = require('./transports/index');\nSocket.parser = require('engine.io-parser');\n\n/**\n * Creates transport of the given type.\n *\n * @param {String} transport name\n * @return {Transport}\n * @api private\n */\n\nSocket.prototype.createTransport = function (name) {\n debug('creating transport \"%s\"', name);\n var query = clone(this.query);\n\n // append engine.io protocol identifier\n query.EIO = parser.protocol;\n\n // transport name\n query.transport = name;\n\n // per-transport options\n var options = this.transportOptions[name] || {};\n\n // session id if we already have one\n if (this.id) query.sid = this.id;\n\n var transport = new transports[name]({\n query: query,\n socket: this,\n agent: options.agent || this.agent,\n hostname: options.hostname || this.hostname,\n port: options.port || this.port,\n secure: options.secure || this.secure,\n path: options.path || this.path,\n forceJSONP: options.forceJSONP || this.forceJSONP,\n jsonp: options.jsonp || this.jsonp,\n forceBase64: options.forceBase64 || this.forceBase64,\n enablesXDR: options.enablesXDR || this.enablesXDR,\n timestampRequests: options.timestampRequests || this.timestampRequests,\n timestampParam: options.timestampParam || this.timestampParam,\n policyPort: options.policyPort || this.policyPort,\n pfx: options.pfx || this.pfx,\n key: options.key || this.key,\n passphrase: options.passphrase || this.passphrase,\n cert: options.cert || this.cert,\n ca: options.ca || this.ca,\n ciphers: options.ciphers || this.ciphers,\n rejectUnauthorized: options.rejectUnauthorized || this.rejectUnauthorized,\n perMessageDeflate: options.perMessageDeflate || this.perMessageDeflate,\n extraHeaders: options.extraHeaders || this.extraHeaders,\n forceNode: options.forceNode || this.forceNode,\n localAddress: options.localAddress || this.localAddress,\n requestTimeout: options.requestTimeout || this.requestTimeout,\n protocols: options.protocols || void (0)\n });\n\n return transport;\n};\n\nfunction clone (obj) {\n var o = {};\n for (var i in obj) {\n if (obj.hasOwnProperty(i)) {\n o[i] = obj[i];\n }\n }\n return o;\n}\n\n/**\n * Initializes transport to use and starts probe.\n *\n * @api private\n */\nSocket.prototype.open = function () {\n var transport;\n if (this.rememberUpgrade && Socket.priorWebsocketSuccess && this.transports.indexOf('websocket') !== -1) {\n transport = 'websocket';\n } else if (0 === this.transports.length) {\n // Emit error on next tick so it can be listened to\n var self = this;\n setTimeout(function () {\n self.emit('error', 'No transports available');\n }, 0);\n return;\n } else {\n transport = this.transports[0];\n }\n this.readyState = 'opening';\n\n // Retry with the next transport if the transport is disabled (jsonp: false)\n try {\n transport = this.createTransport(transport);\n } catch (e) {\n this.transports.shift();\n this.open();\n return;\n }\n\n transport.open();\n this.setTransport(transport);\n};\n\n/**\n * Sets the current transport. Disables the existing one (if any).\n *\n * @api private\n */\n\nSocket.prototype.setTransport = function (transport) {\n debug('setting transport %s', transport.name);\n var self = this;\n\n if (this.transport) {\n debug('clearing existing transport %s', this.transport.name);\n this.transport.removeAllListeners();\n }\n\n // set up transport\n this.transport = transport;\n\n // set up transport listeners\n transport\n .on('drain', function () {\n self.onDrain();\n })\n .on('packet', function (packet) {\n self.onPacket(packet);\n })\n .on('error', function (e) {\n self.onError(e);\n })\n .on('close', function () {\n self.onClose('transport close');\n });\n};\n\n/**\n * Probes a transport.\n *\n * @param {String} transport name\n * @api private\n */\n\nSocket.prototype.probe = function (name) {\n debug('probing transport \"%s\"', name);\n var transport = this.createTransport(name, { probe: 1 });\n var failed = false;\n var self = this;\n\n Socket.priorWebsocketSuccess = false;\n\n function onTransportOpen () {\n if (self.onlyBinaryUpgrades) {\n var upgradeLosesBinary = !this.supportsBinary && self.transport.supportsBinary;\n failed = failed || upgradeLosesBinary;\n }\n if (failed) return;\n\n debug('probe transport \"%s\" opened', name);\n transport.send([{ type: 'ping', data: 'probe' }]);\n transport.once('packet', function (msg) {\n if (failed) return;\n if ('pong' === msg.type && 'probe' === msg.data) {\n debug('probe transport \"%s\" pong', name);\n self.upgrading = true;\n self.emit('upgrading', transport);\n if (!transport) return;\n Socket.priorWebsocketSuccess = 'websocket' === transport.name;\n\n debug('pausing current transport \"%s\"', self.transport.name);\n self.transport.pause(function () {\n if (failed) return;\n if ('closed' === self.readyState) return;\n debug('changing transport and sending upgrade packet');\n\n cleanup();\n\n self.setTransport(transport);\n transport.send([{ type: 'upgrade' }]);\n self.emit('upgrade', transport);\n transport = null;\n self.upgrading = false;\n self.flush();\n });\n } else {\n debug('probe transport \"%s\" failed', name);\n var err = new Error('probe error');\n err.transport = transport.name;\n self.emit('upgradeError', err);\n }\n });\n }\n\n function freezeTransport () {\n if (failed) return;\n\n // Any callback called by transport should be ignored since now\n failed = true;\n\n cleanup();\n\n transport.close();\n transport = null;\n }\n\n // Handle any error that happens while probing\n function onerror (err) {\n var error = new Error('probe error: ' + err);\n error.transport = transport.name;\n\n freezeTransport();\n\n debug('probe transport \"%s\" failed because of error: %s', name, err);\n\n self.emit('upgradeError', error);\n }\n\n function onTransportClose () {\n onerror('transport closed');\n }\n\n // When the socket is closed while we're probing\n function onclose () {\n onerror('socket closed');\n }\n\n // When the socket is upgraded while we're probing\n function onupgrade (to) {\n if (transport && to.name !== transport.name) {\n debug('\"%s\" works - aborting \"%s\"', to.name, transport.name);\n freezeTransport();\n }\n }\n\n // Remove all listeners on the transport and on self\n function cleanup () {\n transport.removeListener('open', onTransportOpen);\n transport.removeListener('error', onerror);\n transport.removeListener('close', onTransportClose);\n self.removeListener('close', onclose);\n self.removeListener('upgrading', onupgrade);\n }\n\n transport.once('open', onTransportOpen);\n transport.once('error', onerror);\n transport.once('close', onTransportClose);\n\n this.once('close', onclose);\n this.once('upgrading', onupgrade);\n\n transport.open();\n};\n\n/**\n * Called when connection is deemed open.\n *\n * @api public\n */\n\nSocket.prototype.onOpen = function () {\n debug('socket open');\n this.readyState = 'open';\n Socket.priorWebsocketSuccess = 'websocket' === this.transport.name;\n this.emit('open');\n this.flush();\n\n // we check for `readyState` in case an `open`\n // listener already closed the socket\n if ('open' === this.readyState && this.upgrade && this.transport.pause) {\n debug('starting upgrade probes');\n for (var i = 0, l = this.upgrades.length; i < l; i++) {\n this.probe(this.upgrades[i]);\n }\n }\n};\n\n/**\n * Handles a packet.\n *\n * @api private\n */\n\nSocket.prototype.onPacket = function (packet) {\n if ('opening' === this.readyState || 'open' === this.readyState ||\n 'closing' === this.readyState) {\n debug('socket receive: type \"%s\", data \"%s\"', packet.type, packet.data);\n\n this.emit('packet', packet);\n\n // Socket is live - any packet counts\n this.emit('heartbeat');\n\n switch (packet.type) {\n case 'open':\n this.onHandshake(JSON.parse(packet.data));\n break;\n\n case 'pong':\n this.setPing();\n this.emit('pong');\n break;\n\n case 'error':\n var err = new Error('server error');\n err.code = packet.data;\n this.onError(err);\n break;\n\n case 'message':\n this.emit('data', packet.data);\n this.emit('message', packet.data);\n break;\n }\n } else {\n debug('packet received with socket readyState \"%s\"', this.readyState);\n }\n};\n\n/**\n * Called upon handshake completion.\n *\n * @param {Object} handshake obj\n * @api private\n */\n\nSocket.prototype.onHandshake = function (data) {\n this.emit('handshake', data);\n this.id = data.sid;\n this.transport.query.sid = data.sid;\n this.upgrades = this.filterUpgrades(data.upgrades);\n this.pingInterval = data.pingInterval;\n this.pingTimeout = data.pingTimeout;\n this.onOpen();\n // In case open handler closes socket\n if ('closed' === this.readyState) return;\n this.setPing();\n\n // Prolong liveness of socket on heartbeat\n this.removeListener('heartbeat', this.onHeartbeat);\n this.on('heartbeat', this.onHeartbeat);\n};\n\n/**\n * Resets ping timeout.\n *\n * @api private\n */\n\nSocket.prototype.onHeartbeat = function (timeout) {\n clearTimeout(this.pingTimeoutTimer);\n var self = this;\n self.pingTimeoutTimer = setTimeout(function () {\n if ('closed' === self.readyState) return;\n self.onClose('ping timeout');\n }, timeout || (self.pingInterval + self.pingTimeout));\n};\n\n/**\n * Pings server every `this.pingInterval` and expects response\n * within `this.pingTimeout` or closes connection.\n *\n * @api private\n */\n\nSocket.prototype.setPing = function () {\n var self = this;\n clearTimeout(self.pingIntervalTimer);\n self.pingIntervalTimer = setTimeout(function () {\n debug('writing ping packet - expecting pong within %sms', self.pingTimeout);\n self.ping();\n self.onHeartbeat(self.pingTimeout);\n }, self.pingInterval);\n};\n\n/**\n* Sends a ping packet.\n*\n* @api private\n*/\n\nSocket.prototype.ping = function () {\n var self = this;\n this.sendPacket('ping', function () {\n self.emit('ping');\n });\n};\n\n/**\n * Called on `drain` event\n *\n * @api private\n */\n\nSocket.prototype.onDrain = function () {\n this.writeBuffer.splice(0, this.prevBufferLen);\n\n // setting prevBufferLen = 0 is very important\n // for example, when upgrading, upgrade packet is sent over,\n // and a nonzero prevBufferLen could cause problems on `drain`\n this.prevBufferLen = 0;\n\n if (0 === this.writeBuffer.length) {\n this.emit('drain');\n } else {\n this.flush();\n }\n};\n\n/**\n * Flush write buffers.\n *\n * @api private\n */\n\nSocket.prototype.flush = function () {\n if ('closed' !== this.readyState && this.transport.writable &&\n !this.upgrading && this.writeBuffer.length) {\n debug('flushing %d packets in socket', this.writeBuffer.length);\n this.transport.send(this.writeBuffer);\n // keep track of current length of writeBuffer\n // splice writeBuffer and callbackBuffer on `drain`\n this.prevBufferLen = this.writeBuffer.length;\n this.emit('flush');\n }\n};\n\n/**\n * Sends a message.\n *\n * @param {String} message.\n * @param {Function} callback function.\n * @param {Object} options.\n * @return {Socket} for chaining.\n * @api public\n */\n\nSocket.prototype.write =\nSocket.prototype.send = function (msg, options, fn) {\n this.sendPacket('message', msg, options, fn);\n return this;\n};\n\n/**\n * Sends a packet.\n *\n * @param {String} packet type.\n * @param {String} data.\n * @param {Object} options.\n * @param {Function} callback function.\n * @api private\n */\n\nSocket.prototype.sendPacket = function (type, data, options, fn) {\n if ('function' === typeof data) {\n fn = data;\n data = undefined;\n }\n\n if ('function' === typeof options) {\n fn = options;\n options = null;\n }\n\n if ('closing' === this.readyState || 'closed' === this.readyState) {\n return;\n }\n\n options = options || {};\n options.compress = false !== options.compress;\n\n var packet = {\n type: type,\n data: data,\n options: options\n };\n this.emit('packetCreate', packet);\n this.writeBuffer.push(packet);\n if (fn) this.once('flush', fn);\n this.flush();\n};\n\n/**\n * Closes the connection.\n *\n * @api private\n */\n\nSocket.prototype.close = function () {\n if ('opening' === this.readyState || 'open' === this.readyState) {\n this.readyState = 'closing';\n\n var self = this;\n\n if (this.writeBuffer.length) {\n this.once('drain', function () {\n if (this.upgrading) {\n waitForUpgrade();\n } else {\n close();\n }\n });\n } else if (this.upgrading) {\n waitForUpgrade();\n } else {\n close();\n }\n }\n\n function close () {\n self.onClose('forced close');\n debug('socket closing - telling transport to close');\n self.transport.close();\n }\n\n function cleanupAndClose () {\n self.removeListener('upgrade', cleanupAndClose);\n self.removeListener('upgradeError', cleanupAndClose);\n close();\n }\n\n function waitForUpgrade () {\n // wait for upgrade to finish since we can't send packets while pausing a transport\n self.once('upgrade', cleanupAndClose);\n self.once('upgradeError', cleanupAndClose);\n }\n\n return this;\n};\n\n/**\n * Called upon transport error\n *\n * @api private\n */\n\nSocket.prototype.onError = function (err) {\n debug('socket error %j', err);\n Socket.priorWebsocketSuccess = false;\n this.emit('error', err);\n this.onClose('transport error', err);\n};\n\n/**\n * Called upon transport close.\n *\n * @api private\n */\n\nSocket.prototype.onClose = function (reason, desc) {\n if ('opening' === this.readyState || 'open' === this.readyState || 'closing' === this.readyState) {\n debug('socket close with reason: \"%s\"', reason);\n var self = this;\n\n // clear timers\n clearTimeout(this.pingIntervalTimer);\n clearTimeout(this.pingTimeoutTimer);\n\n // stop event from firing again for transport\n this.transport.removeAllListeners('close');\n\n // ensure transport won't stay open\n this.transport.close();\n\n // ignore further transport communication\n this.transport.removeAllListeners();\n\n // set ready state\n this.readyState = 'closed';\n\n // clear session id\n this.id = null;\n\n // emit close event\n this.emit('close', reason, desc);\n\n // clean buffers after, so users can still\n // grab the buffers on `close` event\n self.writeBuffer = [];\n self.prevBufferLen = 0;\n }\n};\n\n/**\n * Filters upgrades, returning only those matching client transports.\n *\n * @param {Array} server upgrades\n * @api private\n *\n */\n\nSocket.prototype.filterUpgrades = function (upgrades) {\n var filteredUpgrades = [];\n for (var i = 0, j = upgrades.length; i < j; i++) {\n if (~index(this.transports, upgrades[i])) filteredUpgrades.push(upgrades[i]);\n }\n return filteredUpgrades;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/engine.io-client/lib/socket.js\n// module id = 43\n// module chunks = 0","\n/**\n * Module exports.\n *\n * Logic borrowed from Modernizr:\n *\n * - https://github.com/Modernizr/Modernizr/blob/master/feature-detects/cors.js\n */\n\ntry {\n module.exports = typeof XMLHttpRequest !== 'undefined' &&\n 'withCredentials' in new XMLHttpRequest();\n} catch (err) {\n // if XMLHttp support is disabled in IE then it will throw\n // when trying to create\n module.exports = false;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/has-cors/index.js\n// module id = 44\n// module chunks = 0","/**\n * Module requirements.\n */\n\nvar XMLHttpRequest = require('xmlhttprequest-ssl');\nvar Polling = require('./polling');\nvar Emitter = require('component-emitter');\nvar inherit = require('component-inherit');\nvar debug = require('debug')('engine.io-client:polling-xhr');\n\n/**\n * Module exports.\n */\n\nmodule.exports = XHR;\nmodule.exports.Request = Request;\n\n/**\n * Empty function\n */\n\nfunction empty () {}\n\n/**\n * XHR Polling constructor.\n *\n * @param {Object} opts\n * @api public\n */\n\nfunction XHR (opts) {\n Polling.call(this, opts);\n this.requestTimeout = opts.requestTimeout;\n this.extraHeaders = opts.extraHeaders;\n\n if (global.location) {\n var isSSL = 'https:' === location.protocol;\n var port = location.port;\n\n // some user agents have empty `location.port`\n if (!port) {\n port = isSSL ? 443 : 80;\n }\n\n this.xd = opts.hostname !== global.location.hostname ||\n port !== opts.port;\n this.xs = opts.secure !== isSSL;\n }\n}\n\n/**\n * Inherits from Polling.\n */\n\ninherit(XHR, Polling);\n\n/**\n * XHR supports binary\n */\n\nXHR.prototype.supportsBinary = true;\n\n/**\n * Creates a request.\n *\n * @param {String} method\n * @api private\n */\n\nXHR.prototype.request = function (opts) {\n opts = opts || {};\n opts.uri = this.uri();\n opts.xd = this.xd;\n opts.xs = this.xs;\n opts.agent = this.agent || false;\n opts.supportsBinary = this.supportsBinary;\n opts.enablesXDR = this.enablesXDR;\n\n // SSL options for Node.js client\n opts.pfx = this.pfx;\n opts.key = this.key;\n opts.passphrase = this.passphrase;\n opts.cert = this.cert;\n opts.ca = this.ca;\n opts.ciphers = this.ciphers;\n opts.rejectUnauthorized = this.rejectUnauthorized;\n opts.requestTimeout = this.requestTimeout;\n\n // other options for Node.js client\n opts.extraHeaders = this.extraHeaders;\n\n return new Request(opts);\n};\n\n/**\n * Sends data.\n *\n * @param {String} data to send.\n * @param {Function} called upon flush.\n * @api private\n */\n\nXHR.prototype.doWrite = function (data, fn) {\n var isBinary = typeof data !== 'string' && data !== undefined;\n var req = this.request({ method: 'POST', data: data, isBinary: isBinary });\n var self = this;\n req.on('success', fn);\n req.on('error', function (err) {\n self.onError('xhr post error', err);\n });\n this.sendXhr = req;\n};\n\n/**\n * Starts a poll cycle.\n *\n * @api private\n */\n\nXHR.prototype.doPoll = function () {\n debug('xhr poll');\n var req = this.request();\n var self = this;\n req.on('data', function (data) {\n self.onData(data);\n });\n req.on('error', function (err) {\n self.onError('xhr poll error', err);\n });\n this.pollXhr = req;\n};\n\n/**\n * Request constructor\n *\n * @param {Object} options\n * @api public\n */\n\nfunction Request (opts) {\n this.method = opts.method || 'GET';\n this.uri = opts.uri;\n this.xd = !!opts.xd;\n this.xs = !!opts.xs;\n this.async = false !== opts.async;\n this.data = undefined !== opts.data ? opts.data : null;\n this.agent = opts.agent;\n this.isBinary = opts.isBinary;\n this.supportsBinary = opts.supportsBinary;\n this.enablesXDR = opts.enablesXDR;\n this.requestTimeout = opts.requestTimeout;\n\n // SSL options for Node.js client\n this.pfx = opts.pfx;\n this.key = opts.key;\n this.passphrase = opts.passphrase;\n this.cert = opts.cert;\n this.ca = opts.ca;\n this.ciphers = opts.ciphers;\n this.rejectUnauthorized = opts.rejectUnauthorized;\n\n // other options for Node.js client\n this.extraHeaders = opts.extraHeaders;\n\n this.create();\n}\n\n/**\n * Mix in `Emitter`.\n */\n\nEmitter(Request.prototype);\n\n/**\n * Creates the XHR object and sends the request.\n *\n * @api private\n */\n\nRequest.prototype.create = function () {\n var opts = { agent: this.agent, xdomain: this.xd, xscheme: this.xs, enablesXDR: this.enablesXDR };\n\n // SSL options for Node.js client\n opts.pfx = this.pfx;\n opts.key = this.key;\n opts.passphrase = this.passphrase;\n opts.cert = this.cert;\n opts.ca = this.ca;\n opts.ciphers = this.ciphers;\n opts.rejectUnauthorized = this.rejectUnauthorized;\n\n var xhr = this.xhr = new XMLHttpRequest(opts);\n var self = this;\n\n try {\n debug('xhr open %s: %s', this.method, this.uri);\n xhr.open(this.method, this.uri, this.async);\n try {\n if (this.extraHeaders) {\n xhr.setDisableHeaderCheck && xhr.setDisableHeaderCheck(true);\n for (var i in this.extraHeaders) {\n if (this.extraHeaders.hasOwnProperty(i)) {\n xhr.setRequestHeader(i, this.extraHeaders[i]);\n }\n }\n }\n } catch (e) {}\n\n if ('POST' === this.method) {\n try {\n if (this.isBinary) {\n xhr.setRequestHeader('Content-type', 'application/octet-stream');\n } else {\n xhr.setRequestHeader('Content-type', 'text/plain;charset=UTF-8');\n }\n } catch (e) {}\n }\n\n try {\n xhr.setRequestHeader('Accept', '*/*');\n } catch (e) {}\n\n // ie6 check\n if ('withCredentials' in xhr) {\n xhr.withCredentials = true;\n }\n\n if (this.requestTimeout) {\n xhr.timeout = this.requestTimeout;\n }\n\n if (this.hasXDR()) {\n xhr.onload = function () {\n self.onLoad();\n };\n xhr.onerror = function () {\n self.onError(xhr.responseText);\n };\n } else {\n xhr.onreadystatechange = function () {\n if (xhr.readyState === 2) {\n var contentType;\n try {\n contentType = xhr.getResponseHeader('Content-Type');\n } catch (e) {}\n if (contentType === 'application/octet-stream') {\n xhr.responseType = 'arraybuffer';\n }\n }\n if (4 !== xhr.readyState) return;\n if (200 === xhr.status || 1223 === xhr.status) {\n self.onLoad();\n } else {\n // make sure the `error` event handler that's user-set\n // does not throw in the same tick and gets caught here\n setTimeout(function () {\n self.onError(xhr.status);\n }, 0);\n }\n };\n }\n\n debug('xhr data %s', this.data);\n xhr.send(this.data);\n } catch (e) {\n // Need to defer since .create() is called directly fhrom the constructor\n // and thus the 'error' event can only be only bound *after* this exception\n // occurs. Therefore, also, we cannot throw here at all.\n setTimeout(function () {\n self.onError(e);\n }, 0);\n return;\n }\n\n if (global.document) {\n this.index = Request.requestsCount++;\n Request.requests[this.index] = this;\n }\n};\n\n/**\n * Called upon successful response.\n *\n * @api private\n */\n\nRequest.prototype.onSuccess = function () {\n this.emit('success');\n this.cleanup();\n};\n\n/**\n * Called if we have data.\n *\n * @api private\n */\n\nRequest.prototype.onData = function (data) {\n this.emit('data', data);\n this.onSuccess();\n};\n\n/**\n * Called upon error.\n *\n * @api private\n */\n\nRequest.prototype.onError = function (err) {\n this.emit('error', err);\n this.cleanup(true);\n};\n\n/**\n * Cleans up house.\n *\n * @api private\n */\n\nRequest.prototype.cleanup = function (fromError) {\n if ('undefined' === typeof this.xhr || null === this.xhr) {\n return;\n }\n // xmlhttprequest\n if (this.hasXDR()) {\n this.xhr.onload = this.xhr.onerror = empty;\n } else {\n this.xhr.onreadystatechange = empty;\n }\n\n if (fromError) {\n try {\n this.xhr.abort();\n } catch (e) {}\n }\n\n if (global.document) {\n delete Request.requests[this.index];\n }\n\n this.xhr = null;\n};\n\n/**\n * Called upon load.\n *\n * @api private\n */\n\nRequest.prototype.onLoad = function () {\n var data;\n try {\n var contentType;\n try {\n contentType = this.xhr.getResponseHeader('Content-Type');\n } catch (e) {}\n if (contentType === 'application/octet-stream') {\n data = this.xhr.response || this.xhr.responseText;\n } else {\n data = this.xhr.responseText;\n }\n } catch (e) {\n this.onError(e);\n }\n if (null != data) {\n this.onData(data);\n }\n};\n\n/**\n * Check if it has XDomainRequest.\n *\n * @api private\n */\n\nRequest.prototype.hasXDR = function () {\n return 'undefined' !== typeof global.XDomainRequest && !this.xs && this.enablesXDR;\n};\n\n/**\n * Aborts the request.\n *\n * @api public\n */\n\nRequest.prototype.abort = function () {\n this.cleanup();\n};\n\n/**\n * Aborts pending requests when unloading the window. This is needed to prevent\n * memory leaks (e.g. when using IE) and to ensure that no spurious error is\n * emitted.\n */\n\nRequest.requestsCount = 0;\nRequest.requests = {};\n\nif (global.document) {\n if (global.attachEvent) {\n global.attachEvent('onunload', unloadHandler);\n } else if (global.addEventListener) {\n global.addEventListener('beforeunload', unloadHandler, false);\n }\n}\n\nfunction unloadHandler () {\n for (var i in Request.requests) {\n if (Request.requests.hasOwnProperty(i)) {\n Request.requests[i].abort();\n }\n }\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/engine.io-client/lib/transports/polling-xhr.js\n// module id = 45\n// module chunks = 0","\n/**\n * Gets the keys for an object.\n *\n * @return {Array} keys\n * @api private\n */\n\nmodule.exports = Object.keys || function keys (obj){\n var arr = [];\n var has = Object.prototype.hasOwnProperty;\n\n for (var i in obj) {\n if (has.call(obj, i)) {\n arr.push(i);\n }\n }\n return arr;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/engine.io-parser/lib/keys.js\n// module id = 46\n// module chunks = 0","/**\n * An abstraction for slicing an arraybuffer even when\n * ArrayBuffer.prototype.slice is not supported\n *\n * @api public\n */\n\nmodule.exports = function(arraybuffer, start, end) {\n var bytes = arraybuffer.byteLength;\n start = start || 0;\n end = end || bytes;\n\n if (arraybuffer.slice) { return arraybuffer.slice(start, end); }\n\n if (start < 0) { start += bytes; }\n if (end < 0) { end += bytes; }\n if (end > bytes) { end = bytes; }\n\n if (start >= bytes || start >= end || bytes === 0) {\n return new ArrayBuffer(0);\n }\n\n var abv = new Uint8Array(arraybuffer);\n var result = new Uint8Array(end - start);\n for (var i = start, ii = 0; i < end; i++, ii++) {\n result[ii] = abv[i];\n }\n return result.buffer;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/arraybuffer.slice/index.js\n// module id = 47\n// module chunks = 0","module.exports = after\n\nfunction after(count, callback, err_cb) {\n var bail = false\n err_cb = err_cb || noop\n proxy.count = count\n\n return (count === 0) ? callback() : proxy\n\n function proxy(err, result) {\n if (proxy.count <= 0) {\n throw new Error('after called too many times')\n }\n --proxy.count\n\n // after first error, rest are passed to err_cb\n if (err) {\n bail = true\n callback(err)\n // future error callbacks will go to error handler\n callback = err_cb\n } else if (proxy.count === 0 && !bail) {\n callback(null, result)\n }\n }\n}\n\nfunction noop() {}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/after/index.js\n// module id = 48\n// module chunks = 0","/*! https://mths.be/utf8js v2.1.2 by @mathias */\n;(function(root) {\n\n\t// Detect free variables `exports`\n\tvar freeExports = typeof exports == 'object' && exports;\n\n\t// Detect free variable `module`\n\tvar freeModule = typeof module == 'object' && module &&\n\t\tmodule.exports == freeExports && module;\n\n\t// Detect free variable `global`, from Node.js or Browserified code,\n\t// and use it as `root`\n\tvar freeGlobal = typeof global == 'object' && global;\n\tif (freeGlobal.global === freeGlobal || freeGlobal.window === freeGlobal) {\n\t\troot = freeGlobal;\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\tvar stringFromCharCode = String.fromCharCode;\n\n\t// Taken from https://mths.be/punycode\n\tfunction ucs2decode(string) {\n\t\tvar output = [];\n\t\tvar counter = 0;\n\t\tvar length = string.length;\n\t\tvar value;\n\t\tvar extra;\n\t\twhile (counter < length) {\n\t\t\tvalue = string.charCodeAt(counter++);\n\t\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t\t// high surrogate, and there is a next character\n\t\t\t\textra = string.charCodeAt(counter++);\n\t\t\t\tif ((extra & 0xFC00) == 0xDC00) { // low surrogate\n\t\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t\t} else {\n\t\t\t\t\t// unmatched surrogate; only append this code unit, in case the next\n\t\t\t\t\t// code unit is the high surrogate of a surrogate pair\n\t\t\t\t\toutput.push(value);\n\t\t\t\t\tcounter--;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\toutput.push(value);\n\t\t\t}\n\t\t}\n\t\treturn output;\n\t}\n\n\t// Taken from https://mths.be/punycode\n\tfunction ucs2encode(array) {\n\t\tvar length = array.length;\n\t\tvar index = -1;\n\t\tvar value;\n\t\tvar output = '';\n\t\twhile (++index < length) {\n\t\t\tvalue = array[index];\n\t\t\tif (value > 0xFFFF) {\n\t\t\t\tvalue -= 0x10000;\n\t\t\t\toutput += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800);\n\t\t\t\tvalue = 0xDC00 | value & 0x3FF;\n\t\t\t}\n\t\t\toutput += stringFromCharCode(value);\n\t\t}\n\t\treturn output;\n\t}\n\n\tfunction checkScalarValue(codePoint, strict) {\n\t\tif (codePoint >= 0xD800 && codePoint <= 0xDFFF) {\n\t\t\tif (strict) {\n\t\t\t\tthrow Error(\n\t\t\t\t\t'Lone surrogate U+' + codePoint.toString(16).toUpperCase() +\n\t\t\t\t\t' is not a scalar value'\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t}\n\t/*--------------------------------------------------------------------------*/\n\n\tfunction createByte(codePoint, shift) {\n\t\treturn stringFromCharCode(((codePoint >> shift) & 0x3F) | 0x80);\n\t}\n\n\tfunction encodeCodePoint(codePoint, strict) {\n\t\tif ((codePoint & 0xFFFFFF80) == 0) { // 1-byte sequence\n\t\t\treturn stringFromCharCode(codePoint);\n\t\t}\n\t\tvar symbol = '';\n\t\tif ((codePoint & 0xFFFFF800) == 0) { // 2-byte sequence\n\t\t\tsymbol = stringFromCharCode(((codePoint >> 6) & 0x1F) | 0xC0);\n\t\t}\n\t\telse if ((codePoint & 0xFFFF0000) == 0) { // 3-byte sequence\n\t\t\tif (!checkScalarValue(codePoint, strict)) {\n\t\t\t\tcodePoint = 0xFFFD;\n\t\t\t}\n\t\t\tsymbol = stringFromCharCode(((codePoint >> 12) & 0x0F) | 0xE0);\n\t\t\tsymbol += createByte(codePoint, 6);\n\t\t}\n\t\telse if ((codePoint & 0xFFE00000) == 0) { // 4-byte sequence\n\t\t\tsymbol = stringFromCharCode(((codePoint >> 18) & 0x07) | 0xF0);\n\t\t\tsymbol += createByte(codePoint, 12);\n\t\t\tsymbol += createByte(codePoint, 6);\n\t\t}\n\t\tsymbol += stringFromCharCode((codePoint & 0x3F) | 0x80);\n\t\treturn symbol;\n\t}\n\n\tfunction utf8encode(string, opts) {\n\t\topts = opts || {};\n\t\tvar strict = false !== opts.strict;\n\n\t\tvar codePoints = ucs2decode(string);\n\t\tvar length = codePoints.length;\n\t\tvar index = -1;\n\t\tvar codePoint;\n\t\tvar byteString = '';\n\t\twhile (++index < length) {\n\t\t\tcodePoint = codePoints[index];\n\t\t\tbyteString += encodeCodePoint(codePoint, strict);\n\t\t}\n\t\treturn byteString;\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\tfunction readContinuationByte() {\n\t\tif (byteIndex >= byteCount) {\n\t\t\tthrow Error('Invalid byte index');\n\t\t}\n\n\t\tvar continuationByte = byteArray[byteIndex] & 0xFF;\n\t\tbyteIndex++;\n\n\t\tif ((continuationByte & 0xC0) == 0x80) {\n\t\t\treturn continuationByte & 0x3F;\n\t\t}\n\n\t\t// If we end up here, it’s not a continuation byte\n\t\tthrow Error('Invalid continuation byte');\n\t}\n\n\tfunction decodeSymbol(strict) {\n\t\tvar byte1;\n\t\tvar byte2;\n\t\tvar byte3;\n\t\tvar byte4;\n\t\tvar codePoint;\n\n\t\tif (byteIndex > byteCount) {\n\t\t\tthrow Error('Invalid byte index');\n\t\t}\n\n\t\tif (byteIndex == byteCount) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Read first byte\n\t\tbyte1 = byteArray[byteIndex] & 0xFF;\n\t\tbyteIndex++;\n\n\t\t// 1-byte sequence (no continuation bytes)\n\t\tif ((byte1 & 0x80) == 0) {\n\t\t\treturn byte1;\n\t\t}\n\n\t\t// 2-byte sequence\n\t\tif ((byte1 & 0xE0) == 0xC0) {\n\t\t\tbyte2 = readContinuationByte();\n\t\t\tcodePoint = ((byte1 & 0x1F) << 6) | byte2;\n\t\t\tif (codePoint >= 0x80) {\n\t\t\t\treturn codePoint;\n\t\t\t} else {\n\t\t\t\tthrow Error('Invalid continuation byte');\n\t\t\t}\n\t\t}\n\n\t\t// 3-byte sequence (may include unpaired surrogates)\n\t\tif ((byte1 & 0xF0) == 0xE0) {\n\t\t\tbyte2 = readContinuationByte();\n\t\t\tbyte3 = readContinuationByte();\n\t\t\tcodePoint = ((byte1 & 0x0F) << 12) | (byte2 << 6) | byte3;\n\t\t\tif (codePoint >= 0x0800) {\n\t\t\t\treturn checkScalarValue(codePoint, strict) ? codePoint : 0xFFFD;\n\t\t\t} else {\n\t\t\t\tthrow Error('Invalid continuation byte');\n\t\t\t}\n\t\t}\n\n\t\t// 4-byte sequence\n\t\tif ((byte1 & 0xF8) == 0xF0) {\n\t\t\tbyte2 = readContinuationByte();\n\t\t\tbyte3 = readContinuationByte();\n\t\t\tbyte4 = readContinuationByte();\n\t\t\tcodePoint = ((byte1 & 0x07) << 0x12) | (byte2 << 0x0C) |\n\t\t\t\t(byte3 << 0x06) | byte4;\n\t\t\tif (codePoint >= 0x010000 && codePoint <= 0x10FFFF) {\n\t\t\t\treturn codePoint;\n\t\t\t}\n\t\t}\n\n\t\tthrow Error('Invalid UTF-8 detected');\n\t}\n\n\tvar byteArray;\n\tvar byteCount;\n\tvar byteIndex;\n\tfunction utf8decode(byteString, opts) {\n\t\topts = opts || {};\n\t\tvar strict = false !== opts.strict;\n\n\t\tbyteArray = ucs2decode(byteString);\n\t\tbyteCount = byteArray.length;\n\t\tbyteIndex = 0;\n\t\tvar codePoints = [];\n\t\tvar tmp;\n\t\twhile ((tmp = decodeSymbol(strict)) !== false) {\n\t\t\tcodePoints.push(tmp);\n\t\t}\n\t\treturn ucs2encode(codePoints);\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\tvar utf8 = {\n\t\t'version': '2.1.2',\n\t\t'encode': utf8encode,\n\t\t'decode': utf8decode\n\t};\n\n\t// Some AMD build optimizers, like r.js, check for specific condition patterns\n\t// like the following:\n\tif (\n\t\ttypeof define == 'function' &&\n\t\ttypeof define.amd == 'object' &&\n\t\tdefine.amd\n\t) {\n\t\tdefine(function() {\n\t\t\treturn utf8;\n\t\t});\n\t}\telse if (freeExports && !freeExports.nodeType) {\n\t\tif (freeModule) { // in Node.js or RingoJS v0.8.0+\n\t\t\tfreeModule.exports = utf8;\n\t\t} else { // in Narwhal or RingoJS v0.7.0-\n\t\t\tvar object = {};\n\t\t\tvar hasOwnProperty = object.hasOwnProperty;\n\t\t\tfor (var key in utf8) {\n\t\t\t\thasOwnProperty.call(utf8, key) && (freeExports[key] = utf8[key]);\n\t\t\t}\n\t\t}\n\t} else { // in Rhino or a web browser\n\t\troot.utf8 = utf8;\n\t}\n\n}(this));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/engine.io-parser/lib/utf8.js\n// module id = 49\n// module chunks = 0","module.exports = function(module) {\r\n\tif(!module.webpackPolyfill) {\r\n\t\tmodule.deprecate = function() {};\r\n\t\tmodule.paths = [];\r\n\t\t// module.parent = undefined by default\r\n\t\tif(!module.children) module.children = [];\r\n\t\tObject.defineProperty(module, \"loaded\", {\r\n\t\t\tenumerable: true,\r\n\t\t\tget: function() {\r\n\t\t\t\treturn module.l;\r\n\t\t\t}\r\n\t\t});\r\n\t\tObject.defineProperty(module, \"id\", {\r\n\t\t\tenumerable: true,\r\n\t\t\tget: function() {\r\n\t\t\t\treturn module.i;\r\n\t\t\t}\r\n\t\t});\r\n\t\tmodule.webpackPolyfill = 1;\r\n\t}\r\n\treturn module;\r\n};\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// (webpack)/buildin/module.js\n// module id = 50\n// module chunks = 0","/*\n * base64-arraybuffer\n * https://github.com/niklasvh/base64-arraybuffer\n *\n * Copyright (c) 2012 Niklas von Hertzen\n * Licensed under the MIT license.\n */\n(function(){\n \"use strict\";\n\n var chars = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\n\n // Use a lookup table to find the index.\n var lookup = new Uint8Array(256);\n for (var i = 0; i < chars.length; i++) {\n lookup[chars.charCodeAt(i)] = i;\n }\n\n exports.encode = function(arraybuffer) {\n var bytes = new Uint8Array(arraybuffer),\n i, len = bytes.length, base64 = \"\";\n\n for (i = 0; i < len; i+=3) {\n base64 += chars[bytes[i] >> 2];\n base64 += chars[((bytes[i] & 3) << 4) | (bytes[i + 1] >> 4)];\n base64 += chars[((bytes[i + 1] & 15) << 2) | (bytes[i + 2] >> 6)];\n base64 += chars[bytes[i + 2] & 63];\n }\n\n if ((len % 3) === 2) {\n base64 = base64.substring(0, base64.length - 1) + \"=\";\n } else if (len % 3 === 1) {\n base64 = base64.substring(0, base64.length - 2) + \"==\";\n }\n\n return base64;\n };\n\n exports.decode = function(base64) {\n var bufferLength = base64.length * 0.75,\n len = base64.length, i, p = 0,\n encoded1, encoded2, encoded3, encoded4;\n\n if (base64[base64.length - 1] === \"=\") {\n bufferLength--;\n if (base64[base64.length - 2] === \"=\") {\n bufferLength--;\n }\n }\n\n var arraybuffer = new ArrayBuffer(bufferLength),\n bytes = new Uint8Array(arraybuffer);\n\n for (i = 0; i < len; i+=4) {\n encoded1 = lookup[base64.charCodeAt(i)];\n encoded2 = lookup[base64.charCodeAt(i+1)];\n encoded3 = lookup[base64.charCodeAt(i+2)];\n encoded4 = lookup[base64.charCodeAt(i+3)];\n\n bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n }\n\n return arraybuffer;\n };\n})();\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/base64-arraybuffer/lib/base64-arraybuffer.js\n// module id = 51\n// module chunks = 0","/**\n * Create a blob builder even when vendor prefixes exist\n */\n\nvar BlobBuilder = global.BlobBuilder\n || global.WebKitBlobBuilder\n || global.MSBlobBuilder\n || global.MozBlobBuilder;\n\n/**\n * Check if Blob constructor is supported\n */\n\nvar blobSupported = (function() {\n try {\n var a = new Blob(['hi']);\n return a.size === 2;\n } catch(e) {\n return false;\n }\n})();\n\n/**\n * Check if Blob constructor supports ArrayBufferViews\n * Fails in Safari 6, so we need to map to ArrayBuffers there.\n */\n\nvar blobSupportsArrayBufferView = blobSupported && (function() {\n try {\n var b = new Blob([new Uint8Array([1,2])]);\n return b.size === 2;\n } catch(e) {\n return false;\n }\n})();\n\n/**\n * Check if BlobBuilder is supported\n */\n\nvar blobBuilderSupported = BlobBuilder\n && BlobBuilder.prototype.append\n && BlobBuilder.prototype.getBlob;\n\n/**\n * Helper function that maps ArrayBufferViews to ArrayBuffers\n * Used by BlobBuilder constructor and old browsers that didn't\n * support it in the Blob constructor.\n */\n\nfunction mapArrayBufferViews(ary) {\n for (var i = 0; i < ary.length; i++) {\n var chunk = ary[i];\n if (chunk.buffer instanceof ArrayBuffer) {\n var buf = chunk.buffer;\n\n // if this is a subarray, make a copy so we only\n // include the subarray region from the underlying buffer\n if (chunk.byteLength !== buf.byteLength) {\n var copy = new Uint8Array(chunk.byteLength);\n copy.set(new Uint8Array(buf, chunk.byteOffset, chunk.byteLength));\n buf = copy.buffer;\n }\n\n ary[i] = buf;\n }\n }\n}\n\nfunction BlobBuilderConstructor(ary, options) {\n options = options || {};\n\n var bb = new BlobBuilder();\n mapArrayBufferViews(ary);\n\n for (var i = 0; i < ary.length; i++) {\n bb.append(ary[i]);\n }\n\n return (options.type) ? bb.getBlob(options.type) : bb.getBlob();\n};\n\nfunction BlobConstructor(ary, options) {\n mapArrayBufferViews(ary);\n return new Blob(ary, options || {});\n};\n\nmodule.exports = (function() {\n if (blobSupported) {\n return blobSupportsArrayBufferView ? global.Blob : BlobConstructor;\n } else if (blobBuilderSupported) {\n return BlobBuilderConstructor;\n } else {\n return undefined;\n }\n})();\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/blob/index.js\n// module id = 52\n// module chunks = 0","\n/**\n * Module requirements.\n */\n\nvar Polling = require('./polling');\nvar inherit = require('component-inherit');\n\n/**\n * Module exports.\n */\n\nmodule.exports = JSONPPolling;\n\n/**\n * Cached regular expressions.\n */\n\nvar rNewline = /\\n/g;\nvar rEscapedNewline = /\\\\n/g;\n\n/**\n * Global JSONP callbacks.\n */\n\nvar callbacks;\n\n/**\n * Noop.\n */\n\nfunction empty () { }\n\n/**\n * JSONP Polling constructor.\n *\n * @param {Object} opts.\n * @api public\n */\n\nfunction JSONPPolling (opts) {\n Polling.call(this, opts);\n\n this.query = this.query || {};\n\n // define global callbacks array if not present\n // we do this here (lazily) to avoid unneeded global pollution\n if (!callbacks) {\n // we need to consider multiple engines in the same page\n if (!global.___eio) global.___eio = [];\n callbacks = global.___eio;\n }\n\n // callback identifier\n this.index = callbacks.length;\n\n // add callback to jsonp global\n var self = this;\n callbacks.push(function (msg) {\n self.onData(msg);\n });\n\n // append to query string\n this.query.j = this.index;\n\n // prevent spurious errors from being emitted when the window is unloaded\n if (global.document && global.addEventListener) {\n global.addEventListener('beforeunload', function () {\n if (self.script) self.script.onerror = empty;\n }, false);\n }\n}\n\n/**\n * Inherits from Polling.\n */\n\ninherit(JSONPPolling, Polling);\n\n/*\n * JSONP only supports binary as base64 encoded strings\n */\n\nJSONPPolling.prototype.supportsBinary = false;\n\n/**\n * Closes the socket.\n *\n * @api private\n */\n\nJSONPPolling.prototype.doClose = function () {\n if (this.script) {\n this.script.parentNode.removeChild(this.script);\n this.script = null;\n }\n\n if (this.form) {\n this.form.parentNode.removeChild(this.form);\n this.form = null;\n this.iframe = null;\n }\n\n Polling.prototype.doClose.call(this);\n};\n\n/**\n * Starts a poll cycle.\n *\n * @api private\n */\n\nJSONPPolling.prototype.doPoll = function () {\n var self = this;\n var script = document.createElement('script');\n\n if (this.script) {\n this.script.parentNode.removeChild(this.script);\n this.script = null;\n }\n\n script.async = true;\n script.src = this.uri();\n script.onerror = function (e) {\n self.onError('jsonp poll error', e);\n };\n\n var insertAt = document.getElementsByTagName('script')[0];\n if (insertAt) {\n insertAt.parentNode.insertBefore(script, insertAt);\n } else {\n (document.head || document.body).appendChild(script);\n }\n this.script = script;\n\n var isUAgecko = 'undefined' !== typeof navigator && /gecko/i.test(navigator.userAgent);\n\n if (isUAgecko) {\n setTimeout(function () {\n var iframe = document.createElement('iframe');\n document.body.appendChild(iframe);\n document.body.removeChild(iframe);\n }, 100);\n }\n};\n\n/**\n * Writes with a hidden iframe.\n *\n * @param {String} data to send\n * @param {Function} called upon flush.\n * @api private\n */\n\nJSONPPolling.prototype.doWrite = function (data, fn) {\n var self = this;\n\n if (!this.form) {\n var form = document.createElement('form');\n var area = document.createElement('textarea');\n var id = this.iframeId = 'eio_iframe_' + this.index;\n var iframe;\n\n form.className = 'socketio';\n form.style.position = 'absolute';\n form.style.top = '-1000px';\n form.style.left = '-1000px';\n form.target = id;\n form.method = 'POST';\n form.setAttribute('accept-charset', 'utf-8');\n area.name = 'd';\n form.appendChild(area);\n document.body.appendChild(form);\n\n this.form = form;\n this.area = area;\n }\n\n this.form.action = this.uri();\n\n function complete () {\n initIframe();\n fn();\n }\n\n function initIframe () {\n if (self.iframe) {\n try {\n self.form.removeChild(self.iframe);\n } catch (e) {\n self.onError('jsonp polling iframe removal error', e);\n }\n }\n\n try {\n // ie6 dynamic iframes with target=\"\" support (thanks Chris Lambacher)\n var html = '<iframe src=\"javascript:0\" name=\"' + self.iframeId + '\">';\n iframe = document.createElement(html);\n } catch (e) {\n iframe = document.createElement('iframe');\n iframe.name = self.iframeId;\n iframe.src = 'javascript:0';\n }\n\n iframe.id = self.iframeId;\n\n self.form.appendChild(iframe);\n self.iframe = iframe;\n }\n\n initIframe();\n\n // escape \\n to prevent it from being converted into \\r\\n by some UAs\n // double escaping is required for escaped new lines because unescaping of new lines can be done safely on server-side\n data = data.replace(rEscapedNewline, '\\\\\\n');\n this.area.value = data.replace(rNewline, '\\\\n');\n\n try {\n this.form.submit();\n } catch (e) {}\n\n if (this.iframe.attachEvent) {\n this.iframe.onreadystatechange = function () {\n if (self.iframe.readyState === 'complete') {\n complete();\n }\n };\n } else {\n this.iframe.onload = complete;\n }\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/engine.io-client/lib/transports/polling-jsonp.js\n// module id = 53\n// module chunks = 0","/**\n * Module dependencies.\n */\n\nvar Transport = require('../transport');\nvar parser = require('engine.io-parser');\nvar parseqs = require('parseqs');\nvar inherit = require('component-inherit');\nvar yeast = require('yeast');\nvar debug = require('debug')('engine.io-client:websocket');\nvar BrowserWebSocket = global.WebSocket || global.MozWebSocket;\nvar NodeWebSocket;\nif (typeof window === 'undefined') {\n try {\n NodeWebSocket = require('ws');\n } catch (e) { }\n}\n\n/**\n * Get either the `WebSocket` or `MozWebSocket` globals\n * in the browser or try to resolve WebSocket-compatible\n * interface exposed by `ws` for Node-like environment.\n */\n\nvar WebSocket = BrowserWebSocket;\nif (!WebSocket && typeof window === 'undefined') {\n WebSocket = NodeWebSocket;\n}\n\n/**\n * Module exports.\n */\n\nmodule.exports = WS;\n\n/**\n * WebSocket transport constructor.\n *\n * @api {Object} connection options\n * @api public\n */\n\nfunction WS (opts) {\n var forceBase64 = (opts && opts.forceBase64);\n if (forceBase64) {\n this.supportsBinary = false;\n }\n this.perMessageDeflate = opts.perMessageDeflate;\n this.usingBrowserWebSocket = BrowserWebSocket && !opts.forceNode;\n this.protocols = opts.protocols;\n if (!this.usingBrowserWebSocket) {\n WebSocket = NodeWebSocket;\n }\n Transport.call(this, opts);\n}\n\n/**\n * Inherits from Transport.\n */\n\ninherit(WS, Transport);\n\n/**\n * Transport name.\n *\n * @api public\n */\n\nWS.prototype.name = 'websocket';\n\n/*\n * WebSockets support binary\n */\n\nWS.prototype.supportsBinary = true;\n\n/**\n * Opens socket.\n *\n * @api private\n */\n\nWS.prototype.doOpen = function () {\n if (!this.check()) {\n // let probe timeout\n return;\n }\n\n var uri = this.uri();\n var protocols = this.protocols;\n var opts = {\n agent: this.agent,\n perMessageDeflate: this.perMessageDeflate\n };\n\n // SSL options for Node.js client\n opts.pfx = this.pfx;\n opts.key = this.key;\n opts.passphrase = this.passphrase;\n opts.cert = this.cert;\n opts.ca = this.ca;\n opts.ciphers = this.ciphers;\n opts.rejectUnauthorized = this.rejectUnauthorized;\n if (this.extraHeaders) {\n opts.headers = this.extraHeaders;\n }\n if (this.localAddress) {\n opts.localAddress = this.localAddress;\n }\n\n try {\n this.ws = this.usingBrowserWebSocket ? (protocols ? new WebSocket(uri, protocols) : new WebSocket(uri)) : new WebSocket(uri, protocols, opts);\n } catch (err) {\n return this.emit('error', err);\n }\n\n if (this.ws.binaryType === undefined) {\n this.supportsBinary = false;\n }\n\n if (this.ws.supports && this.ws.supports.binary) {\n this.supportsBinary = true;\n this.ws.binaryType = 'nodebuffer';\n } else {\n this.ws.binaryType = 'arraybuffer';\n }\n\n this.addEventListeners();\n};\n\n/**\n * Adds event listeners to the socket\n *\n * @api private\n */\n\nWS.prototype.addEventListeners = function () {\n var self = this;\n\n this.ws.onopen = function () {\n self.onOpen();\n };\n this.ws.onclose = function () {\n self.onClose();\n };\n this.ws.onmessage = function (ev) {\n self.onData(ev.data);\n };\n this.ws.onerror = function (e) {\n self.onError('websocket error', e);\n };\n};\n\n/**\n * Writes data to socket.\n *\n * @param {Array} array of packets.\n * @api private\n */\n\nWS.prototype.write = function (packets) {\n var self = this;\n this.writable = false;\n\n // encodePacket efficient as it uses WS framing\n // no need for encodePayload\n var total = packets.length;\n for (var i = 0, l = total; i < l; i++) {\n (function (packet) {\n parser.encodePacket(packet, self.supportsBinary, function (data) {\n if (!self.usingBrowserWebSocket) {\n // always create a new object (GH-437)\n var opts = {};\n if (packet.options) {\n opts.compress = packet.options.compress;\n }\n\n if (self.perMessageDeflate) {\n var len = 'string' === typeof data ? global.Buffer.byteLength(data) : data.length;\n if (len < self.perMessageDeflate.threshold) {\n opts.compress = false;\n }\n }\n }\n\n // Sometimes the websocket has already been closed but the browser didn't\n // have a chance of informing us about it yet, in that case send will\n // throw an error\n try {\n if (self.usingBrowserWebSocket) {\n // TypeError is thrown when passing the second argument on Safari\n self.ws.send(data);\n } else {\n self.ws.send(data, opts);\n }\n } catch (e) {\n debug('websocket closed before onclose event');\n }\n\n --total || done();\n });\n })(packets[i]);\n }\n\n function done () {\n self.emit('flush');\n\n // fake drain\n // defer to next tick to allow Socket to clear writeBuffer\n setTimeout(function () {\n self.writable = true;\n self.emit('drain');\n }, 0);\n }\n};\n\n/**\n * Called upon close\n *\n * @api private\n */\n\nWS.prototype.onClose = function () {\n Transport.prototype.onClose.call(this);\n};\n\n/**\n * Closes socket.\n *\n * @api private\n */\n\nWS.prototype.doClose = function () {\n if (typeof this.ws !== 'undefined') {\n this.ws.close();\n }\n};\n\n/**\n * Generates uri for connection.\n *\n * @api private\n */\n\nWS.prototype.uri = function () {\n var query = this.query || {};\n var schema = this.secure ? 'wss' : 'ws';\n var port = '';\n\n // avoid port if default for schema\n if (this.port && (('wss' === schema && Number(this.port) !== 443) ||\n ('ws' === schema && Number(this.port) !== 80))) {\n port = ':' + this.port;\n }\n\n // append timestamp to URI\n if (this.timestampRequests) {\n query[this.timestampParam] = yeast();\n }\n\n // communicate binary support capabilities\n if (!this.supportsBinary) {\n query.b64 = 1;\n }\n\n query = parseqs.encode(query);\n\n // prepend ? to query\n if (query.length) {\n query = '?' + query;\n }\n\n var ipv6 = this.hostname.indexOf(':') !== -1;\n return schema + '://' + (ipv6 ? '[' + this.hostname + ']' : this.hostname) + port + this.path + query;\n};\n\n/**\n * Feature detection for WebSocket.\n *\n * @return {Boolean} whether this transport is available.\n * @api public\n */\n\nWS.prototype.check = function () {\n return !!WebSocket && !('__initialize' in WebSocket && this.name === WS.prototype.name);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/engine.io-client/lib/transports/websocket.js\n// module id = 54\n// module chunks = 0","module.exports = toArray\n\nfunction toArray(list, index) {\n var array = []\n\n index = index || 0\n\n for (var i = index || 0; i < list.length; i++) {\n array[i - index] = list[i]\n }\n\n return array\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/to-array/index.js\n// module id = 56\n// module chunks = 0","\n/**\n * Expose `Backoff`.\n */\n\nmodule.exports = Backoff;\n\n/**\n * Initialize backoff timer with `opts`.\n *\n * - `min` initial timeout in milliseconds [100]\n * - `max` max timeout [10000]\n * - `jitter` [0]\n * - `factor` [2]\n *\n * @param {Object} opts\n * @api public\n */\n\nfunction Backoff(opts) {\n opts = opts || {};\n this.ms = opts.min || 100;\n this.max = opts.max || 10000;\n this.factor = opts.factor || 2;\n this.jitter = opts.jitter > 0 && opts.jitter <= 1 ? opts.jitter : 0;\n this.attempts = 0;\n}\n\n/**\n * Return the backoff duration.\n *\n * @return {Number}\n * @api public\n */\n\nBackoff.prototype.duration = function(){\n var ms = this.ms * Math.pow(this.factor, this.attempts++);\n if (this.jitter) {\n var rand = Math.random();\n var deviation = Math.floor(rand * this.jitter * ms);\n ms = (Math.floor(rand * 10) & 1) == 0 ? ms - deviation : ms + deviation;\n }\n return Math.min(ms, this.max) | 0;\n};\n\n/**\n * Reset the number of attempts.\n *\n * @api public\n */\n\nBackoff.prototype.reset = function(){\n this.attempts = 0;\n};\n\n/**\n * Set the minimum duration\n *\n * @api public\n */\n\nBackoff.prototype.setMin = function(min){\n this.ms = min;\n};\n\n/**\n * Set the maximum duration\n *\n * @api public\n */\n\nBackoff.prototype.setMax = function(max){\n this.max = max;\n};\n\n/**\n * Set the jitter\n *\n * @api public\n */\n\nBackoff.prototype.setJitter = function(jitter){\n this.jitter = jitter;\n};\n\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/backo2/index.js\n// module id = 57\n// module chunks = 0","if (!(\"indexOf\" in Array.prototype)) {\n Array.prototype.indexOf = function(find, i) {\n if (i === undefined) {\n i = 0;\n }\n if (i < 0) {\n i += this.length;\n }\n if (i < 0) {\n i = 0;\n }\n for (var n = this.length; i < n; i += 1) {\n if (i in this && this[i] === find) {\n return i;\n }\n }\n return -1;\n };\n}\n\n// Production steps of ECMA-262, Edition 5, 15.4.4.19\n// Reference: http://es5.github.io/#x15.4.4.19\nif (!Array.prototype.map) {\n Array.prototype.map = function(callback, thisArg) {\n var T, A, k;\n\n if (this == null) {\n throw new TypeError(\" this is null or not defined\");\n }\n\n // 1. Let O be the result of calling ToObject passing the |this|\n // value as the argument.\n var O = Object(this);\n\n // 2. Let lenValue be the result of calling the Get internal\n // method of O with the argument \"length\".\n // 3. Let len be ToUint32(lenValue).\n var len = O.length >>> 0;\n\n // 4. If IsCallable(callback) is false, throw a TypeError exception.\n // See: http://es5.github.com/#x9.11\n if (typeof callback !== \"function\") {\n throw new TypeError(callback + \" is not a function\");\n }\n\n // 5. If thisArg was supplied, let T be thisArg; else let T be undefined.\n if (arguments.length > 1) {\n T = thisArg;\n }\n\n // 6. Let A be a new array created as if by the expression new Array(len)\n // where Array is the standard built-in constructor with that name and\n // len is the value of len.\n A = new Array(len);\n\n // 7. Let k be 0\n k = 0;\n\n // 8. Repeat, while k < len\n while (k < len) {\n var kValue, mappedValue;\n\n // a. Let Pk be ToString(k).\n // This is implicit for LHS operands of the in operator\n // b. Let kPresent be the result of calling the HasProperty internal\n // method of O with argument Pk.\n // This step can be combined with c\n // c. If kPresent is true, then\n if (k in O) {\n // i. Let kValue be the result of calling the Get internal\n // method of O with argument Pk.\n kValue = O[k];\n\n // ii. Let mappedValue be the result of calling the Call internal\n // method of callback with T as the this value and argument\n // list containing kValue, k, and O.\n mappedValue = callback.call(T, kValue, k, O);\n\n // iii. Call the DefineOwnProperty internal method of A with arguments\n // Pk, Property Descriptor\n // { Value: mappedValue,\n // Writable: true,\n // Enumerable: true,\n // Configurable: true },\n // and false.\n\n // In browsers that support Object.defineProperty, use the following:\n // Object.defineProperty(A, k, {\n // value: mappedValue,\n // writable: true,\n // enumerable: true,\n // configurable: true\n // });\n\n // For best browser support, use the following:\n A[k] = mappedValue;\n }\n // d. Increase k by 1.\n k++;\n }\n\n // 9. return A\n return A;\n };\n}\n\nif (!Array.prototype.filter) {\n Array.prototype.filter = function(fun /*, thisArg*/) {\n \"use strict\";\n\n if (this === void 0 || this === null) {\n throw new TypeError();\n }\n\n var t = Object(this);\n var len = t.length >>> 0;\n if (typeof fun !== \"function\") {\n throw new TypeError();\n }\n\n var res = [];\n var thisArg = arguments.length >= 2 ? arguments[1] : void 0;\n for (var i = 0; i < len; i++) {\n if (i in t) {\n var val = t[i];\n\n // NOTE: Technically this should Object.defineProperty at\n // the next index, as push can be affected by\n // properties on Object.prototype and Array.prototype.\n // But that method's new, and collisions should be\n // rare, so use the more-compatible alternative.\n if (fun.call(thisArg, val, i, t)) {\n res.push(val);\n }\n }\n }\n\n return res;\n };\n}\n\n\n\n// WEBPACK FOOTER //\n// ./lib/client-shims.js","import { Reloader } from \"../vendor/Reloader\";\nimport { Timer } from \"../vendor/Timer\";\n\nconst events = require(\"./events\");\nconst utils = require(\"./browser.utils\");\nconst emitter = require(\"./emitter\");\nconst sync = exports;\nconst nanlogger = require(\"nanologger\");\nconst log = nanlogger(\"Browsersync\", { colors: { magenta: \"#0F2634\" } });\nconst reloader = new Reloader(window, log, Timer);\n\nconst options = {\n tagNames: {\n css: \"link\",\n jpg: \"img\",\n jpeg: \"img\",\n png: \"img\",\n svg: \"img\",\n gif: \"img\",\n js: \"script\"\n },\n attrs: {\n link: \"href\",\n img: \"src\",\n script: \"src\"\n },\n blacklist: [\n // never allow .map files through\n function(incoming) {\n return incoming.ext === \"map\";\n }\n ]\n};\n\nconst OPT_PATH = \"codeSync\";\nconst current = function() {\n return window.location.pathname;\n};\n\n/**\n * @param {BrowserSync} bs\n */\nsync.init = function(bs) {\n if (bs.options.tagNames) {\n options.tagNames = bs.options.tagNames;\n }\n\n if (bs.options.scrollRestoreTechnique === \"window.name\") {\n sync.saveScrollInName(emitter);\n } else {\n sync.saveScrollInCookie(utils.getWindow(), utils.getDocument());\n }\n\n bs.socket.on(\"file:reload\", sync.reload(bs));\n bs.socket.on(\"browser:reload\", function() {\n if (bs.canSync({ url: current() }, OPT_PATH)) {\n sync.reloadBrowser(true, bs);\n }\n });\n};\n\n/**\n * Use window.name to store/restore scroll position\n */\nsync.saveScrollInName = function() {\n var PRE = \"<<BS_START>>\";\n var SUF = \"<<BS_END>>\";\n var regex = new RegExp(PRE + \"(.+?)\" + SUF);\n var $window = utils.getWindow();\n var saved = {};\n\n /**\n * Listen for the browser:hardReload event.\n * When it runs, save the current scroll position\n * in window.name\n */\n emitter.on(\"browser:hardReload\", function(data) {\n var newname = [\n $window.name,\n PRE,\n JSON.stringify({\n bs: {\n hardReload: true,\n scroll: data.scrollPosition\n }\n }),\n SUF\n ].join(\"\");\n $window.name = newname;\n });\n\n /**\n * On page load, check window.name for an existing\n * BS json blob & parse it.\n */\n try {\n var json = $window.name.match(regex);\n if (json) {\n saved = JSON.parse(json[1]);\n }\n } catch (e) {\n saved = {};\n }\n\n /**\n * If the JSON was parsed correctly, try to\n * find a scroll property and restore it.\n */\n if (saved.bs && saved.bs.hardReload && saved.bs.scroll) {\n utils.setScroll(saved.bs.scroll);\n }\n\n /**\n * Remove any existing BS json from window.name\n * to ensure we don't interfere with any other\n * libs who may be using it.\n */\n $window.name = $window.name.replace(regex, \"\");\n};\n\n/**\n * Use a cookie-drop to save scroll position of\n * @param $window\n * @param $document\n */\nsync.saveScrollInCookie = function($window, $document) {\n if (!utils.isOldIe()) {\n return;\n }\n\n if ($document.readyState === \"complete\") {\n utils.restoreScrollPosition();\n } else {\n events.manager.addEvent($document, \"readystatechange\", function() {\n if ($document.readyState === \"complete\") {\n utils.restoreScrollPosition();\n }\n });\n }\n\n emitter.on(\"browser:hardReload\", utils.saveScrollPosition);\n};\n\n/**\n * @param {BrowserSync} bs\n * @returns {*}\n */\nsync.reload = function(bs) {\n /**\n * @param data - from socket\n */\n return function(data) {\n if (!bs.canSync({ url: current() }, OPT_PATH)) {\n return;\n }\n\n if (data.url || !bs.options.injectChanges) {\n sync.reloadBrowser(true);\n }\n\n if (data.basename && data.ext) {\n if (sync.isBlacklisted(data)) {\n return;\n }\n\n reloader.reload(data, {\n ...options,\n liveCSS: true,\n liveImg: true\n });\n }\n };\n};\n\n/**\n * @param incoming\n * @returns {boolean}\n */\nsync.isBlacklisted = function(incoming) {\n return options.blacklist.some(function(fn) {\n return fn(incoming);\n });\n};\n\n/**\n * @param confirm\n */\nsync.reloadBrowser = function(confirm) {\n emitter.emit(\"browser:hardReload\", {\n scrollPosition: utils.getBrowserScrollPosition()\n });\n if (confirm) {\n utils.reloadBrowser();\n }\n};\n\n\n\n// WEBPACK FOOTER //\n// ./lib/code-sync.js","/**\n *\n * With thanks to https://github.com/livereload/livereload-js\n * :) :) :)\n *\n */\nimport {getLocation, pathFromUrl, pathsMatch, pickBestMatch, splitUrl, updateSearch} from \"../lib/utils\";\n\nvar hiddenElem;\n\ndeclare global {\n interface HTMLLinkElement {\n __LiveReload_pendingRemoval: boolean\n }\n}\n\nconst IMAGE_STYLES = [\n { selector: 'background', styleNames: ['backgroundImage'] },\n { selector: 'border', styleNames: ['borderImage', 'webkitBorderImage', 'MozBorderImage'] }\n];\n\nexport interface ReloadOptions {\n stylesheetReloadTimeout?: number;\n serverURL?: string;\n overrideURL?: string;\n liveCSS?: boolean;\n liveImg?: boolean;\n tagNames: {[index: string]: string}\n attrs: {[index: string]: string}\n}\n\nexport class Reloader {\n\n public options: any;\n public importCacheWaitPeriod: number;\n public document: Document;\n public knownToSupportCssOnLoad: boolean;\n public plugins: any[];\n\n constructor(public window: any, public logger, public Timer) {\n this.window = window;\n this.Timer = Timer;\n this.document = this.window.document;\n this.importCacheWaitPeriod = 200;\n this.plugins = [];\n }\n\n\n addPlugin(plugin) {\n return this.plugins.push(plugin);\n }\n\n\n analyze(callback) {\n return null;\n // return results;\n }\n\n\n reload(data, options: ReloadOptions, cb) {\n this.options = options; // avoid passing it through all the funcs\n const {path} = data;\n if (this.options.stylesheetReloadTimeout == null) { this.options.stylesheetReloadTimeout = 15000; }\n\n this.plugins.forEach(plugin => {\n if (plugin.reload && plugin.reload(path, options)) {\n return;\n }\n })\n\n if (options.liveCSS) {\n if (path.match(/\\.css$/i)) {\n this.logger.trace(`path.match(/\\\\.css$/i)`, true);\n if (this.reloadStylesheet(path)) {\n return;\n }\n }\n }\n if (options.liveImg) {\n if (path.match(/\\.(jpe?g|png|gif)$/i)) {\n this.logger.trace(`/\\\\.(jpe?g|png|gif)$/i`, true);\n this.reloadImages(path);\n return;\n }\n }\n\n this.logger.trace('Falling back to legacy method of replacing assets');\n\n /**\n * LEGACY\n */\n const domData = Reloader.getElems(data.ext, options);\n const elems = Reloader.getMatches(domData.elems, data.basename, domData.attr);\n\n for (var i = 0, n = elems.length; i < n; i += 1) {\n this.swapFile(elems[i], domData, options);\n }\n\n (cb || function() {})(elems, domData);\n }\n public static getElems(fileExtension, options: ReloadOptions) {\n const tagName = options.tagNames[fileExtension];\n const attr = options.attrs[tagName];\n return {\n attr,\n tagName,\n elems: document.getElementsByTagName(tagName)\n };\n }\n\n public static getMatches(elems, url, attr) {\n\n if (url[0] === \"*\") {\n return elems;\n }\n\n var matches = [];\n var urlMatcher = new RegExp(\"(^|/)\" + url);\n\n for (var i = 0, len = elems.length; i < len; i += 1) {\n if (urlMatcher.test(elems[i][attr])) {\n matches.push(elems[i]);\n }\n }\n\n return matches;\n };\n\n public swapFile(elem, domData, options) {\n\n const attr = domData.attr;\n const currentValue = elem[attr];\n const timeStamp = new Date().getTime();\n const key = \"browsersync-legacy\";\n const suffix = key + \"=\" + timeStamp;\n const anchor = getLocation(currentValue);\n const search = updateSearch(anchor.search, key, suffix);\n\n switch (domData.tagName) {\n case 'link': {\n this.logger.trace(`replacing LINK ${attr}`);\n this.reloadStylesheet(currentValue);\n break;\n }\n case 'img': {\n this.reloadImages(currentValue);\n break;\n }\n default: {\n if (options.timestamps === false) {\n elem[attr] = anchor.href;\n } else {\n elem[attr] = anchor.href.split(\"?\")[0] + search;\n }\n\n this.logger.info(`reloading ${elem[attr]}`);\n\n setTimeout(function () {\n if (!hiddenElem) {\n hiddenElem = document.createElement(\"DIV\");\n document.body.appendChild(hiddenElem);\n } else {\n hiddenElem.style.display = \"none\";\n hiddenElem.style.display = \"block\";\n }\n }, 200);\n }\n }\n\n return {\n elem: elem,\n timeStamp: timeStamp\n };\n };\n\n\n reloadPage() {\n return this.window.document.location.reload();\n }\n\n\n reloadImages(path) {\n const expando = this.generateUniqueString();\n\n [].slice.call(this.document.images).forEach(img => {\n if (pathsMatch(path, pathFromUrl(img.src))) {\n img.src = this.generateCacheBustUrl(img.src, expando);\n }\n });\n\n if (this.document.querySelectorAll) {\n IMAGE_STYLES.forEach(({ selector, styleNames }) => {\n [].slice.call(this.document.querySelectorAll(`[style*=${selector}]`)).forEach(img => {\n this.reloadStyleImages(img.style, styleNames, path, expando);\n });\n });\n }\n\n if (this.document.styleSheets) {\n return [].slice.call(this.document.styleSheets)\n .map((styleSheet) => {\n return this.reloadStylesheetImages(styleSheet, path, expando);\n });\n }\n }\n\n\n reloadStylesheetImages(styleSheet, path, expando) {\n let rules;\n try {\n rules = styleSheet != null ? styleSheet.cssRules : undefined;\n } catch (e) {}\n //\n if (!rules) { return; }\n\n [].slice.call(rules).forEach(rule => {\n switch (rule.type) {\n case CSSRule.IMPORT_RULE:\n this.reloadStylesheetImages(rule.styleSheet, path, expando);\n break;\n case CSSRule.STYLE_RULE:\n [].slice.call(IMAGE_STYLES).forEach(({ styleNames }) => {\n this.reloadStyleImages((rule as any).style, styleNames, path, expando);\n })\n break;\n case CSSRule.MEDIA_RULE:\n this.reloadStylesheetImages(rule, path, expando);\n break;\n }\n })\n }\n\n\n reloadStyleImages(style, styleNames, path, expando) {\n [].slice.call(styleNames).forEach(styleName => {\n const value = style[styleName];\n if (typeof value === 'string') {\n const newValue = value.replace(new RegExp(`\\\\burl\\\\s*\\\\(([^)]*)\\\\)`), (match, src) => {\n if (pathsMatch(path, pathFromUrl(src))) {\n return `url(${this.generateCacheBustUrl(src, expando)})`;\n } else {\n return match;\n }\n });\n if (newValue !== value) {\n style[styleName] = newValue;\n }\n }\n })\n }\n\n\n reloadStylesheet(path) {\n // has to be a real array, because DOMNodeList will be modified\n let link;\n const links = ((() => {\n const result = [];\n [].slice.call(this.document.getElementsByTagName('link')).forEach(link => {\n if (link.rel.match(/^stylesheet$/i) && !link.__LiveReload_pendingRemoval) {\n result.push(link);\n }\n });\n return result;\n })());\n\n // find all imported stylesheets\n const imported = [];\n for (var style of Array.from(this.document.getElementsByTagName('style'))) {\n if (style.sheet) {\n this.collectImportedStylesheets(style, style.sheet, imported);\n }\n }\n for (link of Array.from(links)) {\n this.collectImportedStylesheets(link, link.sheet, imported);\n }\n\n // handle prefixfree\n if (this.window.StyleFix && this.document.querySelectorAll) {\n [].slice.call(this.document.querySelectorAll('style[data-href]')).forEach(style => {\n links.push(style);\n });\n }\n\n this.logger.debug(`found ${links.length} LINKed stylesheets, ${imported.length} @imported stylesheets`);\n const match = pickBestMatch(path, links.concat(imported), l => pathFromUrl(this.linkHref(l)));\n\n\n if (match) {\n if (match.object && match.object.rule) {\n this.logger.info(`reloading imported stylesheet: ${match.object.href}`);\n this.reattachImportedRule(match.object);\n } else {\n this.logger.info(`reloading stylesheet: ${this.linkHref(match.object)}`);\n this.reattachStylesheetLink(match.object);\n }\n } else {\n this.logger.info(`reloading all stylesheets because path '${path}' did not match any specific one`);\n links.forEach(link => this.reattachStylesheetLink(link));\n }\n return true;\n }\n\n\n collectImportedStylesheets(link, styleSheet, result) {\n // in WebKit, styleSheet.cssRules is null for inaccessible stylesheets;\n // Firefox/Opera may throw exceptions\n let rules;\n try {\n rules = styleSheet != null ? styleSheet.cssRules : undefined;\n } catch (e) {}\n //\n if (rules && rules.length) {\n for (let index = 0; index < rules.length; index++) {\n const rule = rules[index];\n switch (rule.type) {\n case CSSRule.CHARSET_RULE:\n break;\n case CSSRule.IMPORT_RULE:\n result.push({ link, rule, index, href: rule.href });\n this.collectImportedStylesheets(link, rule.styleSheet, result);\n break;\n default:\n break; // import rules can only be preceded by charset rules\n }\n }\n }\n }\n\n\n waitUntilCssLoads(clone, func) {\n let callbackExecuted = false;\n\n const executeCallback = () => {\n if (callbackExecuted) { return; }\n callbackExecuted = true;\n return func();\n };\n\n // supported by Chrome 19+, Safari 5.2+, Firefox 9+, Opera 9+, IE6+\n // http://www.zachleat.com/web/load-css-dynamically/\n // http://pieisgood.org/test/script-link-events/\n clone.onload = () => {\n this.logger.debug(\"the new stylesheet has finished loading\");\n this.knownToSupportCssOnLoad = true;\n return executeCallback();\n };\n\n if (!this.knownToSupportCssOnLoad) {\n // polling\n let poll;\n (poll = () => {\n if (clone.sheet) {\n this.logger.debug(\"polling until the new CSS finishes loading...\");\n return executeCallback();\n } else {\n return this.Timer.start(50, poll);\n }\n })();\n }\n\n // fail safe\n return this.Timer.start(this.options.stylesheetReloadTimeout, executeCallback);\n }\n\n\n linkHref(link) {\n // prefixfree uses data-href when it turns LINK into STYLE\n return link.href || link.getAttribute('data-href');\n }\n\n\n reattachStylesheetLink(link) {\n // ignore LINKs that will be removed by LR soon\n let clone;\n if (link.__LiveReload_pendingRemoval) { return; }\n link.__LiveReload_pendingRemoval = true;\n\n if (link.tagName === 'STYLE') {\n // prefixfree\n clone = this.document.createElement('link');\n clone.rel = 'stylesheet';\n clone.media = link.media;\n clone.disabled = link.disabled;\n } else {\n clone = link.cloneNode(false);\n }\n\n clone.href = this.generateCacheBustUrl(this.linkHref(link));\n\n // insert the new LINK before the old one\n const parent = link.parentNode;\n if (parent.lastChild === link) {\n parent.appendChild(clone);\n } else {\n parent.insertBefore(clone, link.nextSibling);\n }\n\n return this.waitUntilCssLoads(clone, () => {\n let additionalWaitingTime;\n if (/AppleWebKit/.test(navigator.userAgent)) {\n additionalWaitingTime = 5;\n } else {\n additionalWaitingTime = 200;\n }\n\n return this.Timer.start(additionalWaitingTime, () => {\n if (!link.parentNode) { return; }\n link.parentNode.removeChild(link);\n clone.onreadystatechange = null;\n\n return (this.window.StyleFix != null ? this.window.StyleFix.link(clone) : undefined);\n });\n }); // prefixfree\n }\n\n\n reattachImportedRule({ rule, index, link }) {\n const parent = rule.parentStyleSheet;\n const href = this.generateCacheBustUrl(rule.href);\n const media = rule.media.length ? [].join.call(rule.media, ', ') : '';\n const newRule = `@import url(\"${href}\") ${media};`;\n\n // used to detect if reattachImportedRule has been called again on the same rule\n rule.__LiveReload_newHref = href;\n\n // WORKAROUND FOR WEBKIT BUG: WebKit resets all styles if we add @import'ed\n // stylesheet that hasn't been cached yet. Workaround is to pre-cache the\n // stylesheet by temporarily adding it as a LINK tag.\n const tempLink = this.document.createElement(\"link\");\n tempLink.rel = 'stylesheet';\n tempLink.href = href;\n tempLink.__LiveReload_pendingRemoval = true; // exclude from path matching\n if (link.parentNode) {\n link.parentNode.insertBefore(tempLink, link);\n }\n\n // wait for it to load\n return this.Timer.start(this.importCacheWaitPeriod, () => {\n if (tempLink.parentNode) { tempLink.parentNode.removeChild(tempLink); }\n\n // if another reattachImportedRule call is in progress, abandon this one\n if (rule.__LiveReload_newHref !== href) { return; }\n\n parent.insertRule(newRule, index);\n parent.deleteRule(index+1);\n\n // save the new rule, so that we can detect another reattachImportedRule call\n rule = parent.cssRules[index];\n rule.__LiveReload_newHref = href;\n\n // repeat again for good measure\n return this.Timer.start(this.importCacheWaitPeriod, () => {\n // if another reattachImportedRule call is in progress, abandon this one\n if (rule.__LiveReload_newHref !== href) { return; }\n\n parent.insertRule(newRule, index);\n return parent.deleteRule(index+1);\n });\n });\n }\n\n\n generateUniqueString() {\n return `browsersync=${Date.now()}`;\n }\n\n\n generateCacheBustUrl(url, expando = this.generateUniqueString()) {\n let hash, oldParams;\n\n ({ url, hash, params: oldParams } = splitUrl(url));\n\n if (this.options.overrideURL) {\n if (url.indexOf(this.options.serverURL) < 0) {\n const originalUrl = url;\n url = this.options.serverURL + this.options.overrideURL + \"?url=\" + encodeURIComponent(url);\n this.logger.debug(`overriding source URL ${originalUrl} with ${url}`);\n }\n }\n\n let params = oldParams.replace(/(\\?|&)browsersync=(\\d+)/, (match, sep) => `${sep}${expando}`);\n if (params === oldParams) {\n if (oldParams.length === 0) {\n params = `?${expando}`;\n } else {\n params = `${oldParams}&${expando}`;\n }\n }\n\n return url + params + hash;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./vendor/Reloader.ts","export function each(incoming) {\n return [].slice.call(incoming || []);\n}\n\nexport const splitUrl = function(url) {\n let hash, index, params;\n if ((index = url.indexOf(\"#\")) >= 0) {\n hash = url.slice(index);\n url = url.slice(0, index);\n } else {\n hash = \"\";\n }\n\n if ((index = url.indexOf(\"?\")) >= 0) {\n params = url.slice(index);\n url = url.slice(0, index);\n } else {\n params = \"\";\n }\n\n return { url, params, hash };\n};\n\nexport const pathFromUrl = function(url) {\n let path;\n ({ url } = splitUrl(url));\n if (url.indexOf(\"file://\") === 0) {\n path = url.replace(new RegExp(`^file://(localhost)?`), \"\");\n } else {\n // http : // hostname :8080 /\n path = url.replace(new RegExp(`^([^:]+:)?//([^:/]+)(:\\\\d*)?/`), \"/\");\n }\n\n // decodeURI has special handling of stuff like semicolons, so use decodeURIComponent\n return decodeURIComponent(path);\n};\n\nexport const pickBestMatch = function(path, objects, pathFunc): any {\n let score;\n let bestMatch = { score: 0, object: null };\n\n objects.forEach(object => {\n score = numberOfMatchingSegments(path, pathFunc(object));\n if (score > bestMatch.score) {\n bestMatch = { object, score };\n }\n });\n\n if (bestMatch.score > 0) {\n return bestMatch;\n } else {\n return null;\n }\n};\n\nexport const numberOfMatchingSegments = function(path1, path2) {\n // get rid of leading slashes and normalize to lower case\n path1 = path1.replace(/^\\/+/, \"\").toLowerCase();\n path2 = path2.replace(/^\\/+/, \"\").toLowerCase();\n\n if (path1 === path2) {\n return 10000;\n }\n\n const comps1 = path1.split(\"/\").reverse();\n const comps2 = path2.split(\"/\").reverse();\n const len = Math.min(comps1.length, comps2.length);\n\n let eqCount = 0;\n while (eqCount < len && comps1[eqCount] === comps2[eqCount]) {\n ++eqCount;\n }\n\n return eqCount;\n};\n\nexport const pathsMatch = (path1, path2) =>\n numberOfMatchingSegments(path1, path2) > 0;\n\nexport function getLocation(url: string) {\n var location = document.createElement(\"a\");\n location.href = url;\n\n if (location.host === \"\") {\n location.href = location.href;\n }\n\n return location;\n}\n\n/**\n * @param {string} search\n * @param {string} key\n * @param {string} suffix\n */\nexport function updateSearch(search, key, suffix) {\n if (search === \"\") {\n return \"?\" + suffix;\n }\n\n return (\n \"?\" +\n search\n .slice(1)\n .split(\"&\")\n .map(function(item) {\n return item.split(\"=\");\n })\n .filter(function(tuple) {\n return tuple[0] !== key;\n })\n .map(function(item) {\n return [item[0], item[1]].join(\"=\");\n })\n .concat(suffix)\n .join(\"&\")\n );\n}\n\n\n\n// WEBPACK FOOTER //\n// ./lib/utils.ts","/*\n * decaffeinate suggestions:\n * DS102: Remove unnecessary code created because of implicit returns\n * Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md\n */\nexport class Timer {\n public running = false;\n public id: any;\n public _handler: any;\n\n constructor(public func) {\n this.id = null;\n this._handler = () => {\n this.running = false;\n this.id = null;\n return this.func();\n };\n }\n\n public start(timeout) {\n if (this.running) { clearTimeout(this.id); }\n this.id = setTimeout(this._handler, timeout);\n return this.running = true;\n }\n\n public stop() {\n if (this.running) {\n clearTimeout(this.id);\n this.running = false; return this.id = null;\n }\n }\n\n public static start (timeout, func) {\n setTimeout(func, timeout);\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./vendor/Timer.ts","var assert = require('assert')\nvar xtend = require('xtend')\n\nvar emojis = {\n trace: '🔍',\n debug: '🐛',\n info: '✨',\n warn: '⚠️',\n error: '🚨',\n fatal: '💀'\n}\n\nvar levels = {\n trace: 10,\n debug: 20,\n info: 30,\n warn: 40,\n error: 50,\n fatal: 60\n}\n\nvar defaultColors = {\n foreground: '#d3c0c8',\n background: '#2d2d2d',\n black: '#2d2d2d',\n red: '#f2777a',\n green: '#99cc99',\n yellow: '#ffcc66',\n blue: '#6699cc',\n magenta: '#cc99cc',\n cyan: '#66cccc',\n white: '#d3d0c8',\n brightBlack: '#747369'\n}\n\nmodule.exports = Nanologger\n\nfunction Nanologger (name, opts) {\n opts = opts || {}\n if (!(this instanceof Nanologger)) return new Nanologger(name, opts)\n\n assert.equal(typeof opts, 'object', 'nanologger: opts should be type object')\n\n this._name = name || ''\n this._colors = xtend(defaultColors, opts.colors || {})\n\n try {\n this.logLevel = window.localStorage.getItem('logLevel') || 'info'\n } catch (e) {\n this.logLevel = 'info'\n }\n\n this._logLevel = levels[this.logLevel]\n}\n\nNanologger.prototype.trace = function () {\n var args = [ 'trace' ]\n for (var i = 0, len = arguments.length; i < len; i++) args.push(arguments[i])\n this._print.apply(this, args)\n}\n\nNanologger.prototype.debug = function () {\n var args = [ 'debug' ]\n for (var i = 0, len = arguments.length; i < len; i++) args.push(arguments[i])\n this._print.apply(this, args)\n}\n\nNanologger.prototype.info = function () {\n var args = [ 'info' ]\n for (var i = 0, len = arguments.length; i < len; i++) args.push(arguments[i])\n this._print.apply(this, args)\n}\n\nNanologger.prototype.warn = function () {\n var args = [ 'warn' ]\n for (var i = 0, len = arguments.length; i < len; i++) args.push(arguments[i])\n this._print.apply(this, args)\n}\n\nNanologger.prototype.error = function () {\n var args = [ 'error' ]\n for (var i = 0, len = arguments.length; i < len; i++) args.push(arguments[i])\n this._print.apply(this, args)\n}\n\nNanologger.prototype.fatal = function () {\n var args = [ 'fatal' ]\n for (var i = 0, len = arguments.length; i < len; i++) args.push(arguments[i])\n this._print.apply(this, args)\n}\n\nNanologger.prototype._print = function (level) {\n if (levels[level] < this._logLevel) return\n\n var time = getTimeStamp()\n var emoji = emojis[level]\n var name = this._name || 'unknown'\n\n var msgColor = (level === 'error' || level.fatal)\n ? this._colors.red\n : level === 'warn'\n ? this._colors.yellow\n : this._colors.green\n\n var objs = []\n var args = [ null ]\n var msg = '%c%s ' + emoji + ' %c%s'\n\n args.push(color(this._colors.brightBlack), time)\n args.push(color(this._colors.magenta), name)\n\n for (var i = 1, len = arguments.length; i < len; i++) {\n var arg = arguments[i]\n if (typeof arg === 'string') {\n if (i === 1) {\n // first string argument is in color\n msg += ' %c%s'\n args.push(color(msgColor))\n args.push(arg)\n } else if (/ms$/.test(arg)) {\n // arguments finishing with 'ms', grey out\n msg += ' %c%s'\n args.push(color(this._colors.brightBlack))\n args.push(arg)\n } else {\n // normal colors\n msg += ' %c%s'\n args.push(color(this._colors.white))\n args.push(arg)\n }\n } else if (typeof arg === 'number') {\n msg += ' %c%d'\n args.push(color(this._colors.magenta))\n args.push(arg)\n } else {\n objs.push(arg)\n }\n }\n\n args[0] = msg\n objs.forEach(function (obj) {\n args.push(obj)\n })\n\n // In IE/Edge console functions don't inherit from Function.prototype\n // so this is necessary to get all the args applied.\n Function.prototype.apply.apply(console.log, [console, args])\n}\n\nfunction color (color) {\n return 'color: ' + color + ';'\n}\n\nfunction getTimeStamp () {\n var date = new Date()\n var hours = pad(date.getHours().toString())\n var minutes = pad(date.getMinutes().toString())\n var seconds = pad(date.getSeconds().toString())\n return hours + ':' + minutes + ':' + seconds\n}\n\nfunction pad (str) {\n return str.length !== 2 ? 0 + str : str\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/nanologger/index.js\n// module id = 63\n// module chunks = 0","'use strict';\n\n// compare and isBuffer taken from https://github.com/feross/buffer/blob/680e9e5e488f22aac27599a57dc844a6315928dd/index.js\n// original notice:\n\n/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>\n * @license MIT\n */\nfunction compare(a, b) {\n if (a === b) {\n return 0;\n }\n\n var x = a.length;\n var y = b.length;\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i];\n y = b[i];\n break;\n }\n }\n\n if (x < y) {\n return -1;\n }\n if (y < x) {\n return 1;\n }\n return 0;\n}\nfunction isBuffer(b) {\n if (global.Buffer && typeof global.Buffer.isBuffer === 'function') {\n return global.Buffer.isBuffer(b);\n }\n return !!(b != null && b._isBuffer);\n}\n\n// based on node assert, original notice:\n\n// http://wiki.commonjs.org/wiki/Unit_Testing/1.0\n//\n// THIS IS NOT TESTED NOR LIKELY TO WORK OUTSIDE V8!\n//\n// Originally from narwhal.js (http://narwhaljs.org)\n// Copyright (c) 2009 Thomas Robinson <280north.com>\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the 'Software'), to\n// deal in the Software without restriction, including without limitation the\n// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n// sell copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN\n// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar util = require('util/');\nvar hasOwn = Object.prototype.hasOwnProperty;\nvar pSlice = Array.prototype.slice;\nvar functionsHaveNames = (function () {\n return function foo() {}.name === 'foo';\n}());\nfunction pToString (obj) {\n return Object.prototype.toString.call(obj);\n}\nfunction isView(arrbuf) {\n if (isBuffer(arrbuf)) {\n return false;\n }\n if (typeof global.ArrayBuffer !== 'function') {\n return false;\n }\n if (typeof ArrayBuffer.isView === 'function') {\n return ArrayBuffer.isView(arrbuf);\n }\n if (!arrbuf) {\n return false;\n }\n if (arrbuf instanceof DataView) {\n return true;\n }\n if (arrbuf.buffer && arrbuf.buffer instanceof ArrayBuffer) {\n return true;\n }\n return false;\n}\n// 1. The assert module provides functions that throw\n// AssertionError's when particular conditions are not met. The\n// assert module must conform to the following interface.\n\nvar assert = module.exports = ok;\n\n// 2. The AssertionError is defined in assert.\n// new assert.AssertionError({ message: message,\n// actual: actual,\n// expected: expected })\n\nvar regex = /\\s*function\\s+([^\\(\\s]*)\\s*/;\n// based on https://github.com/ljharb/function.prototype.name/blob/adeeeec8bfcc6068b187d7d9fb3d5bb1d3a30899/implementation.js\nfunction getName(func) {\n if (!util.isFunction(func)) {\n return;\n }\n if (functionsHaveNames) {\n return func.name;\n }\n var str = func.toString();\n var match = str.match(regex);\n return match && match[1];\n}\nassert.AssertionError = function AssertionError(options) {\n this.name = 'AssertionError';\n this.actual = options.actual;\n this.expected = options.expected;\n this.operator = options.operator;\n if (options.message) {\n this.message = options.message;\n this.generatedMessage = false;\n } else {\n this.message = getMessage(this);\n this.generatedMessage = true;\n }\n var stackStartFunction = options.stackStartFunction || fail;\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, stackStartFunction);\n } else {\n // non v8 browsers so we can have a stacktrace\n var err = new Error();\n if (err.stack) {\n var out = err.stack;\n\n // try to strip useless frames\n var fn_name = getName(stackStartFunction);\n var idx = out.indexOf('\\n' + fn_name);\n if (idx >= 0) {\n // once we have located the function frame\n // we need to strip out everything before it (and its line)\n var next_line = out.indexOf('\\n', idx + 1);\n out = out.substring(next_line + 1);\n }\n\n this.stack = out;\n }\n }\n};\n\n// assert.AssertionError instanceof Error\nutil.inherits(assert.AssertionError, Error);\n\nfunction truncate(s, n) {\n if (typeof s === 'string') {\n return s.length < n ? s : s.slice(0, n);\n } else {\n return s;\n }\n}\nfunction inspect(something) {\n if (functionsHaveNames || !util.isFunction(something)) {\n return util.inspect(something);\n }\n var rawname = getName(something);\n var name = rawname ? ': ' + rawname : '';\n return '[Function' + name + ']';\n}\nfunction getMessage(self) {\n return truncate(inspect(self.actual), 128) + ' ' +\n self.operator + ' ' +\n truncate(inspect(self.expected), 128);\n}\n\n// At present only the three keys mentioned above are used and\n// understood by the spec. Implementations or sub modules can pass\n// other keys to the AssertionError's constructor - they will be\n// ignored.\n\n// 3. All of the following functions must throw an AssertionError\n// when a corresponding condition is not met, with a message that\n// may be undefined if not provided. All assertion methods provide\n// both the actual and expected values to the assertion error for\n// display purposes.\n\nfunction fail(actual, expected, message, operator, stackStartFunction) {\n throw new assert.AssertionError({\n message: message,\n actual: actual,\n expected: expected,\n operator: operator,\n stackStartFunction: stackStartFunction\n });\n}\n\n// EXTENSION! allows for well behaved errors defined elsewhere.\nassert.fail = fail;\n\n// 4. Pure assertion tests whether a value is truthy, as determined\n// by !!guard.\n// assert.ok(guard, message_opt);\n// This statement is equivalent to assert.equal(true, !!guard,\n// message_opt);. To test strictly for the value true, use\n// assert.strictEqual(true, guard, message_opt);.\n\nfunction ok(value, message) {\n if (!value) fail(value, true, message, '==', assert.ok);\n}\nassert.ok = ok;\n\n// 5. The equality assertion tests shallow, coercive equality with\n// ==.\n// assert.equal(actual, expected, message_opt);\n\nassert.equal = function equal(actual, expected, message) {\n if (actual != expected) fail(actual, expected, message, '==', assert.equal);\n};\n\n// 6. The non-equality assertion tests for whether two objects are not equal\n// with != assert.notEqual(actual, expected, message_opt);\n\nassert.notEqual = function notEqual(actual, expected, message) {\n if (actual == expected) {\n fail(actual, expected, message, '!=', assert.notEqual);\n }\n};\n\n// 7. The equivalence assertion tests a deep equality relation.\n// assert.deepEqual(actual, expected, message_opt);\n\nassert.deepEqual = function deepEqual(actual, expected, message) {\n if (!_deepEqual(actual, expected, false)) {\n fail(actual, expected, message, 'deepEqual', assert.deepEqual);\n }\n};\n\nassert.deepStrictEqual = function deepStrictEqual(actual, expected, message) {\n if (!_deepEqual(actual, expected, true)) {\n fail(actual, expected, message, 'deepStrictEqual', assert.deepStrictEqual);\n }\n};\n\nfunction _deepEqual(actual, expected, strict, memos) {\n // 7.1. All identical values are equivalent, as determined by ===.\n if (actual === expected) {\n return true;\n } else if (isBuffer(actual) && isBuffer(expected)) {\n return compare(actual, expected) === 0;\n\n // 7.2. If the expected value is a Date object, the actual value is\n // equivalent if it is also a Date object that refers to the same time.\n } else if (util.isDate(actual) && util.isDate(expected)) {\n return actual.getTime() === expected.getTime();\n\n // 7.3 If the expected value is a RegExp object, the actual value is\n // equivalent if it is also a RegExp object with the same source and\n // properties (`global`, `multiline`, `lastIndex`, `ignoreCase`).\n } else if (util.isRegExp(actual) && util.isRegExp(expected)) {\n return actual.source === expected.source &&\n actual.global === expected.global &&\n actual.multiline === expected.multiline &&\n actual.lastIndex === expected.lastIndex &&\n actual.ignoreCase === expected.ignoreCase;\n\n // 7.4. Other pairs that do not both pass typeof value == 'object',\n // equivalence is determined by ==.\n } else if ((actual === null || typeof actual !== 'object') &&\n (expected === null || typeof expected !== 'object')) {\n return strict ? actual === expected : actual == expected;\n\n // If both values are instances of typed arrays, wrap their underlying\n // ArrayBuffers in a Buffer each to increase performance\n // This optimization requires the arrays to have the same type as checked by\n // Object.prototype.toString (aka pToString). Never perform binary\n // comparisons for Float*Arrays, though, since e.g. +0 === -0 but their\n // bit patterns are not identical.\n } else if (isView(actual) && isView(expected) &&\n pToString(actual) === pToString(expected) &&\n !(actual instanceof Float32Array ||\n actual instanceof Float64Array)) {\n return compare(new Uint8Array(actual.buffer),\n new Uint8Array(expected.buffer)) === 0;\n\n // 7.5 For all other Object pairs, including Array objects, equivalence is\n // determined by having the same number of owned properties (as verified\n // with Object.prototype.hasOwnProperty.call), the same set of keys\n // (although not necessarily the same order), equivalent values for every\n // corresponding key, and an identical 'prototype' property. Note: this\n // accounts for both named and indexed properties on Arrays.\n } else if (isBuffer(actual) !== isBuffer(expected)) {\n return false;\n } else {\n memos = memos || {actual: [], expected: []};\n\n var actualIndex = memos.actual.indexOf(actual);\n if (actualIndex !== -1) {\n if (actualIndex === memos.expected.indexOf(expected)) {\n return true;\n }\n }\n\n memos.actual.push(actual);\n memos.expected.push(expected);\n\n return objEquiv(actual, expected, strict, memos);\n }\n}\n\nfunction isArguments(object) {\n return Object.prototype.toString.call(object) == '[object Arguments]';\n}\n\nfunction objEquiv(a, b, strict, actualVisitedObjects) {\n if (a === null || a === undefined || b === null || b === undefined)\n return false;\n // if one is a primitive, the other must be same\n if (util.isPrimitive(a) || util.isPrimitive(b))\n return a === b;\n if (strict && Object.getPrototypeOf(a) !== Object.getPrototypeOf(b))\n return false;\n var aIsArgs = isArguments(a);\n var bIsArgs = isArguments(b);\n if ((aIsArgs && !bIsArgs) || (!aIsArgs && bIsArgs))\n return false;\n if (aIsArgs) {\n a = pSlice.call(a);\n b = pSlice.call(b);\n return _deepEqual(a, b, strict);\n }\n var ka = objectKeys(a);\n var kb = objectKeys(b);\n var key, i;\n // having the same number of owned properties (keys incorporates\n // hasOwnProperty)\n if (ka.length !== kb.length)\n return false;\n //the same set of keys (although not necessarily the same order),\n ka.sort();\n kb.sort();\n //~~~cheap key test\n for (i = ka.length - 1; i >= 0; i--) {\n if (ka[i] !== kb[i])\n return false;\n }\n //equivalent values for every corresponding key, and\n //~~~possibly expensive deep test\n for (i = ka.length - 1; i >= 0; i--) {\n key = ka[i];\n if (!_deepEqual(a[key], b[key], strict, actualVisitedObjects))\n return false;\n }\n return true;\n}\n\n// 8. The non-equivalence assertion tests for any deep inequality.\n// assert.notDeepEqual(actual, expected, message_opt);\n\nassert.notDeepEqual = function notDeepEqual(actual, expected, message) {\n if (_deepEqual(actual, expected, false)) {\n fail(actual, expected, message, 'notDeepEqual', assert.notDeepEqual);\n }\n};\n\nassert.notDeepStrictEqual = notDeepStrictEqual;\nfunction notDeepStrictEqual(actual, expected, message) {\n if (_deepEqual(actual, expected, true)) {\n fail(actual, expected, message, 'notDeepStrictEqual', notDeepStrictEqual);\n }\n}\n\n\n// 9. The strict equality assertion tests strict equality, as determined by ===.\n// assert.strictEqual(actual, expected, message_opt);\n\nassert.strictEqual = function strictEqual(actual, expected, message) {\n if (actual !== expected) {\n fail(actual, expected, message, '===', assert.strictEqual);\n }\n};\n\n// 10. The strict non-equality assertion tests for strict inequality, as\n// determined by !==. assert.notStrictEqual(actual, expected, message_opt);\n\nassert.notStrictEqual = function notStrictEqual(actual, expected, message) {\n if (actual === expected) {\n fail(actual, expected, message, '!==', assert.notStrictEqual);\n }\n};\n\nfunction expectedException(actual, expected) {\n if (!actual || !expected) {\n return false;\n }\n\n if (Object.prototype.toString.call(expected) == '[object RegExp]') {\n return expected.test(actual);\n }\n\n try {\n if (actual instanceof expected) {\n return true;\n }\n } catch (e) {\n // Ignore. The instanceof check doesn't work for arrow functions.\n }\n\n if (Error.isPrototypeOf(expected)) {\n return false;\n }\n\n return expected.call({}, actual) === true;\n}\n\nfunction _tryBlock(block) {\n var error;\n try {\n block();\n } catch (e) {\n error = e;\n }\n return error;\n}\n\nfunction _throws(shouldThrow, block, expected, message) {\n var actual;\n\n if (typeof block !== 'function') {\n throw new TypeError('\"block\" argument must be a function');\n }\n\n if (typeof expected === 'string') {\n message = expected;\n expected = null;\n }\n\n actual = _tryBlock(block);\n\n message = (expected && expected.name ? ' (' + expected.name + ').' : '.') +\n (message ? ' ' + message : '.');\n\n if (shouldThrow && !actual) {\n fail(actual, expected, 'Missing expected exception' + message);\n }\n\n var userProvidedMessage = typeof message === 'string';\n var isUnwantedException = !shouldThrow && util.isError(actual);\n var isUnexpectedException = !shouldThrow && actual && !expected;\n\n if ((isUnwantedException &&\n userProvidedMessage &&\n expectedException(actual, expected)) ||\n isUnexpectedException) {\n fail(actual, expected, 'Got unwanted exception' + message);\n }\n\n if ((shouldThrow && actual && expected &&\n !expectedException(actual, expected)) || (!shouldThrow && actual)) {\n throw actual;\n }\n}\n\n// 11. Expected to throw an error:\n// assert.throws(block, Error_opt, message_opt);\n\nassert.throws = function(block, /*optional*/error, /*optional*/message) {\n _throws(true, block, error, message);\n};\n\n// EXTENSION! This is annoying to write outside this module.\nassert.doesNotThrow = function(block, /*optional*/error, /*optional*/message) {\n _throws(false, block, error, message);\n};\n\nassert.ifError = function(err) { if (err) throw err; };\n\nvar objectKeys = Object.keys || function (obj) {\n var keys = [];\n for (var key in obj) {\n if (hasOwn.call(obj, key)) keys.push(key);\n }\n return keys;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/assert/assert.js\n// module id = 64\n// module chunks = 0","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar formatRegExp = /%[sdj%]/g;\nexports.format = function(f) {\n if (!isString(f)) {\n var objects = [];\n for (var i = 0; i < arguments.length; i++) {\n objects.push(inspect(arguments[i]));\n }\n return objects.join(' ');\n }\n\n var i = 1;\n var args = arguments;\n var len = args.length;\n var str = String(f).replace(formatRegExp, function(x) {\n if (x === '%%') return '%';\n if (i >= len) return x;\n switch (x) {\n case '%s': return String(args[i++]);\n case '%d': return Number(args[i++]);\n case '%j':\n try {\n return JSON.stringify(args[i++]);\n } catch (_) {\n return '[Circular]';\n }\n default:\n return x;\n }\n });\n for (var x = args[i]; i < len; x = args[++i]) {\n if (isNull(x) || !isObject(x)) {\n str += ' ' + x;\n } else {\n str += ' ' + inspect(x);\n }\n }\n return str;\n};\n\n\n// Mark that a method should not be used.\n// Returns a modified function which warns once by default.\n// If --no-deprecation is set, then it is a no-op.\nexports.deprecate = function(fn, msg) {\n // Allow for deprecating things in the process of starting up.\n if (isUndefined(global.process)) {\n return function() {\n return exports.deprecate(fn, msg).apply(this, arguments);\n };\n }\n\n if (process.noDeprecation === true) {\n return fn;\n }\n\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (process.throwDeprecation) {\n throw new Error(msg);\n } else if (process.traceDeprecation) {\n console.trace(msg);\n } else {\n console.error(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n};\n\n\nvar debugs = {};\nvar debugEnviron;\nexports.debuglog = function(set) {\n if (isUndefined(debugEnviron))\n debugEnviron = process.env.NODE_DEBUG || '';\n set = set.toUpperCase();\n if (!debugs[set]) {\n if (new RegExp('\\\\b' + set + '\\\\b', 'i').test(debugEnviron)) {\n var pid = process.pid;\n debugs[set] = function() {\n var msg = exports.format.apply(exports, arguments);\n console.error('%s %d: %s', set, pid, msg);\n };\n } else {\n debugs[set] = function() {};\n }\n }\n return debugs[set];\n};\n\n\n/**\n * Echos the value of a value. Trys to print the value out\n * in the best way possible given the different types.\n *\n * @param {Object} obj The object to print out.\n * @param {Object} opts Optional options object that alters the output.\n */\n/* legacy: obj, showHidden, depth, colors*/\nfunction inspect(obj, opts) {\n // default options\n var ctx = {\n seen: [],\n stylize: stylizeNoColor\n };\n // legacy...\n if (arguments.length >= 3) ctx.depth = arguments[2];\n if (arguments.length >= 4) ctx.colors = arguments[3];\n if (isBoolean(opts)) {\n // legacy...\n ctx.showHidden = opts;\n } else if (opts) {\n // got an \"options\" object\n exports._extend(ctx, opts);\n }\n // set default options\n if (isUndefined(ctx.showHidden)) ctx.showHidden = false;\n if (isUndefined(ctx.depth)) ctx.depth = 2;\n if (isUndefined(ctx.colors)) ctx.colors = false;\n if (isUndefined(ctx.customInspect)) ctx.customInspect = true;\n if (ctx.colors) ctx.stylize = stylizeWithColor;\n return formatValue(ctx, obj, ctx.depth);\n}\nexports.inspect = inspect;\n\n\n// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics\ninspect.colors = {\n 'bold' : [1, 22],\n 'italic' : [3, 23],\n 'underline' : [4, 24],\n 'inverse' : [7, 27],\n 'white' : [37, 39],\n 'grey' : [90, 39],\n 'black' : [30, 39],\n 'blue' : [34, 39],\n 'cyan' : [36, 39],\n 'green' : [32, 39],\n 'magenta' : [35, 39],\n 'red' : [31, 39],\n 'yellow' : [33, 39]\n};\n\n// Don't use 'blue' not visible on cmd.exe\ninspect.styles = {\n 'special': 'cyan',\n 'number': 'yellow',\n 'boolean': 'yellow',\n 'undefined': 'grey',\n 'null': 'bold',\n 'string': 'green',\n 'date': 'magenta',\n // \"name\": intentionally not styling\n 'regexp': 'red'\n};\n\n\nfunction stylizeWithColor(str, styleType) {\n var style = inspect.styles[styleType];\n\n if (style) {\n return '\\u001b[' + inspect.colors[style][0] + 'm' + str +\n '\\u001b[' + inspect.colors[style][1] + 'm';\n } else {\n return str;\n }\n}\n\n\nfunction stylizeNoColor(str, styleType) {\n return str;\n}\n\n\nfunction arrayToHash(array) {\n var hash = {};\n\n array.forEach(function(val, idx) {\n hash[val] = true;\n });\n\n return hash;\n}\n\n\nfunction formatValue(ctx, value, recurseTimes) {\n // Provide a hook for user-specified inspect functions.\n // Check that value is an object with an inspect function on it\n if (ctx.customInspect &&\n value &&\n isFunction(value.inspect) &&\n // Filter out the util module, it's inspect function is special\n value.inspect !== exports.inspect &&\n // Also filter out any prototype objects using the circular check.\n !(value.constructor && value.constructor.prototype === value)) {\n var ret = value.inspect(recurseTimes, ctx);\n if (!isString(ret)) {\n ret = formatValue(ctx, ret, recurseTimes);\n }\n return ret;\n }\n\n // Primitive types cannot have properties\n var primitive = formatPrimitive(ctx, value);\n if (primitive) {\n return primitive;\n }\n\n // Look up the keys of the object.\n var keys = Object.keys(value);\n var visibleKeys = arrayToHash(keys);\n\n if (ctx.showHidden) {\n keys = Object.getOwnPropertyNames(value);\n }\n\n // IE doesn't make error fields non-enumerable\n // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx\n if (isError(value)\n && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {\n return formatError(value);\n }\n\n // Some type of object without properties can be shortcutted.\n if (keys.length === 0) {\n if (isFunction(value)) {\n var name = value.name ? ': ' + value.name : '';\n return ctx.stylize('[Function' + name + ']', 'special');\n }\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n }\n if (isDate(value)) {\n return ctx.stylize(Date.prototype.toString.call(value), 'date');\n }\n if (isError(value)) {\n return formatError(value);\n }\n }\n\n var base = '', array = false, braces = ['{', '}'];\n\n // Make Array say that they are Array\n if (isArray(value)) {\n array = true;\n braces = ['[', ']'];\n }\n\n // Make functions say that they are functions\n if (isFunction(value)) {\n var n = value.name ? ': ' + value.name : '';\n base = ' [Function' + n + ']';\n }\n\n // Make RegExps say that they are RegExps\n if (isRegExp(value)) {\n base = ' ' + RegExp.prototype.toString.call(value);\n }\n\n // Make dates with properties first say the date\n if (isDate(value)) {\n base = ' ' + Date.prototype.toUTCString.call(value);\n }\n\n // Make error with message first say the error\n if (isError(value)) {\n base = ' ' + formatError(value);\n }\n\n if (keys.length === 0 && (!array || value.length == 0)) {\n return braces[0] + base + braces[1];\n }\n\n if (recurseTimes < 0) {\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n } else {\n return ctx.stylize('[Object]', 'special');\n }\n }\n\n ctx.seen.push(value);\n\n var output;\n if (array) {\n output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);\n } else {\n output = keys.map(function(key) {\n return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);\n });\n }\n\n ctx.seen.pop();\n\n return reduceToSingleString(output, base, braces);\n}\n\n\nfunction formatPrimitive(ctx, value) {\n if (isUndefined(value))\n return ctx.stylize('undefined', 'undefined');\n if (isString(value)) {\n var simple = '\\'' + JSON.stringify(value).replace(/^\"|\"$/g, '')\n .replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"') + '\\'';\n return ctx.stylize(simple, 'string');\n }\n if (isNumber(value))\n return ctx.stylize('' + value, 'number');\n if (isBoolean(value))\n return ctx.stylize('' + value, 'boolean');\n // For some reason typeof null is \"object\", so special case here.\n if (isNull(value))\n return ctx.stylize('null', 'null');\n}\n\n\nfunction formatError(value) {\n return '[' + Error.prototype.toString.call(value) + ']';\n}\n\n\nfunction formatArray(ctx, value, recurseTimes, visibleKeys, keys) {\n var output = [];\n for (var i = 0, l = value.length; i < l; ++i) {\n if (hasOwnProperty(value, String(i))) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n String(i), true));\n } else {\n output.push('');\n }\n }\n keys.forEach(function(key) {\n if (!key.match(/^\\d+$/)) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n key, true));\n }\n });\n return output;\n}\n\n\nfunction formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {\n var name, str, desc;\n desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };\n if (desc.get) {\n if (desc.set) {\n str = ctx.stylize('[Getter/Setter]', 'special');\n } else {\n str = ctx.stylize('[Getter]', 'special');\n }\n } else {\n if (desc.set) {\n str = ctx.stylize('[Setter]', 'special');\n }\n }\n if (!hasOwnProperty(visibleKeys, key)) {\n name = '[' + key + ']';\n }\n if (!str) {\n if (ctx.seen.indexOf(desc.value) < 0) {\n if (isNull(recurseTimes)) {\n str = formatValue(ctx, desc.value, null);\n } else {\n str = formatValue(ctx, desc.value, recurseTimes - 1);\n }\n if (str.indexOf('\\n') > -1) {\n if (array) {\n str = str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n').substr(2);\n } else {\n str = '\\n' + str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n');\n }\n }\n } else {\n str = ctx.stylize('[Circular]', 'special');\n }\n }\n if (isUndefined(name)) {\n if (array && key.match(/^\\d+$/)) {\n return str;\n }\n name = JSON.stringify('' + key);\n if (name.match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)) {\n name = name.substr(1, name.length - 2);\n name = ctx.stylize(name, 'name');\n } else {\n name = name.replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"')\n .replace(/(^\"|\"$)/g, \"'\");\n name = ctx.stylize(name, 'string');\n }\n }\n\n return name + ': ' + str;\n}\n\n\nfunction reduceToSingleString(output, base, braces) {\n var numLinesEst = 0;\n var length = output.reduce(function(prev, cur) {\n numLinesEst++;\n if (cur.indexOf('\\n') >= 0) numLinesEst++;\n return prev + cur.replace(/\\u001b\\[\\d\\d?m/g, '').length + 1;\n }, 0);\n\n if (length > 60) {\n return braces[0] +\n (base === '' ? '' : base + '\\n ') +\n ' ' +\n output.join(',\\n ') +\n ' ' +\n braces[1];\n }\n\n return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];\n}\n\n\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\nfunction isArray(ar) {\n return Array.isArray(ar);\n}\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n return typeof arg === 'boolean';\n}\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n return arg === null;\n}\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n return arg == null;\n}\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n return typeof arg === 'string';\n}\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n return typeof arg === 'symbol';\n}\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n return isObject(re) && objectToString(re) === '[object RegExp]';\n}\nexports.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\nexports.isObject = isObject;\n\nfunction isDate(d) {\n return isObject(d) && objectToString(d) === '[object Date]';\n}\nexports.isDate = isDate;\n\nfunction isError(e) {\n return isObject(e) &&\n (objectToString(e) === '[object Error]' || e instanceof Error);\n}\nexports.isError = isError;\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n return arg === null ||\n typeof arg === 'boolean' ||\n typeof arg === 'number' ||\n typeof arg === 'string' ||\n typeof arg === 'symbol' || // ES6 symbol\n typeof arg === 'undefined';\n}\nexports.isPrimitive = isPrimitive;\n\nexports.isBuffer = require('./support/isBuffer');\n\nfunction objectToString(o) {\n return Object.prototype.toString.call(o);\n}\n\n\nfunction pad(n) {\n return n < 10 ? '0' + n.toString(10) : n.toString(10);\n}\n\n\nvar months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',\n 'Oct', 'Nov', 'Dec'];\n\n// 26 Feb 16:19:34\nfunction timestamp() {\n var d = new Date();\n var time = [pad(d.getHours()),\n pad(d.getMinutes()),\n pad(d.getSeconds())].join(':');\n return [d.getDate(), months[d.getMonth()], time].join(' ');\n}\n\n\n// log is just a thin wrapper to console.log that prepends a timestamp\nexports.log = function() {\n console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));\n};\n\n\n/**\n * Inherit the prototype methods from one constructor into another.\n *\n * The Function.prototype.inherits from lang.js rewritten as a standalone\n * function (not on Function.prototype). NOTE: If this file is to be loaded\n * during bootstrapping this function needs to be rewritten using some native\n * functions as prototype setup using normal JavaScript does not work as\n * expected during bootstrapping (see mirror.js in r114903).\n *\n * @param {function} ctor Constructor function which needs to inherit the\n * prototype.\n * @param {function} superCtor Constructor function to inherit prototype from.\n */\nexports.inherits = require('inherits');\n\nexports._extend = function(origin, add) {\n // Don't do anything if add isn't an object\n if (!add || !isObject(add)) return origin;\n\n var keys = Object.keys(add);\n var i = keys.length;\n while (i--) {\n origin[keys[i]] = add[keys[i]];\n }\n return origin;\n};\n\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/util/util.js\n// module id = 65\n// module chunks = 0","module.exports = function isBuffer(arg) {\n return arg && typeof arg === 'object'\n && typeof arg.copy === 'function'\n && typeof arg.fill === 'function'\n && typeof arg.readUInt8 === 'function';\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/util/support/isBufferBrowser.js\n// module id = 66\n// module chunks = 0","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/util/node_modules/inherits/inherits_browser.js\n// module id = 67\n// module chunks = 0","module.exports = extend\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction extend() {\n var target = {}\n\n for (var i = 0; i < arguments.length; i++) {\n var source = arguments[i]\n\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n target[key] = source[key]\n }\n }\n }\n\n return target\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/xtend/immutable.js\n// module id = 68\n// module chunks = 0","\"use strict\";\n\nvar socket = require(\"./socket\");\nvar emitter = require(\"./emitter\");\nvar notify = require(\"./notify\");\nvar tab = require(\"./tab\");\nvar utils = require(\"./browser.utils\");\n\n/**\n * @constructor\n */\nvar BrowserSync = function(options) {\n this.options = options;\n this.socket = socket;\n this.emitter = emitter;\n this.utils = utils;\n this.tabHidden = false;\n\n var bs = this;\n\n /**\n * Options set\n */\n socket.on(\"options:set\", function(data) {\n emitter.emit(\"notify\", \"Setting options...\");\n bs.options = data.options;\n });\n\n emitter.on(\"tab:hidden\", function() {\n bs.tabHidden = true;\n });\n emitter.on(\"tab:visible\", function() {\n bs.tabHidden = false;\n });\n};\n\n/**\n * Helper to check if syncing is allowed\n * @param data\n * @param optPath\n * @returns {boolean}\n */\nBrowserSync.prototype.canSync = function(data, optPath) {\n data = data || {};\n\n if (data.override) {\n return true;\n }\n\n var canSync = true;\n\n if (optPath) {\n canSync = this.getOption(optPath);\n }\n\n return canSync && data.url === window.location.pathname;\n};\n\n/**\n * Helper to check if syncing is allowed\n * @returns {boolean}\n */\nBrowserSync.prototype.getOption = function(path) {\n if (path && path.match(/\\./)) {\n return getByPath(this.options, path);\n } else {\n var opt = this.options[path];\n\n if (isUndefined(opt)) {\n return false;\n } else {\n return opt;\n }\n }\n};\n\n/**\n * @type {Function}\n */\nmodule.exports = BrowserSync;\n\n/**\n * @param {String} val\n * @returns {boolean}\n */\nfunction isUndefined(val) {\n return \"undefined\" === typeof val;\n}\n\n/**\n * @param obj\n * @param path\n */\nfunction getByPath(obj, path) {\n for (\n var i = 0, tempPath = path.split(\".\"), len = tempPath.length;\n i < len;\n i++\n ) {\n if (!obj || typeof obj !== \"object\") {\n return false;\n }\n obj = obj[tempPath[i]];\n }\n\n if (typeof obj === \"undefined\") {\n return false;\n }\n\n return obj;\n}\n\n\n\n// WEBPACK FOOTER //\n// ./lib/browser-sync.js","var utils = require(\"./browser.utils\");\nvar emitter = require(\"./emitter\");\nvar $document = utils.getDocument();\n\n// Set the name of the hidden property and the change event for visibility\nvar hidden, visibilityChange;\nif (typeof $document.hidden !== \"undefined\") {\n // Opera 12.10 and Firefox 18 and later support\n hidden = \"hidden\";\n visibilityChange = \"visibilitychange\";\n} else if (typeof $document.mozHidden !== \"undefined\") {\n hidden = \"mozHidden\";\n visibilityChange = \"mozvisibilitychange\";\n} else if (typeof $document.msHidden !== \"undefined\") {\n hidden = \"msHidden\";\n visibilityChange = \"msvisibilitychange\";\n} else if (typeof $document.webkitHidden !== \"undefined\") {\n hidden = \"webkitHidden\";\n visibilityChange = \"webkitvisibilitychange\";\n}\n\n// If the page is hidden, pause the video;\n// if the page is shown, play the video\nfunction handleVisibilityChange() {\n if ($document[hidden]) {\n emitter.emit(\"tab:hidden\");\n } else {\n emitter.emit(\"tab:visible\");\n }\n}\n\nif (\n typeof $document.addEventListener === \"undefined\" ||\n typeof $document[hidden] === \"undefined\"\n) {\n //console.log('not supported');\n} else {\n $document.addEventListener(visibilityChange, handleVisibilityChange, false);\n}\n\n\n\n// WEBPACK FOOTER //\n// ./lib/tab.js","\"use strict\";\n\nvar eventManager = require(\"./events\").manager;\n\nexports.plugins = {\n scroll: require(\"./ghostmode.scroll\"),\n clicks: require(\"./ghostmode.clicks\"),\n forms: require(\"./ghostmode.forms\"),\n location: require(\"./ghostmode.location\")\n};\n\n/**\n * Load plugins for enabled options\n * @param bs\n */\nexports.init = function(bs) {\n for (var name in exports.plugins) {\n if (bs.options.ghostMode[name]) {\n exports.plugins[name].init(bs, eventManager);\n }\n }\n};\n\n\n\n// WEBPACK FOOTER //\n// ./lib/ghostmode.js"],"sourceRoot":""} |