blob: e50180bf6f2a57eaf95f86af0c62cc635d75dbca [file] [log] [blame]
{"version":3,"sources":["node_modules/browser-pack/_prelude.js","lib/entry.js","lib/event/close.js","lib/event/emitter.js","lib/event/event.js","lib/event/eventtarget.js","lib/event/trans-message.js","lib/facade.js","lib/iframe-bootstrap.js","lib/info-ajax.js","lib/info-iframe-receiver.js","lib/info-iframe.js","lib/info-receiver.js","lib/location.js","lib/main.js","lib/shims.js","lib/transport-list.js","lib/transport/browser/abstract-xhr.js","lib/transport/browser/eventsource.js","lib/transport/browser/websocket.js","lib/transport/eventsource.js","lib/transport/htmlfile.js","lib/transport/iframe.js","lib/transport/jsonp-polling.js","lib/transport/lib/ajax-based.js","lib/transport/lib/buffered-sender.js","lib/transport/lib/iframe-wrap.js","lib/transport/lib/polling.js","lib/transport/lib/sender-receiver.js","lib/transport/receiver/eventsource.js","lib/transport/receiver/htmlfile.js","lib/transport/receiver/jsonp.js","lib/transport/receiver/xhr.js","lib/transport/sender/jsonp.js","lib/transport/sender/xdr.js","lib/transport/sender/xhr-cors.js","lib/transport/sender/xhr-fake.js","lib/transport/sender/xhr-local.js","lib/transport/websocket.js","lib/transport/xdr-polling.js","lib/transport/xdr-streaming.js","lib/transport/xhr-polling.js","lib/transport/xhr-streaming.js","lib/utils/browser-crypto.js","lib/utils/browser.js","lib/utils/escape.js","lib/utils/event.js","lib/utils/iframe.js","lib/utils/log.js","lib/utils/object.js","lib/utils/random.js","lib/utils/transport.js","lib/utils/url.js","lib/version.js","node_modules/inherits/inherits_browser.js","node_modules/json3/lib/json3.js","node_modules/querystringify/index.js","node_modules/requires-port/index.js","node_modules/url-parse/index.js"],"names":["f","exports","module","define","amd","window","global","self","this","SockJS","r","e","n","t","o","i","c","require","u","a","Error","code","p","call","length","1","transportList","setTimeout","_sockjs_onload","inherits","Event","CloseEvent","initEvent","wasClean","reason","EventTarget","EventEmitter","prototype","removeAllListeners","type","_listeners","once","listener","fired","on","g","removeListener","apply","arguments","emit","listeners","l","args","Array","ai","addListener","addEventListener","removeEventListener","eventType","canBubble","cancelable","bubbles","timeStamp","Date","stopPropagation","preventDefault","CAPTURING_PHASE","AT_TARGET","BUBBLING_PHASE","arr","indexOf","concat","idx","slice","dispatchEvent","event","TransportMessageEvent","data","JSON3","iframeUtils","FacadeJS","transport","_transport","_transportMessage","bind","_transportClose","postMessage","stringify","frame","_send","send","_close","close","urlUtils","eventUtils","InfoIframeReceiver","loc","debug","availableTransports","parentOrigin","transportMap","forEach","at","facadeTransport","transportName","bootstrap_iframe","facade","currentWindowId","hash","attachEvent","source","parent","origin","iframeMessage","parse","ignored","windowId","version","transUrl","baseUrl","isOriginEqual","href","objectUtils","InfoAjax","url","AjaxObject","t0","xo","status","text","info","rtt","isObject","XHRLocalObject","InfoReceiverIframe","ir","utils","IframeTransport","InfoIframe","go","ifr","msg","d","document","body","enabled","XDR","XHRCors","XHRLocal","XHRFake","InfoReceiver","urlInfo","doXhr","_getReceiver","sameOrigin","sameScheme","addPath","timeoutRef","_cleanup","timeout","clearTimeout","location","protocol","host","port","transports","URL","random","escape","browser","log","protocols","options","TypeError","readyState","CONNECTING","extensions","protocols_whitelist","warn","_transportsWhitelist","_transportOptions","transportOptions","sessionId","_generateSessionId","string","_server","server","numberString","parsedUrl","SyntaxError","secure","isArray","sortedProtocols","sort","proto","getOrigin","_origin","toLowerCase","set","pathname","replace","_urlInfo","nullOrigin","hasDomain","isSchemeEqual","_ir","_receiveInfo","userSetCode","CLOSING","CLOSED","OPEN","quote","_rto","countRTO","_transUrl","base_url","extend","enabledTransports","filterToEnabled","_transports","main","_connect","Transport","shift","needBody","unshift","timeoutMs","roundTrips","_transportTimeoutId","_transportTimeout","transportUrl","transportObj","payload","content","_open","forceFail","onmessage","onclose","onerror","defineProperty","ArrayPrototype","ObjectPrototype","Object","FunctionPrototype","Function","StringPrototype","String","array_slice","_toString","toString","isFunction","val","isString","obj","supportsDescriptors","object","name","method","forceAssign","configurable","enumerable","writable","value","defineProperties","map","hasOwnProperty","toObject","Empty","that","target","boundLength","Math","max","boundArgs","push","bound","join","result","properlyBoxesNonStrict","properlyBoxesStrict","boxedString","splitString","fun","split","thisp","_","__","context","hasFirefox2IndexOfBug","sought","num","floor","abs","compliantExecNpcg","string_split","exec","separator","limit","separator2","match","lastIndex","lastLength","output","flags","ignoreCase","multiline","extended","sticky","lastLastIndex","RegExp","index","test","string_substr","substr","hasNegativeSubstrBug","start","XHR","XMLHttpRequest","AbstractXHRObject","opts","_start","xhr","x","addQuery","unloadRef","unloadAdd","open","ontimeout","noCredentials","supportsCORS","withCredentials","headers","key","setRequestHeader","onreadystatechange","responseText","abort","unloadDel","axo","cors","EventSource","Driver","WebSocket","MozWebSocket","undefined","AjaxBasedTransport","EventSourceReceiver","XHRCorsObject","EventSourceDriver","EventSourceTransport","HtmlfileReceiver","HtmlFileTransport","iframeUrl","iframeObj","createIframe","onmessageCallback","_message","detachEvent","cleanup","loaded","cdata","post","message","iframeEnabled","SenderReceiver","JsonpReceiver","jsonpSender","JsonPTransport","urlSuffix","Receiver","callback","opt","Content-type","ajaxUrl","err","BufferedSender","sender","sendBuffer","sendStop","sendSchedule","sendScheduleWait","tref","IframeWrapTransport","iframeInfo","Polling","receiveUrl","_scheduleReceiver","poll","pollIsClosing","senderFunc","pollUrl","es","decodeURI","polluteGlobalNamespace","id","decodeURIComponent","WPrefix","htmlfileEnabled","constructFunc","createHtmlfile","stop","urlWithId","encodeURIComponent","_callback","_createScript","timeoutId","_abort","scriptErrorTimeout","aborting","script2","parentNode","removeChild","script","onload","onclick","_scriptError","errorTimer","loadedOkay","createElement","src","charset","htmlFor","async","isOpera","head","getElementsByTagName","insertBefore","firstChild","XhrReceiver","bufferPosition","_chunkHandler","buf","form","area","style","display","position","enctype","acceptCharset","appendChild","action","iframe","submit","completed","XDRObject","xdr","XDomainRequest","_error","onprogress","XhrDriver","to","WebsocketDriver","WebSocketTransport","ignore","ws","XdrStreamingTransport","XdrPollingTransport","cookie_needed","XhrPollingTransport","XhrStreamingTransport","crypto","getRandomValues","randomBytes","bytes","Uint8Array","navigator","userAgent","isKonqueror","domain","extraLookup","extraEscapable","quoted","escapable","unrolled","fromCharCode","charCodeAt","unrollLookup","onUnload","afterUnload","isChromePackagedApp","chrome","app","runtime","ref","triggerUnloadCallbacks","errorCallback","unattach","contentWindow","doc","CollectGarbage","write","parentWindow","logObject","level","levelExists","console","prop","_randomStringChars","ret","number","transportsWhitelist","trans","websocket","hostname","b","res","path","qs","q","create","ctor","superCtor","super_","constructor","TempCtor","objectTypes","function","freeExports","nodeType","root","freeGlobal","runInContext","Number","nativeJSON","isProperty","undef","objectProto","getClass","isExtended","getUTCFullYear","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","getUTCMilliseconds","exception","has","isSupported","serialized","stringifySupported","toJSON","parseSupported","functionClass","numberClass","stringClass","arrayClass","charIndexBuggy","Months","getDay","year","month","property","members","__proto__","original","Properties","size","valueOf","isConstructor","hasProperty","Escapes","92","34","8","12","10","13","9","toPaddedString","width","useCharIndex","symbols","charCode","charAt","serialize","properties","whitespace","indentation","stack","className","date","time","hours","minutes","seconds","milliseconds","results","element","prefix","pop","filter","Index","Source","Unescapes","47","98","116","110","102","114","lex","begin","isSigned","get","hasMembers","update","walk","JSON","previousJSON","isRestored","noConflict","decode","input","pairs","query","part","parser","required","protocolre","slashes","rules","address","NaN","lolcation","finaldestination","Url","unescape","extractProtocol","rest","relative","extracted","instruction","instructions","base","last","up","splice","resolve","username","password","auth","fn","char","ins"],"mappings":"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","file":"sockjs.min.js","sourcesContent":["(function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c=\"function\"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error(\"Cannot find module '\"+i+\"'\");throw a.code=\"MODULE_NOT_FOUND\",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u=\"function\"==typeof require&&require,i=0;i<t.length;i++)o(t[i]);return o}return r})()","'use strict';\n\nvar transportList = require('./transport-list');\n\nmodule.exports = require('./main')(transportList);\n\n// TODO can't get rid of this until all servers do\nif ('_sockjs_onload' in global) {\n setTimeout(global._sockjs_onload, 1);\n}\n","'use strict';\n\nvar inherits = require('inherits')\n , Event = require('./event')\n ;\n\nfunction CloseEvent() {\n Event.call(this);\n this.initEvent('close', false, false);\n this.wasClean = false;\n this.code = 0;\n this.reason = '';\n}\n\ninherits(CloseEvent, Event);\n\nmodule.exports = CloseEvent;\n","'use strict';\n\nvar inherits = require('inherits')\n , EventTarget = require('./eventtarget')\n ;\n\nfunction EventEmitter() {\n EventTarget.call(this);\n}\n\ninherits(EventEmitter, EventTarget);\n\nEventEmitter.prototype.removeAllListeners = function(type) {\n if (type) {\n delete this._listeners[type];\n } else {\n this._listeners = {};\n }\n};\n\nEventEmitter.prototype.once = function(type, listener) {\n var self = this\n , fired = false;\n\n function g() {\n self.removeListener(type, g);\n\n if (!fired) {\n fired = true;\n listener.apply(this, arguments);\n }\n }\n\n this.on(type, g);\n};\n\nEventEmitter.prototype.emit = function() {\n var type = arguments[0];\n var listeners = this._listeners[type];\n if (!listeners) {\n return;\n }\n // equivalent of Array.prototype.slice.call(arguments, 1);\n var l = arguments.length;\n var args = new Array(l - 1);\n for (var ai = 1; ai < l; ai++) {\n args[ai - 1] = arguments[ai];\n }\n for (var i = 0; i < listeners.length; i++) {\n listeners[i].apply(this, args);\n }\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener = EventTarget.prototype.addEventListener;\nEventEmitter.prototype.removeListener = EventTarget.prototype.removeEventListener;\n\nmodule.exports.EventEmitter = EventEmitter;\n","'use strict';\n\nfunction Event(eventType) {\n this.type = eventType;\n}\n\nEvent.prototype.initEvent = function(eventType, canBubble, cancelable) {\n this.type = eventType;\n this.bubbles = canBubble;\n this.cancelable = cancelable;\n this.timeStamp = +new Date();\n return this;\n};\n\nEvent.prototype.stopPropagation = function() {};\nEvent.prototype.preventDefault = function() {};\n\nEvent.CAPTURING_PHASE = 1;\nEvent.AT_TARGET = 2;\nEvent.BUBBLING_PHASE = 3;\n\nmodule.exports = Event;\n","'use strict';\n\n/* Simplified implementation of DOM2 EventTarget.\n * http://www.w3.org/TR/DOM-Level-2-Events/events.html#Events-EventTarget\n */\n\nfunction EventTarget() {\n this._listeners = {};\n}\n\nEventTarget.prototype.addEventListener = function(eventType, listener) {\n if (!(eventType in this._listeners)) {\n this._listeners[eventType] = [];\n }\n var arr = this._listeners[eventType];\n // #4\n if (arr.indexOf(listener) === -1) {\n // Make a copy so as not to interfere with a current dispatchEvent.\n arr = arr.concat([listener]);\n }\n this._listeners[eventType] = arr;\n};\n\nEventTarget.prototype.removeEventListener = function(eventType, listener) {\n var arr = this._listeners[eventType];\n if (!arr) {\n return;\n }\n var idx = arr.indexOf(listener);\n if (idx !== -1) {\n if (arr.length > 1) {\n // Make a copy so as not to interfere with a current dispatchEvent.\n this._listeners[eventType] = arr.slice(0, idx).concat(arr.slice(idx + 1));\n } else {\n delete this._listeners[eventType];\n }\n return;\n }\n};\n\nEventTarget.prototype.dispatchEvent = function() {\n var event = arguments[0];\n var t = event.type;\n // equivalent of Array.prototype.slice.call(arguments, 0);\n var args = arguments.length === 1 ? [event] : Array.apply(null, arguments);\n // TODO: This doesn't match the real behavior; per spec, onfoo get\n // their place in line from the /first/ time they're set from\n // non-null. Although WebKit bumps it to the end every time it's\n // set.\n if (this['on' + t]) {\n this['on' + t].apply(this, args);\n }\n if (t in this._listeners) {\n // Grab a reference to the listeners list. removeEventListener may alter the list.\n var listeners = this._listeners[t];\n for (var i = 0; i < listeners.length; i++) {\n listeners[i].apply(this, args);\n }\n }\n};\n\nmodule.exports = EventTarget;\n","'use strict';\n\nvar inherits = require('inherits')\n , Event = require('./event')\n ;\n\nfunction TransportMessageEvent(data) {\n Event.call(this);\n this.initEvent('message', false, false);\n this.data = data;\n}\n\ninherits(TransportMessageEvent, Event);\n\nmodule.exports = TransportMessageEvent;\n","'use strict';\n\nvar JSON3 = require('json3')\n , iframeUtils = require('./utils/iframe')\n ;\n\nfunction FacadeJS(transport) {\n this._transport = transport;\n transport.on('message', this._transportMessage.bind(this));\n transport.on('close', this._transportClose.bind(this));\n}\n\nFacadeJS.prototype._transportClose = function(code, reason) {\n iframeUtils.postMessage('c', JSON3.stringify([code, reason]));\n};\nFacadeJS.prototype._transportMessage = function(frame) {\n iframeUtils.postMessage('t', frame);\n};\nFacadeJS.prototype._send = function(data) {\n this._transport.send(data);\n};\nFacadeJS.prototype._close = function() {\n this._transport.close();\n this._transport.removeAllListeners();\n};\n\nmodule.exports = FacadeJS;\n","'use strict';\n\nvar urlUtils = require('./utils/url')\n , eventUtils = require('./utils/event')\n , JSON3 = require('json3')\n , FacadeJS = require('./facade')\n , InfoIframeReceiver = require('./info-iframe-receiver')\n , iframeUtils = require('./utils/iframe')\n , loc = require('./location')\n ;\n\nvar debug = function() {};\nif (\"production\" !== 'production') {\n debug = require('debug')('sockjs-client:iframe-bootstrap');\n}\n\nmodule.exports = function(SockJS, availableTransports) {\n var transportMap = {};\n availableTransports.forEach(function(at) {\n if (at.facadeTransport) {\n transportMap[at.facadeTransport.transportName] = at.facadeTransport;\n }\n });\n\n // hard-coded for the info iframe\n // TODO see if we can make this more dynamic\n transportMap[InfoIframeReceiver.transportName] = InfoIframeReceiver;\n var parentOrigin;\n\n /* eslint-disable camelcase */\n SockJS.bootstrap_iframe = function() {\n /* eslint-enable camelcase */\n var facade;\n iframeUtils.currentWindowId = loc.hash.slice(1);\n var onMessage = function(e) {\n if (e.source !== parent) {\n return;\n }\n if (typeof parentOrigin === 'undefined') {\n parentOrigin = e.origin;\n }\n if (e.origin !== parentOrigin) {\n return;\n }\n\n var iframeMessage;\n try {\n iframeMessage = JSON3.parse(e.data);\n } catch (ignored) {\n debug('bad json', e.data);\n return;\n }\n\n if (iframeMessage.windowId !== iframeUtils.currentWindowId) {\n return;\n }\n switch (iframeMessage.type) {\n case 's':\n var p;\n try {\n p = JSON3.parse(iframeMessage.data);\n } catch (ignored) {\n debug('bad json', iframeMessage.data);\n break;\n }\n var version = p[0];\n var transport = p[1];\n var transUrl = p[2];\n var baseUrl = p[3];\n debug(version, transport, transUrl, baseUrl);\n // change this to semver logic\n if (version !== SockJS.version) {\n throw new Error('Incompatible SockJS! Main site uses:' +\n ' \"' + version + '\", the iframe:' +\n ' \"' + SockJS.version + '\".');\n }\n\n if (!urlUtils.isOriginEqual(transUrl, loc.href) ||\n !urlUtils.isOriginEqual(baseUrl, loc.href)) {\n throw new Error('Can\\'t connect to different domain from within an ' +\n 'iframe. (' + loc.href + ', ' + transUrl + ', ' + baseUrl + ')');\n }\n facade = new FacadeJS(new transportMap[transport](transUrl, baseUrl));\n break;\n case 'm':\n facade._send(iframeMessage.data);\n break;\n case 'c':\n if (facade) {\n facade._close();\n }\n facade = null;\n break;\n }\n };\n\n eventUtils.attachEvent('message', onMessage);\n\n // Start\n iframeUtils.postMessage('s');\n };\n};\n","'use strict';\n\nvar EventEmitter = require('events').EventEmitter\n , inherits = require('inherits')\n , JSON3 = require('json3')\n , objectUtils = require('./utils/object')\n ;\n\nvar debug = function() {};\nif (\"production\" !== 'production') {\n debug = require('debug')('sockjs-client:info-ajax');\n}\n\nfunction InfoAjax(url, AjaxObject) {\n EventEmitter.call(this);\n\n var self = this;\n var t0 = +new Date();\n this.xo = new AjaxObject('GET', url);\n\n this.xo.once('finish', function(status, text) {\n var info, rtt;\n if (status === 200) {\n rtt = (+new Date()) - t0;\n if (text) {\n try {\n info = JSON3.parse(text);\n } catch (e) {\n debug('bad json', text);\n }\n }\n\n if (!objectUtils.isObject(info)) {\n info = {};\n }\n }\n self.emit('finish', info, rtt);\n self.removeAllListeners();\n });\n}\n\ninherits(InfoAjax, EventEmitter);\n\nInfoAjax.prototype.close = function() {\n this.removeAllListeners();\n this.xo.close();\n};\n\nmodule.exports = InfoAjax;\n","'use strict';\n\nvar inherits = require('inherits')\n , EventEmitter = require('events').EventEmitter\n , JSON3 = require('json3')\n , XHRLocalObject = require('./transport/sender/xhr-local')\n , InfoAjax = require('./info-ajax')\n ;\n\nfunction InfoReceiverIframe(transUrl) {\n var self = this;\n EventEmitter.call(this);\n\n this.ir = new InfoAjax(transUrl, XHRLocalObject);\n this.ir.once('finish', function(info, rtt) {\n self.ir = null;\n self.emit('message', JSON3.stringify([info, rtt]));\n });\n}\n\ninherits(InfoReceiverIframe, EventEmitter);\n\nInfoReceiverIframe.transportName = 'iframe-info-receiver';\n\nInfoReceiverIframe.prototype.close = function() {\n if (this.ir) {\n this.ir.close();\n this.ir = null;\n }\n this.removeAllListeners();\n};\n\nmodule.exports = InfoReceiverIframe;\n","'use strict';\n\nvar EventEmitter = require('events').EventEmitter\n , inherits = require('inherits')\n , JSON3 = require('json3')\n , utils = require('./utils/event')\n , IframeTransport = require('./transport/iframe')\n , InfoReceiverIframe = require('./info-iframe-receiver')\n ;\n\nvar debug = function() {};\nif (\"production\" !== 'production') {\n debug = require('debug')('sockjs-client:info-iframe');\n}\n\nfunction InfoIframe(baseUrl, url) {\n var self = this;\n EventEmitter.call(this);\n\n var go = function() {\n var ifr = self.ifr = new IframeTransport(InfoReceiverIframe.transportName, url, baseUrl);\n\n ifr.once('message', function(msg) {\n if (msg) {\n var d;\n try {\n d = JSON3.parse(msg);\n } catch (e) {\n debug('bad json', msg);\n self.emit('finish');\n self.close();\n return;\n }\n\n var info = d[0], rtt = d[1];\n self.emit('finish', info, rtt);\n }\n self.close();\n });\n\n ifr.once('close', function() {\n self.emit('finish');\n self.close();\n });\n };\n\n // TODO this seems the same as the 'needBody' from transports\n if (!global.document.body) {\n utils.attachEvent('load', go);\n } else {\n go();\n }\n}\n\ninherits(InfoIframe, EventEmitter);\n\nInfoIframe.enabled = function() {\n return IframeTransport.enabled();\n};\n\nInfoIframe.prototype.close = function() {\n if (this.ifr) {\n this.ifr.close();\n }\n this.removeAllListeners();\n this.ifr = null;\n};\n\nmodule.exports = InfoIframe;\n","'use strict';\n\nvar EventEmitter = require('events').EventEmitter\n , inherits = require('inherits')\n , urlUtils = require('./utils/url')\n , XDR = require('./transport/sender/xdr')\n , XHRCors = require('./transport/sender/xhr-cors')\n , XHRLocal = require('./transport/sender/xhr-local')\n , XHRFake = require('./transport/sender/xhr-fake')\n , InfoIframe = require('./info-iframe')\n , InfoAjax = require('./info-ajax')\n ;\n\nvar debug = function() {};\nif (\"production\" !== 'production') {\n debug = require('debug')('sockjs-client:info-receiver');\n}\n\nfunction InfoReceiver(baseUrl, urlInfo) {\n debug(baseUrl);\n var self = this;\n EventEmitter.call(this);\n\n setTimeout(function() {\n self.doXhr(baseUrl, urlInfo);\n }, 0);\n}\n\ninherits(InfoReceiver, EventEmitter);\n\n// TODO this is currently ignoring the list of available transports and the whitelist\n\nInfoReceiver._getReceiver = function(baseUrl, url, urlInfo) {\n // determine method of CORS support (if needed)\n if (urlInfo.sameOrigin) {\n return new InfoAjax(url, XHRLocal);\n }\n if (XHRCors.enabled) {\n return new InfoAjax(url, XHRCors);\n }\n if (XDR.enabled && urlInfo.sameScheme) {\n return new InfoAjax(url, XDR);\n }\n if (InfoIframe.enabled()) {\n return new InfoIframe(baseUrl, url);\n }\n return new InfoAjax(url, XHRFake);\n};\n\nInfoReceiver.prototype.doXhr = function(baseUrl, urlInfo) {\n var self = this\n , url = urlUtils.addPath(baseUrl, '/info')\n ;\n debug('doXhr', url);\n\n this.xo = InfoReceiver._getReceiver(baseUrl, url, urlInfo);\n\n this.timeoutRef = setTimeout(function() {\n debug('timeout');\n self._cleanup(false);\n self.emit('finish');\n }, InfoReceiver.timeout);\n\n this.xo.once('finish', function(info, rtt) {\n debug('finish', info, rtt);\n self._cleanup(true);\n self.emit('finish', info, rtt);\n });\n};\n\nInfoReceiver.prototype._cleanup = function(wasClean) {\n debug('_cleanup');\n clearTimeout(this.timeoutRef);\n this.timeoutRef = null;\n if (!wasClean && this.xo) {\n this.xo.close();\n }\n this.xo = null;\n};\n\nInfoReceiver.prototype.close = function() {\n debug('close');\n this.removeAllListeners();\n this._cleanup(false);\n};\n\nInfoReceiver.timeout = 8000;\n\nmodule.exports = InfoReceiver;\n","'use strict';\n\nmodule.exports = global.location || {\n origin: 'http://localhost:80'\n, protocol: 'http:'\n, host: 'localhost'\n, port: 80\n, href: 'http://localhost/'\n, hash: ''\n};\n","'use strict';\n\nrequire('./shims');\n\nvar URL = require('url-parse')\n , inherits = require('inherits')\n , JSON3 = require('json3')\n , random = require('./utils/random')\n , escape = require('./utils/escape')\n , urlUtils = require('./utils/url')\n , eventUtils = require('./utils/event')\n , transport = require('./utils/transport')\n , objectUtils = require('./utils/object')\n , browser = require('./utils/browser')\n , log = require('./utils/log')\n , Event = require('./event/event')\n , EventTarget = require('./event/eventtarget')\n , loc = require('./location')\n , CloseEvent = require('./event/close')\n , TransportMessageEvent = require('./event/trans-message')\n , InfoReceiver = require('./info-receiver')\n ;\n\nvar debug = function() {};\nif (\"production\" !== 'production') {\n debug = require('debug')('sockjs-client:main');\n}\n\nvar transports;\n\n// follow constructor steps defined at http://dev.w3.org/html5/websockets/#the-websocket-interface\nfunction SockJS(url, protocols, options) {\n if (!(this instanceof SockJS)) {\n return new SockJS(url, protocols, options);\n }\n if (arguments.length < 1) {\n throw new TypeError(\"Failed to construct 'SockJS: 1 argument required, but only 0 present\");\n }\n EventTarget.call(this);\n\n this.readyState = SockJS.CONNECTING;\n this.extensions = '';\n this.protocol = '';\n\n // non-standard extension\n options = options || {};\n if (options.protocols_whitelist) {\n log.warn(\"'protocols_whitelist' is DEPRECATED. Use 'transports' instead.\");\n }\n this._transportsWhitelist = options.transports;\n this._transportOptions = options.transportOptions || {};\n\n var sessionId = options.sessionId || 8;\n if (typeof sessionId === 'function') {\n this._generateSessionId = sessionId;\n } else if (typeof sessionId === 'number') {\n this._generateSessionId = function() {\n return random.string(sessionId);\n };\n } else {\n throw new TypeError('If sessionId is used in the options, it needs to be a number or a function.');\n }\n\n this._server = options.server || random.numberString(1000);\n\n // Step 1 of WS spec - parse and validate the url. Issue #8\n var parsedUrl = new URL(url);\n if (!parsedUrl.host || !parsedUrl.protocol) {\n throw new SyntaxError(\"The URL '\" + url + \"' is invalid\");\n } else if (parsedUrl.hash) {\n throw new SyntaxError('The URL must not contain a fragment');\n } else if (parsedUrl.protocol !== 'http:' && parsedUrl.protocol !== 'https:') {\n throw new SyntaxError(\"The URL's scheme must be either 'http:' or 'https:'. '\" + parsedUrl.protocol + \"' is not allowed.\");\n }\n\n var secure = parsedUrl.protocol === 'https:';\n // Step 2 - don't allow secure origin with an insecure protocol\n if (loc.protocol === 'https:' && !secure) {\n throw new Error('SecurityError: An insecure SockJS connection may not be initiated from a page loaded over HTTPS');\n }\n\n // Step 3 - check port access - no need here\n // Step 4 - parse protocols argument\n if (!protocols) {\n protocols = [];\n } else if (!Array.isArray(protocols)) {\n protocols = [protocols];\n }\n\n // Step 5 - check protocols argument\n var sortedProtocols = protocols.sort();\n sortedProtocols.forEach(function(proto, i) {\n if (!proto) {\n throw new SyntaxError(\"The protocols entry '\" + proto + \"' is invalid.\");\n }\n if (i < (sortedProtocols.length - 1) && proto === sortedProtocols[i + 1]) {\n throw new SyntaxError(\"The protocols entry '\" + proto + \"' is duplicated.\");\n }\n });\n\n // Step 6 - convert origin\n var o = urlUtils.getOrigin(loc.href);\n this._origin = o ? o.toLowerCase() : null;\n\n // remove the trailing slash\n parsedUrl.set('pathname', parsedUrl.pathname.replace(/\\/+$/, ''));\n\n // store the sanitized url\n this.url = parsedUrl.href;\n debug('using url', this.url);\n\n // Step 7 - start connection in background\n // obtain server info\n // http://sockjs.github.io/sockjs-protocol/sockjs-protocol-0.3.3.html#section-26\n this._urlInfo = {\n nullOrigin: !browser.hasDomain()\n , sameOrigin: urlUtils.isOriginEqual(this.url, loc.href)\n , sameScheme: urlUtils.isSchemeEqual(this.url, loc.href)\n };\n\n this._ir = new InfoReceiver(this.url, this._urlInfo);\n this._ir.once('finish', this._receiveInfo.bind(this));\n}\n\ninherits(SockJS, EventTarget);\n\nfunction userSetCode(code) {\n return code === 1000 || (code >= 3000 && code <= 4999);\n}\n\nSockJS.prototype.close = function(code, reason) {\n // Step 1\n if (code && !userSetCode(code)) {\n throw new Error('InvalidAccessError: Invalid code');\n }\n // Step 2.4 states the max is 123 bytes, but we are just checking length\n if (reason && reason.length > 123) {\n throw new SyntaxError('reason argument has an invalid length');\n }\n\n // Step 3.1\n if (this.readyState === SockJS.CLOSING || this.readyState === SockJS.CLOSED) {\n return;\n }\n\n // TODO look at docs to determine how to set this\n var wasClean = true;\n this._close(code || 1000, reason || 'Normal closure', wasClean);\n};\n\nSockJS.prototype.send = function(data) {\n // #13 - convert anything non-string to string\n // TODO this currently turns objects into [object Object]\n if (typeof data !== 'string') {\n data = '' + data;\n }\n if (this.readyState === SockJS.CONNECTING) {\n throw new Error('InvalidStateError: The connection has not been established yet');\n }\n if (this.readyState !== SockJS.OPEN) {\n return;\n }\n this._transport.send(escape.quote(data));\n};\n\nSockJS.version = require('./version');\n\nSockJS.CONNECTING = 0;\nSockJS.OPEN = 1;\nSockJS.CLOSING = 2;\nSockJS.CLOSED = 3;\n\nSockJS.prototype._receiveInfo = function(info, rtt) {\n debug('_receiveInfo', rtt);\n this._ir = null;\n if (!info) {\n this._close(1002, 'Cannot connect to server');\n return;\n }\n\n // establish a round-trip timeout (RTO) based on the\n // round-trip time (RTT)\n this._rto = this.countRTO(rtt);\n // allow server to override url used for the actual transport\n this._transUrl = info.base_url ? info.base_url : this.url;\n info = objectUtils.extend(info, this._urlInfo);\n debug('info', info);\n // determine list of desired and supported transports\n var enabledTransports = transports.filterToEnabled(this._transportsWhitelist, info);\n this._transports = enabledTransports.main;\n debug(this._transports.length + ' enabled transports');\n\n this._connect();\n};\n\nSockJS.prototype._connect = function() {\n for (var Transport = this._transports.shift(); Transport; Transport = this._transports.shift()) {\n debug('attempt', Transport.transportName);\n if (Transport.needBody) {\n if (!global.document.body ||\n (typeof global.document.readyState !== 'undefined' &&\n global.document.readyState !== 'complete' &&\n global.document.readyState !== 'interactive')) {\n debug('waiting for body');\n this._transports.unshift(Transport);\n eventUtils.attachEvent('load', this._connect.bind(this));\n return;\n }\n }\n\n // calculate timeout based on RTO and round trips. Default to 5s\n var timeoutMs = (this._rto * Transport.roundTrips) || 5000;\n this._transportTimeoutId = setTimeout(this._transportTimeout.bind(this), timeoutMs);\n debug('using timeout', timeoutMs);\n\n var transportUrl = urlUtils.addPath(this._transUrl, '/' + this._server + '/' + this._generateSessionId());\n var options = this._transportOptions[Transport.transportName];\n debug('transport url', transportUrl);\n var transportObj = new Transport(transportUrl, this._transUrl, options);\n transportObj.on('message', this._transportMessage.bind(this));\n transportObj.once('close', this._transportClose.bind(this));\n transportObj.transportName = Transport.transportName;\n this._transport = transportObj;\n\n return;\n }\n this._close(2000, 'All transports failed', false);\n};\n\nSockJS.prototype._transportTimeout = function() {\n debug('_transportTimeout');\n if (this.readyState === SockJS.CONNECTING) {\n if (this._transport) {\n this._transport.close();\n }\n\n this._transportClose(2007, 'Transport timed out');\n }\n};\n\nSockJS.prototype._transportMessage = function(msg) {\n debug('_transportMessage', msg);\n var self = this\n , type = msg.slice(0, 1)\n , content = msg.slice(1)\n , payload\n ;\n\n // first check for messages that don't need a payload\n switch (type) {\n case 'o':\n this._open();\n return;\n case 'h':\n this.dispatchEvent(new Event('heartbeat'));\n debug('heartbeat', this.transport);\n return;\n }\n\n if (content) {\n try {\n payload = JSON3.parse(content);\n } catch (e) {\n debug('bad json', content);\n }\n }\n\n if (typeof payload === 'undefined') {\n debug('empty payload', content);\n return;\n }\n\n switch (type) {\n case 'a':\n if (Array.isArray(payload)) {\n payload.forEach(function(p) {\n debug('message', self.transport, p);\n self.dispatchEvent(new TransportMessageEvent(p));\n });\n }\n break;\n case 'm':\n debug('message', this.transport, payload);\n this.dispatchEvent(new TransportMessageEvent(payload));\n break;\n case 'c':\n if (Array.isArray(payload) && payload.length === 2) {\n this._close(payload[0], payload[1], true);\n }\n break;\n }\n};\n\nSockJS.prototype._transportClose = function(code, reason) {\n debug('_transportClose', this.transport, code, reason);\n if (this._transport) {\n this._transport.removeAllListeners();\n this._transport = null;\n this.transport = null;\n }\n\n if (!userSetCode(code) && code !== 2000 && this.readyState === SockJS.CONNECTING) {\n this._connect();\n return;\n }\n\n this._close(code, reason);\n};\n\nSockJS.prototype._open = function() {\n debug('_open', this._transport.transportName, this.readyState);\n if (this.readyState === SockJS.CONNECTING) {\n if (this._transportTimeoutId) {\n clearTimeout(this._transportTimeoutId);\n this._transportTimeoutId = null;\n }\n this.readyState = SockJS.OPEN;\n this.transport = this._transport.transportName;\n this.dispatchEvent(new Event('open'));\n debug('connected', this.transport);\n } else {\n // The server might have been restarted, and lost track of our\n // connection.\n this._close(1006, 'Server lost session');\n }\n};\n\nSockJS.prototype._close = function(code, reason, wasClean) {\n debug('_close', this.transport, code, reason, wasClean, this.readyState);\n var forceFail = false;\n\n if (this._ir) {\n forceFail = true;\n this._ir.close();\n this._ir = null;\n }\n if (this._transport) {\n this._transport.close();\n this._transport = null;\n this.transport = null;\n }\n\n if (this.readyState === SockJS.CLOSED) {\n throw new Error('InvalidStateError: SockJS has already been closed');\n }\n\n this.readyState = SockJS.CLOSING;\n setTimeout(function() {\n this.readyState = SockJS.CLOSED;\n\n if (forceFail) {\n this.dispatchEvent(new Event('error'));\n }\n\n var e = new CloseEvent('close');\n e.wasClean = wasClean || false;\n e.code = code || 1000;\n e.reason = reason;\n\n this.dispatchEvent(e);\n this.onmessage = this.onclose = this.onerror = null;\n debug('disconnected');\n }.bind(this), 0);\n};\n\n// See: http://www.erg.abdn.ac.uk/~gerrit/dccp/notes/ccid2/rto_estimator/\n// and RFC 2988.\nSockJS.prototype.countRTO = function(rtt) {\n // In a local environment, when using IE8/9 and the `jsonp-polling`\n // transport the time needed to establish a connection (the time that pass\n // from the opening of the transport to the call of `_dispatchOpen`) is\n // around 200msec (the lower bound used in the article above) and this\n // causes spurious timeouts. For this reason we calculate a value slightly\n // larger than that used in the article.\n if (rtt > 100) {\n return 4 * rtt; // rto > 400msec\n }\n return 300 + rtt; // 300msec < rto <= 400msec\n};\n\nmodule.exports = function(availableTransports) {\n transports = transport(availableTransports);\n require('./iframe-bootstrap')(SockJS, availableTransports);\n return SockJS;\n};\n","/* eslint-disable */\n/* jscs: disable */\n'use strict';\n\n// pulled specific shims from https://github.com/es-shims/es5-shim\n\nvar ArrayPrototype = Array.prototype;\nvar ObjectPrototype = Object.prototype;\nvar FunctionPrototype = Function.prototype;\nvar StringPrototype = String.prototype;\nvar array_slice = ArrayPrototype.slice;\n\nvar _toString = ObjectPrototype.toString;\nvar isFunction = function (val) {\n return ObjectPrototype.toString.call(val) === '[object Function]';\n};\nvar isArray = function isArray(obj) {\n return _toString.call(obj) === '[object Array]';\n};\nvar isString = function isString(obj) {\n return _toString.call(obj) === '[object String]';\n};\n\nvar supportsDescriptors = Object.defineProperty && (function () {\n try {\n Object.defineProperty({}, 'x', {});\n return true;\n } catch (e) { /* this is ES3 */\n return false;\n }\n}());\n\n// Define configurable, writable and non-enumerable props\n// if they don't exist.\nvar defineProperty;\nif (supportsDescriptors) {\n defineProperty = function (object, name, method, forceAssign) {\n if (!forceAssign && (name in object)) { return; }\n Object.defineProperty(object, name, {\n configurable: true,\n enumerable: false,\n writable: true,\n value: method\n });\n };\n} else {\n defineProperty = function (object, name, method, forceAssign) {\n if (!forceAssign && (name in object)) { return; }\n object[name] = method;\n };\n}\nvar defineProperties = function (object, map, forceAssign) {\n for (var name in map) {\n if (ObjectPrototype.hasOwnProperty.call(map, name)) {\n defineProperty(object, name, map[name], forceAssign);\n }\n }\n};\n\nvar toObject = function (o) {\n if (o == null) { // this matches both null and undefined\n throw new TypeError(\"can't convert \" + o + ' to object');\n }\n return Object(o);\n};\n\n//\n// Util\n// ======\n//\n\n// ES5 9.4\n// http://es5.github.com/#x9.4\n// http://jsperf.com/to-integer\n\nfunction toInteger(num) {\n var n = +num;\n if (n !== n) { // isNaN\n n = 0;\n } else if (n !== 0 && n !== (1 / 0) && n !== -(1 / 0)) {\n n = (n > 0 || -1) * Math.floor(Math.abs(n));\n }\n return n;\n}\n\nfunction ToUint32(x) {\n return x >>> 0;\n}\n\n//\n// Function\n// ========\n//\n\n// ES-5 15.3.4.5\n// http://es5.github.com/#x15.3.4.5\n\nfunction Empty() {}\n\ndefineProperties(FunctionPrototype, {\n bind: function bind(that) { // .length is 1\n // 1. Let Target be the this value.\n var target = this;\n // 2. If IsCallable(Target) is false, throw a TypeError exception.\n if (!isFunction(target)) {\n throw new TypeError('Function.prototype.bind called on incompatible ' + target);\n }\n // 3. Let A be a new (possibly empty) internal list of all of the\n // argument values provided after thisArg (arg1, arg2 etc), in order.\n // XXX slicedArgs will stand in for \"A\" if used\n var args = array_slice.call(arguments, 1); // for normal call\n // 4. Let F be a new native ECMAScript object.\n // 11. Set the [[Prototype]] internal property of F to the standard\n // built-in Function prototype object as specified in 15.3.3.1.\n // 12. Set the [[Call]] internal property of F as described in\n // 15.3.4.5.1.\n // 13. Set the [[Construct]] internal property of F as described in\n // 15.3.4.5.2.\n // 14. Set the [[HasInstance]] internal property of F as described in\n // 15.3.4.5.3.\n var binder = function () {\n\n if (this instanceof bound) {\n // 15.3.4.5.2 [[Construct]]\n // When the [[Construct]] internal method of a function object,\n // F that was created using the bind function is called with a\n // list of arguments ExtraArgs, the following steps are taken:\n // 1. Let target be the value of F's [[TargetFunction]]\n // internal property.\n // 2. If target has no [[Construct]] internal method, a\n // TypeError exception is thrown.\n // 3. Let boundArgs be the value of F's [[BoundArgs]] internal\n // property.\n // 4. Let args be a new list containing the same values as the\n // list boundArgs in the same order followed by the same\n // values as the list ExtraArgs in the same order.\n // 5. Return the result of calling the [[Construct]] internal\n // method of target providing args as the arguments.\n\n var result = target.apply(\n this,\n args.concat(array_slice.call(arguments))\n );\n if (Object(result) === result) {\n return result;\n }\n return this;\n\n } else {\n // 15.3.4.5.1 [[Call]]\n // When the [[Call]] internal method of a function object, F,\n // which was created using the bind function is called with a\n // this value and a list of arguments ExtraArgs, the following\n // steps are taken:\n // 1. Let boundArgs be the value of F's [[BoundArgs]] internal\n // property.\n // 2. Let boundThis be the value of F's [[BoundThis]] internal\n // property.\n // 3. Let target be the value of F's [[TargetFunction]] internal\n // property.\n // 4. Let args be a new list containing the same values as the\n // list boundArgs in the same order followed by the same\n // values as the list ExtraArgs in the same order.\n // 5. Return the result of calling the [[Call]] internal method\n // of target providing boundThis as the this value and\n // providing args as the arguments.\n\n // equiv: target.call(this, ...boundArgs, ...args)\n return target.apply(\n that,\n args.concat(array_slice.call(arguments))\n );\n\n }\n\n };\n\n // 15. If the [[Class]] internal property of Target is \"Function\", then\n // a. Let L be the length property of Target minus the length of A.\n // b. Set the length own property of F to either 0 or L, whichever is\n // larger.\n // 16. Else set the length own property of F to 0.\n\n var boundLength = Math.max(0, target.length - args.length);\n\n // 17. Set the attributes of the length own property of F to the values\n // specified in 15.3.5.1.\n var boundArgs = [];\n for (var i = 0; i < boundLength; i++) {\n boundArgs.push('$' + i);\n }\n\n // XXX Build a dynamic function with desired amount of arguments is the only\n // way to set the length property of a function.\n // In environments where Content Security Policies enabled (Chrome extensions,\n // for ex.) all use of eval or Function costructor throws an exception.\n // However in all of these environments Function.prototype.bind exists\n // and so this code will never be executed.\n var bound = Function('binder', 'return function (' + boundArgs.join(',') + '){ return binder.apply(this, arguments); }')(binder);\n\n if (target.prototype) {\n Empty.prototype = target.prototype;\n bound.prototype = new Empty();\n // Clean up dangling references.\n Empty.prototype = null;\n }\n\n // TODO\n // 18. Set the [[Extensible]] internal property of F to true.\n\n // TODO\n // 19. Let thrower be the [[ThrowTypeError]] function Object (13.2.3).\n // 20. Call the [[DefineOwnProperty]] internal method of F with\n // arguments \"caller\", PropertyDescriptor {[[Get]]: thrower, [[Set]]:\n // thrower, [[Enumerable]]: false, [[Configurable]]: false}, and\n // false.\n // 21. Call the [[DefineOwnProperty]] internal method of F with\n // arguments \"arguments\", PropertyDescriptor {[[Get]]: thrower,\n // [[Set]]: thrower, [[Enumerable]]: false, [[Configurable]]: false},\n // and false.\n\n // TODO\n // NOTE Function objects created using Function.prototype.bind do not\n // have a prototype property or the [[Code]], [[FormalParameters]], and\n // [[Scope]] internal properties.\n // XXX can't delete prototype in pure-js.\n\n // 22. Return F.\n return bound;\n }\n});\n\n//\n// Array\n// =====\n//\n\n// ES5 15.4.3.2\n// http://es5.github.com/#x15.4.3.2\n// https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/isArray\ndefineProperties(Array, { isArray: isArray });\n\n\nvar boxedString = Object('a');\nvar splitString = boxedString[0] !== 'a' || !(0 in boxedString);\n\nvar properlyBoxesContext = function properlyBoxed(method) {\n // Check node 0.6.21 bug where third parameter is not boxed\n var properlyBoxesNonStrict = true;\n var properlyBoxesStrict = true;\n if (method) {\n method.call('foo', function (_, __, context) {\n if (typeof context !== 'object') { properlyBoxesNonStrict = false; }\n });\n\n method.call([1], function () {\n 'use strict';\n properlyBoxesStrict = typeof this === 'string';\n }, 'x');\n }\n return !!method && properlyBoxesNonStrict && properlyBoxesStrict;\n};\n\ndefineProperties(ArrayPrototype, {\n forEach: function forEach(fun /*, thisp*/) {\n var object = toObject(this),\n self = splitString && isString(this) ? this.split('') : object,\n thisp = arguments[1],\n i = -1,\n length = self.length >>> 0;\n\n // If no callback function or if callback is not a callable function\n if (!isFunction(fun)) {\n throw new TypeError(); // TODO message\n }\n\n while (++i < length) {\n if (i in self) {\n // Invoke the callback function with call, passing arguments:\n // context, property value, property key, thisArg object\n // context\n fun.call(thisp, self[i], i, object);\n }\n }\n }\n}, !properlyBoxesContext(ArrayPrototype.forEach));\n\n// ES5 15.4.4.14\n// http://es5.github.com/#x15.4.4.14\n// https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/indexOf\nvar hasFirefox2IndexOfBug = Array.prototype.indexOf && [0, 1].indexOf(1, 2) !== -1;\ndefineProperties(ArrayPrototype, {\n indexOf: function indexOf(sought /*, fromIndex */ ) {\n var self = splitString && isString(this) ? this.split('') : toObject(this),\n length = self.length >>> 0;\n\n if (!length) {\n return -1;\n }\n\n var i = 0;\n if (arguments.length > 1) {\n i = toInteger(arguments[1]);\n }\n\n // handle negative indices\n i = i >= 0 ? i : Math.max(0, length + i);\n for (; i < length; i++) {\n if (i in self && self[i] === sought) {\n return i;\n }\n }\n return -1;\n }\n}, hasFirefox2IndexOfBug);\n\n//\n// String\n// ======\n//\n\n// ES5 15.5.4.14\n// http://es5.github.com/#x15.5.4.14\n\n// [bugfix, IE lt 9, firefox 4, Konqueror, Opera, obscure browsers]\n// Many browsers do not split properly with regular expressions or they\n// do not perform the split correctly under obscure conditions.\n// See http://blog.stevenlevithan.com/archives/cross-browser-split\n// I've tested in many browsers and this seems to cover the deviant ones:\n// 'ab'.split(/(?:ab)*/) should be [\"\", \"\"], not [\"\"]\n// '.'.split(/(.?)(.?)/) should be [\"\", \".\", \"\", \"\"], not [\"\", \"\"]\n// 'tesst'.split(/(s)*/) should be [\"t\", undefined, \"e\", \"s\", \"t\"], not\n// [undefined, \"t\", undefined, \"e\", ...]\n// ''.split(/.?/) should be [], not [\"\"]\n// '.'.split(/()()/) should be [\".\"], not [\"\", \"\", \".\"]\n\nvar string_split = StringPrototype.split;\nif (\n 'ab'.split(/(?:ab)*/).length !== 2 ||\n '.'.split(/(.?)(.?)/).length !== 4 ||\n 'tesst'.split(/(s)*/)[1] === 't' ||\n 'test'.split(/(?:)/, -1).length !== 4 ||\n ''.split(/.?/).length ||\n '.'.split(/()()/).length > 1\n) {\n (function () {\n var compliantExecNpcg = /()??/.exec('')[1] === void 0; // NPCG: nonparticipating capturing group\n\n StringPrototype.split = function (separator, limit) {\n var string = this;\n if (separator === void 0 && limit === 0) {\n return [];\n }\n\n // If `separator` is not a regex, use native split\n if (_toString.call(separator) !== '[object RegExp]') {\n return string_split.call(this, separator, limit);\n }\n\n var output = [],\n flags = (separator.ignoreCase ? 'i' : '') +\n (separator.multiline ? 'm' : '') +\n (separator.extended ? 'x' : '') + // Proposed for ES6\n (separator.sticky ? 'y' : ''), // Firefox 3+\n lastLastIndex = 0,\n // Make `global` and avoid `lastIndex` issues by working with a copy\n separator2, match, lastIndex, lastLength;\n separator = new RegExp(separator.source, flags + 'g');\n string += ''; // Type-convert\n if (!compliantExecNpcg) {\n // Doesn't need flags gy, but they don't hurt\n separator2 = new RegExp('^' + separator.source + '$(?!\\\\s)', flags);\n }\n /* Values for `limit`, per the spec:\n * If undefined: 4294967295 // Math.pow(2, 32) - 1\n * If 0, Infinity, or NaN: 0\n * If positive number: limit = Math.floor(limit); if (limit > 4294967295) limit -= 4294967296;\n * If negative number: 4294967296 - Math.floor(Math.abs(limit))\n * If other: Type-convert, then use the above rules\n */\n limit = limit === void 0 ?\n -1 >>> 0 : // Math.pow(2, 32) - 1\n ToUint32(limit);\n while (match = separator.exec(string)) {\n // `separator.lastIndex` is not reliable cross-browser\n lastIndex = match.index + match[0].length;\n if (lastIndex > lastLastIndex) {\n output.push(string.slice(lastLastIndex, match.index));\n // Fix browsers whose `exec` methods don't consistently return `undefined` for\n // nonparticipating capturing groups\n if (!compliantExecNpcg && match.length > 1) {\n match[0].replace(separator2, function () {\n for (var i = 1; i < arguments.length - 2; i++) {\n if (arguments[i] === void 0) {\n match[i] = void 0;\n }\n }\n });\n }\n if (match.length > 1 && match.index < string.length) {\n ArrayPrototype.push.apply(output, match.slice(1));\n }\n lastLength = match[0].length;\n lastLastIndex = lastIndex;\n if (output.length >= limit) {\n break;\n }\n }\n if (separator.lastIndex === match.index) {\n separator.lastIndex++; // Avoid an infinite loop\n }\n }\n if (lastLastIndex === string.length) {\n if (lastLength || !separator.test('')) {\n output.push('');\n }\n } else {\n output.push(string.slice(lastLastIndex));\n }\n return output.length > limit ? output.slice(0, limit) : output;\n };\n }());\n\n// [bugfix, chrome]\n// If separator is undefined, then the result array contains just one String,\n// which is the this value (converted to a String). If limit is not undefined,\n// then the output array is truncated so that it contains no more than limit\n// elements.\n// \"0\".split(undefined, 0) -> []\n} else if ('0'.split(void 0, 0).length) {\n StringPrototype.split = function split(separator, limit) {\n if (separator === void 0 && limit === 0) { return []; }\n return string_split.call(this, separator, limit);\n };\n}\n\n// ECMA-262, 3rd B.2.3\n// Not an ECMAScript standard, although ECMAScript 3rd Edition has a\n// non-normative section suggesting uniform semantics and it should be\n// normalized across all browsers\n// [bugfix, IE lt 9] IE < 9 substr() with negative value not working in IE\nvar string_substr = StringPrototype.substr;\nvar hasNegativeSubstrBug = ''.substr && '0b'.substr(-1) !== 'b';\ndefineProperties(StringPrototype, {\n substr: function substr(start, length) {\n return string_substr.call(\n this,\n start < 0 ? ((start = this.length + start) < 0 ? 0 : start) : start,\n length\n );\n }\n}, hasNegativeSubstrBug);\n","'use strict';\n\nmodule.exports = [\n // streaming transports\n require('./transport/websocket')\n, require('./transport/xhr-streaming')\n, require('./transport/xdr-streaming')\n, require('./transport/eventsource')\n, require('./transport/lib/iframe-wrap')(require('./transport/eventsource'))\n\n // polling transports\n, require('./transport/htmlfile')\n, require('./transport/lib/iframe-wrap')(require('./transport/htmlfile'))\n, require('./transport/xhr-polling')\n, require('./transport/xdr-polling')\n, require('./transport/lib/iframe-wrap')(require('./transport/xhr-polling'))\n, require('./transport/jsonp-polling')\n];\n","'use strict';\n\nvar EventEmitter = require('events').EventEmitter\n , inherits = require('inherits')\n , utils = require('../../utils/event')\n , urlUtils = require('../../utils/url')\n , XHR = global.XMLHttpRequest\n ;\n\nvar debug = function() {};\nif (\"production\" !== 'production') {\n debug = require('debug')('sockjs-client:browser:xhr');\n}\n\nfunction AbstractXHRObject(method, url, payload, opts) {\n debug(method, url);\n var self = this;\n EventEmitter.call(this);\n\n setTimeout(function () {\n self._start(method, url, payload, opts);\n }, 0);\n}\n\ninherits(AbstractXHRObject, EventEmitter);\n\nAbstractXHRObject.prototype._start = function(method, url, payload, opts) {\n var self = this;\n\n try {\n this.xhr = new XHR();\n } catch (x) {\n // intentionally empty\n }\n\n if (!this.xhr) {\n debug('no xhr');\n this.emit('finish', 0, 'no xhr support');\n this._cleanup();\n return;\n }\n\n // several browsers cache POSTs\n url = urlUtils.addQuery(url, 't=' + (+new Date()));\n\n // Explorer tends to keep connection open, even after the\n // tab gets closed: http://bugs.jquery.com/ticket/5280\n this.unloadRef = utils.unloadAdd(function() {\n debug('unload cleanup');\n self._cleanup(true);\n });\n try {\n this.xhr.open(method, url, true);\n if (this.timeout && 'timeout' in this.xhr) {\n this.xhr.timeout = this.timeout;\n this.xhr.ontimeout = function() {\n debug('xhr timeout');\n self.emit('finish', 0, '');\n self._cleanup(false);\n };\n }\n } catch (e) {\n debug('exception', e);\n // IE raises an exception on wrong port.\n this.emit('finish', 0, '');\n this._cleanup(false);\n return;\n }\n\n if ((!opts || !opts.noCredentials) && AbstractXHRObject.supportsCORS) {\n debug('withCredentials');\n // Mozilla docs says https://developer.mozilla.org/en/XMLHttpRequest :\n // \"This never affects same-site requests.\"\n\n this.xhr.withCredentials = true;\n }\n if (opts && opts.headers) {\n for (var key in opts.headers) {\n this.xhr.setRequestHeader(key, opts.headers[key]);\n }\n }\n\n this.xhr.onreadystatechange = function() {\n if (self.xhr) {\n var x = self.xhr;\n var text, status;\n debug('readyState', x.readyState);\n switch (x.readyState) {\n case 3:\n // IE doesn't like peeking into responseText or status\n // on Microsoft.XMLHTTP and readystate=3\n try {\n status = x.status;\n text = x.responseText;\n } catch (e) {\n // intentionally empty\n }\n debug('status', status);\n // IE returns 1223 for 204: http://bugs.jquery.com/ticket/1450\n if (status === 1223) {\n status = 204;\n }\n\n // IE does return readystate == 3 for 404 answers.\n if (status === 200 && text && text.length > 0) {\n debug('chunk');\n self.emit('chunk', status, text);\n }\n break;\n case 4:\n status = x.status;\n debug('status', status);\n // IE returns 1223 for 204: http://bugs.jquery.com/ticket/1450\n if (status === 1223) {\n status = 204;\n }\n // IE returns this for a bad port\n // http://msdn.microsoft.com/en-us/library/windows/desktop/aa383770(v=vs.85).aspx\n if (status === 12005 || status === 12029) {\n status = 0;\n }\n\n debug('finish', status, x.responseText);\n self.emit('finish', status, x.responseText);\n self._cleanup(false);\n break;\n }\n }\n };\n\n try {\n self.xhr.send(payload);\n } catch (e) {\n self.emit('finish', 0, '');\n self._cleanup(false);\n }\n};\n\nAbstractXHRObject.prototype._cleanup = function(abort) {\n debug('cleanup');\n if (!this.xhr) {\n return;\n }\n this.removeAllListeners();\n utils.unloadDel(this.unloadRef);\n\n // IE needs this field to be a function\n this.xhr.onreadystatechange = function() {};\n if (this.xhr.ontimeout) {\n this.xhr.ontimeout = null;\n }\n\n if (abort) {\n try {\n this.xhr.abort();\n } catch (x) {\n // intentionally empty\n }\n }\n this.unloadRef = this.xhr = null;\n};\n\nAbstractXHRObject.prototype.close = function() {\n debug('close');\n this._cleanup(true);\n};\n\nAbstractXHRObject.enabled = !!XHR;\n// override XMLHttpRequest for IE6/7\n// obfuscate to avoid firewalls\nvar axo = ['Active'].concat('Object').join('X');\nif (!AbstractXHRObject.enabled && (axo in global)) {\n debug('overriding xmlhttprequest');\n XHR = function() {\n try {\n return new global[axo]('Microsoft.XMLHTTP');\n } catch (e) {\n return null;\n }\n };\n AbstractXHRObject.enabled = !!new XHR();\n}\n\nvar cors = false;\ntry {\n cors = 'withCredentials' in new XHR();\n} catch (ignored) {\n // intentionally empty\n}\n\nAbstractXHRObject.supportsCORS = cors;\n\nmodule.exports = AbstractXHRObject;\n","module.exports = global.EventSource;\n","'use strict';\n\nvar Driver = global.WebSocket || global.MozWebSocket;\nif (Driver) {\n\tmodule.exports = function WebSocketBrowserDriver(url) {\n\t\treturn new Driver(url);\n\t};\n} else {\n\tmodule.exports = undefined;\n}\n","'use strict';\n\nvar inherits = require('inherits')\n , AjaxBasedTransport = require('./lib/ajax-based')\n , EventSourceReceiver = require('./receiver/eventsource')\n , XHRCorsObject = require('./sender/xhr-cors')\n , EventSourceDriver = require('eventsource')\n ;\n\nfunction EventSourceTransport(transUrl) {\n if (!EventSourceTransport.enabled()) {\n throw new Error('Transport created when disabled');\n }\n\n AjaxBasedTransport.call(this, transUrl, '/eventsource', EventSourceReceiver, XHRCorsObject);\n}\n\ninherits(EventSourceTransport, AjaxBasedTransport);\n\nEventSourceTransport.enabled = function() {\n return !!EventSourceDriver;\n};\n\nEventSourceTransport.transportName = 'eventsource';\nEventSourceTransport.roundTrips = 2;\n\nmodule.exports = EventSourceTransport;\n","'use strict';\n\nvar inherits = require('inherits')\n , HtmlfileReceiver = require('./receiver/htmlfile')\n , XHRLocalObject = require('./sender/xhr-local')\n , AjaxBasedTransport = require('./lib/ajax-based')\n ;\n\nfunction HtmlFileTransport(transUrl) {\n if (!HtmlfileReceiver.enabled) {\n throw new Error('Transport created when disabled');\n }\n AjaxBasedTransport.call(this, transUrl, '/htmlfile', HtmlfileReceiver, XHRLocalObject);\n}\n\ninherits(HtmlFileTransport, AjaxBasedTransport);\n\nHtmlFileTransport.enabled = function(info) {\n return HtmlfileReceiver.enabled && info.sameOrigin;\n};\n\nHtmlFileTransport.transportName = 'htmlfile';\nHtmlFileTransport.roundTrips = 2;\n\nmodule.exports = HtmlFileTransport;\n","'use strict';\n\n// Few cool transports do work only for same-origin. In order to make\n// them work cross-domain we shall use iframe, served from the\n// remote domain. New browsers have capabilities to communicate with\n// cross domain iframe using postMessage(). In IE it was implemented\n// from IE 8+, but of course, IE got some details wrong:\n// http://msdn.microsoft.com/en-us/library/cc197015(v=VS.85).aspx\n// http://stevesouders.com/misc/test-postmessage.php\n\nvar inherits = require('inherits')\n , JSON3 = require('json3')\n , EventEmitter = require('events').EventEmitter\n , version = require('../version')\n , urlUtils = require('../utils/url')\n , iframeUtils = require('../utils/iframe')\n , eventUtils = require('../utils/event')\n , random = require('../utils/random')\n ;\n\nvar debug = function() {};\nif (\"production\" !== 'production') {\n debug = require('debug')('sockjs-client:transport:iframe');\n}\n\nfunction IframeTransport(transport, transUrl, baseUrl) {\n if (!IframeTransport.enabled()) {\n throw new Error('Transport created when disabled');\n }\n EventEmitter.call(this);\n\n var self = this;\n this.origin = urlUtils.getOrigin(baseUrl);\n this.baseUrl = baseUrl;\n this.transUrl = transUrl;\n this.transport = transport;\n this.windowId = random.string(8);\n\n var iframeUrl = urlUtils.addPath(baseUrl, '/iframe.html') + '#' + this.windowId;\n debug(transport, transUrl, iframeUrl);\n\n this.iframeObj = iframeUtils.createIframe(iframeUrl, function(r) {\n debug('err callback');\n self.emit('close', 1006, 'Unable to load an iframe (' + r + ')');\n self.close();\n });\n\n this.onmessageCallback = this._message.bind(this);\n eventUtils.attachEvent('message', this.onmessageCallback);\n}\n\ninherits(IframeTransport, EventEmitter);\n\nIframeTransport.prototype.close = function() {\n debug('close');\n this.removeAllListeners();\n if (this.iframeObj) {\n eventUtils.detachEvent('message', this.onmessageCallback);\n try {\n // When the iframe is not loaded, IE raises an exception\n // on 'contentWindow'.\n this.postMessage('c');\n } catch (x) {\n // intentionally empty\n }\n this.iframeObj.cleanup();\n this.iframeObj = null;\n this.onmessageCallback = this.iframeObj = null;\n }\n};\n\nIframeTransport.prototype._message = function(e) {\n debug('message', e.data);\n if (!urlUtils.isOriginEqual(e.origin, this.origin)) {\n debug('not same origin', e.origin, this.origin);\n return;\n }\n\n var iframeMessage;\n try {\n iframeMessage = JSON3.parse(e.data);\n } catch (ignored) {\n debug('bad json', e.data);\n return;\n }\n\n if (iframeMessage.windowId !== this.windowId) {\n debug('mismatched window id', iframeMessage.windowId, this.windowId);\n return;\n }\n\n switch (iframeMessage.type) {\n case 's':\n this.iframeObj.loaded();\n // window global dependency\n this.postMessage('s', JSON3.stringify([\n version\n , this.transport\n , this.transUrl\n , this.baseUrl\n ]));\n break;\n case 't':\n this.emit('message', iframeMessage.data);\n break;\n case 'c':\n var cdata;\n try {\n cdata = JSON3.parse(iframeMessage.data);\n } catch (ignored) {\n debug('bad json', iframeMessage.data);\n return;\n }\n this.emit('close', cdata[0], cdata[1]);\n this.close();\n break;\n }\n};\n\nIframeTransport.prototype.postMessage = function(type, data) {\n debug('postMessage', type, data);\n this.iframeObj.post(JSON3.stringify({\n windowId: this.windowId\n , type: type\n , data: data || ''\n }), this.origin);\n};\n\nIframeTransport.prototype.send = function(message) {\n debug('send', message);\n this.postMessage('m', message);\n};\n\nIframeTransport.enabled = function() {\n return iframeUtils.iframeEnabled;\n};\n\nIframeTransport.transportName = 'iframe';\nIframeTransport.roundTrips = 2;\n\nmodule.exports = IframeTransport;\n","'use strict';\n\n// The simplest and most robust transport, using the well-know cross\n// domain hack - JSONP. This transport is quite inefficient - one\n// message could use up to one http request. But at least it works almost\n// everywhere.\n// Known limitations:\n// o you will get a spinning cursor\n// o for Konqueror a dumb timer is needed to detect errors\n\nvar inherits = require('inherits')\n , SenderReceiver = require('./lib/sender-receiver')\n , JsonpReceiver = require('./receiver/jsonp')\n , jsonpSender = require('./sender/jsonp')\n ;\n\nfunction JsonPTransport(transUrl) {\n if (!JsonPTransport.enabled()) {\n throw new Error('Transport created when disabled');\n }\n SenderReceiver.call(this, transUrl, '/jsonp', jsonpSender, JsonpReceiver);\n}\n\ninherits(JsonPTransport, SenderReceiver);\n\nJsonPTransport.enabled = function() {\n return !!global.document;\n};\n\nJsonPTransport.transportName = 'jsonp-polling';\nJsonPTransport.roundTrips = 1;\nJsonPTransport.needBody = true;\n\nmodule.exports = JsonPTransport;\n","'use strict';\n\nvar inherits = require('inherits')\n , urlUtils = require('../../utils/url')\n , SenderReceiver = require('./sender-receiver')\n ;\n\nvar debug = function() {};\nif (\"production\" !== 'production') {\n debug = require('debug')('sockjs-client:ajax-based');\n}\n\nfunction createAjaxSender(AjaxObject) {\n return function(url, payload, callback) {\n debug('create ajax sender', url, payload);\n var opt = {};\n if (typeof payload === 'string') {\n opt.headers = {'Content-type': 'text/plain'};\n }\n var ajaxUrl = urlUtils.addPath(url, '/xhr_send');\n var xo = new AjaxObject('POST', ajaxUrl, payload, opt);\n xo.once('finish', function(status) {\n debug('finish', status);\n xo = null;\n\n if (status !== 200 && status !== 204) {\n return callback(new Error('http status ' + status));\n }\n callback();\n });\n return function() {\n debug('abort');\n xo.close();\n xo = null;\n\n var err = new Error('Aborted');\n err.code = 1000;\n callback(err);\n };\n };\n}\n\nfunction AjaxBasedTransport(transUrl, urlSuffix, Receiver, AjaxObject) {\n SenderReceiver.call(this, transUrl, urlSuffix, createAjaxSender(AjaxObject), Receiver, AjaxObject);\n}\n\ninherits(AjaxBasedTransport, SenderReceiver);\n\nmodule.exports = AjaxBasedTransport;\n","'use strict';\n\nvar inherits = require('inherits')\n , EventEmitter = require('events').EventEmitter\n ;\n\nvar debug = function() {};\nif (\"production\" !== 'production') {\n debug = require('debug')('sockjs-client:buffered-sender');\n}\n\nfunction BufferedSender(url, sender) {\n debug(url);\n EventEmitter.call(this);\n this.sendBuffer = [];\n this.sender = sender;\n this.url = url;\n}\n\ninherits(BufferedSender, EventEmitter);\n\nBufferedSender.prototype.send = function(message) {\n debug('send', message);\n this.sendBuffer.push(message);\n if (!this.sendStop) {\n this.sendSchedule();\n }\n};\n\n// For polling transports in a situation when in the message callback,\n// new message is being send. If the sending connection was started\n// before receiving one, it is possible to saturate the network and\n// timeout due to the lack of receiving socket. To avoid that we delay\n// sending messages by some small time, in order to let receiving\n// connection be started beforehand. This is only a halfmeasure and\n// does not fix the big problem, but it does make the tests go more\n// stable on slow networks.\nBufferedSender.prototype.sendScheduleWait = function() {\n debug('sendScheduleWait');\n var self = this;\n var tref;\n this.sendStop = function() {\n debug('sendStop');\n self.sendStop = null;\n clearTimeout(tref);\n };\n tref = setTimeout(function() {\n debug('timeout');\n self.sendStop = null;\n self.sendSchedule();\n }, 25);\n};\n\nBufferedSender.prototype.sendSchedule = function() {\n debug('sendSchedule', this.sendBuffer.length);\n var self = this;\n if (this.sendBuffer.length > 0) {\n var payload = '[' + this.sendBuffer.join(',') + ']';\n this.sendStop = this.sender(this.url, payload, function(err) {\n self.sendStop = null;\n if (err) {\n debug('error', err);\n self.emit('close', err.code || 1006, 'Sending error: ' + err);\n self.close();\n } else {\n self.sendScheduleWait();\n }\n });\n this.sendBuffer = [];\n }\n};\n\nBufferedSender.prototype._cleanup = function() {\n debug('_cleanup');\n this.removeAllListeners();\n};\n\nBufferedSender.prototype.close = function() {\n debug('close');\n this._cleanup();\n if (this.sendStop) {\n this.sendStop();\n this.sendStop = null;\n }\n};\n\nmodule.exports = BufferedSender;\n","'use strict';\n\nvar inherits = require('inherits')\n , IframeTransport = require('../iframe')\n , objectUtils = require('../../utils/object')\n ;\n\nmodule.exports = function(transport) {\n\n function IframeWrapTransport(transUrl, baseUrl) {\n IframeTransport.call(this, transport.transportName, transUrl, baseUrl);\n }\n\n inherits(IframeWrapTransport, IframeTransport);\n\n IframeWrapTransport.enabled = function(url, info) {\n if (!global.document) {\n return false;\n }\n\n var iframeInfo = objectUtils.extend({}, info);\n iframeInfo.sameOrigin = true;\n return transport.enabled(iframeInfo) && IframeTransport.enabled();\n };\n\n IframeWrapTransport.transportName = 'iframe-' + transport.transportName;\n IframeWrapTransport.needBody = true;\n IframeWrapTransport.roundTrips = IframeTransport.roundTrips + transport.roundTrips - 1; // html, javascript (2) + transport - no CORS (1)\n\n IframeWrapTransport.facadeTransport = transport;\n\n return IframeWrapTransport;\n};\n","'use strict';\n\nvar inherits = require('inherits')\n , EventEmitter = require('events').EventEmitter\n ;\n\nvar debug = function() {};\nif (\"production\" !== 'production') {\n debug = require('debug')('sockjs-client:polling');\n}\n\nfunction Polling(Receiver, receiveUrl, AjaxObject) {\n debug(receiveUrl);\n EventEmitter.call(this);\n this.Receiver = Receiver;\n this.receiveUrl = receiveUrl;\n this.AjaxObject = AjaxObject;\n this._scheduleReceiver();\n}\n\ninherits(Polling, EventEmitter);\n\nPolling.prototype._scheduleReceiver = function() {\n debug('_scheduleReceiver');\n var self = this;\n var poll = this.poll = new this.Receiver(this.receiveUrl, this.AjaxObject);\n\n poll.on('message', function(msg) {\n debug('message', msg);\n self.emit('message', msg);\n });\n\n poll.once('close', function(code, reason) {\n debug('close', code, reason, self.pollIsClosing);\n self.poll = poll = null;\n\n if (!self.pollIsClosing) {\n if (reason === 'network') {\n self._scheduleReceiver();\n } else {\n self.emit('close', code || 1006, reason);\n self.removeAllListeners();\n }\n }\n });\n};\n\nPolling.prototype.abort = function() {\n debug('abort');\n this.removeAllListeners();\n this.pollIsClosing = true;\n if (this.poll) {\n this.poll.abort();\n }\n};\n\nmodule.exports = Polling;\n","'use strict';\n\nvar inherits = require('inherits')\n , urlUtils = require('../../utils/url')\n , BufferedSender = require('./buffered-sender')\n , Polling = require('./polling')\n ;\n\nvar debug = function() {};\nif (\"production\" !== 'production') {\n debug = require('debug')('sockjs-client:sender-receiver');\n}\n\nfunction SenderReceiver(transUrl, urlSuffix, senderFunc, Receiver, AjaxObject) {\n var pollUrl = urlUtils.addPath(transUrl, urlSuffix);\n debug(pollUrl);\n var self = this;\n BufferedSender.call(this, transUrl, senderFunc);\n\n this.poll = new Polling(Receiver, pollUrl, AjaxObject);\n this.poll.on('message', function(msg) {\n debug('poll message', msg);\n self.emit('message', msg);\n });\n this.poll.once('close', function(code, reason) {\n debug('poll close', code, reason);\n self.poll = null;\n self.emit('close', code, reason);\n self.close();\n });\n}\n\ninherits(SenderReceiver, BufferedSender);\n\nSenderReceiver.prototype.close = function() {\n BufferedSender.prototype.close.call(this);\n debug('close');\n this.removeAllListeners();\n if (this.poll) {\n this.poll.abort();\n this.poll = null;\n }\n};\n\nmodule.exports = SenderReceiver;\n","'use strict';\n\nvar inherits = require('inherits')\n , EventEmitter = require('events').EventEmitter\n , EventSourceDriver = require('eventsource')\n ;\n\nvar debug = function() {};\nif (\"production\" !== 'production') {\n debug = require('debug')('sockjs-client:receiver:eventsource');\n}\n\nfunction EventSourceReceiver(url) {\n debug(url);\n EventEmitter.call(this);\n\n var self = this;\n var es = this.es = new EventSourceDriver(url);\n es.onmessage = function(e) {\n debug('message', e.data);\n self.emit('message', decodeURI(e.data));\n };\n es.onerror = function(e) {\n debug('error', es.readyState, e);\n // ES on reconnection has readyState = 0 or 1.\n // on network error it's CLOSED = 2\n var reason = (es.readyState !== 2 ? 'network' : 'permanent');\n self._cleanup();\n self._close(reason);\n };\n}\n\ninherits(EventSourceReceiver, EventEmitter);\n\nEventSourceReceiver.prototype.abort = function() {\n debug('abort');\n this._cleanup();\n this._close('user');\n};\n\nEventSourceReceiver.prototype._cleanup = function() {\n debug('cleanup');\n var es = this.es;\n if (es) {\n es.onmessage = es.onerror = null;\n es.close();\n this.es = null;\n }\n};\n\nEventSourceReceiver.prototype._close = function(reason) {\n debug('close', reason);\n var self = this;\n // Safari and chrome < 15 crash if we close window before\n // waiting for ES cleanup. See:\n // https://code.google.com/p/chromium/issues/detail?id=89155\n setTimeout(function() {\n self.emit('close', null, reason);\n self.removeAllListeners();\n }, 200);\n};\n\nmodule.exports = EventSourceReceiver;\n","'use strict';\n\nvar inherits = require('inherits')\n , iframeUtils = require('../../utils/iframe')\n , urlUtils = require('../../utils/url')\n , EventEmitter = require('events').EventEmitter\n , random = require('../../utils/random')\n ;\n\nvar debug = function() {};\nif (\"production\" !== 'production') {\n debug = require('debug')('sockjs-client:receiver:htmlfile');\n}\n\nfunction HtmlfileReceiver(url) {\n debug(url);\n EventEmitter.call(this);\n var self = this;\n iframeUtils.polluteGlobalNamespace();\n\n this.id = 'a' + random.string(6);\n url = urlUtils.addQuery(url, 'c=' + decodeURIComponent(iframeUtils.WPrefix + '.' + this.id));\n\n debug('using htmlfile', HtmlfileReceiver.htmlfileEnabled);\n var constructFunc = HtmlfileReceiver.htmlfileEnabled ?\n iframeUtils.createHtmlfile : iframeUtils.createIframe;\n\n global[iframeUtils.WPrefix][this.id] = {\n start: function() {\n debug('start');\n self.iframeObj.loaded();\n }\n , message: function(data) {\n debug('message', data);\n self.emit('message', data);\n }\n , stop: function() {\n debug('stop');\n self._cleanup();\n self._close('network');\n }\n };\n this.iframeObj = constructFunc(url, function() {\n debug('callback');\n self._cleanup();\n self._close('permanent');\n });\n}\n\ninherits(HtmlfileReceiver, EventEmitter);\n\nHtmlfileReceiver.prototype.abort = function() {\n debug('abort');\n this._cleanup();\n this._close('user');\n};\n\nHtmlfileReceiver.prototype._cleanup = function() {\n debug('_cleanup');\n if (this.iframeObj) {\n this.iframeObj.cleanup();\n this.iframeObj = null;\n }\n delete global[iframeUtils.WPrefix][this.id];\n};\n\nHtmlfileReceiver.prototype._close = function(reason) {\n debug('_close', reason);\n this.emit('close', null, reason);\n this.removeAllListeners();\n};\n\nHtmlfileReceiver.htmlfileEnabled = false;\n\n// obfuscate to avoid firewalls\nvar axo = ['Active'].concat('Object').join('X');\nif (axo in global) {\n try {\n HtmlfileReceiver.htmlfileEnabled = !!new global[axo]('htmlfile');\n } catch (x) {\n // intentionally empty\n }\n}\n\nHtmlfileReceiver.enabled = HtmlfileReceiver.htmlfileEnabled || iframeUtils.iframeEnabled;\n\nmodule.exports = HtmlfileReceiver;\n","'use strict';\n\nvar utils = require('../../utils/iframe')\n , random = require('../../utils/random')\n , browser = require('../../utils/browser')\n , urlUtils = require('../../utils/url')\n , inherits = require('inherits')\n , EventEmitter = require('events').EventEmitter\n ;\n\nvar debug = function() {};\nif (\"production\" !== 'production') {\n debug = require('debug')('sockjs-client:receiver:jsonp');\n}\n\nfunction JsonpReceiver(url) {\n debug(url);\n var self = this;\n EventEmitter.call(this);\n\n utils.polluteGlobalNamespace();\n\n this.id = 'a' + random.string(6);\n var urlWithId = urlUtils.addQuery(url, 'c=' + encodeURIComponent(utils.WPrefix + '.' + this.id));\n\n global[utils.WPrefix][this.id] = this._callback.bind(this);\n this._createScript(urlWithId);\n\n // Fallback mostly for Konqueror - stupid timer, 35 seconds shall be plenty.\n this.timeoutId = setTimeout(function() {\n debug('timeout');\n self._abort(new Error('JSONP script loaded abnormally (timeout)'));\n }, JsonpReceiver.timeout);\n}\n\ninherits(JsonpReceiver, EventEmitter);\n\nJsonpReceiver.prototype.abort = function() {\n debug('abort');\n if (global[utils.WPrefix][this.id]) {\n var err = new Error('JSONP user aborted read');\n err.code = 1000;\n this._abort(err);\n }\n};\n\nJsonpReceiver.timeout = 35000;\nJsonpReceiver.scriptErrorTimeout = 1000;\n\nJsonpReceiver.prototype._callback = function(data) {\n debug('_callback', data);\n this._cleanup();\n\n if (this.aborting) {\n return;\n }\n\n if (data) {\n debug('message', data);\n this.emit('message', data);\n }\n this.emit('close', null, 'network');\n this.removeAllListeners();\n};\n\nJsonpReceiver.prototype._abort = function(err) {\n debug('_abort', err);\n this._cleanup();\n this.aborting = true;\n this.emit('close', err.code, err.message);\n this.removeAllListeners();\n};\n\nJsonpReceiver.prototype._cleanup = function() {\n debug('_cleanup');\n clearTimeout(this.timeoutId);\n if (this.script2) {\n this.script2.parentNode.removeChild(this.script2);\n this.script2 = null;\n }\n if (this.script) {\n var script = this.script;\n // Unfortunately, you can't really abort script loading of\n // the script.\n script.parentNode.removeChild(script);\n script.onreadystatechange = script.onerror =\n script.onload = script.onclick = null;\n this.script = null;\n }\n delete global[utils.WPrefix][this.id];\n};\n\nJsonpReceiver.prototype._scriptError = function() {\n debug('_scriptError');\n var self = this;\n if (this.errorTimer) {\n return;\n }\n\n this.errorTimer = setTimeout(function() {\n if (!self.loadedOkay) {\n self._abort(new Error('JSONP script loaded abnormally (onerror)'));\n }\n }, JsonpReceiver.scriptErrorTimeout);\n};\n\nJsonpReceiver.prototype._createScript = function(url) {\n debug('_createScript', url);\n var self = this;\n var script = this.script = global.document.createElement('script');\n var script2; // Opera synchronous load trick.\n\n script.id = 'a' + random.string(8);\n script.src = url;\n script.type = 'text/javascript';\n script.charset = 'UTF-8';\n script.onerror = this._scriptError.bind(this);\n script.onload = function() {\n debug('onload');\n self._abort(new Error('JSONP script loaded abnormally (onload)'));\n };\n\n // IE9 fires 'error' event after onreadystatechange or before, in random order.\n // Use loadedOkay to determine if actually errored\n script.onreadystatechange = function() {\n debug('onreadystatechange', script.readyState);\n if (/loaded|closed/.test(script.readyState)) {\n if (script && script.htmlFor && script.onclick) {\n self.loadedOkay = true;\n try {\n // In IE, actually execute the script.\n script.onclick();\n } catch (x) {\n // intentionally empty\n }\n }\n if (script) {\n self._abort(new Error('JSONP script loaded abnormally (onreadystatechange)'));\n }\n }\n };\n // IE: event/htmlFor/onclick trick.\n // One can't rely on proper order for onreadystatechange. In order to\n // make sure, set a 'htmlFor' and 'event' properties, so that\n // script code will be installed as 'onclick' handler for the\n // script object. Later, onreadystatechange, manually execute this\n // code. FF and Chrome doesn't work with 'event' and 'htmlFor'\n // set. For reference see:\n // http://jaubourg.net/2010/07/loading-script-as-onclick-handler-of.html\n // Also, read on that about script ordering:\n // http://wiki.whatwg.org/wiki/Dynamic_Script_Execution_Order\n if (typeof script.async === 'undefined' && global.document.attachEvent) {\n // According to mozilla docs, in recent browsers script.async defaults\n // to 'true', so we may use it to detect a good browser:\n // https://developer.mozilla.org/en/HTML/Element/script\n if (!browser.isOpera()) {\n // Naively assume we're in IE\n try {\n script.htmlFor = script.id;\n script.event = 'onclick';\n } catch (x) {\n // intentionally empty\n }\n script.async = true;\n } else {\n // Opera, second sync script hack\n script2 = this.script2 = global.document.createElement('script');\n script2.text = \"try{var a = document.getElementById('\" + script.id + \"'); if(a)a.onerror();}catch(x){};\";\n script.async = script2.async = false;\n }\n }\n if (typeof script.async !== 'undefined') {\n script.async = true;\n }\n\n var head = global.document.getElementsByTagName('head')[0];\n head.insertBefore(script, head.firstChild);\n if (script2) {\n head.insertBefore(script2, head.firstChild);\n }\n};\n\nmodule.exports = JsonpReceiver;\n","'use strict';\n\nvar inherits = require('inherits')\n , EventEmitter = require('events').EventEmitter\n ;\n\nvar debug = function() {};\nif (\"production\" !== 'production') {\n debug = require('debug')('sockjs-client:receiver:xhr');\n}\n\nfunction XhrReceiver(url, AjaxObject) {\n debug(url);\n EventEmitter.call(this);\n var self = this;\n\n this.bufferPosition = 0;\n\n this.xo = new AjaxObject('POST', url, null);\n this.xo.on('chunk', this._chunkHandler.bind(this));\n this.xo.once('finish', function(status, text) {\n debug('finish', status, text);\n self._chunkHandler(status, text);\n self.xo = null;\n var reason = status === 200 ? 'network' : 'permanent';\n debug('close', reason);\n self.emit('close', null, reason);\n self._cleanup();\n });\n}\n\ninherits(XhrReceiver, EventEmitter);\n\nXhrReceiver.prototype._chunkHandler = function(status, text) {\n debug('_chunkHandler', status);\n if (status !== 200 || !text) {\n return;\n }\n\n for (var idx = -1; ; this.bufferPosition += idx + 1) {\n var buf = text.slice(this.bufferPosition);\n idx = buf.indexOf('\\n');\n if (idx === -1) {\n break;\n }\n var msg = buf.slice(0, idx);\n if (msg) {\n debug('message', msg);\n this.emit('message', msg);\n }\n }\n};\n\nXhrReceiver.prototype._cleanup = function() {\n debug('_cleanup');\n this.removeAllListeners();\n};\n\nXhrReceiver.prototype.abort = function() {\n debug('abort');\n if (this.xo) {\n this.xo.close();\n debug('close');\n this.emit('close', null, 'user');\n this.xo = null;\n }\n this._cleanup();\n};\n\nmodule.exports = XhrReceiver;\n","'use strict';\n\nvar random = require('../../utils/random')\n , urlUtils = require('../../utils/url')\n ;\n\nvar debug = function() {};\nif (\"production\" !== 'production') {\n debug = require('debug')('sockjs-client:sender:jsonp');\n}\n\nvar form, area;\n\nfunction createIframe(id) {\n debug('createIframe', id);\n try {\n // ie6 dynamic iframes with target=\"\" support (thanks Chris Lambacher)\n return global.document.createElement('<iframe name=\"' + id + '\">');\n } catch (x) {\n var iframe = global.document.createElement('iframe');\n iframe.name = id;\n return iframe;\n }\n}\n\nfunction createForm() {\n debug('createForm');\n form = global.document.createElement('form');\n form.style.display = 'none';\n form.style.position = 'absolute';\n form.method = 'POST';\n form.enctype = 'application/x-www-form-urlencoded';\n form.acceptCharset = 'UTF-8';\n\n area = global.document.createElement('textarea');\n area.name = 'd';\n form.appendChild(area);\n\n global.document.body.appendChild(form);\n}\n\nmodule.exports = function(url, payload, callback) {\n debug(url, payload);\n if (!form) {\n createForm();\n }\n var id = 'a' + random.string(8);\n form.target = id;\n form.action = urlUtils.addQuery(urlUtils.addPath(url, '/jsonp_send'), 'i=' + id);\n\n var iframe = createIframe(id);\n iframe.id = id;\n iframe.style.display = 'none';\n form.appendChild(iframe);\n\n try {\n area.value = payload;\n } catch (e) {\n // seriously broken browsers get here\n }\n form.submit();\n\n var completed = function(err) {\n debug('completed', id, err);\n if (!iframe.onerror) {\n return;\n }\n iframe.onreadystatechange = iframe.onerror = iframe.onload = null;\n // Opera mini doesn't like if we GC iframe\n // immediately, thus this timeout.\n setTimeout(function() {\n debug('cleaning up', id);\n iframe.parentNode.removeChild(iframe);\n iframe = null;\n }, 500);\n area.value = '';\n // It is not possible to detect if the iframe succeeded or\n // failed to submit our form.\n callback(err);\n };\n iframe.onerror = function() {\n debug('onerror', id);\n completed();\n };\n iframe.onload = function() {\n debug('onload', id);\n completed();\n };\n iframe.onreadystatechange = function(e) {\n debug('onreadystatechange', id, iframe.readyState, e);\n if (iframe.readyState === 'complete') {\n completed();\n }\n };\n return function() {\n debug('aborted', id);\n completed(new Error('Aborted'));\n };\n};\n","'use strict';\n\nvar EventEmitter = require('events').EventEmitter\n , inherits = require('inherits')\n , eventUtils = require('../../utils/event')\n , browser = require('../../utils/browser')\n , urlUtils = require('../../utils/url')\n ;\n\nvar debug = function() {};\nif (\"production\" !== 'production') {\n debug = require('debug')('sockjs-client:sender:xdr');\n}\n\n// References:\n// http://ajaxian.com/archives/100-line-ajax-wrapper\n// http://msdn.microsoft.com/en-us/library/cc288060(v=VS.85).aspx\n\nfunction XDRObject(method, url, payload) {\n debug(method, url);\n var self = this;\n EventEmitter.call(this);\n\n setTimeout(function() {\n self._start(method, url, payload);\n }, 0);\n}\n\ninherits(XDRObject, EventEmitter);\n\nXDRObject.prototype._start = function(method, url, payload) {\n debug('_start');\n var self = this;\n var xdr = new global.XDomainRequest();\n // IE caches even POSTs\n url = urlUtils.addQuery(url, 't=' + (+new Date()));\n\n xdr.onerror = function() {\n debug('onerror');\n self._error();\n };\n xdr.ontimeout = function() {\n debug('ontimeout');\n self._error();\n };\n xdr.onprogress = function() {\n debug('progress', xdr.responseText);\n self.emit('chunk', 200, xdr.responseText);\n };\n xdr.onload = function() {\n debug('load');\n self.emit('finish', 200, xdr.responseText);\n self._cleanup(false);\n };\n this.xdr = xdr;\n this.unloadRef = eventUtils.unloadAdd(function() {\n self._cleanup(true);\n });\n try {\n // Fails with AccessDenied if port number is bogus\n this.xdr.open(method, url);\n if (this.timeout) {\n this.xdr.timeout = this.timeout;\n }\n this.xdr.send(payload);\n } catch (x) {\n this._error();\n }\n};\n\nXDRObject.prototype._error = function() {\n this.emit('finish', 0, '');\n this._cleanup(false);\n};\n\nXDRObject.prototype._cleanup = function(abort) {\n debug('cleanup', abort);\n if (!this.xdr) {\n return;\n }\n this.removeAllListeners();\n eventUtils.unloadDel(this.unloadRef);\n\n this.xdr.ontimeout = this.xdr.onerror = this.xdr.onprogress = this.xdr.onload = null;\n if (abort) {\n try {\n this.xdr.abort();\n } catch (x) {\n // intentionally empty\n }\n }\n this.unloadRef = this.xdr = null;\n};\n\nXDRObject.prototype.close = function() {\n debug('close');\n this._cleanup(true);\n};\n\n// IE 8/9 if the request target uses the same scheme - #79\nXDRObject.enabled = !!(global.XDomainRequest && browser.hasDomain());\n\nmodule.exports = XDRObject;\n","'use strict';\n\nvar inherits = require('inherits')\n , XhrDriver = require('../driver/xhr')\n ;\n\nfunction XHRCorsObject(method, url, payload, opts) {\n XhrDriver.call(this, method, url, payload, opts);\n}\n\ninherits(XHRCorsObject, XhrDriver);\n\nXHRCorsObject.enabled = XhrDriver.enabled && XhrDriver.supportsCORS;\n\nmodule.exports = XHRCorsObject;\n","'use strict';\n\nvar EventEmitter = require('events').EventEmitter\n , inherits = require('inherits')\n ;\n\nfunction XHRFake(/* method, url, payload, opts */) {\n var self = this;\n EventEmitter.call(this);\n\n this.to = setTimeout(function() {\n self.emit('finish', 200, '{}');\n }, XHRFake.timeout);\n}\n\ninherits(XHRFake, EventEmitter);\n\nXHRFake.prototype.close = function() {\n clearTimeout(this.to);\n};\n\nXHRFake.timeout = 2000;\n\nmodule.exports = XHRFake;\n","'use strict';\n\nvar inherits = require('inherits')\n , XhrDriver = require('../driver/xhr')\n ;\n\nfunction XHRLocalObject(method, url, payload /*, opts */) {\n XhrDriver.call(this, method, url, payload, {\n noCredentials: true\n });\n}\n\ninherits(XHRLocalObject, XhrDriver);\n\nXHRLocalObject.enabled = XhrDriver.enabled;\n\nmodule.exports = XHRLocalObject;\n","'use strict';\n\nvar utils = require('../utils/event')\n , urlUtils = require('../utils/url')\n , inherits = require('inherits')\n , EventEmitter = require('events').EventEmitter\n , WebsocketDriver = require('./driver/websocket')\n ;\n\nvar debug = function() {};\nif (\"production\" !== 'production') {\n debug = require('debug')('sockjs-client:websocket');\n}\n\nfunction WebSocketTransport(transUrl, ignore, options) {\n if (!WebSocketTransport.enabled()) {\n throw new Error('Transport created when disabled');\n }\n\n EventEmitter.call(this);\n debug('constructor', transUrl);\n\n var self = this;\n var url = urlUtils.addPath(transUrl, '/websocket');\n if (url.slice(0, 5) === 'https') {\n url = 'wss' + url.slice(5);\n } else {\n url = 'ws' + url.slice(4);\n }\n this.url = url;\n\n this.ws = new WebsocketDriver(this.url, [], options);\n this.ws.onmessage = function(e) {\n debug('message event', e.data);\n self.emit('message', e.data);\n };\n // Firefox has an interesting bug. If a websocket connection is\n // created after onunload, it stays alive even when user\n // navigates away from the page. In such situation let's lie -\n // let's not open the ws connection at all. See:\n // https://github.com/sockjs/sockjs-client/issues/28\n // https://bugzilla.mozilla.org/show_bug.cgi?id=696085\n this.unloadRef = utils.unloadAdd(function() {\n debug('unload');\n self.ws.close();\n });\n this.ws.onclose = function(e) {\n debug('close event', e.code, e.reason);\n self.emit('close', e.code, e.reason);\n self._cleanup();\n };\n this.ws.onerror = function(e) {\n debug('error event', e);\n self.emit('close', 1006, 'WebSocket connection broken');\n self._cleanup();\n };\n}\n\ninherits(WebSocketTransport, EventEmitter);\n\nWebSocketTransport.prototype.send = function(data) {\n var msg = '[' + data + ']';\n debug('send', msg);\n this.ws.send(msg);\n};\n\nWebSocketTransport.prototype.close = function() {\n debug('close');\n var ws = this.ws;\n this._cleanup();\n if (ws) {\n ws.close();\n }\n};\n\nWebSocketTransport.prototype._cleanup = function() {\n debug('_cleanup');\n var ws = this.ws;\n if (ws) {\n ws.onmessage = ws.onclose = ws.onerror = null;\n }\n utils.unloadDel(this.unloadRef);\n this.unloadRef = this.ws = null;\n this.removeAllListeners();\n};\n\nWebSocketTransport.enabled = function() {\n debug('enabled');\n return !!WebsocketDriver;\n};\nWebSocketTransport.transportName = 'websocket';\n\n// In theory, ws should require 1 round trip. But in chrome, this is\n// not very stable over SSL. Most likely a ws connection requires a\n// separate SSL connection, in which case 2 round trips are an\n// absolute minumum.\nWebSocketTransport.roundTrips = 2;\n\nmodule.exports = WebSocketTransport;\n","'use strict';\n\nvar inherits = require('inherits')\n , AjaxBasedTransport = require('./lib/ajax-based')\n , XdrStreamingTransport = require('./xdr-streaming')\n , XhrReceiver = require('./receiver/xhr')\n , XDRObject = require('./sender/xdr')\n ;\n\nfunction XdrPollingTransport(transUrl) {\n if (!XDRObject.enabled) {\n throw new Error('Transport created when disabled');\n }\n AjaxBasedTransport.call(this, transUrl, '/xhr', XhrReceiver, XDRObject);\n}\n\ninherits(XdrPollingTransport, AjaxBasedTransport);\n\nXdrPollingTransport.enabled = XdrStreamingTransport.enabled;\nXdrPollingTransport.transportName = 'xdr-polling';\nXdrPollingTransport.roundTrips = 2; // preflight, ajax\n\nmodule.exports = XdrPollingTransport;\n","'use strict';\n\nvar inherits = require('inherits')\n , AjaxBasedTransport = require('./lib/ajax-based')\n , XhrReceiver = require('./receiver/xhr')\n , XDRObject = require('./sender/xdr')\n ;\n\n// According to:\n// http://stackoverflow.com/questions/1641507/detect-browser-support-for-cross-domain-xmlhttprequests\n// http://hacks.mozilla.org/2009/07/cross-site-xmlhttprequest-with-cors/\n\nfunction XdrStreamingTransport(transUrl) {\n if (!XDRObject.enabled) {\n throw new Error('Transport created when disabled');\n }\n AjaxBasedTransport.call(this, transUrl, '/xhr_streaming', XhrReceiver, XDRObject);\n}\n\ninherits(XdrStreamingTransport, AjaxBasedTransport);\n\nXdrStreamingTransport.enabled = function(info) {\n if (info.cookie_needed || info.nullOrigin) {\n return false;\n }\n return XDRObject.enabled && info.sameScheme;\n};\n\nXdrStreamingTransport.transportName = 'xdr-streaming';\nXdrStreamingTransport.roundTrips = 2; // preflight, ajax\n\nmodule.exports = XdrStreamingTransport;\n","'use strict';\n\nvar inherits = require('inherits')\n , AjaxBasedTransport = require('./lib/ajax-based')\n , XhrReceiver = require('./receiver/xhr')\n , XHRCorsObject = require('./sender/xhr-cors')\n , XHRLocalObject = require('./sender/xhr-local')\n ;\n\nfunction XhrPollingTransport(transUrl) {\n if (!XHRLocalObject.enabled && !XHRCorsObject.enabled) {\n throw new Error('Transport created when disabled');\n }\n AjaxBasedTransport.call(this, transUrl, '/xhr', XhrReceiver, XHRCorsObject);\n}\n\ninherits(XhrPollingTransport, AjaxBasedTransport);\n\nXhrPollingTransport.enabled = function(info) {\n if (info.nullOrigin) {\n return false;\n }\n\n if (XHRLocalObject.enabled && info.sameOrigin) {\n return true;\n }\n return XHRCorsObject.enabled;\n};\n\nXhrPollingTransport.transportName = 'xhr-polling';\nXhrPollingTransport.roundTrips = 2; // preflight, ajax\n\nmodule.exports = XhrPollingTransport;\n","'use strict';\n\nvar inherits = require('inherits')\n , AjaxBasedTransport = require('./lib/ajax-based')\n , XhrReceiver = require('./receiver/xhr')\n , XHRCorsObject = require('./sender/xhr-cors')\n , XHRLocalObject = require('./sender/xhr-local')\n , browser = require('../utils/browser')\n ;\n\nfunction XhrStreamingTransport(transUrl) {\n if (!XHRLocalObject.enabled && !XHRCorsObject.enabled) {\n throw new Error('Transport created when disabled');\n }\n AjaxBasedTransport.call(this, transUrl, '/xhr_streaming', XhrReceiver, XHRCorsObject);\n}\n\ninherits(XhrStreamingTransport, AjaxBasedTransport);\n\nXhrStreamingTransport.enabled = function(info) {\n if (info.nullOrigin) {\n return false;\n }\n // Opera doesn't support xhr-streaming #60\n // But it might be able to #92\n if (browser.isOpera()) {\n return false;\n }\n\n return XHRCorsObject.enabled;\n};\n\nXhrStreamingTransport.transportName = 'xhr-streaming';\nXhrStreamingTransport.roundTrips = 2; // preflight, ajax\n\n// Safari gets confused when a streaming ajax request is started\n// before onload. This causes the load indicator to spin indefinetely.\n// Only require body when used in a browser\nXhrStreamingTransport.needBody = !!global.document;\n\nmodule.exports = XhrStreamingTransport;\n","'use strict';\n\nif (global.crypto && global.crypto.getRandomValues) {\n module.exports.randomBytes = function(length) {\n var bytes = new Uint8Array(length);\n global.crypto.getRandomValues(bytes);\n return bytes;\n };\n} else {\n module.exports.randomBytes = function(length) {\n var bytes = new Array(length);\n for (var i = 0; i < length; i++) {\n bytes[i] = Math.floor(Math.random() * 256);\n }\n return bytes;\n };\n}\n","'use strict';\n\nmodule.exports = {\n isOpera: function() {\n return global.navigator &&\n /opera/i.test(global.navigator.userAgent);\n }\n\n, isKonqueror: function() {\n return global.navigator &&\n /konqueror/i.test(global.navigator.userAgent);\n }\n\n // #187 wrap document.domain in try/catch because of WP8 from file:///\n, hasDomain: function () {\n // non-browser client always has a domain\n if (!global.document) {\n return true;\n }\n\n try {\n return !!global.document.domain;\n } catch (e) {\n return false;\n }\n }\n};\n","'use strict';\n\nvar JSON3 = require('json3');\n\n// Some extra characters that Chrome gets wrong, and substitutes with\n// something else on the wire.\n// eslint-disable-next-line no-control-regex\nvar extraEscapable = /[\\x00-\\x1f\\ud800-\\udfff\\ufffe\\uffff\\u0300-\\u0333\\u033d-\\u0346\\u034a-\\u034c\\u0350-\\u0352\\u0357-\\u0358\\u035c-\\u0362\\u0374\\u037e\\u0387\\u0591-\\u05af\\u05c4\\u0610-\\u0617\\u0653-\\u0654\\u0657-\\u065b\\u065d-\\u065e\\u06df-\\u06e2\\u06eb-\\u06ec\\u0730\\u0732-\\u0733\\u0735-\\u0736\\u073a\\u073d\\u073f-\\u0741\\u0743\\u0745\\u0747\\u07eb-\\u07f1\\u0951\\u0958-\\u095f\\u09dc-\\u09dd\\u09df\\u0a33\\u0a36\\u0a59-\\u0a5b\\u0a5e\\u0b5c-\\u0b5d\\u0e38-\\u0e39\\u0f43\\u0f4d\\u0f52\\u0f57\\u0f5c\\u0f69\\u0f72-\\u0f76\\u0f78\\u0f80-\\u0f83\\u0f93\\u0f9d\\u0fa2\\u0fa7\\u0fac\\u0fb9\\u1939-\\u193a\\u1a17\\u1b6b\\u1cda-\\u1cdb\\u1dc0-\\u1dcf\\u1dfc\\u1dfe\\u1f71\\u1f73\\u1f75\\u1f77\\u1f79\\u1f7b\\u1f7d\\u1fbb\\u1fbe\\u1fc9\\u1fcb\\u1fd3\\u1fdb\\u1fe3\\u1feb\\u1fee-\\u1fef\\u1ff9\\u1ffb\\u1ffd\\u2000-\\u2001\\u20d0-\\u20d1\\u20d4-\\u20d7\\u20e7-\\u20e9\\u2126\\u212a-\\u212b\\u2329-\\u232a\\u2adc\\u302b-\\u302c\\uaab2-\\uaab3\\uf900-\\ufa0d\\ufa10\\ufa12\\ufa15-\\ufa1e\\ufa20\\ufa22\\ufa25-\\ufa26\\ufa2a-\\ufa2d\\ufa30-\\ufa6d\\ufa70-\\ufad9\\ufb1d\\ufb1f\\ufb2a-\\ufb36\\ufb38-\\ufb3c\\ufb3e\\ufb40-\\ufb41\\ufb43-\\ufb44\\ufb46-\\ufb4e\\ufff0-\\uffff]/g\n , extraLookup;\n\n// This may be quite slow, so let's delay until user actually uses bad\n// characters.\nvar unrollLookup = function(escapable) {\n var i;\n var unrolled = {};\n var c = [];\n for (i = 0; i < 65536; i++) {\n c.push( String.fromCharCode(i) );\n }\n escapable.lastIndex = 0;\n c.join('').replace(escapable, function(a) {\n unrolled[ a ] = '\\\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4);\n return '';\n });\n escapable.lastIndex = 0;\n return unrolled;\n};\n\n// Quote string, also taking care of unicode characters that browsers\n// often break. Especially, take care of unicode surrogates:\n// http://en.wikipedia.org/wiki/Mapping_of_Unicode_characters#Surrogates\nmodule.exports = {\n quote: function(string) {\n var quoted = JSON3.stringify(string);\n\n // In most cases this should be very fast and good enough.\n extraEscapable.lastIndex = 0;\n if (!extraEscapable.test(quoted)) {\n return quoted;\n }\n\n if (!extraLookup) {\n extraLookup = unrollLookup(extraEscapable);\n }\n\n return quoted.replace(extraEscapable, function(a) {\n return extraLookup[a];\n });\n }\n};\n","'use strict';\n\nvar random = require('./random');\n\nvar onUnload = {}\n , afterUnload = false\n // detect google chrome packaged apps because they don't allow the 'unload' event\n , isChromePackagedApp = global.chrome && global.chrome.app && global.chrome.app.runtime\n ;\n\nmodule.exports = {\n attachEvent: function(event, listener) {\n if (typeof global.addEventListener !== 'undefined') {\n global.addEventListener(event, listener, false);\n } else if (global.document && global.attachEvent) {\n // IE quirks.\n // According to: http://stevesouders.com/misc/test-postmessage.php\n // the message gets delivered only to 'document', not 'window'.\n global.document.attachEvent('on' + event, listener);\n // I get 'window' for ie8.\n global.attachEvent('on' + event, listener);\n }\n }\n\n, detachEvent: function(event, listener) {\n if (typeof global.addEventListener !== 'undefined') {\n global.removeEventListener(event, listener, false);\n } else if (global.document && global.detachEvent) {\n global.document.detachEvent('on' + event, listener);\n global.detachEvent('on' + event, listener);\n }\n }\n\n, unloadAdd: function(listener) {\n if (isChromePackagedApp) {\n return null;\n }\n\n var ref = random.string(8);\n onUnload[ref] = listener;\n if (afterUnload) {\n setTimeout(this.triggerUnloadCallbacks, 0);\n }\n return ref;\n }\n\n, unloadDel: function(ref) {\n if (ref in onUnload) {\n delete onUnload[ref];\n }\n }\n\n, triggerUnloadCallbacks: function() {\n for (var ref in onUnload) {\n onUnload[ref]();\n delete onUnload[ref];\n }\n }\n};\n\nvar unloadTriggered = function() {\n if (afterUnload) {\n return;\n }\n afterUnload = true;\n module.exports.triggerUnloadCallbacks();\n};\n\n// 'unload' alone is not reliable in opera within an iframe, but we\n// can't use `beforeunload` as IE fires it on javascript: links.\nif (!isChromePackagedApp) {\n module.exports.attachEvent('unload', unloadTriggered);\n}\n","'use strict';\n\nvar eventUtils = require('./event')\n , JSON3 = require('json3')\n , browser = require('./browser')\n ;\n\nvar debug = function() {};\nif (\"production\" !== 'production') {\n debug = require('debug')('sockjs-client:utils:iframe');\n}\n\nmodule.exports = {\n WPrefix: '_jp'\n, currentWindowId: null\n\n, polluteGlobalNamespace: function() {\n if (!(module.exports.WPrefix in global)) {\n global[module.exports.WPrefix] = {};\n }\n }\n\n, postMessage: function(type, data) {\n if (global.parent !== global) {\n global.parent.postMessage(JSON3.stringify({\n windowId: module.exports.currentWindowId\n , type: type\n , data: data || ''\n }), '*');\n } else {\n debug('Cannot postMessage, no parent window.', type, data);\n }\n }\n\n, createIframe: function(iframeUrl, errorCallback) {\n var iframe = global.document.createElement('iframe');\n var tref, unloadRef;\n var unattach = function() {\n debug('unattach');\n clearTimeout(tref);\n // Explorer had problems with that.\n try {\n iframe.onload = null;\n } catch (x) {\n // intentionally empty\n }\n iframe.onerror = null;\n };\n var cleanup = function() {\n debug('cleanup');\n if (iframe) {\n unattach();\n // This timeout makes chrome fire onbeforeunload event\n // within iframe. Without the timeout it goes straight to\n // onunload.\n setTimeout(function() {\n if (iframe) {\n iframe.parentNode.removeChild(iframe);\n }\n iframe = null;\n }, 0);\n eventUtils.unloadDel(unloadRef);\n }\n };\n var onerror = function(err) {\n debug('onerror', err);\n if (iframe) {\n cleanup();\n errorCallback(err);\n }\n };\n var post = function(msg, origin) {\n debug('post', msg, origin);\n setTimeout(function() {\n try {\n // When the iframe is not loaded, IE raises an exception\n // on 'contentWindow'.\n if (iframe && iframe.contentWindow) {\n iframe.contentWindow.postMessage(msg, origin);\n }\n } catch (x) {\n // intentionally empty\n }\n }, 0);\n };\n\n iframe.src = iframeUrl;\n iframe.style.display = 'none';\n iframe.style.position = 'absolute';\n iframe.onerror = function() {\n onerror('onerror');\n };\n iframe.onload = function() {\n debug('onload');\n // `onload` is triggered before scripts on the iframe are\n // executed. Give it few seconds to actually load stuff.\n clearTimeout(tref);\n tref = setTimeout(function() {\n onerror('onload timeout');\n }, 2000);\n };\n global.document.body.appendChild(iframe);\n tref = setTimeout(function() {\n onerror('timeout');\n }, 15000);\n unloadRef = eventUtils.unloadAdd(cleanup);\n return {\n post: post\n , cleanup: cleanup\n , loaded: unattach\n };\n }\n\n/* eslint no-undef: \"off\", new-cap: \"off\" */\n, createHtmlfile: function(iframeUrl, errorCallback) {\n var axo = ['Active'].concat('Object').join('X');\n var doc = new global[axo]('htmlfile');\n var tref, unloadRef;\n var iframe;\n var unattach = function() {\n clearTimeout(tref);\n iframe.onerror = null;\n };\n var cleanup = function() {\n if (doc) {\n unattach();\n eventUtils.unloadDel(unloadRef);\n iframe.parentNode.removeChild(iframe);\n iframe = doc = null;\n CollectGarbage();\n }\n };\n var onerror = function(r) {\n debug('onerror', r);\n if (doc) {\n cleanup();\n errorCallback(r);\n }\n };\n var post = function(msg, origin) {\n try {\n // When the iframe is not loaded, IE raises an exception\n // on 'contentWindow'.\n setTimeout(function() {\n if (iframe && iframe.contentWindow) {\n iframe.contentWindow.postMessage(msg, origin);\n }\n }, 0);\n } catch (x) {\n // intentionally empty\n }\n };\n\n doc.open();\n doc.write('<html><s' + 'cript>' +\n 'document.domain=\"' + global.document.domain + '\";' +\n '</s' + 'cript></html>');\n doc.close();\n doc.parentWindow[module.exports.WPrefix] = global[module.exports.WPrefix];\n var c = doc.createElement('div');\n doc.body.appendChild(c);\n iframe = doc.createElement('iframe');\n c.appendChild(iframe);\n iframe.src = iframeUrl;\n iframe.onerror = function() {\n onerror('onerror');\n };\n tref = setTimeout(function() {\n onerror('timeout');\n }, 15000);\n unloadRef = eventUtils.unloadAdd(cleanup);\n return {\n post: post\n , cleanup: cleanup\n , loaded: unattach\n };\n }\n};\n\nmodule.exports.iframeEnabled = false;\nif (global.document) {\n // postMessage misbehaves in konqueror 4.6.5 - the messages are delivered with\n // huge delay, or not at all.\n module.exports.iframeEnabled = (typeof global.postMessage === 'function' ||\n typeof global.postMessage === 'object') && (!browser.isKonqueror());\n}\n","'use strict';\n\nvar logObject = {};\n['log', 'debug', 'warn'].forEach(function (level) {\n var levelExists;\n\n try {\n levelExists = global.console && global.console[level] && global.console[level].apply;\n } catch(e) {\n // do nothing\n }\n\n logObject[level] = levelExists ? function () {\n return global.console[level].apply(global.console, arguments);\n } : (level === 'log' ? function () {} : logObject.log);\n});\n\nmodule.exports = logObject;\n","'use strict';\n\nmodule.exports = {\n isObject: function(obj) {\n var type = typeof obj;\n return type === 'function' || type === 'object' && !!obj;\n }\n\n, extend: function(obj) {\n if (!this.isObject(obj)) {\n return obj;\n }\n var source, prop;\n for (var i = 1, length = arguments.length; i < length; i++) {\n source = arguments[i];\n for (prop in source) {\n if (Object.prototype.hasOwnProperty.call(source, prop)) {\n obj[prop] = source[prop];\n }\n }\n }\n return obj;\n }\n};\n","'use strict';\n\n/* global crypto:true */\nvar crypto = require('crypto');\n\n// This string has length 32, a power of 2, so the modulus doesn't introduce a\n// bias.\nvar _randomStringChars = 'abcdefghijklmnopqrstuvwxyz012345';\nmodule.exports = {\n string: function(length) {\n var max = _randomStringChars.length;\n var bytes = crypto.randomBytes(length);\n var ret = [];\n for (var i = 0; i < length; i++) {\n ret.push(_randomStringChars.substr(bytes[i] % max, 1));\n }\n return ret.join('');\n }\n\n, number: function(max) {\n return Math.floor(Math.random() * max);\n }\n\n, numberString: function(max) {\n var t = ('' + (max - 1)).length;\n var p = new Array(t + 1).join('0');\n return (p + this.number(max)).slice(-t);\n }\n};\n","'use strict';\n\nvar debug = function() {};\nif (\"production\" !== 'production') {\n debug = require('debug')('sockjs-client:utils:transport');\n}\n\nmodule.exports = function(availableTransports) {\n return {\n filterToEnabled: function(transportsWhitelist, info) {\n var transports = {\n main: []\n , facade: []\n };\n if (!transportsWhitelist) {\n transportsWhitelist = [];\n } else if (typeof transportsWhitelist === 'string') {\n transportsWhitelist = [transportsWhitelist];\n }\n\n availableTransports.forEach(function(trans) {\n if (!trans) {\n return;\n }\n\n if (trans.transportName === 'websocket' && info.websocket === false) {\n debug('disabled from server', 'websocket');\n return;\n }\n\n if (transportsWhitelist.length &&\n transportsWhitelist.indexOf(trans.transportName) === -1) {\n debug('not in whitelist', trans.transportName);\n return;\n }\n\n if (trans.enabled(info)) {\n debug('enabled', trans.transportName);\n transports.main.push(trans);\n if (trans.facadeTransport) {\n transports.facade.push(trans.facadeTransport);\n }\n } else {\n debug('disabled', trans.transportName);\n }\n });\n return transports;\n }\n };\n};\n","'use strict';\n\nvar URL = require('url-parse');\n\nvar debug = function() {};\nif (\"production\" !== 'production') {\n debug = require('debug')('sockjs-client:utils:url');\n}\n\nmodule.exports = {\n getOrigin: function(url) {\n if (!url) {\n return null;\n }\n\n var p = new URL(url);\n if (p.protocol === 'file:') {\n return null;\n }\n\n var port = p.port;\n if (!port) {\n port = (p.protocol === 'https:') ? '443' : '80';\n }\n\n return p.protocol + '//' + p.hostname + ':' + port;\n }\n\n, isOriginEqual: function(a, b) {\n var res = this.getOrigin(a) === this.getOrigin(b);\n debug('same', a, b, res);\n return res;\n }\n\n, isSchemeEqual: function(a, b) {\n return (a.split(':')[0] === b.split(':')[0]);\n }\n\n, addPath: function (url, path) {\n var qs = url.split('?');\n return qs[0] + path + (qs[1] ? '?' + qs[1] : '');\n }\n\n, addQuery: function (url, q) {\n return url + (url.indexOf('?') === -1 ? ('?' + q) : ('&' + q));\n }\n};\n","module.exports = '1.3.0';\n","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","/*! JSON v3.3.2 | http://bestiejs.github.io/json3 | Copyright 2012-2014, Kit Cambridge | http://kit.mit-license.org */\n;(function () {\n // Detect the `define` function exposed by asynchronous module loaders. The\n // strict `define` check is necessary for compatibility with `r.js`.\n var isLoader = typeof define === \"function\" && define.amd;\n\n // A set of types used to distinguish objects from primitives.\n var objectTypes = {\n \"function\": true,\n \"object\": true\n };\n\n // Detect the `exports` object exposed by CommonJS implementations.\n var freeExports = objectTypes[typeof exports] && exports && !exports.nodeType && exports;\n\n // Use the `global` object exposed by Node (including Browserify via\n // `insert-module-globals`), Narwhal, and Ringo as the default context,\n // and the `window` object in browsers. Rhino exports a `global` function\n // instead.\n var root = objectTypes[typeof window] && window || this,\n freeGlobal = freeExports && objectTypes[typeof module] && module && !module.nodeType && typeof global == \"object\" && global;\n\n if (freeGlobal && (freeGlobal[\"global\"] === freeGlobal || freeGlobal[\"window\"] === freeGlobal || freeGlobal[\"self\"] === freeGlobal)) {\n root = freeGlobal;\n }\n\n // Public: Initializes JSON 3 using the given `context` object, attaching the\n // `stringify` and `parse` functions to the specified `exports` object.\n function runInContext(context, exports) {\n context || (context = root[\"Object\"]());\n exports || (exports = root[\"Object\"]());\n\n // Native constructor aliases.\n var Number = context[\"Number\"] || root[\"Number\"],\n String = context[\"String\"] || root[\"String\"],\n Object = context[\"Object\"] || root[\"Object\"],\n Date = context[\"Date\"] || root[\"Date\"],\n SyntaxError = context[\"SyntaxError\"] || root[\"SyntaxError\"],\n TypeError = context[\"TypeError\"] || root[\"TypeError\"],\n Math = context[\"Math\"] || root[\"Math\"],\n nativeJSON = context[\"JSON\"] || root[\"JSON\"];\n\n // Delegate to the native `stringify` and `parse` implementations.\n if (typeof nativeJSON == \"object\" && nativeJSON) {\n exports.stringify = nativeJSON.stringify;\n exports.parse = nativeJSON.parse;\n }\n\n // Convenience aliases.\n var objectProto = Object.prototype,\n getClass = objectProto.toString,\n isProperty, forEach, undef;\n\n // Test the `Date#getUTC*` methods. Based on work by @Yaffle.\n var isExtended = new Date(-3509827334573292);\n try {\n // The `getUTCFullYear`, `Month`, and `Date` methods return nonsensical\n // results for certain dates in Opera >= 10.53.\n isExtended = isExtended.getUTCFullYear() == -109252 && isExtended.getUTCMonth() === 0 && isExtended.getUTCDate() === 1 &&\n // Safari < 2.0.2 stores the internal millisecond time value correctly,\n // but clips the values returned by the date methods to the range of\n // signed 32-bit integers ([-2 ** 31, 2 ** 31 - 1]).\n isExtended.getUTCHours() == 10 && isExtended.getUTCMinutes() == 37 && isExtended.getUTCSeconds() == 6 && isExtended.getUTCMilliseconds() == 708;\n } catch (exception) {}\n\n // Internal: Determines whether the native `JSON.stringify` and `parse`\n // implementations are spec-compliant. Based on work by Ken Snyder.\n function has(name) {\n if (has[name] !== undef) {\n // Return cached feature test result.\n return has[name];\n }\n var isSupported;\n if (name == \"bug-string-char-index\") {\n // IE <= 7 doesn't support accessing string characters using square\n // bracket notation. IE 8 only supports this for primitives.\n isSupported = \"a\"[0] != \"a\";\n } else if (name == \"json\") {\n // Indicates whether both `JSON.stringify` and `JSON.parse` are\n // supported.\n isSupported = has(\"json-stringify\") && has(\"json-parse\");\n } else {\n var value, serialized = '{\"a\":[1,true,false,null,\"\\\\u0000\\\\b\\\\n\\\\f\\\\r\\\\t\"]}';\n // Test `JSON.stringify`.\n if (name == \"json-stringify\") {\n var stringify = exports.stringify, stringifySupported = typeof stringify == \"function\" && isExtended;\n if (stringifySupported) {\n // A test function object with a custom `toJSON` method.\n (value = function () {\n return 1;\n }).toJSON = value;\n try {\n stringifySupported =\n // Firefox 3.1b1 and b2 serialize string, number, and boolean\n // primitives as object literals.\n stringify(0) === \"0\" &&\n // FF 3.1b1, b2, and JSON 2 serialize wrapped primitives as object\n // literals.\n stringify(new Number()) === \"0\" &&\n stringify(new String()) == '\"\"' &&\n // FF 3.1b1, 2 throw an error if the value is `null`, `undefined`, or\n // does not define a canonical JSON representation (this applies to\n // objects with `toJSON` properties as well, *unless* they are nested\n // within an object or array).\n stringify(getClass) === undef &&\n // IE 8 serializes `undefined` as `\"undefined\"`. Safari <= 5.1.7 and\n // FF 3.1b3 pass this test.\n stringify(undef) === undef &&\n // Safari <= 5.1.7 and FF 3.1b3 throw `Error`s and `TypeError`s,\n // respectively, if the value is omitted entirely.\n stringify() === undef &&\n // FF 3.1b1, 2 throw an error if the given value is not a number,\n // string, array, object, Boolean, or `null` literal. This applies to\n // objects with custom `toJSON` methods as well, unless they are nested\n // inside object or array literals. YUI 3.0.0b1 ignores custom `toJSON`\n // methods entirely.\n stringify(value) === \"1\" &&\n stringify([value]) == \"[1]\" &&\n // Prototype <= 1.6.1 serializes `[undefined]` as `\"[]\"` instead of\n // `\"[null]\"`.\n stringify([undef]) == \"[null]\" &&\n // YUI 3.0.0b1 fails to serialize `null` literals.\n stringify(null) == \"null\" &&\n // FF 3.1b1, 2 halts serialization if an array contains a function:\n // `[1, true, getClass, 1]` serializes as \"[1,true,],\". FF 3.1b3\n // elides non-JSON values from objects and arrays, unless they\n // define custom `toJSON` methods.\n stringify([undef, getClass, null]) == \"[null,null,null]\" &&\n // Simple serialization test. FF 3.1b1 uses Unicode escape sequences\n // where character escape codes are expected (e.g., `\\b` => `\\u0008`).\n stringify({ \"a\": [value, true, false, null, \"\\x00\\b\\n\\f\\r\\t\"] }) == serialized &&\n // FF 3.1b1 and b2 ignore the `filter` and `width` arguments.\n stringify(null, value) === \"1\" &&\n stringify([1, 2], null, 1) == \"[\\n 1,\\n 2\\n]\" &&\n // JSON 2, Prototype <= 1.7, and older WebKit builds incorrectly\n // serialize extended years.\n stringify(new Date(-8.64e15)) == '\"-271821-04-20T00:00:00.000Z\"' &&\n // The milliseconds are optional in ES 5, but required in 5.1.\n stringify(new Date(8.64e15)) == '\"+275760-09-13T00:00:00.000Z\"' &&\n // Firefox <= 11.0 incorrectly serializes years prior to 0 as negative\n // four-digit years instead of six-digit years. Credits: @Yaffle.\n stringify(new Date(-621987552e5)) == '\"-000001-01-01T00:00:00.000Z\"' &&\n // Safari <= 5.1.5 and Opera >= 10.53 incorrectly serialize millisecond\n // values less than 1000. Credits: @Yaffle.\n stringify(new Date(-1)) == '\"1969-12-31T23:59:59.999Z\"';\n } catch (exception) {\n stringifySupported = false;\n }\n }\n isSupported = stringifySupported;\n }\n // Test `JSON.parse`.\n if (name == \"json-parse\") {\n var parse = exports.parse;\n if (typeof parse == \"function\") {\n try {\n // FF 3.1b1, b2 will throw an exception if a bare literal is provided.\n // Conforming implementations should also coerce the initial argument to\n // a string prior to parsing.\n if (parse(\"0\") === 0 && !parse(false)) {\n // Simple parsing test.\n value = parse(serialized);\n var parseSupported = value[\"a\"].length == 5 && value[\"a\"][0] === 1;\n if (parseSupported) {\n try {\n // Safari <= 5.1.2 and FF 3.1b1 allow unescaped tabs in strings.\n parseSupported = !parse('\"\\t\"');\n } catch (exception) {}\n if (parseSupported) {\n try {\n // FF 4.0 and 4.0.1 allow leading `+` signs and leading\n // decimal points. FF 4.0, 4.0.1, and IE 9-10 also allow\n // certain octal literals.\n parseSupported = parse(\"01\") !== 1;\n } catch (exception) {}\n }\n if (parseSupported) {\n try {\n // FF 4.0, 4.0.1, and Rhino 1.7R3-R4 allow trailing decimal\n // points. These environments, along with FF 3.1b1 and 2,\n // also allow trailing commas in JSON objects and arrays.\n parseSupported = parse(\"1.\") !== 1;\n } catch (exception) {}\n }\n }\n }\n } catch (exception) {\n parseSupported = false;\n }\n }\n isSupported = parseSupported;\n }\n }\n return has[name] = !!isSupported;\n }\n\n if (!has(\"json\")) {\n // Common `[[Class]]` name aliases.\n var functionClass = \"[object Function]\",\n dateClass = \"[object Date]\",\n numberClass = \"[object Number]\",\n stringClass = \"[object String]\",\n arrayClass = \"[object Array]\",\n booleanClass = \"[object Boolean]\";\n\n // Detect incomplete support for accessing string characters by index.\n var charIndexBuggy = has(\"bug-string-char-index\");\n\n // Define additional utility methods if the `Date` methods are buggy.\n if (!isExtended) {\n var floor = Math.floor;\n // A mapping between the months of the year and the number of days between\n // January 1st and the first of the respective month.\n var Months = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334];\n // Internal: Calculates the number of days between the Unix epoch and the\n // first day of the given month.\n var getDay = function (year, month) {\n return Months[month] + 365 * (year - 1970) + floor((year - 1969 + (month = +(month > 1))) / 4) - floor((year - 1901 + month) / 100) + floor((year - 1601 + month) / 400);\n };\n }\n\n // Internal: Determines if a property is a direct property of the given\n // object. Delegates to the native `Object#hasOwnProperty` method.\n if (!(isProperty = objectProto.hasOwnProperty)) {\n isProperty = function (property) {\n var members = {}, constructor;\n if ((members.__proto__ = null, members.__proto__ = {\n // The *proto* property cannot be set multiple times in recent\n // versions of Firefox and SeaMonkey.\n \"toString\": 1\n }, members).toString != getClass) {\n // Safari <= 2.0.3 doesn't implement `Object#hasOwnProperty`, but\n // supports the mutable *proto* property.\n isProperty = function (property) {\n // Capture and break the object's prototype chain (see section 8.6.2\n // of the ES 5.1 spec). The parenthesized expression prevents an\n // unsafe transformation by the Closure Compiler.\n var original = this.__proto__, result = property in (this.__proto__ = null, this);\n // Restore the original prototype chain.\n this.__proto__ = original;\n return result;\n };\n } else {\n // Capture a reference to the top-level `Object` constructor.\n constructor = members.constructor;\n // Use the `constructor` property to simulate `Object#hasOwnProperty` in\n // other environments.\n isProperty = function (property) {\n var parent = (this.constructor || constructor).prototype;\n return property in this && !(property in parent && this[property] === parent[property]);\n };\n }\n members = null;\n return isProperty.call(this, property);\n };\n }\n\n // Internal: Normalizes the `for...in` iteration algorithm across\n // environments. Each enumerated key is yielded to a `callback` function.\n forEach = function (object, callback) {\n var size = 0, Properties, members, property;\n\n // Tests for bugs in the current environment's `for...in` algorithm. The\n // `valueOf` property inherits the non-enumerable flag from\n // `Object.prototype` in older versions of IE, Netscape, and Mozilla.\n (Properties = function () {\n this.valueOf = 0;\n }).prototype.valueOf = 0;\n\n // Iterate over a new instance of the `Properties` class.\n members = new Properties();\n for (property in members) {\n // Ignore all properties inherited from `Object.prototype`.\n if (isProperty.call(members, property)) {\n size++;\n }\n }\n Properties = members = null;\n\n // Normalize the iteration algorithm.\n if (!size) {\n // A list of non-enumerable properties inherited from `Object.prototype`.\n members = [\"valueOf\", \"toString\", \"toLocaleString\", \"propertyIsEnumerable\", \"isPrototypeOf\", \"hasOwnProperty\", \"constructor\"];\n // IE <= 8, Mozilla 1.0, and Netscape 6.2 ignore shadowed non-enumerable\n // properties.\n forEach = function (object, callback) {\n var isFunction = getClass.call(object) == functionClass, property, length;\n var hasProperty = !isFunction && typeof object.constructor != \"function\" && objectTypes[typeof object.hasOwnProperty] && object.hasOwnProperty || isProperty;\n for (property in object) {\n // Gecko <= 1.0 enumerates the `prototype` property of functions under\n // certain conditions; IE does not.\n if (!(isFunction && property == \"prototype\") && hasProperty.call(object, property)) {\n callback(property);\n }\n }\n // Manually invoke the callback for each non-enumerable property.\n for (length = members.length; property = members[--length]; hasProperty.call(object, property) && callback(property));\n };\n } else if (size == 2) {\n // Safari <= 2.0.4 enumerates shadowed properties twice.\n forEach = function (object, callback) {\n // Create a set of iterated properties.\n var members = {}, isFunction = getClass.call(object) == functionClass, property;\n for (property in object) {\n // Store each property name to prevent double enumeration. The\n // `prototype` property of functions is not enumerated due to cross-\n // environment inconsistencies.\n if (!(isFunction && property == \"prototype\") && !isProperty.call(members, property) && (members[property] = 1) && isProperty.call(object, property)) {\n callback(property);\n }\n }\n };\n } else {\n // No bugs detected; use the standard `for...in` algorithm.\n forEach = function (object, callback) {\n var isFunction = getClass.call(object) == functionClass, property, isConstructor;\n for (property in object) {\n if (!(isFunction && property == \"prototype\") && isProperty.call(object, property) && !(isConstructor = property === \"constructor\")) {\n callback(property);\n }\n }\n // Manually invoke the callback for the `constructor` property due to\n // cross-environment inconsistencies.\n if (isConstructor || isProperty.call(object, (property = \"constructor\"))) {\n callback(property);\n }\n };\n }\n return forEach(object, callback);\n };\n\n // Public: Serializes a JavaScript `value` as a JSON string. The optional\n // `filter` argument may specify either a function that alters how object and\n // array members are serialized, or an array of strings and numbers that\n // indicates which properties should be serialized. The optional `width`\n // argument may be either a string or number that specifies the indentation\n // level of the output.\n if (!has(\"json-stringify\")) {\n // Internal: A map of control characters and their escaped equivalents.\n var Escapes = {\n 92: \"\\\\\\\\\",\n 34: '\\\\\"',\n 8: \"\\\\b\",\n 12: \"\\\\f\",\n 10: \"\\\\n\",\n 13: \"\\\\r\",\n 9: \"\\\\t\"\n };\n\n // Internal: Converts `value` into a zero-padded string such that its\n // length is at least equal to `width`. The `width` must be <= 6.\n var leadingZeroes = \"000000\";\n var toPaddedString = function (width, value) {\n // The `|| 0` expression is necessary to work around a bug in\n // Opera <= 7.54u2 where `0 == -0`, but `String(-0) !== \"0\"`.\n return (leadingZeroes + (value || 0)).slice(-width);\n };\n\n // Internal: Double-quotes a string `value`, replacing all ASCII control\n // characters (characters with code unit values between 0 and 31) with\n // their escaped equivalents. This is an implementation of the\n // `Quote(value)` operation defined in ES 5.1 section 15.12.3.\n var unicodePrefix = \"\\\\u00\";\n var quote = function (value) {\n var result = '\"', index = 0, length = value.length, useCharIndex = !charIndexBuggy || length > 10;\n var symbols = useCharIndex && (charIndexBuggy ? value.split(\"\") : value);\n for (; index < length; index++) {\n var charCode = value.charCodeAt(index);\n // If the character is a control character, append its Unicode or\n // shorthand escape sequence; otherwise, append the character as-is.\n switch (charCode) {\n case 8: case 9: case 10: case 12: case 13: case 34: case 92:\n result += Escapes[charCode];\n break;\n default:\n if (charCode < 32) {\n result += unicodePrefix + toPaddedString(2, charCode.toString(16));\n break;\n }\n result += useCharIndex ? symbols[index] : value.charAt(index);\n }\n }\n return result + '\"';\n };\n\n // Internal: Recursively serializes an object. Implements the\n // `Str(key, holder)`, `JO(value)`, and `JA(value)` operations.\n var serialize = function (property, object, callback, properties, whitespace, indentation, stack) {\n var value, className, year, month, date, time, hours, minutes, seconds, milliseconds, results, element, index, length, prefix, result;\n try {\n // Necessary for host object support.\n value = object[property];\n } catch (exception) {}\n if (typeof value == \"object\" && value) {\n className = getClass.call(value);\n if (className == dateClass && !isProperty.call(value, \"toJSON\")) {\n if (value > -1 / 0 && value < 1 / 0) {\n // Dates are serialized according to the `Date#toJSON` method\n // specified in ES 5.1 section 15.9.5.44. See section 15.9.1.15\n // for the ISO 8601 date time string format.\n if (getDay) {\n // Manually compute the year, month, date, hours, minutes,\n // seconds, and milliseconds if the `getUTC*` methods are\n // buggy. Adapted from @Yaffle's `date-shim` project.\n date = floor(value / 864e5);\n for (year = floor(date / 365.2425) + 1970 - 1; getDay(year + 1, 0) <= date; year++);\n for (month = floor((date - getDay(year, 0)) / 30.42); getDay(year, month + 1) <= date; month++);\n date = 1 + date - getDay(year, month);\n // The `time` value specifies the time within the day (see ES\n // 5.1 section 15.9.1.2). The formula `(A % B + B) % B` is used\n // to compute `A modulo B`, as the `%` operator does not\n // correspond to the `modulo` operation for negative numbers.\n time = (value % 864e5 + 864e5) % 864e5;\n // The hours, minutes, seconds, and milliseconds are obtained by\n // decomposing the time within the day. See section 15.9.1.10.\n hours = floor(time / 36e5) % 24;\n minutes = floor(time / 6e4) % 60;\n seconds = floor(time / 1e3) % 60;\n milliseconds = time % 1e3;\n } else {\n year = value.getUTCFullYear();\n month = value.getUTCMonth();\n date = value.getUTCDate();\n hours = value.getUTCHours();\n minutes = value.getUTCMinutes();\n seconds = value.getUTCSeconds();\n milliseconds = value.getUTCMilliseconds();\n }\n // Serialize extended years correctly.\n value = (year <= 0 || year >= 1e4 ? (year < 0 ? \"-\" : \"+\") + toPaddedString(6, year < 0 ? -year : year) : toPaddedString(4, year)) +\n \"-\" + toPaddedString(2, month + 1) + \"-\" + toPaddedString(2, date) +\n // Months, dates, hours, minutes, and seconds should have two\n // digits; milliseconds should have three.\n \"T\" + toPaddedString(2, hours) + \":\" + toPaddedString(2, minutes) + \":\" + toPaddedString(2, seconds) +\n // Milliseconds are optional in ES 5.0, but required in 5.1.\n \".\" + toPaddedString(3, milliseconds) + \"Z\";\n } else {\n value = null;\n }\n } else if (typeof value.toJSON == \"function\" && ((className != numberClass && className != stringClass && className != arrayClass) || isProperty.call(value, \"toJSON\"))) {\n // Prototype <= 1.6.1 adds non-standard `toJSON` methods to the\n // `Number`, `String`, `Date`, and `Array` prototypes. JSON 3\n // ignores all `toJSON` methods on these objects unless they are\n // defined directly on an instance.\n value = value.toJSON(property);\n }\n }\n if (callback) {\n // If a replacement function was provided, call it to obtain the value\n // for serialization.\n value = callback.call(object, property, value);\n }\n if (value === null) {\n return \"null\";\n }\n className = getClass.call(value);\n if (className == booleanClass) {\n // Booleans are represented literally.\n return \"\" + value;\n } else if (className == numberClass) {\n // JSON numbers must be finite. `Infinity` and `NaN` are serialized as\n // `\"null\"`.\n return value > -1 / 0 && value < 1 / 0 ? \"\" + value : \"null\";\n } else if (className == stringClass) {\n // Strings are double-quoted and escaped.\n return quote(\"\" + value);\n }\n // Recursively serialize objects and arrays.\n if (typeof value == \"object\") {\n // Check for cyclic structures. This is a linear search; performance\n // is inversely proportional to the number of unique nested objects.\n for (length = stack.length; length--;) {\n if (stack[length] === value) {\n // Cyclic structures cannot be serialized by `JSON.stringify`.\n throw TypeError();\n }\n }\n // Add the object to the stack of traversed objects.\n stack.push(value);\n results = [];\n // Save the current indentation level and indent one additional level.\n prefix = indentation;\n indentation += whitespace;\n if (className == arrayClass) {\n // Recursively serialize array elements.\n for (index = 0, length = value.length; index < length; index++) {\n element = serialize(index, value, callback, properties, whitespace, indentation, stack);\n results.push(element === undef ? \"null\" : element);\n }\n result = results.length ? (whitespace ? \"[\\n\" + indentation + results.join(\",\\n\" + indentation) + \"\\n\" + prefix + \"]\" : (\"[\" + results.join(\",\") + \"]\")) : \"[]\";\n } else {\n // Recursively serialize object members. Members are selected from\n // either a user-specified list of property names, or the object\n // itself.\n forEach(properties || value, function (property) {\n var element = serialize(property, value, callback, properties, whitespace, indentation, stack);\n if (element !== undef) {\n // According to ES 5.1 section 15.12.3: \"If `gap` {whitespace}\n // is not the empty string, let `member` {quote(property) + \":\"}\n // be the concatenation of `member` and the `space` character.\"\n // The \"`space` character\" refers to the literal space\n // character, not the `space` {width} argument provided to\n // `JSON.stringify`.\n results.push(quote(property) + \":\" + (whitespace ? \" \" : \"\") + element);\n }\n });\n result = results.length ? (whitespace ? \"{\\n\" + indentation + results.join(\",\\n\" + indentation) + \"\\n\" + prefix + \"}\" : (\"{\" + results.join(\",\") + \"}\")) : \"{}\";\n }\n // Remove the object from the traversed object stack.\n stack.pop();\n return result;\n }\n };\n\n // Public: `JSON.stringify`. See ES 5.1 section 15.12.3.\n exports.stringify = function (source, filter, width) {\n var whitespace, callback, properties, className;\n if (objectTypes[typeof filter] && filter) {\n if ((className = getClass.call(filter)) == functionClass) {\n callback = filter;\n } else if (className == arrayClass) {\n // Convert the property names array into a makeshift set.\n properties = {};\n for (var index = 0, length = filter.length, value; index < length; value = filter[index++], ((className = getClass.call(value)), className == stringClass || className == numberClass) && (properties[value] = 1));\n }\n }\n if (width) {\n if ((className = getClass.call(width)) == numberClass) {\n // Convert the `width` to an integer and create a string containing\n // `width` number of space characters.\n if ((width -= width % 1) > 0) {\n for (whitespace = \"\", width > 10 && (width = 10); whitespace.length < width; whitespace += \" \");\n }\n } else if (className == stringClass) {\n whitespace = width.length <= 10 ? width : width.slice(0, 10);\n }\n }\n // Opera <= 7.54u2 discards the values associated with empty string keys\n // (`\"\"`) only if they are used directly within an object member list\n // (e.g., `!(\"\" in { \"\": 1})`).\n return serialize(\"\", (value = {}, value[\"\"] = source, value), callback, properties, whitespace, \"\", []);\n };\n }\n\n // Public: Parses a JSON source string.\n if (!has(\"json-parse\")) {\n var fromCharCode = String.fromCharCode;\n\n // Internal: A map of escaped control characters and their unescaped\n // equivalents.\n var Unescapes = {\n 92: \"\\\\\",\n 34: '\"',\n 47: \"/\",\n 98: \"\\b\",\n 116: \"\\t\",\n 110: \"\\n\",\n 102: \"\\f\",\n 114: \"\\r\"\n };\n\n // Internal: Stores the parser state.\n var Index, Source;\n\n // Internal: Resets the parser state and throws a `SyntaxError`.\n var abort = function () {\n Index = Source = null;\n throw SyntaxError();\n };\n\n // Internal: Returns the next token, or `\"$\"` if the parser has reached\n // the end of the source string. A token may be a string, number, `null`\n // literal, or Boolean literal.\n var lex = function () {\n var source = Source, length = source.length, value, begin, position, isSigned, charCode;\n while (Index < length) {\n charCode = source.charCodeAt(Index);\n switch (charCode) {\n case 9: case 10: case 13: case 32:\n // Skip whitespace tokens, including tabs, carriage returns, line\n // feeds, and space characters.\n Index++;\n break;\n case 123: case 125: case 91: case 93: case 58: case 44:\n // Parse a punctuator token (`{`, `}`, `[`, `]`, `:`, or `,`) at\n // the current position.\n value = charIndexBuggy ? source.charAt(Index) : source[Index];\n Index++;\n return value;\n case 34:\n // `\"` delimits a JSON string; advance to the next character and\n // begin parsing the string. String tokens are prefixed with the\n // sentinel `@` character to distinguish them from punctuators and\n // end-of-string tokens.\n for (value = \"@\", Index++; Index < length;) {\n charCode = source.charCodeAt(Index);\n if (charCode < 32) {\n // Unescaped ASCII control characters (those with a code unit\n // less than the space character) are not permitted.\n abort();\n } else if (charCode == 92) {\n // A reverse solidus (`\\`) marks the beginning of an escaped\n // control character (including `\"`, `\\`, and `/`) or Unicode\n // escape sequence.\n charCode = source.charCodeAt(++Index);\n switch (charCode) {\n case 92: case 34: case 47: case 98: case 116: case 110: case 102: case 114:\n // Revive escaped control characters.\n value += Unescapes[charCode];\n Index++;\n break;\n case 117:\n // `\\u` marks the beginning of a Unicode escape sequence.\n // Advance to the first character and validate the\n // four-digit code point.\n begin = ++Index;\n for (position = Index + 4; Index < position; Index++) {\n charCode = source.charCodeAt(Index);\n // A valid sequence comprises four hexdigits (case-\n // insensitive) that form a single hexadecimal value.\n if (!(charCode >= 48 && charCode <= 57 || charCode >= 97 && charCode <= 102 || charCode >= 65 && charCode <= 70)) {\n // Invalid Unicode escape sequence.\n abort();\n }\n }\n // Revive the escaped character.\n value += fromCharCode(\"0x\" + source.slice(begin, Index));\n break;\n default:\n // Invalid escape sequence.\n abort();\n }\n } else {\n if (charCode == 34) {\n // An unescaped double-quote character marks the end of the\n // string.\n break;\n }\n charCode = source.charCodeAt(Index);\n begin = Index;\n // Optimize for the common case where a string is valid.\n while (charCode >= 32 && charCode != 92 && charCode != 34) {\n charCode = source.charCodeAt(++Index);\n }\n // Append the string as-is.\n value += source.slice(begin, Index);\n }\n }\n if (source.charCodeAt(Index) == 34) {\n // Advance to the next character and return the revived string.\n Index++;\n return value;\n }\n // Unterminated string.\n abort();\n default:\n // Parse numbers and literals.\n begin = Index;\n // Advance past the negative sign, if one is specified.\n if (charCode == 45) {\n isSigned = true;\n charCode = source.charCodeAt(++Index);\n }\n // Parse an integer or floating-point value.\n if (charCode >= 48 && charCode <= 57) {\n // Leading zeroes are interpreted as octal literals.\n if (charCode == 48 && ((charCode = source.charCodeAt(Index + 1)), charCode >= 48 && charCode <= 57)) {\n // Illegal octal literal.\n abort();\n }\n isSigned = false;\n // Parse the integer component.\n for (; Index < length && ((charCode = source.charCodeAt(Index)), charCode >= 48 && charCode <= 57); Index++);\n // Floats cannot contain a leading decimal point; however, this\n // case is already accounted for by the parser.\n if (source.charCodeAt(Index) == 46) {\n position = ++Index;\n // Parse the decimal component.\n for (; position < length && ((charCode = source.charCodeAt(position)), charCode >= 48 && charCode <= 57); position++);\n if (position == Index) {\n // Illegal trailing decimal.\n abort();\n }\n Index = position;\n }\n // Parse exponents. The `e` denoting the exponent is\n // case-insensitive.\n charCode = source.charCodeAt(Index);\n if (charCode == 101 || charCode == 69) {\n charCode = source.charCodeAt(++Index);\n // Skip past the sign following the exponent, if one is\n // specified.\n if (charCode == 43 || charCode == 45) {\n Index++;\n }\n // Parse the exponential component.\n for (position = Index; position < length && ((charCode = source.charCodeAt(position)), charCode >= 48 && charCode <= 57); position++);\n if (position == Index) {\n // Illegal empty exponent.\n abort();\n }\n Index = position;\n }\n // Coerce the parsed value to a JavaScript number.\n return +source.slice(begin, Index);\n }\n // A negative sign may only precede numbers.\n if (isSigned) {\n abort();\n }\n // `true`, `false`, and `null` literals.\n if (source.slice(Index, Index + 4) == \"true\") {\n Index += 4;\n return true;\n } else if (source.slice(Index, Index + 5) == \"false\") {\n Index += 5;\n return false;\n } else if (source.slice(Index, Index + 4) == \"null\") {\n Index += 4;\n return null;\n }\n // Unrecognized token.\n abort();\n }\n }\n // Return the sentinel `$` character if the parser has reached the end\n // of the source string.\n return \"$\";\n };\n\n // Internal: Parses a JSON `value` token.\n var get = function (value) {\n var results, hasMembers;\n if (value == \"$\") {\n // Unexpected end of input.\n abort();\n }\n if (typeof value == \"string\") {\n if ((charIndexBuggy ? value.charAt(0) : value[0]) == \"@\") {\n // Remove the sentinel `@` character.\n return value.slice(1);\n }\n // Parse object and array literals.\n if (value == \"[\") {\n // Parses a JSON array, returning a new JavaScript array.\n results = [];\n for (;; hasMembers || (hasMembers = true)) {\n value = lex();\n // A closing square bracket marks the end of the array literal.\n if (value == \"]\") {\n break;\n }\n // If the array literal contains elements, the current token\n // should be a comma separating the previous element from the\n // next.\n if (hasMembers) {\n if (value == \",\") {\n value = lex();\n if (value == \"]\") {\n // Unexpected trailing `,` in array literal.\n abort();\n }\n } else {\n // A `,` must separate each array element.\n abort();\n }\n }\n // Elisions and leading commas are not permitted.\n if (value == \",\") {\n abort();\n }\n results.push(get(value));\n }\n return results;\n } else if (value == \"{\") {\n // Parses a JSON object, returning a new JavaScript object.\n results = {};\n for (;; hasMembers || (hasMembers = true)) {\n value = lex();\n // A closing curly brace marks the end of the object literal.\n if (value == \"}\") {\n break;\n }\n // If the object literal contains members, the current token\n // should be a comma separator.\n if (hasMembers) {\n if (value == \",\") {\n value = lex();\n if (value == \"}\") {\n // Unexpected trailing `,` in object literal.\n abort();\n }\n } else {\n // A `,` must separate each object member.\n abort();\n }\n }\n // Leading commas are not permitted, object property names must be\n // double-quoted strings, and a `:` must separate each property\n // name and value.\n if (value == \",\" || typeof value != \"string\" || (charIndexBuggy ? value.charAt(0) : value[0]) != \"@\" || lex() != \":\") {\n abort();\n }\n results[value.slice(1)] = get(lex());\n }\n return results;\n }\n // Unexpected token encountered.\n abort();\n }\n return value;\n };\n\n // Internal: Updates a traversed object member.\n var update = function (source, property, callback) {\n var element = walk(source, property, callback);\n if (element === undef) {\n delete source[property];\n } else {\n source[property] = element;\n }\n };\n\n // Internal: Recursively traverses a parsed JSON object, invoking the\n // `callback` function for each value. This is an implementation of the\n // `Walk(holder, name)` operation defined in ES 5.1 section 15.12.2.\n var walk = function (source, property, callback) {\n var value = source[property], length;\n if (typeof value == \"object\" && value) {\n // `forEach` can't be used to traverse an array in Opera <= 8.54\n // because its `Object#hasOwnProperty` implementation returns `false`\n // for array indices (e.g., `![1, 2, 3].hasOwnProperty(\"0\")`).\n if (getClass.call(value) == arrayClass) {\n for (length = value.length; length--;) {\n update(value, length, callback);\n }\n } else {\n forEach(value, function (property) {\n update(value, property, callback);\n });\n }\n }\n return callback.call(source, property, value);\n };\n\n // Public: `JSON.parse`. See ES 5.1 section 15.12.2.\n exports.parse = function (source, callback) {\n var result, value;\n Index = 0;\n Source = \"\" + source;\n result = get(lex());\n // If a JSON string contains multiple tokens, it is invalid.\n if (lex() != \"$\") {\n abort();\n }\n // Reset the parser state.\n Index = Source = null;\n return callback && getClass.call(callback) == functionClass ? walk((value = {}, value[\"\"] = result, value), \"\", callback) : result;\n };\n }\n }\n\n exports[\"runInContext\"] = runInContext;\n return exports;\n }\n\n if (freeExports && !isLoader) {\n // Export for CommonJS environments.\n runInContext(root, freeExports);\n } else {\n // Export for web browsers and JavaScript engines.\n var nativeJSON = root.JSON,\n previousJSON = root[\"JSON3\"],\n isRestored = false;\n\n var JSON3 = runInContext(root, (root[\"JSON3\"] = {\n // Public: Restores the original value of the global `JSON` object and\n // returns a reference to the `JSON3` object.\n \"noConflict\": function () {\n if (!isRestored) {\n isRestored = true;\n root.JSON = nativeJSON;\n root[\"JSON3\"] = previousJSON;\n nativeJSON = previousJSON = null;\n }\n return JSON3;\n }\n }));\n\n root.JSON = {\n \"parse\": JSON3.parse,\n \"stringify\": JSON3.stringify\n };\n }\n\n // Export for asynchronous module loaders.\n if (isLoader) {\n define(function () {\n return JSON3;\n });\n }\n}).call(this);\n","'use strict';\n\nvar has = Object.prototype.hasOwnProperty;\n\n/**\n * Decode a URI encoded string.\n *\n * @param {String} input The URI encoded string.\n * @returns {String} The decoded string.\n * @api private\n */\nfunction decode(input) {\n return decodeURIComponent(input.replace(/\\+/g, ' '));\n}\n\n/**\n * Simple query string parser.\n *\n * @param {String} query The query string that needs to be parsed.\n * @returns {Object}\n * @api public\n */\nfunction querystring(query) {\n var parser = /([^=?&]+)=?([^&]*)/g\n , result = {}\n , part;\n\n while (part = parser.exec(query)) {\n var key = decode(part[1])\n , value = decode(part[2]);\n\n //\n // Prevent overriding of existing properties. This ensures that build-in\n // methods like `toString` or __proto__ are not overriden by malicious\n // querystrings.\n //\n if (key in result) continue;\n result[key] = value;\n }\n\n return result;\n}\n\n/**\n * Transform a query string to an object.\n *\n * @param {Object} obj Object that should be transformed.\n * @param {String} prefix Optional prefix.\n * @returns {String}\n * @api public\n */\nfunction querystringify(obj, prefix) {\n prefix = prefix || '';\n\n var pairs = [];\n\n //\n // Optionally prefix with a '?' if needed\n //\n if ('string' !== typeof prefix) prefix = '?';\n\n for (var key in obj) {\n if (has.call(obj, key)) {\n pairs.push(encodeURIComponent(key) +'='+ encodeURIComponent(obj[key]));\n }\n }\n\n return pairs.length ? prefix + pairs.join('&') : '';\n}\n\n//\n// Expose the module.\n//\nexports.stringify = querystringify;\nexports.parse = querystring;\n","'use strict';\n\n/**\n * Check if we're required to add a port number.\n *\n * @see https://url.spec.whatwg.org/#default-port\n * @param {Number|String} port Port number we need to check\n * @param {String} protocol Protocol we need to check against.\n * @returns {Boolean} Is it a default port for the given protocol\n * @api private\n */\nmodule.exports = function required(port, protocol) {\n protocol = protocol.split(':')[0];\n port = +port;\n\n if (!port) return false;\n\n switch (protocol) {\n case 'http':\n case 'ws':\n return port !== 80;\n\n case 'https':\n case 'wss':\n return port !== 443;\n\n case 'ftp':\n return port !== 21;\n\n case 'gopher':\n return port !== 70;\n\n case 'file':\n return false;\n }\n\n return port !== 0;\n};\n","'use strict';\n\nvar required = require('requires-port')\n , qs = require('querystringify')\n , protocolre = /^([a-z][a-z0-9.+-]*:)?(\\/\\/)?([\\S\\s]*)/i\n , slashes = /^[A-Za-z][A-Za-z0-9+-.]*:\\/\\//;\n\n/**\n * These are the parse rules for the URL parser, it informs the parser\n * about:\n *\n * 0. The char it Needs to parse, if it's a string it should be done using\n * indexOf, RegExp using exec and NaN means set as current value.\n * 1. The property we should set when parsing this value.\n * 2. Indication if it's backwards or forward parsing, when set as number it's\n * the value of extra chars that should be split off.\n * 3. Inherit from location if non existing in the parser.\n * 4. `toLowerCase` the resulting value.\n */\nvar rules = [\n ['#', 'hash'], // Extract from the back.\n ['?', 'query'], // Extract from the back.\n function sanitize(address) { // Sanitize what is left of the address\n return address.replace('\\\\', '/');\n },\n ['/', 'pathname'], // Extract from the back.\n ['@', 'auth', 1], // Extract from the front.\n [NaN, 'host', undefined, 1, 1], // Set left over value.\n [/:(\\d+)$/, 'port', undefined, 1], // RegExp the back.\n [NaN, 'hostname', undefined, 1, 1] // Set left over.\n];\n\n/**\n * These properties should not be copied or inherited from. This is only needed\n * for all non blob URL's as a blob URL does not include a hash, only the\n * origin.\n *\n * @type {Object}\n * @private\n */\nvar ignore = { hash: 1, query: 1 };\n\n/**\n * The location object differs when your code is loaded through a normal page,\n * Worker or through a worker using a blob. And with the blobble begins the\n * trouble as the location object will contain the URL of the blob, not the\n * location of the page where our code is loaded in. The actual origin is\n * encoded in the `pathname` so we can thankfully generate a good \"default\"\n * location from it so we can generate proper relative URL's again.\n *\n * @param {Object|String} loc Optional default location object.\n * @returns {Object} lolcation object.\n * @public\n */\nfunction lolcation(loc) {\n var location = global && global.location || {};\n loc = loc || location;\n\n var finaldestination = {}\n , type = typeof loc\n , key;\n\n if ('blob:' === loc.protocol) {\n finaldestination = new Url(unescape(loc.pathname), {});\n } else if ('string' === type) {\n finaldestination = new Url(loc, {});\n for (key in ignore) delete finaldestination[key];\n } else if ('object' === type) {\n for (key in loc) {\n if (key in ignore) continue;\n finaldestination[key] = loc[key];\n }\n\n if (finaldestination.slashes === undefined) {\n finaldestination.slashes = slashes.test(loc.href);\n }\n }\n\n return finaldestination;\n}\n\n/**\n * @typedef ProtocolExtract\n * @type Object\n * @property {String} protocol Protocol matched in the URL, in lowercase.\n * @property {Boolean} slashes `true` if protocol is followed by \"//\", else `false`.\n * @property {String} rest Rest of the URL that is not part of the protocol.\n */\n\n/**\n * Extract protocol information from a URL with/without double slash (\"//\").\n *\n * @param {String} address URL we want to extract from.\n * @return {ProtocolExtract} Extracted information.\n * @private\n */\nfunction extractProtocol(address) {\n var match = protocolre.exec(address);\n\n return {\n protocol: match[1] ? match[1].toLowerCase() : '',\n slashes: !!match[2],\n rest: match[3]\n };\n}\n\n/**\n * Resolve a relative URL pathname against a base URL pathname.\n *\n * @param {String} relative Pathname of the relative URL.\n * @param {String} base Pathname of the base URL.\n * @return {String} Resolved pathname.\n * @private\n */\nfunction resolve(relative, base) {\n var path = (base || '/').split('/').slice(0, -1).concat(relative.split('/'))\n , i = path.length\n , last = path[i - 1]\n , unshift = false\n , up = 0;\n\n while (i--) {\n if (path[i] === '.') {\n path.splice(i, 1);\n } else if (path[i] === '..') {\n path.splice(i, 1);\n up++;\n } else if (up) {\n if (i === 0) unshift = true;\n path.splice(i, 1);\n up--;\n }\n }\n\n if (unshift) path.unshift('');\n if (last === '.' || last === '..') path.push('');\n\n return path.join('/');\n}\n\n/**\n * The actual URL instance. Instead of returning an object we've opted-in to\n * create an actual constructor as it's much more memory efficient and\n * faster and it pleases my OCD.\n *\n * It is worth noting that we should not use `URL` as class name to prevent\n * clashes with the global URL instance that got introduced in browsers.\n *\n * @constructor\n * @param {String} address URL we want to parse.\n * @param {Object|String} location Location defaults for relative paths.\n * @param {Boolean|Function} parser Parser for the query string.\n * @private\n */\nfunction Url(address, location, parser) {\n if (!(this instanceof Url)) {\n return new Url(address, location, parser);\n }\n\n var relative, extracted, parse, instruction, index, key\n , instructions = rules.slice()\n , type = typeof location\n , url = this\n , i = 0;\n\n //\n // The following if statements allows this module two have compatibility with\n // 2 different API:\n //\n // 1. Node.js's `url.parse` api which accepts a URL, boolean as arguments\n // where the boolean indicates that the query string should also be parsed.\n //\n // 2. The `URL` interface of the browser which accepts a URL, object as\n // arguments. The supplied object will be used as default values / fall-back\n // for relative paths.\n //\n if ('object' !== type && 'string' !== type) {\n parser = location;\n location = null;\n }\n\n if (parser && 'function' !== typeof parser) parser = qs.parse;\n\n location = lolcation(location);\n\n //\n // Extract protocol information before running the instructions.\n //\n extracted = extractProtocol(address || '');\n relative = !extracted.protocol && !extracted.slashes;\n url.slashes = extracted.slashes || relative && location.slashes;\n url.protocol = extracted.protocol || location.protocol || '';\n address = extracted.rest;\n\n //\n // When the authority component is absent the URL starts with a path\n // component.\n //\n if (!extracted.slashes) instructions[3] = [/(.*)/, 'pathname'];\n\n for (; i < instructions.length; i++) {\n instruction = instructions[i];\n\n if (typeof instruction === 'function') {\n address = instruction(address);\n continue;\n }\n\n parse = instruction[0];\n key = instruction[1];\n\n if (parse !== parse) {\n url[key] = address;\n } else if ('string' === typeof parse) {\n if (~(index = address.indexOf(parse))) {\n if ('number' === typeof instruction[2]) {\n url[key] = address.slice(0, index);\n address = address.slice(index + instruction[2]);\n } else {\n url[key] = address.slice(index);\n address = address.slice(0, index);\n }\n }\n } else if ((index = parse.exec(address))) {\n url[key] = index[1];\n address = address.slice(0, index.index);\n }\n\n url[key] = url[key] || (\n relative && instruction[3] ? location[key] || '' : ''\n );\n\n //\n // Hostname, host and protocol should be lowercased so they can be used to\n // create a proper `origin`.\n //\n if (instruction[4]) url[key] = url[key].toLowerCase();\n }\n\n //\n // Also parse the supplied query string in to an object. If we're supplied\n // with a custom parser as function use that instead of the default build-in\n // parser.\n //\n if (parser) url.query = parser(url.query);\n\n //\n // If the URL is relative, resolve the pathname against the base URL.\n //\n if (\n relative\n && location.slashes\n && url.pathname.charAt(0) !== '/'\n && (url.pathname !== '' || location.pathname !== '')\n ) {\n url.pathname = resolve(url.pathname, location.pathname);\n }\n\n //\n // We should not add port numbers if they are already the default port number\n // for a given protocol. As the host also contains the port number we're going\n // override it with the hostname which contains no port number.\n //\n if (!required(url.port, url.protocol)) {\n url.host = url.hostname;\n url.port = '';\n }\n\n //\n // Parse down the `auth` for the username and password.\n //\n url.username = url.password = '';\n if (url.auth) {\n instruction = url.auth.split(':');\n url.username = instruction[0] || '';\n url.password = instruction[1] || '';\n }\n\n url.origin = url.protocol && url.host && url.protocol !== 'file:'\n ? url.protocol +'//'+ url.host\n : 'null';\n\n //\n // The href is just the compiled result.\n //\n url.href = url.toString();\n}\n\n/**\n * This is convenience method for changing properties in the URL instance to\n * insure that they all propagate correctly.\n *\n * @param {String} part Property we need to adjust.\n * @param {Mixed} value The newly assigned value.\n * @param {Boolean|Function} fn When setting the query, it will be the function\n * used to parse the query.\n * When setting the protocol, double slash will be\n * removed from the final url if it is true.\n * @returns {URL} URL instance for chaining.\n * @public\n */\nfunction set(part, value, fn) {\n var url = this;\n\n switch (part) {\n case 'query':\n if ('string' === typeof value && value.length) {\n value = (fn || qs.parse)(value);\n }\n\n url[part] = value;\n break;\n\n case 'port':\n url[part] = value;\n\n if (!required(value, url.protocol)) {\n url.host = url.hostname;\n url[part] = '';\n } else if (value) {\n url.host = url.hostname +':'+ value;\n }\n\n break;\n\n case 'hostname':\n url[part] = value;\n\n if (url.port) value += ':'+ url.port;\n url.host = value;\n break;\n\n case 'host':\n url[part] = value;\n\n if (/:\\d+$/.test(value)) {\n value = value.split(':');\n url.port = value.pop();\n url.hostname = value.join(':');\n } else {\n url.hostname = value;\n url.port = '';\n }\n\n break;\n\n case 'protocol':\n url.protocol = value.toLowerCase();\n url.slashes = !fn;\n break;\n\n case 'pathname':\n case 'hash':\n if (value) {\n var char = part === 'pathname' ? '/' : '#';\n url[part] = value.charAt(0) !== char ? char + value : value;\n } else {\n url[part] = value;\n }\n break;\n\n default:\n url[part] = value;\n }\n\n for (var i = 0; i < rules.length; i++) {\n var ins = rules[i];\n\n if (ins[4]) url[ins[1]] = url[ins[1]].toLowerCase();\n }\n\n url.origin = url.protocol && url.host && url.protocol !== 'file:'\n ? url.protocol +'//'+ url.host\n : 'null';\n\n url.href = url.toString();\n\n return url;\n}\n\n/**\n * Transform the properties back in to a valid and full URL string.\n *\n * @param {Function} stringify Optional query stringify function.\n * @returns {String} Compiled version of the URL.\n * @public\n */\nfunction toString(stringify) {\n if (!stringify || 'function' !== typeof stringify) stringify = qs.stringify;\n\n var query\n , url = this\n , protocol = url.protocol;\n\n if (protocol && protocol.charAt(protocol.length - 1) !== ':') protocol += ':';\n\n var result = protocol + (url.slashes ? '//' : '');\n\n if (url.username) {\n result += url.username;\n if (url.password) result += ':'+ url.password;\n result += '@';\n }\n\n result += url.host + url.pathname;\n\n query = 'object' === typeof url.query ? stringify(url.query) : url.query;\n if (query) result += '?' !== query.charAt(0) ? '?'+ query : query;\n\n if (url.hash) result += url.hash;\n\n return result;\n}\n\nUrl.prototype = { set: set, toString: toString };\n\n//\n// Expose the URL parser and some additional properties that might be useful for\n// others or testing.\n//\nUrl.extractProtocol = extractProtocol;\nUrl.location = lolcation;\nUrl.qs = qs;\n\nmodule.exports = Url;\n"]}