{"version":3,"sources":["webpack:///./node_modules/tunnel-agent/index.js","webpack:///./node_modules/tough-cookie/lib/pathMatch.js","webpack:///./node_modules/tough-cookie/lib/pubsuffix-psl.js","webpack:///./node_modules/tough-cookie/lib/memstore.js","webpack:///./node_modules/tweetnacl/nacl-fast.js","webpack:///./node_modules/tough-cookie/lib/store.js","webpack:///./node_modules/tough-cookie/lib/cookie.js","webpack:///./node_modules/tough-cookie/lib/permuteDomain.js","webpack:///./node_modules/to-arraybuffer/index.js","webpack:///./node_modules/tough-cookie/lib/version.js"],"names":["debug","tls","http","https","events","assert","util","Buffer","httpOverHttp","options","agent","TunnelingAgent","request","httpsOverHttp","createSocket","createSecureSocket","defaultPort","httpOverHttps","httpsOverHttps","self","this","proxyOptions","proxy","maxSockets","Agent","defaultMaxSockets","requests","sockets","on","socket","host","port","i","len","length","pending","splice","onSocket","destroy","removeSocket","cb","prototype","call","secureSocket","connect","mergeOptions","servername","indexOf","target","arguments","overrides","keys","Object","j","keyLen","k","undefined","exports","inherits","EventEmitter","addRequest","req","path","push","createConnection","onFree","emit","onCloseOrRemove","err","removeListener","placeholder","connectOptions","method","proxyAuth","headers","from","toString","connectReq","onResponse","res","upgrade","onUpgrade","head","process","nextTick","onConnect","removeAllListeners","statusCode","equal","error","Error","code","onError","cause","message","stack","useChunkedEncodingByDefault","once","end","pos","shift","NODE_DEBUG","test","args","Array","slice","unshift","console","apply","pathMatch","reqPath","cookiePath","idx","substr","psl","getPublicSuffix","domain","get","Store","permuteDomain","MemoryCookieStore","synchronous","inspect","custom","findCookie","key","findCookies","pathMatcher","results","domainIndex","forEach","pathIndex","curPath","domains","curDomain","putCookie","cookie","updateCookie","oldCookie","newCookie","removeCookie","removeCookies","removeAllCookies","getAllCookies","cookies","paths","sort","a","b","creationIndex","nacl","gf","init","r","Float64Array","randombytes","_0","Uint8Array","_9","gf0","gf1","_121665","D","D2","X","Y","I","ts64","x","h","l","vn","xi","y","yi","n","d","crypto_verify_16","crypto_verify_32","core_salsa20","o","p","c","u","j0","j1","j2","j3","j4","j5","j6","j7","j8","j9","j10","j11","j12","j13","j14","j15","x0","x1","x2","x3","x4","x5","x6","x7","x8","x9","x10","x11","x12","x13","x14","x15","core_hsalsa20","crypto_core_salsa20","out","inp","crypto_core_hsalsa20","sigma","crypto_stream_salsa20_xor","cpos","m","mpos","z","crypto_stream_salsa20","crypto_stream","s","sn","crypto_stream_xor","poly1305","t0","t1","t2","t3","t4","t5","t6","t7","buffer","Uint16Array","pad","leftover","fin","crypto_onetimeauth","outpos","update","finish","crypto_onetimeauth_verify","hpos","crypto_secretbox","crypto_secretbox_open","set25519","car25519","v","Math","floor","sel25519","q","t","pack25519","neq25519","par25519","unpack25519","A","Z","M","t8","t9","t10","t11","t12","t13","t14","t15","t16","t17","t18","t19","t20","t21","t22","t23","t24","t25","t26","t27","t28","t29","t30","b0","b1","b2","b3","b4","b5","b6","b7","b8","b9","b10","b11","b12","b13","b14","b15","S","inv25519","pow2523","crypto_scalarmult","e","f","x32","subarray","x16","crypto_scalarmult_base","crypto_box_keypair","crypto_box_beforenm","blocks","bytes","d0","d1","d2","d3","d4","d5","d6","d7","d8","d9","hibit","h0","h1","h2","h3","h4","h5","h6","h7","h8","h9","r0","r1","r2","r3","r4","r5","r6","r7","r8","r9","mac","macpos","mask","g","want","crypto_box_afternm","crypto_box_open_afternm","crypto_box","crypto_box_open","K","crypto_hashblocks_hl","hh","hl","bh0","bh1","bh2","bh3","bh4","bh5","bh6","bh7","bl0","bl1","bl2","bl3","bl4","bl5","bl6","bl7","th","tl","wh","Int32Array","wl","ah0","ah1","ah2","ah3","ah4","ah5","ah6","ah7","al0","al1","al2","al3","al4","al5","al6","al7","crypto_hash","add","cswap","pack","tx","ty","zi","scalarmult","scalarbase","crypto_sign_keypair","pk","sk","seeded","L","modL","carry","reduce","crypto_sign","sm","smlen","unpackneg","chk","num","den","den2","den4","den6","crypto_sign_open","mlen","crypto_secretbox_KEYBYTES","crypto_secretbox_NONCEBYTES","crypto_secretbox_ZEROBYTES","crypto_secretbox_BOXZEROBYTES","crypto_scalarmult_BYTES","crypto_scalarmult_SCALARBYTES","crypto_box_PUBLICKEYBYTES","crypto_box_SECRETKEYBYTES","crypto_box_BEFORENMBYTES","crypto_box_NONCEBYTES","crypto_box_ZEROBYTES","crypto_box_BOXZEROBYTES","crypto_sign_BYTES","crypto_sign_PUBLICKEYBYTES","crypto_sign_SECRETKEYBYTES","crypto_sign_SEEDBYTES","crypto_hash_BYTES","checkLengths","checkBoxLengths","checkArrayTypes","TypeError","cleanup","arr","lowlevel","decodeUTF8","encodeUTF8","encodeBase64","decodeBase64","randomBytes","secretbox","msg","nonce","open","box","keyLength","nonceLength","overheadLength","scalarMult","base","scalarLength","groupElementLength","publicKey","secretKey","before","after","keyPair","fromSecretKey","publicKeyLength","secretKeyLength","sharedKeyLength","sign","signedMsg","tmp","detached","sig","verify","fromSeed","seed","seedLength","signatureLength","hash","hashLength","setPRNG","fn","crypto","msCrypto","getRandomValues","QUOTA","min","module","punycode","net","urlParse","parse","pubsuffix","VERSION","warn","COOKIE_OCTETS","CONTROL_CHARS","TERMINATORS","PATH_VALUE","DATE_DELIM","MONTH_TO_NUM","jan","feb","mar","apr","may","jun","jul","aug","sep","oct","nov","dec","NUM_TO_MONTH","NUM_TO_DAY","MAX_TIME","MIN_TIME","parseDigits","token","minDigits","maxDigits","trailingOK","count","charCodeAt","parseInt","parseTime","parts","split","result","parseMonth","String","toLowerCase","parseDate","str","tokens","hour","minute","second","dayOfMonth","month","year","trim","Date","UTC","formatDate","date","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","getUTCDay","getUTCMonth","getUTCFullYear","canonicalDomain","replace","toASCII","domainMatch","domStr","canonicalize","isIP","defaultPath","rightSlash","lastIndexOf","trimTerminator","terminatorIdx","parseCookiePair","cookiePair","looseMode","cookieName","cookieValue","firstEq","Cookie","value","firstSemi","loose","unparsed","cookie_avs","av","av_key","av_value","av_sep","exp","expires","delta","setMaxAge","secure","httpOnly","extensions","jsonParse","obj","JSON","fromJSON","serializableProperties","prop","cookieCompare","cmp","aPathLen","bPathLen","aTime","creation","getTime","bTime","permutePath","permutations","lindex","getCookieContext","url","decodeURI","hasOwnProperty","defineProperty","configurable","enumerable","writable","cookiesCreated","CookieJar","store","rejectPublicSuffixes","enableLooseMode","maxAge","hostOnly","pathIsDefault","lastAccessed","filter","Function","now","toJSON","props","toISOString","Infinity","clone","validate","cdomain","match","suffix","setExpires","age","cookieString","val","ext","TTL","expiryTime","relativeTo","expiryDate","millisec","isPersistent","canonicalizedDomain","CAN_BE_SYNC","syncWrap","syncErr","syncResult","setCookie","context","hostname","ignoreError","pathname","withCookie","next","getCookies","protocol","expireCheck","expire","allPaths","matchingCookie","getCookieString","pop","map","join","getSetCookieStrings","serialize","type","constructor","name","serialized","version","storeType","serializeSync","_importCookies","jar","isArray","putNext","deserialize","strOrObj","deserializeSync","_importCookiesSync","newStore","completedCount","removeErrors","removeCookieCb","removeErr","_cloneSync","cloneSync","pubSuf","prefix","reverse","cur","buf","byteOffset","byteLength","isBuffer","arrayCopy"],"mappings":"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","file":"js/chunk-vendors~14b86b70.3c183202.js","sourcesContent":["'use strict'\n\nvar net = require('net')\n , tls = require('tls')\n , http = require('http')\n , https = require('https')\n , events = require('events')\n , assert = require('assert')\n , util = require('util')\n , Buffer = require('safe-buffer').Buffer\n ;\n\nexports.httpOverHttp = httpOverHttp\nexports.httpsOverHttp = httpsOverHttp\nexports.httpOverHttps = httpOverHttps\nexports.httpsOverHttps = httpsOverHttps\n\n\nfunction httpOverHttp(options) {\n var agent = new TunnelingAgent(options)\n agent.request = http.request\n return agent\n}\n\nfunction httpsOverHttp(options) {\n var agent = new TunnelingAgent(options)\n agent.request = http.request\n agent.createSocket = createSecureSocket\n agent.defaultPort = 443\n return agent\n}\n\nfunction httpOverHttps(options) {\n var agent = new TunnelingAgent(options)\n agent.request = https.request\n return agent\n}\n\nfunction httpsOverHttps(options) {\n var agent = new TunnelingAgent(options)\n agent.request = https.request\n agent.createSocket = createSecureSocket\n agent.defaultPort = 443\n return agent\n}\n\n\nfunction TunnelingAgent(options) {\n var self = this\n self.options = options || {}\n self.proxyOptions = self.options.proxy || {}\n self.maxSockets = self.options.maxSockets || http.Agent.defaultMaxSockets\n self.requests = []\n self.sockets = []\n\n self.on('free', function onFree(socket, host, port) {\n for (var i = 0, len = self.requests.length; i < len; ++i) {\n var pending = self.requests[i]\n if (pending.host === host && pending.port === port) {\n // Detect the request to connect same origin server,\n // reuse the connection.\n self.requests.splice(i, 1)\n pending.request.onSocket(socket)\n return\n }\n }\n socket.destroy()\n self.removeSocket(socket)\n })\n}\nutil.inherits(TunnelingAgent, events.EventEmitter)\n\nTunnelingAgent.prototype.addRequest = function addRequest(req, options) {\n var self = this\n\n // Legacy API: addRequest(req, host, port, path)\n if (typeof options === 'string') {\n options = {\n host: options,\n port: arguments[2],\n path: arguments[3]\n };\n }\n\n if (self.sockets.length >= this.maxSockets) {\n // We are over limit so we'll add it to the queue.\n self.requests.push({host: options.host, port: options.port, request: req})\n return\n }\n\n // If we are under maxSockets create a new one.\n self.createConnection({host: options.host, port: options.port, request: req})\n}\n\nTunnelingAgent.prototype.createConnection = function createConnection(pending) {\n var self = this\n\n self.createSocket(pending, function(socket) {\n socket.on('free', onFree)\n socket.on('close', onCloseOrRemove)\n socket.on('agentRemove', onCloseOrRemove)\n pending.request.onSocket(socket)\n\n function onFree() {\n self.emit('free', socket, pending.host, pending.port)\n }\n\n function onCloseOrRemove(err) {\n self.removeSocket(socket)\n socket.removeListener('free', onFree)\n socket.removeListener('close', onCloseOrRemove)\n socket.removeListener('agentRemove', onCloseOrRemove)\n }\n })\n}\n\nTunnelingAgent.prototype.createSocket = function createSocket(options, cb) {\n var self = this\n var placeholder = {}\n self.sockets.push(placeholder)\n\n var connectOptions = mergeOptions({}, self.proxyOptions,\n { method: 'CONNECT'\n , path: options.host + ':' + options.port\n , agent: false\n }\n )\n if (connectOptions.proxyAuth) {\n connectOptions.headers = connectOptions.headers || {}\n connectOptions.headers['Proxy-Authorization'] = 'Basic ' +\n Buffer.from(connectOptions.proxyAuth).toString('base64')\n }\n\n debug('making CONNECT request')\n var connectReq = self.request(connectOptions)\n connectReq.useChunkedEncodingByDefault = false // for v0.6\n connectReq.once('response', onResponse) // for v0.6\n connectReq.once('upgrade', onUpgrade) // for v0.6\n connectReq.once('connect', onConnect) // for v0.7 or later\n connectReq.once('error', onError)\n connectReq.end()\n\n function onResponse(res) {\n // Very hacky. This is necessary to avoid http-parser leaks.\n res.upgrade = true\n }\n\n function onUpgrade(res, socket, head) {\n // Hacky.\n process.nextTick(function() {\n onConnect(res, socket, head)\n })\n }\n\n function onConnect(res, socket, head) {\n connectReq.removeAllListeners()\n socket.removeAllListeners()\n\n if (res.statusCode === 200) {\n assert.equal(head.length, 0)\n debug('tunneling connection has established')\n self.sockets[self.sockets.indexOf(placeholder)] = socket\n cb(socket)\n } else {\n debug('tunneling socket could not be established, statusCode=%d', res.statusCode)\n var error = new Error('tunneling socket could not be established, ' + 'statusCode=' + res.statusCode)\n error.code = 'ECONNRESET'\n options.request.emit('error', error)\n self.removeSocket(placeholder)\n }\n }\n\n function onError(cause) {\n connectReq.removeAllListeners()\n\n debug('tunneling socket could not be established, cause=%s\\n', cause.message, cause.stack)\n var error = new Error('tunneling socket could not be established, ' + 'cause=' + cause.message)\n error.code = 'ECONNRESET'\n options.request.emit('error', error)\n self.removeSocket(placeholder)\n }\n}\n\nTunnelingAgent.prototype.removeSocket = function removeSocket(socket) {\n var pos = this.sockets.indexOf(socket)\n if (pos === -1) return\n\n this.sockets.splice(pos, 1)\n\n var pending = this.requests.shift()\n if (pending) {\n // If we have pending requests and a socket gets closed a new one\n // needs to be created to take over in the pool for the one that closed.\n this.createConnection(pending)\n }\n}\n\nfunction createSecureSocket(options, cb) {\n var self = this\n TunnelingAgent.prototype.createSocket.call(self, options, function(socket) {\n // 0 is dummy port for v0.6\n var secureSocket = tls.connect(0, mergeOptions({}, self.options,\n { servername: options.host\n , socket: socket\n }\n ))\n self.sockets[self.sockets.indexOf(socket)] = secureSocket\n cb(secureSocket)\n })\n}\n\n\nfunction mergeOptions(target) {\n for (var i = 1, len = arguments.length; i < len; ++i) {\n var overrides = arguments[i]\n if (typeof overrides === 'object') {\n var keys = Object.keys(overrides)\n for (var j = 0, keyLen = keys.length; j < keyLen; ++j) {\n var k = keys[j]\n if (overrides[k] !== undefined) {\n target[k] = overrides[k]\n }\n }\n }\n }\n return target\n}\n\n\nvar debug\nif (process.env.NODE_DEBUG && /\\btunnel\\b/.test(process.env.NODE_DEBUG)) {\n debug = function() {\n var args = Array.prototype.slice.call(arguments)\n if (typeof args[0] === 'string') {\n args[0] = 'TUNNEL: ' + args[0]\n } else {\n args.unshift('TUNNEL:')\n }\n console.error.apply(console, args)\n }\n} else {\n debug = function() {}\n}\nexports.debug = debug // for test\n","/*!\n * Copyright (c) 2015, Salesforce.com, Inc.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * 1. Redistributions of source code must retain the above copyright notice,\n * this list of conditions and the following disclaimer.\n *\n * 2. Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * 3. Neither the name of Salesforce.com nor the names of its contributors may\n * be used to endorse or promote products derived from this software without\n * specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE\n * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\"use strict\";\n/*\n * \"A request-path path-matches a given cookie-path if at least one of the\n * following conditions holds:\"\n */\nfunction pathMatch (reqPath, cookiePath) {\n // \"o The cookie-path and the request-path are identical.\"\n if (cookiePath === reqPath) {\n return true;\n }\n\n var idx = reqPath.indexOf(cookiePath);\n if (idx === 0) {\n // \"o The cookie-path is a prefix of the request-path, and the last\n // character of the cookie-path is %x2F (\"/\").\"\n if (cookiePath.substr(-1) === \"/\") {\n return true;\n }\n\n // \" o The cookie-path is a prefix of the request-path, and the first\n // character of the request-path that is not included in the cookie- path\n // is a %x2F (\"/\") character.\"\n if (reqPath.substr(cookiePath.length, 1) === \"/\") {\n return true;\n }\n }\n\n return false;\n}\n\nexports.pathMatch = pathMatch;\n","/*!\n * Copyright (c) 2018, Salesforce.com, Inc.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * 1. Redistributions of source code must retain the above copyright notice,\n * this list of conditions and the following disclaimer.\n *\n * 2. Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * 3. Neither the name of Salesforce.com nor the names of its contributors may\n * be used to endorse or promote products derived from this software without\n * specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE\n * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n'use strict';\nvar psl = require('psl');\n\nfunction getPublicSuffix(domain) {\n return psl.get(domain);\n}\n\nexports.getPublicSuffix = getPublicSuffix;\n","/*!\n * Copyright (c) 2015, Salesforce.com, Inc.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * 1. Redistributions of source code must retain the above copyright notice,\n * this list of conditions and the following disclaimer.\n *\n * 2. Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * 3. Neither the name of Salesforce.com nor the names of its contributors may\n * be used to endorse or promote products derived from this software without\n * specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE\n * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n'use strict';\nvar Store = require('./store').Store;\nvar permuteDomain = require('./permuteDomain').permuteDomain;\nvar pathMatch = require('./pathMatch').pathMatch;\nvar util = require('util');\n\nfunction MemoryCookieStore() {\n Store.call(this);\n this.idx = {};\n}\nutil.inherits(MemoryCookieStore, Store);\nexports.MemoryCookieStore = MemoryCookieStore;\nMemoryCookieStore.prototype.idx = null;\n\n// Since it's just a struct in RAM, this Store is synchronous\nMemoryCookieStore.prototype.synchronous = true;\n\n// force a default depth:\nMemoryCookieStore.prototype.inspect = function() {\n return \"{ idx: \"+util.inspect(this.idx, false, 2)+' }';\n};\n\n// Use the new custom inspection symbol to add the custom inspect function if\n// available.\nif (util.inspect.custom) {\n MemoryCookieStore.prototype[util.inspect.custom] = MemoryCookieStore.prototype.inspect;\n}\n\nMemoryCookieStore.prototype.findCookie = function(domain, path, key, cb) {\n if (!this.idx[domain]) {\n return cb(null,undefined);\n }\n if (!this.idx[domain][path]) {\n return cb(null,undefined);\n }\n return cb(null,this.idx[domain][path][key]||null);\n};\n\nMemoryCookieStore.prototype.findCookies = function(domain, path, cb) {\n var results = [];\n if (!domain) {\n return cb(null,[]);\n }\n\n var pathMatcher;\n if (!path) {\n // null means \"all paths\"\n pathMatcher = function matchAll(domainIndex) {\n for (var curPath in domainIndex) {\n var pathIndex = domainIndex[curPath];\n for (var key in pathIndex) {\n results.push(pathIndex[key]);\n }\n }\n };\n\n } else {\n pathMatcher = function matchRFC(domainIndex) {\n //NOTE: we should use path-match algorithm from S5.1.4 here\n //(see : https://github.com/ChromiumWebApps/chromium/blob/b3d3b4da8bb94c1b2e061600df106d590fda3620/net/cookies/canonical_cookie.cc#L299)\n Object.keys(domainIndex).forEach(function (cookiePath) {\n if (pathMatch(path, cookiePath)) {\n var pathIndex = domainIndex[cookiePath];\n\n for (var key in pathIndex) {\n results.push(pathIndex[key]);\n }\n }\n });\n };\n }\n\n var domains = permuteDomain(domain) || [domain];\n var idx = this.idx;\n domains.forEach(function(curDomain) {\n var domainIndex = idx[curDomain];\n if (!domainIndex) {\n return;\n }\n pathMatcher(domainIndex);\n });\n\n cb(null,results);\n};\n\nMemoryCookieStore.prototype.putCookie = function(cookie, cb) {\n if (!this.idx[cookie.domain]) {\n this.idx[cookie.domain] = {};\n }\n if (!this.idx[cookie.domain][cookie.path]) {\n this.idx[cookie.domain][cookie.path] = {};\n }\n this.idx[cookie.domain][cookie.path][cookie.key] = cookie;\n cb(null);\n};\n\nMemoryCookieStore.prototype.updateCookie = function(oldCookie, newCookie, cb) {\n // updateCookie() may avoid updating cookies that are identical. For example,\n // lastAccessed may not be important to some stores and an equality\n // comparison could exclude that field.\n this.putCookie(newCookie,cb);\n};\n\nMemoryCookieStore.prototype.removeCookie = function(domain, path, key, cb) {\n if (this.idx[domain] && this.idx[domain][path] && this.idx[domain][path][key]) {\n delete this.idx[domain][path][key];\n }\n cb(null);\n};\n\nMemoryCookieStore.prototype.removeCookies = function(domain, path, cb) {\n if (this.idx[domain]) {\n if (path) {\n delete this.idx[domain][path];\n } else {\n delete this.idx[domain];\n }\n }\n return cb(null);\n};\n\nMemoryCookieStore.prototype.removeAllCookies = function(cb) {\n this.idx = {};\n return cb(null);\n}\n\nMemoryCookieStore.prototype.getAllCookies = function(cb) {\n var cookies = [];\n var idx = this.idx;\n\n var domains = Object.keys(idx);\n domains.forEach(function(domain) {\n var paths = Object.keys(idx[domain]);\n paths.forEach(function(path) {\n var keys = Object.keys(idx[domain][path]);\n keys.forEach(function(key) {\n if (key !== null) {\n cookies.push(idx[domain][path][key]);\n }\n });\n });\n });\n\n // Sort by creationIndex so deserializing retains the creation order.\n // When implementing your own store, this SHOULD retain the order too\n cookies.sort(function(a,b) {\n return (a.creationIndex||0) - (b.creationIndex||0);\n });\n\n cb(null, cookies);\n};\n","(function(nacl) {\n'use strict';\n\n// Ported in 2014 by Dmitry Chestnykh and Devi Mandiri.\n// Public domain.\n//\n// Implementation derived from TweetNaCl version 20140427.\n// See for details: http://tweetnacl.cr.yp.to/\n\nvar gf = function(init) {\n var i, r = new Float64Array(16);\n if (init) for (i = 0; i < init.length; i++) r[i] = init[i];\n return r;\n};\n\n// Pluggable, initialized in high-level API below.\nvar randombytes = function(/* x, n */) { throw new Error('no PRNG'); };\n\nvar _0 = new Uint8Array(16);\nvar _9 = new Uint8Array(32); _9[0] = 9;\n\nvar gf0 = gf(),\n gf1 = gf([1]),\n _121665 = gf([0xdb41, 1]),\n D = gf([0x78a3, 0x1359, 0x4dca, 0x75eb, 0xd8ab, 0x4141, 0x0a4d, 0x0070, 0xe898, 0x7779, 0x4079, 0x8cc7, 0xfe73, 0x2b6f, 0x6cee, 0x5203]),\n D2 = gf([0xf159, 0x26b2, 0x9b94, 0xebd6, 0xb156, 0x8283, 0x149a, 0x00e0, 0xd130, 0xeef3, 0x80f2, 0x198e, 0xfce7, 0x56df, 0xd9dc, 0x2406]),\n X = gf([0xd51a, 0x8f25, 0x2d60, 0xc956, 0xa7b2, 0x9525, 0xc760, 0x692c, 0xdc5c, 0xfdd6, 0xe231, 0xc0a4, 0x53fe, 0xcd6e, 0x36d3, 0x2169]),\n Y = gf([0x6658, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666]),\n I = gf([0xa0b0, 0x4a0e, 0x1b27, 0xc4ee, 0xe478, 0xad2f, 0x1806, 0x2f43, 0xd7a7, 0x3dfb, 0x0099, 0x2b4d, 0xdf0b, 0x4fc1, 0x2480, 0x2b83]);\n\nfunction ts64(x, i, h, l) {\n x[i] = (h >> 24) & 0xff;\n x[i+1] = (h >> 16) & 0xff;\n x[i+2] = (h >> 8) & 0xff;\n x[i+3] = h & 0xff;\n x[i+4] = (l >> 24) & 0xff;\n x[i+5] = (l >> 16) & 0xff;\n x[i+6] = (l >> 8) & 0xff;\n x[i+7] = l & 0xff;\n}\n\nfunction vn(x, xi, y, yi, n) {\n var i,d = 0;\n for (i = 0; i < n; i++) d |= x[xi+i]^y[yi+i];\n return (1 & ((d - 1) >>> 8)) - 1;\n}\n\nfunction crypto_verify_16(x, xi, y, yi) {\n return vn(x,xi,y,yi,16);\n}\n\nfunction crypto_verify_32(x, xi, y, yi) {\n return vn(x,xi,y,yi,32);\n}\n\nfunction core_salsa20(o, p, k, c) {\n var j0 = c[ 0] & 0xff | (c[ 1] & 0xff)<<8 | (c[ 2] & 0xff)<<16 | (c[ 3] & 0xff)<<24,\n j1 = k[ 0] & 0xff | (k[ 1] & 0xff)<<8 | (k[ 2] & 0xff)<<16 | (k[ 3] & 0xff)<<24,\n j2 = k[ 4] & 0xff | (k[ 5] & 0xff)<<8 | (k[ 6] & 0xff)<<16 | (k[ 7] & 0xff)<<24,\n j3 = k[ 8] & 0xff | (k[ 9] & 0xff)<<8 | (k[10] & 0xff)<<16 | (k[11] & 0xff)<<24,\n j4 = k[12] & 0xff | (k[13] & 0xff)<<8 | (k[14] & 0xff)<<16 | (k[15] & 0xff)<<24,\n j5 = c[ 4] & 0xff | (c[ 5] & 0xff)<<8 | (c[ 6] & 0xff)<<16 | (c[ 7] & 0xff)<<24,\n j6 = p[ 0] & 0xff | (p[ 1] & 0xff)<<8 | (p[ 2] & 0xff)<<16 | (p[ 3] & 0xff)<<24,\n j7 = p[ 4] & 0xff | (p[ 5] & 0xff)<<8 | (p[ 6] & 0xff)<<16 | (p[ 7] & 0xff)<<24,\n j8 = p[ 8] & 0xff | (p[ 9] & 0xff)<<8 | (p[10] & 0xff)<<16 | (p[11] & 0xff)<<24,\n j9 = p[12] & 0xff | (p[13] & 0xff)<<8 | (p[14] & 0xff)<<16 | (p[15] & 0xff)<<24,\n j10 = c[ 8] & 0xff | (c[ 9] & 0xff)<<8 | (c[10] & 0xff)<<16 | (c[11] & 0xff)<<24,\n j11 = k[16] & 0xff | (k[17] & 0xff)<<8 | (k[18] & 0xff)<<16 | (k[19] & 0xff)<<24,\n j12 = k[20] & 0xff | (k[21] & 0xff)<<8 | (k[22] & 0xff)<<16 | (k[23] & 0xff)<<24,\n j13 = k[24] & 0xff | (k[25] & 0xff)<<8 | (k[26] & 0xff)<<16 | (k[27] & 0xff)<<24,\n j14 = k[28] & 0xff | (k[29] & 0xff)<<8 | (k[30] & 0xff)<<16 | (k[31] & 0xff)<<24,\n j15 = c[12] & 0xff | (c[13] & 0xff)<<8 | (c[14] & 0xff)<<16 | (c[15] & 0xff)<<24;\n\n var x0 = j0, x1 = j1, x2 = j2, x3 = j3, x4 = j4, x5 = j5, x6 = j6, x7 = j7,\n x8 = j8, x9 = j9, x10 = j10, x11 = j11, x12 = j12, x13 = j13, x14 = j14,\n x15 = j15, u;\n\n for (var i = 0; i < 20; i += 2) {\n u = x0 + x12 | 0;\n x4 ^= u<<7 | u>>>(32-7);\n u = x4 + x0 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x4 | 0;\n x12 ^= u<<13 | u>>>(32-13);\n u = x12 + x8 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x1 | 0;\n x9 ^= u<<7 | u>>>(32-7);\n u = x9 + x5 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x9 | 0;\n x1 ^= u<<13 | u>>>(32-13);\n u = x1 + x13 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x6 | 0;\n x14 ^= u<<7 | u>>>(32-7);\n u = x14 + x10 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x14 | 0;\n x6 ^= u<<13 | u>>>(32-13);\n u = x6 + x2 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x11 | 0;\n x3 ^= u<<7 | u>>>(32-7);\n u = x3 + x15 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x3 | 0;\n x11 ^= u<<13 | u>>>(32-13);\n u = x11 + x7 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n\n u = x0 + x3 | 0;\n x1 ^= u<<7 | u>>>(32-7);\n u = x1 + x0 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x1 | 0;\n x3 ^= u<<13 | u>>>(32-13);\n u = x3 + x2 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x4 | 0;\n x6 ^= u<<7 | u>>>(32-7);\n u = x6 + x5 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x6 | 0;\n x4 ^= u<<13 | u>>>(32-13);\n u = x4 + x7 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x9 | 0;\n x11 ^= u<<7 | u>>>(32-7);\n u = x11 + x10 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x11 | 0;\n x9 ^= u<<13 | u>>>(32-13);\n u = x9 + x8 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x14 | 0;\n x12 ^= u<<7 | u>>>(32-7);\n u = x12 + x15 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x12 | 0;\n x14 ^= u<<13 | u>>>(32-13);\n u = x14 + x13 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n }\n x0 = x0 + j0 | 0;\n x1 = x1 + j1 | 0;\n x2 = x2 + j2 | 0;\n x3 = x3 + j3 | 0;\n x4 = x4 + j4 | 0;\n x5 = x5 + j5 | 0;\n x6 = x6 + j6 | 0;\n x7 = x7 + j7 | 0;\n x8 = x8 + j8 | 0;\n x9 = x9 + j9 | 0;\n x10 = x10 + j10 | 0;\n x11 = x11 + j11 | 0;\n x12 = x12 + j12 | 0;\n x13 = x13 + j13 | 0;\n x14 = x14 + j14 | 0;\n x15 = x15 + j15 | 0;\n\n o[ 0] = x0 >>> 0 & 0xff;\n o[ 1] = x0 >>> 8 & 0xff;\n o[ 2] = x0 >>> 16 & 0xff;\n o[ 3] = x0 >>> 24 & 0xff;\n\n o[ 4] = x1 >>> 0 & 0xff;\n o[ 5] = x1 >>> 8 & 0xff;\n o[ 6] = x1 >>> 16 & 0xff;\n o[ 7] = x1 >>> 24 & 0xff;\n\n o[ 8] = x2 >>> 0 & 0xff;\n o[ 9] = x2 >>> 8 & 0xff;\n o[10] = x2 >>> 16 & 0xff;\n o[11] = x2 >>> 24 & 0xff;\n\n o[12] = x3 >>> 0 & 0xff;\n o[13] = x3 >>> 8 & 0xff;\n o[14] = x3 >>> 16 & 0xff;\n o[15] = x3 >>> 24 & 0xff;\n\n o[16] = x4 >>> 0 & 0xff;\n o[17] = x4 >>> 8 & 0xff;\n o[18] = x4 >>> 16 & 0xff;\n o[19] = x4 >>> 24 & 0xff;\n\n o[20] = x5 >>> 0 & 0xff;\n o[21] = x5 >>> 8 & 0xff;\n o[22] = x5 >>> 16 & 0xff;\n o[23] = x5 >>> 24 & 0xff;\n\n o[24] = x6 >>> 0 & 0xff;\n o[25] = x6 >>> 8 & 0xff;\n o[26] = x6 >>> 16 & 0xff;\n o[27] = x6 >>> 24 & 0xff;\n\n o[28] = x7 >>> 0 & 0xff;\n o[29] = x7 >>> 8 & 0xff;\n o[30] = x7 >>> 16 & 0xff;\n o[31] = x7 >>> 24 & 0xff;\n\n o[32] = x8 >>> 0 & 0xff;\n o[33] = x8 >>> 8 & 0xff;\n o[34] = x8 >>> 16 & 0xff;\n o[35] = x8 >>> 24 & 0xff;\n\n o[36] = x9 >>> 0 & 0xff;\n o[37] = x9 >>> 8 & 0xff;\n o[38] = x9 >>> 16 & 0xff;\n o[39] = x9 >>> 24 & 0xff;\n\n o[40] = x10 >>> 0 & 0xff;\n o[41] = x10 >>> 8 & 0xff;\n o[42] = x10 >>> 16 & 0xff;\n o[43] = x10 >>> 24 & 0xff;\n\n o[44] = x11 >>> 0 & 0xff;\n o[45] = x11 >>> 8 & 0xff;\n o[46] = x11 >>> 16 & 0xff;\n o[47] = x11 >>> 24 & 0xff;\n\n o[48] = x12 >>> 0 & 0xff;\n o[49] = x12 >>> 8 & 0xff;\n o[50] = x12 >>> 16 & 0xff;\n o[51] = x12 >>> 24 & 0xff;\n\n o[52] = x13 >>> 0 & 0xff;\n o[53] = x13 >>> 8 & 0xff;\n o[54] = x13 >>> 16 & 0xff;\n o[55] = x13 >>> 24 & 0xff;\n\n o[56] = x14 >>> 0 & 0xff;\n o[57] = x14 >>> 8 & 0xff;\n o[58] = x14 >>> 16 & 0xff;\n o[59] = x14 >>> 24 & 0xff;\n\n o[60] = x15 >>> 0 & 0xff;\n o[61] = x15 >>> 8 & 0xff;\n o[62] = x15 >>> 16 & 0xff;\n o[63] = x15 >>> 24 & 0xff;\n}\n\nfunction core_hsalsa20(o,p,k,c) {\n var j0 = c[ 0] & 0xff | (c[ 1] & 0xff)<<8 | (c[ 2] & 0xff)<<16 | (c[ 3] & 0xff)<<24,\n j1 = k[ 0] & 0xff | (k[ 1] & 0xff)<<8 | (k[ 2] & 0xff)<<16 | (k[ 3] & 0xff)<<24,\n j2 = k[ 4] & 0xff | (k[ 5] & 0xff)<<8 | (k[ 6] & 0xff)<<16 | (k[ 7] & 0xff)<<24,\n j3 = k[ 8] & 0xff | (k[ 9] & 0xff)<<8 | (k[10] & 0xff)<<16 | (k[11] & 0xff)<<24,\n j4 = k[12] & 0xff | (k[13] & 0xff)<<8 | (k[14] & 0xff)<<16 | (k[15] & 0xff)<<24,\n j5 = c[ 4] & 0xff | (c[ 5] & 0xff)<<8 | (c[ 6] & 0xff)<<16 | (c[ 7] & 0xff)<<24,\n j6 = p[ 0] & 0xff | (p[ 1] & 0xff)<<8 | (p[ 2] & 0xff)<<16 | (p[ 3] & 0xff)<<24,\n j7 = p[ 4] & 0xff | (p[ 5] & 0xff)<<8 | (p[ 6] & 0xff)<<16 | (p[ 7] & 0xff)<<24,\n j8 = p[ 8] & 0xff | (p[ 9] & 0xff)<<8 | (p[10] & 0xff)<<16 | (p[11] & 0xff)<<24,\n j9 = p[12] & 0xff | (p[13] & 0xff)<<8 | (p[14] & 0xff)<<16 | (p[15] & 0xff)<<24,\n j10 = c[ 8] & 0xff | (c[ 9] & 0xff)<<8 | (c[10] & 0xff)<<16 | (c[11] & 0xff)<<24,\n j11 = k[16] & 0xff | (k[17] & 0xff)<<8 | (k[18] & 0xff)<<16 | (k[19] & 0xff)<<24,\n j12 = k[20] & 0xff | (k[21] & 0xff)<<8 | (k[22] & 0xff)<<16 | (k[23] & 0xff)<<24,\n j13 = k[24] & 0xff | (k[25] & 0xff)<<8 | (k[26] & 0xff)<<16 | (k[27] & 0xff)<<24,\n j14 = k[28] & 0xff | (k[29] & 0xff)<<8 | (k[30] & 0xff)<<16 | (k[31] & 0xff)<<24,\n j15 = c[12] & 0xff | (c[13] & 0xff)<<8 | (c[14] & 0xff)<<16 | (c[15] & 0xff)<<24;\n\n var x0 = j0, x1 = j1, x2 = j2, x3 = j3, x4 = j4, x5 = j5, x6 = j6, x7 = j7,\n x8 = j8, x9 = j9, x10 = j10, x11 = j11, x12 = j12, x13 = j13, x14 = j14,\n x15 = j15, u;\n\n for (var i = 0; i < 20; i += 2) {\n u = x0 + x12 | 0;\n x4 ^= u<<7 | u>>>(32-7);\n u = x4 + x0 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x4 | 0;\n x12 ^= u<<13 | u>>>(32-13);\n u = x12 + x8 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x1 | 0;\n x9 ^= u<<7 | u>>>(32-7);\n u = x9 + x5 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x9 | 0;\n x1 ^= u<<13 | u>>>(32-13);\n u = x1 + x13 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x6 | 0;\n x14 ^= u<<7 | u>>>(32-7);\n u = x14 + x10 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x14 | 0;\n x6 ^= u<<13 | u>>>(32-13);\n u = x6 + x2 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x11 | 0;\n x3 ^= u<<7 | u>>>(32-7);\n u = x3 + x15 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x3 | 0;\n x11 ^= u<<13 | u>>>(32-13);\n u = x11 + x7 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n\n u = x0 + x3 | 0;\n x1 ^= u<<7 | u>>>(32-7);\n u = x1 + x0 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x1 | 0;\n x3 ^= u<<13 | u>>>(32-13);\n u = x3 + x2 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x4 | 0;\n x6 ^= u<<7 | u>>>(32-7);\n u = x6 + x5 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x6 | 0;\n x4 ^= u<<13 | u>>>(32-13);\n u = x4 + x7 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x9 | 0;\n x11 ^= u<<7 | u>>>(32-7);\n u = x11 + x10 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x11 | 0;\n x9 ^= u<<13 | u>>>(32-13);\n u = x9 + x8 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x14 | 0;\n x12 ^= u<<7 | u>>>(32-7);\n u = x12 + x15 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x12 | 0;\n x14 ^= u<<13 | u>>>(32-13);\n u = x14 + x13 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n }\n\n o[ 0] = x0 >>> 0 & 0xff;\n o[ 1] = x0 >>> 8 & 0xff;\n o[ 2] = x0 >>> 16 & 0xff;\n o[ 3] = x0 >>> 24 & 0xff;\n\n o[ 4] = x5 >>> 0 & 0xff;\n o[ 5] = x5 >>> 8 & 0xff;\n o[ 6] = x5 >>> 16 & 0xff;\n o[ 7] = x5 >>> 24 & 0xff;\n\n o[ 8] = x10 >>> 0 & 0xff;\n o[ 9] = x10 >>> 8 & 0xff;\n o[10] = x10 >>> 16 & 0xff;\n o[11] = x10 >>> 24 & 0xff;\n\n o[12] = x15 >>> 0 & 0xff;\n o[13] = x15 >>> 8 & 0xff;\n o[14] = x15 >>> 16 & 0xff;\n o[15] = x15 >>> 24 & 0xff;\n\n o[16] = x6 >>> 0 & 0xff;\n o[17] = x6 >>> 8 & 0xff;\n o[18] = x6 >>> 16 & 0xff;\n o[19] = x6 >>> 24 & 0xff;\n\n o[20] = x7 >>> 0 & 0xff;\n o[21] = x7 >>> 8 & 0xff;\n o[22] = x7 >>> 16 & 0xff;\n o[23] = x7 >>> 24 & 0xff;\n\n o[24] = x8 >>> 0 & 0xff;\n o[25] = x8 >>> 8 & 0xff;\n o[26] = x8 >>> 16 & 0xff;\n o[27] = x8 >>> 24 & 0xff;\n\n o[28] = x9 >>> 0 & 0xff;\n o[29] = x9 >>> 8 & 0xff;\n o[30] = x9 >>> 16 & 0xff;\n o[31] = x9 >>> 24 & 0xff;\n}\n\nfunction crypto_core_salsa20(out,inp,k,c) {\n core_salsa20(out,inp,k,c);\n}\n\nfunction crypto_core_hsalsa20(out,inp,k,c) {\n core_hsalsa20(out,inp,k,c);\n}\n\nvar sigma = new Uint8Array([101, 120, 112, 97, 110, 100, 32, 51, 50, 45, 98, 121, 116, 101, 32, 107]);\n // \"expand 32-byte k\"\n\nfunction crypto_stream_salsa20_xor(c,cpos,m,mpos,b,n,k) {\n var z = new Uint8Array(16), x = new Uint8Array(64);\n var u, i;\n for (i = 0; i < 16; i++) z[i] = 0;\n for (i = 0; i < 8; i++) z[i] = n[i];\n while (b >= 64) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < 64; i++) c[cpos+i] = m[mpos+i] ^ x[i];\n u = 1;\n for (i = 8; i < 16; i++) {\n u = u + (z[i] & 0xff) | 0;\n z[i] = u & 0xff;\n u >>>= 8;\n }\n b -= 64;\n cpos += 64;\n mpos += 64;\n }\n if (b > 0) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < b; i++) c[cpos+i] = m[mpos+i] ^ x[i];\n }\n return 0;\n}\n\nfunction crypto_stream_salsa20(c,cpos,b,n,k) {\n var z = new Uint8Array(16), x = new Uint8Array(64);\n var u, i;\n for (i = 0; i < 16; i++) z[i] = 0;\n for (i = 0; i < 8; i++) z[i] = n[i];\n while (b >= 64) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < 64; i++) c[cpos+i] = x[i];\n u = 1;\n for (i = 8; i < 16; i++) {\n u = u + (z[i] & 0xff) | 0;\n z[i] = u & 0xff;\n u >>>= 8;\n }\n b -= 64;\n cpos += 64;\n }\n if (b > 0) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < b; i++) c[cpos+i] = x[i];\n }\n return 0;\n}\n\nfunction crypto_stream(c,cpos,d,n,k) {\n var s = new Uint8Array(32);\n crypto_core_hsalsa20(s,n,k,sigma);\n var sn = new Uint8Array(8);\n for (var i = 0; i < 8; i++) sn[i] = n[i+16];\n return crypto_stream_salsa20(c,cpos,d,sn,s);\n}\n\nfunction crypto_stream_xor(c,cpos,m,mpos,d,n,k) {\n var s = new Uint8Array(32);\n crypto_core_hsalsa20(s,n,k,sigma);\n var sn = new Uint8Array(8);\n for (var i = 0; i < 8; i++) sn[i] = n[i+16];\n return crypto_stream_salsa20_xor(c,cpos,m,mpos,d,sn,s);\n}\n\n/*\n* Port of Andrew Moon's Poly1305-donna-16. Public domain.\n* https://github.com/floodyberry/poly1305-donna\n*/\n\nvar poly1305 = function(key) {\n this.buffer = new Uint8Array(16);\n this.r = new Uint16Array(10);\n this.h = new Uint16Array(10);\n this.pad = new Uint16Array(8);\n this.leftover = 0;\n this.fin = 0;\n\n var t0, t1, t2, t3, t4, t5, t6, t7;\n\n t0 = key[ 0] & 0xff | (key[ 1] & 0xff) << 8; this.r[0] = ( t0 ) & 0x1fff;\n t1 = key[ 2] & 0xff | (key[ 3] & 0xff) << 8; this.r[1] = ((t0 >>> 13) | (t1 << 3)) & 0x1fff;\n t2 = key[ 4] & 0xff | (key[ 5] & 0xff) << 8; this.r[2] = ((t1 >>> 10) | (t2 << 6)) & 0x1f03;\n t3 = key[ 6] & 0xff | (key[ 7] & 0xff) << 8; this.r[3] = ((t2 >>> 7) | (t3 << 9)) & 0x1fff;\n t4 = key[ 8] & 0xff | (key[ 9] & 0xff) << 8; this.r[4] = ((t3 >>> 4) | (t4 << 12)) & 0x00ff;\n this.r[5] = ((t4 >>> 1)) & 0x1ffe;\n t5 = key[10] & 0xff | (key[11] & 0xff) << 8; this.r[6] = ((t4 >>> 14) | (t5 << 2)) & 0x1fff;\n t6 = key[12] & 0xff | (key[13] & 0xff) << 8; this.r[7] = ((t5 >>> 11) | (t6 << 5)) & 0x1f81;\n t7 = key[14] & 0xff | (key[15] & 0xff) << 8; this.r[8] = ((t6 >>> 8) | (t7 << 8)) & 0x1fff;\n this.r[9] = ((t7 >>> 5)) & 0x007f;\n\n this.pad[0] = key[16] & 0xff | (key[17] & 0xff) << 8;\n this.pad[1] = key[18] & 0xff | (key[19] & 0xff) << 8;\n this.pad[2] = key[20] & 0xff | (key[21] & 0xff) << 8;\n this.pad[3] = key[22] & 0xff | (key[23] & 0xff) << 8;\n this.pad[4] = key[24] & 0xff | (key[25] & 0xff) << 8;\n this.pad[5] = key[26] & 0xff | (key[27] & 0xff) << 8;\n this.pad[6] = key[28] & 0xff | (key[29] & 0xff) << 8;\n this.pad[7] = key[30] & 0xff | (key[31] & 0xff) << 8;\n};\n\npoly1305.prototype.blocks = function(m, mpos, bytes) {\n var hibit = this.fin ? 0 : (1 << 11);\n var t0, t1, t2, t3, t4, t5, t6, t7, c;\n var d0, d1, d2, d3, d4, d5, d6, d7, d8, d9;\n\n var h0 = this.h[0],\n h1 = this.h[1],\n h2 = this.h[2],\n h3 = this.h[3],\n h4 = this.h[4],\n h5 = this.h[5],\n h6 = this.h[6],\n h7 = this.h[7],\n h8 = this.h[8],\n h9 = this.h[9];\n\n var r0 = this.r[0],\n r1 = this.r[1],\n r2 = this.r[2],\n r3 = this.r[3],\n r4 = this.r[4],\n r5 = this.r[5],\n r6 = this.r[6],\n r7 = this.r[7],\n r8 = this.r[8],\n r9 = this.r[9];\n\n while (bytes >= 16) {\n t0 = m[mpos+ 0] & 0xff | (m[mpos+ 1] & 0xff) << 8; h0 += ( t0 ) & 0x1fff;\n t1 = m[mpos+ 2] & 0xff | (m[mpos+ 3] & 0xff) << 8; h1 += ((t0 >>> 13) | (t1 << 3)) & 0x1fff;\n t2 = m[mpos+ 4] & 0xff | (m[mpos+ 5] & 0xff) << 8; h2 += ((t1 >>> 10) | (t2 << 6)) & 0x1fff;\n t3 = m[mpos+ 6] & 0xff | (m[mpos+ 7] & 0xff) << 8; h3 += ((t2 >>> 7) | (t3 << 9)) & 0x1fff;\n t4 = m[mpos+ 8] & 0xff | (m[mpos+ 9] & 0xff) << 8; h4 += ((t3 >>> 4) | (t4 << 12)) & 0x1fff;\n h5 += ((t4 >>> 1)) & 0x1fff;\n t5 = m[mpos+10] & 0xff | (m[mpos+11] & 0xff) << 8; h6 += ((t4 >>> 14) | (t5 << 2)) & 0x1fff;\n t6 = m[mpos+12] & 0xff | (m[mpos+13] & 0xff) << 8; h7 += ((t5 >>> 11) | (t6 << 5)) & 0x1fff;\n t7 = m[mpos+14] & 0xff | (m[mpos+15] & 0xff) << 8; h8 += ((t6 >>> 8) | (t7 << 8)) & 0x1fff;\n h9 += ((t7 >>> 5)) | hibit;\n\n c = 0;\n\n d0 = c;\n d0 += h0 * r0;\n d0 += h1 * (5 * r9);\n d0 += h2 * (5 * r8);\n d0 += h3 * (5 * r7);\n d0 += h4 * (5 * r6);\n c = (d0 >>> 13); d0 &= 0x1fff;\n d0 += h5 * (5 * r5);\n d0 += h6 * (5 * r4);\n d0 += h7 * (5 * r3);\n d0 += h8 * (5 * r2);\n d0 += h9 * (5 * r1);\n c += (d0 >>> 13); d0 &= 0x1fff;\n\n d1 = c;\n d1 += h0 * r1;\n d1 += h1 * r0;\n d1 += h2 * (5 * r9);\n d1 += h3 * (5 * r8);\n d1 += h4 * (5 * r7);\n c = (d1 >>> 13); d1 &= 0x1fff;\n d1 += h5 * (5 * r6);\n d1 += h6 * (5 * r5);\n d1 += h7 * (5 * r4);\n d1 += h8 * (5 * r3);\n d1 += h9 * (5 * r2);\n c += (d1 >>> 13); d1 &= 0x1fff;\n\n d2 = c;\n d2 += h0 * r2;\n d2 += h1 * r1;\n d2 += h2 * r0;\n d2 += h3 * (5 * r9);\n d2 += h4 * (5 * r8);\n c = (d2 >>> 13); d2 &= 0x1fff;\n d2 += h5 * (5 * r7);\n d2 += h6 * (5 * r6);\n d2 += h7 * (5 * r5);\n d2 += h8 * (5 * r4);\n d2 += h9 * (5 * r3);\n c += (d2 >>> 13); d2 &= 0x1fff;\n\n d3 = c;\n d3 += h0 * r3;\n d3 += h1 * r2;\n d3 += h2 * r1;\n d3 += h3 * r0;\n d3 += h4 * (5 * r9);\n c = (d3 >>> 13); d3 &= 0x1fff;\n d3 += h5 * (5 * r8);\n d3 += h6 * (5 * r7);\n d3 += h7 * (5 * r6);\n d3 += h8 * (5 * r5);\n d3 += h9 * (5 * r4);\n c += (d3 >>> 13); d3 &= 0x1fff;\n\n d4 = c;\n d4 += h0 * r4;\n d4 += h1 * r3;\n d4 += h2 * r2;\n d4 += h3 * r1;\n d4 += h4 * r0;\n c = (d4 >>> 13); d4 &= 0x1fff;\n d4 += h5 * (5 * r9);\n d4 += h6 * (5 * r8);\n d4 += h7 * (5 * r7);\n d4 += h8 * (5 * r6);\n d4 += h9 * (5 * r5);\n c += (d4 >>> 13); d4 &= 0x1fff;\n\n d5 = c;\n d5 += h0 * r5;\n d5 += h1 * r4;\n d5 += h2 * r3;\n d5 += h3 * r2;\n d5 += h4 * r1;\n c = (d5 >>> 13); d5 &= 0x1fff;\n d5 += h5 * r0;\n d5 += h6 * (5 * r9);\n d5 += h7 * (5 * r8);\n d5 += h8 * (5 * r7);\n d5 += h9 * (5 * r6);\n c += (d5 >>> 13); d5 &= 0x1fff;\n\n d6 = c;\n d6 += h0 * r6;\n d6 += h1 * r5;\n d6 += h2 * r4;\n d6 += h3 * r3;\n d6 += h4 * r2;\n c = (d6 >>> 13); d6 &= 0x1fff;\n d6 += h5 * r1;\n d6 += h6 * r0;\n d6 += h7 * (5 * r9);\n d6 += h8 * (5 * r8);\n d6 += h9 * (5 * r7);\n c += (d6 >>> 13); d6 &= 0x1fff;\n\n d7 = c;\n d7 += h0 * r7;\n d7 += h1 * r6;\n d7 += h2 * r5;\n d7 += h3 * r4;\n d7 += h4 * r3;\n c = (d7 >>> 13); d7 &= 0x1fff;\n d7 += h5 * r2;\n d7 += h6 * r1;\n d7 += h7 * r0;\n d7 += h8 * (5 * r9);\n d7 += h9 * (5 * r8);\n c += (d7 >>> 13); d7 &= 0x1fff;\n\n d8 = c;\n d8 += h0 * r8;\n d8 += h1 * r7;\n d8 += h2 * r6;\n d8 += h3 * r5;\n d8 += h4 * r4;\n c = (d8 >>> 13); d8 &= 0x1fff;\n d8 += h5 * r3;\n d8 += h6 * r2;\n d8 += h7 * r1;\n d8 += h8 * r0;\n d8 += h9 * (5 * r9);\n c += (d8 >>> 13); d8 &= 0x1fff;\n\n d9 = c;\n d9 += h0 * r9;\n d9 += h1 * r8;\n d9 += h2 * r7;\n d9 += h3 * r6;\n d9 += h4 * r5;\n c = (d9 >>> 13); d9 &= 0x1fff;\n d9 += h5 * r4;\n d9 += h6 * r3;\n d9 += h7 * r2;\n d9 += h8 * r1;\n d9 += h9 * r0;\n c += (d9 >>> 13); d9 &= 0x1fff;\n\n c = (((c << 2) + c)) | 0;\n c = (c + d0) | 0;\n d0 = c & 0x1fff;\n c = (c >>> 13);\n d1 += c;\n\n h0 = d0;\n h1 = d1;\n h2 = d2;\n h3 = d3;\n h4 = d4;\n h5 = d5;\n h6 = d6;\n h7 = d7;\n h8 = d8;\n h9 = d9;\n\n mpos += 16;\n bytes -= 16;\n }\n this.h[0] = h0;\n this.h[1] = h1;\n this.h[2] = h2;\n this.h[3] = h3;\n this.h[4] = h4;\n this.h[5] = h5;\n this.h[6] = h6;\n this.h[7] = h7;\n this.h[8] = h8;\n this.h[9] = h9;\n};\n\npoly1305.prototype.finish = function(mac, macpos) {\n var g = new Uint16Array(10);\n var c, mask, f, i;\n\n if (this.leftover) {\n i = this.leftover;\n this.buffer[i++] = 1;\n for (; i < 16; i++) this.buffer[i] = 0;\n this.fin = 1;\n this.blocks(this.buffer, 0, 16);\n }\n\n c = this.h[1] >>> 13;\n this.h[1] &= 0x1fff;\n for (i = 2; i < 10; i++) {\n this.h[i] += c;\n c = this.h[i] >>> 13;\n this.h[i] &= 0x1fff;\n }\n this.h[0] += (c * 5);\n c = this.h[0] >>> 13;\n this.h[0] &= 0x1fff;\n this.h[1] += c;\n c = this.h[1] >>> 13;\n this.h[1] &= 0x1fff;\n this.h[2] += c;\n\n g[0] = this.h[0] + 5;\n c = g[0] >>> 13;\n g[0] &= 0x1fff;\n for (i = 1; i < 10; i++) {\n g[i] = this.h[i] + c;\n c = g[i] >>> 13;\n g[i] &= 0x1fff;\n }\n g[9] -= (1 << 13);\n\n mask = (c ^ 1) - 1;\n for (i = 0; i < 10; i++) g[i] &= mask;\n mask = ~mask;\n for (i = 0; i < 10; i++) this.h[i] = (this.h[i] & mask) | g[i];\n\n this.h[0] = ((this.h[0] ) | (this.h[1] << 13) ) & 0xffff;\n this.h[1] = ((this.h[1] >>> 3) | (this.h[2] << 10) ) & 0xffff;\n this.h[2] = ((this.h[2] >>> 6) | (this.h[3] << 7) ) & 0xffff;\n this.h[3] = ((this.h[3] >>> 9) | (this.h[4] << 4) ) & 0xffff;\n this.h[4] = ((this.h[4] >>> 12) | (this.h[5] << 1) | (this.h[6] << 14)) & 0xffff;\n this.h[5] = ((this.h[6] >>> 2) | (this.h[7] << 11) ) & 0xffff;\n this.h[6] = ((this.h[7] >>> 5) | (this.h[8] << 8) ) & 0xffff;\n this.h[7] = ((this.h[8] >>> 8) | (this.h[9] << 5) ) & 0xffff;\n\n f = this.h[0] + this.pad[0];\n this.h[0] = f & 0xffff;\n for (i = 1; i < 8; i++) {\n f = (((this.h[i] + this.pad[i]) | 0) + (f >>> 16)) | 0;\n this.h[i] = f & 0xffff;\n }\n\n mac[macpos+ 0] = (this.h[0] >>> 0) & 0xff;\n mac[macpos+ 1] = (this.h[0] >>> 8) & 0xff;\n mac[macpos+ 2] = (this.h[1] >>> 0) & 0xff;\n mac[macpos+ 3] = (this.h[1] >>> 8) & 0xff;\n mac[macpos+ 4] = (this.h[2] >>> 0) & 0xff;\n mac[macpos+ 5] = (this.h[2] >>> 8) & 0xff;\n mac[macpos+ 6] = (this.h[3] >>> 0) & 0xff;\n mac[macpos+ 7] = (this.h[3] >>> 8) & 0xff;\n mac[macpos+ 8] = (this.h[4] >>> 0) & 0xff;\n mac[macpos+ 9] = (this.h[4] >>> 8) & 0xff;\n mac[macpos+10] = (this.h[5] >>> 0) & 0xff;\n mac[macpos+11] = (this.h[5] >>> 8) & 0xff;\n mac[macpos+12] = (this.h[6] >>> 0) & 0xff;\n mac[macpos+13] = (this.h[6] >>> 8) & 0xff;\n mac[macpos+14] = (this.h[7] >>> 0) & 0xff;\n mac[macpos+15] = (this.h[7] >>> 8) & 0xff;\n};\n\npoly1305.prototype.update = function(m, mpos, bytes) {\n var i, want;\n\n if (this.leftover) {\n want = (16 - this.leftover);\n if (want > bytes)\n want = bytes;\n for (i = 0; i < want; i++)\n this.buffer[this.leftover + i] = m[mpos+i];\n bytes -= want;\n mpos += want;\n this.leftover += want;\n if (this.leftover < 16)\n return;\n this.blocks(this.buffer, 0, 16);\n this.leftover = 0;\n }\n\n if (bytes >= 16) {\n want = bytes - (bytes % 16);\n this.blocks(m, mpos, want);\n mpos += want;\n bytes -= want;\n }\n\n if (bytes) {\n for (i = 0; i < bytes; i++)\n this.buffer[this.leftover + i] = m[mpos+i];\n this.leftover += bytes;\n }\n};\n\nfunction crypto_onetimeauth(out, outpos, m, mpos, n, k) {\n var s = new poly1305(k);\n s.update(m, mpos, n);\n s.finish(out, outpos);\n return 0;\n}\n\nfunction crypto_onetimeauth_verify(h, hpos, m, mpos, n, k) {\n var x = new Uint8Array(16);\n crypto_onetimeauth(x,0,m,mpos,n,k);\n return crypto_verify_16(h,hpos,x,0);\n}\n\nfunction crypto_secretbox(c,m,d,n,k) {\n var i;\n if (d < 32) return -1;\n crypto_stream_xor(c,0,m,0,d,n,k);\n crypto_onetimeauth(c, 16, c, 32, d - 32, c);\n for (i = 0; i < 16; i++) c[i] = 0;\n return 0;\n}\n\nfunction crypto_secretbox_open(m,c,d,n,k) {\n var i;\n var x = new Uint8Array(32);\n if (d < 32) return -1;\n crypto_stream(x,0,32,n,k);\n if (crypto_onetimeauth_verify(c, 16,c, 32,d - 32,x) !== 0) return -1;\n crypto_stream_xor(m,0,c,0,d,n,k);\n for (i = 0; i < 32; i++) m[i] = 0;\n return 0;\n}\n\nfunction set25519(r, a) {\n var i;\n for (i = 0; i < 16; i++) r[i] = a[i]|0;\n}\n\nfunction car25519(o) {\n var i, v, c = 1;\n for (i = 0; i < 16; i++) {\n v = o[i] + c + 65535;\n c = Math.floor(v / 65536);\n o[i] = v - c * 65536;\n }\n o[0] += c-1 + 37 * (c-1);\n}\n\nfunction sel25519(p, q, b) {\n var t, c = ~(b-1);\n for (var i = 0; i < 16; i++) {\n t = c & (p[i] ^ q[i]);\n p[i] ^= t;\n q[i] ^= t;\n }\n}\n\nfunction pack25519(o, n) {\n var i, j, b;\n var m = gf(), t = gf();\n for (i = 0; i < 16; i++) t[i] = n[i];\n car25519(t);\n car25519(t);\n car25519(t);\n for (j = 0; j < 2; j++) {\n m[0] = t[0] - 0xffed;\n for (i = 1; i < 15; i++) {\n m[i] = t[i] - 0xffff - ((m[i-1]>>16) & 1);\n m[i-1] &= 0xffff;\n }\n m[15] = t[15] - 0x7fff - ((m[14]>>16) & 1);\n b = (m[15]>>16) & 1;\n m[14] &= 0xffff;\n sel25519(t, m, 1-b);\n }\n for (i = 0; i < 16; i++) {\n o[2*i] = t[i] & 0xff;\n o[2*i+1] = t[i]>>8;\n }\n}\n\nfunction neq25519(a, b) {\n var c = new Uint8Array(32), d = new Uint8Array(32);\n pack25519(c, a);\n pack25519(d, b);\n return crypto_verify_32(c, 0, d, 0);\n}\n\nfunction par25519(a) {\n var d = new Uint8Array(32);\n pack25519(d, a);\n return d[0] & 1;\n}\n\nfunction unpack25519(o, n) {\n var i;\n for (i = 0; i < 16; i++) o[i] = n[2*i] + (n[2*i+1] << 8);\n o[15] &= 0x7fff;\n}\n\nfunction A(o, a, b) {\n for (var i = 0; i < 16; i++) o[i] = a[i] + b[i];\n}\n\nfunction Z(o, a, b) {\n for (var i = 0; i < 16; i++) o[i] = a[i] - b[i];\n}\n\nfunction M(o, a, b) {\n var v, c,\n t0 = 0, t1 = 0, t2 = 0, t3 = 0, t4 = 0, t5 = 0, t6 = 0, t7 = 0,\n t8 = 0, t9 = 0, t10 = 0, t11 = 0, t12 = 0, t13 = 0, t14 = 0, t15 = 0,\n t16 = 0, t17 = 0, t18 = 0, t19 = 0, t20 = 0, t21 = 0, t22 = 0, t23 = 0,\n t24 = 0, t25 = 0, t26 = 0, t27 = 0, t28 = 0, t29 = 0, t30 = 0,\n b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3],\n b4 = b[4],\n b5 = b[5],\n b6 = b[6],\n b7 = b[7],\n b8 = b[8],\n b9 = b[9],\n b10 = b[10],\n b11 = b[11],\n b12 = b[12],\n b13 = b[13],\n b14 = b[14],\n b15 = b[15];\n\n v = a[0];\n t0 += v * b0;\n t1 += v * b1;\n t2 += v * b2;\n t3 += v * b3;\n t4 += v * b4;\n t5 += v * b5;\n t6 += v * b6;\n t7 += v * b7;\n t8 += v * b8;\n t9 += v * b9;\n t10 += v * b10;\n t11 += v * b11;\n t12 += v * b12;\n t13 += v * b13;\n t14 += v * b14;\n t15 += v * b15;\n v = a[1];\n t1 += v * b0;\n t2 += v * b1;\n t3 += v * b2;\n t4 += v * b3;\n t5 += v * b4;\n t6 += v * b5;\n t7 += v * b6;\n t8 += v * b7;\n t9 += v * b8;\n t10 += v * b9;\n t11 += v * b10;\n t12 += v * b11;\n t13 += v * b12;\n t14 += v * b13;\n t15 += v * b14;\n t16 += v * b15;\n v = a[2];\n t2 += v * b0;\n t3 += v * b1;\n t4 += v * b2;\n t5 += v * b3;\n t6 += v * b4;\n t7 += v * b5;\n t8 += v * b6;\n t9 += v * b7;\n t10 += v * b8;\n t11 += v * b9;\n t12 += v * b10;\n t13 += v * b11;\n t14 += v * b12;\n t15 += v * b13;\n t16 += v * b14;\n t17 += v * b15;\n v = a[3];\n t3 += v * b0;\n t4 += v * b1;\n t5 += v * b2;\n t6 += v * b3;\n t7 += v * b4;\n t8 += v * b5;\n t9 += v * b6;\n t10 += v * b7;\n t11 += v * b8;\n t12 += v * b9;\n t13 += v * b10;\n t14 += v * b11;\n t15 += v * b12;\n t16 += v * b13;\n t17 += v * b14;\n t18 += v * b15;\n v = a[4];\n t4 += v * b0;\n t5 += v * b1;\n t6 += v * b2;\n t7 += v * b3;\n t8 += v * b4;\n t9 += v * b5;\n t10 += v * b6;\n t11 += v * b7;\n t12 += v * b8;\n t13 += v * b9;\n t14 += v * b10;\n t15 += v * b11;\n t16 += v * b12;\n t17 += v * b13;\n t18 += v * b14;\n t19 += v * b15;\n v = a[5];\n t5 += v * b0;\n t6 += v * b1;\n t7 += v * b2;\n t8 += v * b3;\n t9 += v * b4;\n t10 += v * b5;\n t11 += v * b6;\n t12 += v * b7;\n t13 += v * b8;\n t14 += v * b9;\n t15 += v * b10;\n t16 += v * b11;\n t17 += v * b12;\n t18 += v * b13;\n t19 += v * b14;\n t20 += v * b15;\n v = a[6];\n t6 += v * b0;\n t7 += v * b1;\n t8 += v * b2;\n t9 += v * b3;\n t10 += v * b4;\n t11 += v * b5;\n t12 += v * b6;\n t13 += v * b7;\n t14 += v * b8;\n t15 += v * b9;\n t16 += v * b10;\n t17 += v * b11;\n t18 += v * b12;\n t19 += v * b13;\n t20 += v * b14;\n t21 += v * b15;\n v = a[7];\n t7 += v * b0;\n t8 += v * b1;\n t9 += v * b2;\n t10 += v * b3;\n t11 += v * b4;\n t12 += v * b5;\n t13 += v * b6;\n t14 += v * b7;\n t15 += v * b8;\n t16 += v * b9;\n t17 += v * b10;\n t18 += v * b11;\n t19 += v * b12;\n t20 += v * b13;\n t21 += v * b14;\n t22 += v * b15;\n v = a[8];\n t8 += v * b0;\n t9 += v * b1;\n t10 += v * b2;\n t11 += v * b3;\n t12 += v * b4;\n t13 += v * b5;\n t14 += v * b6;\n t15 += v * b7;\n t16 += v * b8;\n t17 += v * b9;\n t18 += v * b10;\n t19 += v * b11;\n t20 += v * b12;\n t21 += v * b13;\n t22 += v * b14;\n t23 += v * b15;\n v = a[9];\n t9 += v * b0;\n t10 += v * b1;\n t11 += v * b2;\n t12 += v * b3;\n t13 += v * b4;\n t14 += v * b5;\n t15 += v * b6;\n t16 += v * b7;\n t17 += v * b8;\n t18 += v * b9;\n t19 += v * b10;\n t20 += v * b11;\n t21 += v * b12;\n t22 += v * b13;\n t23 += v * b14;\n t24 += v * b15;\n v = a[10];\n t10 += v * b0;\n t11 += v * b1;\n t12 += v * b2;\n t13 += v * b3;\n t14 += v * b4;\n t15 += v * b5;\n t16 += v * b6;\n t17 += v * b7;\n t18 += v * b8;\n t19 += v * b9;\n t20 += v * b10;\n t21 += v * b11;\n t22 += v * b12;\n t23 += v * b13;\n t24 += v * b14;\n t25 += v * b15;\n v = a[11];\n t11 += v * b0;\n t12 += v * b1;\n t13 += v * b2;\n t14 += v * b3;\n t15 += v * b4;\n t16 += v * b5;\n t17 += v * b6;\n t18 += v * b7;\n t19 += v * b8;\n t20 += v * b9;\n t21 += v * b10;\n t22 += v * b11;\n t23 += v * b12;\n t24 += v * b13;\n t25 += v * b14;\n t26 += v * b15;\n v = a[12];\n t12 += v * b0;\n t13 += v * b1;\n t14 += v * b2;\n t15 += v * b3;\n t16 += v * b4;\n t17 += v * b5;\n t18 += v * b6;\n t19 += v * b7;\n t20 += v * b8;\n t21 += v * b9;\n t22 += v * b10;\n t23 += v * b11;\n t24 += v * b12;\n t25 += v * b13;\n t26 += v * b14;\n t27 += v * b15;\n v = a[13];\n t13 += v * b0;\n t14 += v * b1;\n t15 += v * b2;\n t16 += v * b3;\n t17 += v * b4;\n t18 += v * b5;\n t19 += v * b6;\n t20 += v * b7;\n t21 += v * b8;\n t22 += v * b9;\n t23 += v * b10;\n t24 += v * b11;\n t25 += v * b12;\n t26 += v * b13;\n t27 += v * b14;\n t28 += v * b15;\n v = a[14];\n t14 += v * b0;\n t15 += v * b1;\n t16 += v * b2;\n t17 += v * b3;\n t18 += v * b4;\n t19 += v * b5;\n t20 += v * b6;\n t21 += v * b7;\n t22 += v * b8;\n t23 += v * b9;\n t24 += v * b10;\n t25 += v * b11;\n t26 += v * b12;\n t27 += v * b13;\n t28 += v * b14;\n t29 += v * b15;\n v = a[15];\n t15 += v * b0;\n t16 += v * b1;\n t17 += v * b2;\n t18 += v * b3;\n t19 += v * b4;\n t20 += v * b5;\n t21 += v * b6;\n t22 += v * b7;\n t23 += v * b8;\n t24 += v * b9;\n t25 += v * b10;\n t26 += v * b11;\n t27 += v * b12;\n t28 += v * b13;\n t29 += v * b14;\n t30 += v * b15;\n\n t0 += 38 * t16;\n t1 += 38 * t17;\n t2 += 38 * t18;\n t3 += 38 * t19;\n t4 += 38 * t20;\n t5 += 38 * t21;\n t6 += 38 * t22;\n t7 += 38 * t23;\n t8 += 38 * t24;\n t9 += 38 * t25;\n t10 += 38 * t26;\n t11 += 38 * t27;\n t12 += 38 * t28;\n t13 += 38 * t29;\n t14 += 38 * t30;\n // t15 left as is\n\n // first car\n c = 1;\n v = t0 + c + 65535; c = Math.floor(v / 65536); t0 = v - c * 65536;\n v = t1 + c + 65535; c = Math.floor(v / 65536); t1 = v - c * 65536;\n v = t2 + c + 65535; c = Math.floor(v / 65536); t2 = v - c * 65536;\n v = t3 + c + 65535; c = Math.floor(v / 65536); t3 = v - c * 65536;\n v = t4 + c + 65535; c = Math.floor(v / 65536); t4 = v - c * 65536;\n v = t5 + c + 65535; c = Math.floor(v / 65536); t5 = v - c * 65536;\n v = t6 + c + 65535; c = Math.floor(v / 65536); t6 = v - c * 65536;\n v = t7 + c + 65535; c = Math.floor(v / 65536); t7 = v - c * 65536;\n v = t8 + c + 65535; c = Math.floor(v / 65536); t8 = v - c * 65536;\n v = t9 + c + 65535; c = Math.floor(v / 65536); t9 = v - c * 65536;\n v = t10 + c + 65535; c = Math.floor(v / 65536); t10 = v - c * 65536;\n v = t11 + c + 65535; c = Math.floor(v / 65536); t11 = v - c * 65536;\n v = t12 + c + 65535; c = Math.floor(v / 65536); t12 = v - c * 65536;\n v = t13 + c + 65535; c = Math.floor(v / 65536); t13 = v - c * 65536;\n v = t14 + c + 65535; c = Math.floor(v / 65536); t14 = v - c * 65536;\n v = t15 + c + 65535; c = Math.floor(v / 65536); t15 = v - c * 65536;\n t0 += c-1 + 37 * (c-1);\n\n // second car\n c = 1;\n v = t0 + c + 65535; c = Math.floor(v / 65536); t0 = v - c * 65536;\n v = t1 + c + 65535; c = Math.floor(v / 65536); t1 = v - c * 65536;\n v = t2 + c + 65535; c = Math.floor(v / 65536); t2 = v - c * 65536;\n v = t3 + c + 65535; c = Math.floor(v / 65536); t3 = v - c * 65536;\n v = t4 + c + 65535; c = Math.floor(v / 65536); t4 = v - c * 65536;\n v = t5 + c + 65535; c = Math.floor(v / 65536); t5 = v - c * 65536;\n v = t6 + c + 65535; c = Math.floor(v / 65536); t6 = v - c * 65536;\n v = t7 + c + 65535; c = Math.floor(v / 65536); t7 = v - c * 65536;\n v = t8 + c + 65535; c = Math.floor(v / 65536); t8 = v - c * 65536;\n v = t9 + c + 65535; c = Math.floor(v / 65536); t9 = v - c * 65536;\n v = t10 + c + 65535; c = Math.floor(v / 65536); t10 = v - c * 65536;\n v = t11 + c + 65535; c = Math.floor(v / 65536); t11 = v - c * 65536;\n v = t12 + c + 65535; c = Math.floor(v / 65536); t12 = v - c * 65536;\n v = t13 + c + 65535; c = Math.floor(v / 65536); t13 = v - c * 65536;\n v = t14 + c + 65535; c = Math.floor(v / 65536); t14 = v - c * 65536;\n v = t15 + c + 65535; c = Math.floor(v / 65536); t15 = v - c * 65536;\n t0 += c-1 + 37 * (c-1);\n\n o[ 0] = t0;\n o[ 1] = t1;\n o[ 2] = t2;\n o[ 3] = t3;\n o[ 4] = t4;\n o[ 5] = t5;\n o[ 6] = t6;\n o[ 7] = t7;\n o[ 8] = t8;\n o[ 9] = t9;\n o[10] = t10;\n o[11] = t11;\n o[12] = t12;\n o[13] = t13;\n o[14] = t14;\n o[15] = t15;\n}\n\nfunction S(o, a) {\n M(o, a, a);\n}\n\nfunction inv25519(o, i) {\n var c = gf();\n var a;\n for (a = 0; a < 16; a++) c[a] = i[a];\n for (a = 253; a >= 0; a--) {\n S(c, c);\n if(a !== 2 && a !== 4) M(c, c, i);\n }\n for (a = 0; a < 16; a++) o[a] = c[a];\n}\n\nfunction pow2523(o, i) {\n var c = gf();\n var a;\n for (a = 0; a < 16; a++) c[a] = i[a];\n for (a = 250; a >= 0; a--) {\n S(c, c);\n if(a !== 1) M(c, c, i);\n }\n for (a = 0; a < 16; a++) o[a] = c[a];\n}\n\nfunction crypto_scalarmult(q, n, p) {\n var z = new Uint8Array(32);\n var x = new Float64Array(80), r, i;\n var a = gf(), b = gf(), c = gf(),\n d = gf(), e = gf(), f = gf();\n for (i = 0; i < 31; i++) z[i] = n[i];\n z[31]=(n[31]&127)|64;\n z[0]&=248;\n unpack25519(x,p);\n for (i = 0; i < 16; i++) {\n b[i]=x[i];\n d[i]=a[i]=c[i]=0;\n }\n a[0]=d[0]=1;\n for (i=254; i>=0; --i) {\n r=(z[i>>>3]>>>(i&7))&1;\n sel25519(a,b,r);\n sel25519(c,d,r);\n A(e,a,c);\n Z(a,a,c);\n A(c,b,d);\n Z(b,b,d);\n S(d,e);\n S(f,a);\n M(a,c,a);\n M(c,b,e);\n A(e,a,c);\n Z(a,a,c);\n S(b,a);\n Z(c,d,f);\n M(a,c,_121665);\n A(a,a,d);\n M(c,c,a);\n M(a,d,f);\n M(d,b,x);\n S(b,e);\n sel25519(a,b,r);\n sel25519(c,d,r);\n }\n for (i = 0; i < 16; i++) {\n x[i+16]=a[i];\n x[i+32]=c[i];\n x[i+48]=b[i];\n x[i+64]=d[i];\n }\n var x32 = x.subarray(32);\n var x16 = x.subarray(16);\n inv25519(x32,x32);\n M(x16,x16,x32);\n pack25519(q,x16);\n return 0;\n}\n\nfunction crypto_scalarmult_base(q, n) {\n return crypto_scalarmult(q, n, _9);\n}\n\nfunction crypto_box_keypair(y, x) {\n randombytes(x, 32);\n return crypto_scalarmult_base(y, x);\n}\n\nfunction crypto_box_beforenm(k, y, x) {\n var s = new Uint8Array(32);\n crypto_scalarmult(s, x, y);\n return crypto_core_hsalsa20(k, _0, s, sigma);\n}\n\nvar crypto_box_afternm = crypto_secretbox;\nvar crypto_box_open_afternm = crypto_secretbox_open;\n\nfunction crypto_box(c, m, d, n, y, x) {\n var k = new Uint8Array(32);\n crypto_box_beforenm(k, y, x);\n return crypto_box_afternm(c, m, d, n, k);\n}\n\nfunction crypto_box_open(m, c, d, n, y, x) {\n var k = new Uint8Array(32);\n crypto_box_beforenm(k, y, x);\n return crypto_box_open_afternm(m, c, d, n, k);\n}\n\nvar K = [\n 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n];\n\nfunction crypto_hashblocks_hl(hh, hl, m, n) {\n var wh = new Int32Array(16), wl = new Int32Array(16),\n bh0, bh1, bh2, bh3, bh4, bh5, bh6, bh7,\n bl0, bl1, bl2, bl3, bl4, bl5, bl6, bl7,\n th, tl, i, j, h, l, a, b, c, d;\n\n var ah0 = hh[0],\n ah1 = hh[1],\n ah2 = hh[2],\n ah3 = hh[3],\n ah4 = hh[4],\n ah5 = hh[5],\n ah6 = hh[6],\n ah7 = hh[7],\n\n al0 = hl[0],\n al1 = hl[1],\n al2 = hl[2],\n al3 = hl[3],\n al4 = hl[4],\n al5 = hl[5],\n al6 = hl[6],\n al7 = hl[7];\n\n var pos = 0;\n while (n >= 128) {\n for (i = 0; i < 16; i++) {\n j = 8 * i + pos;\n wh[i] = (m[j+0] << 24) | (m[j+1] << 16) | (m[j+2] << 8) | m[j+3];\n wl[i] = (m[j+4] << 24) | (m[j+5] << 16) | (m[j+6] << 8) | m[j+7];\n }\n for (i = 0; i < 80; i++) {\n bh0 = ah0;\n bh1 = ah1;\n bh2 = ah2;\n bh3 = ah3;\n bh4 = ah4;\n bh5 = ah5;\n bh6 = ah6;\n bh7 = ah7;\n\n bl0 = al0;\n bl1 = al1;\n bl2 = al2;\n bl3 = al3;\n bl4 = al4;\n bl5 = al5;\n bl6 = al6;\n bl7 = al7;\n\n // add\n h = ah7;\n l = al7;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n // Sigma1\n h = ((ah4 >>> 14) | (al4 << (32-14))) ^ ((ah4 >>> 18) | (al4 << (32-18))) ^ ((al4 >>> (41-32)) | (ah4 << (32-(41-32))));\n l = ((al4 >>> 14) | (ah4 << (32-14))) ^ ((al4 >>> 18) | (ah4 << (32-18))) ^ ((ah4 >>> (41-32)) | (al4 << (32-(41-32))));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // Ch\n h = (ah4 & ah5) ^ (~ah4 & ah6);\n l = (al4 & al5) ^ (~al4 & al6);\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // K\n h = K[i*2];\n l = K[i*2+1];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // w\n h = wh[i%16];\n l = wl[i%16];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n th = c & 0xffff | d << 16;\n tl = a & 0xffff | b << 16;\n\n // add\n h = th;\n l = tl;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n // Sigma0\n h = ((ah0 >>> 28) | (al0 << (32-28))) ^ ((al0 >>> (34-32)) | (ah0 << (32-(34-32)))) ^ ((al0 >>> (39-32)) | (ah0 << (32-(39-32))));\n l = ((al0 >>> 28) | (ah0 << (32-28))) ^ ((ah0 >>> (34-32)) | (al0 << (32-(34-32)))) ^ ((ah0 >>> (39-32)) | (al0 << (32-(39-32))));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // Maj\n h = (ah0 & ah1) ^ (ah0 & ah2) ^ (ah1 & ah2);\n l = (al0 & al1) ^ (al0 & al2) ^ (al1 & al2);\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n bh7 = (c & 0xffff) | (d << 16);\n bl7 = (a & 0xffff) | (b << 16);\n\n // add\n h = bh3;\n l = bl3;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = th;\n l = tl;\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n bh3 = (c & 0xffff) | (d << 16);\n bl3 = (a & 0xffff) | (b << 16);\n\n ah1 = bh0;\n ah2 = bh1;\n ah3 = bh2;\n ah4 = bh3;\n ah5 = bh4;\n ah6 = bh5;\n ah7 = bh6;\n ah0 = bh7;\n\n al1 = bl0;\n al2 = bl1;\n al3 = bl2;\n al4 = bl3;\n al5 = bl4;\n al6 = bl5;\n al7 = bl6;\n al0 = bl7;\n\n if (i%16 === 15) {\n for (j = 0; j < 16; j++) {\n // add\n h = wh[j];\n l = wl[j];\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = wh[(j+9)%16];\n l = wl[(j+9)%16];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // sigma0\n th = wh[(j+1)%16];\n tl = wl[(j+1)%16];\n h = ((th >>> 1) | (tl << (32-1))) ^ ((th >>> 8) | (tl << (32-8))) ^ (th >>> 7);\n l = ((tl >>> 1) | (th << (32-1))) ^ ((tl >>> 8) | (th << (32-8))) ^ ((tl >>> 7) | (th << (32-7)));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // sigma1\n th = wh[(j+14)%16];\n tl = wl[(j+14)%16];\n h = ((th >>> 19) | (tl << (32-19))) ^ ((tl >>> (61-32)) | (th << (32-(61-32)))) ^ (th >>> 6);\n l = ((tl >>> 19) | (th << (32-19))) ^ ((th >>> (61-32)) | (tl << (32-(61-32)))) ^ ((tl >>> 6) | (th << (32-6)));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n wh[j] = (c & 0xffff) | (d << 16);\n wl[j] = (a & 0xffff) | (b << 16);\n }\n }\n }\n\n // add\n h = ah0;\n l = al0;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[0];\n l = hl[0];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[0] = ah0 = (c & 0xffff) | (d << 16);\n hl[0] = al0 = (a & 0xffff) | (b << 16);\n\n h = ah1;\n l = al1;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[1];\n l = hl[1];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[1] = ah1 = (c & 0xffff) | (d << 16);\n hl[1] = al1 = (a & 0xffff) | (b << 16);\n\n h = ah2;\n l = al2;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[2];\n l = hl[2];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[2] = ah2 = (c & 0xffff) | (d << 16);\n hl[2] = al2 = (a & 0xffff) | (b << 16);\n\n h = ah3;\n l = al3;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[3];\n l = hl[3];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[3] = ah3 = (c & 0xffff) | (d << 16);\n hl[3] = al3 = (a & 0xffff) | (b << 16);\n\n h = ah4;\n l = al4;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[4];\n l = hl[4];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[4] = ah4 = (c & 0xffff) | (d << 16);\n hl[4] = al4 = (a & 0xffff) | (b << 16);\n\n h = ah5;\n l = al5;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[5];\n l = hl[5];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[5] = ah5 = (c & 0xffff) | (d << 16);\n hl[5] = al5 = (a & 0xffff) | (b << 16);\n\n h = ah6;\n l = al6;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[6];\n l = hl[6];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[6] = ah6 = (c & 0xffff) | (d << 16);\n hl[6] = al6 = (a & 0xffff) | (b << 16);\n\n h = ah7;\n l = al7;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[7];\n l = hl[7];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[7] = ah7 = (c & 0xffff) | (d << 16);\n hl[7] = al7 = (a & 0xffff) | (b << 16);\n\n pos += 128;\n n -= 128;\n }\n\n return n;\n}\n\nfunction crypto_hash(out, m, n) {\n var hh = new Int32Array(8),\n hl = new Int32Array(8),\n x = new Uint8Array(256),\n i, b = n;\n\n hh[0] = 0x6a09e667;\n hh[1] = 0xbb67ae85;\n hh[2] = 0x3c6ef372;\n hh[3] = 0xa54ff53a;\n hh[4] = 0x510e527f;\n hh[5] = 0x9b05688c;\n hh[6] = 0x1f83d9ab;\n hh[7] = 0x5be0cd19;\n\n hl[0] = 0xf3bcc908;\n hl[1] = 0x84caa73b;\n hl[2] = 0xfe94f82b;\n hl[3] = 0x5f1d36f1;\n hl[4] = 0xade682d1;\n hl[5] = 0x2b3e6c1f;\n hl[6] = 0xfb41bd6b;\n hl[7] = 0x137e2179;\n\n crypto_hashblocks_hl(hh, hl, m, n);\n n %= 128;\n\n for (i = 0; i < n; i++) x[i] = m[b-n+i];\n x[n] = 128;\n\n n = 256-128*(n<112?1:0);\n x[n-9] = 0;\n ts64(x, n-8, (b / 0x20000000) | 0, b << 3);\n crypto_hashblocks_hl(hh, hl, x, n);\n\n for (i = 0; i < 8; i++) ts64(out, 8*i, hh[i], hl[i]);\n\n return 0;\n}\n\nfunction add(p, q) {\n var a = gf(), b = gf(), c = gf(),\n d = gf(), e = gf(), f = gf(),\n g = gf(), h = gf(), t = gf();\n\n Z(a, p[1], p[0]);\n Z(t, q[1], q[0]);\n M(a, a, t);\n A(b, p[0], p[1]);\n A(t, q[0], q[1]);\n M(b, b, t);\n M(c, p[3], q[3]);\n M(c, c, D2);\n M(d, p[2], q[2]);\n A(d, d, d);\n Z(e, b, a);\n Z(f, d, c);\n A(g, d, c);\n A(h, b, a);\n\n M(p[0], e, f);\n M(p[1], h, g);\n M(p[2], g, f);\n M(p[3], e, h);\n}\n\nfunction cswap(p, q, b) {\n var i;\n for (i = 0; i < 4; i++) {\n sel25519(p[i], q[i], b);\n }\n}\n\nfunction pack(r, p) {\n var tx = gf(), ty = gf(), zi = gf();\n inv25519(zi, p[2]);\n M(tx, p[0], zi);\n M(ty, p[1], zi);\n pack25519(r, ty);\n r[31] ^= par25519(tx) << 7;\n}\n\nfunction scalarmult(p, q, s) {\n var b, i;\n set25519(p[0], gf0);\n set25519(p[1], gf1);\n set25519(p[2], gf1);\n set25519(p[3], gf0);\n for (i = 255; i >= 0; --i) {\n b = (s[(i/8)|0] >> (i&7)) & 1;\n cswap(p, q, b);\n add(q, p);\n add(p, p);\n cswap(p, q, b);\n }\n}\n\nfunction scalarbase(p, s) {\n var q = [gf(), gf(), gf(), gf()];\n set25519(q[0], X);\n set25519(q[1], Y);\n set25519(q[2], gf1);\n M(q[3], X, Y);\n scalarmult(p, q, s);\n}\n\nfunction crypto_sign_keypair(pk, sk, seeded) {\n var d = new Uint8Array(64);\n var p = [gf(), gf(), gf(), gf()];\n var i;\n\n if (!seeded) randombytes(sk, 32);\n crypto_hash(d, sk, 32);\n d[0] &= 248;\n d[31] &= 127;\n d[31] |= 64;\n\n scalarbase(p, d);\n pack(pk, p);\n\n for (i = 0; i < 32; i++) sk[i+32] = pk[i];\n return 0;\n}\n\nvar L = new Float64Array([0xed, 0xd3, 0xf5, 0x5c, 0x1a, 0x63, 0x12, 0x58, 0xd6, 0x9c, 0xf7, 0xa2, 0xde, 0xf9, 0xde, 0x14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x10]);\n\nfunction modL(r, x) {\n var carry, i, j, k;\n for (i = 63; i >= 32; --i) {\n carry = 0;\n for (j = i - 32, k = i - 12; j < k; ++j) {\n x[j] += carry - 16 * x[i] * L[j - (i - 32)];\n carry = (x[j] + 128) >> 8;\n x[j] -= carry * 256;\n }\n x[j] += carry;\n x[i] = 0;\n }\n carry = 0;\n for (j = 0; j < 32; j++) {\n x[j] += carry - (x[31] >> 4) * L[j];\n carry = x[j] >> 8;\n x[j] &= 255;\n }\n for (j = 0; j < 32; j++) x[j] -= carry * L[j];\n for (i = 0; i < 32; i++) {\n x[i+1] += x[i] >> 8;\n r[i] = x[i] & 255;\n }\n}\n\nfunction reduce(r) {\n var x = new Float64Array(64), i;\n for (i = 0; i < 64; i++) x[i] = r[i];\n for (i = 0; i < 64; i++) r[i] = 0;\n modL(r, x);\n}\n\n// Note: difference from C - smlen returned, not passed as argument.\nfunction crypto_sign(sm, m, n, sk) {\n var d = new Uint8Array(64), h = new Uint8Array(64), r = new Uint8Array(64);\n var i, j, x = new Float64Array(64);\n var p = [gf(), gf(), gf(), gf()];\n\n crypto_hash(d, sk, 32);\n d[0] &= 248;\n d[31] &= 127;\n d[31] |= 64;\n\n var smlen = n + 64;\n for (i = 0; i < n; i++) sm[64 + i] = m[i];\n for (i = 0; i < 32; i++) sm[32 + i] = d[32 + i];\n\n crypto_hash(r, sm.subarray(32), n+32);\n reduce(r);\n scalarbase(p, r);\n pack(sm, p);\n\n for (i = 32; i < 64; i++) sm[i] = sk[i];\n crypto_hash(h, sm, n + 64);\n reduce(h);\n\n for (i = 0; i < 64; i++) x[i] = 0;\n for (i = 0; i < 32; i++) x[i] = r[i];\n for (i = 0; i < 32; i++) {\n for (j = 0; j < 32; j++) {\n x[i+j] += h[i] * d[j];\n }\n }\n\n modL(sm.subarray(32), x);\n return smlen;\n}\n\nfunction unpackneg(r, p) {\n var t = gf(), chk = gf(), num = gf(),\n den = gf(), den2 = gf(), den4 = gf(),\n den6 = gf();\n\n set25519(r[2], gf1);\n unpack25519(r[1], p);\n S(num, r[1]);\n M(den, num, D);\n Z(num, num, r[2]);\n A(den, r[2], den);\n\n S(den2, den);\n S(den4, den2);\n M(den6, den4, den2);\n M(t, den6, num);\n M(t, t, den);\n\n pow2523(t, t);\n M(t, t, num);\n M(t, t, den);\n M(t, t, den);\n M(r[0], t, den);\n\n S(chk, r[0]);\n M(chk, chk, den);\n if (neq25519(chk, num)) M(r[0], r[0], I);\n\n S(chk, r[0]);\n M(chk, chk, den);\n if (neq25519(chk, num)) return -1;\n\n if (par25519(r[0]) === (p[31]>>7)) Z(r[0], gf0, r[0]);\n\n M(r[3], r[0], r[1]);\n return 0;\n}\n\nfunction crypto_sign_open(m, sm, n, pk) {\n var i, mlen;\n var t = new Uint8Array(32), h = new Uint8Array(64);\n var p = [gf(), gf(), gf(), gf()],\n q = [gf(), gf(), gf(), gf()];\n\n mlen = -1;\n if (n < 64) return -1;\n\n if (unpackneg(q, pk)) return -1;\n\n for (i = 0; i < n; i++) m[i] = sm[i];\n for (i = 0; i < 32; i++) m[i+32] = pk[i];\n crypto_hash(h, m, n);\n reduce(h);\n scalarmult(p, q, h);\n\n scalarbase(q, sm.subarray(32));\n add(p, q);\n pack(t, p);\n\n n -= 64;\n if (crypto_verify_32(sm, 0, t, 0)) {\n for (i = 0; i < n; i++) m[i] = 0;\n return -1;\n }\n\n for (i = 0; i < n; i++) m[i] = sm[i + 64];\n mlen = n;\n return mlen;\n}\n\nvar crypto_secretbox_KEYBYTES = 32,\n crypto_secretbox_NONCEBYTES = 24,\n crypto_secretbox_ZEROBYTES = 32,\n crypto_secretbox_BOXZEROBYTES = 16,\n crypto_scalarmult_BYTES = 32,\n crypto_scalarmult_SCALARBYTES = 32,\n crypto_box_PUBLICKEYBYTES = 32,\n crypto_box_SECRETKEYBYTES = 32,\n crypto_box_BEFORENMBYTES = 32,\n crypto_box_NONCEBYTES = crypto_secretbox_NONCEBYTES,\n crypto_box_ZEROBYTES = crypto_secretbox_ZEROBYTES,\n crypto_box_BOXZEROBYTES = crypto_secretbox_BOXZEROBYTES,\n crypto_sign_BYTES = 64,\n crypto_sign_PUBLICKEYBYTES = 32,\n crypto_sign_SECRETKEYBYTES = 64,\n crypto_sign_SEEDBYTES = 32,\n crypto_hash_BYTES = 64;\n\nnacl.lowlevel = {\n crypto_core_hsalsa20: crypto_core_hsalsa20,\n crypto_stream_xor: crypto_stream_xor,\n crypto_stream: crypto_stream,\n crypto_stream_salsa20_xor: crypto_stream_salsa20_xor,\n crypto_stream_salsa20: crypto_stream_salsa20,\n crypto_onetimeauth: crypto_onetimeauth,\n crypto_onetimeauth_verify: crypto_onetimeauth_verify,\n crypto_verify_16: crypto_verify_16,\n crypto_verify_32: crypto_verify_32,\n crypto_secretbox: crypto_secretbox,\n crypto_secretbox_open: crypto_secretbox_open,\n crypto_scalarmult: crypto_scalarmult,\n crypto_scalarmult_base: crypto_scalarmult_base,\n crypto_box_beforenm: crypto_box_beforenm,\n crypto_box_afternm: crypto_box_afternm,\n crypto_box: crypto_box,\n crypto_box_open: crypto_box_open,\n crypto_box_keypair: crypto_box_keypair,\n crypto_hash: crypto_hash,\n crypto_sign: crypto_sign,\n crypto_sign_keypair: crypto_sign_keypair,\n crypto_sign_open: crypto_sign_open,\n\n crypto_secretbox_KEYBYTES: crypto_secretbox_KEYBYTES,\n crypto_secretbox_NONCEBYTES: crypto_secretbox_NONCEBYTES,\n crypto_secretbox_ZEROBYTES: crypto_secretbox_ZEROBYTES,\n crypto_secretbox_BOXZEROBYTES: crypto_secretbox_BOXZEROBYTES,\n crypto_scalarmult_BYTES: crypto_scalarmult_BYTES,\n crypto_scalarmult_SCALARBYTES: crypto_scalarmult_SCALARBYTES,\n crypto_box_PUBLICKEYBYTES: crypto_box_PUBLICKEYBYTES,\n crypto_box_SECRETKEYBYTES: crypto_box_SECRETKEYBYTES,\n crypto_box_BEFORENMBYTES: crypto_box_BEFORENMBYTES,\n crypto_box_NONCEBYTES: crypto_box_NONCEBYTES,\n crypto_box_ZEROBYTES: crypto_box_ZEROBYTES,\n crypto_box_BOXZEROBYTES: crypto_box_BOXZEROBYTES,\n crypto_sign_BYTES: crypto_sign_BYTES,\n crypto_sign_PUBLICKEYBYTES: crypto_sign_PUBLICKEYBYTES,\n crypto_sign_SECRETKEYBYTES: crypto_sign_SECRETKEYBYTES,\n crypto_sign_SEEDBYTES: crypto_sign_SEEDBYTES,\n crypto_hash_BYTES: crypto_hash_BYTES\n};\n\n/* High-level API */\n\nfunction checkLengths(k, n) {\n if (k.length !== crypto_secretbox_KEYBYTES) throw new Error('bad key size');\n if (n.length !== crypto_secretbox_NONCEBYTES) throw new Error('bad nonce size');\n}\n\nfunction checkBoxLengths(pk, sk) {\n if (pk.length !== crypto_box_PUBLICKEYBYTES) throw new Error('bad public key size');\n if (sk.length !== crypto_box_SECRETKEYBYTES) throw new Error('bad secret key size');\n}\n\nfunction checkArrayTypes() {\n var t, i;\n for (i = 0; i < arguments.length; i++) {\n if ((t = Object.prototype.toString.call(arguments[i])) !== '[object Uint8Array]')\n throw new TypeError('unexpected type ' + t + ', use Uint8Array');\n }\n}\n\nfunction cleanup(arr) {\n for (var i = 0; i < arr.length; i++) arr[i] = 0;\n}\n\n// TODO: Completely remove this in v0.15.\nif (!nacl.util) {\n nacl.util = {};\n nacl.util.decodeUTF8 = nacl.util.encodeUTF8 = nacl.util.encodeBase64 = nacl.util.decodeBase64 = function() {\n throw new Error('nacl.util moved into separate package: https://github.com/dchest/tweetnacl-util-js');\n };\n}\n\nnacl.randomBytes = function(n) {\n var b = new Uint8Array(n);\n randombytes(b, n);\n return b;\n};\n\nnacl.secretbox = function(msg, nonce, key) {\n checkArrayTypes(msg, nonce, key);\n checkLengths(key, nonce);\n var m = new Uint8Array(crypto_secretbox_ZEROBYTES + msg.length);\n var c = new Uint8Array(m.length);\n for (var i = 0; i < msg.length; i++) m[i+crypto_secretbox_ZEROBYTES] = msg[i];\n crypto_secretbox(c, m, m.length, nonce, key);\n return c.subarray(crypto_secretbox_BOXZEROBYTES);\n};\n\nnacl.secretbox.open = function(box, nonce, key) {\n checkArrayTypes(box, nonce, key);\n checkLengths(key, nonce);\n var c = new Uint8Array(crypto_secretbox_BOXZEROBYTES + box.length);\n var m = new Uint8Array(c.length);\n for (var i = 0; i < box.length; i++) c[i+crypto_secretbox_BOXZEROBYTES] = box[i];\n if (c.length < 32) return false;\n if (crypto_secretbox_open(m, c, c.length, nonce, key) !== 0) return false;\n return m.subarray(crypto_secretbox_ZEROBYTES);\n};\n\nnacl.secretbox.keyLength = crypto_secretbox_KEYBYTES;\nnacl.secretbox.nonceLength = crypto_secretbox_NONCEBYTES;\nnacl.secretbox.overheadLength = crypto_secretbox_BOXZEROBYTES;\n\nnacl.scalarMult = function(n, p) {\n checkArrayTypes(n, p);\n if (n.length !== crypto_scalarmult_SCALARBYTES) throw new Error('bad n size');\n if (p.length !== crypto_scalarmult_BYTES) throw new Error('bad p size');\n var q = new Uint8Array(crypto_scalarmult_BYTES);\n crypto_scalarmult(q, n, p);\n return q;\n};\n\nnacl.scalarMult.base = function(n) {\n checkArrayTypes(n);\n if (n.length !== crypto_scalarmult_SCALARBYTES) throw new Error('bad n size');\n var q = new Uint8Array(crypto_scalarmult_BYTES);\n crypto_scalarmult_base(q, n);\n return q;\n};\n\nnacl.scalarMult.scalarLength = crypto_scalarmult_SCALARBYTES;\nnacl.scalarMult.groupElementLength = crypto_scalarmult_BYTES;\n\nnacl.box = function(msg, nonce, publicKey, secretKey) {\n var k = nacl.box.before(publicKey, secretKey);\n return nacl.secretbox(msg, nonce, k);\n};\n\nnacl.box.before = function(publicKey, secretKey) {\n checkArrayTypes(publicKey, secretKey);\n checkBoxLengths(publicKey, secretKey);\n var k = new Uint8Array(crypto_box_BEFORENMBYTES);\n crypto_box_beforenm(k, publicKey, secretKey);\n return k;\n};\n\nnacl.box.after = nacl.secretbox;\n\nnacl.box.open = function(msg, nonce, publicKey, secretKey) {\n var k = nacl.box.before(publicKey, secretKey);\n return nacl.secretbox.open(msg, nonce, k);\n};\n\nnacl.box.open.after = nacl.secretbox.open;\n\nnacl.box.keyPair = function() {\n var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES);\n var sk = new Uint8Array(crypto_box_SECRETKEYBYTES);\n crypto_box_keypair(pk, sk);\n return {publicKey: pk, secretKey: sk};\n};\n\nnacl.box.keyPair.fromSecretKey = function(secretKey) {\n checkArrayTypes(secretKey);\n if (secretKey.length !== crypto_box_SECRETKEYBYTES)\n throw new Error('bad secret key size');\n var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES);\n crypto_scalarmult_base(pk, secretKey);\n return {publicKey: pk, secretKey: new Uint8Array(secretKey)};\n};\n\nnacl.box.publicKeyLength = crypto_box_PUBLICKEYBYTES;\nnacl.box.secretKeyLength = crypto_box_SECRETKEYBYTES;\nnacl.box.sharedKeyLength = crypto_box_BEFORENMBYTES;\nnacl.box.nonceLength = crypto_box_NONCEBYTES;\nnacl.box.overheadLength = nacl.secretbox.overheadLength;\n\nnacl.sign = function(msg, secretKey) {\n checkArrayTypes(msg, secretKey);\n if (secretKey.length !== crypto_sign_SECRETKEYBYTES)\n throw new Error('bad secret key size');\n var signedMsg = new Uint8Array(crypto_sign_BYTES+msg.length);\n crypto_sign(signedMsg, msg, msg.length, secretKey);\n return signedMsg;\n};\n\nnacl.sign.open = function(signedMsg, publicKey) {\n if (arguments.length !== 2)\n throw new Error('nacl.sign.open accepts 2 arguments; did you mean to use nacl.sign.detached.verify?');\n checkArrayTypes(signedMsg, publicKey);\n if (publicKey.length !== crypto_sign_PUBLICKEYBYTES)\n throw new Error('bad public key size');\n var tmp = new Uint8Array(signedMsg.length);\n var mlen = crypto_sign_open(tmp, signedMsg, signedMsg.length, publicKey);\n if (mlen < 0) return null;\n var m = new Uint8Array(mlen);\n for (var i = 0; i < m.length; i++) m[i] = tmp[i];\n return m;\n};\n\nnacl.sign.detached = function(msg, secretKey) {\n var signedMsg = nacl.sign(msg, secretKey);\n var sig = new Uint8Array(crypto_sign_BYTES);\n for (var i = 0; i < sig.length; i++) sig[i] = signedMsg[i];\n return sig;\n};\n\nnacl.sign.detached.verify = function(msg, sig, publicKey) {\n checkArrayTypes(msg, sig, publicKey);\n if (sig.length !== crypto_sign_BYTES)\n throw new Error('bad signature size');\n if (publicKey.length !== crypto_sign_PUBLICKEYBYTES)\n throw new Error('bad public key size');\n var sm = new Uint8Array(crypto_sign_BYTES + msg.length);\n var m = new Uint8Array(crypto_sign_BYTES + msg.length);\n var i;\n for (i = 0; i < crypto_sign_BYTES; i++) sm[i] = sig[i];\n for (i = 0; i < msg.length; i++) sm[i+crypto_sign_BYTES] = msg[i];\n return (crypto_sign_open(m, sm, sm.length, publicKey) >= 0);\n};\n\nnacl.sign.keyPair = function() {\n var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);\n var sk = new Uint8Array(crypto_sign_SECRETKEYBYTES);\n crypto_sign_keypair(pk, sk);\n return {publicKey: pk, secretKey: sk};\n};\n\nnacl.sign.keyPair.fromSecretKey = function(secretKey) {\n checkArrayTypes(secretKey);\n if (secretKey.length !== crypto_sign_SECRETKEYBYTES)\n throw new Error('bad secret key size');\n var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);\n for (var i = 0; i < pk.length; i++) pk[i] = secretKey[32+i];\n return {publicKey: pk, secretKey: new Uint8Array(secretKey)};\n};\n\nnacl.sign.keyPair.fromSeed = function(seed) {\n checkArrayTypes(seed);\n if (seed.length !== crypto_sign_SEEDBYTES)\n throw new Error('bad seed size');\n var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);\n var sk = new Uint8Array(crypto_sign_SECRETKEYBYTES);\n for (var i = 0; i < 32; i++) sk[i] = seed[i];\n crypto_sign_keypair(pk, sk, true);\n return {publicKey: pk, secretKey: sk};\n};\n\nnacl.sign.publicKeyLength = crypto_sign_PUBLICKEYBYTES;\nnacl.sign.secretKeyLength = crypto_sign_SECRETKEYBYTES;\nnacl.sign.seedLength = crypto_sign_SEEDBYTES;\nnacl.sign.signatureLength = crypto_sign_BYTES;\n\nnacl.hash = function(msg) {\n checkArrayTypes(msg);\n var h = new Uint8Array(crypto_hash_BYTES);\n crypto_hash(h, msg, msg.length);\n return h;\n};\n\nnacl.hash.hashLength = crypto_hash_BYTES;\n\nnacl.verify = function(x, y) {\n checkArrayTypes(x, y);\n // Zero length arguments are considered not equal.\n if (x.length === 0 || y.length === 0) return false;\n if (x.length !== y.length) return false;\n return (vn(x, 0, y, 0, x.length) === 0) ? true : false;\n};\n\nnacl.setPRNG = function(fn) {\n randombytes = fn;\n};\n\n(function() {\n // Initialize PRNG if environment provides CSPRNG.\n // If not, methods calling randombytes will throw.\n var crypto = typeof self !== 'undefined' ? (self.crypto || self.msCrypto) : null;\n if (crypto && crypto.getRandomValues) {\n // Browsers.\n var QUOTA = 65536;\n nacl.setPRNG(function(x, n) {\n var i, v = new Uint8Array(n);\n for (i = 0; i < n; i += QUOTA) {\n crypto.getRandomValues(v.subarray(i, i + Math.min(n - i, QUOTA)));\n }\n for (i = 0; i < n; i++) x[i] = v[i];\n cleanup(v);\n });\n } else if (typeof require !== 'undefined') {\n // Node.js.\n crypto = require('crypto');\n if (crypto && crypto.randomBytes) {\n nacl.setPRNG(function(x, n) {\n var i, v = crypto.randomBytes(n);\n for (i = 0; i < n; i++) x[i] = v[i];\n cleanup(v);\n });\n }\n }\n})();\n\n})(typeof module !== 'undefined' && module.exports ? module.exports : (self.nacl = self.nacl || {}));\n","/*!\n * Copyright (c) 2015, Salesforce.com, Inc.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * 1. Redistributions of source code must retain the above copyright notice,\n * this list of conditions and the following disclaimer.\n *\n * 2. Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * 3. Neither the name of Salesforce.com nor the names of its contributors may\n * be used to endorse or promote products derived from this software without\n * specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE\n * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n'use strict';\n/*jshint unused:false */\n\nfunction Store() {\n}\nexports.Store = Store;\n\n// Stores may be synchronous, but are still required to use a\n// Continuation-Passing Style API. The CookieJar itself will expose a \"*Sync\"\n// API that converts from synchronous-callbacks to imperative style.\nStore.prototype.synchronous = false;\n\nStore.prototype.findCookie = function(domain, path, key, cb) {\n throw new Error('findCookie is not implemented');\n};\n\nStore.prototype.findCookies = function(domain, path, cb) {\n throw new Error('findCookies is not implemented');\n};\n\nStore.prototype.putCookie = function(cookie, cb) {\n throw new Error('putCookie is not implemented');\n};\n\nStore.prototype.updateCookie = function(oldCookie, newCookie, cb) {\n // recommended default implementation:\n // return this.putCookie(newCookie, cb);\n throw new Error('updateCookie is not implemented');\n};\n\nStore.prototype.removeCookie = function(domain, path, key, cb) {\n throw new Error('removeCookie is not implemented');\n};\n\nStore.prototype.removeCookies = function(domain, path, cb) {\n throw new Error('removeCookies is not implemented');\n};\n\nStore.prototype.removeAllCookies = function(cb) {\n throw new Error('removeAllCookies is not implemented');\n}\n\nStore.prototype.getAllCookies = function(cb) {\n throw new Error('getAllCookies is not implemented (therefore jar cannot be serialized)');\n};\n","/*!\n * Copyright (c) 2015, Salesforce.com, Inc.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * 1. Redistributions of source code must retain the above copyright notice,\n * this list of conditions and the following disclaimer.\n *\n * 2. Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * 3. Neither the name of Salesforce.com nor the names of its contributors may\n * be used to endorse or promote products derived from this software without\n * specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE\n * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n'use strict';\nvar net = require('net');\nvar urlParse = require('url').parse;\nvar util = require('util');\nvar pubsuffix = require('./pubsuffix-psl');\nvar Store = require('./store').Store;\nvar MemoryCookieStore = require('./memstore').MemoryCookieStore;\nvar pathMatch = require('./pathMatch').pathMatch;\nvar VERSION = require('./version');\n\nvar punycode;\ntry {\n punycode = require('punycode');\n} catch(e) {\n console.warn(\"tough-cookie: can't load punycode; won't use punycode for domain normalization\");\n}\n\n// From RFC6265 S4.1.1\n// note that it excludes \\x3B \";\"\nvar COOKIE_OCTETS = /^[\\x21\\x23-\\x2B\\x2D-\\x3A\\x3C-\\x5B\\x5D-\\x7E]+$/;\n\nvar CONTROL_CHARS = /[\\x00-\\x1F]/;\n\n// From Chromium // '\\r', '\\n' and '\\0' should be treated as a terminator in\n// the \"relaxed\" mode, see:\n// https://github.com/ChromiumWebApps/chromium/blob/b3d3b4da8bb94c1b2e061600df106d590fda3620/net/cookies/parsed_cookie.cc#L60\nvar TERMINATORS = ['\\n', '\\r', '\\0'];\n\n// RFC6265 S4.1.1 defines path value as 'any CHAR except CTLs or \";\"'\n// Note ';' is \\x3B\nvar PATH_VALUE = /[\\x20-\\x3A\\x3C-\\x7E]+/;\n\n// date-time parsing constants (RFC6265 S5.1.1)\n\nvar DATE_DELIM = /[\\x09\\x20-\\x2F\\x3B-\\x40\\x5B-\\x60\\x7B-\\x7E]/;\n\nvar MONTH_TO_NUM = {\n jan:0, feb:1, mar:2, apr:3, may:4, jun:5,\n jul:6, aug:7, sep:8, oct:9, nov:10, dec:11\n};\nvar NUM_TO_MONTH = [\n 'Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'\n];\nvar NUM_TO_DAY = [\n 'Sun','Mon','Tue','Wed','Thu','Fri','Sat'\n];\n\nvar MAX_TIME = 2147483647000; // 31-bit max\nvar MIN_TIME = 0; // 31-bit min\n\n/*\n * Parses a Natural number (i.e., non-negative integer) with either the\n * *DIGIT ( non-digit *OCTET )\n * or\n * *DIGIT\n * grammar (RFC6265 S5.1.1).\n *\n * The \"trailingOK\" boolean controls if the grammar accepts a\n * \"( non-digit *OCTET )\" trailer.\n */\nfunction parseDigits(token, minDigits, maxDigits, trailingOK) {\n var count = 0;\n while (count < token.length) {\n var c = token.charCodeAt(count);\n // \"non-digit = %x00-2F / %x3A-FF\"\n if (c <= 0x2F || c >= 0x3A) {\n break;\n }\n count++;\n }\n\n // constrain to a minimum and maximum number of digits.\n if (count < minDigits || count > maxDigits) {\n return null;\n }\n\n if (!trailingOK && count != token.length) {\n return null;\n }\n\n return parseInt(token.substr(0,count), 10);\n}\n\nfunction parseTime(token) {\n var parts = token.split(':');\n var result = [0,0,0];\n\n /* RF6256 S5.1.1:\n * time = hms-time ( non-digit *OCTET )\n * hms-time = time-field \":\" time-field \":\" time-field\n * time-field = 1*2DIGIT\n */\n\n if (parts.length !== 3) {\n return null;\n }\n\n for (var i = 0; i < 3; i++) {\n // \"time-field\" must be strictly \"1*2DIGIT\", HOWEVER, \"hms-time\" can be\n // followed by \"( non-digit *OCTET )\" so therefore the last time-field can\n // have a trailer\n var trailingOK = (i == 2);\n var num = parseDigits(parts[i], 1, 2, trailingOK);\n if (num === null) {\n return null;\n }\n result[i] = num;\n }\n\n return result;\n}\n\nfunction parseMonth(token) {\n token = String(token).substr(0,3).toLowerCase();\n var num = MONTH_TO_NUM[token];\n return num >= 0 ? num : null;\n}\n\n/*\n * RFC6265 S5.1.1 date parser (see RFC for full grammar)\n */\nfunction parseDate(str) {\n if (!str) {\n return;\n }\n\n /* RFC6265 S5.1.1:\n * 2. Process each date-token sequentially in the order the date-tokens\n * appear in the cookie-date\n */\n var tokens = str.split(DATE_DELIM);\n if (!tokens) {\n return;\n }\n\n var hour = null;\n var minute = null;\n var second = null;\n var dayOfMonth = null;\n var month = null;\n var year = null;\n\n for (var i=0; i= 70 && year <= 99) {\n year += 1900;\n } else if (year >= 0 && year <= 69) {\n year += 2000;\n }\n }\n }\n }\n\n /* RFC 6265 S5.1.1\n * \"5. Abort these steps and fail to parse the cookie-date if:\n * * at least one of the found-day-of-month, found-month, found-\n * year, or found-time flags is not set,\n * * the day-of-month-value is less than 1 or greater than 31,\n * * the year-value is less than 1601,\n * * the hour-value is greater than 23,\n * * the minute-value is greater than 59, or\n * * the second-value is greater than 59.\n * (Note that leap seconds cannot be represented in this syntax.)\"\n *\n * So, in order as above:\n */\n if (\n dayOfMonth === null || month === null || year === null || second === null ||\n dayOfMonth < 1 || dayOfMonth > 31 ||\n year < 1601 ||\n hour > 23 ||\n minute > 59 ||\n second > 59\n ) {\n return;\n }\n\n return new Date(Date.UTC(year, month, dayOfMonth, hour, minute, second));\n}\n\nfunction formatDate(date) {\n var d = date.getUTCDate(); d = d >= 10 ? d : '0'+d;\n var h = date.getUTCHours(); h = h >= 10 ? h : '0'+h;\n var m = date.getUTCMinutes(); m = m >= 10 ? m : '0'+m;\n var s = date.getUTCSeconds(); s = s >= 10 ? s : '0'+s;\n return NUM_TO_DAY[date.getUTCDay()] + ', ' +\n d+' '+ NUM_TO_MONTH[date.getUTCMonth()] +' '+ date.getUTCFullYear() +' '+\n h+':'+m+':'+s+' GMT';\n}\n\n// S5.1.2 Canonicalized Host Names\nfunction canonicalDomain(str) {\n if (str == null) {\n return null;\n }\n str = str.trim().replace(/^\\./,''); // S4.1.2.3 & S5.2.3: ignore leading .\n\n // convert to IDN if any non-ASCII characters\n if (punycode && /[^\\u0001-\\u007f]/.test(str)) {\n str = punycode.toASCII(str);\n }\n\n return str.toLowerCase();\n}\n\n// S5.1.3 Domain Matching\nfunction domainMatch(str, domStr, canonicalize) {\n if (str == null || domStr == null) {\n return null;\n }\n if (canonicalize !== false) {\n str = canonicalDomain(str);\n domStr = canonicalDomain(domStr);\n }\n\n /*\n * \"The domain string and the string are identical. (Note that both the\n * domain string and the string will have been canonicalized to lower case at\n * this point)\"\n */\n if (str == domStr) {\n return true;\n }\n\n /* \"All of the following [three] conditions hold:\" (order adjusted from the RFC) */\n\n /* \"* The string is a host name (i.e., not an IP address).\" */\n if (net.isIP(str)) {\n return false;\n }\n\n /* \"* The domain string is a suffix of the string\" */\n var idx = str.indexOf(domStr);\n if (idx <= 0) {\n return false; // it's a non-match (-1) or prefix (0)\n }\n\n // e.g \"a.b.c\".indexOf(\"b.c\") === 2\n // 5 === 3+2\n if (str.length !== domStr.length + idx) { // it's not a suffix\n return false;\n }\n\n /* \"* The last character of the string that is not included in the domain\n * string is a %x2E (\".\") character.\" */\n if (str.substr(idx-1,1) !== '.') {\n return false;\n }\n\n return true;\n}\n\n\n// RFC6265 S5.1.4 Paths and Path-Match\n\n/*\n * \"The user agent MUST use an algorithm equivalent to the following algorithm\n * to compute the default-path of a cookie:\"\n *\n * Assumption: the path (and not query part or absolute uri) is passed in.\n */\nfunction defaultPath(path) {\n // \"2. If the uri-path is empty or if the first character of the uri-path is not\n // a %x2F (\"/\") character, output %x2F (\"/\") and skip the remaining steps.\n if (!path || path.substr(0,1) !== \"/\") {\n return \"/\";\n }\n\n // \"3. If the uri-path contains no more than one %x2F (\"/\") character, output\n // %x2F (\"/\") and skip the remaining step.\"\n if (path === \"/\") {\n return path;\n }\n\n var rightSlash = path.lastIndexOf(\"/\");\n if (rightSlash === 0) {\n return \"/\";\n }\n\n // \"4. Output the characters of the uri-path from the first character up to,\n // but not including, the right-most %x2F (\"/\").\"\n return path.slice(0, rightSlash);\n}\n\nfunction trimTerminator(str) {\n for (var t = 0; t < TERMINATORS.length; t++) {\n var terminatorIdx = str.indexOf(TERMINATORS[t]);\n if (terminatorIdx !== -1) {\n str = str.substr(0,terminatorIdx);\n }\n }\n\n return str;\n}\n\nfunction parseCookiePair(cookiePair, looseMode) {\n cookiePair = trimTerminator(cookiePair);\n\n var firstEq = cookiePair.indexOf('=');\n if (looseMode) {\n if (firstEq === 0) { // '=' is immediately at start\n cookiePair = cookiePair.substr(1);\n firstEq = cookiePair.indexOf('='); // might still need to split on '='\n }\n } else { // non-loose mode\n if (firstEq <= 0) { // no '=' or is at start\n return; // needs to have non-empty \"cookie-name\"\n }\n }\n\n var cookieName, cookieValue;\n if (firstEq <= 0) {\n cookieName = \"\";\n cookieValue = cookiePair.trim();\n } else {\n cookieName = cookiePair.substr(0, firstEq).trim();\n cookieValue = cookiePair.substr(firstEq+1).trim();\n }\n\n if (CONTROL_CHARS.test(cookieName) || CONTROL_CHARS.test(cookieValue)) {\n return;\n }\n\n var c = new Cookie();\n c.key = cookieName;\n c.value = cookieValue;\n return c;\n}\n\nfunction parse(str, options) {\n if (!options || typeof options !== 'object') {\n options = {};\n }\n str = str.trim();\n\n // We use a regex to parse the \"name-value-pair\" part of S5.2\n var firstSemi = str.indexOf(';'); // S5.2 step 1\n var cookiePair = (firstSemi === -1) ? str : str.substr(0, firstSemi);\n var c = parseCookiePair(cookiePair, !!options.loose);\n if (!c) {\n return;\n }\n\n if (firstSemi === -1) {\n return c;\n }\n\n // S5.2.3 \"unparsed-attributes consist of the remainder of the set-cookie-string\n // (including the %x3B (\";\") in question).\" plus later on in the same section\n // \"discard the first \";\" and trim\".\n var unparsed = str.slice(firstSemi + 1).trim();\n\n // \"If the unparsed-attributes string is empty, skip the rest of these\n // steps.\"\n if (unparsed.length === 0) {\n return c;\n }\n\n /*\n * S5.2 says that when looping over the items \"[p]rocess the attribute-name\n * and attribute-value according to the requirements in the following\n * subsections\" for every item. Plus, for many of the individual attributes\n * in S5.3 it says to use the \"attribute-value of the last attribute in the\n * cookie-attribute-list\". Therefore, in this implementation, we overwrite\n * the previous value.\n */\n var cookie_avs = unparsed.split(';');\n while (cookie_avs.length) {\n var av = cookie_avs.shift().trim();\n if (av.length === 0) { // happens if \";;\" appears\n continue;\n }\n var av_sep = av.indexOf('=');\n var av_key, av_value;\n\n if (av_sep === -1) {\n av_key = av;\n av_value = null;\n } else {\n av_key = av.substr(0,av_sep);\n av_value = av.substr(av_sep+1);\n }\n\n av_key = av_key.trim().toLowerCase();\n\n if (av_value) {\n av_value = av_value.trim();\n }\n\n switch(av_key) {\n case 'expires': // S5.2.1\n if (av_value) {\n var exp = parseDate(av_value);\n // \"If the attribute-value failed to parse as a cookie date, ignore the\n // cookie-av.\"\n if (exp) {\n // over and underflow not realistically a concern: V8's getTime() seems to\n // store something larger than a 32-bit time_t (even with 32-bit node)\n c.expires = exp;\n }\n }\n break;\n\n case 'max-age': // S5.2.2\n if (av_value) {\n // \"If the first character of the attribute-value is not a DIGIT or a \"-\"\n // character ...[or]... If the remainder of attribute-value contains a\n // non-DIGIT character, ignore the cookie-av.\"\n if (/^-?[0-9]+$/.test(av_value)) {\n var delta = parseInt(av_value, 10);\n // \"If delta-seconds is less than or equal to zero (0), let expiry-time\n // be the earliest representable date and time.\"\n c.setMaxAge(delta);\n }\n }\n break;\n\n case 'domain': // S5.2.3\n // \"If the attribute-value is empty, the behavior is undefined. However,\n // the user agent SHOULD ignore the cookie-av entirely.\"\n if (av_value) {\n // S5.2.3 \"Let cookie-domain be the attribute-value without the leading %x2E\n // (\".\") character.\"\n var domain = av_value.trim().replace(/^\\./, '');\n if (domain) {\n // \"Convert the cookie-domain to lower case.\"\n c.domain = domain.toLowerCase();\n }\n }\n break;\n\n case 'path': // S5.2.4\n /*\n * \"If the attribute-value is empty or if the first character of the\n * attribute-value is not %x2F (\"/\"):\n * Let cookie-path be the default-path.\n * Otherwise:\n * Let cookie-path be the attribute-value.\"\n *\n * We'll represent the default-path as null since it depends on the\n * context of the parsing.\n */\n c.path = av_value && av_value[0] === \"/\" ? av_value : null;\n break;\n\n case 'secure': // S5.2.5\n /*\n * \"If the attribute-name case-insensitively matches the string \"Secure\",\n * the user agent MUST append an attribute to the cookie-attribute-list\n * with an attribute-name of Secure and an empty attribute-value.\"\n */\n c.secure = true;\n break;\n\n case 'httponly': // S5.2.6 -- effectively the same as 'secure'\n c.httpOnly = true;\n break;\n\n default:\n c.extensions = c.extensions || [];\n c.extensions.push(av);\n break;\n }\n }\n\n return c;\n}\n\n// avoid the V8 deoptimization monster!\nfunction jsonParse(str) {\n var obj;\n try {\n obj = JSON.parse(str);\n } catch (e) {\n return e;\n }\n return obj;\n}\n\nfunction fromJSON(str) {\n if (!str) {\n return null;\n }\n\n var obj;\n if (typeof str === 'string') {\n obj = jsonParse(str);\n if (obj instanceof Error) {\n return null;\n }\n } else {\n // assume it's an Object\n obj = str;\n }\n\n var c = new Cookie();\n for (var i=0; i 1) {\n var lindex = path.lastIndexOf('/');\n if (lindex === 0) {\n break;\n }\n path = path.substr(0,lindex);\n permutations.push(path);\n }\n permutations.push('/');\n return permutations;\n}\n\nfunction getCookieContext(url) {\n if (url instanceof Object) {\n return url;\n }\n // NOTE: decodeURI will throw on malformed URIs (see GH-32).\n // Therefore, we will just skip decoding for such URIs.\n try {\n url = decodeURI(url);\n }\n catch(err) {\n // Silently swallow error\n }\n\n return urlParse(url);\n}\n\nfunction Cookie(options) {\n options = options || {};\n\n Object.keys(options).forEach(function(prop) {\n if (Cookie.prototype.hasOwnProperty(prop) &&\n Cookie.prototype[prop] !== options[prop] &&\n prop.substr(0,1) !== '_')\n {\n this[prop] = options[prop];\n }\n }, this);\n\n this.creation = this.creation || new Date();\n\n // used to break creation ties in cookieCompare():\n Object.defineProperty(this, 'creationIndex', {\n configurable: false,\n enumerable: false, // important for assert.deepEqual checks\n writable: true,\n value: ++Cookie.cookiesCreated\n });\n}\n\nCookie.cookiesCreated = 0; // incremented each time a cookie is created\n\nCookie.parse = parse;\nCookie.fromJSON = fromJSON;\n\nCookie.prototype.key = \"\";\nCookie.prototype.value = \"\";\n\n// the order in which the RFC has them:\nCookie.prototype.expires = \"Infinity\"; // coerces to literal Infinity\nCookie.prototype.maxAge = null; // takes precedence over expires for TTL\nCookie.prototype.domain = null;\nCookie.prototype.path = null;\nCookie.prototype.secure = false;\nCookie.prototype.httpOnly = false;\nCookie.prototype.extensions = null;\n\n// set by the CookieJar:\nCookie.prototype.hostOnly = null; // boolean when set\nCookie.prototype.pathIsDefault = null; // boolean when set\nCookie.prototype.creation = null; // Date when set; defaulted by Cookie.parse\nCookie.prototype.lastAccessed = null; // Date when set\nObject.defineProperty(Cookie.prototype, 'creationIndex', {\n configurable: true,\n enumerable: false,\n writable: true,\n value: 0\n});\n\nCookie.serializableProperties = Object.keys(Cookie.prototype)\n .filter(function(prop) {\n return !(\n Cookie.prototype[prop] instanceof Function ||\n prop === 'creationIndex' ||\n prop.substr(0,1) === '_'\n );\n });\n\nCookie.prototype.inspect = function inspect() {\n var now = Date.now();\n return 'Cookie=\"'+this.toString() +\n '; hostOnly='+(this.hostOnly != null ? this.hostOnly : '?') +\n '; aAge='+(this.lastAccessed ? (now-this.lastAccessed.getTime())+'ms' : '?') +\n '; cAge='+(this.creation ? (now-this.creation.getTime())+'ms' : '?') +\n '\"';\n};\n\n// Use the new custom inspection symbol to add the custom inspect function if\n// available.\nif (util.inspect.custom) {\n Cookie.prototype[util.inspect.custom] = Cookie.prototype.inspect;\n}\n\nCookie.prototype.toJSON = function() {\n var obj = {};\n\n var props = Cookie.serializableProperties;\n for (var i=0; i