{"version":3,"file":"static/js/vendor.initial~c2f440aa.01f8bddc.js","mappings":"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","sources":["../../../../node_modules/.pnpm/bluebird@3.7.2/node_modules/bluebird/js/browser/bluebird.js","../../../../node_modules/.pnpm/bootstrap@3.3.7/node_modules/bootstrap/dist/js/npm.js","../../../../node_modules/.pnpm/bootstrap@3.3.7/node_modules/bootstrap/js/affix.js","../../../../node_modules/.pnpm/bootstrap@3.3.7/node_modules/bootstrap/js/alert.js","../../../../node_modules/.pnpm/bootstrap@3.3.7/node_modules/bootstrap/js/button.js","../../../../node_modules/.pnpm/bootstrap@3.3.7/node_modules/bootstrap/js/carousel.js","../../../../node_modules/.pnpm/bootstrap@3.3.7/node_modules/bootstrap/js/collapse.js","../../../../node_modules/.pnpm/bootstrap@3.3.7/node_modules/bootstrap/js/dropdown.js","../../../../node_modules/.pnpm/bootstrap@3.3.7/node_modules/bootstrap/js/modal.js","../../../../node_modules/.pnpm/bootstrap@3.3.7/node_modules/bootstrap/js/popover.js","../../../../node_modules/.pnpm/bootstrap@3.3.7/node_modules/bootstrap/js/scrollspy.js","../../../../node_modules/.pnpm/bootstrap@3.3.7/node_modules/bootstrap/js/tab.js","../../../../node_modules/.pnpm/bootstrap@3.3.7/node_modules/bootstrap/js/tooltip.js","../../../../node_modules/.pnpm/bootstrap@3.3.7/node_modules/bootstrap/js/transition.js","../../../../node_modules/.pnpm/botframework-directlinejs@0.15.2/node_modules/botframework-directlinejs/lib/dedupeFilenames.js","../../../../node_modules/.pnpm/botframework-directlinejs@0.15.2/node_modules/botframework-directlinejs/lib/directLine.js","../../../../node_modules/.pnpm/botframework-directlinejs@0.15.2/node_modules/botframework-directlinejs/lib/directLineStreaming.js","../../../../node_modules/.pnpm/botframework-directlinejs@0.15.2/node_modules/botframework-directlinejs/lib/parseFilename.js","../../../../node_modules/.pnpm/botframework-streaming@4.19.3/node_modules/botframework-streaming/lib/index-browser.js","../../../../node_modules/.pnpm/browser-cookies@1.2.0/node_modules/browser-cookies/src/browser-cookies.js"],"sourcesContent":["/* @preserve\n * The MIT License (MIT)\n * \n * Copyright (c) 2013-2018 Petka Antonov\n * \n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n * \n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n * \n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n * \n */\n/**\n * bluebird build version 3.7.2\n * Features enabled: core, race, call_get, generators, map, nodeify, promisify, props, reduce, settle, some, using, timers, filter, any, each\n*/\n!function(e){if(\"object\"==typeof exports&&\"undefined\"!=typeof module)module.exports=e();else if(\"function\"==typeof define&&define.amd)define([],e);else{var f;\"undefined\"!=typeof window?f=window:\"undefined\"!=typeof global?f=global:\"undefined\"!=typeof self&&(f=self),f.Promise=e()}}(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof _dereq_==\"function\"&&_dereq_;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw f.code=\"MODULE_NOT_FOUND\",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof _dereq_==\"function\"&&_dereq_;for(var o=0;o 0) {\n _drainQueueStep(queue);\n }\n}\n\nfunction _drainQueueStep(queue) {\n var fn = queue.shift();\n if (typeof fn !== \"function\") {\n fn._settlePromises();\n } else {\n var receiver = queue.shift();\n var arg = queue.shift();\n fn.call(receiver, arg);\n }\n}\n\nAsync.prototype._drainQueues = function () {\n _drainQueue(this._normalQueue);\n this._reset();\n this._haveDrainedQueues = true;\n _drainQueue(this._lateQueue);\n};\n\nAsync.prototype._queueTick = function () {\n if (!this._isTickUsed) {\n this._isTickUsed = true;\n this._schedule(this.drainQueues);\n }\n};\n\nAsync.prototype._reset = function () {\n this._isTickUsed = false;\n};\n\nmodule.exports = Async;\nmodule.exports.firstLineError = firstLineError;\n\n},{\"./queue\":26,\"./schedule\":29}],3:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, INTERNAL, tryConvertToPromise, debug) {\nvar calledBind = false;\nvar rejectThis = function(_, e) {\n this._reject(e);\n};\n\nvar targetRejected = function(e, context) {\n context.promiseRejectionQueued = true;\n context.bindingPromise._then(rejectThis, rejectThis, null, this, e);\n};\n\nvar bindingResolved = function(thisArg, context) {\n if (((this._bitField & 50397184) === 0)) {\n this._resolveCallback(context.target);\n }\n};\n\nvar bindingRejected = function(e, context) {\n if (!context.promiseRejectionQueued) this._reject(e);\n};\n\nPromise.prototype.bind = function (thisArg) {\n if (!calledBind) {\n calledBind = true;\n Promise.prototype._propagateFrom = debug.propagateFromFunction();\n Promise.prototype._boundValue = debug.boundValueFunction();\n }\n var maybePromise = tryConvertToPromise(thisArg);\n var ret = new Promise(INTERNAL);\n ret._propagateFrom(this, 1);\n var target = this._target();\n ret._setBoundTo(maybePromise);\n if (maybePromise instanceof Promise) {\n var context = {\n promiseRejectionQueued: false,\n promise: ret,\n target: target,\n bindingPromise: maybePromise\n };\n target._then(INTERNAL, targetRejected, undefined, ret, context);\n maybePromise._then(\n bindingResolved, bindingRejected, undefined, ret, context);\n ret._setOnCancel(maybePromise);\n } else {\n ret._resolveCallback(target);\n }\n return ret;\n};\n\nPromise.prototype._setBoundTo = function (obj) {\n if (obj !== undefined) {\n this._bitField = this._bitField | 2097152;\n this._boundTo = obj;\n } else {\n this._bitField = this._bitField & (~2097152);\n }\n};\n\nPromise.prototype._isBound = function () {\n return (this._bitField & 2097152) === 2097152;\n};\n\nPromise.bind = function (thisArg, value) {\n return Promise.resolve(value).bind(thisArg);\n};\n};\n\n},{}],4:[function(_dereq_,module,exports){\n\"use strict\";\nvar old;\nif (typeof Promise !== \"undefined\") old = Promise;\nfunction noConflict() {\n try { if (Promise === bluebird) Promise = old; }\n catch (e) {}\n return bluebird;\n}\nvar bluebird = _dereq_(\"./promise\")();\nbluebird.noConflict = noConflict;\nmodule.exports = bluebird;\n\n},{\"./promise\":22}],5:[function(_dereq_,module,exports){\n\"use strict\";\nvar cr = Object.create;\nif (cr) {\n var callerCache = cr(null);\n var getterCache = cr(null);\n callerCache[\" size\"] = getterCache[\" size\"] = 0;\n}\n\nmodule.exports = function(Promise) {\nvar util = _dereq_(\"./util\");\nvar canEvaluate = util.canEvaluate;\nvar isIdentifier = util.isIdentifier;\n\nvar getMethodCaller;\nvar getGetter;\nif (!true) {\nvar makeMethodCaller = function (methodName) {\n return new Function(\"ensureMethod\", \" \\n\\\n return function(obj) { \\n\\\n 'use strict' \\n\\\n var len = this.length; \\n\\\n ensureMethod(obj, 'methodName'); \\n\\\n switch(len) { \\n\\\n case 1: return obj.methodName(this[0]); \\n\\\n case 2: return obj.methodName(this[0], this[1]); \\n\\\n case 3: return obj.methodName(this[0], this[1], this[2]); \\n\\\n case 0: return obj.methodName(); \\n\\\n default: \\n\\\n return obj.methodName.apply(obj, this); \\n\\\n } \\n\\\n }; \\n\\\n \".replace(/methodName/g, methodName))(ensureMethod);\n};\n\nvar makeGetter = function (propertyName) {\n return new Function(\"obj\", \" \\n\\\n 'use strict'; \\n\\\n return obj.propertyName; \\n\\\n \".replace(\"propertyName\", propertyName));\n};\n\nvar getCompiled = function(name, compiler, cache) {\n var ret = cache[name];\n if (typeof ret !== \"function\") {\n if (!isIdentifier(name)) {\n return null;\n }\n ret = compiler(name);\n cache[name] = ret;\n cache[\" size\"]++;\n if (cache[\" size\"] > 512) {\n var keys = Object.keys(cache);\n for (var i = 0; i < 256; ++i) delete cache[keys[i]];\n cache[\" size\"] = keys.length - 256;\n }\n }\n return ret;\n};\n\ngetMethodCaller = function(name) {\n return getCompiled(name, makeMethodCaller, callerCache);\n};\n\ngetGetter = function(name) {\n return getCompiled(name, makeGetter, getterCache);\n};\n}\n\nfunction ensureMethod(obj, methodName) {\n var fn;\n if (obj != null) fn = obj[methodName];\n if (typeof fn !== \"function\") {\n var message = \"Object \" + util.classString(obj) + \" has no method '\" +\n util.toString(methodName) + \"'\";\n throw new Promise.TypeError(message);\n }\n return fn;\n}\n\nfunction caller(obj) {\n var methodName = this.pop();\n var fn = ensureMethod(obj, methodName);\n return fn.apply(obj, this);\n}\nPromise.prototype.call = function (methodName) {\n var args = [].slice.call(arguments, 1);;\n if (!true) {\n if (canEvaluate) {\n var maybeCaller = getMethodCaller(methodName);\n if (maybeCaller !== null) {\n return this._then(\n maybeCaller, undefined, undefined, args, undefined);\n }\n }\n }\n args.push(methodName);\n return this._then(caller, undefined, undefined, args, undefined);\n};\n\nfunction namedGetter(obj) {\n return obj[this];\n}\nfunction indexedGetter(obj) {\n var index = +this;\n if (index < 0) index = Math.max(0, index + obj.length);\n return obj[index];\n}\nPromise.prototype.get = function (propertyName) {\n var isIndex = (typeof propertyName === \"number\");\n var getter;\n if (!isIndex) {\n if (canEvaluate) {\n var maybeGetter = getGetter(propertyName);\n getter = maybeGetter !== null ? maybeGetter : namedGetter;\n } else {\n getter = namedGetter;\n }\n } else {\n getter = indexedGetter;\n }\n return this._then(getter, undefined, undefined, propertyName, undefined);\n};\n};\n\n},{\"./util\":36}],6:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, PromiseArray, apiRejection, debug) {\nvar util = _dereq_(\"./util\");\nvar tryCatch = util.tryCatch;\nvar errorObj = util.errorObj;\nvar async = Promise._async;\n\nPromise.prototype[\"break\"] = Promise.prototype.cancel = function() {\n if (!debug.cancellation()) return this._warn(\"cancellation is disabled\");\n\n var promise = this;\n var child = promise;\n while (promise._isCancellable()) {\n if (!promise._cancelBy(child)) {\n if (child._isFollowing()) {\n child._followee().cancel();\n } else {\n child._cancelBranched();\n }\n break;\n }\n\n var parent = promise._cancellationParent;\n if (parent == null || !parent._isCancellable()) {\n if (promise._isFollowing()) {\n promise._followee().cancel();\n } else {\n promise._cancelBranched();\n }\n break;\n } else {\n if (promise._isFollowing()) promise._followee().cancel();\n promise._setWillBeCancelled();\n child = promise;\n promise = parent;\n }\n }\n};\n\nPromise.prototype._branchHasCancelled = function() {\n this._branchesRemainingToCancel--;\n};\n\nPromise.prototype._enoughBranchesHaveCancelled = function() {\n return this._branchesRemainingToCancel === undefined ||\n this._branchesRemainingToCancel <= 0;\n};\n\nPromise.prototype._cancelBy = function(canceller) {\n if (canceller === this) {\n this._branchesRemainingToCancel = 0;\n this._invokeOnCancel();\n return true;\n } else {\n this._branchHasCancelled();\n if (this._enoughBranchesHaveCancelled()) {\n this._invokeOnCancel();\n return true;\n }\n }\n return false;\n};\n\nPromise.prototype._cancelBranched = function() {\n if (this._enoughBranchesHaveCancelled()) {\n this._cancel();\n }\n};\n\nPromise.prototype._cancel = function() {\n if (!this._isCancellable()) return;\n this._setCancelled();\n async.invoke(this._cancelPromises, this, undefined);\n};\n\nPromise.prototype._cancelPromises = function() {\n if (this._length() > 0) this._settlePromises();\n};\n\nPromise.prototype._unsetOnCancel = function() {\n this._onCancelField = undefined;\n};\n\nPromise.prototype._isCancellable = function() {\n return this.isPending() && !this._isCancelled();\n};\n\nPromise.prototype.isCancellable = function() {\n return this.isPending() && !this.isCancelled();\n};\n\nPromise.prototype._doInvokeOnCancel = function(onCancelCallback, internalOnly) {\n if (util.isArray(onCancelCallback)) {\n for (var i = 0; i < onCancelCallback.length; ++i) {\n this._doInvokeOnCancel(onCancelCallback[i], internalOnly);\n }\n } else if (onCancelCallback !== undefined) {\n if (typeof onCancelCallback === \"function\") {\n if (!internalOnly) {\n var e = tryCatch(onCancelCallback).call(this._boundValue());\n if (e === errorObj) {\n this._attachExtraTrace(e.e);\n async.throwLater(e.e);\n }\n }\n } else {\n onCancelCallback._resultCancelled(this);\n }\n }\n};\n\nPromise.prototype._invokeOnCancel = function() {\n var onCancelCallback = this._onCancel();\n this._unsetOnCancel();\n async.invoke(this._doInvokeOnCancel, this, onCancelCallback);\n};\n\nPromise.prototype._invokeInternalOnCancel = function() {\n if (this._isCancellable()) {\n this._doInvokeOnCancel(this._onCancel(), true);\n this._unsetOnCancel();\n }\n};\n\nPromise.prototype._resultCancelled = function() {\n this.cancel();\n};\n\n};\n\n},{\"./util\":36}],7:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(NEXT_FILTER) {\nvar util = _dereq_(\"./util\");\nvar getKeys = _dereq_(\"./es5\").keys;\nvar tryCatch = util.tryCatch;\nvar errorObj = util.errorObj;\n\nfunction catchFilter(instances, cb, promise) {\n return function(e) {\n var boundTo = promise._boundValue();\n predicateLoop: for (var i = 0; i < instances.length; ++i) {\n var item = instances[i];\n\n if (item === Error ||\n (item != null && item.prototype instanceof Error)) {\n if (e instanceof item) {\n return tryCatch(cb).call(boundTo, e);\n }\n } else if (typeof item === \"function\") {\n var matchesPredicate = tryCatch(item).call(boundTo, e);\n if (matchesPredicate === errorObj) {\n return matchesPredicate;\n } else if (matchesPredicate) {\n return tryCatch(cb).call(boundTo, e);\n }\n } else if (util.isObject(e)) {\n var keys = getKeys(item);\n for (var j = 0; j < keys.length; ++j) {\n var key = keys[j];\n if (item[key] != e[key]) {\n continue predicateLoop;\n }\n }\n return tryCatch(cb).call(boundTo, e);\n }\n }\n return NEXT_FILTER;\n };\n}\n\nreturn catchFilter;\n};\n\n},{\"./es5\":13,\"./util\":36}],8:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise) {\nvar longStackTraces = false;\nvar contextStack = [];\n\nPromise.prototype._promiseCreated = function() {};\nPromise.prototype._pushContext = function() {};\nPromise.prototype._popContext = function() {return null;};\nPromise._peekContext = Promise.prototype._peekContext = function() {};\n\nfunction Context() {\n this._trace = new Context.CapturedTrace(peekContext());\n}\nContext.prototype._pushContext = function () {\n if (this._trace !== undefined) {\n this._trace._promiseCreated = null;\n contextStack.push(this._trace);\n }\n};\n\nContext.prototype._popContext = function () {\n if (this._trace !== undefined) {\n var trace = contextStack.pop();\n var ret = trace._promiseCreated;\n trace._promiseCreated = null;\n return ret;\n }\n return null;\n};\n\nfunction createContext() {\n if (longStackTraces) return new Context();\n}\n\nfunction peekContext() {\n var lastIndex = contextStack.length - 1;\n if (lastIndex >= 0) {\n return contextStack[lastIndex];\n }\n return undefined;\n}\nContext.CapturedTrace = null;\nContext.create = createContext;\nContext.deactivateLongStackTraces = function() {};\nContext.activateLongStackTraces = function() {\n var Promise_pushContext = Promise.prototype._pushContext;\n var Promise_popContext = Promise.prototype._popContext;\n var Promise_PeekContext = Promise._peekContext;\n var Promise_peekContext = Promise.prototype._peekContext;\n var Promise_promiseCreated = Promise.prototype._promiseCreated;\n Context.deactivateLongStackTraces = function() {\n Promise.prototype._pushContext = Promise_pushContext;\n Promise.prototype._popContext = Promise_popContext;\n Promise._peekContext = Promise_PeekContext;\n Promise.prototype._peekContext = Promise_peekContext;\n Promise.prototype._promiseCreated = Promise_promiseCreated;\n longStackTraces = false;\n };\n longStackTraces = true;\n Promise.prototype._pushContext = Context.prototype._pushContext;\n Promise.prototype._popContext = Context.prototype._popContext;\n Promise._peekContext = Promise.prototype._peekContext = peekContext;\n Promise.prototype._promiseCreated = function() {\n var ctx = this._peekContext();\n if (ctx && ctx._promiseCreated == null) ctx._promiseCreated = this;\n };\n};\nreturn Context;\n};\n\n},{}],9:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, Context,\n enableAsyncHooks, disableAsyncHooks) {\nvar async = Promise._async;\nvar Warning = _dereq_(\"./errors\").Warning;\nvar util = _dereq_(\"./util\");\nvar es5 = _dereq_(\"./es5\");\nvar canAttachTrace = util.canAttachTrace;\nvar unhandledRejectionHandled;\nvar possiblyUnhandledRejection;\nvar bluebirdFramePattern =\n /[\\\\\\/]bluebird[\\\\\\/]js[\\\\\\/](release|debug|instrumented)/;\nvar nodeFramePattern = /\\((?:timers\\.js):\\d+:\\d+\\)/;\nvar parseLinePattern = /[\\/<\\(](.+?):(\\d+):(\\d+)\\)?\\s*$/;\nvar stackFramePattern = null;\nvar formatStack = null;\nvar indentStackFrames = false;\nvar printWarning;\nvar debugging = !!(util.env(\"BLUEBIRD_DEBUG\") != 0 &&\n (true ||\n util.env(\"BLUEBIRD_DEBUG\") ||\n util.env(\"NODE_ENV\") === \"development\"));\n\nvar warnings = !!(util.env(\"BLUEBIRD_WARNINGS\") != 0 &&\n (debugging || util.env(\"BLUEBIRD_WARNINGS\")));\n\nvar longStackTraces = !!(util.env(\"BLUEBIRD_LONG_STACK_TRACES\") != 0 &&\n (debugging || util.env(\"BLUEBIRD_LONG_STACK_TRACES\")));\n\nvar wForgottenReturn = util.env(\"BLUEBIRD_W_FORGOTTEN_RETURN\") != 0 &&\n (warnings || !!util.env(\"BLUEBIRD_W_FORGOTTEN_RETURN\"));\n\nvar deferUnhandledRejectionCheck;\n(function() {\n var promises = [];\n\n function unhandledRejectionCheck() {\n for (var i = 0; i < promises.length; ++i) {\n promises[i]._notifyUnhandledRejection();\n }\n unhandledRejectionClear();\n }\n\n function unhandledRejectionClear() {\n promises.length = 0;\n }\n\n deferUnhandledRejectionCheck = function(promise) {\n promises.push(promise);\n setTimeout(unhandledRejectionCheck, 1);\n };\n\n es5.defineProperty(Promise, \"_unhandledRejectionCheck\", {\n value: unhandledRejectionCheck\n });\n es5.defineProperty(Promise, \"_unhandledRejectionClear\", {\n value: unhandledRejectionClear\n });\n})();\n\nPromise.prototype.suppressUnhandledRejections = function() {\n var target = this._target();\n target._bitField = ((target._bitField & (~1048576)) |\n 524288);\n};\n\nPromise.prototype._ensurePossibleRejectionHandled = function () {\n if ((this._bitField & 524288) !== 0) return;\n this._setRejectionIsUnhandled();\n deferUnhandledRejectionCheck(this);\n};\n\nPromise.prototype._notifyUnhandledRejectionIsHandled = function () {\n fireRejectionEvent(\"rejectionHandled\",\n unhandledRejectionHandled, undefined, this);\n};\n\nPromise.prototype._setReturnedNonUndefined = function() {\n this._bitField = this._bitField | 268435456;\n};\n\nPromise.prototype._returnedNonUndefined = function() {\n return (this._bitField & 268435456) !== 0;\n};\n\nPromise.prototype._notifyUnhandledRejection = function () {\n if (this._isRejectionUnhandled()) {\n var reason = this._settledValue();\n this._setUnhandledRejectionIsNotified();\n fireRejectionEvent(\"unhandledRejection\",\n possiblyUnhandledRejection, reason, this);\n }\n};\n\nPromise.prototype._setUnhandledRejectionIsNotified = function () {\n this._bitField = this._bitField | 262144;\n};\n\nPromise.prototype._unsetUnhandledRejectionIsNotified = function () {\n this._bitField = this._bitField & (~262144);\n};\n\nPromise.prototype._isUnhandledRejectionNotified = function () {\n return (this._bitField & 262144) > 0;\n};\n\nPromise.prototype._setRejectionIsUnhandled = function () {\n this._bitField = this._bitField | 1048576;\n};\n\nPromise.prototype._unsetRejectionIsUnhandled = function () {\n this._bitField = this._bitField & (~1048576);\n if (this._isUnhandledRejectionNotified()) {\n this._unsetUnhandledRejectionIsNotified();\n this._notifyUnhandledRejectionIsHandled();\n }\n};\n\nPromise.prototype._isRejectionUnhandled = function () {\n return (this._bitField & 1048576) > 0;\n};\n\nPromise.prototype._warn = function(message, shouldUseOwnTrace, promise) {\n return warn(message, shouldUseOwnTrace, promise || this);\n};\n\nPromise.onPossiblyUnhandledRejection = function (fn) {\n var context = Promise._getContext();\n possiblyUnhandledRejection = util.contextBind(context, fn);\n};\n\nPromise.onUnhandledRejectionHandled = function (fn) {\n var context = Promise._getContext();\n unhandledRejectionHandled = util.contextBind(context, fn);\n};\n\nvar disableLongStackTraces = function() {};\nPromise.longStackTraces = function () {\n if (async.haveItemsQueued() && !config.longStackTraces) {\n throw new Error(\"cannot enable long stack traces after promises have been created\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n if (!config.longStackTraces && longStackTracesIsSupported()) {\n var Promise_captureStackTrace = Promise.prototype._captureStackTrace;\n var Promise_attachExtraTrace = Promise.prototype._attachExtraTrace;\n var Promise_dereferenceTrace = Promise.prototype._dereferenceTrace;\n config.longStackTraces = true;\n disableLongStackTraces = function() {\n if (async.haveItemsQueued() && !config.longStackTraces) {\n throw new Error(\"cannot enable long stack traces after promises have been created\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n Promise.prototype._captureStackTrace = Promise_captureStackTrace;\n Promise.prototype._attachExtraTrace = Promise_attachExtraTrace;\n Promise.prototype._dereferenceTrace = Promise_dereferenceTrace;\n Context.deactivateLongStackTraces();\n config.longStackTraces = false;\n };\n Promise.prototype._captureStackTrace = longStackTracesCaptureStackTrace;\n Promise.prototype._attachExtraTrace = longStackTracesAttachExtraTrace;\n Promise.prototype._dereferenceTrace = longStackTracesDereferenceTrace;\n Context.activateLongStackTraces();\n }\n};\n\nPromise.hasLongStackTraces = function () {\n return config.longStackTraces && longStackTracesIsSupported();\n};\n\n\nvar legacyHandlers = {\n unhandledrejection: {\n before: function() {\n var ret = util.global.onunhandledrejection;\n util.global.onunhandledrejection = null;\n return ret;\n },\n after: function(fn) {\n util.global.onunhandledrejection = fn;\n }\n },\n rejectionhandled: {\n before: function() {\n var ret = util.global.onrejectionhandled;\n util.global.onrejectionhandled = null;\n return ret;\n },\n after: function(fn) {\n util.global.onrejectionhandled = fn;\n }\n }\n};\n\nvar fireDomEvent = (function() {\n var dispatch = function(legacy, e) {\n if (legacy) {\n var fn;\n try {\n fn = legacy.before();\n return !util.global.dispatchEvent(e);\n } finally {\n legacy.after(fn);\n }\n } else {\n return !util.global.dispatchEvent(e);\n }\n };\n try {\n if (typeof CustomEvent === \"function\") {\n var event = new CustomEvent(\"CustomEvent\");\n util.global.dispatchEvent(event);\n return function(name, event) {\n name = name.toLowerCase();\n var eventData = {\n detail: event,\n cancelable: true\n };\n var domEvent = new CustomEvent(name, eventData);\n es5.defineProperty(\n domEvent, \"promise\", {value: event.promise});\n es5.defineProperty(\n domEvent, \"reason\", {value: event.reason});\n\n return dispatch(legacyHandlers[name], domEvent);\n };\n } else if (typeof Event === \"function\") {\n var event = new Event(\"CustomEvent\");\n util.global.dispatchEvent(event);\n return function(name, event) {\n name = name.toLowerCase();\n var domEvent = new Event(name, {\n cancelable: true\n });\n domEvent.detail = event;\n es5.defineProperty(domEvent, \"promise\", {value: event.promise});\n es5.defineProperty(domEvent, \"reason\", {value: event.reason});\n return dispatch(legacyHandlers[name], domEvent);\n };\n } else {\n var event = document.createEvent(\"CustomEvent\");\n event.initCustomEvent(\"testingtheevent\", false, true, {});\n util.global.dispatchEvent(event);\n return function(name, event) {\n name = name.toLowerCase();\n var domEvent = document.createEvent(\"CustomEvent\");\n domEvent.initCustomEvent(name, false, true,\n event);\n return dispatch(legacyHandlers[name], domEvent);\n };\n }\n } catch (e) {}\n return function() {\n return false;\n };\n})();\n\nvar fireGlobalEvent = (function() {\n if (util.isNode) {\n return function() {\n return process.emit.apply(process, arguments);\n };\n } else {\n if (!util.global) {\n return function() {\n return false;\n };\n }\n return function(name) {\n var methodName = \"on\" + name.toLowerCase();\n var method = util.global[methodName];\n if (!method) return false;\n method.apply(util.global, [].slice.call(arguments, 1));\n return true;\n };\n }\n})();\n\nfunction generatePromiseLifecycleEventObject(name, promise) {\n return {promise: promise};\n}\n\nvar eventToObjectGenerator = {\n promiseCreated: generatePromiseLifecycleEventObject,\n promiseFulfilled: generatePromiseLifecycleEventObject,\n promiseRejected: generatePromiseLifecycleEventObject,\n promiseResolved: generatePromiseLifecycleEventObject,\n promiseCancelled: generatePromiseLifecycleEventObject,\n promiseChained: function(name, promise, child) {\n return {promise: promise, child: child};\n },\n warning: function(name, warning) {\n return {warning: warning};\n },\n unhandledRejection: function (name, reason, promise) {\n return {reason: reason, promise: promise};\n },\n rejectionHandled: generatePromiseLifecycleEventObject\n};\n\nvar activeFireEvent = function (name) {\n var globalEventFired = false;\n try {\n globalEventFired = fireGlobalEvent.apply(null, arguments);\n } catch (e) {\n async.throwLater(e);\n globalEventFired = true;\n }\n\n var domEventFired = false;\n try {\n domEventFired = fireDomEvent(name,\n eventToObjectGenerator[name].apply(null, arguments));\n } catch (e) {\n async.throwLater(e);\n domEventFired = true;\n }\n\n return domEventFired || globalEventFired;\n};\n\nPromise.config = function(opts) {\n opts = Object(opts);\n if (\"longStackTraces\" in opts) {\n if (opts.longStackTraces) {\n Promise.longStackTraces();\n } else if (!opts.longStackTraces && Promise.hasLongStackTraces()) {\n disableLongStackTraces();\n }\n }\n if (\"warnings\" in opts) {\n var warningsOption = opts.warnings;\n config.warnings = !!warningsOption;\n wForgottenReturn = config.warnings;\n\n if (util.isObject(warningsOption)) {\n if (\"wForgottenReturn\" in warningsOption) {\n wForgottenReturn = !!warningsOption.wForgottenReturn;\n }\n }\n }\n if (\"cancellation\" in opts && opts.cancellation && !config.cancellation) {\n if (async.haveItemsQueued()) {\n throw new Error(\n \"cannot enable cancellation after promises are in use\");\n }\n Promise.prototype._clearCancellationData =\n cancellationClearCancellationData;\n Promise.prototype._propagateFrom = cancellationPropagateFrom;\n Promise.prototype._onCancel = cancellationOnCancel;\n Promise.prototype._setOnCancel = cancellationSetOnCancel;\n Promise.prototype._attachCancellationCallback =\n cancellationAttachCancellationCallback;\n Promise.prototype._execute = cancellationExecute;\n propagateFromFunction = cancellationPropagateFrom;\n config.cancellation = true;\n }\n if (\"monitoring\" in opts) {\n if (opts.monitoring && !config.monitoring) {\n config.monitoring = true;\n Promise.prototype._fireEvent = activeFireEvent;\n } else if (!opts.monitoring && config.monitoring) {\n config.monitoring = false;\n Promise.prototype._fireEvent = defaultFireEvent;\n }\n }\n if (\"asyncHooks\" in opts && util.nodeSupportsAsyncResource) {\n var prev = config.asyncHooks;\n var cur = !!opts.asyncHooks;\n if (prev !== cur) {\n config.asyncHooks = cur;\n if (cur) {\n enableAsyncHooks();\n } else {\n disableAsyncHooks();\n }\n }\n }\n return Promise;\n};\n\nfunction defaultFireEvent() { return false; }\n\nPromise.prototype._fireEvent = defaultFireEvent;\nPromise.prototype._execute = function(executor, resolve, reject) {\n try {\n executor(resolve, reject);\n } catch (e) {\n return e;\n }\n};\nPromise.prototype._onCancel = function () {};\nPromise.prototype._setOnCancel = function (handler) { ; };\nPromise.prototype._attachCancellationCallback = function(onCancel) {\n ;\n};\nPromise.prototype._captureStackTrace = function () {};\nPromise.prototype._attachExtraTrace = function () {};\nPromise.prototype._dereferenceTrace = function () {};\nPromise.prototype._clearCancellationData = function() {};\nPromise.prototype._propagateFrom = function (parent, flags) {\n ;\n ;\n};\n\nfunction cancellationExecute(executor, resolve, reject) {\n var promise = this;\n try {\n executor(resolve, reject, function(onCancel) {\n if (typeof onCancel !== \"function\") {\n throw new TypeError(\"onCancel must be a function, got: \" +\n util.toString(onCancel));\n }\n promise._attachCancellationCallback(onCancel);\n });\n } catch (e) {\n return e;\n }\n}\n\nfunction cancellationAttachCancellationCallback(onCancel) {\n if (!this._isCancellable()) return this;\n\n var previousOnCancel = this._onCancel();\n if (previousOnCancel !== undefined) {\n if (util.isArray(previousOnCancel)) {\n previousOnCancel.push(onCancel);\n } else {\n this._setOnCancel([previousOnCancel, onCancel]);\n }\n } else {\n this._setOnCancel(onCancel);\n }\n}\n\nfunction cancellationOnCancel() {\n return this._onCancelField;\n}\n\nfunction cancellationSetOnCancel(onCancel) {\n this._onCancelField = onCancel;\n}\n\nfunction cancellationClearCancellationData() {\n this._cancellationParent = undefined;\n this._onCancelField = undefined;\n}\n\nfunction cancellationPropagateFrom(parent, flags) {\n if ((flags & 1) !== 0) {\n this._cancellationParent = parent;\n var branchesRemainingToCancel = parent._branchesRemainingToCancel;\n if (branchesRemainingToCancel === undefined) {\n branchesRemainingToCancel = 0;\n }\n parent._branchesRemainingToCancel = branchesRemainingToCancel + 1;\n }\n if ((flags & 2) !== 0 && parent._isBound()) {\n this._setBoundTo(parent._boundTo);\n }\n}\n\nfunction bindingPropagateFrom(parent, flags) {\n if ((flags & 2) !== 0 && parent._isBound()) {\n this._setBoundTo(parent._boundTo);\n }\n}\nvar propagateFromFunction = bindingPropagateFrom;\n\nfunction boundValueFunction() {\n var ret = this._boundTo;\n if (ret !== undefined) {\n if (ret instanceof Promise) {\n if (ret.isFulfilled()) {\n return ret.value();\n } else {\n return undefined;\n }\n }\n }\n return ret;\n}\n\nfunction longStackTracesCaptureStackTrace() {\n this._trace = new CapturedTrace(this._peekContext());\n}\n\nfunction longStackTracesAttachExtraTrace(error, ignoreSelf) {\n if (canAttachTrace(error)) {\n var trace = this._trace;\n if (trace !== undefined) {\n if (ignoreSelf) trace = trace._parent;\n }\n if (trace !== undefined) {\n trace.attachExtraTrace(error);\n } else if (!error.__stackCleaned__) {\n var parsed = parseStackAndMessage(error);\n util.notEnumerableProp(error, \"stack\",\n parsed.message + \"\\n\" + parsed.stack.join(\"\\n\"));\n util.notEnumerableProp(error, \"__stackCleaned__\", true);\n }\n }\n}\n\nfunction longStackTracesDereferenceTrace() {\n this._trace = undefined;\n}\n\nfunction checkForgottenReturns(returnValue, promiseCreated, name, promise,\n parent) {\n if (returnValue === undefined && promiseCreated !== null &&\n wForgottenReturn) {\n if (parent !== undefined && parent._returnedNonUndefined()) return;\n if ((promise._bitField & 65535) === 0) return;\n\n if (name) name = name + \" \";\n var handlerLine = \"\";\n var creatorLine = \"\";\n if (promiseCreated._trace) {\n var traceLines = promiseCreated._trace.stack.split(\"\\n\");\n var stack = cleanStack(traceLines);\n for (var i = stack.length - 1; i >= 0; --i) {\n var line = stack[i];\n if (!nodeFramePattern.test(line)) {\n var lineMatches = line.match(parseLinePattern);\n if (lineMatches) {\n handlerLine = \"at \" + lineMatches[1] +\n \":\" + lineMatches[2] + \":\" + lineMatches[3] + \" \";\n }\n break;\n }\n }\n\n if (stack.length > 0) {\n var firstUserLine = stack[0];\n for (var i = 0; i < traceLines.length; ++i) {\n\n if (traceLines[i] === firstUserLine) {\n if (i > 0) {\n creatorLine = \"\\n\" + traceLines[i - 1];\n }\n break;\n }\n }\n\n }\n }\n var msg = \"a promise was created in a \" + name +\n \"handler \" + handlerLine + \"but was not returned from it, \" +\n \"see http://goo.gl/rRqMUw\" +\n creatorLine;\n promise._warn(msg, true, promiseCreated);\n }\n}\n\nfunction deprecated(name, replacement) {\n var message = name +\n \" is deprecated and will be removed in a future version.\";\n if (replacement) message += \" Use \" + replacement + \" instead.\";\n return warn(message);\n}\n\nfunction warn(message, shouldUseOwnTrace, promise) {\n if (!config.warnings) return;\n var warning = new Warning(message);\n var ctx;\n if (shouldUseOwnTrace) {\n promise._attachExtraTrace(warning);\n } else if (config.longStackTraces && (ctx = Promise._peekContext())) {\n ctx.attachExtraTrace(warning);\n } else {\n var parsed = parseStackAndMessage(warning);\n warning.stack = parsed.message + \"\\n\" + parsed.stack.join(\"\\n\");\n }\n\n if (!activeFireEvent(\"warning\", warning)) {\n formatAndLogError(warning, \"\", true);\n }\n}\n\nfunction reconstructStack(message, stacks) {\n for (var i = 0; i < stacks.length - 1; ++i) {\n stacks[i].push(\"From previous event:\");\n stacks[i] = stacks[i].join(\"\\n\");\n }\n if (i < stacks.length) {\n stacks[i] = stacks[i].join(\"\\n\");\n }\n return message + \"\\n\" + stacks.join(\"\\n\");\n}\n\nfunction removeDuplicateOrEmptyJumps(stacks) {\n for (var i = 0; i < stacks.length; ++i) {\n if (stacks[i].length === 0 ||\n ((i + 1 < stacks.length) && stacks[i][0] === stacks[i+1][0])) {\n stacks.splice(i, 1);\n i--;\n }\n }\n}\n\nfunction removeCommonRoots(stacks) {\n var current = stacks[0];\n for (var i = 1; i < stacks.length; ++i) {\n var prev = stacks[i];\n var currentLastIndex = current.length - 1;\n var currentLastLine = current[currentLastIndex];\n var commonRootMeetPoint = -1;\n\n for (var j = prev.length - 1; j >= 0; --j) {\n if (prev[j] === currentLastLine) {\n commonRootMeetPoint = j;\n break;\n }\n }\n\n for (var j = commonRootMeetPoint; j >= 0; --j) {\n var line = prev[j];\n if (current[currentLastIndex] === line) {\n current.pop();\n currentLastIndex--;\n } else {\n break;\n }\n }\n current = prev;\n }\n}\n\nfunction cleanStack(stack) {\n var ret = [];\n for (var i = 0; i < stack.length; ++i) {\n var line = stack[i];\n var isTraceLine = \" (No stack trace)\" === line ||\n stackFramePattern.test(line);\n var isInternalFrame = isTraceLine && shouldIgnore(line);\n if (isTraceLine && !isInternalFrame) {\n if (indentStackFrames && line.charAt(0) !== \" \") {\n line = \" \" + line;\n }\n ret.push(line);\n }\n }\n return ret;\n}\n\nfunction stackFramesAsArray(error) {\n var stack = error.stack.replace(/\\s+$/g, \"\").split(\"\\n\");\n for (var i = 0; i < stack.length; ++i) {\n var line = stack[i];\n if (\" (No stack trace)\" === line || stackFramePattern.test(line)) {\n break;\n }\n }\n if (i > 0 && error.name != \"SyntaxError\") {\n stack = stack.slice(i);\n }\n return stack;\n}\n\nfunction parseStackAndMessage(error) {\n var stack = error.stack;\n var message = error.toString();\n stack = typeof stack === \"string\" && stack.length > 0\n ? stackFramesAsArray(error) : [\" (No stack trace)\"];\n return {\n message: message,\n stack: error.name == \"SyntaxError\" ? stack : cleanStack(stack)\n };\n}\n\nfunction formatAndLogError(error, title, isSoft) {\n if (typeof console !== \"undefined\") {\n var message;\n if (util.isObject(error)) {\n var stack = error.stack;\n message = title + formatStack(stack, error);\n } else {\n message = title + String(error);\n }\n if (typeof printWarning === \"function\") {\n printWarning(message, isSoft);\n } else if (typeof console.log === \"function\" ||\n typeof console.log === \"object\") {\n console.log(message);\n }\n }\n}\n\nfunction fireRejectionEvent(name, localHandler, reason, promise) {\n var localEventFired = false;\n try {\n if (typeof localHandler === \"function\") {\n localEventFired = true;\n if (name === \"rejectionHandled\") {\n localHandler(promise);\n } else {\n localHandler(reason, promise);\n }\n }\n } catch (e) {\n async.throwLater(e);\n }\n\n if (name === \"unhandledRejection\") {\n if (!activeFireEvent(name, reason, promise) && !localEventFired) {\n formatAndLogError(reason, \"Unhandled rejection \");\n }\n } else {\n activeFireEvent(name, promise);\n }\n}\n\nfunction formatNonError(obj) {\n var str;\n if (typeof obj === \"function\") {\n str = \"[function \" +\n (obj.name || \"anonymous\") +\n \"]\";\n } else {\n str = obj && typeof obj.toString === \"function\"\n ? obj.toString() : util.toString(obj);\n var ruselessToString = /\\[object [a-zA-Z0-9$_]+\\]/;\n if (ruselessToString.test(str)) {\n try {\n var newStr = JSON.stringify(obj);\n str = newStr;\n }\n catch(e) {\n\n }\n }\n if (str.length === 0) {\n str = \"(empty array)\";\n }\n }\n return (\"(<\" + snip(str) + \">, no stack trace)\");\n}\n\nfunction snip(str) {\n var maxChars = 41;\n if (str.length < maxChars) {\n return str;\n }\n return str.substr(0, maxChars - 3) + \"...\";\n}\n\nfunction longStackTracesIsSupported() {\n return typeof captureStackTrace === \"function\";\n}\n\nvar shouldIgnore = function() { return false; };\nvar parseLineInfoRegex = /[\\/<\\(]([^:\\/]+):(\\d+):(?:\\d+)\\)?\\s*$/;\nfunction parseLineInfo(line) {\n var matches = line.match(parseLineInfoRegex);\n if (matches) {\n return {\n fileName: matches[1],\n line: parseInt(matches[2], 10)\n };\n }\n}\n\nfunction setBounds(firstLineError, lastLineError) {\n if (!longStackTracesIsSupported()) return;\n var firstStackLines = (firstLineError.stack || \"\").split(\"\\n\");\n var lastStackLines = (lastLineError.stack || \"\").split(\"\\n\");\n var firstIndex = -1;\n var lastIndex = -1;\n var firstFileName;\n var lastFileName;\n for (var i = 0; i < firstStackLines.length; ++i) {\n var result = parseLineInfo(firstStackLines[i]);\n if (result) {\n firstFileName = result.fileName;\n firstIndex = result.line;\n break;\n }\n }\n for (var i = 0; i < lastStackLines.length; ++i) {\n var result = parseLineInfo(lastStackLines[i]);\n if (result) {\n lastFileName = result.fileName;\n lastIndex = result.line;\n break;\n }\n }\n if (firstIndex < 0 || lastIndex < 0 || !firstFileName || !lastFileName ||\n firstFileName !== lastFileName || firstIndex >= lastIndex) {\n return;\n }\n\n shouldIgnore = function(line) {\n if (bluebirdFramePattern.test(line)) return true;\n var info = parseLineInfo(line);\n if (info) {\n if (info.fileName === firstFileName &&\n (firstIndex <= info.line && info.line <= lastIndex)) {\n return true;\n }\n }\n return false;\n };\n}\n\nfunction CapturedTrace(parent) {\n this._parent = parent;\n this._promisesCreated = 0;\n var length = this._length = 1 + (parent === undefined ? 0 : parent._length);\n captureStackTrace(this, CapturedTrace);\n if (length > 32) this.uncycle();\n}\nutil.inherits(CapturedTrace, Error);\nContext.CapturedTrace = CapturedTrace;\n\nCapturedTrace.prototype.uncycle = function() {\n var length = this._length;\n if (length < 2) return;\n var nodes = [];\n var stackToIndex = {};\n\n for (var i = 0, node = this; node !== undefined; ++i) {\n nodes.push(node);\n node = node._parent;\n }\n length = this._length = i;\n for (var i = length - 1; i >= 0; --i) {\n var stack = nodes[i].stack;\n if (stackToIndex[stack] === undefined) {\n stackToIndex[stack] = i;\n }\n }\n for (var i = 0; i < length; ++i) {\n var currentStack = nodes[i].stack;\n var index = stackToIndex[currentStack];\n if (index !== undefined && index !== i) {\n if (index > 0) {\n nodes[index - 1]._parent = undefined;\n nodes[index - 1]._length = 1;\n }\n nodes[i]._parent = undefined;\n nodes[i]._length = 1;\n var cycleEdgeNode = i > 0 ? nodes[i - 1] : this;\n\n if (index < length - 1) {\n cycleEdgeNode._parent = nodes[index + 1];\n cycleEdgeNode._parent.uncycle();\n cycleEdgeNode._length =\n cycleEdgeNode._parent._length + 1;\n } else {\n cycleEdgeNode._parent = undefined;\n cycleEdgeNode._length = 1;\n }\n var currentChildLength = cycleEdgeNode._length + 1;\n for (var j = i - 2; j >= 0; --j) {\n nodes[j]._length = currentChildLength;\n currentChildLength++;\n }\n return;\n }\n }\n};\n\nCapturedTrace.prototype.attachExtraTrace = function(error) {\n if (error.__stackCleaned__) return;\n this.uncycle();\n var parsed = parseStackAndMessage(error);\n var message = parsed.message;\n var stacks = [parsed.stack];\n\n var trace = this;\n while (trace !== undefined) {\n stacks.push(cleanStack(trace.stack.split(\"\\n\")));\n trace = trace._parent;\n }\n removeCommonRoots(stacks);\n removeDuplicateOrEmptyJumps(stacks);\n util.notEnumerableProp(error, \"stack\", reconstructStack(message, stacks));\n util.notEnumerableProp(error, \"__stackCleaned__\", true);\n};\n\nvar captureStackTrace = (function stackDetection() {\n var v8stackFramePattern = /^\\s*at\\s*/;\n var v8stackFormatter = function(stack, error) {\n if (typeof stack === \"string\") return stack;\n\n if (error.name !== undefined &&\n error.message !== undefined) {\n return error.toString();\n }\n return formatNonError(error);\n };\n\n if (typeof Error.stackTraceLimit === \"number\" &&\n typeof Error.captureStackTrace === \"function\") {\n Error.stackTraceLimit += 6;\n stackFramePattern = v8stackFramePattern;\n formatStack = v8stackFormatter;\n var captureStackTrace = Error.captureStackTrace;\n\n shouldIgnore = function(line) {\n return bluebirdFramePattern.test(line);\n };\n return function(receiver, ignoreUntil) {\n Error.stackTraceLimit += 6;\n captureStackTrace(receiver, ignoreUntil);\n Error.stackTraceLimit -= 6;\n };\n }\n var err = new Error();\n\n if (typeof err.stack === \"string\" &&\n err.stack.split(\"\\n\")[0].indexOf(\"stackDetection@\") >= 0) {\n stackFramePattern = /@/;\n formatStack = v8stackFormatter;\n indentStackFrames = true;\n return function captureStackTrace(o) {\n o.stack = new Error().stack;\n };\n }\n\n var hasStackAfterThrow;\n try { throw new Error(); }\n catch(e) {\n hasStackAfterThrow = (\"stack\" in e);\n }\n if (!(\"stack\" in err) && hasStackAfterThrow &&\n typeof Error.stackTraceLimit === \"number\") {\n stackFramePattern = v8stackFramePattern;\n formatStack = v8stackFormatter;\n return function captureStackTrace(o) {\n Error.stackTraceLimit += 6;\n try { throw new Error(); }\n catch(e) { o.stack = e.stack; }\n Error.stackTraceLimit -= 6;\n };\n }\n\n formatStack = function(stack, error) {\n if (typeof stack === \"string\") return stack;\n\n if ((typeof error === \"object\" ||\n typeof error === \"function\") &&\n error.name !== undefined &&\n error.message !== undefined) {\n return error.toString();\n }\n return formatNonError(error);\n };\n\n return null;\n\n})([]);\n\nif (typeof console !== \"undefined\" && typeof console.warn !== \"undefined\") {\n printWarning = function (message) {\n console.warn(message);\n };\n if (util.isNode && process.stderr.isTTY) {\n printWarning = function(message, isSoft) {\n var color = isSoft ? \"\\u001b[33m\" : \"\\u001b[31m\";\n console.warn(color + message + \"\\u001b[0m\\n\");\n };\n } else if (!util.isNode && typeof (new Error().stack) === \"string\") {\n printWarning = function(message, isSoft) {\n console.warn(\"%c\" + message,\n isSoft ? \"color: darkorange\" : \"color: red\");\n };\n }\n}\n\nvar config = {\n warnings: warnings,\n longStackTraces: false,\n cancellation: false,\n monitoring: false,\n asyncHooks: false\n};\n\nif (longStackTraces) Promise.longStackTraces();\n\nreturn {\n asyncHooks: function() {\n return config.asyncHooks;\n },\n longStackTraces: function() {\n return config.longStackTraces;\n },\n warnings: function() {\n return config.warnings;\n },\n cancellation: function() {\n return config.cancellation;\n },\n monitoring: function() {\n return config.monitoring;\n },\n propagateFromFunction: function() {\n return propagateFromFunction;\n },\n boundValueFunction: function() {\n return boundValueFunction;\n },\n checkForgottenReturns: checkForgottenReturns,\n setBounds: setBounds,\n warn: warn,\n deprecated: deprecated,\n CapturedTrace: CapturedTrace,\n fireDomEvent: fireDomEvent,\n fireGlobalEvent: fireGlobalEvent\n};\n};\n\n},{\"./errors\":12,\"./es5\":13,\"./util\":36}],10:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise) {\nfunction returner() {\n return this.value;\n}\nfunction thrower() {\n throw this.reason;\n}\n\nPromise.prototype[\"return\"] =\nPromise.prototype.thenReturn = function (value) {\n if (value instanceof Promise) value.suppressUnhandledRejections();\n return this._then(\n returner, undefined, undefined, {value: value}, undefined);\n};\n\nPromise.prototype[\"throw\"] =\nPromise.prototype.thenThrow = function (reason) {\n return this._then(\n thrower, undefined, undefined, {reason: reason}, undefined);\n};\n\nPromise.prototype.catchThrow = function (reason) {\n if (arguments.length <= 1) {\n return this._then(\n undefined, thrower, undefined, {reason: reason}, undefined);\n } else {\n var _reason = arguments[1];\n var handler = function() {throw _reason;};\n return this.caught(reason, handler);\n }\n};\n\nPromise.prototype.catchReturn = function (value) {\n if (arguments.length <= 1) {\n if (value instanceof Promise) value.suppressUnhandledRejections();\n return this._then(\n undefined, returner, undefined, {value: value}, undefined);\n } else {\n var _value = arguments[1];\n if (_value instanceof Promise) _value.suppressUnhandledRejections();\n var handler = function() {return _value;};\n return this.caught(value, handler);\n }\n};\n};\n\n},{}],11:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, INTERNAL) {\nvar PromiseReduce = Promise.reduce;\nvar PromiseAll = Promise.all;\n\nfunction promiseAllThis() {\n return PromiseAll(this);\n}\n\nfunction PromiseMapSeries(promises, fn) {\n return PromiseReduce(promises, fn, INTERNAL, INTERNAL);\n}\n\nPromise.prototype.each = function (fn) {\n return PromiseReduce(this, fn, INTERNAL, 0)\n ._then(promiseAllThis, undefined, undefined, this, undefined);\n};\n\nPromise.prototype.mapSeries = function (fn) {\n return PromiseReduce(this, fn, INTERNAL, INTERNAL);\n};\n\nPromise.each = function (promises, fn) {\n return PromiseReduce(promises, fn, INTERNAL, 0)\n ._then(promiseAllThis, undefined, undefined, promises, undefined);\n};\n\nPromise.mapSeries = PromiseMapSeries;\n};\n\n\n},{}],12:[function(_dereq_,module,exports){\n\"use strict\";\nvar es5 = _dereq_(\"./es5\");\nvar Objectfreeze = es5.freeze;\nvar util = _dereq_(\"./util\");\nvar inherits = util.inherits;\nvar notEnumerableProp = util.notEnumerableProp;\n\nfunction subError(nameProperty, defaultMessage) {\n function SubError(message) {\n if (!(this instanceof SubError)) return new SubError(message);\n notEnumerableProp(this, \"message\",\n typeof message === \"string\" ? message : defaultMessage);\n notEnumerableProp(this, \"name\", nameProperty);\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n } else {\n Error.call(this);\n }\n }\n inherits(SubError, Error);\n return SubError;\n}\n\nvar _TypeError, _RangeError;\nvar Warning = subError(\"Warning\", \"warning\");\nvar CancellationError = subError(\"CancellationError\", \"cancellation error\");\nvar TimeoutError = subError(\"TimeoutError\", \"timeout error\");\nvar AggregateError = subError(\"AggregateError\", \"aggregate error\");\ntry {\n _TypeError = TypeError;\n _RangeError = RangeError;\n} catch(e) {\n _TypeError = subError(\"TypeError\", \"type error\");\n _RangeError = subError(\"RangeError\", \"range error\");\n}\n\nvar methods = (\"join pop push shift unshift slice filter forEach some \" +\n \"every map indexOf lastIndexOf reduce reduceRight sort reverse\").split(\" \");\n\nfor (var i = 0; i < methods.length; ++i) {\n if (typeof Array.prototype[methods[i]] === \"function\") {\n AggregateError.prototype[methods[i]] = Array.prototype[methods[i]];\n }\n}\n\nes5.defineProperty(AggregateError.prototype, \"length\", {\n value: 0,\n configurable: false,\n writable: true,\n enumerable: true\n});\nAggregateError.prototype[\"isOperational\"] = true;\nvar level = 0;\nAggregateError.prototype.toString = function() {\n var indent = Array(level * 4 + 1).join(\" \");\n var ret = \"\\n\" + indent + \"AggregateError of:\" + \"\\n\";\n level++;\n indent = Array(level * 4 + 1).join(\" \");\n for (var i = 0; i < this.length; ++i) {\n var str = this[i] === this ? \"[Circular AggregateError]\" : this[i] + \"\";\n var lines = str.split(\"\\n\");\n for (var j = 0; j < lines.length; ++j) {\n lines[j] = indent + lines[j];\n }\n str = lines.join(\"\\n\");\n ret += str + \"\\n\";\n }\n level--;\n return ret;\n};\n\nfunction OperationalError(message) {\n if (!(this instanceof OperationalError))\n return new OperationalError(message);\n notEnumerableProp(this, \"name\", \"OperationalError\");\n notEnumerableProp(this, \"message\", message);\n this.cause = message;\n this[\"isOperational\"] = true;\n\n if (message instanceof Error) {\n notEnumerableProp(this, \"message\", message.message);\n notEnumerableProp(this, \"stack\", message.stack);\n } else if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n }\n\n}\ninherits(OperationalError, Error);\n\nvar errorTypes = Error[\"__BluebirdErrorTypes__\"];\nif (!errorTypes) {\n errorTypes = Objectfreeze({\n CancellationError: CancellationError,\n TimeoutError: TimeoutError,\n OperationalError: OperationalError,\n RejectionError: OperationalError,\n AggregateError: AggregateError\n });\n es5.defineProperty(Error, \"__BluebirdErrorTypes__\", {\n value: errorTypes,\n writable: false,\n enumerable: false,\n configurable: false\n });\n}\n\nmodule.exports = {\n Error: Error,\n TypeError: _TypeError,\n RangeError: _RangeError,\n CancellationError: errorTypes.CancellationError,\n OperationalError: errorTypes.OperationalError,\n TimeoutError: errorTypes.TimeoutError,\n AggregateError: errorTypes.AggregateError,\n Warning: Warning\n};\n\n},{\"./es5\":13,\"./util\":36}],13:[function(_dereq_,module,exports){\nvar isES5 = (function(){\n \"use strict\";\n return this === undefined;\n})();\n\nif (isES5) {\n module.exports = {\n freeze: Object.freeze,\n defineProperty: Object.defineProperty,\n getDescriptor: Object.getOwnPropertyDescriptor,\n keys: Object.keys,\n names: Object.getOwnPropertyNames,\n getPrototypeOf: Object.getPrototypeOf,\n isArray: Array.isArray,\n isES5: isES5,\n propertyIsWritable: function(obj, prop) {\n var descriptor = Object.getOwnPropertyDescriptor(obj, prop);\n return !!(!descriptor || descriptor.writable || descriptor.set);\n }\n };\n} else {\n var has = {}.hasOwnProperty;\n var str = {}.toString;\n var proto = {}.constructor.prototype;\n\n var ObjectKeys = function (o) {\n var ret = [];\n for (var key in o) {\n if (has.call(o, key)) {\n ret.push(key);\n }\n }\n return ret;\n };\n\n var ObjectGetDescriptor = function(o, key) {\n return {value: o[key]};\n };\n\n var ObjectDefineProperty = function (o, key, desc) {\n o[key] = desc.value;\n return o;\n };\n\n var ObjectFreeze = function (obj) {\n return obj;\n };\n\n var ObjectGetPrototypeOf = function (obj) {\n try {\n return Object(obj).constructor.prototype;\n }\n catch (e) {\n return proto;\n }\n };\n\n var ArrayIsArray = function (obj) {\n try {\n return str.call(obj) === \"[object Array]\";\n }\n catch(e) {\n return false;\n }\n };\n\n module.exports = {\n isArray: ArrayIsArray,\n keys: ObjectKeys,\n names: ObjectKeys,\n defineProperty: ObjectDefineProperty,\n getDescriptor: ObjectGetDescriptor,\n freeze: ObjectFreeze,\n getPrototypeOf: ObjectGetPrototypeOf,\n isES5: isES5,\n propertyIsWritable: function() {\n return true;\n }\n };\n}\n\n},{}],14:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, INTERNAL) {\nvar PromiseMap = Promise.map;\n\nPromise.prototype.filter = function (fn, options) {\n return PromiseMap(this, fn, options, INTERNAL);\n};\n\nPromise.filter = function (promises, fn, options) {\n return PromiseMap(promises, fn, options, INTERNAL);\n};\n};\n\n},{}],15:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, tryConvertToPromise, NEXT_FILTER) {\nvar util = _dereq_(\"./util\");\nvar CancellationError = Promise.CancellationError;\nvar errorObj = util.errorObj;\nvar catchFilter = _dereq_(\"./catch_filter\")(NEXT_FILTER);\n\nfunction PassThroughHandlerContext(promise, type, handler) {\n this.promise = promise;\n this.type = type;\n this.handler = handler;\n this.called = false;\n this.cancelPromise = null;\n}\n\nPassThroughHandlerContext.prototype.isFinallyHandler = function() {\n return this.type === 0;\n};\n\nfunction FinallyHandlerCancelReaction(finallyHandler) {\n this.finallyHandler = finallyHandler;\n}\n\nFinallyHandlerCancelReaction.prototype._resultCancelled = function() {\n checkCancel(this.finallyHandler);\n};\n\nfunction checkCancel(ctx, reason) {\n if (ctx.cancelPromise != null) {\n if (arguments.length > 1) {\n ctx.cancelPromise._reject(reason);\n } else {\n ctx.cancelPromise._cancel();\n }\n ctx.cancelPromise = null;\n return true;\n }\n return false;\n}\n\nfunction succeed() {\n return finallyHandler.call(this, this.promise._target()._settledValue());\n}\nfunction fail(reason) {\n if (checkCancel(this, reason)) return;\n errorObj.e = reason;\n return errorObj;\n}\nfunction finallyHandler(reasonOrValue) {\n var promise = this.promise;\n var handler = this.handler;\n\n if (!this.called) {\n this.called = true;\n var ret = this.isFinallyHandler()\n ? handler.call(promise._boundValue())\n : handler.call(promise._boundValue(), reasonOrValue);\n if (ret === NEXT_FILTER) {\n return ret;\n } else if (ret !== undefined) {\n promise._setReturnedNonUndefined();\n var maybePromise = tryConvertToPromise(ret, promise);\n if (maybePromise instanceof Promise) {\n if (this.cancelPromise != null) {\n if (maybePromise._isCancelled()) {\n var reason =\n new CancellationError(\"late cancellation observer\");\n promise._attachExtraTrace(reason);\n errorObj.e = reason;\n return errorObj;\n } else if (maybePromise.isPending()) {\n maybePromise._attachCancellationCallback(\n new FinallyHandlerCancelReaction(this));\n }\n }\n return maybePromise._then(\n succeed, fail, undefined, this, undefined);\n }\n }\n }\n\n if (promise.isRejected()) {\n checkCancel(this);\n errorObj.e = reasonOrValue;\n return errorObj;\n } else {\n checkCancel(this);\n return reasonOrValue;\n }\n}\n\nPromise.prototype._passThrough = function(handler, type, success, fail) {\n if (typeof handler !== \"function\") return this.then();\n return this._then(success,\n fail,\n undefined,\n new PassThroughHandlerContext(this, type, handler),\n undefined);\n};\n\nPromise.prototype.lastly =\nPromise.prototype[\"finally\"] = function (handler) {\n return this._passThrough(handler,\n 0,\n finallyHandler,\n finallyHandler);\n};\n\n\nPromise.prototype.tap = function (handler) {\n return this._passThrough(handler, 1, finallyHandler);\n};\n\nPromise.prototype.tapCatch = function (handlerOrPredicate) {\n var len = arguments.length;\n if(len === 1) {\n return this._passThrough(handlerOrPredicate,\n 1,\n undefined,\n finallyHandler);\n } else {\n var catchInstances = new Array(len - 1),\n j = 0, i;\n for (i = 0; i < len - 1; ++i) {\n var item = arguments[i];\n if (util.isObject(item)) {\n catchInstances[j++] = item;\n } else {\n return Promise.reject(new TypeError(\n \"tapCatch statement predicate: \"\n + \"expecting an object but got \" + util.classString(item)\n ));\n }\n }\n catchInstances.length = j;\n var handler = arguments[i];\n return this._passThrough(catchFilter(catchInstances, handler, this),\n 1,\n undefined,\n finallyHandler);\n }\n\n};\n\nreturn PassThroughHandlerContext;\n};\n\n},{\"./catch_filter\":7,\"./util\":36}],16:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise,\n apiRejection,\n INTERNAL,\n tryConvertToPromise,\n Proxyable,\n debug) {\nvar errors = _dereq_(\"./errors\");\nvar TypeError = errors.TypeError;\nvar util = _dereq_(\"./util\");\nvar errorObj = util.errorObj;\nvar tryCatch = util.tryCatch;\nvar yieldHandlers = [];\n\nfunction promiseFromYieldHandler(value, yieldHandlers, traceParent) {\n for (var i = 0; i < yieldHandlers.length; ++i) {\n traceParent._pushContext();\n var result = tryCatch(yieldHandlers[i])(value);\n traceParent._popContext();\n if (result === errorObj) {\n traceParent._pushContext();\n var ret = Promise.reject(errorObj.e);\n traceParent._popContext();\n return ret;\n }\n var maybePromise = tryConvertToPromise(result, traceParent);\n if (maybePromise instanceof Promise) return maybePromise;\n }\n return null;\n}\n\nfunction PromiseSpawn(generatorFunction, receiver, yieldHandler, stack) {\n if (debug.cancellation()) {\n var internal = new Promise(INTERNAL);\n var _finallyPromise = this._finallyPromise = new Promise(INTERNAL);\n this._promise = internal.lastly(function() {\n return _finallyPromise;\n });\n internal._captureStackTrace();\n internal._setOnCancel(this);\n } else {\n var promise = this._promise = new Promise(INTERNAL);\n promise._captureStackTrace();\n }\n this._stack = stack;\n this._generatorFunction = generatorFunction;\n this._receiver = receiver;\n this._generator = undefined;\n this._yieldHandlers = typeof yieldHandler === \"function\"\n ? [yieldHandler].concat(yieldHandlers)\n : yieldHandlers;\n this._yieldedPromise = null;\n this._cancellationPhase = false;\n}\nutil.inherits(PromiseSpawn, Proxyable);\n\nPromiseSpawn.prototype._isResolved = function() {\n return this._promise === null;\n};\n\nPromiseSpawn.prototype._cleanup = function() {\n this._promise = this._generator = null;\n if (debug.cancellation() && this._finallyPromise !== null) {\n this._finallyPromise._fulfill();\n this._finallyPromise = null;\n }\n};\n\nPromiseSpawn.prototype._promiseCancelled = function() {\n if (this._isResolved()) return;\n var implementsReturn = typeof this._generator[\"return\"] !== \"undefined\";\n\n var result;\n if (!implementsReturn) {\n var reason = new Promise.CancellationError(\n \"generator .return() sentinel\");\n Promise.coroutine.returnSentinel = reason;\n this._promise._attachExtraTrace(reason);\n this._promise._pushContext();\n result = tryCatch(this._generator[\"throw\"]).call(this._generator,\n reason);\n this._promise._popContext();\n } else {\n this._promise._pushContext();\n result = tryCatch(this._generator[\"return\"]).call(this._generator,\n undefined);\n this._promise._popContext();\n }\n this._cancellationPhase = true;\n this._yieldedPromise = null;\n this._continue(result);\n};\n\nPromiseSpawn.prototype._promiseFulfilled = function(value) {\n this._yieldedPromise = null;\n this._promise._pushContext();\n var result = tryCatch(this._generator.next).call(this._generator, value);\n this._promise._popContext();\n this._continue(result);\n};\n\nPromiseSpawn.prototype._promiseRejected = function(reason) {\n this._yieldedPromise = null;\n this._promise._attachExtraTrace(reason);\n this._promise._pushContext();\n var result = tryCatch(this._generator[\"throw\"])\n .call(this._generator, reason);\n this._promise._popContext();\n this._continue(result);\n};\n\nPromiseSpawn.prototype._resultCancelled = function() {\n if (this._yieldedPromise instanceof Promise) {\n var promise = this._yieldedPromise;\n this._yieldedPromise = null;\n promise.cancel();\n }\n};\n\nPromiseSpawn.prototype.promise = function () {\n return this._promise;\n};\n\nPromiseSpawn.prototype._run = function () {\n this._generator = this._generatorFunction.call(this._receiver);\n this._receiver =\n this._generatorFunction = undefined;\n this._promiseFulfilled(undefined);\n};\n\nPromiseSpawn.prototype._continue = function (result) {\n var promise = this._promise;\n if (result === errorObj) {\n this._cleanup();\n if (this._cancellationPhase) {\n return promise.cancel();\n } else {\n return promise._rejectCallback(result.e, false);\n }\n }\n\n var value = result.value;\n if (result.done === true) {\n this._cleanup();\n if (this._cancellationPhase) {\n return promise.cancel();\n } else {\n return promise._resolveCallback(value);\n }\n } else {\n var maybePromise = tryConvertToPromise(value, this._promise);\n if (!(maybePromise instanceof Promise)) {\n maybePromise =\n promiseFromYieldHandler(maybePromise,\n this._yieldHandlers,\n this._promise);\n if (maybePromise === null) {\n this._promiseRejected(\n new TypeError(\n \"A value %s was yielded that could not be treated as a promise\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\\u000a\".replace(\"%s\", String(value)) +\n \"From coroutine:\\u000a\" +\n this._stack.split(\"\\n\").slice(1, -7).join(\"\\n\")\n )\n );\n return;\n }\n }\n maybePromise = maybePromise._target();\n var bitField = maybePromise._bitField;\n ;\n if (((bitField & 50397184) === 0)) {\n this._yieldedPromise = maybePromise;\n maybePromise._proxy(this, null);\n } else if (((bitField & 33554432) !== 0)) {\n Promise._async.invoke(\n this._promiseFulfilled, this, maybePromise._value()\n );\n } else if (((bitField & 16777216) !== 0)) {\n Promise._async.invoke(\n this._promiseRejected, this, maybePromise._reason()\n );\n } else {\n this._promiseCancelled();\n }\n }\n};\n\nPromise.coroutine = function (generatorFunction, options) {\n if (typeof generatorFunction !== \"function\") {\n throw new TypeError(\"generatorFunction must be a function\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n var yieldHandler = Object(options).yieldHandler;\n var PromiseSpawn$ = PromiseSpawn;\n var stack = new Error().stack;\n return function () {\n var generator = generatorFunction.apply(this, arguments);\n var spawn = new PromiseSpawn$(undefined, undefined, yieldHandler,\n stack);\n var ret = spawn.promise();\n spawn._generator = generator;\n spawn._promiseFulfilled(undefined);\n return ret;\n };\n};\n\nPromise.coroutine.addYieldHandler = function(fn) {\n if (typeof fn !== \"function\") {\n throw new TypeError(\"expecting a function but got \" + util.classString(fn));\n }\n yieldHandlers.push(fn);\n};\n\nPromise.spawn = function (generatorFunction) {\n debug.deprecated(\"Promise.spawn()\", \"Promise.coroutine()\");\n if (typeof generatorFunction !== \"function\") {\n return apiRejection(\"generatorFunction must be a function\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n var spawn = new PromiseSpawn(generatorFunction, this);\n var ret = spawn.promise();\n spawn._run(Promise.spawn);\n return ret;\n};\n};\n\n},{\"./errors\":12,\"./util\":36}],17:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports =\nfunction(Promise, PromiseArray, tryConvertToPromise, INTERNAL, async) {\nvar util = _dereq_(\"./util\");\nvar canEvaluate = util.canEvaluate;\nvar tryCatch = util.tryCatch;\nvar errorObj = util.errorObj;\nvar reject;\n\nif (!true) {\nif (canEvaluate) {\n var thenCallback = function(i) {\n return new Function(\"value\", \"holder\", \" \\n\\\n 'use strict'; \\n\\\n holder.pIndex = value; \\n\\\n holder.checkFulfillment(this); \\n\\\n \".replace(/Index/g, i));\n };\n\n var promiseSetter = function(i) {\n return new Function(\"promise\", \"holder\", \" \\n\\\n 'use strict'; \\n\\\n holder.pIndex = promise; \\n\\\n \".replace(/Index/g, i));\n };\n\n var generateHolderClass = function(total) {\n var props = new Array(total);\n for (var i = 0; i < props.length; ++i) {\n props[i] = \"this.p\" + (i+1);\n }\n var assignment = props.join(\" = \") + \" = null;\";\n var cancellationCode= \"var promise;\\n\" + props.map(function(prop) {\n return \" \\n\\\n promise = \" + prop + \"; \\n\\\n if (promise instanceof Promise) { \\n\\\n promise.cancel(); \\n\\\n } \\n\\\n \";\n }).join(\"\\n\");\n var passedArguments = props.join(\", \");\n var name = \"Holder$\" + total;\n\n\n var code = \"return function(tryCatch, errorObj, Promise, async) { \\n\\\n 'use strict'; \\n\\\n function [TheName](fn) { \\n\\\n [TheProperties] \\n\\\n this.fn = fn; \\n\\\n this.asyncNeeded = true; \\n\\\n this.now = 0; \\n\\\n } \\n\\\n \\n\\\n [TheName].prototype._callFunction = function(promise) { \\n\\\n promise._pushContext(); \\n\\\n var ret = tryCatch(this.fn)([ThePassedArguments]); \\n\\\n promise._popContext(); \\n\\\n if (ret === errorObj) { \\n\\\n promise._rejectCallback(ret.e, false); \\n\\\n } else { \\n\\\n promise._resolveCallback(ret); \\n\\\n } \\n\\\n }; \\n\\\n \\n\\\n [TheName].prototype.checkFulfillment = function(promise) { \\n\\\n var now = ++this.now; \\n\\\n if (now === [TheTotal]) { \\n\\\n if (this.asyncNeeded) { \\n\\\n async.invoke(this._callFunction, this, promise); \\n\\\n } else { \\n\\\n this._callFunction(promise); \\n\\\n } \\n\\\n \\n\\\n } \\n\\\n }; \\n\\\n \\n\\\n [TheName].prototype._resultCancelled = function() { \\n\\\n [CancellationCode] \\n\\\n }; \\n\\\n \\n\\\n return [TheName]; \\n\\\n }(tryCatch, errorObj, Promise, async); \\n\\\n \";\n\n code = code.replace(/\\[TheName\\]/g, name)\n .replace(/\\[TheTotal\\]/g, total)\n .replace(/\\[ThePassedArguments\\]/g, passedArguments)\n .replace(/\\[TheProperties\\]/g, assignment)\n .replace(/\\[CancellationCode\\]/g, cancellationCode);\n\n return new Function(\"tryCatch\", \"errorObj\", \"Promise\", \"async\", code)\n (tryCatch, errorObj, Promise, async);\n };\n\n var holderClasses = [];\n var thenCallbacks = [];\n var promiseSetters = [];\n\n for (var i = 0; i < 8; ++i) {\n holderClasses.push(generateHolderClass(i + 1));\n thenCallbacks.push(thenCallback(i + 1));\n promiseSetters.push(promiseSetter(i + 1));\n }\n\n reject = function (reason) {\n this._reject(reason);\n };\n}}\n\nPromise.join = function () {\n var last = arguments.length - 1;\n var fn;\n if (last > 0 && typeof arguments[last] === \"function\") {\n fn = arguments[last];\n if (!true) {\n if (last <= 8 && canEvaluate) {\n var ret = new Promise(INTERNAL);\n ret._captureStackTrace();\n var HolderClass = holderClasses[last - 1];\n var holder = new HolderClass(fn);\n var callbacks = thenCallbacks;\n\n for (var i = 0; i < last; ++i) {\n var maybePromise = tryConvertToPromise(arguments[i], ret);\n if (maybePromise instanceof Promise) {\n maybePromise = maybePromise._target();\n var bitField = maybePromise._bitField;\n ;\n if (((bitField & 50397184) === 0)) {\n maybePromise._then(callbacks[i], reject,\n undefined, ret, holder);\n promiseSetters[i](maybePromise, holder);\n holder.asyncNeeded = false;\n } else if (((bitField & 33554432) !== 0)) {\n callbacks[i].call(ret,\n maybePromise._value(), holder);\n } else if (((bitField & 16777216) !== 0)) {\n ret._reject(maybePromise._reason());\n } else {\n ret._cancel();\n }\n } else {\n callbacks[i].call(ret, maybePromise, holder);\n }\n }\n\n if (!ret._isFateSealed()) {\n if (holder.asyncNeeded) {\n var context = Promise._getContext();\n holder.fn = util.contextBind(context, holder.fn);\n }\n ret._setAsyncGuaranteed();\n ret._setOnCancel(holder);\n }\n return ret;\n }\n }\n }\n var args = [].slice.call(arguments);;\n if (fn) args.pop();\n var ret = new PromiseArray(args).promise();\n return fn !== undefined ? ret.spread(fn) : ret;\n};\n\n};\n\n},{\"./util\":36}],18:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise,\n PromiseArray,\n apiRejection,\n tryConvertToPromise,\n INTERNAL,\n debug) {\nvar util = _dereq_(\"./util\");\nvar tryCatch = util.tryCatch;\nvar errorObj = util.errorObj;\nvar async = Promise._async;\n\nfunction MappingPromiseArray(promises, fn, limit, _filter) {\n this.constructor$(promises);\n this._promise._captureStackTrace();\n var context = Promise._getContext();\n this._callback = util.contextBind(context, fn);\n this._preservedValues = _filter === INTERNAL\n ? new Array(this.length())\n : null;\n this._limit = limit;\n this._inFlight = 0;\n this._queue = [];\n async.invoke(this._asyncInit, this, undefined);\n if (util.isArray(promises)) {\n for (var i = 0; i < promises.length; ++i) {\n var maybePromise = promises[i];\n if (maybePromise instanceof Promise) {\n maybePromise.suppressUnhandledRejections();\n }\n }\n }\n}\nutil.inherits(MappingPromiseArray, PromiseArray);\n\nMappingPromiseArray.prototype._asyncInit = function() {\n this._init$(undefined, -2);\n};\n\nMappingPromiseArray.prototype._init = function () {};\n\nMappingPromiseArray.prototype._promiseFulfilled = function (value, index) {\n var values = this._values;\n var length = this.length();\n var preservedValues = this._preservedValues;\n var limit = this._limit;\n\n if (index < 0) {\n index = (index * -1) - 1;\n values[index] = value;\n if (limit >= 1) {\n this._inFlight--;\n this._drainQueue();\n if (this._isResolved()) return true;\n }\n } else {\n if (limit >= 1 && this._inFlight >= limit) {\n values[index] = value;\n this._queue.push(index);\n return false;\n }\n if (preservedValues !== null) preservedValues[index] = value;\n\n var promise = this._promise;\n var callback = this._callback;\n var receiver = promise._boundValue();\n promise._pushContext();\n var ret = tryCatch(callback).call(receiver, value, index, length);\n var promiseCreated = promise._popContext();\n debug.checkForgottenReturns(\n ret,\n promiseCreated,\n preservedValues !== null ? \"Promise.filter\" : \"Promise.map\",\n promise\n );\n if (ret === errorObj) {\n this._reject(ret.e);\n return true;\n }\n\n var maybePromise = tryConvertToPromise(ret, this._promise);\n if (maybePromise instanceof Promise) {\n maybePromise = maybePromise._target();\n var bitField = maybePromise._bitField;\n ;\n if (((bitField & 50397184) === 0)) {\n if (limit >= 1) this._inFlight++;\n values[index] = maybePromise;\n maybePromise._proxy(this, (index + 1) * -1);\n return false;\n } else if (((bitField & 33554432) !== 0)) {\n ret = maybePromise._value();\n } else if (((bitField & 16777216) !== 0)) {\n this._reject(maybePromise._reason());\n return true;\n } else {\n this._cancel();\n return true;\n }\n }\n values[index] = ret;\n }\n var totalResolved = ++this._totalResolved;\n if (totalResolved >= length) {\n if (preservedValues !== null) {\n this._filter(values, preservedValues);\n } else {\n this._resolve(values);\n }\n return true;\n }\n return false;\n};\n\nMappingPromiseArray.prototype._drainQueue = function () {\n var queue = this._queue;\n var limit = this._limit;\n var values = this._values;\n while (queue.length > 0 && this._inFlight < limit) {\n if (this._isResolved()) return;\n var index = queue.pop();\n this._promiseFulfilled(values[index], index);\n }\n};\n\nMappingPromiseArray.prototype._filter = function (booleans, values) {\n var len = values.length;\n var ret = new Array(len);\n var j = 0;\n for (var i = 0; i < len; ++i) {\n if (booleans[i]) ret[j++] = values[i];\n }\n ret.length = j;\n this._resolve(ret);\n};\n\nMappingPromiseArray.prototype.preservedValues = function () {\n return this._preservedValues;\n};\n\nfunction map(promises, fn, options, _filter) {\n if (typeof fn !== \"function\") {\n return apiRejection(\"expecting a function but got \" + util.classString(fn));\n }\n\n var limit = 0;\n if (options !== undefined) {\n if (typeof options === \"object\" && options !== null) {\n if (typeof options.concurrency !== \"number\") {\n return Promise.reject(\n new TypeError(\"'concurrency' must be a number but it is \" +\n util.classString(options.concurrency)));\n }\n limit = options.concurrency;\n } else {\n return Promise.reject(new TypeError(\n \"options argument must be an object but it is \" +\n util.classString(options)));\n }\n }\n limit = typeof limit === \"number\" &&\n isFinite(limit) && limit >= 1 ? limit : 0;\n return new MappingPromiseArray(promises, fn, limit, _filter).promise();\n}\n\nPromise.prototype.map = function (fn, options) {\n return map(this, fn, options, null);\n};\n\nPromise.map = function (promises, fn, options, _filter) {\n return map(promises, fn, options, _filter);\n};\n\n\n};\n\n},{\"./util\":36}],19:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports =\nfunction(Promise, INTERNAL, tryConvertToPromise, apiRejection, debug) {\nvar util = _dereq_(\"./util\");\nvar tryCatch = util.tryCatch;\n\nPromise.method = function (fn) {\n if (typeof fn !== \"function\") {\n throw new Promise.TypeError(\"expecting a function but got \" + util.classString(fn));\n }\n return function () {\n var ret = new Promise(INTERNAL);\n ret._captureStackTrace();\n ret._pushContext();\n var value = tryCatch(fn).apply(this, arguments);\n var promiseCreated = ret._popContext();\n debug.checkForgottenReturns(\n value, promiseCreated, \"Promise.method\", ret);\n ret._resolveFromSyncValue(value);\n return ret;\n };\n};\n\nPromise.attempt = Promise[\"try\"] = function (fn) {\n if (typeof fn !== \"function\") {\n return apiRejection(\"expecting a function but got \" + util.classString(fn));\n }\n var ret = new Promise(INTERNAL);\n ret._captureStackTrace();\n ret._pushContext();\n var value;\n if (arguments.length > 1) {\n debug.deprecated(\"calling Promise.try with more than 1 argument\");\n var arg = arguments[1];\n var ctx = arguments[2];\n value = util.isArray(arg) ? tryCatch(fn).apply(ctx, arg)\n : tryCatch(fn).call(ctx, arg);\n } else {\n value = tryCatch(fn)();\n }\n var promiseCreated = ret._popContext();\n debug.checkForgottenReturns(\n value, promiseCreated, \"Promise.try\", ret);\n ret._resolveFromSyncValue(value);\n return ret;\n};\n\nPromise.prototype._resolveFromSyncValue = function (value) {\n if (value === util.errorObj) {\n this._rejectCallback(value.e, false);\n } else {\n this._resolveCallback(value, true);\n }\n};\n};\n\n},{\"./util\":36}],20:[function(_dereq_,module,exports){\n\"use strict\";\nvar util = _dereq_(\"./util\");\nvar maybeWrapAsError = util.maybeWrapAsError;\nvar errors = _dereq_(\"./errors\");\nvar OperationalError = errors.OperationalError;\nvar es5 = _dereq_(\"./es5\");\n\nfunction isUntypedError(obj) {\n return obj instanceof Error &&\n es5.getPrototypeOf(obj) === Error.prototype;\n}\n\nvar rErrorKey = /^(?:name|message|stack|cause)$/;\nfunction wrapAsOperationalError(obj) {\n var ret;\n if (isUntypedError(obj)) {\n ret = new OperationalError(obj);\n ret.name = obj.name;\n ret.message = obj.message;\n ret.stack = obj.stack;\n var keys = es5.keys(obj);\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n if (!rErrorKey.test(key)) {\n ret[key] = obj[key];\n }\n }\n return ret;\n }\n util.markAsOriginatingFromRejection(obj);\n return obj;\n}\n\nfunction nodebackForPromise(promise, multiArgs) {\n return function(err, value) {\n if (promise === null) return;\n if (err) {\n var wrapped = wrapAsOperationalError(maybeWrapAsError(err));\n promise._attachExtraTrace(wrapped);\n promise._reject(wrapped);\n } else if (!multiArgs) {\n promise._fulfill(value);\n } else {\n var args = [].slice.call(arguments, 1);;\n promise._fulfill(args);\n }\n promise = null;\n };\n}\n\nmodule.exports = nodebackForPromise;\n\n},{\"./errors\":12,\"./es5\":13,\"./util\":36}],21:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise) {\nvar util = _dereq_(\"./util\");\nvar async = Promise._async;\nvar tryCatch = util.tryCatch;\nvar errorObj = util.errorObj;\n\nfunction spreadAdapter(val, nodeback) {\n var promise = this;\n if (!util.isArray(val)) return successAdapter.call(promise, val, nodeback);\n var ret =\n tryCatch(nodeback).apply(promise._boundValue(), [null].concat(val));\n if (ret === errorObj) {\n async.throwLater(ret.e);\n }\n}\n\nfunction successAdapter(val, nodeback) {\n var promise = this;\n var receiver = promise._boundValue();\n var ret = val === undefined\n ? tryCatch(nodeback).call(receiver, null)\n : tryCatch(nodeback).call(receiver, null, val);\n if (ret === errorObj) {\n async.throwLater(ret.e);\n }\n}\nfunction errorAdapter(reason, nodeback) {\n var promise = this;\n if (!reason) {\n var newReason = new Error(reason + \"\");\n newReason.cause = reason;\n reason = newReason;\n }\n var ret = tryCatch(nodeback).call(promise._boundValue(), reason);\n if (ret === errorObj) {\n async.throwLater(ret.e);\n }\n}\n\nPromise.prototype.asCallback = Promise.prototype.nodeify = function (nodeback,\n options) {\n if (typeof nodeback == \"function\") {\n var adapter = successAdapter;\n if (options !== undefined && Object(options).spread) {\n adapter = spreadAdapter;\n }\n this._then(\n adapter,\n errorAdapter,\n undefined,\n this,\n nodeback\n );\n }\n return this;\n};\n};\n\n},{\"./util\":36}],22:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function() {\nvar makeSelfResolutionError = function () {\n return new TypeError(\"circular promise resolution chain\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n};\nvar reflectHandler = function() {\n return new Promise.PromiseInspection(this._target());\n};\nvar apiRejection = function(msg) {\n return Promise.reject(new TypeError(msg));\n};\nfunction Proxyable() {}\nvar UNDEFINED_BINDING = {};\nvar util = _dereq_(\"./util\");\nutil.setReflectHandler(reflectHandler);\n\nvar getDomain = function() {\n var domain = process.domain;\n if (domain === undefined) {\n return null;\n }\n return domain;\n};\nvar getContextDefault = function() {\n return null;\n};\nvar getContextDomain = function() {\n return {\n domain: getDomain(),\n async: null\n };\n};\nvar AsyncResource = util.isNode && util.nodeSupportsAsyncResource ?\n _dereq_(\"async_hooks\").AsyncResource : null;\nvar getContextAsyncHooks = function() {\n return {\n domain: getDomain(),\n async: new AsyncResource(\"Bluebird::Promise\")\n };\n};\nvar getContext = util.isNode ? getContextDomain : getContextDefault;\nutil.notEnumerableProp(Promise, \"_getContext\", getContext);\nvar enableAsyncHooks = function() {\n getContext = getContextAsyncHooks;\n util.notEnumerableProp(Promise, \"_getContext\", getContextAsyncHooks);\n};\nvar disableAsyncHooks = function() {\n getContext = getContextDomain;\n util.notEnumerableProp(Promise, \"_getContext\", getContextDomain);\n};\n\nvar es5 = _dereq_(\"./es5\");\nvar Async = _dereq_(\"./async\");\nvar async = new Async();\nes5.defineProperty(Promise, \"_async\", {value: async});\nvar errors = _dereq_(\"./errors\");\nvar TypeError = Promise.TypeError = errors.TypeError;\nPromise.RangeError = errors.RangeError;\nvar CancellationError = Promise.CancellationError = errors.CancellationError;\nPromise.TimeoutError = errors.TimeoutError;\nPromise.OperationalError = errors.OperationalError;\nPromise.RejectionError = errors.OperationalError;\nPromise.AggregateError = errors.AggregateError;\nvar INTERNAL = function(){};\nvar APPLY = {};\nvar NEXT_FILTER = {};\nvar tryConvertToPromise = _dereq_(\"./thenables\")(Promise, INTERNAL);\nvar PromiseArray =\n _dereq_(\"./promise_array\")(Promise, INTERNAL,\n tryConvertToPromise, apiRejection, Proxyable);\nvar Context = _dereq_(\"./context\")(Promise);\n /*jshint unused:false*/\nvar createContext = Context.create;\n\nvar debug = _dereq_(\"./debuggability\")(Promise, Context,\n enableAsyncHooks, disableAsyncHooks);\nvar CapturedTrace = debug.CapturedTrace;\nvar PassThroughHandlerContext =\n _dereq_(\"./finally\")(Promise, tryConvertToPromise, NEXT_FILTER);\nvar catchFilter = _dereq_(\"./catch_filter\")(NEXT_FILTER);\nvar nodebackForPromise = _dereq_(\"./nodeback\");\nvar errorObj = util.errorObj;\nvar tryCatch = util.tryCatch;\nfunction check(self, executor) {\n if (self == null || self.constructor !== Promise) {\n throw new TypeError(\"the promise constructor cannot be invoked directly\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n if (typeof executor !== \"function\") {\n throw new TypeError(\"expecting a function but got \" + util.classString(executor));\n }\n\n}\n\nfunction Promise(executor) {\n if (executor !== INTERNAL) {\n check(this, executor);\n }\n this._bitField = 0;\n this._fulfillmentHandler0 = undefined;\n this._rejectionHandler0 = undefined;\n this._promise0 = undefined;\n this._receiver0 = undefined;\n this._resolveFromExecutor(executor);\n this._promiseCreated();\n this._fireEvent(\"promiseCreated\", this);\n}\n\nPromise.prototype.toString = function () {\n return \"[object Promise]\";\n};\n\nPromise.prototype.caught = Promise.prototype[\"catch\"] = function (fn) {\n var len = arguments.length;\n if (len > 1) {\n var catchInstances = new Array(len - 1),\n j = 0, i;\n for (i = 0; i < len - 1; ++i) {\n var item = arguments[i];\n if (util.isObject(item)) {\n catchInstances[j++] = item;\n } else {\n return apiRejection(\"Catch statement predicate: \" +\n \"expecting an object but got \" + util.classString(item));\n }\n }\n catchInstances.length = j;\n fn = arguments[i];\n\n if (typeof fn !== \"function\") {\n throw new TypeError(\"The last argument to .catch() \" +\n \"must be a function, got \" + util.toString(fn));\n }\n return this.then(undefined, catchFilter(catchInstances, fn, this));\n }\n return this.then(undefined, fn);\n};\n\nPromise.prototype.reflect = function () {\n return this._then(reflectHandler,\n reflectHandler, undefined, this, undefined);\n};\n\nPromise.prototype.then = function (didFulfill, didReject) {\n if (debug.warnings() && arguments.length > 0 &&\n typeof didFulfill !== \"function\" &&\n typeof didReject !== \"function\") {\n var msg = \".then() only accepts functions but was passed: \" +\n util.classString(didFulfill);\n if (arguments.length > 1) {\n msg += \", \" + util.classString(didReject);\n }\n this._warn(msg);\n }\n return this._then(didFulfill, didReject, undefined, undefined, undefined);\n};\n\nPromise.prototype.done = function (didFulfill, didReject) {\n var promise =\n this._then(didFulfill, didReject, undefined, undefined, undefined);\n promise._setIsFinal();\n};\n\nPromise.prototype.spread = function (fn) {\n if (typeof fn !== \"function\") {\n return apiRejection(\"expecting a function but got \" + util.classString(fn));\n }\n return this.all()._then(fn, undefined, undefined, APPLY, undefined);\n};\n\nPromise.prototype.toJSON = function () {\n var ret = {\n isFulfilled: false,\n isRejected: false,\n fulfillmentValue: undefined,\n rejectionReason: undefined\n };\n if (this.isFulfilled()) {\n ret.fulfillmentValue = this.value();\n ret.isFulfilled = true;\n } else if (this.isRejected()) {\n ret.rejectionReason = this.reason();\n ret.isRejected = true;\n }\n return ret;\n};\n\nPromise.prototype.all = function () {\n if (arguments.length > 0) {\n this._warn(\".all() was passed arguments but it does not take any\");\n }\n return new PromiseArray(this).promise();\n};\n\nPromise.prototype.error = function (fn) {\n return this.caught(util.originatesFromRejection, fn);\n};\n\nPromise.getNewLibraryCopy = module.exports;\n\nPromise.is = function (val) {\n return val instanceof Promise;\n};\n\nPromise.fromNode = Promise.fromCallback = function(fn) {\n var ret = new Promise(INTERNAL);\n ret._captureStackTrace();\n var multiArgs = arguments.length > 1 ? !!Object(arguments[1]).multiArgs\n : false;\n var result = tryCatch(fn)(nodebackForPromise(ret, multiArgs));\n if (result === errorObj) {\n ret._rejectCallback(result.e, true);\n }\n if (!ret._isFateSealed()) ret._setAsyncGuaranteed();\n return ret;\n};\n\nPromise.all = function (promises) {\n return new PromiseArray(promises).promise();\n};\n\nPromise.cast = function (obj) {\n var ret = tryConvertToPromise(obj);\n if (!(ret instanceof Promise)) {\n ret = new Promise(INTERNAL);\n ret._captureStackTrace();\n ret._setFulfilled();\n ret._rejectionHandler0 = obj;\n }\n return ret;\n};\n\nPromise.resolve = Promise.fulfilled = Promise.cast;\n\nPromise.reject = Promise.rejected = function (reason) {\n var ret = new Promise(INTERNAL);\n ret._captureStackTrace();\n ret._rejectCallback(reason, true);\n return ret;\n};\n\nPromise.setScheduler = function(fn) {\n if (typeof fn !== \"function\") {\n throw new TypeError(\"expecting a function but got \" + util.classString(fn));\n }\n return async.setScheduler(fn);\n};\n\nPromise.prototype._then = function (\n didFulfill,\n didReject,\n _, receiver,\n internalData\n) {\n var haveInternalData = internalData !== undefined;\n var promise = haveInternalData ? internalData : new Promise(INTERNAL);\n var target = this._target();\n var bitField = target._bitField;\n\n if (!haveInternalData) {\n promise._propagateFrom(this, 3);\n promise._captureStackTrace();\n if (receiver === undefined &&\n ((this._bitField & 2097152) !== 0)) {\n if (!((bitField & 50397184) === 0)) {\n receiver = this._boundValue();\n } else {\n receiver = target === this ? undefined : this._boundTo;\n }\n }\n this._fireEvent(\"promiseChained\", this, promise);\n }\n\n var context = getContext();\n if (!((bitField & 50397184) === 0)) {\n var handler, value, settler = target._settlePromiseCtx;\n if (((bitField & 33554432) !== 0)) {\n value = target._rejectionHandler0;\n handler = didFulfill;\n } else if (((bitField & 16777216) !== 0)) {\n value = target._fulfillmentHandler0;\n handler = didReject;\n target._unsetRejectionIsUnhandled();\n } else {\n settler = target._settlePromiseLateCancellationObserver;\n value = new CancellationError(\"late cancellation observer\");\n target._attachExtraTrace(value);\n handler = didReject;\n }\n\n async.invoke(settler, target, {\n handler: util.contextBind(context, handler),\n promise: promise,\n receiver: receiver,\n value: value\n });\n } else {\n target._addCallbacks(didFulfill, didReject, promise,\n receiver, context);\n }\n\n return promise;\n};\n\nPromise.prototype._length = function () {\n return this._bitField & 65535;\n};\n\nPromise.prototype._isFateSealed = function () {\n return (this._bitField & 117506048) !== 0;\n};\n\nPromise.prototype._isFollowing = function () {\n return (this._bitField & 67108864) === 67108864;\n};\n\nPromise.prototype._setLength = function (len) {\n this._bitField = (this._bitField & -65536) |\n (len & 65535);\n};\n\nPromise.prototype._setFulfilled = function () {\n this._bitField = this._bitField | 33554432;\n this._fireEvent(\"promiseFulfilled\", this);\n};\n\nPromise.prototype._setRejected = function () {\n this._bitField = this._bitField | 16777216;\n this._fireEvent(\"promiseRejected\", this);\n};\n\nPromise.prototype._setFollowing = function () {\n this._bitField = this._bitField | 67108864;\n this._fireEvent(\"promiseResolved\", this);\n};\n\nPromise.prototype._setIsFinal = function () {\n this._bitField = this._bitField | 4194304;\n};\n\nPromise.prototype._isFinal = function () {\n return (this._bitField & 4194304) > 0;\n};\n\nPromise.prototype._unsetCancelled = function() {\n this._bitField = this._bitField & (~65536);\n};\n\nPromise.prototype._setCancelled = function() {\n this._bitField = this._bitField | 65536;\n this._fireEvent(\"promiseCancelled\", this);\n};\n\nPromise.prototype._setWillBeCancelled = function() {\n this._bitField = this._bitField | 8388608;\n};\n\nPromise.prototype._setAsyncGuaranteed = function() {\n if (async.hasCustomScheduler()) return;\n var bitField = this._bitField;\n this._bitField = bitField |\n (((bitField & 536870912) >> 2) ^\n 134217728);\n};\n\nPromise.prototype._setNoAsyncGuarantee = function() {\n this._bitField = (this._bitField | 536870912) &\n (~134217728);\n};\n\nPromise.prototype._receiverAt = function (index) {\n var ret = index === 0 ? this._receiver0 : this[\n index * 4 - 4 + 3];\n if (ret === UNDEFINED_BINDING) {\n return undefined;\n } else if (ret === undefined && this._isBound()) {\n return this._boundValue();\n }\n return ret;\n};\n\nPromise.prototype._promiseAt = function (index) {\n return this[\n index * 4 - 4 + 2];\n};\n\nPromise.prototype._fulfillmentHandlerAt = function (index) {\n return this[\n index * 4 - 4 + 0];\n};\n\nPromise.prototype._rejectionHandlerAt = function (index) {\n return this[\n index * 4 - 4 + 1];\n};\n\nPromise.prototype._boundValue = function() {};\n\nPromise.prototype._migrateCallback0 = function (follower) {\n var bitField = follower._bitField;\n var fulfill = follower._fulfillmentHandler0;\n var reject = follower._rejectionHandler0;\n var promise = follower._promise0;\n var receiver = follower._receiverAt(0);\n if (receiver === undefined) receiver = UNDEFINED_BINDING;\n this._addCallbacks(fulfill, reject, promise, receiver, null);\n};\n\nPromise.prototype._migrateCallbackAt = function (follower, index) {\n var fulfill = follower._fulfillmentHandlerAt(index);\n var reject = follower._rejectionHandlerAt(index);\n var promise = follower._promiseAt(index);\n var receiver = follower._receiverAt(index);\n if (receiver === undefined) receiver = UNDEFINED_BINDING;\n this._addCallbacks(fulfill, reject, promise, receiver, null);\n};\n\nPromise.prototype._addCallbacks = function (\n fulfill,\n reject,\n promise,\n receiver,\n context\n) {\n var index = this._length();\n\n if (index >= 65535 - 4) {\n index = 0;\n this._setLength(0);\n }\n\n if (index === 0) {\n this._promise0 = promise;\n this._receiver0 = receiver;\n if (typeof fulfill === \"function\") {\n this._fulfillmentHandler0 = util.contextBind(context, fulfill);\n }\n if (typeof reject === \"function\") {\n this._rejectionHandler0 = util.contextBind(context, reject);\n }\n } else {\n var base = index * 4 - 4;\n this[base + 2] = promise;\n this[base + 3] = receiver;\n if (typeof fulfill === \"function\") {\n this[base + 0] =\n util.contextBind(context, fulfill);\n }\n if (typeof reject === \"function\") {\n this[base + 1] =\n util.contextBind(context, reject);\n }\n }\n this._setLength(index + 1);\n return index;\n};\n\nPromise.prototype._proxy = function (proxyable, arg) {\n this._addCallbacks(undefined, undefined, arg, proxyable, null);\n};\n\nPromise.prototype._resolveCallback = function(value, shouldBind) {\n if (((this._bitField & 117506048) !== 0)) return;\n if (value === this)\n return this._rejectCallback(makeSelfResolutionError(), false);\n var maybePromise = tryConvertToPromise(value, this);\n if (!(maybePromise instanceof Promise)) return this._fulfill(value);\n\n if (shouldBind) this._propagateFrom(maybePromise, 2);\n\n\n var promise = maybePromise._target();\n\n if (promise === this) {\n this._reject(makeSelfResolutionError());\n return;\n }\n\n var bitField = promise._bitField;\n if (((bitField & 50397184) === 0)) {\n var len = this._length();\n if (len > 0) promise._migrateCallback0(this);\n for (var i = 1; i < len; ++i) {\n promise._migrateCallbackAt(this, i);\n }\n this._setFollowing();\n this._setLength(0);\n this._setFollowee(maybePromise);\n } else if (((bitField & 33554432) !== 0)) {\n this._fulfill(promise._value());\n } else if (((bitField & 16777216) !== 0)) {\n this._reject(promise._reason());\n } else {\n var reason = new CancellationError(\"late cancellation observer\");\n promise._attachExtraTrace(reason);\n this._reject(reason);\n }\n};\n\nPromise.prototype._rejectCallback =\nfunction(reason, synchronous, ignoreNonErrorWarnings) {\n var trace = util.ensureErrorObject(reason);\n var hasStack = trace === reason;\n if (!hasStack && !ignoreNonErrorWarnings && debug.warnings()) {\n var message = \"a promise was rejected with a non-error: \" +\n util.classString(reason);\n this._warn(message, true);\n }\n this._attachExtraTrace(trace, synchronous ? hasStack : false);\n this._reject(reason);\n};\n\nPromise.prototype._resolveFromExecutor = function (executor) {\n if (executor === INTERNAL) return;\n var promise = this;\n this._captureStackTrace();\n this._pushContext();\n var synchronous = true;\n var r = this._execute(executor, function(value) {\n promise._resolveCallback(value);\n }, function (reason) {\n promise._rejectCallback(reason, synchronous);\n });\n synchronous = false;\n this._popContext();\n\n if (r !== undefined) {\n promise._rejectCallback(r, true);\n }\n};\n\nPromise.prototype._settlePromiseFromHandler = function (\n handler, receiver, value, promise\n) {\n var bitField = promise._bitField;\n if (((bitField & 65536) !== 0)) return;\n promise._pushContext();\n var x;\n if (receiver === APPLY) {\n if (!value || typeof value.length !== \"number\") {\n x = errorObj;\n x.e = new TypeError(\"cannot .spread() a non-array: \" +\n util.classString(value));\n } else {\n x = tryCatch(handler).apply(this._boundValue(), value);\n }\n } else {\n x = tryCatch(handler).call(receiver, value);\n }\n var promiseCreated = promise._popContext();\n bitField = promise._bitField;\n if (((bitField & 65536) !== 0)) return;\n\n if (x === NEXT_FILTER) {\n promise._reject(value);\n } else if (x === errorObj) {\n promise._rejectCallback(x.e, false);\n } else {\n debug.checkForgottenReturns(x, promiseCreated, \"\", promise, this);\n promise._resolveCallback(x);\n }\n};\n\nPromise.prototype._target = function() {\n var ret = this;\n while (ret._isFollowing()) ret = ret._followee();\n return ret;\n};\n\nPromise.prototype._followee = function() {\n return this._rejectionHandler0;\n};\n\nPromise.prototype._setFollowee = function(promise) {\n this._rejectionHandler0 = promise;\n};\n\nPromise.prototype._settlePromise = function(promise, handler, receiver, value) {\n var isPromise = promise instanceof Promise;\n var bitField = this._bitField;\n var asyncGuaranteed = ((bitField & 134217728) !== 0);\n if (((bitField & 65536) !== 0)) {\n if (isPromise) promise._invokeInternalOnCancel();\n\n if (receiver instanceof PassThroughHandlerContext &&\n receiver.isFinallyHandler()) {\n receiver.cancelPromise = promise;\n if (tryCatch(handler).call(receiver, value) === errorObj) {\n promise._reject(errorObj.e);\n }\n } else if (handler === reflectHandler) {\n promise._fulfill(reflectHandler.call(receiver));\n } else if (receiver instanceof Proxyable) {\n receiver._promiseCancelled(promise);\n } else if (isPromise || promise instanceof PromiseArray) {\n promise._cancel();\n } else {\n receiver.cancel();\n }\n } else if (typeof handler === \"function\") {\n if (!isPromise) {\n handler.call(receiver, value, promise);\n } else {\n if (asyncGuaranteed) promise._setAsyncGuaranteed();\n this._settlePromiseFromHandler(handler, receiver, value, promise);\n }\n } else if (receiver instanceof Proxyable) {\n if (!receiver._isResolved()) {\n if (((bitField & 33554432) !== 0)) {\n receiver._promiseFulfilled(value, promise);\n } else {\n receiver._promiseRejected(value, promise);\n }\n }\n } else if (isPromise) {\n if (asyncGuaranteed) promise._setAsyncGuaranteed();\n if (((bitField & 33554432) !== 0)) {\n promise._fulfill(value);\n } else {\n promise._reject(value);\n }\n }\n};\n\nPromise.prototype._settlePromiseLateCancellationObserver = function(ctx) {\n var handler = ctx.handler;\n var promise = ctx.promise;\n var receiver = ctx.receiver;\n var value = ctx.value;\n if (typeof handler === \"function\") {\n if (!(promise instanceof Promise)) {\n handler.call(receiver, value, promise);\n } else {\n this._settlePromiseFromHandler(handler, receiver, value, promise);\n }\n } else if (promise instanceof Promise) {\n promise._reject(value);\n }\n};\n\nPromise.prototype._settlePromiseCtx = function(ctx) {\n this._settlePromise(ctx.promise, ctx.handler, ctx.receiver, ctx.value);\n};\n\nPromise.prototype._settlePromise0 = function(handler, value, bitField) {\n var promise = this._promise0;\n var receiver = this._receiverAt(0);\n this._promise0 = undefined;\n this._receiver0 = undefined;\n this._settlePromise(promise, handler, receiver, value);\n};\n\nPromise.prototype._clearCallbackDataAtIndex = function(index) {\n var base = index * 4 - 4;\n this[base + 2] =\n this[base + 3] =\n this[base + 0] =\n this[base + 1] = undefined;\n};\n\nPromise.prototype._fulfill = function (value) {\n var bitField = this._bitField;\n if (((bitField & 117506048) >>> 16)) return;\n if (value === this) {\n var err = makeSelfResolutionError();\n this._attachExtraTrace(err);\n return this._reject(err);\n }\n this._setFulfilled();\n this._rejectionHandler0 = value;\n\n if ((bitField & 65535) > 0) {\n if (((bitField & 134217728) !== 0)) {\n this._settlePromises();\n } else {\n async.settlePromises(this);\n }\n this._dereferenceTrace();\n }\n};\n\nPromise.prototype._reject = function (reason) {\n var bitField = this._bitField;\n if (((bitField & 117506048) >>> 16)) return;\n this._setRejected();\n this._fulfillmentHandler0 = reason;\n\n if (this._isFinal()) {\n return async.fatalError(reason, util.isNode);\n }\n\n if ((bitField & 65535) > 0) {\n async.settlePromises(this);\n } else {\n this._ensurePossibleRejectionHandled();\n }\n};\n\nPromise.prototype._fulfillPromises = function (len, value) {\n for (var i = 1; i < len; i++) {\n var handler = this._fulfillmentHandlerAt(i);\n var promise = this._promiseAt(i);\n var receiver = this._receiverAt(i);\n this._clearCallbackDataAtIndex(i);\n this._settlePromise(promise, handler, receiver, value);\n }\n};\n\nPromise.prototype._rejectPromises = function (len, reason) {\n for (var i = 1; i < len; i++) {\n var handler = this._rejectionHandlerAt(i);\n var promise = this._promiseAt(i);\n var receiver = this._receiverAt(i);\n this._clearCallbackDataAtIndex(i);\n this._settlePromise(promise, handler, receiver, reason);\n }\n};\n\nPromise.prototype._settlePromises = function () {\n var bitField = this._bitField;\n var len = (bitField & 65535);\n\n if (len > 0) {\n if (((bitField & 16842752) !== 0)) {\n var reason = this._fulfillmentHandler0;\n this._settlePromise0(this._rejectionHandler0, reason, bitField);\n this._rejectPromises(len, reason);\n } else {\n var value = this._rejectionHandler0;\n this._settlePromise0(this._fulfillmentHandler0, value, bitField);\n this._fulfillPromises(len, value);\n }\n this._setLength(0);\n }\n this._clearCancellationData();\n};\n\nPromise.prototype._settledValue = function() {\n var bitField = this._bitField;\n if (((bitField & 33554432) !== 0)) {\n return this._rejectionHandler0;\n } else if (((bitField & 16777216) !== 0)) {\n return this._fulfillmentHandler0;\n }\n};\n\nif (typeof Symbol !== \"undefined\" && Symbol.toStringTag) {\n es5.defineProperty(Promise.prototype, Symbol.toStringTag, {\n get: function () {\n return \"Object\";\n }\n });\n}\n\nfunction deferResolve(v) {this.promise._resolveCallback(v);}\nfunction deferReject(v) {this.promise._rejectCallback(v, false);}\n\nPromise.defer = Promise.pending = function() {\n debug.deprecated(\"Promise.defer\", \"new Promise\");\n var promise = new Promise(INTERNAL);\n return {\n promise: promise,\n resolve: deferResolve,\n reject: deferReject\n };\n};\n\nutil.notEnumerableProp(Promise,\n \"_makeSelfResolutionError\",\n makeSelfResolutionError);\n\n_dereq_(\"./method\")(Promise, INTERNAL, tryConvertToPromise, apiRejection,\n debug);\n_dereq_(\"./bind\")(Promise, INTERNAL, tryConvertToPromise, debug);\n_dereq_(\"./cancel\")(Promise, PromiseArray, apiRejection, debug);\n_dereq_(\"./direct_resolve\")(Promise);\n_dereq_(\"./synchronous_inspection\")(Promise);\n_dereq_(\"./join\")(\n Promise, PromiseArray, tryConvertToPromise, INTERNAL, async);\nPromise.Promise = Promise;\nPromise.version = \"3.7.2\";\n_dereq_('./call_get.js')(Promise);\n_dereq_('./generators.js')(Promise, apiRejection, INTERNAL, tryConvertToPromise, Proxyable, debug);\n_dereq_('./map.js')(Promise, PromiseArray, apiRejection, tryConvertToPromise, INTERNAL, debug);\n_dereq_('./nodeify.js')(Promise);\n_dereq_('./promisify.js')(Promise, INTERNAL);\n_dereq_('./props.js')(Promise, PromiseArray, tryConvertToPromise, apiRejection);\n_dereq_('./race.js')(Promise, INTERNAL, tryConvertToPromise, apiRejection);\n_dereq_('./reduce.js')(Promise, PromiseArray, apiRejection, tryConvertToPromise, INTERNAL, debug);\n_dereq_('./settle.js')(Promise, PromiseArray, debug);\n_dereq_('./some.js')(Promise, PromiseArray, apiRejection);\n_dereq_('./timers.js')(Promise, INTERNAL, debug);\n_dereq_('./using.js')(Promise, apiRejection, tryConvertToPromise, createContext, INTERNAL, debug);\n_dereq_('./any.js')(Promise);\n_dereq_('./each.js')(Promise, INTERNAL);\n_dereq_('./filter.js')(Promise, INTERNAL);\n \n util.toFastProperties(Promise); \n util.toFastProperties(Promise.prototype); \n function fillTypes(value) { \n var p = new Promise(INTERNAL); \n p._fulfillmentHandler0 = value; \n p._rejectionHandler0 = value; \n p._promise0 = value; \n p._receiver0 = value; \n } \n // Complete slack tracking, opt out of field-type tracking and \n // stabilize map \n fillTypes({a: 1}); \n fillTypes({b: 2}); \n fillTypes({c: 3}); \n fillTypes(1); \n fillTypes(function(){}); \n fillTypes(undefined); \n fillTypes(false); \n fillTypes(new Promise(INTERNAL)); \n debug.setBounds(Async.firstLineError, util.lastLineError); \n return Promise; \n\n};\n\n},{\"./any.js\":1,\"./async\":2,\"./bind\":3,\"./call_get.js\":5,\"./cancel\":6,\"./catch_filter\":7,\"./context\":8,\"./debuggability\":9,\"./direct_resolve\":10,\"./each.js\":11,\"./errors\":12,\"./es5\":13,\"./filter.js\":14,\"./finally\":15,\"./generators.js\":16,\"./join\":17,\"./map.js\":18,\"./method\":19,\"./nodeback\":20,\"./nodeify.js\":21,\"./promise_array\":23,\"./promisify.js\":24,\"./props.js\":25,\"./race.js\":27,\"./reduce.js\":28,\"./settle.js\":30,\"./some.js\":31,\"./synchronous_inspection\":32,\"./thenables\":33,\"./timers.js\":34,\"./using.js\":35,\"./util\":36,\"async_hooks\":undefined}],23:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, INTERNAL, tryConvertToPromise,\n apiRejection, Proxyable) {\nvar util = _dereq_(\"./util\");\nvar isArray = util.isArray;\n\nfunction toResolutionValue(val) {\n switch(val) {\n case -2: return [];\n case -3: return {};\n case -6: return new Map();\n }\n}\n\nfunction PromiseArray(values) {\n var promise = this._promise = new Promise(INTERNAL);\n if (values instanceof Promise) {\n promise._propagateFrom(values, 3);\n values.suppressUnhandledRejections();\n }\n promise._setOnCancel(this);\n this._values = values;\n this._length = 0;\n this._totalResolved = 0;\n this._init(undefined, -2);\n}\nutil.inherits(PromiseArray, Proxyable);\n\nPromiseArray.prototype.length = function () {\n return this._length;\n};\n\nPromiseArray.prototype.promise = function () {\n return this._promise;\n};\n\nPromiseArray.prototype._init = function init(_, resolveValueIfEmpty) {\n var values = tryConvertToPromise(this._values, this._promise);\n if (values instanceof Promise) {\n values = values._target();\n var bitField = values._bitField;\n ;\n this._values = values;\n\n if (((bitField & 50397184) === 0)) {\n this._promise._setAsyncGuaranteed();\n return values._then(\n init,\n this._reject,\n undefined,\n this,\n resolveValueIfEmpty\n );\n } else if (((bitField & 33554432) !== 0)) {\n values = values._value();\n } else if (((bitField & 16777216) !== 0)) {\n return this._reject(values._reason());\n } else {\n return this._cancel();\n }\n }\n values = util.asArray(values);\n if (values === null) {\n var err = apiRejection(\n \"expecting an array or an iterable object but got \" + util.classString(values)).reason();\n this._promise._rejectCallback(err, false);\n return;\n }\n\n if (values.length === 0) {\n if (resolveValueIfEmpty === -5) {\n this._resolveEmptyArray();\n }\n else {\n this._resolve(toResolutionValue(resolveValueIfEmpty));\n }\n return;\n }\n this._iterate(values);\n};\n\nPromiseArray.prototype._iterate = function(values) {\n var len = this.getActualLength(values.length);\n this._length = len;\n this._values = this.shouldCopyValues() ? new Array(len) : this._values;\n var result = this._promise;\n var isResolved = false;\n var bitField = null;\n for (var i = 0; i < len; ++i) {\n var maybePromise = tryConvertToPromise(values[i], result);\n\n if (maybePromise instanceof Promise) {\n maybePromise = maybePromise._target();\n bitField = maybePromise._bitField;\n } else {\n bitField = null;\n }\n\n if (isResolved) {\n if (bitField !== null) {\n maybePromise.suppressUnhandledRejections();\n }\n } else if (bitField !== null) {\n if (((bitField & 50397184) === 0)) {\n maybePromise._proxy(this, i);\n this._values[i] = maybePromise;\n } else if (((bitField & 33554432) !== 0)) {\n isResolved = this._promiseFulfilled(maybePromise._value(), i);\n } else if (((bitField & 16777216) !== 0)) {\n isResolved = this._promiseRejected(maybePromise._reason(), i);\n } else {\n isResolved = this._promiseCancelled(i);\n }\n } else {\n isResolved = this._promiseFulfilled(maybePromise, i);\n }\n }\n if (!isResolved) result._setAsyncGuaranteed();\n};\n\nPromiseArray.prototype._isResolved = function () {\n return this._values === null;\n};\n\nPromiseArray.prototype._resolve = function (value) {\n this._values = null;\n this._promise._fulfill(value);\n};\n\nPromiseArray.prototype._cancel = function() {\n if (this._isResolved() || !this._promise._isCancellable()) return;\n this._values = null;\n this._promise._cancel();\n};\n\nPromiseArray.prototype._reject = function (reason) {\n this._values = null;\n this._promise._rejectCallback(reason, false);\n};\n\nPromiseArray.prototype._promiseFulfilled = function (value, index) {\n this._values[index] = value;\n var totalResolved = ++this._totalResolved;\n if (totalResolved >= this._length) {\n this._resolve(this._values);\n return true;\n }\n return false;\n};\n\nPromiseArray.prototype._promiseCancelled = function() {\n this._cancel();\n return true;\n};\n\nPromiseArray.prototype._promiseRejected = function (reason) {\n this._totalResolved++;\n this._reject(reason);\n return true;\n};\n\nPromiseArray.prototype._resultCancelled = function() {\n if (this._isResolved()) return;\n var values = this._values;\n this._cancel();\n if (values instanceof Promise) {\n values.cancel();\n } else {\n for (var i = 0; i < values.length; ++i) {\n if (values[i] instanceof Promise) {\n values[i].cancel();\n }\n }\n }\n};\n\nPromiseArray.prototype.shouldCopyValues = function () {\n return true;\n};\n\nPromiseArray.prototype.getActualLength = function (len) {\n return len;\n};\n\nreturn PromiseArray;\n};\n\n},{\"./util\":36}],24:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, INTERNAL) {\nvar THIS = {};\nvar util = _dereq_(\"./util\");\nvar nodebackForPromise = _dereq_(\"./nodeback\");\nvar withAppended = util.withAppended;\nvar maybeWrapAsError = util.maybeWrapAsError;\nvar canEvaluate = util.canEvaluate;\nvar TypeError = _dereq_(\"./errors\").TypeError;\nvar defaultSuffix = \"Async\";\nvar defaultPromisified = {__isPromisified__: true};\nvar noCopyProps = [\n \"arity\", \"length\",\n \"name\",\n \"arguments\",\n \"caller\",\n \"callee\",\n \"prototype\",\n \"__isPromisified__\"\n];\nvar noCopyPropsPattern = new RegExp(\"^(?:\" + noCopyProps.join(\"|\") + \")$\");\n\nvar defaultFilter = function(name) {\n return util.isIdentifier(name) &&\n name.charAt(0) !== \"_\" &&\n name !== \"constructor\";\n};\n\nfunction propsFilter(key) {\n return !noCopyPropsPattern.test(key);\n}\n\nfunction isPromisified(fn) {\n try {\n return fn.__isPromisified__ === true;\n }\n catch (e) {\n return false;\n }\n}\n\nfunction hasPromisified(obj, key, suffix) {\n var val = util.getDataPropertyOrDefault(obj, key + suffix,\n defaultPromisified);\n return val ? isPromisified(val) : false;\n}\nfunction checkValid(ret, suffix, suffixRegexp) {\n for (var i = 0; i < ret.length; i += 2) {\n var key = ret[i];\n if (suffixRegexp.test(key)) {\n var keyWithoutAsyncSuffix = key.replace(suffixRegexp, \"\");\n for (var j = 0; j < ret.length; j += 2) {\n if (ret[j] === keyWithoutAsyncSuffix) {\n throw new TypeError(\"Cannot promisify an API that has normal methods with '%s'-suffix\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\"\n .replace(\"%s\", suffix));\n }\n }\n }\n }\n}\n\nfunction promisifiableMethods(obj, suffix, suffixRegexp, filter) {\n var keys = util.inheritedDataKeys(obj);\n var ret = [];\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n var value = obj[key];\n var passesDefaultFilter = filter === defaultFilter\n ? true : defaultFilter(key, value, obj);\n if (typeof value === \"function\" &&\n !isPromisified(value) &&\n !hasPromisified(obj, key, suffix) &&\n filter(key, value, obj, passesDefaultFilter)) {\n ret.push(key, value);\n }\n }\n checkValid(ret, suffix, suffixRegexp);\n return ret;\n}\n\nvar escapeIdentRegex = function(str) {\n return str.replace(/([$])/, \"\\\\$\");\n};\n\nvar makeNodePromisifiedEval;\nif (!true) {\nvar switchCaseArgumentOrder = function(likelyArgumentCount) {\n var ret = [likelyArgumentCount];\n var min = Math.max(0, likelyArgumentCount - 1 - 3);\n for(var i = likelyArgumentCount - 1; i >= min; --i) {\n ret.push(i);\n }\n for(var i = likelyArgumentCount + 1; i <= 3; ++i) {\n ret.push(i);\n }\n return ret;\n};\n\nvar argumentSequence = function(argumentCount) {\n return util.filledRange(argumentCount, \"_arg\", \"\");\n};\n\nvar parameterDeclaration = function(parameterCount) {\n return util.filledRange(\n Math.max(parameterCount, 3), \"_arg\", \"\");\n};\n\nvar parameterCount = function(fn) {\n if (typeof fn.length === \"number\") {\n return Math.max(Math.min(fn.length, 1023 + 1), 0);\n }\n return 0;\n};\n\nmakeNodePromisifiedEval =\nfunction(callback, receiver, originalName, fn, _, multiArgs) {\n var newParameterCount = Math.max(0, parameterCount(fn) - 1);\n var argumentOrder = switchCaseArgumentOrder(newParameterCount);\n var shouldProxyThis = typeof callback === \"string\" || receiver === THIS;\n\n function generateCallForArgumentCount(count) {\n var args = argumentSequence(count).join(\", \");\n var comma = count > 0 ? \", \" : \"\";\n var ret;\n if (shouldProxyThis) {\n ret = \"ret = callback.call(this, {{args}}, nodeback); break;\\n\";\n } else {\n ret = receiver === undefined\n ? \"ret = callback({{args}}, nodeback); break;\\n\"\n : \"ret = callback.call(receiver, {{args}}, nodeback); break;\\n\";\n }\n return ret.replace(\"{{args}}\", args).replace(\", \", comma);\n }\n\n function generateArgumentSwitchCase() {\n var ret = \"\";\n for (var i = 0; i < argumentOrder.length; ++i) {\n ret += \"case \" + argumentOrder[i] +\":\" +\n generateCallForArgumentCount(argumentOrder[i]);\n }\n\n ret += \" \\n\\\n default: \\n\\\n var args = new Array(len + 1); \\n\\\n var i = 0; \\n\\\n for (var i = 0; i < len; ++i) { \\n\\\n args[i] = arguments[i]; \\n\\\n } \\n\\\n args[i] = nodeback; \\n\\\n [CodeForCall] \\n\\\n break; \\n\\\n \".replace(\"[CodeForCall]\", (shouldProxyThis\n ? \"ret = callback.apply(this, args);\\n\"\n : \"ret = callback.apply(receiver, args);\\n\"));\n return ret;\n }\n\n var getFunctionCode = typeof callback === \"string\"\n ? (\"this != null ? this['\"+callback+\"'] : fn\")\n : \"fn\";\n var body = \"'use strict'; \\n\\\n var ret = function (Parameters) { \\n\\\n 'use strict'; \\n\\\n var len = arguments.length; \\n\\\n var promise = new Promise(INTERNAL); \\n\\\n promise._captureStackTrace(); \\n\\\n var nodeback = nodebackForPromise(promise, \" + multiArgs + \"); \\n\\\n var ret; \\n\\\n var callback = tryCatch([GetFunctionCode]); \\n\\\n switch(len) { \\n\\\n [CodeForSwitchCase] \\n\\\n } \\n\\\n if (ret === errorObj) { \\n\\\n promise._rejectCallback(maybeWrapAsError(ret.e), true, true);\\n\\\n } \\n\\\n if (!promise._isFateSealed()) promise._setAsyncGuaranteed(); \\n\\\n return promise; \\n\\\n }; \\n\\\n notEnumerableProp(ret, '__isPromisified__', true); \\n\\\n return ret; \\n\\\n \".replace(\"[CodeForSwitchCase]\", generateArgumentSwitchCase())\n .replace(\"[GetFunctionCode]\", getFunctionCode);\n body = body.replace(\"Parameters\", parameterDeclaration(newParameterCount));\n return new Function(\"Promise\",\n \"fn\",\n \"receiver\",\n \"withAppended\",\n \"maybeWrapAsError\",\n \"nodebackForPromise\",\n \"tryCatch\",\n \"errorObj\",\n \"notEnumerableProp\",\n \"INTERNAL\",\n body)(\n Promise,\n fn,\n receiver,\n withAppended,\n maybeWrapAsError,\n nodebackForPromise,\n util.tryCatch,\n util.errorObj,\n util.notEnumerableProp,\n INTERNAL);\n};\n}\n\nfunction makeNodePromisifiedClosure(callback, receiver, _, fn, __, multiArgs) {\n var defaultThis = (function() {return this;})();\n var method = callback;\n if (typeof method === \"string\") {\n callback = fn;\n }\n function promisified() {\n var _receiver = receiver;\n if (receiver === THIS) _receiver = this;\n var promise = new Promise(INTERNAL);\n promise._captureStackTrace();\n var cb = typeof method === \"string\" && this !== defaultThis\n ? this[method] : callback;\n var fn = nodebackForPromise(promise, multiArgs);\n try {\n cb.apply(_receiver, withAppended(arguments, fn));\n } catch(e) {\n promise._rejectCallback(maybeWrapAsError(e), true, true);\n }\n if (!promise._isFateSealed()) promise._setAsyncGuaranteed();\n return promise;\n }\n util.notEnumerableProp(promisified, \"__isPromisified__\", true);\n return promisified;\n}\n\nvar makeNodePromisified = canEvaluate\n ? makeNodePromisifiedEval\n : makeNodePromisifiedClosure;\n\nfunction promisifyAll(obj, suffix, filter, promisifier, multiArgs) {\n var suffixRegexp = new RegExp(escapeIdentRegex(suffix) + \"$\");\n var methods =\n promisifiableMethods(obj, suffix, suffixRegexp, filter);\n\n for (var i = 0, len = methods.length; i < len; i+= 2) {\n var key = methods[i];\n var fn = methods[i+1];\n var promisifiedKey = key + suffix;\n if (promisifier === makeNodePromisified) {\n obj[promisifiedKey] =\n makeNodePromisified(key, THIS, key, fn, suffix, multiArgs);\n } else {\n var promisified = promisifier(fn, function() {\n return makeNodePromisified(key, THIS, key,\n fn, suffix, multiArgs);\n });\n util.notEnumerableProp(promisified, \"__isPromisified__\", true);\n obj[promisifiedKey] = promisified;\n }\n }\n util.toFastProperties(obj);\n return obj;\n}\n\nfunction promisify(callback, receiver, multiArgs) {\n return makeNodePromisified(callback, receiver, undefined,\n callback, null, multiArgs);\n}\n\nPromise.promisify = function (fn, options) {\n if (typeof fn !== \"function\") {\n throw new TypeError(\"expecting a function but got \" + util.classString(fn));\n }\n if (isPromisified(fn)) {\n return fn;\n }\n options = Object(options);\n var receiver = options.context === undefined ? THIS : options.context;\n var multiArgs = !!options.multiArgs;\n var ret = promisify(fn, receiver, multiArgs);\n util.copyDescriptors(fn, ret, propsFilter);\n return ret;\n};\n\nPromise.promisifyAll = function (target, options) {\n if (typeof target !== \"function\" && typeof target !== \"object\") {\n throw new TypeError(\"the target of promisifyAll must be an object or a function\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n options = Object(options);\n var multiArgs = !!options.multiArgs;\n var suffix = options.suffix;\n if (typeof suffix !== \"string\") suffix = defaultSuffix;\n var filter = options.filter;\n if (typeof filter !== \"function\") filter = defaultFilter;\n var promisifier = options.promisifier;\n if (typeof promisifier !== \"function\") promisifier = makeNodePromisified;\n\n if (!util.isIdentifier(suffix)) {\n throw new RangeError(\"suffix must be a valid identifier\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n\n var keys = util.inheritedDataKeys(target);\n for (var i = 0; i < keys.length; ++i) {\n var value = target[keys[i]];\n if (keys[i] !== \"constructor\" &&\n util.isClass(value)) {\n promisifyAll(value.prototype, suffix, filter, promisifier,\n multiArgs);\n promisifyAll(value, suffix, filter, promisifier, multiArgs);\n }\n }\n\n return promisifyAll(target, suffix, filter, promisifier, multiArgs);\n};\n};\n\n\n},{\"./errors\":12,\"./nodeback\":20,\"./util\":36}],25:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(\n Promise, PromiseArray, tryConvertToPromise, apiRejection) {\nvar util = _dereq_(\"./util\");\nvar isObject = util.isObject;\nvar es5 = _dereq_(\"./es5\");\nvar Es6Map;\nif (typeof Map === \"function\") Es6Map = Map;\n\nvar mapToEntries = (function() {\n var index = 0;\n var size = 0;\n\n function extractEntry(value, key) {\n this[index] = value;\n this[index + size] = key;\n index++;\n }\n\n return function mapToEntries(map) {\n size = map.size;\n index = 0;\n var ret = new Array(map.size * 2);\n map.forEach(extractEntry, ret);\n return ret;\n };\n})();\n\nvar entriesToMap = function(entries) {\n var ret = new Es6Map();\n var length = entries.length / 2 | 0;\n for (var i = 0; i < length; ++i) {\n var key = entries[length + i];\n var value = entries[i];\n ret.set(key, value);\n }\n return ret;\n};\n\nfunction PropertiesPromiseArray(obj) {\n var isMap = false;\n var entries;\n if (Es6Map !== undefined && obj instanceof Es6Map) {\n entries = mapToEntries(obj);\n isMap = true;\n } else {\n var keys = es5.keys(obj);\n var len = keys.length;\n entries = new Array(len * 2);\n for (var i = 0; i < len; ++i) {\n var key = keys[i];\n entries[i] = obj[key];\n entries[i + len] = key;\n }\n }\n this.constructor$(entries);\n this._isMap = isMap;\n this._init$(undefined, isMap ? -6 : -3);\n}\nutil.inherits(PropertiesPromiseArray, PromiseArray);\n\nPropertiesPromiseArray.prototype._init = function () {};\n\nPropertiesPromiseArray.prototype._promiseFulfilled = function (value, index) {\n this._values[index] = value;\n var totalResolved = ++this._totalResolved;\n if (totalResolved >= this._length) {\n var val;\n if (this._isMap) {\n val = entriesToMap(this._values);\n } else {\n val = {};\n var keyOffset = this.length();\n for (var i = 0, len = this.length(); i < len; ++i) {\n val[this._values[i + keyOffset]] = this._values[i];\n }\n }\n this._resolve(val);\n return true;\n }\n return false;\n};\n\nPropertiesPromiseArray.prototype.shouldCopyValues = function () {\n return false;\n};\n\nPropertiesPromiseArray.prototype.getActualLength = function (len) {\n return len >> 1;\n};\n\nfunction props(promises) {\n var ret;\n var castValue = tryConvertToPromise(promises);\n\n if (!isObject(castValue)) {\n return apiRejection(\"cannot await properties of a non-object\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n } else if (castValue instanceof Promise) {\n ret = castValue._then(\n Promise.props, undefined, undefined, undefined, undefined);\n } else {\n ret = new PropertiesPromiseArray(castValue).promise();\n }\n\n if (castValue instanceof Promise) {\n ret._propagateFrom(castValue, 2);\n }\n return ret;\n}\n\nPromise.prototype.props = function () {\n return props(this);\n};\n\nPromise.props = function (promises) {\n return props(promises);\n};\n};\n\n},{\"./es5\":13,\"./util\":36}],26:[function(_dereq_,module,exports){\n\"use strict\";\nfunction arrayMove(src, srcIndex, dst, dstIndex, len) {\n for (var j = 0; j < len; ++j) {\n dst[j + dstIndex] = src[j + srcIndex];\n src[j + srcIndex] = void 0;\n }\n}\n\nfunction Queue(capacity) {\n this._capacity = capacity;\n this._length = 0;\n this._front = 0;\n}\n\nQueue.prototype._willBeOverCapacity = function (size) {\n return this._capacity < size;\n};\n\nQueue.prototype._pushOne = function (arg) {\n var length = this.length();\n this._checkCapacity(length + 1);\n var i = (this._front + length) & (this._capacity - 1);\n this[i] = arg;\n this._length = length + 1;\n};\n\nQueue.prototype.push = function (fn, receiver, arg) {\n var length = this.length() + 3;\n if (this._willBeOverCapacity(length)) {\n this._pushOne(fn);\n this._pushOne(receiver);\n this._pushOne(arg);\n return;\n }\n var j = this._front + length - 3;\n this._checkCapacity(length);\n var wrapMask = this._capacity - 1;\n this[(j + 0) & wrapMask] = fn;\n this[(j + 1) & wrapMask] = receiver;\n this[(j + 2) & wrapMask] = arg;\n this._length = length;\n};\n\nQueue.prototype.shift = function () {\n var front = this._front,\n ret = this[front];\n\n this[front] = undefined;\n this._front = (front + 1) & (this._capacity - 1);\n this._length--;\n return ret;\n};\n\nQueue.prototype.length = function () {\n return this._length;\n};\n\nQueue.prototype._checkCapacity = function (size) {\n if (this._capacity < size) {\n this._resizeTo(this._capacity << 1);\n }\n};\n\nQueue.prototype._resizeTo = function (capacity) {\n var oldCapacity = this._capacity;\n this._capacity = capacity;\n var front = this._front;\n var length = this._length;\n var moveItemsCount = (front + length) & (oldCapacity - 1);\n arrayMove(this, 0, this, oldCapacity, moveItemsCount);\n};\n\nmodule.exports = Queue;\n\n},{}],27:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(\n Promise, INTERNAL, tryConvertToPromise, apiRejection) {\nvar util = _dereq_(\"./util\");\n\nvar raceLater = function (promise) {\n return promise.then(function(array) {\n return race(array, promise);\n });\n};\n\nfunction race(promises, parent) {\n var maybePromise = tryConvertToPromise(promises);\n\n if (maybePromise instanceof Promise) {\n return raceLater(maybePromise);\n } else {\n promises = util.asArray(promises);\n if (promises === null)\n return apiRejection(\"expecting an array or an iterable object but got \" + util.classString(promises));\n }\n\n var ret = new Promise(INTERNAL);\n if (parent !== undefined) {\n ret._propagateFrom(parent, 3);\n }\n var fulfill = ret._fulfill;\n var reject = ret._reject;\n for (var i = 0, len = promises.length; i < len; ++i) {\n var val = promises[i];\n\n if (val === undefined && !(i in promises)) {\n continue;\n }\n\n Promise.cast(val)._then(fulfill, reject, undefined, ret, null);\n }\n return ret;\n}\n\nPromise.race = function (promises) {\n return race(promises, undefined);\n};\n\nPromise.prototype.race = function () {\n return race(this, undefined);\n};\n\n};\n\n},{\"./util\":36}],28:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise,\n PromiseArray,\n apiRejection,\n tryConvertToPromise,\n INTERNAL,\n debug) {\nvar util = _dereq_(\"./util\");\nvar tryCatch = util.tryCatch;\n\nfunction ReductionPromiseArray(promises, fn, initialValue, _each) {\n this.constructor$(promises);\n var context = Promise._getContext();\n this._fn = util.contextBind(context, fn);\n if (initialValue !== undefined) {\n initialValue = Promise.resolve(initialValue);\n initialValue._attachCancellationCallback(this);\n }\n this._initialValue = initialValue;\n this._currentCancellable = null;\n if(_each === INTERNAL) {\n this._eachValues = Array(this._length);\n } else if (_each === 0) {\n this._eachValues = null;\n } else {\n this._eachValues = undefined;\n }\n this._promise._captureStackTrace();\n this._init$(undefined, -5);\n}\nutil.inherits(ReductionPromiseArray, PromiseArray);\n\nReductionPromiseArray.prototype._gotAccum = function(accum) {\n if (this._eachValues !== undefined &&\n this._eachValues !== null &&\n accum !== INTERNAL) {\n this._eachValues.push(accum);\n }\n};\n\nReductionPromiseArray.prototype._eachComplete = function(value) {\n if (this._eachValues !== null) {\n this._eachValues.push(value);\n }\n return this._eachValues;\n};\n\nReductionPromiseArray.prototype._init = function() {};\n\nReductionPromiseArray.prototype._resolveEmptyArray = function() {\n this._resolve(this._eachValues !== undefined ? this._eachValues\n : this._initialValue);\n};\n\nReductionPromiseArray.prototype.shouldCopyValues = function () {\n return false;\n};\n\nReductionPromiseArray.prototype._resolve = function(value) {\n this._promise._resolveCallback(value);\n this._values = null;\n};\n\nReductionPromiseArray.prototype._resultCancelled = function(sender) {\n if (sender === this._initialValue) return this._cancel();\n if (this._isResolved()) return;\n this._resultCancelled$();\n if (this._currentCancellable instanceof Promise) {\n this._currentCancellable.cancel();\n }\n if (this._initialValue instanceof Promise) {\n this._initialValue.cancel();\n }\n};\n\nReductionPromiseArray.prototype._iterate = function (values) {\n this._values = values;\n var value;\n var i;\n var length = values.length;\n if (this._initialValue !== undefined) {\n value = this._initialValue;\n i = 0;\n } else {\n value = Promise.resolve(values[0]);\n i = 1;\n }\n\n this._currentCancellable = value;\n\n for (var j = i; j < length; ++j) {\n var maybePromise = values[j];\n if (maybePromise instanceof Promise) {\n maybePromise.suppressUnhandledRejections();\n }\n }\n\n if (!value.isRejected()) {\n for (; i < length; ++i) {\n var ctx = {\n accum: null,\n value: values[i],\n index: i,\n length: length,\n array: this\n };\n\n value = value._then(gotAccum, undefined, undefined, ctx, undefined);\n\n if ((i & 127) === 0) {\n value._setNoAsyncGuarantee();\n }\n }\n }\n\n if (this._eachValues !== undefined) {\n value = value\n ._then(this._eachComplete, undefined, undefined, this, undefined);\n }\n value._then(completed, completed, undefined, value, this);\n};\n\nPromise.prototype.reduce = function (fn, initialValue) {\n return reduce(this, fn, initialValue, null);\n};\n\nPromise.reduce = function (promises, fn, initialValue, _each) {\n return reduce(promises, fn, initialValue, _each);\n};\n\nfunction completed(valueOrReason, array) {\n if (this.isFulfilled()) {\n array._resolve(valueOrReason);\n } else {\n array._reject(valueOrReason);\n }\n}\n\nfunction reduce(promises, fn, initialValue, _each) {\n if (typeof fn !== \"function\") {\n return apiRejection(\"expecting a function but got \" + util.classString(fn));\n }\n var array = new ReductionPromiseArray(promises, fn, initialValue, _each);\n return array.promise();\n}\n\nfunction gotAccum(accum) {\n this.accum = accum;\n this.array._gotAccum(accum);\n var value = tryConvertToPromise(this.value, this.array._promise);\n if (value instanceof Promise) {\n this.array._currentCancellable = value;\n return value._then(gotValue, undefined, undefined, this, undefined);\n } else {\n return gotValue.call(this, value);\n }\n}\n\nfunction gotValue(value) {\n var array = this.array;\n var promise = array._promise;\n var fn = tryCatch(array._fn);\n promise._pushContext();\n var ret;\n if (array._eachValues !== undefined) {\n ret = fn.call(promise._boundValue(), value, this.index, this.length);\n } else {\n ret = fn.call(promise._boundValue(),\n this.accum, value, this.index, this.length);\n }\n if (ret instanceof Promise) {\n array._currentCancellable = ret;\n }\n var promiseCreated = promise._popContext();\n debug.checkForgottenReturns(\n ret,\n promiseCreated,\n array._eachValues !== undefined ? \"Promise.each\" : \"Promise.reduce\",\n promise\n );\n return ret;\n}\n};\n\n},{\"./util\":36}],29:[function(_dereq_,module,exports){\n\"use strict\";\nvar util = _dereq_(\"./util\");\nvar schedule;\nvar noAsyncScheduler = function() {\n throw new Error(\"No async scheduler available\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n};\nvar NativePromise = util.getNativePromise();\nif (util.isNode && typeof MutationObserver === \"undefined\") {\n var GlobalSetImmediate = global.setImmediate;\n var ProcessNextTick = process.nextTick;\n schedule = util.isRecentNode\n ? function(fn) { GlobalSetImmediate.call(global, fn); }\n : function(fn) { ProcessNextTick.call(process, fn); };\n} else if (typeof NativePromise === \"function\" &&\n typeof NativePromise.resolve === \"function\") {\n var nativePromise = NativePromise.resolve();\n schedule = function(fn) {\n nativePromise.then(fn);\n };\n} else if ((typeof MutationObserver !== \"undefined\") &&\n !(typeof window !== \"undefined\" &&\n window.navigator &&\n (window.navigator.standalone || window.cordova)) &&\n (\"classList\" in document.documentElement)) {\n schedule = (function() {\n var div = document.createElement(\"div\");\n var opts = {attributes: true};\n var toggleScheduled = false;\n var div2 = document.createElement(\"div\");\n var o2 = new MutationObserver(function() {\n div.classList.toggle(\"foo\");\n toggleScheduled = false;\n });\n o2.observe(div2, opts);\n\n var scheduleToggle = function() {\n if (toggleScheduled) return;\n toggleScheduled = true;\n div2.classList.toggle(\"foo\");\n };\n\n return function schedule(fn) {\n var o = new MutationObserver(function() {\n o.disconnect();\n fn();\n });\n o.observe(div, opts);\n scheduleToggle();\n };\n })();\n} else if (typeof setImmediate !== \"undefined\") {\n schedule = function (fn) {\n setImmediate(fn);\n };\n} else if (typeof setTimeout !== \"undefined\") {\n schedule = function (fn) {\n setTimeout(fn, 0);\n };\n} else {\n schedule = noAsyncScheduler;\n}\nmodule.exports = schedule;\n\n},{\"./util\":36}],30:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports =\n function(Promise, PromiseArray, debug) {\nvar PromiseInspection = Promise.PromiseInspection;\nvar util = _dereq_(\"./util\");\n\nfunction SettledPromiseArray(values) {\n this.constructor$(values);\n}\nutil.inherits(SettledPromiseArray, PromiseArray);\n\nSettledPromiseArray.prototype._promiseResolved = function (index, inspection) {\n this._values[index] = inspection;\n var totalResolved = ++this._totalResolved;\n if (totalResolved >= this._length) {\n this._resolve(this._values);\n return true;\n }\n return false;\n};\n\nSettledPromiseArray.prototype._promiseFulfilled = function (value, index) {\n var ret = new PromiseInspection();\n ret._bitField = 33554432;\n ret._settledValueField = value;\n return this._promiseResolved(index, ret);\n};\nSettledPromiseArray.prototype._promiseRejected = function (reason, index) {\n var ret = new PromiseInspection();\n ret._bitField = 16777216;\n ret._settledValueField = reason;\n return this._promiseResolved(index, ret);\n};\n\nPromise.settle = function (promises) {\n debug.deprecated(\".settle()\", \".reflect()\");\n return new SettledPromiseArray(promises).promise();\n};\n\nPromise.allSettled = function (promises) {\n return new SettledPromiseArray(promises).promise();\n};\n\nPromise.prototype.settle = function () {\n return Promise.settle(this);\n};\n};\n\n},{\"./util\":36}],31:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports =\nfunction(Promise, PromiseArray, apiRejection) {\nvar util = _dereq_(\"./util\");\nvar RangeError = _dereq_(\"./errors\").RangeError;\nvar AggregateError = _dereq_(\"./errors\").AggregateError;\nvar isArray = util.isArray;\nvar CANCELLATION = {};\n\n\nfunction SomePromiseArray(values) {\n this.constructor$(values);\n this._howMany = 0;\n this._unwrap = false;\n this._initialized = false;\n}\nutil.inherits(SomePromiseArray, PromiseArray);\n\nSomePromiseArray.prototype._init = function () {\n if (!this._initialized) {\n return;\n }\n if (this._howMany === 0) {\n this._resolve([]);\n return;\n }\n this._init$(undefined, -5);\n var isArrayResolved = isArray(this._values);\n if (!this._isResolved() &&\n isArrayResolved &&\n this._howMany > this._canPossiblyFulfill()) {\n this._reject(this._getRangeError(this.length()));\n }\n};\n\nSomePromiseArray.prototype.init = function () {\n this._initialized = true;\n this._init();\n};\n\nSomePromiseArray.prototype.setUnwrap = function () {\n this._unwrap = true;\n};\n\nSomePromiseArray.prototype.howMany = function () {\n return this._howMany;\n};\n\nSomePromiseArray.prototype.setHowMany = function (count) {\n this._howMany = count;\n};\n\nSomePromiseArray.prototype._promiseFulfilled = function (value) {\n this._addFulfilled(value);\n if (this._fulfilled() === this.howMany()) {\n this._values.length = this.howMany();\n if (this.howMany() === 1 && this._unwrap) {\n this._resolve(this._values[0]);\n } else {\n this._resolve(this._values);\n }\n return true;\n }\n return false;\n\n};\nSomePromiseArray.prototype._promiseRejected = function (reason) {\n this._addRejected(reason);\n return this._checkOutcome();\n};\n\nSomePromiseArray.prototype._promiseCancelled = function () {\n if (this._values instanceof Promise || this._values == null) {\n return this._cancel();\n }\n this._addRejected(CANCELLATION);\n return this._checkOutcome();\n};\n\nSomePromiseArray.prototype._checkOutcome = function() {\n if (this.howMany() > this._canPossiblyFulfill()) {\n var e = new AggregateError();\n for (var i = this.length(); i < this._values.length; ++i) {\n if (this._values[i] !== CANCELLATION) {\n e.push(this._values[i]);\n }\n }\n if (e.length > 0) {\n this._reject(e);\n } else {\n this._cancel();\n }\n return true;\n }\n return false;\n};\n\nSomePromiseArray.prototype._fulfilled = function () {\n return this._totalResolved;\n};\n\nSomePromiseArray.prototype._rejected = function () {\n return this._values.length - this.length();\n};\n\nSomePromiseArray.prototype._addRejected = function (reason) {\n this._values.push(reason);\n};\n\nSomePromiseArray.prototype._addFulfilled = function (value) {\n this._values[this._totalResolved++] = value;\n};\n\nSomePromiseArray.prototype._canPossiblyFulfill = function () {\n return this.length() - this._rejected();\n};\n\nSomePromiseArray.prototype._getRangeError = function (count) {\n var message = \"Input array must contain at least \" +\n this._howMany + \" items but contains only \" + count + \" items\";\n return new RangeError(message);\n};\n\nSomePromiseArray.prototype._resolveEmptyArray = function () {\n this._reject(this._getRangeError(0));\n};\n\nfunction some(promises, howMany) {\n if ((howMany | 0) !== howMany || howMany < 0) {\n return apiRejection(\"expecting a positive integer\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n var ret = new SomePromiseArray(promises);\n var promise = ret.promise();\n ret.setHowMany(howMany);\n ret.init();\n return promise;\n}\n\nPromise.some = function (promises, howMany) {\n return some(promises, howMany);\n};\n\nPromise.prototype.some = function (howMany) {\n return some(this, howMany);\n};\n\nPromise._SomePromiseArray = SomePromiseArray;\n};\n\n},{\"./errors\":12,\"./util\":36}],32:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise) {\nfunction PromiseInspection(promise) {\n if (promise !== undefined) {\n promise = promise._target();\n this._bitField = promise._bitField;\n this._settledValueField = promise._isFateSealed()\n ? promise._settledValue() : undefined;\n }\n else {\n this._bitField = 0;\n this._settledValueField = undefined;\n }\n}\n\nPromiseInspection.prototype._settledValue = function() {\n return this._settledValueField;\n};\n\nvar value = PromiseInspection.prototype.value = function () {\n if (!this.isFulfilled()) {\n throw new TypeError(\"cannot get fulfillment value of a non-fulfilled promise\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n return this._settledValue();\n};\n\nvar reason = PromiseInspection.prototype.error =\nPromiseInspection.prototype.reason = function () {\n if (!this.isRejected()) {\n throw new TypeError(\"cannot get rejection reason of a non-rejected promise\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n return this._settledValue();\n};\n\nvar isFulfilled = PromiseInspection.prototype.isFulfilled = function() {\n return (this._bitField & 33554432) !== 0;\n};\n\nvar isRejected = PromiseInspection.prototype.isRejected = function () {\n return (this._bitField & 16777216) !== 0;\n};\n\nvar isPending = PromiseInspection.prototype.isPending = function () {\n return (this._bitField & 50397184) === 0;\n};\n\nvar isResolved = PromiseInspection.prototype.isResolved = function () {\n return (this._bitField & 50331648) !== 0;\n};\n\nPromiseInspection.prototype.isCancelled = function() {\n return (this._bitField & 8454144) !== 0;\n};\n\nPromise.prototype.__isCancelled = function() {\n return (this._bitField & 65536) === 65536;\n};\n\nPromise.prototype._isCancelled = function() {\n return this._target().__isCancelled();\n};\n\nPromise.prototype.isCancelled = function() {\n return (this._target()._bitField & 8454144) !== 0;\n};\n\nPromise.prototype.isPending = function() {\n return isPending.call(this._target());\n};\n\nPromise.prototype.isRejected = function() {\n return isRejected.call(this._target());\n};\n\nPromise.prototype.isFulfilled = function() {\n return isFulfilled.call(this._target());\n};\n\nPromise.prototype.isResolved = function() {\n return isResolved.call(this._target());\n};\n\nPromise.prototype.value = function() {\n return value.call(this._target());\n};\n\nPromise.prototype.reason = function() {\n var target = this._target();\n target._unsetRejectionIsUnhandled();\n return reason.call(target);\n};\n\nPromise.prototype._value = function() {\n return this._settledValue();\n};\n\nPromise.prototype._reason = function() {\n this._unsetRejectionIsUnhandled();\n return this._settledValue();\n};\n\nPromise.PromiseInspection = PromiseInspection;\n};\n\n},{}],33:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, INTERNAL) {\nvar util = _dereq_(\"./util\");\nvar errorObj = util.errorObj;\nvar isObject = util.isObject;\n\nfunction tryConvertToPromise(obj, context) {\n if (isObject(obj)) {\n if (obj instanceof Promise) return obj;\n var then = getThen(obj);\n if (then === errorObj) {\n if (context) context._pushContext();\n var ret = Promise.reject(then.e);\n if (context) context._popContext();\n return ret;\n } else if (typeof then === \"function\") {\n if (isAnyBluebirdPromise(obj)) {\n var ret = new Promise(INTERNAL);\n obj._then(\n ret._fulfill,\n ret._reject,\n undefined,\n ret,\n null\n );\n return ret;\n }\n return doThenable(obj, then, context);\n }\n }\n return obj;\n}\n\nfunction doGetThen(obj) {\n return obj.then;\n}\n\nfunction getThen(obj) {\n try {\n return doGetThen(obj);\n } catch (e) {\n errorObj.e = e;\n return errorObj;\n }\n}\n\nvar hasProp = {}.hasOwnProperty;\nfunction isAnyBluebirdPromise(obj) {\n try {\n return hasProp.call(obj, \"_promise0\");\n } catch (e) {\n return false;\n }\n}\n\nfunction doThenable(x, then, context) {\n var promise = new Promise(INTERNAL);\n var ret = promise;\n if (context) context._pushContext();\n promise._captureStackTrace();\n if (context) context._popContext();\n var synchronous = true;\n var result = util.tryCatch(then).call(x, resolve, reject);\n synchronous = false;\n\n if (promise && result === errorObj) {\n promise._rejectCallback(result.e, true, true);\n promise = null;\n }\n\n function resolve(value) {\n if (!promise) return;\n promise._resolveCallback(value);\n promise = null;\n }\n\n function reject(reason) {\n if (!promise) return;\n promise._rejectCallback(reason, synchronous, true);\n promise = null;\n }\n return ret;\n}\n\nreturn tryConvertToPromise;\n};\n\n},{\"./util\":36}],34:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, INTERNAL, debug) {\nvar util = _dereq_(\"./util\");\nvar TimeoutError = Promise.TimeoutError;\n\nfunction HandleWrapper(handle) {\n this.handle = handle;\n}\n\nHandleWrapper.prototype._resultCancelled = function() {\n clearTimeout(this.handle);\n};\n\nvar afterValue = function(value) { return delay(+this).thenReturn(value); };\nvar delay = Promise.delay = function (ms, value) {\n var ret;\n var handle;\n if (value !== undefined) {\n ret = Promise.resolve(value)\n ._then(afterValue, null, null, ms, undefined);\n if (debug.cancellation() && value instanceof Promise) {\n ret._setOnCancel(value);\n }\n } else {\n ret = new Promise(INTERNAL);\n handle = setTimeout(function() { ret._fulfill(); }, +ms);\n if (debug.cancellation()) {\n ret._setOnCancel(new HandleWrapper(handle));\n }\n ret._captureStackTrace();\n }\n ret._setAsyncGuaranteed();\n return ret;\n};\n\nPromise.prototype.delay = function (ms) {\n return delay(ms, this);\n};\n\nvar afterTimeout = function (promise, message, parent) {\n var err;\n if (typeof message !== \"string\") {\n if (message instanceof Error) {\n err = message;\n } else {\n err = new TimeoutError(\"operation timed out\");\n }\n } else {\n err = new TimeoutError(message);\n }\n util.markAsOriginatingFromRejection(err);\n promise._attachExtraTrace(err);\n promise._reject(err);\n\n if (parent != null) {\n parent.cancel();\n }\n};\n\nfunction successClear(value) {\n clearTimeout(this.handle);\n return value;\n}\n\nfunction failureClear(reason) {\n clearTimeout(this.handle);\n throw reason;\n}\n\nPromise.prototype.timeout = function (ms, message) {\n ms = +ms;\n var ret, parent;\n\n var handleWrapper = new HandleWrapper(setTimeout(function timeoutTimeout() {\n if (ret.isPending()) {\n afterTimeout(ret, message, parent);\n }\n }, ms));\n\n if (debug.cancellation()) {\n parent = this.then();\n ret = parent._then(successClear, failureClear,\n undefined, handleWrapper, undefined);\n ret._setOnCancel(handleWrapper);\n } else {\n ret = this._then(successClear, failureClear,\n undefined, handleWrapper, undefined);\n }\n\n return ret;\n};\n\n};\n\n},{\"./util\":36}],35:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function (Promise, apiRejection, tryConvertToPromise,\n createContext, INTERNAL, debug) {\n var util = _dereq_(\"./util\");\n var TypeError = _dereq_(\"./errors\").TypeError;\n var inherits = _dereq_(\"./util\").inherits;\n var errorObj = util.errorObj;\n var tryCatch = util.tryCatch;\n var NULL = {};\n\n function thrower(e) {\n setTimeout(function(){throw e;}, 0);\n }\n\n function castPreservingDisposable(thenable) {\n var maybePromise = tryConvertToPromise(thenable);\n if (maybePromise !== thenable &&\n typeof thenable._isDisposable === \"function\" &&\n typeof thenable._getDisposer === \"function\" &&\n thenable._isDisposable()) {\n maybePromise._setDisposable(thenable._getDisposer());\n }\n return maybePromise;\n }\n function dispose(resources, inspection) {\n var i = 0;\n var len = resources.length;\n var ret = new Promise(INTERNAL);\n function iterator() {\n if (i >= len) return ret._fulfill();\n var maybePromise = castPreservingDisposable(resources[i++]);\n if (maybePromise instanceof Promise &&\n maybePromise._isDisposable()) {\n try {\n maybePromise = tryConvertToPromise(\n maybePromise._getDisposer().tryDispose(inspection),\n resources.promise);\n } catch (e) {\n return thrower(e);\n }\n if (maybePromise instanceof Promise) {\n return maybePromise._then(iterator, thrower,\n null, null, null);\n }\n }\n iterator();\n }\n iterator();\n return ret;\n }\n\n function Disposer(data, promise, context) {\n this._data = data;\n this._promise = promise;\n this._context = context;\n }\n\n Disposer.prototype.data = function () {\n return this._data;\n };\n\n Disposer.prototype.promise = function () {\n return this._promise;\n };\n\n Disposer.prototype.resource = function () {\n if (this.promise().isFulfilled()) {\n return this.promise().value();\n }\n return NULL;\n };\n\n Disposer.prototype.tryDispose = function(inspection) {\n var resource = this.resource();\n var context = this._context;\n if (context !== undefined) context._pushContext();\n var ret = resource !== NULL\n ? this.doDispose(resource, inspection) : null;\n if (context !== undefined) context._popContext();\n this._promise._unsetDisposable();\n this._data = null;\n return ret;\n };\n\n Disposer.isDisposer = function (d) {\n return (d != null &&\n typeof d.resource === \"function\" &&\n typeof d.tryDispose === \"function\");\n };\n\n function FunctionDisposer(fn, promise, context) {\n this.constructor$(fn, promise, context);\n }\n inherits(FunctionDisposer, Disposer);\n\n FunctionDisposer.prototype.doDispose = function (resource, inspection) {\n var fn = this.data();\n return fn.call(resource, resource, inspection);\n };\n\n function maybeUnwrapDisposer(value) {\n if (Disposer.isDisposer(value)) {\n this.resources[this.index]._setDisposable(value);\n return value.promise();\n }\n return value;\n }\n\n function ResourceList(length) {\n this.length = length;\n this.promise = null;\n this[length-1] = null;\n }\n\n ResourceList.prototype._resultCancelled = function() {\n var len = this.length;\n for (var i = 0; i < len; ++i) {\n var item = this[i];\n if (item instanceof Promise) {\n item.cancel();\n }\n }\n };\n\n Promise.using = function () {\n var len = arguments.length;\n if (len < 2) return apiRejection(\n \"you must pass at least 2 arguments to Promise.using\");\n var fn = arguments[len - 1];\n if (typeof fn !== \"function\") {\n return apiRejection(\"expecting a function but got \" + util.classString(fn));\n }\n var input;\n var spreadArgs = true;\n if (len === 2 && Array.isArray(arguments[0])) {\n input = arguments[0];\n len = input.length;\n spreadArgs = false;\n } else {\n input = arguments;\n len--;\n }\n var resources = new ResourceList(len);\n for (var i = 0; i < len; ++i) {\n var resource = input[i];\n if (Disposer.isDisposer(resource)) {\n var disposer = resource;\n resource = resource.promise();\n resource._setDisposable(disposer);\n } else {\n var maybePromise = tryConvertToPromise(resource);\n if (maybePromise instanceof Promise) {\n resource =\n maybePromise._then(maybeUnwrapDisposer, null, null, {\n resources: resources,\n index: i\n }, undefined);\n }\n }\n resources[i] = resource;\n }\n\n var reflectedResources = new Array(resources.length);\n for (var i = 0; i < reflectedResources.length; ++i) {\n reflectedResources[i] = Promise.resolve(resources[i]).reflect();\n }\n\n var resultPromise = Promise.all(reflectedResources)\n .then(function(inspections) {\n for (var i = 0; i < inspections.length; ++i) {\n var inspection = inspections[i];\n if (inspection.isRejected()) {\n errorObj.e = inspection.error();\n return errorObj;\n } else if (!inspection.isFulfilled()) {\n resultPromise.cancel();\n return;\n }\n inspections[i] = inspection.value();\n }\n promise._pushContext();\n\n fn = tryCatch(fn);\n var ret = spreadArgs\n ? fn.apply(undefined, inspections) : fn(inspections);\n var promiseCreated = promise._popContext();\n debug.checkForgottenReturns(\n ret, promiseCreated, \"Promise.using\", promise);\n return ret;\n });\n\n var promise = resultPromise.lastly(function() {\n var inspection = new Promise.PromiseInspection(resultPromise);\n return dispose(resources, inspection);\n });\n resources.promise = promise;\n promise._setOnCancel(resources);\n return promise;\n };\n\n Promise.prototype._setDisposable = function (disposer) {\n this._bitField = this._bitField | 131072;\n this._disposer = disposer;\n };\n\n Promise.prototype._isDisposable = function () {\n return (this._bitField & 131072) > 0;\n };\n\n Promise.prototype._getDisposer = function () {\n return this._disposer;\n };\n\n Promise.prototype._unsetDisposable = function () {\n this._bitField = this._bitField & (~131072);\n this._disposer = undefined;\n };\n\n Promise.prototype.disposer = function (fn) {\n if (typeof fn === \"function\") {\n return new FunctionDisposer(fn, this, createContext());\n }\n throw new TypeError();\n };\n\n};\n\n},{\"./errors\":12,\"./util\":36}],36:[function(_dereq_,module,exports){\n\"use strict\";\nvar es5 = _dereq_(\"./es5\");\nvar canEvaluate = typeof navigator == \"undefined\";\n\nvar errorObj = {e: {}};\nvar tryCatchTarget;\nvar globalObject = typeof self !== \"undefined\" ? self :\n typeof window !== \"undefined\" ? window :\n typeof global !== \"undefined\" ? global :\n this !== undefined ? this : null;\n\nfunction tryCatcher() {\n try {\n var target = tryCatchTarget;\n tryCatchTarget = null;\n return target.apply(this, arguments);\n } catch (e) {\n errorObj.e = e;\n return errorObj;\n }\n}\nfunction tryCatch(fn) {\n tryCatchTarget = fn;\n return tryCatcher;\n}\n\nvar inherits = function(Child, Parent) {\n var hasProp = {}.hasOwnProperty;\n\n function T() {\n this.constructor = Child;\n this.constructor$ = Parent;\n for (var propertyName in Parent.prototype) {\n if (hasProp.call(Parent.prototype, propertyName) &&\n propertyName.charAt(propertyName.length-1) !== \"$\"\n ) {\n this[propertyName + \"$\"] = Parent.prototype[propertyName];\n }\n }\n }\n T.prototype = Parent.prototype;\n Child.prototype = new T();\n return Child.prototype;\n};\n\n\nfunction isPrimitive(val) {\n return val == null || val === true || val === false ||\n typeof val === \"string\" || typeof val === \"number\";\n\n}\n\nfunction isObject(value) {\n return typeof value === \"function\" ||\n typeof value === \"object\" && value !== null;\n}\n\nfunction maybeWrapAsError(maybeError) {\n if (!isPrimitive(maybeError)) return maybeError;\n\n return new Error(safeToString(maybeError));\n}\n\nfunction withAppended(target, appendee) {\n var len = target.length;\n var ret = new Array(len + 1);\n var i;\n for (i = 0; i < len; ++i) {\n ret[i] = target[i];\n }\n ret[i] = appendee;\n return ret;\n}\n\nfunction getDataPropertyOrDefault(obj, key, defaultValue) {\n if (es5.isES5) {\n var desc = Object.getOwnPropertyDescriptor(obj, key);\n\n if (desc != null) {\n return desc.get == null && desc.set == null\n ? desc.value\n : defaultValue;\n }\n } else {\n return {}.hasOwnProperty.call(obj, key) ? obj[key] : undefined;\n }\n}\n\nfunction notEnumerableProp(obj, name, value) {\n if (isPrimitive(obj)) return obj;\n var descriptor = {\n value: value,\n configurable: true,\n enumerable: false,\n writable: true\n };\n es5.defineProperty(obj, name, descriptor);\n return obj;\n}\n\nfunction thrower(r) {\n throw r;\n}\n\nvar inheritedDataKeys = (function() {\n var excludedPrototypes = [\n Array.prototype,\n Object.prototype,\n Function.prototype\n ];\n\n var isExcludedProto = function(val) {\n for (var i = 0; i < excludedPrototypes.length; ++i) {\n if (excludedPrototypes[i] === val) {\n return true;\n }\n }\n return false;\n };\n\n if (es5.isES5) {\n var getKeys = Object.getOwnPropertyNames;\n return function(obj) {\n var ret = [];\n var visitedKeys = Object.create(null);\n while (obj != null && !isExcludedProto(obj)) {\n var keys;\n try {\n keys = getKeys(obj);\n } catch (e) {\n return ret;\n }\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n if (visitedKeys[key]) continue;\n visitedKeys[key] = true;\n var desc = Object.getOwnPropertyDescriptor(obj, key);\n if (desc != null && desc.get == null && desc.set == null) {\n ret.push(key);\n }\n }\n obj = es5.getPrototypeOf(obj);\n }\n return ret;\n };\n } else {\n var hasProp = {}.hasOwnProperty;\n return function(obj) {\n if (isExcludedProto(obj)) return [];\n var ret = [];\n\n /*jshint forin:false */\n enumeration: for (var key in obj) {\n if (hasProp.call(obj, key)) {\n ret.push(key);\n } else {\n for (var i = 0; i < excludedPrototypes.length; ++i) {\n if (hasProp.call(excludedPrototypes[i], key)) {\n continue enumeration;\n }\n }\n ret.push(key);\n }\n }\n return ret;\n };\n }\n\n})();\n\nvar thisAssignmentPattern = /this\\s*\\.\\s*\\S+\\s*=/;\nfunction isClass(fn) {\n try {\n if (typeof fn === \"function\") {\n var keys = es5.names(fn.prototype);\n\n var hasMethods = es5.isES5 && keys.length > 1;\n var hasMethodsOtherThanConstructor = keys.length > 0 &&\n !(keys.length === 1 && keys[0] === \"constructor\");\n var hasThisAssignmentAndStaticMethods =\n thisAssignmentPattern.test(fn + \"\") && es5.names(fn).length > 0;\n\n if (hasMethods || hasMethodsOtherThanConstructor ||\n hasThisAssignmentAndStaticMethods) {\n return true;\n }\n }\n return false;\n } catch (e) {\n return false;\n }\n}\n\nfunction toFastProperties(obj) {\n /*jshint -W027,-W055,-W031*/\n function FakeConstructor() {}\n FakeConstructor.prototype = obj;\n var receiver = new FakeConstructor();\n function ic() {\n return typeof receiver.foo;\n }\n ic();\n ic();\n return obj;\n eval(obj);\n}\n\nvar rident = /^[a-z$_][a-z$_0-9]*$/i;\nfunction isIdentifier(str) {\n return rident.test(str);\n}\n\nfunction filledRange(count, prefix, suffix) {\n var ret = new Array(count);\n for(var i = 0; i < count; ++i) {\n ret[i] = prefix + i + suffix;\n }\n return ret;\n}\n\nfunction safeToString(obj) {\n try {\n return obj + \"\";\n } catch (e) {\n return \"[no string representation]\";\n }\n}\n\nfunction isError(obj) {\n return obj instanceof Error ||\n (obj !== null &&\n typeof obj === \"object\" &&\n typeof obj.message === \"string\" &&\n typeof obj.name === \"string\");\n}\n\nfunction markAsOriginatingFromRejection(e) {\n try {\n notEnumerableProp(e, \"isOperational\", true);\n }\n catch(ignore) {}\n}\n\nfunction originatesFromRejection(e) {\n if (e == null) return false;\n return ((e instanceof Error[\"__BluebirdErrorTypes__\"].OperationalError) ||\n e[\"isOperational\"] === true);\n}\n\nfunction canAttachTrace(obj) {\n return isError(obj) && es5.propertyIsWritable(obj, \"stack\");\n}\n\nvar ensureErrorObject = (function() {\n if (!(\"stack\" in new Error())) {\n return function(value) {\n if (canAttachTrace(value)) return value;\n try {throw new Error(safeToString(value));}\n catch(err) {return err;}\n };\n } else {\n return function(value) {\n if (canAttachTrace(value)) return value;\n return new Error(safeToString(value));\n };\n }\n})();\n\nfunction classString(obj) {\n return {}.toString.call(obj);\n}\n\nfunction copyDescriptors(from, to, filter) {\n var keys = es5.names(from);\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n if (filter(key)) {\n try {\n es5.defineProperty(to, key, es5.getDescriptor(from, key));\n } catch (ignore) {}\n }\n }\n}\n\nvar asArray = function(v) {\n if (es5.isArray(v)) {\n return v;\n }\n return null;\n};\n\nif (typeof Symbol !== \"undefined\" && Symbol.iterator) {\n var ArrayFrom = typeof Array.from === \"function\" ? function(v) {\n return Array.from(v);\n } : function(v) {\n var ret = [];\n var it = v[Symbol.iterator]();\n var itResult;\n while (!((itResult = it.next()).done)) {\n ret.push(itResult.value);\n }\n return ret;\n };\n\n asArray = function(v) {\n if (es5.isArray(v)) {\n return v;\n } else if (v != null && typeof v[Symbol.iterator] === \"function\") {\n return ArrayFrom(v);\n }\n return null;\n };\n}\n\nvar isNode = typeof process !== \"undefined\" &&\n classString(process).toLowerCase() === \"[object process]\";\n\nvar hasEnvVariables = typeof process !== \"undefined\" &&\n typeof process.env !== \"undefined\";\n\nfunction env(key) {\n return hasEnvVariables ? process.env[key] : undefined;\n}\n\nfunction getNativePromise() {\n if (typeof Promise === \"function\") {\n try {\n var promise = new Promise(function(){});\n if (classString(promise) === \"[object Promise]\") {\n return Promise;\n }\n } catch (e) {}\n }\n}\n\nvar reflectHandler;\nfunction contextBind(ctx, cb) {\n if (ctx === null ||\n typeof cb !== \"function\" ||\n cb === reflectHandler) {\n return cb;\n }\n\n if (ctx.domain !== null) {\n cb = ctx.domain.bind(cb);\n }\n\n var async = ctx.async;\n if (async !== null) {\n var old = cb;\n cb = function() {\n var args = (new Array(2)).concat([].slice.call(arguments));;\n args[0] = old;\n args[1] = this;\n return async.runInAsyncScope.apply(async, args);\n };\n }\n return cb;\n}\n\nvar ret = {\n setReflectHandler: function(fn) {\n reflectHandler = fn;\n },\n isClass: isClass,\n isIdentifier: isIdentifier,\n inheritedDataKeys: inheritedDataKeys,\n getDataPropertyOrDefault: getDataPropertyOrDefault,\n thrower: thrower,\n isArray: es5.isArray,\n asArray: asArray,\n notEnumerableProp: notEnumerableProp,\n isPrimitive: isPrimitive,\n isObject: isObject,\n isError: isError,\n canEvaluate: canEvaluate,\n errorObj: errorObj,\n tryCatch: tryCatch,\n inherits: inherits,\n withAppended: withAppended,\n maybeWrapAsError: maybeWrapAsError,\n toFastProperties: toFastProperties,\n filledRange: filledRange,\n toString: safeToString,\n canAttachTrace: canAttachTrace,\n ensureErrorObject: ensureErrorObject,\n originatesFromRejection: originatesFromRejection,\n markAsOriginatingFromRejection: markAsOriginatingFromRejection,\n classString: classString,\n copyDescriptors: copyDescriptors,\n isNode: isNode,\n hasEnvVariables: hasEnvVariables,\n env: env,\n global: globalObject,\n getNativePromise: getNativePromise,\n contextBind: contextBind\n};\nret.isRecentNode = ret.isNode && (function() {\n var version;\n if (process.versions && process.versions.node) {\n version = process.versions.node.split(\".\").map(Number);\n } else if (process.version) {\n version = process.version.split(\".\").map(Number);\n }\n return (version[0] === 0 && version[1] > 10) || (version[0] > 0);\n})();\nret.nodeSupportsAsyncResource = ret.isNode && (function() {\n var supportsAsync = false;\n try {\n var res = _dereq_(\"async_hooks\").AsyncResource;\n supportsAsync = typeof res.prototype.runInAsyncScope === \"function\";\n } catch (e) {\n supportsAsync = false;\n }\n return supportsAsync;\n})();\n\nif (ret.isNode) ret.toFastProperties(process);\n\ntry {throw new Error(); } catch (e) {ret.lastLineError = e;}\nmodule.exports = ret;\n\n},{\"./es5\":13,\"async_hooks\":undefined}]},{},[4])(4)\n}); ;if (typeof window !== 'undefined' && window !== null) { window.P = window.Promise; } else if (typeof self !== 'undefined' && self !== null) { self.P = self.Promise; }","// This file is autogenerated via the `commonjs` Grunt task. You can require() this file in a CommonJS environment.\nrequire('../../js/transition.js')\nrequire('../../js/alert.js')\nrequire('../../js/button.js')\nrequire('../../js/carousel.js')\nrequire('../../js/collapse.js')\nrequire('../../js/dropdown.js')\nrequire('../../js/modal.js')\nrequire('../../js/tooltip.js')\nrequire('../../js/popover.js')\nrequire('../../js/scrollspy.js')\nrequire('../../js/tab.js')\nrequire('../../js/affix.js')","/* ========================================================================\n * Bootstrap: affix.js v3.3.7\n * http://getbootstrap.com/javascript/#affix\n * ========================================================================\n * Copyright 2011-2016 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // AFFIX CLASS DEFINITION\n // ======================\n\n var Affix = function (element, options) {\n this.options = $.extend({}, Affix.DEFAULTS, options)\n\n this.$target = $(this.options.target)\n .on('scroll.bs.affix.data-api', $.proxy(this.checkPosition, this))\n .on('click.bs.affix.data-api', $.proxy(this.checkPositionWithEventLoop, this))\n\n this.$element = $(element)\n this.affixed = null\n this.unpin = null\n this.pinnedOffset = null\n\n this.checkPosition()\n }\n\n Affix.VERSION = '3.3.7'\n\n Affix.RESET = 'affix affix-top affix-bottom'\n\n Affix.DEFAULTS = {\n offset: 0,\n target: window\n }\n\n Affix.prototype.getState = function (scrollHeight, height, offsetTop, offsetBottom) {\n var scrollTop = this.$target.scrollTop()\n var position = this.$element.offset()\n var targetHeight = this.$target.height()\n\n if (offsetTop != null && this.affixed == 'top') return scrollTop < offsetTop ? 'top' : false\n\n if (this.affixed == 'bottom') {\n if (offsetTop != null) return (scrollTop + this.unpin <= position.top) ? false : 'bottom'\n return (scrollTop + targetHeight <= scrollHeight - offsetBottom) ? false : 'bottom'\n }\n\n var initializing = this.affixed == null\n var colliderTop = initializing ? scrollTop : position.top\n var colliderHeight = initializing ? targetHeight : height\n\n if (offsetTop != null && scrollTop <= offsetTop) return 'top'\n if (offsetBottom != null && (colliderTop + colliderHeight >= scrollHeight - offsetBottom)) return 'bottom'\n\n return false\n }\n\n Affix.prototype.getPinnedOffset = function () {\n if (this.pinnedOffset) return this.pinnedOffset\n this.$element.removeClass(Affix.RESET).addClass('affix')\n var scrollTop = this.$target.scrollTop()\n var position = this.$element.offset()\n return (this.pinnedOffset = position.top - scrollTop)\n }\n\n Affix.prototype.checkPositionWithEventLoop = function () {\n setTimeout($.proxy(this.checkPosition, this), 1)\n }\n\n Affix.prototype.checkPosition = function () {\n if (!this.$element.is(':visible')) return\n\n var height = this.$element.height()\n var offset = this.options.offset\n var offsetTop = offset.top\n var offsetBottom = offset.bottom\n var scrollHeight = Math.max($(document).height(), $(document.body).height())\n\n if (typeof offset != 'object') offsetBottom = offsetTop = offset\n if (typeof offsetTop == 'function') offsetTop = offset.top(this.$element)\n if (typeof offsetBottom == 'function') offsetBottom = offset.bottom(this.$element)\n\n var affix = this.getState(scrollHeight, height, offsetTop, offsetBottom)\n\n if (this.affixed != affix) {\n if (this.unpin != null) this.$element.css('top', '')\n\n var affixType = 'affix' + (affix ? '-' + affix : '')\n var e = $.Event(affixType + '.bs.affix')\n\n this.$element.trigger(e)\n\n if (e.isDefaultPrevented()) return\n\n this.affixed = affix\n this.unpin = affix == 'bottom' ? this.getPinnedOffset() : null\n\n this.$element\n .removeClass(Affix.RESET)\n .addClass(affixType)\n .trigger(affixType.replace('affix', 'affixed') + '.bs.affix')\n }\n\n if (affix == 'bottom') {\n this.$element.offset({\n top: scrollHeight - height - offsetBottom\n })\n }\n }\n\n\n // AFFIX PLUGIN DEFINITION\n // =======================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.affix')\n var options = typeof option == 'object' && option\n\n if (!data) $this.data('bs.affix', (data = new Affix(this, options)))\n if (typeof option == 'string') data[option]()\n })\n }\n\n var old = $.fn.affix\n\n $.fn.affix = Plugin\n $.fn.affix.Constructor = Affix\n\n\n // AFFIX NO CONFLICT\n // =================\n\n $.fn.affix.noConflict = function () {\n $.fn.affix = old\n return this\n }\n\n\n // AFFIX DATA-API\n // ==============\n\n $(window).on('load', function () {\n $('[data-spy=\"affix\"]').each(function () {\n var $spy = $(this)\n var data = $spy.data()\n\n data.offset = data.offset || {}\n\n if (data.offsetBottom != null) data.offset.bottom = data.offsetBottom\n if (data.offsetTop != null) data.offset.top = data.offsetTop\n\n Plugin.call($spy, data)\n })\n })\n\n}(jQuery);\n","/* ========================================================================\n * Bootstrap: alert.js v3.3.7\n * http://getbootstrap.com/javascript/#alerts\n * ========================================================================\n * Copyright 2011-2016 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // ALERT CLASS DEFINITION\n // ======================\n\n var dismiss = '[data-dismiss=\"alert\"]'\n var Alert = function (el) {\n $(el).on('click', dismiss, this.close)\n }\n\n Alert.VERSION = '3.3.7'\n\n Alert.TRANSITION_DURATION = 150\n\n Alert.prototype.close = function (e) {\n var $this = $(this)\n var selector = $this.attr('data-target')\n\n if (!selector) {\n selector = $this.attr('href')\n selector = selector && selector.replace(/.*(?=#[^\\s]*$)/, '') // strip for ie7\n }\n\n var $parent = $(selector === '#' ? [] : selector)\n\n if (e) e.preventDefault()\n\n if (!$parent.length) {\n $parent = $this.closest('.alert')\n }\n\n $parent.trigger(e = $.Event('close.bs.alert'))\n\n if (e.isDefaultPrevented()) return\n\n $parent.removeClass('in')\n\n function removeElement() {\n // detach from parent, fire event then clean up data\n $parent.detach().trigger('closed.bs.alert').remove()\n }\n\n $.support.transition && $parent.hasClass('fade') ?\n $parent\n .one('bsTransitionEnd', removeElement)\n .emulateTransitionEnd(Alert.TRANSITION_DURATION) :\n removeElement()\n }\n\n\n // ALERT PLUGIN DEFINITION\n // =======================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.alert')\n\n if (!data) $this.data('bs.alert', (data = new Alert(this)))\n if (typeof option == 'string') data[option].call($this)\n })\n }\n\n var old = $.fn.alert\n\n $.fn.alert = Plugin\n $.fn.alert.Constructor = Alert\n\n\n // ALERT NO CONFLICT\n // =================\n\n $.fn.alert.noConflict = function () {\n $.fn.alert = old\n return this\n }\n\n\n // ALERT DATA-API\n // ==============\n\n $(document).on('click.bs.alert.data-api', dismiss, Alert.prototype.close)\n\n}(jQuery);\n","/* ========================================================================\n * Bootstrap: button.js v3.3.7\n * http://getbootstrap.com/javascript/#buttons\n * ========================================================================\n * Copyright 2011-2016 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // BUTTON PUBLIC CLASS DEFINITION\n // ==============================\n\n var Button = function (element, options) {\n this.$element = $(element)\n this.options = $.extend({}, Button.DEFAULTS, options)\n this.isLoading = false\n }\n\n Button.VERSION = '3.3.7'\n\n Button.DEFAULTS = {\n loadingText: 'loading...'\n }\n\n Button.prototype.setState = function (state) {\n var d = 'disabled'\n var $el = this.$element\n var val = $el.is('input') ? 'val' : 'html'\n var data = $el.data()\n\n state += 'Text'\n\n if (data.resetText == null) $el.data('resetText', $el[val]())\n\n // push to event loop to allow forms to submit\n setTimeout($.proxy(function () {\n $el[val](data[state] == null ? this.options[state] : data[state])\n\n if (state == 'loadingText') {\n this.isLoading = true\n $el.addClass(d).attr(d, d).prop(d, true)\n } else if (this.isLoading) {\n this.isLoading = false\n $el.removeClass(d).removeAttr(d).prop(d, false)\n }\n }, this), 0)\n }\n\n Button.prototype.toggle = function () {\n var changed = true\n var $parent = this.$element.closest('[data-toggle=\"buttons\"]')\n\n if ($parent.length) {\n var $input = this.$element.find('input')\n if ($input.prop('type') == 'radio') {\n if ($input.prop('checked')) changed = false\n $parent.find('.active').removeClass('active')\n this.$element.addClass('active')\n } else if ($input.prop('type') == 'checkbox') {\n if (($input.prop('checked')) !== this.$element.hasClass('active')) changed = false\n this.$element.toggleClass('active')\n }\n $input.prop('checked', this.$element.hasClass('active'))\n if (changed) $input.trigger('change')\n } else {\n this.$element.attr('aria-pressed', !this.$element.hasClass('active'))\n this.$element.toggleClass('active')\n }\n }\n\n\n // BUTTON PLUGIN DEFINITION\n // ========================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.button')\n var options = typeof option == 'object' && option\n\n if (!data) $this.data('bs.button', (data = new Button(this, options)))\n\n if (option == 'toggle') data.toggle()\n else if (option) data.setState(option)\n })\n }\n\n var old = $.fn.button\n\n $.fn.button = Plugin\n $.fn.button.Constructor = Button\n\n\n // BUTTON NO CONFLICT\n // ==================\n\n $.fn.button.noConflict = function () {\n $.fn.button = old\n return this\n }\n\n\n // BUTTON DATA-API\n // ===============\n\n $(document)\n .on('click.bs.button.data-api', '[data-toggle^=\"button\"]', function (e) {\n var $btn = $(e.target).closest('.btn')\n Plugin.call($btn, 'toggle')\n if (!($(e.target).is('input[type=\"radio\"], input[type=\"checkbox\"]'))) {\n // Prevent double click on radios, and the double selections (so cancellation) on checkboxes\n e.preventDefault()\n // The target component still receive the focus\n if ($btn.is('input,button')) $btn.trigger('focus')\n else $btn.find('input:visible,button:visible').first().trigger('focus')\n }\n })\n .on('focus.bs.button.data-api blur.bs.button.data-api', '[data-toggle^=\"button\"]', function (e) {\n $(e.target).closest('.btn').toggleClass('focus', /^focus(in)?$/.test(e.type))\n })\n\n}(jQuery);\n","/* ========================================================================\n * Bootstrap: carousel.js v3.3.7\n * http://getbootstrap.com/javascript/#carousel\n * ========================================================================\n * Copyright 2011-2016 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // CAROUSEL CLASS DEFINITION\n // =========================\n\n var Carousel = function (element, options) {\n this.$element = $(element)\n this.$indicators = this.$element.find('.carousel-indicators')\n this.options = options\n this.paused = null\n this.sliding = null\n this.interval = null\n this.$active = null\n this.$items = null\n\n this.options.keyboard && this.$element.on('keydown.bs.carousel', $.proxy(this.keydown, this))\n\n this.options.pause == 'hover' && !('ontouchstart' in document.documentElement) && this.$element\n .on('mouseenter.bs.carousel', $.proxy(this.pause, this))\n .on('mouseleave.bs.carousel', $.proxy(this.cycle, this))\n }\n\n Carousel.VERSION = '3.3.7'\n\n Carousel.TRANSITION_DURATION = 600\n\n Carousel.DEFAULTS = {\n interval: 5000,\n pause: 'hover',\n wrap: true,\n keyboard: true\n }\n\n Carousel.prototype.keydown = function (e) {\n if (/input|textarea/i.test(e.target.tagName)) return\n switch (e.which) {\n case 37: this.prev(); break\n case 39: this.next(); break\n default: return\n }\n\n e.preventDefault()\n }\n\n Carousel.prototype.cycle = function (e) {\n e || (this.paused = false)\n\n this.interval && clearInterval(this.interval)\n\n this.options.interval\n && !this.paused\n && (this.interval = setInterval($.proxy(this.next, this), this.options.interval))\n\n return this\n }\n\n Carousel.prototype.getItemIndex = function (item) {\n this.$items = item.parent().children('.item')\n return this.$items.index(item || this.$active)\n }\n\n Carousel.prototype.getItemForDirection = function (direction, active) {\n var activeIndex = this.getItemIndex(active)\n var willWrap = (direction == 'prev' && activeIndex === 0)\n || (direction == 'next' && activeIndex == (this.$items.length - 1))\n if (willWrap && !this.options.wrap) return active\n var delta = direction == 'prev' ? -1 : 1\n var itemIndex = (activeIndex + delta) % this.$items.length\n return this.$items.eq(itemIndex)\n }\n\n Carousel.prototype.to = function (pos) {\n var that = this\n var activeIndex = this.getItemIndex(this.$active = this.$element.find('.item.active'))\n\n if (pos > (this.$items.length - 1) || pos < 0) return\n\n if (this.sliding) return this.$element.one('slid.bs.carousel', function () { that.to(pos) }) // yes, \"slid\"\n if (activeIndex == pos) return this.pause().cycle()\n\n return this.slide(pos > activeIndex ? 'next' : 'prev', this.$items.eq(pos))\n }\n\n Carousel.prototype.pause = function (e) {\n e || (this.paused = true)\n\n if (this.$element.find('.next, .prev').length && $.support.transition) {\n this.$element.trigger($.support.transition.end)\n this.cycle(true)\n }\n\n this.interval = clearInterval(this.interval)\n\n return this\n }\n\n Carousel.prototype.next = function () {\n if (this.sliding) return\n return this.slide('next')\n }\n\n Carousel.prototype.prev = function () {\n if (this.sliding) return\n return this.slide('prev')\n }\n\n Carousel.prototype.slide = function (type, next) {\n var $active = this.$element.find('.item.active')\n var $next = next || this.getItemForDirection(type, $active)\n var isCycling = this.interval\n var direction = type == 'next' ? 'left' : 'right'\n var that = this\n\n if ($next.hasClass('active')) return (this.sliding = false)\n\n var relatedTarget = $next[0]\n var slideEvent = $.Event('slide.bs.carousel', {\n relatedTarget: relatedTarget,\n direction: direction\n })\n this.$element.trigger(slideEvent)\n if (slideEvent.isDefaultPrevented()) return\n\n this.sliding = true\n\n isCycling && this.pause()\n\n if (this.$indicators.length) {\n this.$indicators.find('.active').removeClass('active')\n var $nextIndicator = $(this.$indicators.children()[this.getItemIndex($next)])\n $nextIndicator && $nextIndicator.addClass('active')\n }\n\n var slidEvent = $.Event('slid.bs.carousel', { relatedTarget: relatedTarget, direction: direction }) // yes, \"slid\"\n if ($.support.transition && this.$element.hasClass('slide')) {\n $next.addClass(type)\n $next[0].offsetWidth // force reflow\n $active.addClass(direction)\n $next.addClass(direction)\n $active\n .one('bsTransitionEnd', function () {\n $next.removeClass([type, direction].join(' ')).addClass('active')\n $active.removeClass(['active', direction].join(' '))\n that.sliding = false\n setTimeout(function () {\n that.$element.trigger(slidEvent)\n }, 0)\n })\n .emulateTransitionEnd(Carousel.TRANSITION_DURATION)\n } else {\n $active.removeClass('active')\n $next.addClass('active')\n this.sliding = false\n this.$element.trigger(slidEvent)\n }\n\n isCycling && this.cycle()\n\n return this\n }\n\n\n // CAROUSEL PLUGIN DEFINITION\n // ==========================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.carousel')\n var options = $.extend({}, Carousel.DEFAULTS, $this.data(), typeof option == 'object' && option)\n var action = typeof option == 'string' ? option : options.slide\n\n if (!data) $this.data('bs.carousel', (data = new Carousel(this, options)))\n if (typeof option == 'number') data.to(option)\n else if (action) data[action]()\n else if (options.interval) data.pause().cycle()\n })\n }\n\n var old = $.fn.carousel\n\n $.fn.carousel = Plugin\n $.fn.carousel.Constructor = Carousel\n\n\n // CAROUSEL NO CONFLICT\n // ====================\n\n $.fn.carousel.noConflict = function () {\n $.fn.carousel = old\n return this\n }\n\n\n // CAROUSEL DATA-API\n // =================\n\n var clickHandler = function (e) {\n var href\n var $this = $(this)\n var $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\\s]+$)/, '')) // strip for ie7\n if (!$target.hasClass('carousel')) return\n var options = $.extend({}, $target.data(), $this.data())\n var slideIndex = $this.attr('data-slide-to')\n if (slideIndex) options.interval = false\n\n Plugin.call($target, options)\n\n if (slideIndex) {\n $target.data('bs.carousel').to(slideIndex)\n }\n\n e.preventDefault()\n }\n\n $(document)\n .on('click.bs.carousel.data-api', '[data-slide]', clickHandler)\n .on('click.bs.carousel.data-api', '[data-slide-to]', clickHandler)\n\n $(window).on('load', function () {\n $('[data-ride=\"carousel\"]').each(function () {\n var $carousel = $(this)\n Plugin.call($carousel, $carousel.data())\n })\n })\n\n}(jQuery);\n","/* ========================================================================\n * Bootstrap: collapse.js v3.3.7\n * http://getbootstrap.com/javascript/#collapse\n * ========================================================================\n * Copyright 2011-2016 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n/* jshint latedef: false */\n\n+function ($) {\n 'use strict';\n\n // COLLAPSE PUBLIC CLASS DEFINITION\n // ================================\n\n var Collapse = function (element, options) {\n this.$element = $(element)\n this.options = $.extend({}, Collapse.DEFAULTS, options)\n this.$trigger = $('[data-toggle=\"collapse\"][href=\"#' + element.id + '\"],' +\n '[data-toggle=\"collapse\"][data-target=\"#' + element.id + '\"]')\n this.transitioning = null\n\n if (this.options.parent) {\n this.$parent = this.getParent()\n } else {\n this.addAriaAndCollapsedClass(this.$element, this.$trigger)\n }\n\n if (this.options.toggle) this.toggle()\n }\n\n Collapse.VERSION = '3.3.7'\n\n Collapse.TRANSITION_DURATION = 350\n\n Collapse.DEFAULTS = {\n toggle: true\n }\n\n Collapse.prototype.dimension = function () {\n var hasWidth = this.$element.hasClass('width')\n return hasWidth ? 'width' : 'height'\n }\n\n Collapse.prototype.show = function () {\n if (this.transitioning || this.$element.hasClass('in')) return\n\n var activesData\n var actives = this.$parent && this.$parent.children('.panel').children('.in, .collapsing')\n\n if (actives && actives.length) {\n activesData = actives.data('bs.collapse')\n if (activesData && activesData.transitioning) return\n }\n\n var startEvent = $.Event('show.bs.collapse')\n this.$element.trigger(startEvent)\n if (startEvent.isDefaultPrevented()) return\n\n if (actives && actives.length) {\n Plugin.call(actives, 'hide')\n activesData || actives.data('bs.collapse', null)\n }\n\n var dimension = this.dimension()\n\n this.$element\n .removeClass('collapse')\n .addClass('collapsing')[dimension](0)\n .attr('aria-expanded', true)\n\n this.$trigger\n .removeClass('collapsed')\n .attr('aria-expanded', true)\n\n this.transitioning = 1\n\n var complete = function () {\n this.$element\n .removeClass('collapsing')\n .addClass('collapse in')[dimension]('')\n this.transitioning = 0\n this.$element\n .trigger('shown.bs.collapse')\n }\n\n if (!$.support.transition) return complete.call(this)\n\n var scrollSize = $.camelCase(['scroll', dimension].join('-'))\n\n this.$element\n .one('bsTransitionEnd', $.proxy(complete, this))\n .emulateTransitionEnd(Collapse.TRANSITION_DURATION)[dimension](this.$element[0][scrollSize])\n }\n\n Collapse.prototype.hide = function () {\n if (this.transitioning || !this.$element.hasClass('in')) return\n\n var startEvent = $.Event('hide.bs.collapse')\n this.$element.trigger(startEvent)\n if (startEvent.isDefaultPrevented()) return\n\n var dimension = this.dimension()\n\n this.$element[dimension](this.$element[dimension]())[0].offsetHeight\n\n this.$element\n .addClass('collapsing')\n .removeClass('collapse in')\n .attr('aria-expanded', false)\n\n this.$trigger\n .addClass('collapsed')\n .attr('aria-expanded', false)\n\n this.transitioning = 1\n\n var complete = function () {\n this.transitioning = 0\n this.$element\n .removeClass('collapsing')\n .addClass('collapse')\n .trigger('hidden.bs.collapse')\n }\n\n if (!$.support.transition) return complete.call(this)\n\n this.$element\n [dimension](0)\n .one('bsTransitionEnd', $.proxy(complete, this))\n .emulateTransitionEnd(Collapse.TRANSITION_DURATION)\n }\n\n Collapse.prototype.toggle = function () {\n this[this.$element.hasClass('in') ? 'hide' : 'show']()\n }\n\n Collapse.prototype.getParent = function () {\n return $(this.options.parent)\n .find('[data-toggle=\"collapse\"][data-parent=\"' + this.options.parent + '\"]')\n .each($.proxy(function (i, element) {\n var $element = $(element)\n this.addAriaAndCollapsedClass(getTargetFromTrigger($element), $element)\n }, this))\n .end()\n }\n\n Collapse.prototype.addAriaAndCollapsedClass = function ($element, $trigger) {\n var isOpen = $element.hasClass('in')\n\n $element.attr('aria-expanded', isOpen)\n $trigger\n .toggleClass('collapsed', !isOpen)\n .attr('aria-expanded', isOpen)\n }\n\n function getTargetFromTrigger($trigger) {\n var href\n var target = $trigger.attr('data-target')\n || (href = $trigger.attr('href')) && href.replace(/.*(?=#[^\\s]+$)/, '') // strip for ie7\n\n return $(target)\n }\n\n\n // COLLAPSE PLUGIN DEFINITION\n // ==========================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.collapse')\n var options = $.extend({}, Collapse.DEFAULTS, $this.data(), typeof option == 'object' && option)\n\n if (!data && options.toggle && /show|hide/.test(option)) options.toggle = false\n if (!data) $this.data('bs.collapse', (data = new Collapse(this, options)))\n if (typeof option == 'string') data[option]()\n })\n }\n\n var old = $.fn.collapse\n\n $.fn.collapse = Plugin\n $.fn.collapse.Constructor = Collapse\n\n\n // COLLAPSE NO CONFLICT\n // ====================\n\n $.fn.collapse.noConflict = function () {\n $.fn.collapse = old\n return this\n }\n\n\n // COLLAPSE DATA-API\n // =================\n\n $(document).on('click.bs.collapse.data-api', '[data-toggle=\"collapse\"]', function (e) {\n var $this = $(this)\n\n if (!$this.attr('data-target')) e.preventDefault()\n\n var $target = getTargetFromTrigger($this)\n var data = $target.data('bs.collapse')\n var option = data ? 'toggle' : $this.data()\n\n Plugin.call($target, option)\n })\n\n}(jQuery);\n","/* ========================================================================\n * Bootstrap: dropdown.js v3.3.7\n * http://getbootstrap.com/javascript/#dropdowns\n * ========================================================================\n * Copyright 2011-2016 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // DROPDOWN CLASS DEFINITION\n // =========================\n\n var backdrop = '.dropdown-backdrop'\n var toggle = '[data-toggle=\"dropdown\"]'\n var Dropdown = function (element) {\n $(element).on('click.bs.dropdown', this.toggle)\n }\n\n Dropdown.VERSION = '3.3.7'\n\n function getParent($this) {\n var selector = $this.attr('data-target')\n\n if (!selector) {\n selector = $this.attr('href')\n selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\\s]*$)/, '') // strip for ie7\n }\n\n var $parent = selector && $(selector)\n\n return $parent && $parent.length ? $parent : $this.parent()\n }\n\n function clearMenus(e) {\n if (e && e.which === 3) return\n $(backdrop).remove()\n $(toggle).each(function () {\n var $this = $(this)\n var $parent = getParent($this)\n var relatedTarget = { relatedTarget: this }\n\n if (!$parent.hasClass('open')) return\n\n if (e && e.type == 'click' && /input|textarea/i.test(e.target.tagName) && $.contains($parent[0], e.target)) return\n\n $parent.trigger(e = $.Event('hide.bs.dropdown', relatedTarget))\n\n if (e.isDefaultPrevented()) return\n\n $this.attr('aria-expanded', 'false')\n $parent.removeClass('open').trigger($.Event('hidden.bs.dropdown', relatedTarget))\n })\n }\n\n Dropdown.prototype.toggle = function (e) {\n var $this = $(this)\n\n if ($this.is('.disabled, :disabled')) return\n\n var $parent = getParent($this)\n var isActive = $parent.hasClass('open')\n\n clearMenus()\n\n if (!isActive) {\n if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) {\n // if mobile we use a backdrop because click events don't delegate\n $(document.createElement('div'))\n .addClass('dropdown-backdrop')\n .insertAfter($(this))\n .on('click', clearMenus)\n }\n\n var relatedTarget = { relatedTarget: this }\n $parent.trigger(e = $.Event('show.bs.dropdown', relatedTarget))\n\n if (e.isDefaultPrevented()) return\n\n $this\n .trigger('focus')\n .attr('aria-expanded', 'true')\n\n $parent\n .toggleClass('open')\n .trigger($.Event('shown.bs.dropdown', relatedTarget))\n }\n\n return false\n }\n\n Dropdown.prototype.keydown = function (e) {\n if (!/(38|40|27|32)/.test(e.which) || /input|textarea/i.test(e.target.tagName)) return\n\n var $this = $(this)\n\n e.preventDefault()\n e.stopPropagation()\n\n if ($this.is('.disabled, :disabled')) return\n\n var $parent = getParent($this)\n var isActive = $parent.hasClass('open')\n\n if (!isActive && e.which != 27 || isActive && e.which == 27) {\n if (e.which == 27) $parent.find(toggle).trigger('focus')\n return $this.trigger('click')\n }\n\n var desc = ' li:not(.disabled):visible a'\n var $items = $parent.find('.dropdown-menu' + desc)\n\n if (!$items.length) return\n\n var index = $items.index(e.target)\n\n if (e.which == 38 && index > 0) index-- // up\n if (e.which == 40 && index < $items.length - 1) index++ // down\n if (!~index) index = 0\n\n $items.eq(index).trigger('focus')\n }\n\n\n // DROPDOWN PLUGIN DEFINITION\n // ==========================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.dropdown')\n\n if (!data) $this.data('bs.dropdown', (data = new Dropdown(this)))\n if (typeof option == 'string') data[option].call($this)\n })\n }\n\n var old = $.fn.dropdown\n\n $.fn.dropdown = Plugin\n $.fn.dropdown.Constructor = Dropdown\n\n\n // DROPDOWN NO CONFLICT\n // ====================\n\n $.fn.dropdown.noConflict = function () {\n $.fn.dropdown = old\n return this\n }\n\n\n // APPLY TO STANDARD DROPDOWN ELEMENTS\n // ===================================\n\n $(document)\n .on('click.bs.dropdown.data-api', clearMenus)\n .on('click.bs.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })\n .on('click.bs.dropdown.data-api', toggle, Dropdown.prototype.toggle)\n .on('keydown.bs.dropdown.data-api', toggle, Dropdown.prototype.keydown)\n .on('keydown.bs.dropdown.data-api', '.dropdown-menu', Dropdown.prototype.keydown)\n\n}(jQuery);\n","/* ========================================================================\n * Bootstrap: modal.js v3.3.7\n * http://getbootstrap.com/javascript/#modals\n * ========================================================================\n * Copyright 2011-2016 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // MODAL CLASS DEFINITION\n // ======================\n\n var Modal = function (element, options) {\n this.options = options\n this.$body = $(document.body)\n this.$element = $(element)\n this.$dialog = this.$element.find('.modal-dialog')\n this.$backdrop = null\n this.isShown = null\n this.originalBodyPad = null\n this.scrollbarWidth = 0\n this.ignoreBackdropClick = false\n\n if (this.options.remote) {\n this.$element\n .find('.modal-content')\n .load(this.options.remote, $.proxy(function () {\n this.$element.trigger('loaded.bs.modal')\n }, this))\n }\n }\n\n Modal.VERSION = '3.3.7'\n\n Modal.TRANSITION_DURATION = 300\n Modal.BACKDROP_TRANSITION_DURATION = 150\n\n Modal.DEFAULTS = {\n backdrop: true,\n keyboard: true,\n show: true\n }\n\n Modal.prototype.toggle = function (_relatedTarget) {\n return this.isShown ? this.hide() : this.show(_relatedTarget)\n }\n\n Modal.prototype.show = function (_relatedTarget) {\n var that = this\n var e = $.Event('show.bs.modal', { relatedTarget: _relatedTarget })\n\n this.$element.trigger(e)\n\n if (this.isShown || e.isDefaultPrevented()) return\n\n this.isShown = true\n\n this.checkScrollbar()\n this.setScrollbar()\n this.$body.addClass('modal-open')\n\n this.escape()\n this.resize()\n\n this.$element.on('click.dismiss.bs.modal', '[data-dismiss=\"modal\"]', $.proxy(this.hide, this))\n\n this.$dialog.on('mousedown.dismiss.bs.modal', function () {\n that.$element.one('mouseup.dismiss.bs.modal', function (e) {\n if ($(e.target).is(that.$element)) that.ignoreBackdropClick = true\n })\n })\n\n this.backdrop(function () {\n var transition = $.support.transition && that.$element.hasClass('fade')\n\n if (!that.$element.parent().length) {\n that.$element.appendTo(that.$body) // don't move modals dom position\n }\n\n that.$element\n .show()\n .scrollTop(0)\n\n that.adjustDialog()\n\n if (transition) {\n that.$element[0].offsetWidth // force reflow\n }\n\n that.$element.addClass('in')\n\n that.enforceFocus()\n\n var e = $.Event('shown.bs.modal', { relatedTarget: _relatedTarget })\n\n transition ?\n that.$dialog // wait for modal to slide in\n .one('bsTransitionEnd', function () {\n that.$element.trigger('focus').trigger(e)\n })\n .emulateTransitionEnd(Modal.TRANSITION_DURATION) :\n that.$element.trigger('focus').trigger(e)\n })\n }\n\n Modal.prototype.hide = function (e) {\n if (e) e.preventDefault()\n\n e = $.Event('hide.bs.modal')\n\n this.$element.trigger(e)\n\n if (!this.isShown || e.isDefaultPrevented()) return\n\n this.isShown = false\n\n this.escape()\n this.resize()\n\n $(document).off('focusin.bs.modal')\n\n this.$element\n .removeClass('in')\n .off('click.dismiss.bs.modal')\n .off('mouseup.dismiss.bs.modal')\n\n this.$dialog.off('mousedown.dismiss.bs.modal')\n\n $.support.transition && this.$element.hasClass('fade') ?\n this.$element\n .one('bsTransitionEnd', $.proxy(this.hideModal, this))\n .emulateTransitionEnd(Modal.TRANSITION_DURATION) :\n this.hideModal()\n }\n\n Modal.prototype.enforceFocus = function () {\n $(document)\n .off('focusin.bs.modal') // guard against infinite focus loop\n .on('focusin.bs.modal', $.proxy(function (e) {\n if (document !== e.target &&\n this.$element[0] !== e.target &&\n !this.$element.has(e.target).length) {\n this.$element.trigger('focus')\n }\n }, this))\n }\n\n Modal.prototype.escape = function () {\n if (this.isShown && this.options.keyboard) {\n this.$element.on('keydown.dismiss.bs.modal', $.proxy(function (e) {\n e.which == 27 && this.hide()\n }, this))\n } else if (!this.isShown) {\n this.$element.off('keydown.dismiss.bs.modal')\n }\n }\n\n Modal.prototype.resize = function () {\n if (this.isShown) {\n $(window).on('resize.bs.modal', $.proxy(this.handleUpdate, this))\n } else {\n $(window).off('resize.bs.modal')\n }\n }\n\n Modal.prototype.hideModal = function () {\n var that = this\n this.$element.hide()\n this.backdrop(function () {\n that.$body.removeClass('modal-open')\n that.resetAdjustments()\n that.resetScrollbar()\n that.$element.trigger('hidden.bs.modal')\n })\n }\n\n Modal.prototype.removeBackdrop = function () {\n this.$backdrop && this.$backdrop.remove()\n this.$backdrop = null\n }\n\n Modal.prototype.backdrop = function (callback) {\n var that = this\n var animate = this.$element.hasClass('fade') ? 'fade' : ''\n\n if (this.isShown && this.options.backdrop) {\n var doAnimate = $.support.transition && animate\n\n this.$backdrop = $(document.createElement('div'))\n .addClass('modal-backdrop ' + animate)\n .appendTo(this.$body)\n\n this.$element.on('click.dismiss.bs.modal', $.proxy(function (e) {\n if (this.ignoreBackdropClick) {\n this.ignoreBackdropClick = false\n return\n }\n if (e.target !== e.currentTarget) return\n this.options.backdrop == 'static'\n ? this.$element[0].focus()\n : this.hide()\n }, this))\n\n if (doAnimate) this.$backdrop[0].offsetWidth // force reflow\n\n this.$backdrop.addClass('in')\n\n if (!callback) return\n\n doAnimate ?\n this.$backdrop\n .one('bsTransitionEnd', callback)\n .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) :\n callback()\n\n } else if (!this.isShown && this.$backdrop) {\n this.$backdrop.removeClass('in')\n\n var callbackRemove = function () {\n that.removeBackdrop()\n callback && callback()\n }\n $.support.transition && this.$element.hasClass('fade') ?\n this.$backdrop\n .one('bsTransitionEnd', callbackRemove)\n .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) :\n callbackRemove()\n\n } else if (callback) {\n callback()\n }\n }\n\n // these following methods are used to handle overflowing modals\n\n Modal.prototype.handleUpdate = function () {\n this.adjustDialog()\n }\n\n Modal.prototype.adjustDialog = function () {\n var modalIsOverflowing = this.$element[0].scrollHeight > document.documentElement.clientHeight\n\n this.$element.css({\n paddingLeft: !this.bodyIsOverflowing && modalIsOverflowing ? this.scrollbarWidth : '',\n paddingRight: this.bodyIsOverflowing && !modalIsOverflowing ? this.scrollbarWidth : ''\n })\n }\n\n Modal.prototype.resetAdjustments = function () {\n this.$element.css({\n paddingLeft: '',\n paddingRight: ''\n })\n }\n\n Modal.prototype.checkScrollbar = function () {\n var fullWindowWidth = window.innerWidth\n if (!fullWindowWidth) { // workaround for missing window.innerWidth in IE8\n var documentElementRect = document.documentElement.getBoundingClientRect()\n fullWindowWidth = documentElementRect.right - Math.abs(documentElementRect.left)\n }\n this.bodyIsOverflowing = document.body.clientWidth < fullWindowWidth\n this.scrollbarWidth = this.measureScrollbar()\n }\n\n Modal.prototype.setScrollbar = function () {\n var bodyPad = parseInt((this.$body.css('padding-right') || 0), 10)\n this.originalBodyPad = document.body.style.paddingRight || ''\n if (this.bodyIsOverflowing) this.$body.css('padding-right', bodyPad + this.scrollbarWidth)\n }\n\n Modal.prototype.resetScrollbar = function () {\n this.$body.css('padding-right', this.originalBodyPad)\n }\n\n Modal.prototype.measureScrollbar = function () { // thx walsh\n var scrollDiv = document.createElement('div')\n scrollDiv.className = 'modal-scrollbar-measure'\n this.$body.append(scrollDiv)\n var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth\n this.$body[0].removeChild(scrollDiv)\n return scrollbarWidth\n }\n\n\n // MODAL PLUGIN DEFINITION\n // =======================\n\n function Plugin(option, _relatedTarget) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.modal')\n var options = $.extend({}, Modal.DEFAULTS, $this.data(), typeof option == 'object' && option)\n\n if (!data) $this.data('bs.modal', (data = new Modal(this, options)))\n if (typeof option == 'string') data[option](_relatedTarget)\n else if (options.show) data.show(_relatedTarget)\n })\n }\n\n var old = $.fn.modal\n\n $.fn.modal = Plugin\n $.fn.modal.Constructor = Modal\n\n\n // MODAL NO CONFLICT\n // =================\n\n $.fn.modal.noConflict = function () {\n $.fn.modal = old\n return this\n }\n\n\n // MODAL DATA-API\n // ==============\n\n $(document).on('click.bs.modal.data-api', '[data-toggle=\"modal\"]', function (e) {\n var $this = $(this)\n var href = $this.attr('href')\n var $target = $($this.attr('data-target') || (href && href.replace(/.*(?=#[^\\s]+$)/, ''))) // strip for ie7\n var option = $target.data('bs.modal') ? 'toggle' : $.extend({ remote: !/#/.test(href) && href }, $target.data(), $this.data())\n\n if ($this.is('a')) e.preventDefault()\n\n $target.one('show.bs.modal', function (showEvent) {\n if (showEvent.isDefaultPrevented()) return // only register focus restorer if modal will actually get shown\n $target.one('hidden.bs.modal', function () {\n $this.is(':visible') && $this.trigger('focus')\n })\n })\n Plugin.call($target, option, this)\n })\n\n}(jQuery);\n","/* ========================================================================\n * Bootstrap: popover.js v3.3.7\n * http://getbootstrap.com/javascript/#popovers\n * ========================================================================\n * Copyright 2011-2016 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // POPOVER PUBLIC CLASS DEFINITION\n // ===============================\n\n var Popover = function (element, options) {\n this.init('popover', element, options)\n }\n\n if (!$.fn.tooltip) throw new Error('Popover requires tooltip.js')\n\n Popover.VERSION = '3.3.7'\n\n Popover.DEFAULTS = $.extend({}, $.fn.tooltip.Constructor.DEFAULTS, {\n placement: 'right',\n trigger: 'click',\n content: '',\n template: '

'\n })\n\n\n // NOTE: POPOVER EXTENDS tooltip.js\n // ================================\n\n Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype)\n\n Popover.prototype.constructor = Popover\n\n Popover.prototype.getDefaults = function () {\n return Popover.DEFAULTS\n }\n\n Popover.prototype.setContent = function () {\n var $tip = this.tip()\n var title = this.getTitle()\n var content = this.getContent()\n\n $tip.find('.popover-title')[this.options.html ? 'html' : 'text'](title)\n $tip.find('.popover-content').children().detach().end()[ // we use append for html objects to maintain js events\n this.options.html ? (typeof content == 'string' ? 'html' : 'append') : 'text'\n ](content)\n\n $tip.removeClass('fade top bottom left right in')\n\n // IE8 doesn't accept hiding via the `:empty` pseudo selector, we have to do\n // this manually by checking the contents.\n if (!$tip.find('.popover-title').html()) $tip.find('.popover-title').hide()\n }\n\n Popover.prototype.hasContent = function () {\n return this.getTitle() || this.getContent()\n }\n\n Popover.prototype.getContent = function () {\n var $e = this.$element\n var o = this.options\n\n return $e.attr('data-content')\n || (typeof o.content == 'function' ?\n o.content.call($e[0]) :\n o.content)\n }\n\n Popover.prototype.arrow = function () {\n return (this.$arrow = this.$arrow || this.tip().find('.arrow'))\n }\n\n\n // POPOVER PLUGIN DEFINITION\n // =========================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.popover')\n var options = typeof option == 'object' && option\n\n if (!data && /destroy|hide/.test(option)) return\n if (!data) $this.data('bs.popover', (data = new Popover(this, options)))\n if (typeof option == 'string') data[option]()\n })\n }\n\n var old = $.fn.popover\n\n $.fn.popover = Plugin\n $.fn.popover.Constructor = Popover\n\n\n // POPOVER NO CONFLICT\n // ===================\n\n $.fn.popover.noConflict = function () {\n $.fn.popover = old\n return this\n }\n\n}(jQuery);\n","/* ========================================================================\n * Bootstrap: scrollspy.js v3.3.7\n * http://getbootstrap.com/javascript/#scrollspy\n * ========================================================================\n * Copyright 2011-2016 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // SCROLLSPY CLASS DEFINITION\n // ==========================\n\n function ScrollSpy(element, options) {\n this.$body = $(document.body)\n this.$scrollElement = $(element).is(document.body) ? $(window) : $(element)\n this.options = $.extend({}, ScrollSpy.DEFAULTS, options)\n this.selector = (this.options.target || '') + ' .nav li > a'\n this.offsets = []\n this.targets = []\n this.activeTarget = null\n this.scrollHeight = 0\n\n this.$scrollElement.on('scroll.bs.scrollspy', $.proxy(this.process, this))\n this.refresh()\n this.process()\n }\n\n ScrollSpy.VERSION = '3.3.7'\n\n ScrollSpy.DEFAULTS = {\n offset: 10\n }\n\n ScrollSpy.prototype.getScrollHeight = function () {\n return this.$scrollElement[0].scrollHeight || Math.max(this.$body[0].scrollHeight, document.documentElement.scrollHeight)\n }\n\n ScrollSpy.prototype.refresh = function () {\n var that = this\n var offsetMethod = 'offset'\n var offsetBase = 0\n\n this.offsets = []\n this.targets = []\n this.scrollHeight = this.getScrollHeight()\n\n if (!$.isWindow(this.$scrollElement[0])) {\n offsetMethod = 'position'\n offsetBase = this.$scrollElement.scrollTop()\n }\n\n this.$body\n .find(this.selector)\n .map(function () {\n var $el = $(this)\n var href = $el.data('target') || $el.attr('href')\n var $href = /^#./.test(href) && $(href)\n\n return ($href\n && $href.length\n && $href.is(':visible')\n && [[$href[offsetMethod]().top + offsetBase, href]]) || null\n })\n .sort(function (a, b) { return a[0] - b[0] })\n .each(function () {\n that.offsets.push(this[0])\n that.targets.push(this[1])\n })\n }\n\n ScrollSpy.prototype.process = function () {\n var scrollTop = this.$scrollElement.scrollTop() + this.options.offset\n var scrollHeight = this.getScrollHeight()\n var maxScroll = this.options.offset + scrollHeight - this.$scrollElement.height()\n var offsets = this.offsets\n var targets = this.targets\n var activeTarget = this.activeTarget\n var i\n\n if (this.scrollHeight != scrollHeight) {\n this.refresh()\n }\n\n if (scrollTop >= maxScroll) {\n return activeTarget != (i = targets[targets.length - 1]) && this.activate(i)\n }\n\n if (activeTarget && scrollTop < offsets[0]) {\n this.activeTarget = null\n return this.clear()\n }\n\n for (i = offsets.length; i--;) {\n activeTarget != targets[i]\n && scrollTop >= offsets[i]\n && (offsets[i + 1] === undefined || scrollTop < offsets[i + 1])\n && this.activate(targets[i])\n }\n }\n\n ScrollSpy.prototype.activate = function (target) {\n this.activeTarget = target\n\n this.clear()\n\n var selector = this.selector +\n '[data-target=\"' + target + '\"],' +\n this.selector + '[href=\"' + target + '\"]'\n\n var active = $(selector)\n .parents('li')\n .addClass('active')\n\n if (active.parent('.dropdown-menu').length) {\n active = active\n .closest('li.dropdown')\n .addClass('active')\n }\n\n active.trigger('activate.bs.scrollspy')\n }\n\n ScrollSpy.prototype.clear = function () {\n $(this.selector)\n .parentsUntil(this.options.target, '.active')\n .removeClass('active')\n }\n\n\n // SCROLLSPY PLUGIN DEFINITION\n // ===========================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.scrollspy')\n var options = typeof option == 'object' && option\n\n if (!data) $this.data('bs.scrollspy', (data = new ScrollSpy(this, options)))\n if (typeof option == 'string') data[option]()\n })\n }\n\n var old = $.fn.scrollspy\n\n $.fn.scrollspy = Plugin\n $.fn.scrollspy.Constructor = ScrollSpy\n\n\n // SCROLLSPY NO CONFLICT\n // =====================\n\n $.fn.scrollspy.noConflict = function () {\n $.fn.scrollspy = old\n return this\n }\n\n\n // SCROLLSPY DATA-API\n // ==================\n\n $(window).on('load.bs.scrollspy.data-api', function () {\n $('[data-spy=\"scroll\"]').each(function () {\n var $spy = $(this)\n Plugin.call($spy, $spy.data())\n })\n })\n\n}(jQuery);\n","/* ========================================================================\n * Bootstrap: tab.js v3.3.7\n * http://getbootstrap.com/javascript/#tabs\n * ========================================================================\n * Copyright 2011-2016 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // TAB CLASS DEFINITION\n // ====================\n\n var Tab = function (element) {\n // jscs:disable requireDollarBeforejQueryAssignment\n this.element = $(element)\n // jscs:enable requireDollarBeforejQueryAssignment\n }\n\n Tab.VERSION = '3.3.7'\n\n Tab.TRANSITION_DURATION = 150\n\n Tab.prototype.show = function () {\n var $this = this.element\n var $ul = $this.closest('ul:not(.dropdown-menu)')\n var selector = $this.data('target')\n\n if (!selector) {\n selector = $this.attr('href')\n selector = selector && selector.replace(/.*(?=#[^\\s]*$)/, '') // strip for ie7\n }\n\n if ($this.parent('li').hasClass('active')) return\n\n var $previous = $ul.find('.active:last a')\n var hideEvent = $.Event('hide.bs.tab', {\n relatedTarget: $this[0]\n })\n var showEvent = $.Event('show.bs.tab', {\n relatedTarget: $previous[0]\n })\n\n $previous.trigger(hideEvent)\n $this.trigger(showEvent)\n\n if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) return\n\n var $target = $(selector)\n\n this.activate($this.closest('li'), $ul)\n this.activate($target, $target.parent(), function () {\n $previous.trigger({\n type: 'hidden.bs.tab',\n relatedTarget: $this[0]\n })\n $this.trigger({\n type: 'shown.bs.tab',\n relatedTarget: $previous[0]\n })\n })\n }\n\n Tab.prototype.activate = function (element, container, callback) {\n var $active = container.find('> .active')\n var transition = callback\n && $.support.transition\n && ($active.length && $active.hasClass('fade') || !!container.find('> .fade').length)\n\n function next() {\n $active\n .removeClass('active')\n .find('> .dropdown-menu > .active')\n .removeClass('active')\n .end()\n .find('[data-toggle=\"tab\"]')\n .attr('aria-expanded', false)\n\n element\n .addClass('active')\n .find('[data-toggle=\"tab\"]')\n .attr('aria-expanded', true)\n\n if (transition) {\n element[0].offsetWidth // reflow for transition\n element.addClass('in')\n } else {\n element.removeClass('fade')\n }\n\n if (element.parent('.dropdown-menu').length) {\n element\n .closest('li.dropdown')\n .addClass('active')\n .end()\n .find('[data-toggle=\"tab\"]')\n .attr('aria-expanded', true)\n }\n\n callback && callback()\n }\n\n $active.length && transition ?\n $active\n .one('bsTransitionEnd', next)\n .emulateTransitionEnd(Tab.TRANSITION_DURATION) :\n next()\n\n $active.removeClass('in')\n }\n\n\n // TAB PLUGIN DEFINITION\n // =====================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.tab')\n\n if (!data) $this.data('bs.tab', (data = new Tab(this)))\n if (typeof option == 'string') data[option]()\n })\n }\n\n var old = $.fn.tab\n\n $.fn.tab = Plugin\n $.fn.tab.Constructor = Tab\n\n\n // TAB NO CONFLICT\n // ===============\n\n $.fn.tab.noConflict = function () {\n $.fn.tab = old\n return this\n }\n\n\n // TAB DATA-API\n // ============\n\n var clickHandler = function (e) {\n e.preventDefault()\n Plugin.call($(this), 'show')\n }\n\n $(document)\n .on('click.bs.tab.data-api', '[data-toggle=\"tab\"]', clickHandler)\n .on('click.bs.tab.data-api', '[data-toggle=\"pill\"]', clickHandler)\n\n}(jQuery);\n","/* ========================================================================\n * Bootstrap: tooltip.js v3.3.7\n * http://getbootstrap.com/javascript/#tooltip\n * Inspired by the original jQuery.tipsy by Jason Frame\n * ========================================================================\n * Copyright 2011-2016 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // TOOLTIP PUBLIC CLASS DEFINITION\n // ===============================\n\n var Tooltip = function (element, options) {\n this.type = null\n this.options = null\n this.enabled = null\n this.timeout = null\n this.hoverState = null\n this.$element = null\n this.inState = null\n\n this.init('tooltip', element, options)\n }\n\n Tooltip.VERSION = '3.3.7'\n\n Tooltip.TRANSITION_DURATION = 150\n\n Tooltip.DEFAULTS = {\n animation: true,\n placement: 'top',\n selector: false,\n template: '
',\n trigger: 'hover focus',\n title: '',\n delay: 0,\n html: false,\n container: false,\n viewport: {\n selector: 'body',\n padding: 0\n }\n }\n\n Tooltip.prototype.init = function (type, element, options) {\n this.enabled = true\n this.type = type\n this.$element = $(element)\n this.options = this.getOptions(options)\n this.$viewport = this.options.viewport && $($.isFunction(this.options.viewport) ? this.options.viewport.call(this, this.$element) : (this.options.viewport.selector || this.options.viewport))\n this.inState = { click: false, hover: false, focus: false }\n\n if (this.$element[0] instanceof document.constructor && !this.options.selector) {\n throw new Error('`selector` option must be specified when initializing ' + this.type + ' on the window.document object!')\n }\n\n var triggers = this.options.trigger.split(' ')\n\n for (var i = triggers.length; i--;) {\n var trigger = triggers[i]\n\n if (trigger == 'click') {\n this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this))\n } else if (trigger != 'manual') {\n var eventIn = trigger == 'hover' ? 'mouseenter' : 'focusin'\n var eventOut = trigger == 'hover' ? 'mouseleave' : 'focusout'\n\n this.$element.on(eventIn + '.' + this.type, this.options.selector, $.proxy(this.enter, this))\n this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this))\n }\n }\n\n this.options.selector ?\n (this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) :\n this.fixTitle()\n }\n\n Tooltip.prototype.getDefaults = function () {\n return Tooltip.DEFAULTS\n }\n\n Tooltip.prototype.getOptions = function (options) {\n options = $.extend({}, this.getDefaults(), this.$element.data(), options)\n\n if (options.delay && typeof options.delay == 'number') {\n options.delay = {\n show: options.delay,\n hide: options.delay\n }\n }\n\n return options\n }\n\n Tooltip.prototype.getDelegateOptions = function () {\n var options = {}\n var defaults = this.getDefaults()\n\n this._options && $.each(this._options, function (key, value) {\n if (defaults[key] != value) options[key] = value\n })\n\n return options\n }\n\n Tooltip.prototype.enter = function (obj) {\n var self = obj instanceof this.constructor ?\n obj : $(obj.currentTarget).data('bs.' + this.type)\n\n if (!self) {\n self = new this.constructor(obj.currentTarget, this.getDelegateOptions())\n $(obj.currentTarget).data('bs.' + this.type, self)\n }\n\n if (obj instanceof $.Event) {\n self.inState[obj.type == 'focusin' ? 'focus' : 'hover'] = true\n }\n\n if (self.tip().hasClass('in') || self.hoverState == 'in') {\n self.hoverState = 'in'\n return\n }\n\n clearTimeout(self.timeout)\n\n self.hoverState = 'in'\n\n if (!self.options.delay || !self.options.delay.show) return self.show()\n\n self.timeout = setTimeout(function () {\n if (self.hoverState == 'in') self.show()\n }, self.options.delay.show)\n }\n\n Tooltip.prototype.isInStateTrue = function () {\n for (var key in this.inState) {\n if (this.inState[key]) return true\n }\n\n return false\n }\n\n Tooltip.prototype.leave = function (obj) {\n var self = obj instanceof this.constructor ?\n obj : $(obj.currentTarget).data('bs.' + this.type)\n\n if (!self) {\n self = new this.constructor(obj.currentTarget, this.getDelegateOptions())\n $(obj.currentTarget).data('bs.' + this.type, self)\n }\n\n if (obj instanceof $.Event) {\n self.inState[obj.type == 'focusout' ? 'focus' : 'hover'] = false\n }\n\n if (self.isInStateTrue()) return\n\n clearTimeout(self.timeout)\n\n self.hoverState = 'out'\n\n if (!self.options.delay || !self.options.delay.hide) return self.hide()\n\n self.timeout = setTimeout(function () {\n if (self.hoverState == 'out') self.hide()\n }, self.options.delay.hide)\n }\n\n Tooltip.prototype.show = function () {\n var e = $.Event('show.bs.' + this.type)\n\n if (this.hasContent() && this.enabled) {\n this.$element.trigger(e)\n\n var inDom = $.contains(this.$element[0].ownerDocument.documentElement, this.$element[0])\n if (e.isDefaultPrevented() || !inDom) return\n var that = this\n\n var $tip = this.tip()\n\n var tipId = this.getUID(this.type)\n\n this.setContent()\n $tip.attr('id', tipId)\n this.$element.attr('aria-describedby', tipId)\n\n if (this.options.animation) $tip.addClass('fade')\n\n var placement = typeof this.options.placement == 'function' ?\n this.options.placement.call(this, $tip[0], this.$element[0]) :\n this.options.placement\n\n var autoToken = /\\s?auto?\\s?/i\n var autoPlace = autoToken.test(placement)\n if (autoPlace) placement = placement.replace(autoToken, '') || 'top'\n\n $tip\n .detach()\n .css({ top: 0, left: 0, display: 'block' })\n .addClass(placement)\n .data('bs.' + this.type, this)\n\n this.options.container ? $tip.appendTo(this.options.container) : $tip.insertAfter(this.$element)\n this.$element.trigger('inserted.bs.' + this.type)\n\n var pos = this.getPosition()\n var actualWidth = $tip[0].offsetWidth\n var actualHeight = $tip[0].offsetHeight\n\n if (autoPlace) {\n var orgPlacement = placement\n var viewportDim = this.getPosition(this.$viewport)\n\n placement = placement == 'bottom' && pos.bottom + actualHeight > viewportDim.bottom ? 'top' :\n placement == 'top' && pos.top - actualHeight < viewportDim.top ? 'bottom' :\n placement == 'right' && pos.right + actualWidth > viewportDim.width ? 'left' :\n placement == 'left' && pos.left - actualWidth < viewportDim.left ? 'right' :\n placement\n\n $tip\n .removeClass(orgPlacement)\n .addClass(placement)\n }\n\n var calculatedOffset = this.getCalculatedOffset(placement, pos, actualWidth, actualHeight)\n\n this.applyPlacement(calculatedOffset, placement)\n\n var complete = function () {\n var prevHoverState = that.hoverState\n that.$element.trigger('shown.bs.' + that.type)\n that.hoverState = null\n\n if (prevHoverState == 'out') that.leave(that)\n }\n\n $.support.transition && this.$tip.hasClass('fade') ?\n $tip\n .one('bsTransitionEnd', complete)\n .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) :\n complete()\n }\n }\n\n Tooltip.prototype.applyPlacement = function (offset, placement) {\n var $tip = this.tip()\n var width = $tip[0].offsetWidth\n var height = $tip[0].offsetHeight\n\n // manually read margins because getBoundingClientRect includes difference\n var marginTop = parseInt($tip.css('margin-top'), 10)\n var marginLeft = parseInt($tip.css('margin-left'), 10)\n\n // we must check for NaN for ie 8/9\n if (isNaN(marginTop)) marginTop = 0\n if (isNaN(marginLeft)) marginLeft = 0\n\n offset.top += marginTop\n offset.left += marginLeft\n\n // $.fn.offset doesn't round pixel values\n // so we use setOffset directly with our own function B-0\n $.offset.setOffset($tip[0], $.extend({\n using: function (props) {\n $tip.css({\n top: Math.round(props.top),\n left: Math.round(props.left)\n })\n }\n }, offset), 0)\n\n $tip.addClass('in')\n\n // check to see if placing tip in new offset caused the tip to resize itself\n var actualWidth = $tip[0].offsetWidth\n var actualHeight = $tip[0].offsetHeight\n\n if (placement == 'top' && actualHeight != height) {\n offset.top = offset.top + height - actualHeight\n }\n\n var delta = this.getViewportAdjustedDelta(placement, offset, actualWidth, actualHeight)\n\n if (delta.left) offset.left += delta.left\n else offset.top += delta.top\n\n var isVertical = /top|bottom/.test(placement)\n var arrowDelta = isVertical ? delta.left * 2 - width + actualWidth : delta.top * 2 - height + actualHeight\n var arrowOffsetPosition = isVertical ? 'offsetWidth' : 'offsetHeight'\n\n $tip.offset(offset)\n this.replaceArrow(arrowDelta, $tip[0][arrowOffsetPosition], isVertical)\n }\n\n Tooltip.prototype.replaceArrow = function (delta, dimension, isVertical) {\n this.arrow()\n .css(isVertical ? 'left' : 'top', 50 * (1 - delta / dimension) + '%')\n .css(isVertical ? 'top' : 'left', '')\n }\n\n Tooltip.prototype.setContent = function () {\n var $tip = this.tip()\n var title = this.getTitle()\n\n $tip.find('.tooltip-inner')[this.options.html ? 'html' : 'text'](title)\n $tip.removeClass('fade in top bottom left right')\n }\n\n Tooltip.prototype.hide = function (callback) {\n var that = this\n var $tip = $(this.$tip)\n var e = $.Event('hide.bs.' + this.type)\n\n function complete() {\n if (that.hoverState != 'in') $tip.detach()\n if (that.$element) { // TODO: Check whether guarding this code with this `if` is really necessary.\n that.$element\n .removeAttr('aria-describedby')\n .trigger('hidden.bs.' + that.type)\n }\n callback && callback()\n }\n\n this.$element.trigger(e)\n\n if (e.isDefaultPrevented()) return\n\n $tip.removeClass('in')\n\n $.support.transition && $tip.hasClass('fade') ?\n $tip\n .one('bsTransitionEnd', complete)\n .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) :\n complete()\n\n this.hoverState = null\n\n return this\n }\n\n Tooltip.prototype.fixTitle = function () {\n var $e = this.$element\n if ($e.attr('title') || typeof $e.attr('data-original-title') != 'string') {\n $e.attr('data-original-title', $e.attr('title') || '').attr('title', '')\n }\n }\n\n Tooltip.prototype.hasContent = function () {\n return this.getTitle()\n }\n\n Tooltip.prototype.getPosition = function ($element) {\n $element = $element || this.$element\n\n var el = $element[0]\n var isBody = el.tagName == 'BODY'\n\n var elRect = el.getBoundingClientRect()\n if (elRect.width == null) {\n // width and height are missing in IE8, so compute them manually; see https://github.com/twbs/bootstrap/issues/14093\n elRect = $.extend({}, elRect, { width: elRect.right - elRect.left, height: elRect.bottom - elRect.top })\n }\n var isSvg = window.SVGElement && el instanceof window.SVGElement\n // Avoid using $.offset() on SVGs since it gives incorrect results in jQuery 3.\n // See https://github.com/twbs/bootstrap/issues/20280\n var elOffset = isBody ? { top: 0, left: 0 } : (isSvg ? null : $element.offset())\n var scroll = { scroll: isBody ? document.documentElement.scrollTop || document.body.scrollTop : $element.scrollTop() }\n var outerDims = isBody ? { width: $(window).width(), height: $(window).height() } : null\n\n return $.extend({}, elRect, scroll, outerDims, elOffset)\n }\n\n Tooltip.prototype.getCalculatedOffset = function (placement, pos, actualWidth, actualHeight) {\n return placement == 'bottom' ? { top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2 } :\n placement == 'top' ? { top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2 } :\n placement == 'left' ? { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth } :\n /* placement == 'right' */ { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width }\n\n }\n\n Tooltip.prototype.getViewportAdjustedDelta = function (placement, pos, actualWidth, actualHeight) {\n var delta = { top: 0, left: 0 }\n if (!this.$viewport) return delta\n\n var viewportPadding = this.options.viewport && this.options.viewport.padding || 0\n var viewportDimensions = this.getPosition(this.$viewport)\n\n if (/right|left/.test(placement)) {\n var topEdgeOffset = pos.top - viewportPadding - viewportDimensions.scroll\n var bottomEdgeOffset = pos.top + viewportPadding - viewportDimensions.scroll + actualHeight\n if (topEdgeOffset < viewportDimensions.top) { // top overflow\n delta.top = viewportDimensions.top - topEdgeOffset\n } else if (bottomEdgeOffset > viewportDimensions.top + viewportDimensions.height) { // bottom overflow\n delta.top = viewportDimensions.top + viewportDimensions.height - bottomEdgeOffset\n }\n } else {\n var leftEdgeOffset = pos.left - viewportPadding\n var rightEdgeOffset = pos.left + viewportPadding + actualWidth\n if (leftEdgeOffset < viewportDimensions.left) { // left overflow\n delta.left = viewportDimensions.left - leftEdgeOffset\n } else if (rightEdgeOffset > viewportDimensions.right) { // right overflow\n delta.left = viewportDimensions.left + viewportDimensions.width - rightEdgeOffset\n }\n }\n\n return delta\n }\n\n Tooltip.prototype.getTitle = function () {\n var title\n var $e = this.$element\n var o = this.options\n\n title = $e.attr('data-original-title')\n || (typeof o.title == 'function' ? o.title.call($e[0]) : o.title)\n\n return title\n }\n\n Tooltip.prototype.getUID = function (prefix) {\n do prefix += ~~(Math.random() * 1000000)\n while (document.getElementById(prefix))\n return prefix\n }\n\n Tooltip.prototype.tip = function () {\n if (!this.$tip) {\n this.$tip = $(this.options.template)\n if (this.$tip.length != 1) {\n throw new Error(this.type + ' `template` option must consist of exactly 1 top-level element!')\n }\n }\n return this.$tip\n }\n\n Tooltip.prototype.arrow = function () {\n return (this.$arrow = this.$arrow || this.tip().find('.tooltip-arrow'))\n }\n\n Tooltip.prototype.enable = function () {\n this.enabled = true\n }\n\n Tooltip.prototype.disable = function () {\n this.enabled = false\n }\n\n Tooltip.prototype.toggleEnabled = function () {\n this.enabled = !this.enabled\n }\n\n Tooltip.prototype.toggle = function (e) {\n var self = this\n if (e) {\n self = $(e.currentTarget).data('bs.' + this.type)\n if (!self) {\n self = new this.constructor(e.currentTarget, this.getDelegateOptions())\n $(e.currentTarget).data('bs.' + this.type, self)\n }\n }\n\n if (e) {\n self.inState.click = !self.inState.click\n if (self.isInStateTrue()) self.enter(self)\n else self.leave(self)\n } else {\n self.tip().hasClass('in') ? self.leave(self) : self.enter(self)\n }\n }\n\n Tooltip.prototype.destroy = function () {\n var that = this\n clearTimeout(this.timeout)\n this.hide(function () {\n that.$element.off('.' + that.type).removeData('bs.' + that.type)\n if (that.$tip) {\n that.$tip.detach()\n }\n that.$tip = null\n that.$arrow = null\n that.$viewport = null\n that.$element = null\n })\n }\n\n\n // TOOLTIP PLUGIN DEFINITION\n // =========================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.tooltip')\n var options = typeof option == 'object' && option\n\n if (!data && /destroy|hide/.test(option)) return\n if (!data) $this.data('bs.tooltip', (data = new Tooltip(this, options)))\n if (typeof option == 'string') data[option]()\n })\n }\n\n var old = $.fn.tooltip\n\n $.fn.tooltip = Plugin\n $.fn.tooltip.Constructor = Tooltip\n\n\n // TOOLTIP NO CONFLICT\n // ===================\n\n $.fn.tooltip.noConflict = function () {\n $.fn.tooltip = old\n return this\n }\n\n}(jQuery);\n","/* ========================================================================\n * Bootstrap: transition.js v3.3.7\n * http://getbootstrap.com/javascript/#transitions\n * ========================================================================\n * Copyright 2011-2016 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // CSS TRANSITION SUPPORT (Shoutout: http://www.modernizr.com/)\n // ============================================================\n\n function transitionEnd() {\n var el = document.createElement('bootstrap')\n\n var transEndEventNames = {\n WebkitTransition : 'webkitTransitionEnd',\n MozTransition : 'transitionend',\n OTransition : 'oTransitionEnd otransitionend',\n transition : 'transitionend'\n }\n\n for (var name in transEndEventNames) {\n if (el.style[name] !== undefined) {\n return { end: transEndEventNames[name] }\n }\n }\n\n return false // explicit for ie8 ( ._.)\n }\n\n // http://blog.alexmaccaw.com/css-transitions\n $.fn.emulateTransitionEnd = function (duration) {\n var called = false\n var $el = this\n $(this).one('bsTransitionEnd', function () { called = true })\n var callback = function () { if (!called) $($el).trigger($.support.transition.end) }\n setTimeout(callback, duration)\n return this\n }\n\n $(function () {\n $.support.transition = transitionEnd()\n\n if (!$.support.transition) return\n\n $.event.special.bsTransitionEnd = {\n bindType: $.support.transition.end,\n delegateType: $.support.transition.end,\n handle: function (e) {\n if ($(e.target).is(this)) return e.handleObj.handler.apply(this, arguments)\n }\n }\n })\n\n}(jQuery);\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = dedupeFilenames;\n\nvar _parseFilename2 = _interopRequireDefault(require(\"./parseFilename\"));\n\nfunction dedupeFilenames(array) {\n var nextArray = [];\n array.forEach(function (value) {\n var _parseFilename = (0, _parseFilename2[\"default\"])(value),\n extname = _parseFilename.extname,\n name = _parseFilename.name;\n\n var count = 0;\n var nextValue = value;\n\n while (nextArray.includes(nextValue)) {\n nextValue = [name, \"(\".concat(++count, \")\")].filter(function (segment) {\n return segment;\n }).join(' ') + extname;\n }\n\n nextArray.push(nextValue);\n });\n return nextArray;\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9kZWR1cGVGaWxlbmFtZXMudHMiXSwibmFtZXMiOlsiZGVkdXBlRmlsZW5hbWVzIiwiYXJyYXkiLCJuZXh0QXJyYXkiLCJmb3JFYWNoIiwidmFsdWUiLCJleHRuYW1lIiwibmFtZSIsImNvdW50IiwibmV4dFZhbHVlIiwiaW5jbHVkZXMiLCJmaWx0ZXIiLCJzZWdtZW50Iiwiam9pbiIsInB1c2giXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBOztBQUVlLFNBQVNBLGVBQVQsQ0FBeUJDLEtBQXpCLEVBQTBDO0FBQ3JELE1BQU1DLFNBQW1CLEdBQUcsRUFBNUI7QUFFQUQsRUFBQUEsS0FBSyxDQUFDRSxPQUFOLENBQWMsVUFBQUMsS0FBSyxFQUFJO0FBQ25CLHlCQUEwQixnQ0FBY0EsS0FBZCxDQUExQjtBQUFBLFFBQVFDLE9BQVIsa0JBQVFBLE9BQVI7QUFBQSxRQUFpQkMsSUFBakIsa0JBQWlCQSxJQUFqQjs7QUFDQSxRQUFJQyxLQUFLLEdBQUcsQ0FBWjtBQUNBLFFBQUlDLFNBQVMsR0FBR0osS0FBaEI7O0FBRUEsV0FBT0YsU0FBUyxDQUFDTyxRQUFWLENBQW1CRCxTQUFuQixDQUFQLEVBQXNDO0FBQ2xDQSxNQUFBQSxTQUFTLEdBQUcsQ0FBQ0YsSUFBRCxhQUFhLEVBQUVDLEtBQWYsUUFBMkJHLE1BQTNCLENBQWtDLFVBQUFDLE9BQU87QUFBQSxlQUFJQSxPQUFKO0FBQUEsT0FBekMsRUFBc0RDLElBQXRELENBQTJELEdBQTNELElBQWtFUCxPQUE5RTtBQUNIOztBQUVESCxJQUFBQSxTQUFTLENBQUNXLElBQVYsQ0FBZUwsU0FBZjtBQUNILEdBVkQ7QUFZQSxTQUFPTixTQUFQO0FBQ0giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgcGFyc2VGaWxlbmFtZSBmcm9tICcuL3BhcnNlRmlsZW5hbWUnO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBkZWR1cGVGaWxlbmFtZXMoYXJyYXk6IHN0cmluZ1tdKSB7XG4gICAgY29uc3QgbmV4dEFycmF5OiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgYXJyYXkuZm9yRWFjaCh2YWx1ZSA9PiB7XG4gICAgICAgIGNvbnN0IHsgZXh0bmFtZSwgbmFtZSB9ID0gcGFyc2VGaWxlbmFtZSh2YWx1ZSk7XG4gICAgICAgIGxldCBjb3VudCA9IDA7XG4gICAgICAgIGxldCBuZXh0VmFsdWUgPSB2YWx1ZTtcblxuICAgICAgICB3aGlsZSAobmV4dEFycmF5LmluY2x1ZGVzKG5leHRWYWx1ZSkpIHtcbiAgICAgICAgICAgIG5leHRWYWx1ZSA9IFtuYW1lLCBgKCR7ICgrK2NvdW50KSB9KWBdLmZpbHRlcihzZWdtZW50ID0+IHNlZ21lbnQpLmpvaW4oJyAnKSArIGV4dG5hbWU7XG4gICAgICAgIH1cblxuICAgICAgICBuZXh0QXJyYXkucHVzaChuZXh0VmFsdWUpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIG5leHRBcnJheTtcbn1cbiJdfQ==","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _typeof = require(\"@babel/runtime/helpers/typeof\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"DirectLineStreaming\", {\n enumerable: true,\n get: function get() {\n return _directLineStreaming.DirectLineStreaming;\n }\n});\nexports.DirectLine = exports.ConnectionStatus = void 0;\n\nvar _objectWithoutProperties2 = _interopRequireDefault(require(\"@babel/runtime/helpers/objectWithoutProperties\"));\n\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\n\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\n\nvar _defineProperty2 = _interopRequireDefault(require(\"@babel/runtime/helpers/defineProperty\"));\n\nrequire(\"core-js/features/promise\");\n\nrequire(\"url-search-params-polyfill\");\n\nvar _BehaviorSubject = require(\"rxjs/BehaviorSubject\");\n\nvar _Observable = require(\"rxjs/Observable\");\n\nvar _async = require(\"rxjs/scheduler/async\");\n\nvar _jwtDecode = _interopRequireWildcard(require(\"jwt-decode\"));\n\nrequire(\"rxjs/add/operator/catch\");\n\nrequire(\"rxjs/add/operator/combineLatest\");\n\nrequire(\"rxjs/add/operator/count\");\n\nrequire(\"rxjs/add/operator/delay\");\n\nrequire(\"rxjs/add/operator/do\");\n\nrequire(\"rxjs/add/operator/filter\");\n\nrequire(\"rxjs/add/operator/map\");\n\nrequire(\"rxjs/add/operator/mergeMap\");\n\nrequire(\"rxjs/add/operator/concatMap\");\n\nrequire(\"rxjs/add/operator/retryWhen\");\n\nrequire(\"rxjs/add/operator/share\");\n\nrequire(\"rxjs/add/operator/take\");\n\nrequire(\"rxjs/add/observable/dom/ajax\");\n\nrequire(\"rxjs/add/observable/empty\");\n\nrequire(\"rxjs/add/observable/from\");\n\nrequire(\"rxjs/add/observable/interval\");\n\nrequire(\"rxjs/add/observable/of\");\n\nrequire(\"rxjs/add/observable/throw\");\n\nvar _dedupeFilenames = _interopRequireDefault(require(\"./dedupeFilenames\"));\n\nvar _directLineStreaming = require(\"./directLineStreaming\");\n\nvar _excluded = [\"contentUrl\"];\n\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\n\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2[\"default\"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nvar DIRECT_LINE_VERSION = 'DirectLine/3.0';\n// These types are specific to this client library, not to Direct Line 3.0\nvar ConnectionStatus;\nexports.ConnectionStatus = ConnectionStatus;\n\n(function (ConnectionStatus) {\n ConnectionStatus[ConnectionStatus[\"Uninitialized\"] = 0] = \"Uninitialized\";\n ConnectionStatus[ConnectionStatus[\"Connecting\"] = 1] = \"Connecting\";\n ConnectionStatus[ConnectionStatus[\"Online\"] = 2] = \"Online\";\n ConnectionStatus[ConnectionStatus[\"ExpiredToken\"] = 3] = \"ExpiredToken\";\n ConnectionStatus[ConnectionStatus[\"FailedToConnect\"] = 4] = \"FailedToConnect\";\n ConnectionStatus[ConnectionStatus[\"Ended\"] = 5] = \"Ended\";\n})(ConnectionStatus || (exports.ConnectionStatus = ConnectionStatus = {}));\n\nvar wrapAjaxWithRetry = function wrapAjaxWithRetry(source, scheduler) {\n var notImplemented = function notImplemented() {\n throw new Error('not implemented');\n };\n\n var inner = function inner(response$) {\n return response$[\"catch\"](function (err) {\n if (err.status === 429) {\n var retryAfterValue = err.xhr.getResponseHeader('Retry-After');\n var retryAfter = Number(retryAfterValue);\n\n if (!isNaN(retryAfter)) {\n return _Observable.Observable.timer(retryAfter, scheduler).flatMap(function (_) {\n return _Observable.Observable[\"throw\"](err, scheduler);\n });\n }\n }\n\n return _Observable.Observable[\"throw\"](err, scheduler);\n });\n };\n\n var outer = function outer(urlOrRequest) {\n return inner(source(urlOrRequest));\n };\n\n return Object.assign(outer, {\n get: function get(url, headers) {\n return notImplemented();\n },\n post: function post(url, body, headers) {\n return notImplemented();\n },\n put: function put(url, body, headers) {\n return notImplemented();\n },\n patch: function patch(url, body, headers) {\n return notImplemented();\n },\n \"delete\": function _delete(url, headers) {\n return notImplemented();\n },\n getJSON: function getJSON(url, headers) {\n return notImplemented();\n }\n });\n};\n\nvar makeServices = function makeServices(services) {\n var scheduler = services.scheduler || _async.async;\n return {\n scheduler: scheduler,\n ajax: wrapAjaxWithRetry(services.ajax || _Observable.Observable.ajax, scheduler),\n WebSocket: services.WebSocket || WebSocket,\n random: services.random || Math.random\n };\n};\n\nvar lifetimeRefreshToken = 30 * 60 * 1000;\nvar intervalRefreshToken = lifetimeRefreshToken / 2;\nvar POLLING_INTERVAL_LOWER_BOUND = 200; //ms\n\nvar errorExpiredToken = new Error(\"expired token\");\nvar errorConversationEnded = new Error(\"conversation ended\");\nvar errorFailedToConnect = new Error(\"failed to connect\");\nvar konsole = {\n log: function log(message) {\n var _console;\n\n for (var _len = arguments.length, optionalParams = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n optionalParams[_key - 1] = arguments[_key];\n }\n\n if (typeof window !== 'undefined' && window[\"botchatDebug\"] && message) (_console = console).log.apply(_console, [message].concat(optionalParams));\n }\n};\n\nvar DirectLine = /*#__PURE__*/function () {\n function DirectLine(options) {\n (0, _classCallCheck2[\"default\"])(this, DirectLine);\n (0, _defineProperty2[\"default\"])(this, \"connectionStatus$\", new _BehaviorSubject.BehaviorSubject(ConnectionStatus.Uninitialized));\n (0, _defineProperty2[\"default\"])(this, \"domain\", \"https://directline.botframework.com/v3/directline\");\n (0, _defineProperty2[\"default\"])(this, \"watermark\", '');\n (0, _defineProperty2[\"default\"])(this, \"_botAgent\", '');\n (0, _defineProperty2[\"default\"])(this, \"timeout\", 20 * 1000);\n (0, _defineProperty2[\"default\"])(this, \"pollingInterval\", 1000);\n this.secret = options.secret;\n this.token = options.secret || options.token;\n this.webSocket = (options.webSocket === undefined ? true : options.webSocket) && typeof WebSocket !== 'undefined' && WebSocket !== undefined;\n\n if (options.conversationStartProperties && options.conversationStartProperties.locale) {\n if (Object.prototype.toString.call(options.conversationStartProperties.locale) === '[object String]') {\n this.localeOnStartConversation = options.conversationStartProperties.locale;\n } else {\n console.warn('DirectLineJS: conversationStartProperties.locale was ignored: the locale name may be a BCP 47 language tag');\n }\n }\n\n if (options.domain) {\n this.domain = options.domain;\n }\n\n if (options.conversationId) {\n this.conversationId = options.conversationId;\n }\n\n if (options.watermark) {\n this.watermark = options.watermark;\n }\n\n if (options.streamUrl) {\n if (options.token && options.conversationId) {\n this.streamUrl = options.streamUrl;\n } else {\n console.warn('DirectLineJS: streamUrl was ignored: you need to provide a token and a conversationid');\n }\n }\n\n if (options.timeout !== undefined) {\n this.timeout = options.timeout;\n }\n\n this.retries = (lifetimeRefreshToken - intervalRefreshToken) / this.timeout;\n this._botAgent = this.getBotAgent(options.botAgent);\n this.services = makeServices(options);\n var parsedPollingInterval = ~~options.pollingInterval;\n\n if (parsedPollingInterval < POLLING_INTERVAL_LOWER_BOUND) {\n if (typeof options.pollingInterval !== 'undefined') {\n console.warn(\"DirectLineJS: provided pollingInterval (\".concat(options.pollingInterval, \") is under lower bound (200ms), using default of 1000ms\"));\n }\n } else {\n this.pollingInterval = parsedPollingInterval;\n }\n\n this.expiredTokenExhaustion = this.setConnectionStatusFallback(ConnectionStatus.ExpiredToken, ConnectionStatus.FailedToConnect, 5);\n this.activity$ = (this.webSocket ? this.webSocketActivity$() : this.pollingGetActivity$()).share();\n } // Every time we're about to make a Direct Line REST call, we call this first to see check the current connection status.\n // Either throws an error (indicating an error state) or emits a null, indicating a (presumably) healthy connection\n\n\n (0, _createClass2[\"default\"])(DirectLine, [{\n key: \"checkConnection\",\n value: function checkConnection() {\n var _this = this;\n\n var once = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n var obs = this.connectionStatus$.flatMap(function (connectionStatus) {\n if (connectionStatus === ConnectionStatus.Uninitialized) {\n _this.connectionStatus$.next(ConnectionStatus.Connecting); //if token and streamUrl are defined it means reconnect has already been done. Skipping it.\n\n\n if (_this.token && _this.streamUrl) {\n _this.connectionStatus$.next(ConnectionStatus.Online);\n\n return _Observable.Observable.of(connectionStatus, _this.services.scheduler);\n } else {\n return _this.startConversation()[\"do\"](function (conversation) {\n _this.conversationId = conversation.conversationId;\n _this.token = _this.secret || conversation.token;\n _this.streamUrl = conversation.streamUrl;\n _this.referenceGrammarId = conversation.referenceGrammarId;\n if (!_this.secret) _this.refreshTokenLoop();\n\n _this.connectionStatus$.next(ConnectionStatus.Online);\n }, function (error) {\n _this.connectionStatus$.next(ConnectionStatus.FailedToConnect);\n }).map(function (_) {\n return connectionStatus;\n });\n }\n } else {\n return _Observable.Observable.of(connectionStatus, _this.services.scheduler);\n }\n }).filter(function (connectionStatus) {\n return connectionStatus != ConnectionStatus.Uninitialized && connectionStatus != ConnectionStatus.Connecting;\n }).flatMap(function (connectionStatus) {\n switch (connectionStatus) {\n case ConnectionStatus.Ended:\n return _Observable.Observable[\"throw\"](errorConversationEnded, _this.services.scheduler);\n\n case ConnectionStatus.FailedToConnect:\n return _Observable.Observable[\"throw\"](errorFailedToConnect, _this.services.scheduler);\n\n case ConnectionStatus.ExpiredToken:\n return _Observable.Observable.of(connectionStatus, _this.services.scheduler);\n\n default:\n return _Observable.Observable.of(connectionStatus, _this.services.scheduler);\n }\n });\n return once ? obs.take(1) : obs;\n }\n }, {\n key: \"setConnectionStatusFallback\",\n value: function setConnectionStatusFallback(connectionStatusFrom, connectionStatusTo) {\n var maxAttempts = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 5;\n maxAttempts--;\n var attempts = 0;\n var currStatus = null;\n return function (status) {\n if (status === connectionStatusFrom && currStatus === status && attempts >= maxAttempts) {\n attempts = 0;\n return connectionStatusTo;\n }\n\n attempts++;\n currStatus = status;\n return status;\n };\n }\n }, {\n key: \"expiredToken\",\n value: function expiredToken() {\n var connectionStatus = this.connectionStatus$.getValue();\n if (connectionStatus != ConnectionStatus.Ended && connectionStatus != ConnectionStatus.FailedToConnect) this.connectionStatus$.next(ConnectionStatus.ExpiredToken);\n var protectedConnectionStatus = this.expiredTokenExhaustion(this.connectionStatus$.getValue());\n this.connectionStatus$.next(protectedConnectionStatus);\n }\n }, {\n key: \"startConversation\",\n value: function startConversation() {\n var _this2 = this;\n\n //if conversationid is set here, it means we need to call the reconnect api, else it is a new conversation\n var url = this.conversationId ? \"\".concat(this.domain, \"/conversations/\").concat(this.conversationId, \"?watermark=\").concat(this.watermark) : \"\".concat(this.domain, \"/conversations\");\n var method = this.conversationId ? \"GET\" : \"POST\";\n var body = this.conversationId ? undefined : {\n user: {\n id: this.userIdOnStartConversation\n },\n locale: this.localeOnStartConversation\n };\n return this.services.ajax({\n method: method,\n url: url,\n body: body,\n timeout: this.timeout,\n headers: _objectSpread({\n \"Accept\": \"application/json\",\n \"Content-Type\": \"application/json\"\n }, this.commonHeaders())\n }) // .do(ajaxResponse => konsole.log(\"conversation ajaxResponse\", ajaxResponse.response))\n .map(function (ajaxResponse) {\n return ajaxResponse.response;\n }).retryWhen(function (error$) {\n return (// for now we deem 4xx and 5xx errors as unrecoverable\n // for everything else (timeouts), retry for a while\n error$.mergeMap(function (error) {\n return error.status >= 400 && error.status < 600 ? _Observable.Observable[\"throw\"](error, _this2.services.scheduler) : _Observable.Observable.of(error, _this2.services.scheduler);\n }).delay(_this2.timeout, _this2.services.scheduler).take(_this2.retries)\n );\n });\n }\n }, {\n key: \"refreshTokenLoop\",\n value: function refreshTokenLoop() {\n var _this3 = this;\n\n this.tokenRefreshSubscription = _Observable.Observable.interval(intervalRefreshToken, this.services.scheduler).flatMap(function (_) {\n return _this3.refreshToken();\n }).subscribe(function (token) {\n konsole.log(\"refreshing token\", token, \"at\", new Date());\n _this3.token = token;\n });\n }\n }, {\n key: \"refreshToken\",\n value: function refreshToken() {\n var _this4 = this;\n\n return this.checkConnection(true).flatMap(function (_) {\n return _this4.services.ajax({\n method: \"POST\",\n url: \"\".concat(_this4.domain, \"/tokens/refresh\"),\n timeout: _this4.timeout,\n headers: _objectSpread({}, _this4.commonHeaders())\n }).map(function (ajaxResponse) {\n return ajaxResponse.response.token;\n }).retryWhen(function (error$) {\n return error$.mergeMap(function (error) {\n if (error.status === 403) {\n // if the token is expired there's no reason to keep trying\n _this4.expiredToken();\n\n return _Observable.Observable[\"throw\"](error, _this4.services.scheduler);\n } else if (error.status === 404) {\n // If the bot is gone, we should stop retrying\n return _Observable.Observable[\"throw\"](error, _this4.services.scheduler);\n }\n\n return _Observable.Observable.of(error, _this4.services.scheduler);\n }).delay(_this4.timeout, _this4.services.scheduler).take(_this4.retries);\n });\n });\n }\n }, {\n key: \"reconnect\",\n value: function reconnect(conversation) {\n this.token = conversation.token;\n this.streamUrl = conversation.streamUrl;\n if (this.connectionStatus$.getValue() === ConnectionStatus.ExpiredToken) this.connectionStatus$.next(ConnectionStatus.Online);\n }\n }, {\n key: \"end\",\n value: function end() {\n if (this.tokenRefreshSubscription) this.tokenRefreshSubscription.unsubscribe();\n\n try {\n this.connectionStatus$.next(ConnectionStatus.Ended);\n } catch (e) {\n if (e === errorConversationEnded) return;\n throw e;\n }\n }\n }, {\n key: \"getSessionId\",\n value: function getSessionId() {\n var _this5 = this;\n\n // If we're not connected to the bot, get connected\n // Will throw an error if we are not connected\n konsole.log(\"getSessionId\");\n return this.checkConnection(true).flatMap(function (_) {\n return _this5.services.ajax({\n method: \"GET\",\n url: \"\".concat(_this5.domain, \"/session/getsessionid\"),\n withCredentials: true,\n timeout: _this5.timeout,\n headers: _objectSpread({\n \"Content-Type\": \"application/json\"\n }, _this5.commonHeaders())\n }).map(function (ajaxResponse) {\n if (ajaxResponse && ajaxResponse.response && ajaxResponse.response.sessionId) {\n konsole.log(\"getSessionId response: \" + ajaxResponse.response.sessionId);\n return ajaxResponse.response.sessionId;\n }\n\n return '';\n })[\"catch\"](function (error) {\n konsole.log(\"getSessionId error: \" + error.status);\n return _Observable.Observable.of('', _this5.services.scheduler);\n });\n })[\"catch\"](function (error) {\n return _this5.catchExpiredToken(error);\n });\n }\n }, {\n key: \"postActivity\",\n value: function postActivity(activity) {\n var _this6 = this;\n\n // If user id is set, check if it match activity.from.id and always override it in activity\n if (this.userIdOnStartConversation && activity.from && activity.from.id !== this.userIdOnStartConversation) {\n console.warn('DirectLineJS: Activity.from.id does not match with user id, ignoring activity.from.id');\n activity.from.id = this.userIdOnStartConversation;\n } // Use postMessageWithAttachments for messages with attachments that are local files (e.g. an image to upload)\n // Technically we could use it for *all* activities, but postActivity is much lighter weight\n // So, since WebChat is partially a reference implementation of Direct Line, we implement both.\n\n\n if (activity.type === \"message\" && activity.attachments && activity.attachments.length > 0) return this.postMessageWithAttachments(activity); // If we're not connected to the bot, get connected\n // Will throw an error if we are not connected\n\n konsole.log(\"postActivity\", activity);\n return this.checkConnection(true).flatMap(function (_) {\n return _this6.services.ajax({\n method: \"POST\",\n url: \"\".concat(_this6.domain, \"/conversations/\").concat(_this6.conversationId, \"/activities\"),\n body: activity,\n timeout: _this6.timeout,\n headers: _objectSpread({\n \"Content-Type\": \"application/json\"\n }, _this6.commonHeaders())\n }).map(function (ajaxResponse) {\n return ajaxResponse.response.id;\n })[\"catch\"](function (error) {\n return _this6.catchPostError(error);\n });\n })[\"catch\"](function (error) {\n return _this6.catchExpiredToken(error);\n });\n }\n }, {\n key: \"postMessageWithAttachments\",\n value: function postMessageWithAttachments(message) {\n var _this7 = this;\n\n var attachments = message.attachments; // We clean the attachments but making sure every attachment has unique name.\n // If the file do not have a name, Chrome will assign \"blob\" when it is appended to FormData.\n\n var attachmentNames = (0, _dedupeFilenames[\"default\"])(attachments.map(function (media) {\n return media.name || 'blob';\n }));\n var cleansedAttachments = attachments.map(function (attachment, index) {\n return _objectSpread(_objectSpread({}, attachment), {}, {\n name: attachmentNames[index]\n });\n });\n var formData; // If we're not connected to the bot, get connected\n // Will throw an error if we are not connected\n\n return this.checkConnection(true).flatMap(function (_) {\n // To send this message to DirectLine we need to deconstruct it into a \"template\" activity\n // and one blob for each attachment.\n formData = new FormData();\n formData.append('activity', new Blob([JSON.stringify(_objectSpread(_objectSpread({}, message), {}, {\n // Removing contentUrl from attachment, we will send it via multipart\n attachments: cleansedAttachments.map(function (_ref) {\n var string = _ref.contentUrl,\n others = (0, _objectWithoutProperties2[\"default\"])(_ref, _excluded);\n return _objectSpread({}, others);\n })\n }))], {\n type: 'application/vnd.microsoft.activity'\n }));\n return _Observable.Observable.from(cleansedAttachments, _this7.services.scheduler).flatMap(function (media) {\n return _this7.services.ajax({\n method: \"GET\",\n url: media.contentUrl,\n responseType: 'arraybuffer'\n })[\"do\"](function (ajaxResponse) {\n return formData.append('file', new Blob([ajaxResponse.response], {\n type: media.contentType\n }), media.name);\n });\n }).count();\n }).flatMap(function (_) {\n return _this7.services.ajax({\n method: \"POST\",\n url: \"\".concat(_this7.domain, \"/conversations/\").concat(_this7.conversationId, \"/upload?userId=\").concat(message.from.id),\n body: formData,\n timeout: _this7.timeout,\n headers: _objectSpread({}, _this7.commonHeaders())\n }).map(function (ajaxResponse) {\n return ajaxResponse.response.id;\n })[\"catch\"](function (error) {\n return _this7.catchPostError(error);\n });\n })[\"catch\"](function (error) {\n return _this7.catchPostError(error);\n });\n }\n }, {\n key: \"catchPostError\",\n value: function catchPostError(error) {\n if (error.status === 403) // token has expired (will fall through to return \"retry\")\n this.expiredToken();else if (error.status >= 400 && error.status < 500) // more unrecoverable errors\n return _Observable.Observable[\"throw\"](error, this.services.scheduler);\n return _Observable.Observable.of(\"retry\", this.services.scheduler);\n }\n }, {\n key: \"catchExpiredToken\",\n value: function catchExpiredToken(error) {\n return error === errorExpiredToken ? _Observable.Observable.of(\"retry\", this.services.scheduler) : _Observable.Observable[\"throw\"](error, this.services.scheduler);\n }\n }, {\n key: \"pollingGetActivity$\",\n value: function pollingGetActivity$() {\n var _this8 = this;\n\n var poller$ = _Observable.Observable.create(function (subscriber) {\n // A BehaviorSubject to trigger polling. Since it is a BehaviorSubject\n // the first event is produced immediately.\n var trigger$ = new _BehaviorSubject.BehaviorSubject({}); // TODO: remove Date.now, use reactive interval to space out every request\n\n trigger$.subscribe(function () {\n if (_this8.connectionStatus$.getValue() === ConnectionStatus.Online) {\n var startTimestamp = Date.now();\n\n _this8.services.ajax({\n headers: _objectSpread({\n Accept: 'application/json'\n }, _this8.commonHeaders()),\n method: 'GET',\n url: \"\".concat(_this8.domain, \"/conversations/\").concat(_this8.conversationId, \"/activities?watermark=\").concat(_this8.watermark),\n timeout: _this8.timeout\n }).subscribe(function (result) {\n subscriber.next(result);\n setTimeout(function () {\n return trigger$.next(null);\n }, Math.max(0, _this8.pollingInterval - Date.now() + startTimestamp));\n }, function (error) {\n switch (error.status) {\n case 403:\n _this8.connectionStatus$.next(ConnectionStatus.ExpiredToken);\n\n setTimeout(function () {\n return trigger$.next(null);\n }, _this8.pollingInterval);\n break;\n\n case 404:\n _this8.connectionStatus$.next(ConnectionStatus.Ended);\n\n break;\n\n default:\n // propagate the error\n subscriber.error(error);\n break;\n }\n });\n }\n });\n });\n\n return this.checkConnection().flatMap(function (_) {\n return poller$[\"catch\"](function () {\n return _Observable.Observable.empty();\n }).map(function (ajaxResponse) {\n return ajaxResponse.response;\n }).flatMap(function (activityGroup) {\n return _this8.observableFromActivityGroup(activityGroup);\n });\n });\n }\n }, {\n key: \"observableFromActivityGroup\",\n value: function observableFromActivityGroup(activityGroup) {\n if (activityGroup.watermark) this.watermark = activityGroup.watermark;\n return _Observable.Observable.from(activityGroup.activities, this.services.scheduler);\n }\n }, {\n key: \"webSocketActivity$\",\n value: function webSocketActivity$() {\n var _this9 = this;\n\n return this.checkConnection().flatMap(function (_) {\n return _this9.observableWebSocket() // WebSockets can be closed by the server or the browser. In the former case we need to\n // retrieve a new streamUrl. In the latter case we could first retry with the current streamUrl,\n // but it's simpler just to always fetch a new one.\n .retryWhen(function (error$) {\n return error$.delay(_this9.getRetryDelay(), _this9.services.scheduler).mergeMap(function (error) {\n return _this9.reconnectToConversation();\n });\n });\n }).flatMap(function (activityGroup) {\n return _this9.observableFromActivityGroup(activityGroup);\n });\n } // Returns the delay duration in milliseconds\n\n }, {\n key: \"getRetryDelay\",\n value: function getRetryDelay() {\n return Math.floor(3000 + this.services.random() * 12000);\n } // Originally we used Observable.webSocket, but it's fairly opinionated and I ended up writing\n // a lot of code to work around their implementation details. Since WebChat is meant to be a reference\n // implementation, I decided roll the below, where the logic is more purposeful. - @billba\n\n }, {\n key: \"observableWebSocket\",\n value: function observableWebSocket() {\n var _this10 = this;\n\n return _Observable.Observable.create(function (subscriber) {\n konsole.log(\"creating WebSocket\", _this10.streamUrl);\n var ws = new _this10.services.WebSocket(_this10.streamUrl);\n var sub;\n var closed;\n\n ws.onopen = function (open) {\n konsole.log(\"WebSocket open\", open); // Chrome is pretty bad at noticing when a WebSocket connection is broken.\n // If we periodically ping the server with empty messages, it helps Chrome\n // realize when connection breaks, and close the socket. We then throw an\n // error, and that give us the opportunity to attempt to reconnect.\n\n sub = _Observable.Observable.interval(_this10.timeout, _this10.services.scheduler).subscribe(function (_) {\n try {\n ws.send(\"\");\n } catch (e) {\n konsole.log(\"Ping error\", e);\n }\n });\n };\n\n ws.onclose = function (close) {\n konsole.log(\"WebSocket close\", close);\n if (sub) sub.unsubscribe(); // RxJS.retryWhen has a bug that would cause \"error\" signal to be sent after the observable is completed/errored.\n // We need to guard against extraneous \"error\" signal to workaround the bug.\n\n closed || subscriber.error(close);\n closed = true;\n };\n\n ws.onerror = function (error) {\n konsole.log(\"WebSocket error\", error);\n if (sub) sub.unsubscribe(); // RxJS.retryWhen has a bug that would cause \"error\" signal to be sent after the observable is completed/errored.\n // We need to guard against extraneous \"error\" signal to workaround the bug.\n\n closed || subscriber.error(error);\n closed = true;\n };\n\n ws.onmessage = function (message) {\n return message.data && subscriber.next(JSON.parse(message.data));\n }; // This is the 'unsubscribe' method, which is called when this observable is disposed.\n // When the WebSocket closes itself, we throw an error, and this function is eventually called.\n // When the observable is closed first (e.g. when tearing down a WebChat instance) then\n // we need to manually close the WebSocket.\n\n\n return function () {\n if (ws.readyState === 0 || ws.readyState === 1) ws.close();\n };\n });\n }\n }, {\n key: \"reconnectToConversation\",\n value: function reconnectToConversation() {\n var _this11 = this;\n\n return this.checkConnection(true).flatMap(function (_) {\n return _this11.services.ajax({\n method: \"GET\",\n url: \"\".concat(_this11.domain, \"/conversations/\").concat(_this11.conversationId, \"?watermark=\").concat(_this11.watermark),\n timeout: _this11.timeout,\n headers: _objectSpread({\n \"Accept\": \"application/json\"\n }, _this11.commonHeaders())\n })[\"do\"](function (result) {\n if (!_this11.secret) _this11.token = result.response.token;\n _this11.streamUrl = result.response.streamUrl;\n }).map(function (_) {\n return null;\n }).retryWhen(function (error$) {\n return error$.mergeMap(function (error) {\n if (error.status === 403) {\n // token has expired. We can't recover from this here, but the embedding\n // website might eventually call reconnect() with a new token and streamUrl.\n _this11.expiredToken();\n } else if (error.status === 404) {\n return _Observable.Observable[\"throw\"](errorConversationEnded, _this11.services.scheduler);\n }\n\n return _Observable.Observable.of(error, _this11.services.scheduler);\n }).delay(_this11.timeout, _this11.services.scheduler).take(_this11.retries);\n });\n });\n }\n }, {\n key: \"commonHeaders\",\n value: function commonHeaders() {\n return {\n \"Authorization\": \"Bearer \".concat(this.token),\n \"x-ms-bot-agent\": this._botAgent\n };\n }\n }, {\n key: \"getBotAgent\",\n value: function getBotAgent() {\n var customAgent = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var clientAgent = 'directlinejs';\n\n if (customAgent) {\n clientAgent += \"; \".concat(customAgent);\n }\n\n return \"\".concat(DIRECT_LINE_VERSION, \" (\").concat(clientAgent, \" \").concat(\"0.15.2\", \")\");\n }\n }, {\n key: \"setUserId\",\n value: function setUserId(userId) {\n if (this.connectionStatus$.getValue() === ConnectionStatus.Online) {\n throw new Error('DirectLineJS: It is connected, we cannot set user id.');\n }\n\n var userIdFromToken = this.parseToken(this.token);\n\n if (userIdFromToken) {\n return console.warn('DirectLineJS: user id is already set in token, will ignore this user id.');\n }\n\n if (/^dl_/.test(userId)) {\n return console.warn('DirectLineJS: user id prefixed with \"dl_\" is reserved and must be embedded into the Direct Line token to prevent forgery.');\n }\n\n this.userIdOnStartConversation = userId;\n }\n }, {\n key: \"parseToken\",\n value: function parseToken(token) {\n try {\n var _ref2 = (0, _jwtDecode[\"default\"])(token),\n user = _ref2.user;\n\n return user;\n } catch (e) {\n if (e instanceof _jwtDecode.InvalidTokenError) {\n return undefined;\n }\n }\n }\n }]);\n return DirectLine;\n}();\n\nexports.DirectLine = DirectLine;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9kaXJlY3RMaW5lLnRzIl0sIm5hbWVzIjpbIkRJUkVDVF9MSU5FX1ZFUlNJT04iLCJDb25uZWN0aW9uU3RhdHVzIiwid3JhcEFqYXhXaXRoUmV0cnkiLCJzb3VyY2UiLCJzY2hlZHVsZXIiLCJub3RJbXBsZW1lbnRlZCIsIkVycm9yIiwiaW5uZXIiLCJyZXNwb25zZSQiLCJlcnIiLCJzdGF0dXMiLCJyZXRyeUFmdGVyVmFsdWUiLCJ4aHIiLCJnZXRSZXNwb25zZUhlYWRlciIsInJldHJ5QWZ0ZXIiLCJOdW1iZXIiLCJpc05hTiIsIk9ic2VydmFibGUiLCJ0aW1lciIsImZsYXRNYXAiLCJfIiwib3V0ZXIiLCJ1cmxPclJlcXVlc3QiLCJPYmplY3QiLCJhc3NpZ24iLCJnZXQiLCJ1cmwiLCJoZWFkZXJzIiwicG9zdCIsImJvZHkiLCJwdXQiLCJwYXRjaCIsImdldEpTT04iLCJtYWtlU2VydmljZXMiLCJzZXJ2aWNlcyIsIkFzeW5jU2NoZWR1bGVyIiwiYWpheCIsIldlYlNvY2tldCIsInJhbmRvbSIsIk1hdGgiLCJsaWZldGltZVJlZnJlc2hUb2tlbiIsImludGVydmFsUmVmcmVzaFRva2VuIiwiUE9MTElOR19JTlRFUlZBTF9MT1dFUl9CT1VORCIsImVycm9yRXhwaXJlZFRva2VuIiwiZXJyb3JDb252ZXJzYXRpb25FbmRlZCIsImVycm9yRmFpbGVkVG9Db25uZWN0Iiwia29uc29sZSIsImxvZyIsIm1lc3NhZ2UiLCJvcHRpb25hbFBhcmFtcyIsIndpbmRvdyIsImNvbnNvbGUiLCJEaXJlY3RMaW5lIiwib3B0aW9ucyIsIkJlaGF2aW9yU3ViamVjdCIsIlVuaW5pdGlhbGl6ZWQiLCJzZWNyZXQiLCJ0b2tlbiIsIndlYlNvY2tldCIsInVuZGVmaW5lZCIsImNvbnZlcnNhdGlvblN0YXJ0UHJvcGVydGllcyIsImxvY2FsZSIsInByb3RvdHlwZSIsInRvU3RyaW5nIiwiY2FsbCIsImxvY2FsZU9uU3RhcnRDb252ZXJzYXRpb24iLCJ3YXJuIiwiZG9tYWluIiwiY29udmVyc2F0aW9uSWQiLCJ3YXRlcm1hcmsiLCJzdHJlYW1VcmwiLCJ0aW1lb3V0IiwicmV0cmllcyIsIl9ib3RBZ2VudCIsImdldEJvdEFnZW50IiwiYm90QWdlbnQiLCJwYXJzZWRQb2xsaW5nSW50ZXJ2YWwiLCJwb2xsaW5nSW50ZXJ2YWwiLCJleHBpcmVkVG9rZW5FeGhhdXN0aW9uIiwic2V0Q29ubmVjdGlvblN0YXR1c0ZhbGxiYWNrIiwiRXhwaXJlZFRva2VuIiwiRmFpbGVkVG9Db25uZWN0IiwiYWN0aXZpdHkkIiwid2ViU29ja2V0QWN0aXZpdHkkIiwicG9sbGluZ0dldEFjdGl2aXR5JCIsInNoYXJlIiwib25jZSIsIm9icyIsImNvbm5lY3Rpb25TdGF0dXMkIiwiY29ubmVjdGlvblN0YXR1cyIsIm5leHQiLCJDb25uZWN0aW5nIiwiT25saW5lIiwib2YiLCJzdGFydENvbnZlcnNhdGlvbiIsImNvbnZlcnNhdGlvbiIsInJlZmVyZW5jZUdyYW1tYXJJZCIsInJlZnJlc2hUb2tlbkxvb3AiLCJlcnJvciIsIm1hcCIsImZpbHRlciIsIkVuZGVkIiwidGFrZSIsImNvbm5lY3Rpb25TdGF0dXNGcm9tIiwiY29ubmVjdGlvblN0YXR1c1RvIiwibWF4QXR0ZW1wdHMiLCJhdHRlbXB0cyIsImN1cnJTdGF0dXMiLCJnZXRWYWx1ZSIsInByb3RlY3RlZENvbm5lY3Rpb25TdGF0dXMiLCJtZXRob2QiLCJ1c2VyIiwiaWQiLCJ1c2VySWRPblN0YXJ0Q29udmVyc2F0aW9uIiwiY29tbW9uSGVhZGVycyIsImFqYXhSZXNwb25zZSIsInJlc3BvbnNlIiwicmV0cnlXaGVuIiwiZXJyb3IkIiwibWVyZ2VNYXAiLCJkZWxheSIsInRva2VuUmVmcmVzaFN1YnNjcmlwdGlvbiIsImludGVydmFsIiwicmVmcmVzaFRva2VuIiwic3Vic2NyaWJlIiwiRGF0ZSIsImNoZWNrQ29ubmVjdGlvbiIsImV4cGlyZWRUb2tlbiIsInVuc3Vic2NyaWJlIiwiZSIsIndpdGhDcmVkZW50aWFscyIsInNlc3Npb25JZCIsImNhdGNoRXhwaXJlZFRva2VuIiwiYWN0aXZpdHkiLCJmcm9tIiwidHlwZSIsImF0dGFjaG1lbnRzIiwibGVuZ3RoIiwicG9zdE1lc3NhZ2VXaXRoQXR0YWNobWVudHMiLCJjYXRjaFBvc3RFcnJvciIsImF0dGFjaG1lbnROYW1lcyIsIm1lZGlhIiwibmFtZSIsImNsZWFuc2VkQXR0YWNobWVudHMiLCJhdHRhY2htZW50IiwiaW5kZXgiLCJmb3JtRGF0YSIsIkZvcm1EYXRhIiwiYXBwZW5kIiwiQmxvYiIsIkpTT04iLCJzdHJpbmdpZnkiLCJzdHJpbmciLCJjb250ZW50VXJsIiwib3RoZXJzIiwicmVzcG9uc2VUeXBlIiwiY29udGVudFR5cGUiLCJjb3VudCIsInBvbGxlciQiLCJjcmVhdGUiLCJzdWJzY3JpYmVyIiwidHJpZ2dlciQiLCJzdGFydFRpbWVzdGFtcCIsIm5vdyIsIkFjY2VwdCIsInJlc3VsdCIsInNldFRpbWVvdXQiLCJtYXgiLCJlbXB0eSIsImFjdGl2aXR5R3JvdXAiLCJvYnNlcnZhYmxlRnJvbUFjdGl2aXR5R3JvdXAiLCJhY3Rpdml0aWVzIiwib2JzZXJ2YWJsZVdlYlNvY2tldCIsImdldFJldHJ5RGVsYXkiLCJyZWNvbm5lY3RUb0NvbnZlcnNhdGlvbiIsImZsb29yIiwid3MiLCJzdWIiLCJjbG9zZWQiLCJvbm9wZW4iLCJvcGVuIiwic2VuZCIsIm9uY2xvc2UiLCJjbG9zZSIsIm9uZXJyb3IiLCJvbm1lc3NhZ2UiLCJkYXRhIiwicGFyc2UiLCJyZWFkeVN0YXRlIiwiY3VzdG9tQWdlbnQiLCJjbGllbnRBZ2VudCIsInVzZXJJZCIsInVzZXJJZEZyb21Ub2tlbiIsInBhcnNlVG9rZW4iLCJ0ZXN0IiwiSW52YWxpZFRva2VuRXJyb3IiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFQTs7QUFDQTs7QUFFQTs7QUFDQTs7QUFJQTs7QUFDQTs7QUFFQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFD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QUNIOzs7V0FFRCxtQkFBVUMsTUFBVixFQUEwQjtBQUN0QixVQUFJLEtBQUt2RyxpQkFBTCxDQUF1Qm9CLFFBQXZCLE9BQXNDM0csZ0JBQWdCLENBQUMyRixNQUEzRCxFQUFtRTtBQUMvRCxjQUFNLElBQUl0RixLQUFKLENBQVUsdURBQVYsQ0FBTjtBQUNIOztBQUVELFVBQU0wTCxlQUFlLEdBQUcsS0FBS0MsVUFBTCxDQUFnQixLQUFLeEksS0FBckIsQ0FBeEI7O0FBQ0EsVUFBSXVJLGVBQUosRUFBcUI7QUFDakIsZUFBTzdJLE9BQU8sQ0FBQ2UsSUFBUixDQUFhLDBFQUFiLENBQVA7QUFDSDs7QUFFRCxVQUFJLE9BQVFnSSxJQUFSLENBQWFILE1BQWIsQ0FBSixFQUEwQjtBQUN0QixlQUFPNUksT0FBTyxDQUFDZSxJQUFSLENBQWEsMkhBQWIsQ0FBUDtBQUNIOztBQUVELFdBQUsrQyx5QkFBTCxHQUFpQzhFLE1BQWpDO0FBQ0g7OztXQUVELG9CQUFtQnRJLEtBQW5CLEVBQWtDO0FBQzlCLFVBQUk7QUFDQSxvQkFBaUIsMkJBQXNCQSxLQUF0QixDQUFqQjtBQUFBLFlBQVFzRCxJQUFSLFNBQVFBLElBQVI7O0FBQ0EsZUFBT0EsSUFBUDtBQUNILE9BSEQsQ0FHRSxPQUFPa0IsQ0FBUCxFQUFVO0FBQ1IsWUFBSUEsQ0FBQyxZQUFZa0UsNEJBQWpCLEVBQW9DO0FBQ2hDLGlCQUFPeEksU0FBUDtBQUNIO0FBQ0o7QUFDSiIsInNvdXJjZXNDb250ZW50IjpbIi8vIEluIG9yZGVyIHRvIGtlZXAgZmlsZSBzaXplIGRvd24sIG9ubHkgaW1wb3J0IHRoZSBwYXJ0cyBvZiByeGpzIHRoYXQgd2UgdXNlXG5cbmltcG9ydCAnY29yZS1qcy9mZWF0dXJlcy9wcm9taXNlJztcbmltcG9ydCAndXJsLXNlYXJjaC1wYXJhbXMtcG9seWZpbGwnO1xuaW1wb3J0IHsgQWpheFJlc3BvbnNlLCBBamF4Q3JlYXRpb25NZXRob2QsIEFqYXhSZXF1ZXN0LCBBamF4RXJyb3IgfSBmcm9tICdyeGpzL29ic2VydmFibGUvZG9tL0FqYXhPYnNlcnZhYmxlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCB9IGZyb20gJ3J4anMvQmVoYXZpb3JTdWJqZWN0JztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzL09ic2VydmFibGUnO1xuaW1wb3J0IHsgSVNjaGVkdWxlciB9IGZyb20gJ3J4anMvU2NoZWR1bGVyJztcbmltcG9ydCB7IFN1YnNjcmliZXIgfSBmcm9tICdyeGpzL1N1YnNjcmliZXInO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcy9TdWJzY3JpcHRpb24nO1xuaW1wb3J0IHsgYXN5bmMgYXMgQXN5bmNTY2hlZHVsZXIgfSBmcm9tICdyeGpzL3NjaGVkdWxlci9hc3luYyc7XG5pbXBvcnQgand0RGVjb2RlLCB7IEp3dFBheWxvYWQsIEludmFsaWRUb2tlbkVycm9yIH0gZnJvbSAnand0LWRlY29kZSc7XG5cbmltcG9ydCAncnhqcy9hZGQvb3BlcmF0b3IvY2F0Y2gnO1xuaW1wb3J0ICdyeGpzL2FkZC9vcGVyYXRvci9jb21iaW5lTGF0ZXN0JztcbmltcG9ydCAncnhqcy9hZGQvb3BlcmF0b3IvY291bnQnO1xuaW1wb3J0ICdyeGpzL2FkZC9vcGVyYXRvci9kZWxheSc7XG5pbXBvcnQgJ3J4anMvYWRkL29wZXJhdG9yL2RvJztcbmltcG9ydCAncnhqcy9hZGQvb3BlcmF0b3IvZmlsdGVyJztcbmltcG9ydCAncnhqcy9hZGQvb3BlcmF0b3IvbWFwJztcbmltcG9ydCAncnhqcy9hZGQvb3BlcmF0b3IvbWVyZ2VNYXAnO1xuaW1wb3J0ICdyeGpzL2FkZC9vcGVyYXRvci9jb25jYXRNYXAnO1xuaW1wb3J0ICdyeGpzL2FkZC9vcGVyYXRvci9yZXRyeVdoZW4nO1xuaW1wb3J0ICdyeGpzL2FkZC9vcGVyYXRvci9zaGFyZSc7XG5pbXBvcnQgJ3J4anMvYWRkL29wZXJhdG9yL3Rha2UnO1xuXG5pbXBvcnQgJ3J4anMvYWRkL29ic2VydmFibGUvZG9tL2FqYXgnO1xuaW1wb3J0ICdyeGpzL2FkZC9vYnNlcnZhYmxlL2VtcHR5JztcbmltcG9ydCAncnhqcy9hZGQvb2JzZXJ2YWJsZS9mcm9tJztcbmltcG9ydCAncnhqcy9hZGQvb2JzZXJ2YWJsZS9pbnRlcnZhbCc7XG5pbXBvcnQgJ3J4anMvYWRkL29ic2VydmFibGUvb2YnO1xuaW1wb3J0ICdyeGpzL2FkZC9vYnNlcnZhYmxlL3Rocm93JztcblxuaW1wb3J0IGRlZHVwZUZpbGVuYW1lcyBmcm9tICcuL2RlZHVwZUZpbGVuYW1lcyc7XG5pbXBvcnQgeyBvYmplY3RFeHByZXNzaW9uIH0gZnJvbSAnQGJhYmVsL3R5cGVzJztcblxuaW1wb3J0IHsgRGlyZWN0TGluZVN0cmVhbWluZyB9IGZyb20gJy4vZGlyZWN0TGluZVN0cmVhbWluZyc7XG5leHBvcnQgeyBEaXJlY3RMaW5lU3RyZWFtaW5nIH07XG5cbmNvbnN0IERJUkVDVF9MSU5FX1ZFUlNJT04gPSAnRGlyZWN0TGluZS8zLjAnO1xuXG5kZWNsYXJlIHZhciBwcm9jZXNzOiB7XG4gICAgYXJjaDogc3RyaW5nO1xuICAgIGVudjoge1xuICAgICAgICBWRVJTSU9OOiBzdHJpbmc7XG4gICAgICAgIG5wbV9wYWNrYWdlX3ZlcnNpb246IHN0cmluZztcbiAgICB9O1xuICAgIHBsYXRmb3JtOiBzdHJpbmc7XG4gICAgcmVsZWFzZTogc3RyaW5nO1xuICAgIHZlcnNpb246IHN0cmluZztcbn07XG5cbi8vIERpcmVjdCBMaW5lIDMuMCB0eXBlc1xuXG5leHBvcnQgaW50ZXJmYWNlIENvbnZlcnNhdGlvbiB7XG4gICAgY29udmVyc2F0aW9uSWQ6IHN0cmluZyxcbiAgICB0b2tlbjogc3RyaW5nLFxuICAgIGVUYWc/OiBzdHJpbmcsXG4gICAgc3RyZWFtVXJsPzogc3RyaW5nLFxuICAgIHJlZmVyZW5jZUdyYW1tYXJJZD86IHN0cmluZ1xufVxuXG5leHBvcnQgdHlwZSBNZWRpYVR5cGUgPSBcImltYWdlL3BuZ1wiIHwgXCJpbWFnZS9qcGdcIiB8IFwiaW1hZ2UvanBlZ1wiIHwgXCJpbWFnZS9naWZcIiB8IFwiaW1hZ2Uvc3ZnK3htbFwiIHwgXCJhdWRpby9tcGVnXCIgfCBcImF1ZGlvL21wNFwiIHwgXCJ2aWRlby9tcDRcIjtcblxuZXhwb3J0IGludGVyZmFjZSBNZWRpYSB7XG4gICAgY29udGVudFR5cGU6IE1lZGlhVHlwZSxcbiAgICBjb250ZW50VXJsOiBzdHJpbmcsXG4gICAgbmFtZT86IHN0cmluZyxcbiAgICB0aHVtYm5haWxVcmw/OiBzdHJpbmdcbn1cblxuZXhwb3J0IGludGVyZmFjZSBVbmtub3duTWVkaWF7XG4gICAgY29udGVudFR5cGU6IHN0cmluZyxcbiAgICBjb250ZW50VXJsOiBzdHJpbmcsXG4gICAgbmFtZT86IHN0cmluZyxcbiAgICB0aHVtYm5haWxVcmw/OiBzdHJpbmdcbn1cblxuZXhwb3J0IHR5cGUgQ2FyZEFjdGlvblR5cGVzID0gXCJjYWxsXCIgfCBcImRvd25sb2FkRmlsZVwifCBcImltQmFja1wiIHwgXCJtZXNzYWdlQmFja1wiIHwgXCJvcGVuVXJsXCIgfCBcInBsYXlBdWRpb1wiIHwgXCJwbGF5VmlkZW9cIiB8IFwicG9zdEJhY2tcIiB8IFwic2lnbmluXCIgfCBcInNob3dJbWFnZVwiO1xuXG5leHBvcnQgdHlwZSBDYXJkQWN0aW9uID0gQ2FsbENhcmRBY3Rpb24gfCBEb3dubG9hZEZpbGVDYXJkQWN0aW9uIHwgSU1CYWNrQ2FyZEFjdGlvbiB8IE1lc3NhZ2VCYWNrQ2FyZEFjdGlvbiB8IE9wZW5VUkxDYXJkQWN0aW9uIHwgUGxheUF1ZGlvQ2FyZEFjdGlvbiB8IFBsYXlWaWRlb0NhcmRBY3Rpb24gfCBQb3N0QmFja0NhcmRBY3Rpb24gfCBTaWduSW5DYXJkQWN0aW9uIHwgU2hvd0ltYWdlQ2FyZEFjdGlvbjtcblxuZXhwb3J0IGludGVyZmFjZSBDYWxsQ2FyZEFjdGlvbiB7XG4gICAgaW1hZ2U/OiBzdHJpbmcsXG4gICAgdGl0bGU6IHN0cmluZyxcbiAgICB0eXBlOiBcImNhbGxcIixcbiAgICB2YWx1ZTogYW55XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRG93bmxvYWRGaWxlQ2FyZEFjdGlvbiB7XG4gICAgaW1hZ2U/OiBzdHJpbmcsXG4gICAgdGl0bGU6IHN0cmluZyxcbiAgICB0eXBlOiBcImRvd25sb2FkRmlsZVwiLFxuICAgIHZhbHVlOiBhbnlcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJTUJhY2tDYXJkQWN0aW9uIHtcbiAgICBpbWFnZT86IHN0cmluZyxcbiAgICB0aXRsZT86IHN0cmluZyxcbiAgICB0eXBlOiBcImltQmFja1wiLFxuICAgIHZhbHVlOiBzdHJpbmdcbn1cblxuZXhwb3J0IHR5cGUgTWVzc2FnZUJhY2tDYXJkQWN0aW9uID0gTWVzc2FnZUJhY2tXaXRoSW1hZ2UgfCBNZXNzYWdlQmFja1dpdGhUaXRsZVxuXG5leHBvcnQgaW50ZXJmYWNlIE1lc3NhZ2VCYWNrV2l0aEltYWdlIHtcbiAgICBkaXNwbGF5VGV4dD86IHN0cmluZyxcbiAgICBpbWFnZTogc3RyaW5nLFxuICAgIHRleHQ/OiBzdHJpbmcsXG4gICAgdGl0bGU/OiBzdHJpbmcsXG4gICAgdHlwZTogXCJtZXNzYWdlQmFja1wiLFxuICAgIHZhbHVlPzogYW55XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWVzc2FnZUJhY2tXaXRoVGl0bGUge1xuICAgIGRpc3BsYXlUZXh0Pzogc3RyaW5nLFxuICAgIGltYWdlPzogc3RyaW5nLFxuICAgIHRleHQ/OiBzdHJpbmcsXG4gICAgdGl0bGU6IHN0cmluZyxcbiAgICB0eXBlOiBcIm1lc3NhZ2VCYWNrXCIsXG4gICAgdmFsdWU/OiBhbnlcbn1cblxuZXhwb3J0IGludGVyZmFjZSBPcGVuVVJMQ2FyZEFjdGlvbiB7XG4gICAgaW1hZ2U/OiBzdHJpbmcsXG4gICAgdGl0bGU6IHN0cmluZyxcbiAgICB0eXBlOiBcIm9wZW5VcmxcIixcbiAgICB2YWx1ZTogYW55XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGxheUF1ZGlvQ2FyZEFjdGlvbiB7XG4gICAgaW1hZ2U/OiBzdHJpbmcsXG4gICAgdGl0bGU6IHN0cmluZyxcbiAgICB0eXBlOiBcInBsYXlBdWRpb1wiLFxuICAgIHZhbHVlOiBhbnlcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQbGF5VmlkZW9DYXJkQWN0aW9uIHtcbiAgICBpbWFnZT86IHN0cmluZyxcbiAgICB0aXRsZTogc3RyaW5nLFxuICAgIHR5cGU6IFwicGxheVZpZGVvXCIsXG4gICAgdmFsdWU6IGFueVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBvc3RCYWNrQ2FyZEFjdGlvbiB7XG4gICAgaW1hZ2U/OiBzdHJpbmcsXG4gICAgdGl0bGU/OiBzdHJpbmcsXG4gICAgdHlwZTogXCJwb3N0QmFja1wiLFxuICAgIHZhbHVlOiBhbnlcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTaG93SW1hZ2VDYXJkQWN0aW9uIHtcbiAgICBpbWFnZT86IHN0cmluZyxcbiAgICB0aXRsZTogc3RyaW5nLFxuICAgIHR5cGU6IFwic2hvd0ltYWdlXCIsXG4gICAgdmFsdWU6IGFueVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNpZ25JbkNhcmRBY3Rpb24ge1xuICAgIGltYWdlPzogc3RyaW5nLFxuICAgIHRpdGxlOiBzdHJpbmcsXG4gICAgdHlwZTogXCJzaWduaW5cIixcbiAgICB2YWx1ZTogYW55XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2FyZEltYWdlIHtcbiAgICBhbHQ/OiBzdHJpbmcsXG4gICAgdXJsOiBzdHJpbmcsXG4gICAgdGFwPzogQ2FyZEFjdGlvblxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEhlcm9DYXJkIHtcbiAgICBjb250ZW50VHlwZTogXCJhcHBsaWNhdGlvbi92bmQubWljcm9zb2Z0LmNhcmQuaGVyb1wiLFxuICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgdGl0bGU/OiBzdHJpbmcsXG4gICAgICAgIHN1YnRpdGxlPzogc3RyaW5nLFxuICAgICAgICB0ZXh0Pzogc3RyaW5nLFxuICAgICAgICBpbWFnZXM/OiBDYXJkSW1hZ2VbXSxcbiAgICAgICAgYnV0dG9ucz86IENhcmRBY3Rpb25bXSxcbiAgICAgICAgdGFwPzogQ2FyZEFjdGlvblxuICAgIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBUaHVtYm5haWwge1xuICAgIGNvbnRlbnRUeXBlOiBcImFwcGxpY2F0aW9uL3ZuZC5taWNyb3NvZnQuY2FyZC50aHVtYm5haWxcIixcbiAgICBjb250ZW50OiB7XG4gICAgICAgIHRpdGxlPzogc3RyaW5nLFxuICAgICAgICBzdWJ0aXRsZT86IHN0cmluZyxcbiAgICAgICAgdGV4dD86IHN0cmluZyxcbiAgICAgICAgaW1hZ2VzPzogQ2FyZEltYWdlW10sXG4gICAgICAgIGJ1dHRvbnM/OiBDYXJkQWN0aW9uW10sXG4gICAgICAgIHRhcD86IENhcmRBY3Rpb25cbiAgICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2lnbmluIHtcbiAgICBjb250ZW50VHlwZTogXCJhcHBsaWNhdGlvbi92bmQubWljcm9zb2Z0LmNhcmQuc2lnbmluXCIsXG4gICAgY29udGVudDoge1xuICAgICAgICB0ZXh0Pzogc3RyaW5nLFxuICAgICAgICBidXR0b25zPzogQ2FyZEFjdGlvbltdXG4gICAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIE9BdXRoIHtcbiAgICBjb250ZW50VHlwZTogXCJhcHBsaWNhdGlvbi92bmQubWljcm9zb2Z0LmNhcmQub2F1dGhcIixcbiAgICBjb250ZW50OiB7XG4gICAgICAgIHRleHQ/OiBzdHJpbmcsXG4gICAgICAgIGNvbm5lY3Rpb25uYW1lOiBzdHJpbmcsXG4gICAgICAgIGJ1dHRvbnM/OiBDYXJkQWN0aW9uW11cbiAgICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVjZWlwdEl0ZW0ge1xuICAgIHRpdGxlPzogc3RyaW5nLFxuICAgIHN1YnRpdGxlPzogc3RyaW5nLFxuICAgIHRleHQ/OiBzdHJpbmcsXG4gICAgaW1hZ2U/OiBDYXJkSW1hZ2UsXG4gICAgcHJpY2U/OiBzdHJpbmcsXG4gICAgcXVhbnRpdHk/OiBzdHJpbmcsXG4gICAgdGFwPzogQ2FyZEFjdGlvblxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlY2VpcHQge1xuICAgIGNvbnRlbnRUeXBlOiBcImFwcGxpY2F0aW9uL3ZuZC5taWNyb3NvZnQuY2FyZC5yZWNlaXB0XCIsXG4gICAgY29udGVudDoge1xuICAgICAgICB0aXRsZT86IHN0cmluZyxcbiAgICAgICAgZmFjdHM/OiB7IGtleTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nIH1bXSxcbiAgICAgICAgaXRlbXM/OiBSZWNlaXB0SXRlbVtdLFxuICAgICAgICB0YXA/OiBDYXJkQWN0aW9uLFxuICAgICAgICB0YXg/OiBzdHJpbmcsXG4gICAgICAgIHZhdD86IHN0cmluZyxcbiAgICAgICAgdG90YWw/OiBzdHJpbmcsXG4gICAgICAgIGJ1dHRvbnM/OiBDYXJkQWN0aW9uW11cbiAgICB9XG59XG5cbi8vIERlcHJlY2F0ZWQgZm9ybWF0IGZvciBTa3lwZSBjaGFubmVscy4gRm9yIHRlc3RpbmcgbGVnYWN5IGJvdHMgaW4gRW11bGF0b3Igb25seS5cbmV4cG9ydCBpbnRlcmZhY2UgRmxleENhcmQge1xuICAgIGNvbnRlbnRUeXBlOiBcImFwcGxpY2F0aW9uL3ZuZC5taWNyb3NvZnQuY2FyZC5mbGV4XCIsXG4gICAgY29udGVudDoge1xuICAgICAgICB0aXRsZT86IHN0cmluZyxcbiAgICAgICAgc3VidGl0bGU/OiBzdHJpbmcsXG4gICAgICAgIHRleHQ/OiBzdHJpbmcsXG4gICAgICAgIGltYWdlcz86IENhcmRJbWFnZVtdLFxuICAgICAgICBidXR0b25zPzogQ2FyZEFjdGlvbltdLFxuICAgICAgICBhc3BlY3Q/OiBzdHJpbmdcbiAgICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXVkaW9DYXJkIHtcbiAgICBjb250ZW50VHlwZTogXCJhcHBsaWNhdGlvbi92bmQubWljcm9zb2Z0LmNhcmQuYXVkaW9cIixcbiAgICBjb250ZW50OiB7XG4gICAgICAgIHRpdGxlPzogc3RyaW5nLFxuICAgICAgICBzdWJ0aXRsZT86IHN0cmluZyxcbiAgICAgICAgdGV4dD86IHN0cmluZyxcbiAgICAgICAgbWVkaWE/OiB7IHVybDogc3RyaW5nLCBwcm9maWxlPzogc3RyaW5nIH1bXSxcbiAgICAgICAgYnV0dG9ucz86IENhcmRBY3Rpb25bXSxcbiAgICAgICAgYXV0b2xvb3A/OiBib29sZWFuLFxuICAgICAgICBhdXRvc3RhcnQ/OiBib29sZWFuXG4gICAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFZpZGVvQ2FyZCB7XG4gICAgY29udGVudFR5cGU6IFwiYXBwbGljYXRpb24vdm5kLm1pY3Jvc29mdC5jYXJkLnZpZGVvXCIsXG4gICAgY29udGVudDoge1xuICAgICAgICB0aXRsZT86IHN0cmluZyxcbiAgICAgICAgc3VidGl0bGU/OiBzdHJpbmcsXG4gICAgICAgIHRleHQ/OiBzdHJpbmcsXG4gICAgICAgIG1lZGlhPzogeyB1cmw6IHN0cmluZywgcHJvZmlsZT86IHN0cmluZyB9W10sXG4gICAgICAgIGJ1dHRvbnM/OiBDYXJkQWN0aW9uW10sXG4gICAgICAgIGltYWdlPzogeyB1cmw6IHN0cmluZywgYWx0Pzogc3RyaW5nIH0sXG4gICAgICAgIGF1dG9sb29wPzogYm9vbGVhbixcbiAgICAgICAgYXV0b3N0YXJ0PzogYm9vbGVhblxuICAgIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBBZGFwdGl2ZUNhcmQge1xuICAgIGNvbnRlbnRUeXBlOiBcImFwcGxpY2F0aW9uL3ZuZC5taWNyb3NvZnQuY2FyZC5hZGFwdGl2ZVwiLFxuICAgIGNvbnRlbnQ6IGFueTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBbmltYXRpb25DYXJkIHtcbiAgICBjb250ZW50VHlwZTogXCJhcHBsaWNhdGlvbi92bmQubWljcm9zb2Z0LmNhcmQuYW5pbWF0aW9uXCIsXG4gICAgY29udGVudDoge1xuICAgICAgICB0aXRsZT86IHN0cmluZyxcbiAgICAgICAgc3VidGl0bGU/OiBzdHJpbmcsXG4gICAgICAgIHRleHQ/OiBzdHJpbmcsXG4gICAgICAgIG1lZGlhPzogeyB1cmw6IHN0cmluZywgcHJvZmlsZT86IHN0cmluZyB9W10sXG4gICAgICAgIGJ1dHRvbnM/OiBDYXJkQWN0aW9uW10sXG4gICAgICAgIGltYWdlPzogeyB1cmw6IHN0cmluZywgYWx0Pzogc3RyaW5nIH0sXG4gICAgICAgIGF1dG9sb29wPzogYm9vbGVhbixcbiAgICAgICAgYXV0b3N0YXJ0PzogYm9vbGVhblxuICAgIH1cbn1cblxuZXhwb3J0IHR5cGUgS25vd25NZWRpYSA9IE1lZGlhIHwgSGVyb0NhcmQgfCBUaHVtYm5haWwgfCBTaWduaW4gfCBPQXV0aCB8IFJlY2VpcHQgfCBBdWRpb0NhcmQgfCBWaWRlb0NhcmQgfCBBbmltYXRpb25DYXJkIHwgRmxleENhcmQgfCBBZGFwdGl2ZUNhcmQ7XG5leHBvcnQgdHlwZSBBdHRhY2htZW50ID0gS25vd25NZWRpYSB8IFVua25vd25NZWRpYTtcblxuZXhwb3J0IHR5cGUgVXNlclJvbGUgPSBcImJvdFwiIHwgXCJjaGFubmVsXCIgfCBcInVzZXJcIjtcblxuZXhwb3J0IGludGVyZmFjZSBVc2VyIHtcbiAgICBpZDogc3RyaW5nLFxuICAgIG5hbWU/OiBzdHJpbmcsXG4gICAgaWNvblVybD86IHN0cmluZyxcbiAgICByb2xlPzogVXNlclJvbGVcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJQWN0aXZpdHkge1xuICAgIHR5cGU6IHN0cmluZyxcbiAgICBjaGFubmVsRGF0YT86IGFueSxcbiAgICBjaGFubmVsSWQ/OiBzdHJpbmcsXG4gICAgY29udmVyc2F0aW9uPzogeyBpZDogc3RyaW5nIH0sXG4gICAgZVRhZz86IHN0cmluZyxcbiAgICBmcm9tOiBVc2VyLFxuICAgIGlkPzogc3RyaW5nLFxuICAgIHRpbWVzdGFtcD86IHN0cmluZ1xufVxuXG5leHBvcnQgdHlwZSBBdHRhY2htZW50TGF5b3V0ID0gXCJsaXN0XCIgfCBcImNhcm91c2VsXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWVzc2FnZSBleHRlbmRzIElBY3Rpdml0eSB7XG4gICAgdHlwZTogXCJtZXNzYWdlXCIsXG4gICAgdGV4dD86IHN0cmluZyxcbiAgICBsb2NhbGU/OiBzdHJpbmcsXG4gICAgdGV4dEZvcm1hdD86IFwicGxhaW5cIiB8IFwibWFya2Rvd25cIiB8IFwieG1sXCIsXG4gICAgYXR0YWNobWVudExheW91dD86IEF0dGFjaG1lbnRMYXlvdXQsXG4gICAgYXR0YWNobWVudHM/OiBBdHRhY2htZW50W10sXG4gICAgZW50aXRpZXM/OiBhbnlbXSxcbiAgICBzdWdnZXN0ZWRBY3Rpb25zPzogeyBhY3Rpb25zOiBDYXJkQWN0aW9uW10sIHRvPzogc3RyaW5nW10gfSxcbiAgICBzcGVhaz86IHN0cmluZyxcbiAgICBpbnB1dEhpbnQ/OiBzdHJpbmcsXG4gICAgdmFsdWU/OiBvYmplY3Rcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUeXBpbmcgZXh0ZW5kcyBJQWN0aXZpdHkge1xuICAgIHR5cGU6IFwidHlwaW5nXCJcbn1cblxuZXhwb3J0IGludGVyZmFjZSBFdmVudEFjdGl2aXR5IGV4dGVuZHMgSUFjdGl2aXR5IHtcbiAgICB0eXBlOiBcImV2ZW50XCIsXG4gICAgbmFtZTogc3RyaW5nLFxuICAgIHZhbHVlOiBhbnlcbn1cblxuZXhwb3J0IHR5cGUgQWN0aXZpdHkgPSBNZXNzYWdlIHwgVHlwaW5nIHwgRXZlbnRBY3Rpdml0eTtcblxuZXhwb3J0IGludGVyZmFjZSBBY3Rpdml0eUdyb3VwIHtcbiAgICBhY3Rpdml0aWVzOiBBY3Rpdml0eVtdLFxuICAgIHdhdGVybWFyazogc3RyaW5nXG59XG5cbi8vIFRoZXNlIHR5cGVzIGFyZSBzcGVjaWZpYyB0byB0aGlzIGNsaWVudCBsaWJyYXJ5LCBub3QgdG8gRGlyZWN0IExpbmUgMy4wXG5cbmV4cG9ydCBlbnVtIENvbm5lY3Rpb25TdGF0dXMge1xuICAgIFVuaW5pdGlhbGl6ZWQsICAgICAgICAgICAgICAvLyB0aGUgc3RhdHVzIHdoZW4gdGhlIERpcmVjdExpbmUgb2JqZWN0IGlzIGZpcnN0IGNyZWF0ZWQvY29uc3RydWN0ZWRcbiAgICBDb25uZWN0aW5nLCAgICAgICAgICAgICAgICAgLy8gY3VycmVudGx5IHRyeWluZyB0byBjb25uZWN0IHRvIHRoZSBjb252ZXJzYXRpb25cbiAgICBPbmxpbmUsICAgICAgICAgICAgICAgICAgICAgLy8gc3VjY2Vzc2Z1bGx5IGNvbm5lY3RlZCB0byB0aGUgY29udmVyc2F0aW9uLiBDb25uZWN0aW9uIGlzIGhlYWx0aHkgc28gZmFyIGFzIHdlIGtub3cuXG4gICAgRXhwaXJlZFRva2VuLCAgICAgICAgICAgICAgIC8vIGxhc3Qgb3BlcmF0aW9uIGVycm9yZWQgb3V0IHdpdGggYW4gZXhwaXJlZCB0b2tlbi4gUG9zc2libHkgd2FpdGluZyBmb3Igc29tZW9uZSB0byBzdXBwbHkgYSBuZXcgb25lLlxuICAgIEZhaWxlZFRvQ29ubmVjdCwgICAgICAgICAgICAvLyB0aGUgaW5pdGlhbCBhdHRlbXB0IHRvIGNvbm5lY3QgdG8gdGhlIGNvbnZlcnNhdGlvbiBmYWlsZWQuIE5vIHJlY292ZXJ5IHBvc3NpYmxlLlxuICAgIEVuZGVkICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGUgYm90IGVuZGVkIHRoZSBjb252ZXJzYXRpb25cbn1cblxuZXhwb3J0IGludGVyZmFjZSBEaXJlY3RMaW5lT3B0aW9ucyB7XG4gICAgc2VjcmV0Pzogc3RyaW5nLFxuICAgIHRva2VuPzogc3RyaW5nLFxuICAgIGNvbnZlcnNhdGlvbklkPzogc3RyaW5nLFxuICAgIHdhdGVybWFyaz86IHN0cmluZyxcbiAgICBkb21haW4/OiBzdHJpbmcsXG4gICAgd2ViU29ja2V0PzogYm9vbGVhbixcbiAgICBwb2xsaW5nSW50ZXJ2YWw/OiBudW1iZXIsXG4gICAgc3RyZWFtVXJsPzogc3RyaW5nLFxuICAgIHRpbWVvdXQ/OiBudW1iZXIsXG4gICAgLy8gQXR0YWNoZWQgdG8gYWxsIHJlcXVlc3RzIHRvIGlkZW50aWZ5IHJlcXVlc3RpbmcgYWdlbnQuXG4gICAgYm90QWdlbnQ/OiBzdHJpbmcsXG4gICAgY29udmVyc2F0aW9uU3RhcnRQcm9wZXJ0aWVzPzogYW55XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VydmljZXMge1xuICAgIHNjaGVkdWxlcjogSVNjaGVkdWxlcjtcbiAgICBXZWJTb2NrZXQ6IHR5cGVvZiBXZWJTb2NrZXQ7XG4gICAgYWpheDogQWpheENyZWF0aW9uTWV0aG9kO1xuICAgIHJhbmRvbTogKCkgPT4gbnVtYmVyO1xufVxuXG5jb25zdCB3cmFwQWpheFdpdGhSZXRyeSA9IChzb3VyY2U6IEFqYXhDcmVhdGlvbk1ldGhvZCwgc2NoZWR1bGVyOiBJU2NoZWR1bGVyKTogQWpheENyZWF0aW9uTWV0aG9kID0+e1xuXG4gICAgY29uc3Qgbm90SW1wbGVtZW50ZWQgPSAoKTogbmV2ZXIgPT4geyB0aHJvdyBuZXcgRXJyb3IoJ25vdCBpbXBsZW1lbnRlZCcpOyB9O1xuXG4gICAgY29uc3QgaW5uZXIgPSAocmVzcG9uc2UkIDogT2JzZXJ2YWJsZTxBamF4UmVzcG9uc2U+KSA9PiB7XG4gICAgICAgIHJldHVybiByZXNwb25zZSRcbiAgICAgICAgLmNhdGNoPEFqYXhSZXNwb25zZSwgQWpheFJlc3BvbnNlPigoZXJyKSA9PiB7XG4gICAgICAgICAgICBpZihlcnIuc3RhdHVzID09PSA0Mjkpe1xuICAgICAgICAgICAgICAgIGNvbnN0IHJldHJ5QWZ0ZXJWYWx1ZSA9IGVyci54aHIuZ2V0UmVzcG9uc2VIZWFkZXIoJ1JldHJ5LUFmdGVyJyk7XG4gICAgICAgICAgICAgICAgY29uc3QgcmV0cnlBZnRlciA9IE51bWJlcihyZXRyeUFmdGVyVmFsdWUpO1xuICAgICAgICAgICAgICAgIGlmKCFpc05hTihyZXRyeUFmdGVyKSl7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBPYnNlcnZhYmxlLnRpbWVyKHJldHJ5QWZ0ZXIsIHNjaGVkdWxlcilcbiAgICAgICAgICAgICAgICAgICAgLmZsYXRNYXAoXyA9PiBPYnNlcnZhYmxlLnRocm93KGVyciwgc2NoZWR1bGVyKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gT2JzZXJ2YWJsZS50aHJvdyhlcnIsIHNjaGVkdWxlcik7XG4gICAgICAgIH0pO1xuICAgIH07XG5cbiAgICBjb25zdCBvdXRlciA9ICh1cmxPclJlcXVlc3Q6IHN0cmluZ3wgQWpheFJlcXVlc3QpID0+IHtcbiAgICAgICAgcmV0dXJuIGlubmVyKHNvdXJjZSh1cmxPclJlcXVlc3QpKTtcbiAgICB9O1xuXG4gICAgcmV0dXJuIE9iamVjdC5hc3NpZ24ob3V0ZXIsIHtcbiAgICAgICAgZ2V0OiAodXJsOiBzdHJpbmcsIGhlYWRlcnM/OiBPYmplY3QpOiBPYnNlcnZhYmxlPEFqYXhSZXNwb25zZT4gPT4gbm90SW1wbGVtZW50ZWQoKSxcbiAgICAgICAgcG9zdDogKHVybDogc3RyaW5nLCBib2R5PzogYW55LCBoZWFkZXJzPzogT2JqZWN0KTogT2JzZXJ2YWJsZTxBamF4UmVzcG9uc2U+ID0+IG5vdEltcGxlbWVudGVkKCksXG4gICAgICAgIHB1dDogKHVybDogc3RyaW5nLCBib2R5PzogYW55LCBoZWFkZXJzPzogT2JqZWN0KTogT2JzZXJ2YWJsZTxBamF4UmVzcG9uc2U+ID0+IG5vdEltcGxlbWVudGVkKCksXG4gICAgICAgIHBhdGNoOiAodXJsOiBzdHJpbmcsIGJvZHk/OiBhbnksIGhlYWRlcnM/OiBPYmplY3QpOiBPYnNlcnZhYmxlPEFqYXhSZXNwb25zZT4gPT4gbm90SW1wbGVtZW50ZWQoKSxcbiAgICAgICAgZGVsZXRlOiAodXJsOiBzdHJpbmcsIGhlYWRlcnM/OiBPYmplY3QpOiBPYnNlcnZhYmxlPEFqYXhSZXNwb25zZT4gPT4gbm90SW1wbGVtZW50ZWQoKSxcbiAgICAgICAgZ2V0SlNPTjogPFQ+KHVybDogc3RyaW5nLCBoZWFkZXJzPzogT2JqZWN0KTogT2JzZXJ2YWJsZTxUPiA9PiBub3RJbXBsZW1lbnRlZCgpXG4gICAgfSk7XG59XG5cbmNvbnN0IG1ha2VTZXJ2aWNlcyA9IChzZXJ2aWNlczogUGFydGlhbDxTZXJ2aWNlcz4pOiBTZXJ2aWNlcyA9PiB7XG4gICAgY29uc3Qgc2NoZWR1bGVyID0gc2VydmljZXMuc2NoZWR1bGVyIHx8IEFzeW5jU2NoZWR1bGVyO1xuICAgIHJldHVybiB7XG4gICAgICAgIHNjaGVkdWxlcixcbiAgICAgICAgYWpheDogd3JhcEFqYXhXaXRoUmV0cnkoc2VydmljZXMuYWpheCB8fCBPYnNlcnZhYmxlLmFqYXgsIHNjaGVkdWxlciksXG4gICAgICAgIFdlYlNvY2tldDogc2VydmljZXMuV2ViU29ja2V0IHx8IFdlYlNvY2tldCxcbiAgICAgICAgcmFuZG9tOiBzZXJ2aWNlcy5yYW5kb20gfHwgTWF0aC5yYW5kb20sXG4gICAgfVxufVxuXG5jb25zdCBsaWZldGltZVJlZnJlc2hUb2tlbiA9IDMwICogNjAgKiAxMDAwO1xuY29uc3QgaW50ZXJ2YWxSZWZyZXNoVG9rZW4gPSBsaWZldGltZVJlZnJlc2hUb2tlbiAvIDI7XG5cbmNvbnN0IFBPTExJTkdfSU5URVJWQUxfTE9XRVJfQk9VTkQ6IG51bWJlciA9IDIwMDsgLy9tc1xuXG5jb25zdCBlcnJvckV4cGlyZWRUb2tlbiA9IG5ldyBFcnJvcihcImV4cGlyZWQgdG9rZW5cIik7XG5jb25zdCBlcnJvckNvbnZlcnNhdGlvbkVuZGVkID0gbmV3IEVycm9yKFwiY29udmVyc2F0aW9uIGVuZGVkXCIpO1xuY29uc3QgZXJyb3JGYWlsZWRUb0Nvbm5lY3QgPSBuZXcgRXJyb3IoXCJmYWlsZWQgdG8gY29ubmVjdFwiKTtcblxuY29uc3Qga29uc29sZSA9IHtcbiAgICBsb2c6IChtZXNzYWdlPzogYW55LCAuLi4gb3B0aW9uYWxQYXJhbXM6IGFueVtdKSA9PiB7XG4gICAgICAgIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiAod2luZG93IGFzIGFueSlbXCJib3RjaGF0RGVidWdcIl0gJiYgbWVzc2FnZSlcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKG1lc3NhZ2UsIC4uLiBvcHRpb25hbFBhcmFtcyk7XG4gICAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIElCb3RDb25uZWN0aW9uIHtcbiAgICBjb25uZWN0aW9uU3RhdHVzJDogQmVoYXZpb3JTdWJqZWN0PENvbm5lY3Rpb25TdGF0dXM+LFxuICAgIGFjdGl2aXR5JDogT2JzZXJ2YWJsZTxBY3Rpdml0eT4sXG4gICAgZW5kKCk6IHZvaWQsXG4gICAgcmVmZXJlbmNlR3JhbW1hcklkPzogc3RyaW5nLFxuICAgIHBvc3RBY3Rpdml0eShhY3Rpdml0eTogQWN0aXZpdHkpOiBPYnNlcnZhYmxlPHN0cmluZz4sXG4gICAgZ2V0U2Vzc2lvbklkPyA6ICgpID0+IE9ic2VydmFibGU8c3RyaW5nPlxufVxuXG5leHBvcnQgY2xhc3MgRGlyZWN0TGluZSBpbXBsZW1lbnRzIElCb3RDb25uZWN0aW9uIHtcbiAgICBwdWJsaWMgY29ubmVjdGlvblN0YXR1cyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KENvbm5lY3Rpb25TdGF0dXMuVW5pbml0aWFsaXplZCk7XG4gICAgcHVibGljIGFjdGl2aXR5JDogT2JzZXJ2YWJsZTxBY3Rpdml0eT47XG5cbiAgICBwcml2YXRlIGRvbWFpbiA9IFwiaHR0cHM6Ly9kaXJlY3RsaW5lLmJvdGZyYW1ld29yay5jb20vdjMvZGlyZWN0bGluZVwiO1xuICAgIHByaXZhdGUgd2ViU29ja2V0OiBib29sZWFuO1xuXG4gICAgcHJpdmF0ZSBjb252ZXJzYXRpb25JZDogc3RyaW5nO1xuICAgIHByaXZhdGUgZXhwaXJlZFRva2VuRXhoYXVzdGlvbjogRnVuY3Rpb247XG4gICAgcHJpdmF0ZSBzZWNyZXQ6IHN0cmluZztcbiAgICBwcml2YXRlIHRva2VuOiBzdHJpbmc7XG4gICAgcHJpdmF0ZSB3YXRlcm1hcmsgPSAnJztcbiAgICBwcml2YXRlIHN0cmVhbVVybDogc3RyaW5nO1xuICAgIHByaXZhdGUgX2JvdEFnZW50ID0gJyc7XG4gICAgcHJpdmF0ZSBzZXJ2aWNlczogU2VydmljZXM7XG4gICAgcHJpdmF0ZSBfdXNlckFnZW50OiBzdHJpbmc7XG4gICAgcHVibGljIHJlZmVyZW5jZUdyYW1tYXJJZDogc3RyaW5nO1xuICAgIHByaXZhdGUgdGltZW91dCA9IDIwICogMTAwMDtcbiAgICBwcml2YXRlIHJldHJpZXM6IG51bWJlcjtcblxuICAgIHByaXZhdGUgbG9jYWxlT25TdGFydENvbnZlcnNhdGlvbjogc3RyaW5nO1xuICAgIHByaXZhdGUgdXNlcklkT25TdGFydENvbnZlcnNhdGlvbjogc3RyaW5nO1xuXG4gICAgcHJpdmF0ZSBwb2xsaW5nSW50ZXJ2YWw6IG51bWJlciA9IDEwMDA7IC8vbXNcblxuICAgIHByaXZhdGUgdG9rZW5SZWZyZXNoU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zOiBEaXJlY3RMaW5lT3B0aW9ucyAmIFBhcnRpYWw8U2VydmljZXM+KSB7XG4gICAgICAgIHRoaXMuc2VjcmV0ID0gb3B0aW9ucy5zZWNyZXQ7XG4gICAgICAgIHRoaXMudG9rZW4gPSBvcHRpb25zLnNlY3JldCB8fCBvcHRpb25zLnRva2VuO1xuICAgICAgICB0aGlzLndlYlNvY2tldCA9IChvcHRpb25zLndlYlNvY2tldCA9PT0gdW5kZWZpbmVkID8gdHJ1ZSA6IG9wdGlvbnMud2ViU29ja2V0KSAmJiB0eXBlb2YgV2ViU29ja2V0ICE9PSAndW5kZWZpbmVkJyAmJiBXZWJTb2NrZXQgIT09IHVuZGVmaW5lZDtcblxuICAgICAgICBpZiAob3B0aW9ucy5jb252ZXJzYXRpb25TdGFydFByb3BlcnRpZXMgJiYgb3B0aW9ucy5jb252ZXJzYXRpb25TdGFydFByb3BlcnRpZXMubG9jYWxlKSB7XG4gICAgICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG9wdGlvbnMuY29udmVyc2F0aW9uU3RhcnRQcm9wZXJ0aWVzLmxvY2FsZSkgPT09ICdbb2JqZWN0IFN0cmluZ10nKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5sb2NhbGVPblN0YXJ0Q29udmVyc2F0aW9uID0gb3B0aW9ucy5jb252ZXJzYXRpb25TdGFydFByb3BlcnRpZXMubG9jYWxlO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oJ0RpcmVjdExpbmVKUzogY29udmVyc2F0aW9uU3RhcnRQcm9wZXJ0aWVzLmxvY2FsZSB3YXMgaWdub3JlZDogdGhlIGxvY2FsZSBuYW1lIG1heSBiZSBhIEJDUCA0NyBsYW5ndWFnZSB0YWcnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChvcHRpb25zLmRvbWFpbikge1xuICAgICAgICAgICAgdGhpcy5kb21haW4gPSBvcHRpb25zLmRvbWFpbjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChvcHRpb25zLmNvbnZlcnNhdGlvbklkKSB7XG4gICAgICAgICAgICB0aGlzLmNvbnZlcnNhdGlvbklkID0gb3B0aW9ucy5jb252ZXJzYXRpb25JZDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChvcHRpb25zLndhdGVybWFyaykge1xuICAgICAgICAgICAgdGhpcy53YXRlcm1hcmsgPSAgb3B0aW9ucy53YXRlcm1hcms7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAob3B0aW9ucy5zdHJlYW1VcmwpIHtcbiAgICAgICAgICAgIGlmIChvcHRpb25zLnRva2VuICYmIG9wdGlvbnMuY29udmVyc2F0aW9uSWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0cmVhbVVybCA9IG9wdGlvbnMuc3RyZWFtVXJsO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oJ0RpcmVjdExpbmVKUzogc3RyZWFtVXJsIHdhcyBpZ25vcmVkOiB5b3UgbmVlZCB0byBwcm92aWRlIGEgdG9rZW4gYW5kIGEgY29udmVyc2F0aW9uaWQnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChvcHRpb25zLnRpbWVvdXQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhpcy50aW1lb3V0ID0gb3B0aW9ucy50aW1lb3V0O1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5yZXRyaWVzID0gKGxpZmV0aW1lUmVmcmVzaFRva2VuIC0gaW50ZXJ2YWxSZWZyZXNoVG9rZW4pIC8gdGhpcy50aW1lb3V0O1xuXG4gICAgICAgIHRoaXMuX2JvdEFnZW50ID0gdGhpcy5nZXRCb3RBZ2VudChvcHRpb25zLmJvdEFnZW50KTtcblxuICAgICAgICB0aGlzLnNlcnZpY2VzID0gbWFrZVNlcnZpY2VzKG9wdGlvbnMpO1xuXG4gICAgICAgIGNvbnN0IHBhcnNlZFBvbGxpbmdJbnRlcnZhbCA9IH5+b3B0aW9ucy5wb2xsaW5nSW50ZXJ2YWw7XG5cbiAgICAgICAgaWYgKHBhcnNlZFBvbGxpbmdJbnRlcnZhbCA8IFBPTExJTkdfSU5URVJWQUxfTE9XRVJfQk9VTkQpIHtcbiAgICAgICAgICAgIGlmICh0eXBlb2Ygb3B0aW9ucy5wb2xsaW5nSW50ZXJ2YWwgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS53YXJuKGBEaXJlY3RMaW5lSlM6IHByb3ZpZGVkIHBvbGxpbmdJbnRlcnZhbCAoJHsgb3B0aW9ucy5wb2xsaW5nSW50ZXJ2YWwgfSkgaXMgdW5kZXIgbG93ZXIgYm91bmQgKDIwMG1zKSwgdXNpbmcgZGVmYXVsdCBvZiAxMDAwbXNgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMucG9sbGluZ0ludGVydmFsID0gcGFyc2VkUG9sbGluZ0ludGVydmFsO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5leHBpcmVkVG9rZW5FeGhhdXN0aW9uID0gdGhpcy5zZXRDb25uZWN0aW9uU3RhdHVzRmFsbGJhY2soXG4gICAgICAgICAgICBDb25uZWN0aW9uU3RhdHVzLkV4cGlyZWRUb2tlbixcbiAgICAgICAgICAgIENvbm5lY3Rpb25TdGF0dXMuRmFpbGVkVG9Db25uZWN0LFxuICAgICAgICAgICAgNVxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuYWN0aXZpdHkkID0gKHRoaXMud2ViU29ja2V0XG4gICAgICAgICAgICA/IHRoaXMud2ViU29ja2V0QWN0aXZpdHkkKClcbiAgICAgICAgICAgIDogdGhpcy5wb2xsaW5nR2V0QWN0aXZpdHkkKClcbiAgICAgICAgKS5zaGFyZSgpO1xuICAgIH1cblxuICAgIC8vIEV2ZXJ5IHRpbWUgd2UncmUgYWJvdXQgdG8gbWFrZSBhIERpcmVjdCBMaW5lIFJFU1QgY2FsbCwgd2UgY2FsbCB0aGlzIGZpcnN0IHRvIHNlZSBjaGVjayB0aGUgY3VycmVudCBjb25uZWN0aW9uIHN0YXR1cy5cbiAgICAvLyBFaXRoZXIgdGhyb3dzIGFuIGVycm9yIChpbmRpY2F0aW5nIGFuIGVycm9yIHN0YXRlKSBvciBlbWl0cyBhIG51bGwsIGluZGljYXRpbmcgYSAocHJlc3VtYWJseSkgaGVhbHRoeSBjb25uZWN0aW9uXG4gICAgcHJpdmF0ZSBjaGVja0Nvbm5lY3Rpb24ob25jZSA9IGZhbHNlKSB7XG4gICAgICAgIGxldCBvYnMgPSAgdGhpcy5jb25uZWN0aW9uU3RhdHVzJFxuICAgICAgICAuZmxhdE1hcChjb25uZWN0aW9uU3RhdHVzID0+IHtcbiAgICAgICAgICAgIGlmIChjb25uZWN0aW9uU3RhdHVzID09PSBDb25uZWN0aW9uU3RhdHVzLlVuaW5pdGlhbGl6ZWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbm5lY3Rpb25TdGF0dXMkLm5leHQoQ29ubmVjdGlvblN0YXR1cy5Db25uZWN0aW5nKTtcblxuICAgICAgICAgICAgICAgIC8vaWYgdG9rZW4gYW5kIHN0cmVhbVVybCBhcmUgZGVmaW5lZCBpdCBtZWFucyByZWNvbm5lY3QgaGFzIGFscmVhZHkgYmVlbiBkb25lLiBTa2lwcGluZyBpdC5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy50b2tlbiAmJiB0aGlzLnN0cmVhbVVybCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbm5lY3Rpb25TdGF0dXMkLm5leHQoQ29ubmVjdGlvblN0YXR1cy5PbmxpbmUpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gT2JzZXJ2YWJsZS5vZihjb25uZWN0aW9uU3RhdHVzLCB0aGlzLnNlcnZpY2VzLnNjaGVkdWxlcik7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc3RhcnRDb252ZXJzYXRpb24oKS5kbyhjb252ZXJzYXRpb24gPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb252ZXJzYXRpb25JZCA9IGNvbnZlcnNhdGlvbi5jb252ZXJzYXRpb25JZDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudG9rZW4gPSB0aGlzLnNlY3JldCB8fCBjb252ZXJzYXRpb24udG9rZW47XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnN0cmVhbVVybCA9IGNvbnZlcnNhdGlvbi5zdHJlYW1Vcmw7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlZmVyZW5jZUdyYW1tYXJJZCA9IGNvbnZlcnNhdGlvbi5yZWZlcmVuY2VHcmFtbWFySWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuc2VjcmV0KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVmcmVzaFRva2VuTG9vcCgpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbm5lY3Rpb25TdGF0dXMkLm5leHQoQ29ubmVjdGlvblN0YXR1cy5PbmxpbmUpO1xuICAgICAgICAgICAgICAgICAgICB9LCBlcnJvciA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbm5lY3Rpb25TdGF0dXMkLm5leHQoQ29ubmVjdGlvblN0YXR1cy5GYWlsZWRUb0Nvbm5lY3QpO1xuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAubWFwKF8gPT4gY29ubmVjdGlvblN0YXR1cyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIE9ic2VydmFibGUub2YoY29ubmVjdGlvblN0YXR1cywgdGhpcy5zZXJ2aWNlcy5zY2hlZHVsZXIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgICAuZmlsdGVyKGNvbm5lY3Rpb25TdGF0dXMgPT4gY29ubmVjdGlvblN0YXR1cyAhPSBDb25uZWN0aW9uU3RhdHVzLlVuaW5pdGlhbGl6ZWQgJiYgY29ubmVjdGlvblN0YXR1cyAhPSBDb25uZWN0aW9uU3RhdHVzLkNvbm5lY3RpbmcpXG4gICAgICAgIC5mbGF0TWFwKGNvbm5lY3Rpb25TdGF0dXMgPT4ge1xuICAgICAgICAgICAgc3dpdGNoIChjb25uZWN0aW9uU3RhdHVzKSB7XG4gICAgICAgICAgICAgICAgY2FzZSBDb25uZWN0aW9uU3RhdHVzLkVuZGVkOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gT2JzZXJ2YWJsZS50aHJvdyhlcnJvckNvbnZlcnNhdGlvbkVuZGVkLCB0aGlzLnNlcnZpY2VzLnNjaGVkdWxlcik7XG5cbiAgICAgICAgICAgICAgICBjYXNlIENvbm5lY3Rpb25TdGF0dXMuRmFpbGVkVG9Db25uZWN0OlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gT2JzZXJ2YWJsZS50aHJvdyhlcnJvckZhaWxlZFRvQ29ubmVjdCwgdGhpcy5zZXJ2aWNlcy5zY2hlZHVsZXIpO1xuXG4gICAgICAgICAgICAgICAgY2FzZSBDb25uZWN0aW9uU3RhdHVzLkV4cGlyZWRUb2tlbjpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE9ic2VydmFibGUub2YoY29ubmVjdGlvblN0YXR1cywgdGhpcy5zZXJ2aWNlcy5zY2hlZHVsZXIpO1xuXG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE9ic2VydmFibGUub2YoY29ubmVjdGlvblN0YXR1cywgdGhpcy5zZXJ2aWNlcy5zY2hlZHVsZXIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KVxuXG4gICAgICAgIHJldHVybiBvbmNlID8gb2JzLnRha2UoMSkgOiBvYnM7XG4gICAgfVxuXG4gICAgc2V0Q29ubmVjdGlvblN0YXR1c0ZhbGxiYWNrKFxuICAgICAgICBjb25uZWN0aW9uU3RhdHVzRnJvbTogQ29ubmVjdGlvblN0YXR1cyxcbiAgICAgICAgY29ubmVjdGlvblN0YXR1c1RvOiBDb25uZWN0aW9uU3RhdHVzLFxuICAgICAgICBtYXhBdHRlbXB0cyA9IDVcbiAgICApIHtcbiAgICAgICAgbWF4QXR0ZW1wdHMtLTtcbiAgICAgICAgbGV0IGF0dGVtcHRzID0gMDtcbiAgICAgICAgbGV0IGN1cnJTdGF0dXMgPSBudWxsO1xuICAgICAgICByZXR1cm4gKHN0YXR1czogQ29ubmVjdGlvblN0YXR1cyk6IENvbm5lY3Rpb25TdGF0dXMgPT4ge1xuICAgICAgICAgICAgaWYgKHN0YXR1cyA9PT0gY29ubmVjdGlvblN0YXR1c0Zyb20gJiYgY3VyclN0YXR1cyA9PT0gc3RhdHVzICYmIGF0dGVtcHRzID49IG1heEF0dGVtcHRzKSB7XG4gICAgICAgICAgICAgICAgYXR0ZW1wdHMgPSAwXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNvbm5lY3Rpb25TdGF0dXNUbztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGF0dGVtcHRzKys7XG4gICAgICAgICAgICBjdXJyU3RhdHVzID0gc3RhdHVzO1xuICAgICAgICAgICAgcmV0dXJuIHN0YXR1cztcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGV4cGlyZWRUb2tlbigpIHtcbiAgICAgICAgY29uc3QgY29ubmVjdGlvblN0YXR1cyA9IHRoaXMuY29ubmVjdGlvblN0YXR1cyQuZ2V0VmFsdWUoKTtcbiAgICAgICAgaWYgKGNvbm5lY3Rpb25TdGF0dXMgIT0gQ29ubmVjdGlvblN0YXR1cy5FbmRlZCAmJiBjb25uZWN0aW9uU3RhdHVzICE9IENvbm5lY3Rpb25TdGF0dXMuRmFpbGVkVG9Db25uZWN0KVxuICAgICAgICAgICAgdGhpcy5jb25uZWN0aW9uU3RhdHVzJC5uZXh0KENvbm5lY3Rpb25TdGF0dXMuRXhwaXJlZFRva2VuKTtcblxuICAgICAgICBjb25zdCBwcm90ZWN0ZWRDb25uZWN0aW9uU3RhdHVzID0gdGhpcy5leHBpcmVkVG9rZW5FeGhhdXN0aW9uKHRoaXMuY29ubmVjdGlvblN0YXR1cyQuZ2V0VmFsdWUoKSk7XG4gICAgICAgIHRoaXMuY29ubmVjdGlvblN0YXR1cyQubmV4dChwcm90ZWN0ZWRDb25uZWN0aW9uU3RhdHVzKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXJ0Q29udmVyc2F0aW9uKCkge1xuICAgICAgICAvL2lmIGNvbnZlcnNhdGlvbmlkIGlzIHNldCBoZXJlLCBpdCBtZWFucyB3ZSBuZWVkIHRvIGNhbGwgdGhlIHJlY29ubmVjdCBhcGksIGVsc2UgaXQgaXMgYSBuZXcgY29udmVyc2F0aW9uXG4gICAgICAgIGNvbnN0IHVybCA9IHRoaXMuY29udmVyc2F0aW9uSWRcbiAgICAgICAgICAgID8gYCR7dGhpcy5kb21haW59L2NvbnZlcnNhdGlvbnMvJHt0aGlzLmNvbnZlcnNhdGlvbklkfT93YXRlcm1hcms9JHt0aGlzLndhdGVybWFya31gXG4gICAgICAgICAgICA6IGAke3RoaXMuZG9tYWlufS9jb252ZXJzYXRpb25zYDtcbiAgICAgICAgY29uc3QgbWV0aG9kID0gdGhpcy5jb252ZXJzYXRpb25JZCA/IFwiR0VUXCIgOiBcIlBPU1RcIjtcbiAgICAgICAgY29uc3QgYm9keSA9IHRoaXMuY29udmVyc2F0aW9uSWRcbiAgICAgICAgICAgID8gdW5kZWZpbmVkXG4gICAgICAgICAgICA6IHtcbiAgICAgICAgICAgICAgICB1c2VyOiB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiB0aGlzLnVzZXJJZE9uU3RhcnRDb252ZXJzYXRpb25cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGxvY2FsZTogdGhpcy5sb2NhbGVPblN0YXJ0Q29udmVyc2F0aW9uXG4gICAgICAgICAgICAgIH07XG4gICAgICAgIHJldHVybiB0aGlzLnNlcnZpY2VzLmFqYXgoe1xuICAgICAgICAgICAgbWV0aG9kLFxuICAgICAgICAgICAgdXJsLFxuICAgICAgICAgICAgYm9keSxcbiAgICAgICAgICAgIHRpbWVvdXQ6IHRoaXMudGltZW91dCxcbiAgICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICAgICBcIkFjY2VwdFwiOiBcImFwcGxpY2F0aW9uL2pzb25cIixcbiAgICAgICAgICAgICAgICBcIkNvbnRlbnQtVHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb25cIixcbiAgICAgICAgICAgICAgICAuLi50aGlzLmNvbW1vbkhlYWRlcnMoKVxuICAgICAgICAgICAgfVxuICAgICAgICB9KVxuLy8gICAgICAuZG8oYWpheFJlc3BvbnNlID0+IGtvbnNvbGUubG9nKFwiY29udmVyc2F0aW9uIGFqYXhSZXNwb25zZVwiLCBhamF4UmVzcG9uc2UucmVzcG9uc2UpKVxuICAgICAgICAubWFwKGFqYXhSZXNwb25zZSA9PiBhamF4UmVzcG9uc2UucmVzcG9uc2UgYXMgQ29udmVyc2F0aW9uKVxuICAgICAgICAucmV0cnlXaGVuKGVycm9yJCA9PlxuICAgICAgICAgICAgLy8gZm9yIG5vdyB3ZSBkZWVtIDR4eCBhbmQgNXh4IGVycm9ycyBhcyB1bnJlY292ZXJhYmxlXG4gICAgICAgICAgICAvLyBmb3IgZXZlcnl0aGluZyBlbHNlICh0aW1lb3V0cyksIHJldHJ5IGZvciBhIHdoaWxlXG4gICAgICAgICAgICBlcnJvciQubWVyZ2VNYXAoKGVycm9yKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yLnN0YXR1cyA+PSA0MDAgJiYgZXJyb3Iuc3RhdHVzIDwgNjAwXG4gICAgICAgICAgICAgICAgPyBPYnNlcnZhYmxlLnRocm93KGVycm9yLCB0aGlzLnNlcnZpY2VzLnNjaGVkdWxlcilcbiAgICAgICAgICAgICAgICA6IE9ic2VydmFibGUub2YoZXJyb3IsIHRoaXMuc2VydmljZXMuc2NoZWR1bGVyKVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5kZWxheSh0aGlzLnRpbWVvdXQsIHRoaXMuc2VydmljZXMuc2NoZWR1bGVyKVxuICAgICAgICAgICAgLnRha2UodGhpcy5yZXRyaWVzKVxuICAgICAgICApXG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZWZyZXNoVG9rZW5Mb29wKCkge1xuICAgICAgICB0aGlzLnRva2VuUmVmcmVzaFN1YnNjcmlwdGlvbiA9IE9ic2VydmFibGUuaW50ZXJ2YWwoaW50ZXJ2YWxSZWZyZXNoVG9rZW4sIHRoaXMuc2VydmljZXMuc2NoZWR1bGVyKVxuICAgICAgICAuZmxhdE1hcChfID0+IHRoaXMucmVmcmVzaFRva2VuKCkpXG4gICAgICAgIC5zdWJzY3JpYmUodG9rZW4gPT4ge1xuICAgICAgICAgICAga29uc29sZS5sb2coXCJyZWZyZXNoaW5nIHRva2VuXCIsIHRva2VuLCBcImF0XCIsIG5ldyBEYXRlKCkpO1xuICAgICAgICAgICAgdGhpcy50b2tlbiA9IHRva2VuO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHJlZnJlc2hUb2tlbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2hlY2tDb25uZWN0aW9uKHRydWUpXG4gICAgICAgIC5mbGF0TWFwKF8gPT5cbiAgICAgICAgICAgIHRoaXMuc2VydmljZXMuYWpheCh7XG4gICAgICAgICAgICAgICAgbWV0aG9kOiBcIlBPU1RcIixcbiAgICAgICAgICAgICAgICB1cmw6IGAke3RoaXMuZG9tYWlufS90b2tlbnMvcmVmcmVzaGAsXG4gICAgICAgICAgICAgICAgdGltZW91dDogdGhpcy50aW1lb3V0LFxuICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5jb21tb25IZWFkZXJzKClcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLm1hcChhamF4UmVzcG9uc2UgPT4gYWpheFJlc3BvbnNlLnJlc3BvbnNlLnRva2VuIGFzIHN0cmluZylcbiAgICAgICAgICAgIC5yZXRyeVdoZW4oZXJyb3IkID0+IGVycm9yJFxuICAgICAgICAgICAgICAgIC5tZXJnZU1hcChlcnJvciA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChlcnJvci5zdGF0dXMgPT09IDQwMykge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgdGhlIHRva2VuIGlzIGV4cGlyZWQgdGhlcmUncyBubyByZWFzb24gdG8ga2VlcCB0cnlpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZXhwaXJlZFRva2VuKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gT2JzZXJ2YWJsZS50aHJvdyhlcnJvciwgdGhpcy5zZXJ2aWNlcy5zY2hlZHVsZXIpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGVycm9yLnN0YXR1cyA9PT0gNDA0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGUgYm90IGlzIGdvbmUsIHdlIHNob3VsZCBzdG9wIHJldHJ5aW5nXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gT2JzZXJ2YWJsZS50aHJvdyhlcnJvciwgdGhpcy5zZXJ2aWNlcy5zY2hlZHVsZXIpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE9ic2VydmFibGUub2YoZXJyb3IsIHRoaXMuc2VydmljZXMuc2NoZWR1bGVyKTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5kZWxheSh0aGlzLnRpbWVvdXQsIHRoaXMuc2VydmljZXMuc2NoZWR1bGVyKVxuICAgICAgICAgICAgICAgIC50YWtlKHRoaXMucmV0cmllcylcbiAgICAgICAgICAgIClcbiAgICAgICAgKVxuICAgIH1cblxuICAgIHB1YmxpYyByZWNvbm5lY3QoY29udmVyc2F0aW9uOiBDb252ZXJzYXRpb24pIHtcbiAgICAgICAgdGhpcy50b2tlbiA9IGNvbnZlcnNhdGlvbi50b2tlbjtcbiAgICAgICAgdGhpcy5zdHJlYW1VcmwgPSBjb252ZXJzYXRpb24uc3RyZWFtVXJsO1xuICAgICAgICBpZiAodGhpcy5jb25uZWN0aW9uU3RhdHVzJC5nZXRWYWx1ZSgpID09PSBDb25uZWN0aW9uU3RhdHVzLkV4cGlyZWRUb2tlbilcbiAgICAgICAgICAgIHRoaXMuY29ubmVjdGlvblN0YXR1cyQubmV4dChDb25uZWN0aW9uU3RhdHVzLk9ubGluZSk7XG4gICAgfVxuXG4gICAgZW5kKCkge1xuICAgICAgICBpZiAodGhpcy50b2tlblJlZnJlc2hTdWJzY3JpcHRpb24pXG4gICAgICAgICAgICB0aGlzLnRva2VuUmVmcmVzaFN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgdGhpcy5jb25uZWN0aW9uU3RhdHVzJC5uZXh0KENvbm5lY3Rpb25TdGF0dXMuRW5kZWQpO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICBpZiAoZSA9PT0gZXJyb3JDb252ZXJzYXRpb25FbmRlZClcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB0aHJvdyhlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldFNlc3Npb25JZCgpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgICAgICAvLyBJZiB3ZSdyZSBub3QgY29ubmVjdGVkIHRvIHRoZSBib3QsIGdldCBjb25uZWN0ZWRcbiAgICAgICAgLy8gV2lsbCB0aHJvdyBhbiBlcnJvciBpZiB3ZSBhcmUgbm90IGNvbm5lY3RlZFxuICAgICAgICBrb25zb2xlLmxvZyhcImdldFNlc3Npb25JZFwiKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2hlY2tDb25uZWN0aW9uKHRydWUpXG4gICAgICAgICAgICAuZmxhdE1hcChfID0+XG4gICAgICAgICAgICAgICAgdGhpcy5zZXJ2aWNlcy5hamF4KHtcbiAgICAgICAgICAgICAgICAgICAgbWV0aG9kOiBcIkdFVFwiLFxuICAgICAgICAgICAgICAgICAgICB1cmw6IGAke3RoaXMuZG9tYWlufS9zZXNzaW9uL2dldHNlc3Npb25pZGAsXG4gICAgICAgICAgICAgICAgICAgIHdpdGhDcmVkZW50aWFsczogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgdGltZW91dDogdGhpcy50aW1lb3V0LFxuICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBcIkNvbnRlbnQtVHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb25cIixcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMuY29tbW9uSGVhZGVycygpXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5tYXAoYWpheFJlc3BvbnNlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGFqYXhSZXNwb25zZSAmJiBhamF4UmVzcG9uc2UucmVzcG9uc2UgJiYgYWpheFJlc3BvbnNlLnJlc3BvbnNlLnNlc3Npb25JZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAga29uc29sZS5sb2coXCJnZXRTZXNzaW9uSWQgcmVzcG9uc2U6IFwiICsgYWpheFJlc3BvbnNlLnJlc3BvbnNlLnNlc3Npb25JZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYWpheFJlc3BvbnNlLnJlc3BvbnNlLnNlc3Npb25JZCBhcyBzdHJpbmc7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICcnO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmNhdGNoKGVycm9yID0+IHtcbiAgICAgICAgICAgICAgICAgICAga29uc29sZS5sb2coXCJnZXRTZXNzaW9uSWQgZXJyb3I6IFwiICsgZXJyb3Iuc3RhdHVzKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE9ic2VydmFibGUub2YoJycsIHRoaXMuc2VydmljZXMuc2NoZWR1bGVyKTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLmNhdGNoKGVycm9yID0+IHRoaXMuY2F0Y2hFeHBpcmVkVG9rZW4oZXJyb3IpKTtcbiAgICB9XG5cbiAgICBwb3N0QWN0aXZpdHkoYWN0aXZpdHk6IEFjdGl2aXR5KSB7XG4gICAgICAgIC8vIElmIHVzZXIgaWQgaXMgc2V0LCBjaGVjayBpZiBpdCBtYXRjaCBhY3Rpdml0eS5mcm9tLmlkIGFuZCBhbHdheXMgb3ZlcnJpZGUgaXQgaW4gYWN0aXZpdHlcbiAgICAgICAgaWYgKHRoaXMudXNlcklkT25TdGFydENvbnZlcnNhdGlvbiAmJiBhY3Rpdml0eS5mcm9tICYmIGFjdGl2aXR5LmZyb20uaWQgIT09IHRoaXMudXNlcklkT25TdGFydENvbnZlcnNhdGlvbikge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKCdEaXJlY3RMaW5lSlM6IEFjdGl2aXR5LmZyb20uaWQgZG9lcyBub3QgbWF0Y2ggd2l0aCB1c2VyIGlkLCBpZ25vcmluZyBhY3Rpdml0eS5mcm9tLmlkJyk7XG4gICAgICAgICAgICBhY3Rpdml0eS5mcm9tLmlkID0gdGhpcy51c2VySWRPblN0YXJ0Q29udmVyc2F0aW9uO1xuICAgICAgICB9XG4gICAgICAgIC8vIFVzZSBwb3N0TWVzc2FnZVdpdGhBdHRhY2htZW50cyBmb3IgbWVzc2FnZXMgd2l0aCBhdHRhY2htZW50cyB0aGF0IGFyZSBsb2NhbCBmaWxlcyAoZS5nLiBhbiBpbWFnZSB0byB1cGxvYWQpXG4gICAgICAgIC8vIFRlY2huaWNhbGx5IHdlIGNvdWxkIHVzZSBpdCBmb3IgKmFsbCogYWN0aXZpdGllcywgYnV0IHBvc3RBY3Rpdml0eSBpcyBtdWNoIGxpZ2h0ZXIgd2VpZ2h0XG4gICAgICAgIC8vIFNvLCBzaW5jZSBXZWJDaGF0IGlzIHBhcnRpYWxseSBhIHJlZmVyZW5jZSBpbXBsZW1lbnRhdGlvbiBvZiBEaXJlY3QgTGluZSwgd2UgaW1wbGVtZW50IGJvdGguXG4gICAgICAgIGlmIChhY3Rpdml0eS50eXBlID09PSBcIm1lc3NhZ2VcIiAmJiBhY3Rpdml0eS5hdHRhY2htZW50cyAmJiBhY3Rpdml0eS5hdHRhY2htZW50cy5sZW5ndGggPiAwKVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMucG9zdE1lc3NhZ2VXaXRoQXR0YWNobWVudHMoYWN0aXZpdHkpO1xuXG4gICAgICAgIC8vIElmIHdlJ3JlIG5vdCBjb25uZWN0ZWQgdG8gdGhlIGJvdCwgZ2V0IGNvbm5lY3RlZFxuICAgICAgICAvLyBXaWxsIHRocm93IGFuIGVycm9yIGlmIHdlIGFyZSBub3QgY29ubmVjdGVkXG4gICAgICAgIGtvbnNvbGUubG9nKFwicG9zdEFjdGl2aXR5XCIsIGFjdGl2aXR5KTtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2hlY2tDb25uZWN0aW9uKHRydWUpXG4gICAgICAgIC5mbGF0TWFwKF8gPT5cbiAgICAgICAgICAgIHRoaXMuc2VydmljZXMuYWpheCh7XG4gICAgICAgICAgICAgICAgbWV0aG9kOiBcIlBPU1RcIixcbiAgICAgICAgICAgICAgICB1cmw6IGAke3RoaXMuZG9tYWlufS9jb252ZXJzYXRpb25zLyR7dGhpcy5jb252ZXJzYXRpb25JZH0vYWN0aXZpdGllc2AsXG4gICAgICAgICAgICAgICAgYm9keTogYWN0aXZpdHksXG4gICAgICAgICAgICAgICAgdGltZW91dDogdGhpcy50aW1lb3V0LFxuICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICAgICAgICAgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCIsXG4gICAgICAgICAgICAgICAgICAgIC4uLnRoaXMuY29tbW9uSGVhZGVycygpXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAubWFwKGFqYXhSZXNwb25zZSA9PiBhamF4UmVzcG9uc2UucmVzcG9uc2UuaWQgYXMgc3RyaW5nKVxuICAgICAgICAgICAgLmNhdGNoKGVycm9yID0+IHRoaXMuY2F0Y2hQb3N0RXJyb3IoZXJyb3IpKVxuICAgICAgICApXG4gICAgICAgIC5jYXRjaChlcnJvciA9PiB0aGlzLmNhdGNoRXhwaXJlZFRva2VuKGVycm9yKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBwb3N0TWVzc2FnZVdpdGhBdHRhY2htZW50cyhtZXNzYWdlOiBNZXNzYWdlKSB7XG4gICAgICAgIGNvbnN0IHsgYXR0YWNobWVudHMgfSA9IG1lc3NhZ2U7XG4gICAgICAgIC8vIFdlIGNsZWFuIHRoZSBhdHRhY2htZW50cyBidXQgbWFraW5nIHN1cmUgZXZlcnkgYXR0YWNobWVudCBoYXMgdW5pcXVlIG5hbWUuXG4gICAgICAgIC8vIElmIHRoZSBmaWxlIGRvIG5vdCBoYXZlIGEgbmFtZSwgQ2hyb21lIHdpbGwgYXNzaWduIFwiYmxvYlwiIHdoZW4gaXQgaXMgYXBwZW5kZWQgdG8gRm9ybURhdGEuXG4gICAgICAgIGNvbnN0IGF0dGFjaG1lbnROYW1lczogc3RyaW5nW10gPSBkZWR1cGVGaWxlbmFtZXMoYXR0YWNobWVudHMubWFwKChtZWRpYTogTWVkaWEpID0+IG1lZGlhLm5hbWUgfHwgJ2Jsb2InKSk7XG4gICAgICAgIGNvbnN0IGNsZWFuc2VkQXR0YWNobWVudHMgPSBhdHRhY2htZW50cy5tYXAoKGF0dGFjaG1lbnQ6IE1lZGlhLCBpbmRleDogbnVtYmVyKSA9PiAoe1xuICAgICAgICAgICAgLi4uYXR0YWNobWVudCxcbiAgICAgICAgICAgIG5hbWU6IGF0dGFjaG1lbnROYW1lc1tpbmRleF1cbiAgICAgICAgfSkpO1xuICAgICAgICBsZXQgZm9ybURhdGE6IEZvcm1EYXRhO1xuXG4gICAgICAgIC8vIElmIHdlJ3JlIG5vdCBjb25uZWN0ZWQgdG8gdGhlIGJvdCwgZ2V0IGNvbm5lY3RlZFxuICAgICAgICAvLyBXaWxsIHRocm93IGFuIGVycm9yIGlmIHdlIGFyZSBub3QgY29ubmVjdGVkXG4gICAgICAgIHJldHVybiB0aGlzLmNoZWNrQ29ubmVjdGlvbih0cnVlKVxuICAgICAgICAuZmxhdE1hcChfID0+IHtcbiAgICAgICAgICAgIC8vIFRvIHNlbmQgdGhpcyBtZXNzYWdlIHRvIERpcmVjdExpbmUgd2UgbmVlZCB0byBkZWNvbnN0cnVjdCBpdCBpbnRvIGEgXCJ0ZW1wbGF0ZVwiIGFjdGl2aXR5XG4gICAgICAgICAgICAvLyBhbmQgb25lIGJsb2IgZm9yIGVhY2ggYXR0YWNobWVudC5cbiAgICAgICAgICAgIGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XG4gICAgICAgICAgICBmb3JtRGF0YS5hcHBlbmQoJ2FjdGl2aXR5JywgbmV3IEJsb2IoW0pTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgICAuLi5tZXNzYWdlLFxuICAgICAgICAgICAgICAgIC8vIFJlbW92aW5nIGNvbnRlbnRVcmwgZnJvbSBhdHRhY2htZW50LCB3ZSB3aWxsIHNlbmQgaXQgdmlhIG11bHRpcGFydFxuICAgICAgICAgICAgICAgIGF0dGFjaG1lbnRzOiBjbGVhbnNlZEF0dGFjaG1lbnRzLm1hcCgoeyBjb250ZW50VXJsOiBzdHJpbmcsIC4uLm90aGVycyB9KSA9PiAoeyAuLi5vdGhlcnMgfSkpXG4gICAgICAgICAgICB9KV0sIHsgdHlwZTogJ2FwcGxpY2F0aW9uL3ZuZC5taWNyb3NvZnQuYWN0aXZpdHknIH0pKTtcblxuICAgICAgICAgICAgcmV0dXJuIE9ic2VydmFibGUuZnJvbShjbGVhbnNlZEF0dGFjaG1lbnRzLCB0aGlzLnNlcnZpY2VzLnNjaGVkdWxlcilcbiAgICAgICAgICAgIC5mbGF0TWFwKChtZWRpYTogTWVkaWEpID0+XG4gICAgICAgICAgICAgICAgdGhpcy5zZXJ2aWNlcy5hamF4KHtcbiAgICAgICAgICAgICAgICAgICAgbWV0aG9kOiBcIkdFVFwiLFxuICAgICAgICAgICAgICAgICAgICB1cmw6IG1lZGlhLmNvbnRlbnRVcmwsXG4gICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlVHlwZTogJ2FycmF5YnVmZmVyJ1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmRvKGFqYXhSZXNwb25zZSA9PlxuICAgICAgICAgICAgICAgICAgICBmb3JtRGF0YS5hcHBlbmQoJ2ZpbGUnLCBuZXcgQmxvYihbYWpheFJlc3BvbnNlLnJlc3BvbnNlXSwgeyB0eXBlOiBtZWRpYS5jb250ZW50VHlwZSB9KSwgbWVkaWEubmFtZSlcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuY291bnQoKVxuICAgICAgICB9KVxuICAgICAgICAuZmxhdE1hcChfID0+XG4gICAgICAgICAgICB0aGlzLnNlcnZpY2VzLmFqYXgoe1xuICAgICAgICAgICAgICAgIG1ldGhvZDogXCJQT1NUXCIsXG4gICAgICAgICAgICAgICAgdXJsOiBgJHt0aGlzLmRvbWFpbn0vY29udmVyc2F0aW9ucy8ke3RoaXMuY29udmVyc2F0aW9uSWR9L3VwbG9hZD91c2VySWQ9JHttZXNzYWdlLmZyb20uaWR9YCxcbiAgICAgICAgICAgICAgICBib2R5OiBmb3JtRGF0YSxcbiAgICAgICAgICAgICAgICB0aW1lb3V0OiB0aGlzLnRpbWVvdXQsXG4gICAgICAgICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgICAgICAgICAuLi50aGlzLmNvbW1vbkhlYWRlcnMoKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAubWFwKGFqYXhSZXNwb25zZSA9PiBhamF4UmVzcG9uc2UucmVzcG9uc2UuaWQgYXMgc3RyaW5nKVxuICAgICAgICAgICAgLmNhdGNoKGVycm9yID0+IHRoaXMuY2F0Y2hQb3N0RXJyb3IoZXJyb3IpKVxuICAgICAgICApXG4gICAgICAgIC5jYXRjaChlcnJvciA9PiB0aGlzLmNhdGNoUG9zdEVycm9yKGVycm9yKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjYXRjaFBvc3RFcnJvcihlcnJvcjogYW55KSB7XG4gICAgICAgIGlmIChlcnJvci5zdGF0dXMgPT09IDQwMylcbiAgICAgICAgICAgIC8vIHRva2VuIGhhcyBleHBpcmVkICh3aWxsIGZhbGwgdGhyb3VnaCB0byByZXR1cm4gXCJyZXRyeVwiKVxuICAgICAgICAgICAgdGhpcy5leHBpcmVkVG9rZW4oKTtcbiAgICAgICAgZWxzZSBpZiAoZXJyb3Iuc3RhdHVzID49IDQwMCAmJiBlcnJvci5zdGF0dXMgPCA1MDApXG4gICAgICAgICAgICAvLyBtb3JlIHVucmVjb3ZlcmFibGUgZXJyb3JzXG4gICAgICAgICAgICByZXR1cm4gT2JzZXJ2YWJsZS50aHJvdyhlcnJvciwgdGhpcy5zZXJ2aWNlcy5zY2hlZHVsZXIpO1xuICAgICAgICByZXR1cm4gT2JzZXJ2YWJsZS5vZihcInJldHJ5XCIsIHRoaXMuc2VydmljZXMuc2NoZWR1bGVyKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNhdGNoRXhwaXJlZFRva2VuKGVycm9yOiBhbnkpIHtcbiAgICAgICAgcmV0dXJuIGVycm9yID09PSBlcnJvckV4cGlyZWRUb2tlblxuICAgICAgICA/IE9ic2VydmFibGUub2YoXCJyZXRyeVwiLCB0aGlzLnNlcnZpY2VzLnNjaGVkdWxlcilcbiAgICAgICAgOiBPYnNlcnZhYmxlLnRocm93KGVycm9yLCB0aGlzLnNlcnZpY2VzLnNjaGVkdWxlcik7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBwb2xsaW5nR2V0QWN0aXZpdHkkKCkge1xuICAgICAgICBjb25zdCBwb2xsZXIkOiBPYnNlcnZhYmxlPEFqYXhSZXNwb25zZT4gPSBPYnNlcnZhYmxlLmNyZWF0ZSgoc3Vic2NyaWJlcjogU3Vic2NyaWJlcjxhbnk+KSA9PiB7XG4gICAgICAgICAgICAvLyBBIEJlaGF2aW9yU3ViamVjdCB0byB0cmlnZ2VyIHBvbGxpbmcuIFNpbmNlIGl0IGlzIGEgQmVoYXZpb3JTdWJqZWN0XG4gICAgICAgICAgICAvLyB0aGUgZmlyc3QgZXZlbnQgaXMgcHJvZHVjZWQgaW1tZWRpYXRlbHkuXG4gICAgICAgICAgICBjb25zdCB0cmlnZ2VyJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8YW55Pih7fSk7XG5cbiAgICAgICAgICAgIC8vIFRPRE86IHJlbW92ZSBEYXRlLm5vdywgdXNlIHJlYWN0aXZlIGludGVydmFsIHRvIHNwYWNlIG91dCBldmVyeSByZXF1ZXN0XG5cbiAgICAgICAgICAgIHRyaWdnZXIkLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuY29ubmVjdGlvblN0YXR1cyQuZ2V0VmFsdWUoKSA9PT0gQ29ubmVjdGlvblN0YXR1cy5PbmxpbmUpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RhcnRUaW1lc3RhbXAgPSBEYXRlLm5vdygpO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VydmljZXMuYWpheCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQWNjZXB0OiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5jb21tb25IZWFkZXJzKClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXRob2Q6ICdHRVQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBgJHsgdGhpcy5kb21haW4gfS9jb252ZXJzYXRpb25zLyR7IHRoaXMuY29udmVyc2F0aW9uSWQgfS9hY3Rpdml0aWVzP3dhdGVybWFyaz0keyB0aGlzLndhdGVybWFyayB9YCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVvdXQ6IHRoaXMudGltZW91dFxuICAgICAgICAgICAgICAgICAgICB9KS5zdWJzY3JpYmUoXG4gICAgICAgICAgICAgICAgICAgICAgICAocmVzdWx0OiBBamF4UmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJzY3JpYmVyLm5leHQocmVzdWx0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHRyaWdnZXIkLm5leHQobnVsbCksIE1hdGgubWF4KDAsIHRoaXMucG9sbGluZ0ludGVydmFsIC0gRGF0ZS5ub3coKSArIHN0YXJ0VGltZXN0YW1wKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgKGVycm9yOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGVycm9yLnN0YXR1cykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDQwMzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29ubmVjdGlvblN0YXR1cyQubmV4dChDb25uZWN0aW9uU3RhdHVzLkV4cGlyZWRUb2tlbik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHRyaWdnZXIkLm5leHQobnVsbCksIHRoaXMucG9sbGluZ0ludGVydmFsKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNDA0OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb25uZWN0aW9uU3RhdHVzJC5uZXh0KENvbm5lY3Rpb25TdGF0dXMuRW5kZWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHByb3BhZ2F0ZSB0aGUgZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnNjcmliZXIuZXJyb3IoZXJyb3IpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gdGhpcy5jaGVja0Nvbm5lY3Rpb24oKVxuICAgICAgICAuZmxhdE1hcChfID0+IHBvbGxlciRcbiAgICAgICAgICAgIC5jYXRjaCgoKSA9PiBPYnNlcnZhYmxlLmVtcHR5PEFqYXhSZXNwb25zZT4oKSlcbiAgICAgICAgICAgIC5tYXAoYWpheFJlc3BvbnNlID0+IGFqYXhSZXNwb25zZS5yZXNwb25zZSBhcyBBY3Rpdml0eUdyb3VwKVxuICAgICAgICAgICAgLmZsYXRNYXAoYWN0aXZpdHlHcm91cCA9PiB0aGlzLm9ic2VydmFibGVGcm9tQWN0aXZpdHlHcm91cChhY3Rpdml0eUdyb3VwKSkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgb2JzZXJ2YWJsZUZyb21BY3Rpdml0eUdyb3VwKGFjdGl2aXR5R3JvdXA6IEFjdGl2aXR5R3JvdXApIHtcbiAgICAgICAgaWYgKGFjdGl2aXR5R3JvdXAud2F0ZXJtYXJrKVxuICAgICAgICAgICAgdGhpcy53YXRlcm1hcmsgPSBhY3Rpdml0eUdyb3VwLndhdGVybWFyaztcbiAgICAgICAgcmV0dXJuIE9ic2VydmFibGUuZnJvbShhY3Rpdml0eUdyb3VwLmFjdGl2aXRpZXMsIHRoaXMuc2VydmljZXMuc2NoZWR1bGVyKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHdlYlNvY2tldEFjdGl2aXR5JCgpOiBPYnNlcnZhYmxlPEFjdGl2aXR5PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmNoZWNrQ29ubmVjdGlvbigpXG4gICAgICAgIC5mbGF0TWFwKF8gPT5cbiAgICAgICAgICAgIHRoaXMub2JzZXJ2YWJsZVdlYlNvY2tldDxBY3Rpdml0eUdyb3VwPigpXG4gICAgICAgICAgICAvLyBXZWJTb2NrZXRzIGNhbiBiZSBjbG9zZWQgYnkgdGhlIHNlcnZlciBvciB0aGUgYnJvd3Nlci4gSW4gdGhlIGZvcm1lciBjYXNlIHdlIG5lZWQgdG9cbiAgICAgICAgICAgIC8vIHJldHJpZXZlIGEgbmV3IHN0cmVhbVVybC4gSW4gdGhlIGxhdHRlciBjYXNlIHdlIGNvdWxkIGZpcnN0IHJldHJ5IHdpdGggdGhlIGN1cnJlbnQgc3RyZWFtVXJsLFxuICAgICAgICAgICAgLy8gYnV0IGl0J3Mgc2ltcGxlciBqdXN0IHRvIGFsd2F5cyBmZXRjaCBhIG5ldyBvbmUuXG4gICAgICAgICAgICAucmV0cnlXaGVuKGVycm9yJCA9PiBlcnJvciQuZGVsYXkodGhpcy5nZXRSZXRyeURlbGF5KCksIHRoaXMuc2VydmljZXMuc2NoZWR1bGVyKS5tZXJnZU1hcChlcnJvciA9PiB0aGlzLnJlY29ubmVjdFRvQ29udmVyc2F0aW9uKCkpKVxuICAgICAgICApXG4gICAgICAgIC5mbGF0TWFwKGFjdGl2aXR5R3JvdXAgPT4gdGhpcy5vYnNlcnZhYmxlRnJvbUFjdGl2aXR5R3JvdXAoYWN0aXZpdHlHcm91cCkpXG4gICAgfVxuXG4gICAgLy8gUmV0dXJucyB0aGUgZGVsYXkgZHVyYXRpb24gaW4gbWlsbGlzZWNvbmRzXG4gICAgcHJpdmF0ZSBnZXRSZXRyeURlbGF5KCkge1xuICAgICAgICByZXR1cm4gTWF0aC5mbG9vcigzMDAwICsgdGhpcy5zZXJ2aWNlcy5yYW5kb20oKSAqIDEyMDAwKTtcbiAgICB9XG5cbiAgICAvLyBPcmlnaW5hbGx5IHdlIHVzZWQgT2JzZXJ2YWJsZS53ZWJTb2NrZXQsIGJ1dCBpdCdzIGZhaXJseSBvcGluaW9uYXRlZCBhbmQgSSBlbmRlZCB1cCB3cml0aW5nXG4gICAgLy8gYSBsb3Qgb2YgY29kZSB0byB3b3JrIGFyb3VuZCB0aGVpciBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzLiBTaW5jZSBXZWJDaGF0IGlzIG1lYW50IHRvIGJlIGEgcmVmZXJlbmNlXG4gICAgLy8gaW1wbGVtZW50YXRpb24sIEkgZGVjaWRlZCByb2xsIHRoZSBiZWxvdywgd2hlcmUgdGhlIGxvZ2ljIGlzIG1vcmUgcHVycG9zZWZ1bC4gLSBAYmlsbGJhXG4gICAgcHJpdmF0ZSBvYnNlcnZhYmxlV2ViU29ja2V0PFQ+KCkge1xuICAgICAgICByZXR1cm4gT2JzZXJ2YWJsZS5jcmVhdGUoKHN1YnNjcmliZXI6IFN1YnNjcmliZXI8VD4pID0+IHtcbiAgICAgICAgICAgIGtvbnNvbGUubG9nKFwiY3JlYXRpbmcgV2ViU29ja2V0XCIsIHRoaXMuc3RyZWFtVXJsKTtcbiAgICAgICAgICAgIGNvbnN0IHdzID0gbmV3IHRoaXMuc2VydmljZXMuV2ViU29ja2V0KHRoaXMuc3RyZWFtVXJsKTtcbiAgICAgICAgICAgIGxldCBzdWI6IFN1YnNjcmlwdGlvbjtcbiAgICAgICAgICAgIGxldCBjbG9zZWQ6IGJvb2xlYW47XG5cbiAgICAgICAgICAgIHdzLm9ub3BlbiA9IG9wZW4gPT4ge1xuICAgICAgICAgICAgICAgIGtvbnNvbGUubG9nKFwiV2ViU29ja2V0IG9wZW5cIiwgb3Blbik7XG4gICAgICAgICAgICAgICAgLy8gQ2hyb21lIGlzIHByZXR0eSBiYWQgYXQgbm90aWNpbmcgd2hlbiBhIFdlYlNvY2tldCBjb25uZWN0aW9uIGlzIGJyb2tlbi5cbiAgICAgICAgICAgICAgICAvLyBJZiB3ZSBwZXJpb2RpY2FsbHkgcGluZyB0aGUgc2VydmVyIHdpdGggZW1wdHkgbWVzc2FnZXMsIGl0IGhlbHBzIENocm9tZVxuICAgICAgICAgICAgICAgIC8vIHJlYWxpemUgd2hlbiBjb25uZWN0aW9uIGJyZWFrcywgYW5kIGNsb3NlIHRoZSBzb2NrZXQuIFdlIHRoZW4gdGhyb3cgYW5cbiAgICAgICAgICAgICAgICAvLyBlcnJvciwgYW5kIHRoYXQgZ2l2ZSB1cyB0aGUgb3Bwb3J0dW5pdHkgdG8gYXR0ZW1wdCB0byByZWNvbm5lY3QuXG4gICAgICAgICAgICAgICAgc3ViID0gT2JzZXJ2YWJsZS5pbnRlcnZhbCh0aGlzLnRpbWVvdXQsIHRoaXMuc2VydmljZXMuc2NoZWR1bGVyKS5zdWJzY3JpYmUoXyA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB3cy5zZW5kKFwiXCIpXG4gICAgICAgICAgICAgICAgICAgIH0gY2F0Y2goZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAga29uc29sZS5sb2coXCJQaW5nIGVycm9yXCIsIGUpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHdzLm9uY2xvc2UgPSBjbG9zZSA9PiB7XG4gICAgICAgICAgICAgICAga29uc29sZS5sb2coXCJXZWJTb2NrZXQgY2xvc2VcIiwgY2xvc2UpO1xuICAgICAgICAgICAgICAgIGlmIChzdWIpIHN1Yi51bnN1YnNjcmliZSgpO1xuXG4gICAgICAgICAgICAgICAgLy8gUnhKUy5yZXRyeVdoZW4gaGFzIGEgYnVnIHRoYXQgd291bGQgY2F1c2UgXCJlcnJvclwiIHNpZ25hbCB0byBiZSBzZW50IGFmdGVyIHRoZSBvYnNlcnZhYmxlIGlzIGNvbXBsZXRlZC9lcnJvcmVkLlxuICAgICAgICAgICAgICAgIC8vIFdlIG5lZWQgdG8gZ3VhcmQgYWdhaW5zdCBleHRyYW5lb3VzIFwiZXJyb3JcIiBzaWduYWwgdG8gd29ya2Fyb3VuZCB0aGUgYnVnLlxuICAgICAgICAgICAgICAgIGNsb3NlZCB8fCBzdWJzY3JpYmVyLmVycm9yKGNsb3NlKTtcbiAgICAgICAgICAgICAgICBjbG9zZWQgPSB0cnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB3cy5vbmVycm9yID0gZXJyb3IgPT4ge1xuICAgICAgICAgICAgICAgIGtvbnNvbGUubG9nKFwiV2ViU29ja2V0IGVycm9yXCIsIGVycm9yKTtcbiAgICAgICAgICAgICAgICBpZiAoc3ViKSBzdWIudW5zdWJzY3JpYmUoKTtcblxuICAgICAgICAgICAgICAgIC8vIFJ4SlMucmV0cnlXaGVuIGhhcyBhIGJ1ZyB0aGF0IHdvdWxkIGNhdXNlIFwiZXJyb3JcIiBzaWduYWwgdG8gYmUgc2VudCBhZnRlciB0aGUgb2JzZXJ2YWJsZSBpcyBjb21wbGV0ZWQvZXJyb3JlZC5cbiAgICAgICAgICAgICAgICAvLyBXZSBuZWVkIHRvIGd1YXJkIGFnYWluc3QgZXh0cmFuZW91cyBcImVycm9yXCIgc2lnbmFsIHRvIHdvcmthcm91bmQgdGhlIGJ1Zy5cbiAgICAgICAgICAgICAgICBjbG9zZWQgfHwgc3Vic2NyaWJlci5lcnJvcihlcnJvcik7XG4gICAgICAgICAgICAgICAgY2xvc2VkID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgd3Mub25tZXNzYWdlID0gbWVzc2FnZSA9PiBtZXNzYWdlLmRhdGEgJiYgc3Vic2NyaWJlci5uZXh0KEpTT04ucGFyc2UobWVzc2FnZS5kYXRhKSk7XG5cbiAgICAgICAgICAgIC8vIFRoaXMgaXMgdGhlICd1bnN1YnNjcmliZScgbWV0aG9kLCB3aGljaCBpcyBjYWxsZWQgd2hlbiB0aGlzIG9ic2VydmFibGUgaXMgZGlzcG9zZWQuXG4gICAgICAgICAgICAvLyBXaGVuIHRoZSBXZWJTb2NrZXQgY2xvc2VzIGl0c2VsZiwgd2UgdGhyb3cgYW4gZXJyb3IsIGFuZCB0aGlzIGZ1bmN0aW9uIGlzIGV2ZW50dWFsbHkgY2FsbGVkLlxuICAgICAgICAgICAgLy8gV2hlbiB0aGUgb2JzZXJ2YWJsZSBpcyBjbG9zZWQgZmlyc3QgKGUuZy4gd2hlbiB0ZWFyaW5nIGRvd24gYSBXZWJDaGF0IGluc3RhbmNlKSB0aGVuXG4gICAgICAgICAgICAvLyB3ZSBuZWVkIHRvIG1hbnVhbGx5IGNsb3NlIHRoZSBXZWJTb2NrZXQuXG4gICAgICAgICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICh3cy5yZWFkeVN0YXRlID09PSAwIHx8IHdzLnJlYWR5U3RhdGUgPT09IDEpIHdzLmNsb3NlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pIGFzIE9ic2VydmFibGU8VD5cbiAgICB9XG5cbiAgICBwcml2YXRlIHJlY29ubmVjdFRvQ29udmVyc2F0aW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5jaGVja0Nvbm5lY3Rpb24odHJ1ZSlcbiAgICAgICAgLmZsYXRNYXAoXyA9PlxuICAgICAgICAgICAgdGhpcy5zZXJ2aWNlcy5hamF4KHtcbiAgICAgICAgICAgICAgICBtZXRob2Q6IFwiR0VUXCIsXG4gICAgICAgICAgICAgICAgdXJsOiBgJHt0aGlzLmRvbWFpbn0vY29udmVyc2F0aW9ucy8ke3RoaXMuY29udmVyc2F0aW9uSWR9P3dhdGVybWFyaz0ke3RoaXMud2F0ZXJtYXJrfWAsXG4gICAgICAgICAgICAgICAgdGltZW91dDogdGhpcy50aW1lb3V0LFxuICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICAgICAgICAgXCJBY2NlcHRcIjogXCJhcHBsaWNhdGlvbi9qc29uXCIsXG4gICAgICAgICAgICAgICAgICAgIC4uLnRoaXMuY29tbW9uSGVhZGVycygpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5kbyhyZXN1bHQgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghdGhpcy5zZWNyZXQpXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudG9rZW4gPSByZXN1bHQucmVzcG9uc2UudG9rZW47XG4gICAgICAgICAgICAgICAgdGhpcy5zdHJlYW1VcmwgPSByZXN1bHQucmVzcG9uc2Uuc3RyZWFtVXJsO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5tYXAoXyA9PiBudWxsKVxuICAgICAgICAgICAgLnJldHJ5V2hlbihlcnJvciQgPT4gZXJyb3IkXG4gICAgICAgICAgICAgICAgLm1lcmdlTWFwKGVycm9yID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGVycm9yLnN0YXR1cyA9PT0gNDAzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyB0b2tlbiBoYXMgZXhwaXJlZC4gV2UgY2FuJ3QgcmVjb3ZlciBmcm9tIHRoaXMgaGVyZSwgYnV0IHRoZSBlbWJlZGRpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdlYnNpdGUgbWlnaHQgZXZlbnR1YWxseSBjYWxsIHJlY29ubmVjdCgpIHdpdGggYSBuZXcgdG9rZW4gYW5kIHN0cmVhbVVybC5cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZXhwaXJlZFRva2VuKCk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZXJyb3Iuc3RhdHVzID09PSA0MDQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBPYnNlcnZhYmxlLnRocm93KGVycm9yQ29udmVyc2F0aW9uRW5kZWQsIHRoaXMuc2VydmljZXMuc2NoZWR1bGVyKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBPYnNlcnZhYmxlLm9mKGVycm9yLCB0aGlzLnNlcnZpY2VzLnNjaGVkdWxlcik7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuZGVsYXkodGhpcy50aW1lb3V0LCB0aGlzLnNlcnZpY2VzLnNjaGVkdWxlcilcbiAgICAgICAgICAgICAgICAudGFrZSh0aGlzLnJldHJpZXMpXG4gICAgICAgICAgICApXG4gICAgICAgIClcbiAgICB9XG5cbiAgICBwcml2YXRlIGNvbW1vbkhlYWRlcnMoKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBcIkF1dGhvcml6YXRpb25cIjogYEJlYXJlciAke3RoaXMudG9rZW59YCxcbiAgICAgICAgICAgIFwieC1tcy1ib3QtYWdlbnRcIjogdGhpcy5fYm90QWdlbnRcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldEJvdEFnZW50KGN1c3RvbUFnZW50OiBzdHJpbmcgPSAnJyk6IHN0cmluZyB7XG4gICAgICAgIGxldCBjbGllbnRBZ2VudCA9ICdkaXJlY3RsaW5lanMnXG5cbiAgICAgICAgaWYgKGN1c3RvbUFnZW50KSB7XG4gICAgICAgICAgICBjbGllbnRBZ2VudCArPSBgOyAke2N1c3RvbUFnZW50fWBcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBgJHtESVJFQ1RfTElORV9WRVJTSU9OfSAoJHtjbGllbnRBZ2VudH0gJHtwcm9jZXNzLmVudi5ucG1fcGFja2FnZV92ZXJzaW9ufSlgO1xuICAgIH1cblxuICAgIHNldFVzZXJJZCh1c2VySWQ6IHN0cmluZykge1xuICAgICAgICBpZiAodGhpcy5jb25uZWN0aW9uU3RhdHVzJC5nZXRWYWx1ZSgpID09PSBDb25uZWN0aW9uU3RhdHVzLk9ubGluZSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdEaXJlY3RMaW5lSlM6IEl0IGlzIGNvbm5lY3RlZCwgd2UgY2Fubm90IHNldCB1c2VyIGlkLicpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdXNlcklkRnJvbVRva2VuID0gdGhpcy5wYXJzZVRva2VuKHRoaXMudG9rZW4pO1xuICAgICAgICBpZiAodXNlcklkRnJvbVRva2VuKSB7XG4gICAgICAgICAgICByZXR1cm4gY29uc29sZS53YXJuKCdEaXJlY3RMaW5lSlM6IHVzZXIgaWQgaXMgYWxyZWFkeSBzZXQgaW4gdG9rZW4sIHdpbGwgaWdub3JlIHRoaXMgdXNlciBpZC4nKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICgvXmRsXy91LnRlc3QodXNlcklkKSkge1xuICAgICAgICAgICAgcmV0dXJuIGNvbnNvbGUud2FybignRGlyZWN0TGluZUpTOiB1c2VyIGlkIHByZWZpeGVkIHdpdGggXCJkbF9cIiBpcyByZXNlcnZlZCBhbmQgbXVzdCBiZSBlbWJlZGRlZCBpbnRvIHRoZSBEaXJlY3QgTGluZSB0b2tlbiB0byBwcmV2ZW50IGZvcmdlcnkuJyk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnVzZXJJZE9uU3RhcnRDb252ZXJzYXRpb24gPSB1c2VySWQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBwYXJzZVRva2VuKHRva2VuOiBzdHJpbmcpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IHsgdXNlciB9ID0gand0RGVjb2RlPEp3dFBheWxvYWQ+KHRva2VuKSBhcyB7IFtrZXk6IHN0cmluZ106IGFueTsgfTtcbiAgICAgICAgICAgIHJldHVybiB1c2VyO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICBpZiAoZSBpbnN0YW5jZW9mIEludmFsaWRUb2tlbkVycm9yKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxufVxuIl19","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _typeof = require(\"@babel/runtime/helpers/typeof\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.DirectLineStreaming = void 0;\n\nvar _objectWithoutProperties2 = _interopRequireDefault(require(\"@babel/runtime/helpers/objectWithoutProperties\"));\n\nvar _regenerator = _interopRequireDefault(require(\"@babel/runtime/regenerator\"));\n\nvar _toConsumableArray2 = _interopRequireDefault(require(\"@babel/runtime/helpers/toConsumableArray\"));\n\nvar _asyncToGenerator2 = _interopRequireDefault(require(\"@babel/runtime/helpers/asyncToGenerator\"));\n\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\n\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\n\nvar _defineProperty2 = _interopRequireDefault(require(\"@babel/runtime/helpers/defineProperty\"));\n\nvar _BehaviorSubject = require(\"rxjs/BehaviorSubject\");\n\nvar _buffer = require(\"buffer\");\n\nvar _Observable = require(\"rxjs/Observable\");\n\nvar BFSE = _interopRequireWildcard(require(\"botframework-streaming\"));\n\nvar _crossFetch = _interopRequireDefault(require(\"cross-fetch\"));\n\nvar _directLine = require(\"./directLine\");\n\nvar _excluded = [\"attachments\"];\n\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\n\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nvar DIRECT_LINE_VERSION = 'DirectLine/3.0';\nvar MAX_RETRY_COUNT = 3;\nvar refreshTokenLifetime = 30 * 60 * 1000; //const refreshTokenLifetime = 5000;\n\nvar timeout = 20 * 1000;\nvar refreshTokenInterval = refreshTokenLifetime / 2;\n\nvar StreamHandler = /*#__PURE__*/function () {\n function StreamHandler(s, c$, sq) {\n (0, _classCallCheck2[\"default\"])(this, StreamHandler);\n (0, _defineProperty2[\"default\"])(this, \"activityQueue\", []);\n this.subscriber = s;\n this.connectionStatus$ = c$;\n this.shouldQueue = sq;\n }\n\n (0, _createClass2[\"default\"])(StreamHandler, [{\n key: \"setSubscriber\",\n value: function setSubscriber(s) {\n this.subscriber = s;\n }\n }, {\n key: \"processRequest\",\n value: function () {\n var _processRequest = (0, _asyncToGenerator2[\"default\"])( /*#__PURE__*/_regenerator[\"default\"].mark(function _callee(request, logger) {\n var streams, stream0, activitySetJson, activitySet, activity, attachments, stream, attachment, dataUri;\n return _regenerator[\"default\"].wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n streams = (0, _toConsumableArray2[\"default\"])(request.streams);\n stream0 = streams.shift();\n _context.next = 4;\n return stream0.readAsString();\n\n case 4:\n activitySetJson = _context.sent;\n activitySet = JSON.parse(activitySetJson);\n\n if (!(activitySet.activities.length !== 1)) {\n _context.next = 9;\n break;\n }\n\n // Only one activity is expected in a set in streaming\n this.subscriber.error(new Error('there should be exactly one activity'));\n return _context.abrupt(\"return\", BFSE.StreamingResponse.create(500));\n\n case 9:\n activity = activitySet.activities[0];\n\n if (!(streams.length > 0)) {\n _context.next = 21;\n break;\n }\n\n attachments = (0, _toConsumableArray2[\"default\"])(activity.attachments);\n\n case 12:\n if (!(stream = streams.shift())) {\n _context.next = 20;\n break;\n }\n\n _context.next = 15;\n return stream.readAsString();\n\n case 15:\n attachment = _context.sent;\n dataUri = \"data:text/plain;base64,\" + attachment;\n attachments.push({\n contentType: stream.contentType,\n contentUrl: dataUri\n });\n _context.next = 12;\n break;\n\n case 20:\n activity.attachments = attachments;\n\n case 21:\n if (this.shouldQueue()) {\n this.activityQueue.push(activity);\n } else {\n this.subscriber.next(activity);\n }\n\n return _context.abrupt(\"return\", BFSE.StreamingResponse.create(200));\n\n case 23:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function processRequest(_x, _x2) {\n return _processRequest.apply(this, arguments);\n }\n\n return processRequest;\n }()\n }, {\n key: \"flush\",\n value: function flush() {\n var _this = this;\n\n this.connectionStatus$.subscribe(function (cs) {});\n this.activityQueue.forEach(function (a) {\n return _this.subscriber.next(a);\n });\n this.activityQueue = [];\n }\n }]);\n return StreamHandler;\n}();\n\nvar DirectLineStreaming = /*#__PURE__*/function () {\n function DirectLineStreaming(options) {\n var _this2 = this;\n\n (0, _classCallCheck2[\"default\"])(this, DirectLineStreaming);\n (0, _defineProperty2[\"default\"])(this, \"connectionStatus$\", new _BehaviorSubject.BehaviorSubject(_directLine.ConnectionStatus.Uninitialized));\n (0, _defineProperty2[\"default\"])(this, \"_botAgent\", '');\n this.token = options.token;\n this.refreshToken();\n this.domain = options.domain;\n\n if (options.conversationId) {\n this.conversationId = options.conversationId;\n }\n\n this._botAgent = this.getBotAgent(options.botAgent);\n this.queueActivities = true;\n this.activity$ = _Observable.Observable.create( /*#__PURE__*/function () {\n var _ref = (0, _asyncToGenerator2[\"default\"])( /*#__PURE__*/_regenerator[\"default\"].mark(function _callee2(subscriber) {\n return _regenerator[\"default\"].wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n _this2.activitySubscriber = subscriber;\n _this2.theStreamHandler = new StreamHandler(subscriber, _this2.connectionStatus$, function () {\n return _this2.queueActivities;\n });\n\n _this2.connectWithRetryAsync();\n\n case 3:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2);\n }));\n\n return function (_x3) {\n return _ref.apply(this, arguments);\n };\n }()).share();\n }\n\n (0, _createClass2[\"default\"])(DirectLineStreaming, [{\n key: \"reconnect\",\n value: function reconnect(_ref2) {\n var conversationId = _ref2.conversationId,\n token = _ref2.token;\n this.conversationId = conversationId;\n this.token = token;\n this.connectAsync();\n }\n }, {\n key: \"end\",\n value: function end() {\n this.connectionStatus$.next(_directLine.ConnectionStatus.Ended);\n this.streamConnection.disconnect();\n }\n }, {\n key: \"commonHeaders\",\n value: function commonHeaders() {\n return {\n \"Authorization\": \"Bearer \".concat(this.token),\n \"x-ms-bot-agent\": this._botAgent\n };\n }\n }, {\n key: \"getBotAgent\",\n value: function getBotAgent() {\n var customAgent = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var clientAgent = 'directlineStreaming';\n\n if (customAgent) {\n clientAgent += \"; \".concat(customAgent);\n }\n\n return \"\".concat(DIRECT_LINE_VERSION, \" (\").concat(clientAgent, \")\");\n }\n }, {\n key: \"refreshToken\",\n value: function () {\n var _refreshToken = (0, _asyncToGenerator2[\"default\"])( /*#__PURE__*/_regenerator[\"default\"].mark(function _callee3() {\n var firstCall,\n retryCount,\n numberOfAttempts,\n res,\n _yield$res$json,\n token,\n _args3 = arguments;\n\n return _regenerator[\"default\"].wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n firstCall = _args3.length > 0 && _args3[0] !== undefined ? _args3[0] : true;\n retryCount = _args3.length > 1 && _args3[1] !== undefined ? _args3[1] : 0;\n _context3.next = 4;\n return this.waitUntilOnline();\n\n case 4:\n numberOfAttempts = 0;\n\n case 5:\n if (!(numberOfAttempts < MAX_RETRY_COUNT)) {\n _context3.next = 30;\n break;\n }\n\n numberOfAttempts++;\n _context3.next = 9;\n return new Promise(function (r) {\n return setTimeout(r, refreshTokenInterval);\n });\n\n case 9:\n _context3.prev = 9;\n _context3.next = 12;\n return (0, _crossFetch[\"default\"])(\"\".concat(this.domain, \"/tokens/refresh\"), {\n method: \"POST\",\n headers: this.commonHeaders()\n });\n\n case 12:\n res = _context3.sent;\n\n if (!res.ok) {\n _context3.next = 22;\n break;\n }\n\n numberOfAttempts = 0;\n _context3.next = 17;\n return res.json();\n\n case 17:\n _yield$res$json = _context3.sent;\n token = _yield$res$json.token;\n this.token = token;\n _context3.next = 23;\n break;\n\n case 22:\n if (res.status === 403 || res.status === 403) {\n console.error(\"Fatal error while refreshing the token: \".concat(res.status, \" \").concat(res.statusText));\n this.streamConnection.disconnect();\n } else {\n console.warn(\"Refresh attempt #\".concat(numberOfAttempts, \" failed: \").concat(res.status, \" \").concat(res.statusText));\n }\n\n case 23:\n _context3.next = 28;\n break;\n\n case 25:\n _context3.prev = 25;\n _context3.t0 = _context3[\"catch\"](9);\n console.warn(\"Refresh attempt #\".concat(numberOfAttempts, \" threw an exception: \").concat(_context3.t0));\n\n case 28:\n _context3.next = 5;\n break;\n\n case 30:\n console.error(\"Retries exhausted\");\n this.streamConnection.disconnect();\n\n case 32:\n case \"end\":\n return _context3.stop();\n }\n }\n }, _callee3, this, [[9, 25]]);\n }));\n\n function refreshToken() {\n return _refreshToken.apply(this, arguments);\n }\n\n return refreshToken;\n }()\n }, {\n key: \"postActivity\",\n value: function postActivity(activity) {\n var _this3 = this;\n\n if (activity.type === \"message\" && activity.attachments && activity.attachments.length > 0) {\n return this.postMessageWithAttachments(activity);\n }\n\n var resp$ = _Observable.Observable.create( /*#__PURE__*/function () {\n var _ref3 = (0, _asyncToGenerator2[\"default\"])( /*#__PURE__*/_regenerator[\"default\"].mark(function _callee4(subscriber) {\n var request, resp, numberOfStreams, idString, _JSON$parse, id;\n\n return _regenerator[\"default\"].wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n request = BFSE.StreamingRequest.create('POST', '/v3/directline/conversations/' + _this3.conversationId + '/activities');\n request.setBody(JSON.stringify(activity));\n _context4.next = 4;\n return _this3.streamConnection.send(request);\n\n case 4:\n resp = _context4.sent;\n _context4.prev = 5;\n\n if (!(resp.statusCode !== 200)) {\n _context4.next = 8;\n break;\n }\n\n throw new Error(\"PostActivity returned \" + resp.statusCode);\n\n case 8:\n numberOfStreams = resp.streams.length;\n\n if (!(numberOfStreams !== 1)) {\n _context4.next = 11;\n break;\n }\n\n throw new Error(\"Expected one stream but got \" + numberOfStreams);\n\n case 11:\n _context4.next = 13;\n return resp.streams[0].readAsString();\n\n case 13:\n idString = _context4.sent;\n _JSON$parse = JSON.parse(idString), id = _JSON$parse.Id;\n return _context4.abrupt(\"return\", subscriber.next(id));\n\n case 18:\n _context4.prev = 18;\n _context4.t0 = _context4[\"catch\"](5);\n // If there is a network issue then its handled by\n // the disconnectionHandler. Everything else can\n // be retried\n console.warn(_context4.t0);\n\n _this3.streamConnection.disconnect();\n\n return _context4.abrupt(\"return\", subscriber.error(_context4.t0));\n\n case 23:\n case \"end\":\n return _context4.stop();\n }\n }\n }, _callee4, null, [[5, 18]]);\n }));\n\n return function (_x4) {\n return _ref3.apply(this, arguments);\n };\n }());\n\n return resp$;\n }\n }, {\n key: \"postMessageWithAttachments\",\n value: function postMessageWithAttachments(message) {\n var _this4 = this;\n\n var attachments = message.attachments,\n messageWithoutAttachments = (0, _objectWithoutProperties2[\"default\"])(message, _excluded);\n return _Observable.Observable.create(function (subscriber) {\n var httpContentList = [];\n (0, _asyncToGenerator2[\"default\"])( /*#__PURE__*/_regenerator[\"default\"].mark(function _callee6() {\n var arrayBuffers, url, request, activityStream, resp, _yield$resp$streams$, id;\n\n return _regenerator[\"default\"].wrap(function _callee6$(_context6) {\n while (1) {\n switch (_context6.prev = _context6.next) {\n case 0:\n _context6.prev = 0;\n _context6.next = 3;\n return Promise.all(attachments.map( /*#__PURE__*/function () {\n var _ref5 = (0, _asyncToGenerator2[\"default\"])( /*#__PURE__*/_regenerator[\"default\"].mark(function _callee5(attachment) {\n var media, res;\n return _regenerator[\"default\"].wrap(function _callee5$(_context5) {\n while (1) {\n switch (_context5.prev = _context5.next) {\n case 0:\n media = attachment;\n _context5.next = 3;\n return (0, _crossFetch[\"default\"])(media.contentUrl);\n\n case 3:\n res = _context5.sent;\n\n if (!res.ok) {\n _context5.next = 12;\n break;\n }\n\n _context5.next = 7;\n return res.arrayBuffer();\n\n case 7:\n _context5.t0 = _context5.sent;\n _context5.t1 = media;\n return _context5.abrupt(\"return\", {\n arrayBuffer: _context5.t0,\n media: _context5.t1\n });\n\n case 12:\n throw new Error('...');\n\n case 13:\n case \"end\":\n return _context5.stop();\n }\n }\n }, _callee5);\n }));\n\n return function (_x5) {\n return _ref5.apply(this, arguments);\n };\n }()));\n\n case 3:\n arrayBuffers = _context6.sent;\n arrayBuffers.forEach(function (_ref6) {\n var arrayBuffer = _ref6.arrayBuffer,\n media = _ref6.media;\n\n var buffer = _buffer.Buffer.from(arrayBuffer);\n\n console.log(buffer);\n var stream = new BFSE.SubscribableStream();\n stream.write(buffer);\n var httpContent = new BFSE.HttpContent({\n type: media.contentType,\n contentLength: buffer.length\n }, stream);\n httpContentList.push(httpContent);\n });\n url = \"/v3/directline/conversations/\".concat(_this4.conversationId, \"/users/\").concat(messageWithoutAttachments.from.id, \"/upload\");\n request = BFSE.StreamingRequest.create('PUT', url);\n activityStream = new BFSE.SubscribableStream();\n activityStream.write(JSON.stringify(messageWithoutAttachments), 'utf-8');\n request.addStream(new BFSE.HttpContent({\n type: \"application/vnd.microsoft.activity\",\n contentLength: activityStream.length\n }, activityStream));\n httpContentList.forEach(function (e) {\n return request.addStream(e);\n });\n _context6.next = 13;\n return _this4.streamConnection.send(request);\n\n case 13:\n resp = _context6.sent;\n\n if (!(resp.streams && resp.streams.length !== 1)) {\n _context6.next = 18;\n break;\n }\n\n subscriber.error(new Error(\"Invalid stream count \".concat(resp.streams.length)));\n _context6.next = 23;\n break;\n\n case 18:\n _context6.next = 20;\n return resp.streams[0].readAsJson();\n\n case 20:\n _yield$resp$streams$ = _context6.sent;\n id = _yield$resp$streams$.Id;\n subscriber.next(id);\n\n case 23:\n _context6.next = 28;\n break;\n\n case 25:\n _context6.prev = 25;\n _context6.t0 = _context6[\"catch\"](0);\n subscriber.error(_context6.t0);\n\n case 28:\n case \"end\":\n return _context6.stop();\n }\n }\n }, _callee6, null, [[0, 25]]);\n }))();\n });\n }\n }, {\n key: \"waitUntilOnline\",\n value: function () {\n var _waitUntilOnline = (0, _asyncToGenerator2[\"default\"])( /*#__PURE__*/_regenerator[\"default\"].mark(function _callee7() {\n var _this5 = this;\n\n return _regenerator[\"default\"].wrap(function _callee7$(_context7) {\n while (1) {\n switch (_context7.prev = _context7.next) {\n case 0:\n return _context7.abrupt(\"return\", new Promise(function (resolve, reject) {\n _this5.connectionStatus$.subscribe(function (cs) {\n if (cs === _directLine.ConnectionStatus.Online) return resolve();\n }, function (e) {\n return reject(e);\n });\n }));\n\n case 1:\n case \"end\":\n return _context7.stop();\n }\n }\n }, _callee7);\n }));\n\n function waitUntilOnline() {\n return _waitUntilOnline.apply(this, arguments);\n }\n\n return waitUntilOnline;\n }()\n }, {\n key: \"connectAsync\",\n value: function () {\n var _connectAsync = (0, _asyncToGenerator2[\"default\"])( /*#__PURE__*/_regenerator[\"default\"].mark(function _callee9() {\n var _this6 = this;\n\n var re, params, urlSearchParams, wsUrl;\n return _regenerator[\"default\"].wrap(function _callee9$(_context9) {\n while (1) {\n switch (_context9.prev = _context9.next) {\n case 0:\n re = new RegExp('^http(s?)');\n\n if (re.test(this.domain)) {\n _context9.next = 3;\n break;\n }\n\n throw \"Domain must begin with http or https\";\n\n case 3:\n params = {\n token: this.token\n };\n if (this.conversationId) params['conversationId'] = this.conversationId;\n urlSearchParams = new URLSearchParams(params).toString();\n wsUrl = \"\".concat(this.domain.replace(re, 'ws$1'), \"/conversations/connect?\").concat(urlSearchParams);\n return _context9.abrupt(\"return\", new Promise( /*#__PURE__*/function () {\n var _ref7 = (0, _asyncToGenerator2[\"default\"])( /*#__PURE__*/_regenerator[\"default\"].mark(function _callee8(resolve, reject) {\n var request, response, responseString, conversation;\n return _regenerator[\"default\"].wrap(function _callee8$(_context8) {\n while (1) {\n switch (_context8.prev = _context8.next) {\n case 0:\n _context8.prev = 0;\n _this6.streamConnection = new BFSE.WebSocketClient({\n url: wsUrl,\n requestHandler: _this6.theStreamHandler,\n disconnectionHandler: function disconnectionHandler(e) {\n return resolve(e);\n }\n });\n _this6.queueActivities = true;\n _context8.next = 5;\n return _this6.streamConnection.connect();\n\n case 5:\n request = BFSE.StreamingRequest.create('POST', '/v3/directline/conversations');\n _context8.next = 8;\n return _this6.streamConnection.send(request);\n\n case 8:\n response = _context8.sent;\n\n if (!(response.statusCode !== 200)) {\n _context8.next = 11;\n break;\n }\n\n throw new Error(\"Connection response code \" + response.statusCode);\n\n case 11:\n if (!(response.streams.length !== 1)) {\n _context8.next = 13;\n break;\n }\n\n throw new Error(\"Expected 1 stream but got \" + response.streams.length);\n\n case 13:\n _context8.next = 15;\n return response.streams[0].readAsString();\n\n case 15:\n responseString = _context8.sent;\n conversation = JSON.parse(responseString);\n _this6.conversationId = conversation.conversationId;\n\n _this6.connectionStatus$.next(_directLine.ConnectionStatus.Online); // Wait until DL consumers have had a chance to be notified\n // of the connection status change.\n\n\n _context8.next = 21;\n return _this6.waitUntilOnline();\n\n case 21:\n _this6.theStreamHandler.flush();\n\n _this6.queueActivities = false;\n _context8.next = 28;\n break;\n\n case 25:\n _context8.prev = 25;\n _context8.t0 = _context8[\"catch\"](0);\n reject(_context8.t0);\n\n case 28:\n case \"end\":\n return _context8.stop();\n }\n }\n }, _callee8, null, [[0, 25]]);\n }));\n\n return function (_x6, _x7) {\n return _ref7.apply(this, arguments);\n };\n }()));\n\n case 8:\n case \"end\":\n return _context9.stop();\n }\n }\n }, _callee9, this);\n }));\n\n function connectAsync() {\n return _connectAsync.apply(this, arguments);\n }\n\n return connectAsync;\n }()\n }, {\n key: \"connectWithRetryAsync\",\n value: function () {\n var _connectWithRetryAsync = (0, _asyncToGenerator2[\"default\"])( /*#__PURE__*/_regenerator[\"default\"].mark(function _callee10() {\n var _this7 = this;\n\n var numRetries, start, res;\n return _regenerator[\"default\"].wrap(function _callee10$(_context10) {\n while (1) {\n switch (_context10.prev = _context10.next) {\n case 0:\n numRetries = MAX_RETRY_COUNT;\n\n case 1:\n if (!(numRetries > 0)) {\n _context10.next = 26;\n break;\n }\n\n numRetries--;\n start = Date.now();\n _context10.prev = 4;\n this.connectionStatus$.next(_directLine.ConnectionStatus.Connecting);\n _context10.next = 8;\n return this.connectAsync();\n\n case 8:\n res = _context10.sent;\n\n if (!(this.connectionStatus$.getValue() === _directLine.ConnectionStatus.Ended)) {\n _context10.next = 12;\n break;\n }\n\n console.warn('Connection end');\n return _context10.abrupt(\"break\", 26);\n\n case 12:\n console.warn(\"Retrying connection \".concat(res));\n\n if (!(60000 < Date.now() - start)) {\n _context10.next = 16;\n break;\n }\n\n // reset the retry counter and retry immediately\n // if the connection lasted for more than a minute\n numRetries = MAX_RETRY_COUNT;\n return _context10.abrupt(\"continue\", 1);\n\n case 16:\n _context10.next = 22;\n break;\n\n case 18:\n _context10.prev = 18;\n _context10.t0 = _context10[\"catch\"](4);\n console.error(\"Failed to connect \".concat(_context10.t0));\n throw _context10.t0;\n\n case 22:\n _context10.next = 24;\n return new Promise(function (r) {\n return setTimeout(r, _this7.getRetryDelay());\n });\n\n case 24:\n _context10.next = 1;\n break;\n\n case 26:\n case \"end\":\n return _context10.stop();\n }\n }\n }, _callee10, this, [[4, 18]]);\n }));\n\n function connectWithRetryAsync() {\n return _connectWithRetryAsync.apply(this, arguments);\n }\n\n return connectWithRetryAsync;\n }() // Returns the delay duration in milliseconds\n\n }, {\n key: \"getRetryDelay\",\n value: function getRetryDelay() {\n return Math.floor(3000 + Math.random() * 12000);\n }\n }]);\n return DirectLineStreaming;\n}();\n\nexports.DirectLineStreaming = DirectLineStreaming;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9kaXJlY3RMaW5lU3RyZWFtaW5nLnRzIl0sIm5hbWVzIjpbIkRJUkVDVF9MSU5FX1ZFUlNJT04iLCJNQVhfUkVUUllfQ09VTlQiLCJyZWZyZXNoVG9rZW5MaWZldGltZSIsInRpbWVvdXQiLCJyZWZyZXNoVG9rZW5JbnRlcnZhbCIsIlN0cmVhbUhhbmRsZXIiLCJzIiwiYyQiLCJzcSIsInN1YnNjcmliZXIiLCJjb25uZWN0aW9uU3RhdHVzJCIsInNob3VsZFF1ZXVlIiwicmVxdWVzdCIsImxvZ2dlciIsInN0cmVhbXMiLCJzdHJlYW0wIiwic2hpZnQiLCJyZWFkQXNTdHJpbmciLCJhY3Rpdml0eVNldEpzb24iLCJhY3Rpdml0eVNldCIsIkpTT04iLCJwYXJzZSIsImFjdGl2aXRpZXMiLCJsZW5ndGgiLCJlcnJvciIsIkVycm9yIiwiQkZTRSIsIlN0cmVhbWluZ1Jlc3BvbnNlIiwiY3JlYXRlIiwiYWN0aXZpdHkiLCJhdHRhY2htZW50cyIsInN0cmVhbSIsImF0dGFjaG1lbnQiLCJkYXRhVXJpIiwicHVzaCIsImNvbnRlbnRUeXBlIiwiY29udGVudFVybCIsImFjdGl2aXR5UXVldWUiLCJuZXh0Iiwic3Vic2NyaWJlIiwiY3MiLCJmb3JFYWNoIiwiYSIsIkRpcmVjdExpbmVTdHJlYW1pbmciLCJvcHRpb25zIiwiQmVoYXZpb3JTdWJqZWN0IiwiQ29ubmVjdGlvblN0YXR1cyIsIlVuaW5pdGlhbGl6ZWQiLCJ0b2tlbiIsInJlZnJlc2hUb2tlbiIsImRvbWFpbiIsImNvbnZlcnNhdGlvbklkIiwiX2JvdEFnZW50IiwiZ2V0Qm90QWdlbnQiLCJib3RBZ2VudCIsInF1ZXVlQWN0aXZpdGllcyIsImFjdGl2aXR5JCIsIk9ic2VydmFibGUiLCJhY3Rpdml0eVN1YnNjcmliZXIiLCJ0aGVTdHJlYW1IYW5kbGVyIiwiY29ubmVjdFdpdGhSZXRyeUFzeW5jIiwic2hhcmUiLCJjb25uZWN0QXN5bmMiLCJFbmRlZCIsInN0cmVhbUNvbm5lY3Rpb24iLCJkaXNjb25uZWN0IiwiY3VzdG9tQWdlbnQiLCJjbGllbnRBZ2VudCIsImZpcnN0Q2FsbCIsInJldHJ5Q291bnQiLCJ3YWl0VW50aWxPbmxpbmUiLCJudW1iZXJPZkF0dGVtcHRzIiwiUHJvbWlzZSIsInIiLCJzZXRUaW1lb3V0IiwibWV0aG9kIiwiaGVhZGVycyIsImNvbW1vbkhlYWRlcnMiLCJyZXMiLCJvayIsImpzb24iLCJzdGF0dXMiLCJjb25zb2xlIiwic3RhdHVzVGV4dCIsIndhcm4iLCJ0eXBlIiwicG9zdE1lc3NhZ2VXaXRoQXR0YWNobWVudHMiLCJyZXNwJCIsIlN0cmVhbWluZ1JlcXVlc3QiLCJzZXRCb2R5Iiwic3RyaW5naWZ5Iiwic2VuZCIsInJlc3AiLCJzdGF0dXNDb2RlIiwibnVtYmVyT2ZTdHJlYW1zIiwiaWRTdHJpbmciLCJpZCIsIklkIiwibWVzc2FnZSIsIm1lc3NhZ2VXaXRob3V0QXR0YWNobWVudHMiLCJodHRwQ29udGVudExpc3QiLCJhbGwiLCJtYXAiLCJtZWRpYSIsImFycmF5QnVmZmVyIiwiYXJyYXlCdWZmZXJzIiwiYnVmZmVyIiwiQnVmZmVyIiwiZnJvbSIsImxvZyIsIlN1YnNjcmliYWJsZVN0cmVhbSIsIndyaXRlIiwiaHR0cENvbnRlbnQiLCJIdHRwQ29udGVudCIsImNvbnRlbnRMZW5ndGgiLCJ1cmwiLCJhY3Rpdml0eVN0cmVhbSIsImFkZFN0cmVhbSIsImUiLCJyZWFkQXNKc29uIiwicmVzb2x2ZSIsInJlamVjdCIsIk9ubGluZSIsInJlIiwiUmVnRXhwIiwidGVzdCIsInBhcmFtcyIsInVybFNlYXJjaFBhcmFtcyIsIlVSTFNlYXJjaFBhcmFtcyIsInRvU3RyaW5nIiwid3NVcmwiLCJyZXBsYWNlIiwiV2ViU29ja2V0Q2xpZW50IiwicmVxdWVzdEhhbmRsZXIiLCJkaXNjb25uZWN0aW9uSGFuZGxlciIsImNvbm5lY3QiLCJyZXNwb25zZSIsInJlc3BvbnNlU3RyaW5nIiwiY29udmVyc2F0aW9uIiwiZmx1c2giLCJudW1SZXRyaWVzIiwic3RhcnQiLCJEYXRlIiwibm93IiwiQ29ubmVjdGluZyIsImdldFZhbHVlIiwiZ2V0UmV0cnlEZWxheSIsIk1hdGgiLCJmbG9vciIsInJhbmRvbSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVBOztBQUNBOztBQUNBOztBQUVBOztBQUNBOztBQUVBOzs7Ozs7OztBQVNBLElBQU1BLG1CQUFtQixHQUFHLGdCQUE1QjtBQUNBLElBQU1DLGVBQWUsR0FBRyxDQUF4QjtBQUNBLElBQU1DLG9CQUFvQixHQUFHLEtBQUssRUFBTCxHQUFVLElBQXZDLEMsQ0FDQTs7QUFDQSxJQUFNQyxPQUFPLEdBQUcsS0FBSyxJQUFyQjtBQUNBLElBQU1DLG9CQUFvQixHQUFHRixvQkFBb0IsR0FBRyxDQUFwRDs7SUFVTUcsYTtBQU1KLHlCQUFZQyxDQUFaLEVBQXFDQyxFQUFyQyxFQUF1RUMsRUFBdkUsRUFBMEY7QUFBQTtBQUFBLDREQUZqRCxFQUVpRDtBQUN4RixTQUFLQyxVQUFMLEdBQWtCSCxDQUFsQjtBQUNBLFNBQUtJLGlCQUFMLEdBQXlCSCxFQUF6QjtBQUNBLFNBQUtJLFdBQUwsR0FBbUJILEVBQW5CO0FBQ0Q7Ozs7V0FFRCx1QkFBcUJGLENBQXJCLEVBQThDO0FBQzVDLFdBQUtHLFVBQUwsR0FBa0JILENBQWxCO0FBQ0Q7Ozs7MEdBRUQsaUJBQXFCTSxPQUFyQixFQUFvREMsTUFBcEQ7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ1FDLGdCQUFBQSxPQURSLHVDQUNzQkYsT0FBTyxDQUFDRSxPQUQ5QjtBQUVRQyxnQkFBQUEsT0FGUixHQUVrQkQsT0FBTyxDQUFDRSxLQUFSLEVBRmxCO0FBQUE7QUFBQSx1QkFHZ0NELE9BQU8sQ0FBQ0UsWUFBUixFQUhoQzs7QUFBQTtBQUdRQyxnQkFBQUEsZUFIUjtBQUlRQyxnQkFBQUEsV0FKUixHQUlzQkMsSUFBSSxDQUFDQyxLQUFMLENBQVdILGVBQVgsQ0FKdEI7O0FBQUEsc0JBTU1DLFdBQVcsQ0FBQ0csVUFBWixDQUF1QkMsTUFBdkIsS0FBa0MsQ0FOeEM7QUFB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dCB0aGUgcGFydHMgb2YgcnhqcyB0aGF0IHdlIHVzZVxuXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzL0JlaGF2aW9yU3ViamVjdCc7XG5pbXBvcnQgeyBCdWZmZXIgfSBmcm9tICdidWZmZXInO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMvT2JzZXJ2YWJsZSc7XG5pbXBvcnQgeyBTdWJzY3JpYmVyIH0gZnJvbSAncnhqcy9TdWJzY3JpYmVyJztcbmltcG9ydCAqIGFzIEJGU0UgZnJvbSAnYm90ZnJhbWV3b3JrLXN0cmVhbWluZyc7XG5pbXBvcnQgZmV0Y2ggZnJvbSAnY3Jvc3MtZmV0Y2gnO1xuXG5pbXBvcnQge1xuICBBY3Rpdml0eSxcbiAgQ29ubmVjdGlvblN0YXR1cyxcbiAgQ29udmVyc2F0aW9uLFxuICBJQm90Q29ubmVjdGlvbixcbiAgTWVkaWEsXG4gIE1lc3NhZ2Vcbn0gZnJvbSAnLi9kaXJlY3RMaW5lJztcblxuY29uc3QgRElSRUNUX0xJTkVfVkVSU0lPTiA9ICdEaXJlY3RMaW5lLzMuMCc7XG5jb25zdCBNQVhfUkVUUllfQ09VTlQgPSAzO1xuY29uc3QgcmVmcmVzaFRva2VuTGlmZXRpbWUgPSAzMCAqIDYwICogMTAwMDtcbi8vY29uc3QgcmVmcmVzaFRva2VuTGlmZXRpbWUgPSA1MDAwO1xuY29uc3QgdGltZW91dCA9IDIwICogMTAwMDtcbmNvbnN0IHJlZnJlc2hUb2tlbkludGVydmFsID0gcmVmcmVzaFRva2VuTGlmZXRpbWUgLyAyO1xuXG5pbnRlcmZhY2UgRGlyZWN0TGluZVN0cmVhbWluZ09wdGlvbnMge1xuICB0b2tlbjogc3RyaW5nLFxuICBjb252ZXJzYXRpb25JZD86IHN0cmluZyxcbiAgZG9tYWluOiBzdHJpbmcsXG4gIC8vIEF0dGFjaGVkIHRvIGFsbCByZXF1ZXN0cyB0byBpZGVudGlmeSByZXF1ZXN0aW5nIGFnZW50LlxuICBib3RBZ2VudD86IHN0cmluZ1xufVxuXG5jbGFzcyBTdHJlYW1IYW5kbGVyIGltcGxlbWVudHMgQkZTRS5SZXF1ZXN0SGFuZGxlciB7XG4gIHByaXZhdGUgY29ubmVjdGlvblN0YXR1cyQ7XG4gIHByaXZhdGUgc3Vic2NyaWJlcjogU3Vic2NyaWJlcjxBY3Rpdml0eT47XG4gIHByaXZhdGUgc2hvdWxkUXVldWU6ICgpID0+IGJvb2xlYW47XG4gIHByaXZhdGUgYWN0aXZpdHlRdWV1ZTogQXJyYXk8QWN0aXZpdHk+ID0gW107XG5cbiAgY29uc3RydWN0b3IoczogU3Vic2NyaWJlcjxBY3Rpdml0eT4sIGMkOiBPYnNlcnZhYmxlPENvbm5lY3Rpb25TdGF0dXM+LCBzcTogKCkgPT4gYm9vbGVhbikge1xuICAgIHRoaXMuc3Vic2NyaWJlciA9IHM7XG4gICAgdGhpcy5jb25uZWN0aW9uU3RhdHVzJCA9IGMkO1xuICAgIHRoaXMuc2hvdWxkUXVldWUgPSBzcTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRTdWJzY3JpYmVyKHM6IFN1YnNjcmliZXI8QWN0aXZpdHk+KSB7XG4gICAgdGhpcy5zdWJzY3JpYmVyID0gcztcbiAgfVxuXG4gIGFzeW5jIHByb2Nlc3NSZXF1ZXN0KHJlcXVlc3Q6IEJGU0UuSVJlY2VpdmVSZXF1ZXN0LCBsb2dnZXI/OiBhbnkpOiBQcm9taXNlPEJGU0UuU3RyZWFtaW5nUmVzcG9uc2U+IHtcbiAgICBjb25zdCBzdHJlYW1zID0gWy4uLnJlcXVlc3Quc3RyZWFtc107XG4gICAgY29uc3Qgc3RyZWFtMCA9IHN0cmVhbXMuc2hpZnQoKTtcbiAgICBjb25zdCBhY3Rpdml0eVNldEpzb24gPSBhd2FpdCBzdHJlYW0wLnJlYWRBc1N0cmluZygpO1xuICAgIGNvbnN0IGFjdGl2aXR5U2V0ID0gSlNPTi5wYXJzZShhY3Rpdml0eVNldEpzb24pO1xuXG4gICAgaWYgKGFjdGl2aXR5U2V0LmFjdGl2aXRpZXMubGVuZ3RoICE9PSAxKSB7XG4gICAgICAvLyBPbmx5IG9uZSBhY3Rpdml0eSBpcyBleHBlY3RlZCBpbiBhIHNldCBpbiBzdHJlYW1pbmdcbiAgICAgIHRoaXMuc3Vic2NyaWJlci5lcnJvcihuZXcgRXJyb3IoJ3RoZXJlIHNob3VsZCBiZSBleGFjdGx5IG9uZSBhY3Rpdml0eScpKTtcbiAgICAgIHJldHVybiBCRlNFLlN0cmVhbWluZ1Jlc3BvbnNlLmNyZWF0ZSg1MDApO1xuICAgIH1cblxuICAgIGNvbnN0IGFjdGl2aXR5ID0gYWN0aXZpdHlTZXQuYWN0aXZpdGllc1swXTtcblxuICAgIGlmIChzdHJlYW1zLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IGF0dGFjaG1lbnRzID0gWy4uLmFjdGl2aXR5LmF0dGFjaG1lbnRzXTtcblxuICAgICAgbGV0IHN0cmVhbTogQkZTRS5Db250ZW50U3RyZWFtO1xuICAgICAgd2hpbGUgKHN0cmVhbSA9IHN0cmVhbXMuc2hpZnQoKSkge1xuICAgICAgICBjb25zdCBhdHRhY2htZW50ID0gYXdhaXQgc3RyZWFtLnJlYWRBc1N0cmluZygpO1xuICAgICAgICBjb25zdCBkYXRhVXJpID0gXCJkYXRhOnRleHQvcGxhaW47YmFzZTY0LFwiICsgYXR0YWNobWVudDtcbiAgICAgICAgYXR0YWNobWVudHMucHVzaCh7IGNvbnRlbnRUeXBlOiBzdHJlYW0uY29udGVudFR5cGUsIGNvbnRlbnRVcmw6IGRhdGFVcmkgfSk7XG4gICAgICB9XG5cbiAgICAgIGFjdGl2aXR5LmF0dGFjaG1lbnRzID0gYXR0YWNobWVudHM7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuc2hvdWxkUXVldWUoKSkge1xuICAgICAgdGhpcy5hY3Rpdml0eVF1ZXVlLnB1c2goYWN0aXZpdHkpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnN1YnNjcmliZXIubmV4dChhY3Rpdml0eSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIEJGU0UuU3RyZWFtaW5nUmVzcG9uc2UuY3JlYXRlKDIwMCk7XG4gIH1cblxuICBwdWJsaWMgZmx1c2goKSB7XG4gICAgdGhpcy5jb25uZWN0aW9uU3RhdHVzJC5zdWJzY3JpYmUoY3MgPT4geyB9KVxuICAgIHRoaXMuYWN0aXZpdHlRdWV1ZS5mb3JFYWNoKChhKSA9PiB0aGlzLnN1YnNjcmliZXIubmV4dChhKSk7XG4gICAgdGhpcy5hY3Rpdml0eVF1ZXVlID0gW107XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIERpcmVjdExpbmVTdHJlYW1pbmcgaW1wbGVtZW50cyBJQm90Q29ubmVjdGlvbiB7XG4gIHB1YmxpYyBjb25uZWN0aW9uU3RhdHVzJCA9IG5ldyBCZWhhdmlvclN1YmplY3QoQ29ubmVjdGlvblN0YXR1cy5VbmluaXRpYWxpemVkKTtcbiAgcHVibGljIGFjdGl2aXR5JDogT2JzZXJ2YWJsZTxBY3Rpdml0eT47XG5cbiAgcHJpdmF0ZSBhY3Rpdml0eVN1YnNjcmliZXI6IFN1YnNjcmliZXI8QWN0aXZpdHk+O1xuICBwcml2YXRlIHRoZVN0cmVhbUhhbmRsZXI6IFN0cmVhbUhhbmRsZXI7XG5cbiAgcHJpdmF0ZSBkb21haW46IHN0cmluZztcblxuICBwcml2YXRlIGNvbnZlcnNhdGlvbklkOiBzdHJpbmc7XG4gIHByaXZhdGUgdG9rZW46IHN0cmluZztcbiAgcHJpdmF0ZSBzdHJlYW1Db25uZWN0aW9uOiBCRlNFLldlYlNvY2tldENsaWVudDtcbiAgcHJpdmF0ZSBxdWV1ZUFjdGl2aXRpZXM6IGJvb2xlYW47XG5cbiAgcHJpdmF0ZSBfYm90QWdlbnQgPSAnJztcblxuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBEaXJlY3RMaW5lU3RyZWFtaW5nT3B0aW9ucykge1xuICAgIHRoaXMudG9rZW4gPSBvcHRpb25zLnRva2VuO1xuXG4gICAgdGhpcy5yZWZyZXNoVG9rZW4oKTtcblxuICAgIHRoaXMuZG9tYWluID0gb3B0aW9ucy5kb21haW47XG5cbiAgICBpZiAob3B0aW9ucy5jb252ZXJzYXRpb25JZCkge1xuICAgICAgdGhpcy5jb252ZXJzYXRpb25JZCA9IG9wdGlvbnMuY29udmVyc2F0aW9uSWQ7XG4gICAgfVxuXG4gICAgdGhpcy5fYm90QWdlbnQgPSB0aGlzLmdldEJvdEFnZW50KG9wdGlvbnMuYm90QWdlbnQpO1xuXG4gICAgdGhpcy5xdWV1ZUFjdGl2aXRpZXMgPSB0cnVlO1xuICAgIHRoaXMuYWN0aXZpdHkkID0gT2JzZXJ2YWJsZS5jcmVhdGUoYXN5bmMgKHN1YnNjcmliZXI6IFN1YnNjcmliZXI8QWN0aXZpdHk+KSA9PiB7XG4gICAgICB0aGlzLmFjdGl2aXR5U3Vic2NyaWJlciA9IHN1YnNjcmliZXI7XG4gICAgICB0aGlzLnRoZVN0cmVhbUhhbmRsZXIgPSBuZXcgU3RyZWFtSGFuZGxlcihzdWJzY3JpYmVyLCB0aGlzLmNvbm5lY3Rpb25TdGF0dXMkLCAoKSA9PiB0aGlzLnF1ZXVlQWN0aXZpdGllcyk7XG4gICAgICB0aGlzLmNvbm5lY3RXaXRoUmV0cnlBc3luYygpO1xuICAgIH0pLnNoYXJlKCk7XG4gIH1cblxuICBwdWJsaWMgcmVjb25uZWN0KHsgY29udmVyc2F0aW9uSWQsIHRva2VuIH0gOiBDb252ZXJzYXRpb24pIHtcbiAgICB0aGlzLmNvbnZlcnNhdGlvbklkID0gY29udmVyc2F0aW9uSWQ7XG4gICAgdGhpcy50b2tlbiA9IHRva2VuO1xuICAgIHRoaXMuY29ubmVjdEFzeW5jKCk7XG4gIH1cblxuICBlbmQoKSB7XG4gICAgdGhpcy5jb25uZWN0aW9uU3RhdHVzJC5uZXh0KENvbm5lY3Rpb25TdGF0dXMuRW5kZWQpO1xuICAgIHRoaXMuc3RyZWFtQ29ubmVjdGlvbi5kaXNjb25uZWN0KCk7XG4gIH1cblxuICBwcml2YXRlIGNvbW1vbkhlYWRlcnMoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIFwiQXV0aG9yaXphdGlvblwiOiBgQmVhcmVyICR7dGhpcy50b2tlbn1gLFxuICAgICAgXCJ4LW1zLWJvdC1hZ2VudFwiOiB0aGlzLl9ib3RBZ2VudFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGdldEJvdEFnZW50KGN1c3RvbUFnZW50OiBzdHJpbmcgPSAnJyk6IHN0cmluZyB7XG4gICAgbGV0IGNsaWVudEFnZW50ID0gJ2RpcmVjdGxpbmVTdHJlYW1pbmcnXG5cbiAgICBpZiAoY3VzdG9tQWdlbnQpIHtcbiAgICAgIGNsaWVudEFnZW50ICs9IGA7ICR7Y3VzdG9tQWdlbnR9YFxuICAgIH1cblxuICAgIHJldHVybiBgJHtESVJFQ1RfTElORV9WRVJTSU9OfSAoJHtjbGllbnRBZ2VudH0pYDtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcmVmcmVzaFRva2VuKGZpcnN0Q2FsbCA9IHRydWUsIHJldHJ5Q291bnQgPSAwKSB7XG4gICAgYXdhaXQgdGhpcy53YWl0VW50aWxPbmxpbmUoKTtcblxuICAgIGxldCBudW1iZXJPZkF0dGVtcHRzID0gMDtcbiAgICB3aGlsZShudW1iZXJPZkF0dGVtcHRzIDwgTUFYX1JFVFJZX0NPVU5UKSB7XG4gICAgICBudW1iZXJPZkF0dGVtcHRzKys7XG4gICAgICBhd2FpdCBuZXcgUHJvbWlzZShyID0+IHNldFRpbWVvdXQociwgcmVmcmVzaFRva2VuSW50ZXJ2YWwpKTtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IGZldGNoKGAke3RoaXMuZG9tYWlufS90b2tlbnMvcmVmcmVzaGAsIHttZXRob2Q6IFwiUE9TVFwiLCBoZWFkZXJzOiB0aGlzLmNvbW1vbkhlYWRlcnMoKX0pO1xuICAgICAgICBpZiAocmVzLm9rKSB7XG4gICAgICAgICAgbnVtYmVyT2ZBdHRlbXB0cyA9IDA7XG4gICAgICAgICAgY29uc3Qge3Rva2VufSA9IGF3YWl0IHJlcy5qc29uKCk7XG4gICAgICAgICAgdGhpcy50b2tlbiA9IHRva2VuO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmIChyZXMuc3RhdHVzID09PSA0MDMgfHwgcmVzLnN0YXR1cyA9PT0gNDAzKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGBGYXRhbCBlcnJvciB3aGlsZSByZWZyZXNoaW5nIHRoZSB0b2tlbjogJHtyZXMuc3RhdHVzfSAke3Jlcy5zdGF0dXNUZXh0fWApO1xuICAgICAgICAgICAgdGhpcy5zdHJlYW1Db25uZWN0aW9uLmRpc2Nvbm5lY3QoKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKGBSZWZyZXNoIGF0dGVtcHQgIyR7bnVtYmVyT2ZBdHRlbXB0c30gZmFpbGVkOiAke3Jlcy5zdGF0dXN9ICR7cmVzLnN0YXR1c1RleHR9YCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGNhdGNoKGUpIHtcbiAgICAgICAgY29uc29sZS53YXJuKGBSZWZyZXNoIGF0dGVtcHQgIyR7bnVtYmVyT2ZBdHRlbXB0c30gdGhyZXcgYW4gZXhjZXB0aW9uOiAke2V9YCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc29sZS5lcnJvcihcIlJldHJpZXMgZXhoYXVzdGVkXCIpO1xuICAgIHRoaXMuc3RyZWFtQ29ubmVjdGlvbi5kaXNjb25uZWN0KCk7XG4gIH1cblxuICBwb3N0QWN0aXZpdHkoYWN0aXZpdHk6IEFjdGl2aXR5KSB7XG4gICAgaWYgKGFjdGl2aXR5LnR5cGUgPT09IFwibWVzc2FnZVwiICYmIGFjdGl2aXR5LmF0dGFjaG1lbnRzICYmIGFjdGl2aXR5LmF0dGFjaG1lbnRzLmxlbmd0aCA+IDApIHtcbiAgICAgIHJldHVybiB0aGlzLnBvc3RNZXNzYWdlV2l0aEF0dGFjaG1lbnRzKGFjdGl2aXR5KTtcbiAgICB9XG5cbiAgICBjb25zdCByZXNwJCA9IE9ic2VydmFibGUuY3JlYXRlKGFzeW5jIHN1YnNjcmliZXIgPT4ge1xuICAgICAgY29uc3QgcmVxdWVzdCA9IEJGU0UuU3RyZWFtaW5nUmVxdWVzdC5jcmVhdGUoJ1BPU1QnLCAnL3YzL2RpcmVjdGxpbmUvY29udmVyc2F0aW9ucy8nICsgdGhpcy5jb252ZXJzYXRpb25JZCArICcvYWN0aXZpdGllcycpO1xuICAgICAgcmVxdWVzdC5zZXRCb2R5KEpTT04uc3RyaW5naWZ5KGFjdGl2aXR5KSk7XG4gICAgICBjb25zdCByZXNwID0gYXdhaXQgdGhpcy5zdHJlYW1Db25uZWN0aW9uLnNlbmQocmVxdWVzdCk7XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIGlmIChyZXNwLnN0YXR1c0NvZGUgIT09IDIwMCkgdGhyb3cgbmV3IEVycm9yKFwiUG9zdEFjdGl2aXR5IHJldHVybmVkIFwiICsgcmVzcC5zdGF0dXNDb2RlKTtcbiAgICAgICAgY29uc3QgbnVtYmVyT2ZTdHJlYW1zID0gcmVzcC5zdHJlYW1zLmxlbmd0aDtcbiAgICAgICAgaWYgKG51bWJlck9mU3RyZWFtcyAhPT0gMSkgdGhyb3cgbmV3IEVycm9yKFwiRXhwZWN0ZWQgb25lIHN0cmVhbSBidXQgZ290IFwiICsgbnVtYmVyT2ZTdHJlYW1zKVxuICAgICAgICBjb25zdCBpZFN0cmluZyA9IGF3YWl0IHJlc3Auc3RyZWFtc1swXS5yZWFkQXNTdHJpbmcoKTtcbiAgICAgICAgY29uc3Qge0lkIDogaWR9ID0gSlNPTi5wYXJzZShpZFN0cmluZyk7XG4gICAgICAgIHJldHVybiBzdWJzY3JpYmVyLm5leHQoaWQpO1xuICAgICAgfSBjYXRjaChlKSB7XG4gICAgICAgICAgLy8gSWYgdGhlcmUgaXMgYSBuZXR3b3JrIGlzc3VlIHRoZW4gaXRzIGhhbmRsZWQgYnlcbiAgICAgICAgICAvLyB0aGUgZGlzY29ubmVjdGlvbkhhbmRsZXIuIEV2ZXJ5dGhpbmcgZWxzZSBjYW5cbiAgICAgICAgICAvLyBiZSByZXRyaWVkXG4gICAgICAgICAgY29uc29sZS53YXJuKGUpO1xuICAgICAgICAgIHRoaXMuc3RyZWFtQ29ubmVjdGlvbi5kaXNjb25uZWN0KCk7XG4gICAgICAgICAgcmV0dXJuIHN1YnNjcmliZXIuZXJyb3IoZSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHJlc3AkO1xuICB9XG5cbiAgcHJpdmF0ZSBwb3N0TWVzc2FnZVdpdGhBdHRhY2htZW50cyhtZXNzYWdlOiBNZXNzYWdlKSB7XG4gICAgY29uc3QgeyBhdHRhY2htZW50cywgLi4ubWVzc2FnZVdpdGhvdXRBdHRhY2htZW50cyB9ID0gbWVzc2FnZTtcblxuICAgIHJldHVybiBPYnNlcnZhYmxlLmNyZWF0ZSggc3Vic2NyaWJlciA9PiB7XG4gICAgICBjb25zdCBodHRwQ29udGVudExpc3QgPSBbXTtcbiAgICAgIChhc3luYyAoKSA9PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uc3QgYXJyYXlCdWZmZXJzID0gYXdhaXQgUHJvbWlzZS5hbGwoYXR0YWNobWVudHMubWFwKGFzeW5jIGF0dGFjaG1lbnQgPT4ge1xuICAgICAgICAgICAgY29uc3QgbWVkaWEgPSBhdHRhY2htZW50IGFzIE1lZGlhO1xuICAgICAgICAgICAgY29uc3QgcmVzID0gYXdhaXQgZmV0Y2gobWVkaWEuY29udGVudFVybCk7XG4gICAgICAgICAgICBpZiAocmVzLm9rKSB7XG4gICAgICAgICAgICAgIHJldHVybiB7IGFycmF5QnVmZmVyOiBhd2FpdCByZXMuYXJyYXlCdWZmZXIoKSwgbWVkaWEgfTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignLi4uJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSkpO1xuXG4gICAgICAgICAgYXJyYXlCdWZmZXJzLmZvckVhY2goKHsgYXJyYXlCdWZmZXIsIG1lZGlhIH0pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGJ1ZmZlciA9IEJ1ZmZlci5mcm9tKGFycmF5QnVmZmVyKTtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGJ1ZmZlcik7XG4gICAgICAgICAgICBjb25zdCBzdHJlYW0gPSBuZXcgQkZTRS5TdWJzY3JpYmFibGVTdHJlYW0oKTtcbiAgICAgICAgICAgIHN0cmVhbS53cml0ZShidWZmZXIpO1xuICAgICAgICAgICAgY29uc3QgaHR0cENvbnRlbnQgPSBuZXcgQkZTRS5IdHRwQ29udGVudCh7IHR5cGU6IG1lZGlhLmNvbnRlbnRUeXBlLCBjb250ZW50TGVuZ3RoOiBidWZmZXIubGVuZ3RoIH0sIHN0cmVhbSk7XG4gICAgICAgICAgICBodHRwQ29udGVudExpc3QucHVzaChodHRwQ29udGVudCk7XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICBjb25zdCB1cmwgPSBgL3YzL2RpcmVjdGxpbmUvY29udmVyc2F0aW9ucy8ke3RoaXMuY29udmVyc2F0aW9uSWR9L3VzZXJzLyR7bWVzc2FnZVdpdGhvdXRBdHRhY2htZW50cy5mcm9tLmlkfS91cGxvYWRgO1xuICAgICAgICAgIGNvbnN0IHJlcXVlc3QgPSBCRlNFLlN0cmVhbWluZ1JlcXVlc3QuY3JlYXRlKCdQVVQnLCB1cmwpO1xuICAgICAgICAgIGNvbnN0IGFjdGl2aXR5U3RyZWFtID0gbmV3IEJGU0UuU3Vic2NyaWJhYmxlU3RyZWFtKCk7XG4gICAgICAgICAgYWN0aXZpdHlTdHJlYW0ud3JpdGUoSlNPTi5zdHJpbmdpZnkobWVzc2FnZVdpdGhvdXRBdHRhY2htZW50cyksICd1dGYtOCcpO1xuICAgICAgICAgIHJlcXVlc3QuYWRkU3RyZWFtKG5ldyBCRlNFLkh0dHBDb250ZW50KHsgdHlwZTogXCJhcHBsaWNhdGlvbi92bmQubWljcm9zb2Z0LmFjdGl2aXR5XCIsIGNvbnRlbnRMZW5ndGg6IGFjdGl2aXR5U3RyZWFtLmxlbmd0aCB9LCBhY3Rpdml0eVN0cmVhbSkpO1xuICAgICAgICAgIGh0dHBDb250ZW50TGlzdC5mb3JFYWNoKGUgPT4gcmVxdWVzdC5hZGRTdHJlYW0oZSkpO1xuXG4gICAgICAgICAgY29uc3QgcmVzcCA9IGF3YWl0IHRoaXMuc3RyZWFtQ29ubmVjdGlvbi5zZW5kKHJlcXVlc3QpO1xuICAgICAgICAgIGlmIChyZXNwLnN0cmVhbXMgJiYgcmVzcC5zdHJlYW1zLmxlbmd0aCAhPT0gMSkge1xuICAgICAgICAgICAgc3Vic2NyaWJlci5lcnJvcihuZXcgRXJyb3IoYEludmFsaWQgc3RyZWFtIGNvdW50ICR7cmVzcC5zdHJlYW1zLmxlbmd0aH1gKSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IHtJZDogaWR9ID0gYXdhaXQgcmVzcC5zdHJlYW1zWzBdLnJlYWRBc0pzb24oKTtcbiAgICAgICAgICAgIHN1YnNjcmliZXIubmV4dChpZCk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoKGUpIHtcbiAgICAgICAgICBzdWJzY3JpYmVyLmVycm9yKGUpO1xuICAgICAgICB9XG4gICAgICB9KSgpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyB3YWl0VW50aWxPbmxpbmUoKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIHRoaXMuY29ubmVjdGlvblN0YXR1cyQuc3Vic2NyaWJlKChjcykgPT4ge1xuICAgICAgICBpZiAoY3MgPT09IENvbm5lY3Rpb25TdGF0dXMuT25saW5lKSByZXR1cm4gcmVzb2x2ZSgpO1xuICAgICAgfSxcbiAgICAgICAgKGUpID0+IHJlamVjdChlKSk7XG4gICAgfSlcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgY29ubmVjdEFzeW5jKCkge1xuICAgIGNvbnN0IHJlID0gbmV3IFJlZ0V4cCgnXmh0dHAocz8pJyk7XG4gICAgaWYgKCFyZS50ZXN0KHRoaXMuZG9tYWluKSkgdGhyb3cgKFwiRG9tYWluIG11c3QgYmVnaW4gd2l0aCBodHRwIG9yIGh0dHBzXCIpO1xuICAgIGNvbnN0IHBhcmFtcyA9IHt0b2tlbjogdGhpcy50b2tlbn07XG4gICAgaWYgKHRoaXMuY29udmVyc2F0aW9uSWQpIHBhcmFtc1snY29udmVyc2F0aW9uSWQnXSA9IHRoaXMuY29udmVyc2F0aW9uSWQ7XG4gICAgY29uc3QgdXJsU2VhcmNoUGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcyhwYXJhbXMpLnRvU3RyaW5nKCk7XG4gICAgY29uc3Qgd3NVcmwgPSBgJHt0aGlzLmRvbWFpbi5yZXBsYWNlKHJlLCAnd3MkMScpfS9jb252ZXJzYXRpb25zL2Nvbm5lY3Q/JHt1cmxTZWFyY2hQYXJhbXN9YDtcblxuICAgIHJldHVybiBuZXcgUHJvbWlzZShhc3luYyAocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICB0aGlzLnN0cmVhbUNvbm5lY3Rpb24gPSBuZXcgQkZTRS5XZWJTb2NrZXRDbGllbnQoe1xuICAgICAgICAgIHVybDogd3NVcmwsXG4gICAgICAgICAgcmVxdWVzdEhhbmRsZXI6IHRoaXMudGhlU3RyZWFtSGFuZGxlcixcbiAgICAgICAgICBkaXNjb25uZWN0aW9uSGFuZGxlcjogKGUpID0+IHJlc29sdmUoZSlcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5xdWV1ZUFjdGl2aXRpZXMgPSB0cnVlO1xuICAgICAgICBhd2FpdCB0aGlzLnN0cmVhbUNvbm5lY3Rpb24uY29ubmVjdCgpO1xuICAgICAgICBjb25zdCByZXF1ZXN0ID0gQkZTRS5TdHJlYW1pbmdSZXF1ZXN0LmNyZWF0ZSgnUE9TVCcsICcvdjMvZGlyZWN0bGluZS9jb252ZXJzYXRpb25zJyk7XG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5zdHJlYW1Db25uZWN0aW9uLnNlbmQocmVxdWVzdCk7XG4gICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXNDb2RlICE9PSAyMDApIHRocm93IG5ldyBFcnJvcihcIkNvbm5lY3Rpb24gcmVzcG9uc2UgY29kZSBcIiArIHJlc3BvbnNlLnN0YXR1c0NvZGUpO1xuICAgICAgICBpZiAocmVzcG9uc2Uuc3RyZWFtcy5sZW5ndGggIT09IDEpIHRocm93IG5ldyBFcnJvcihcIkV4cGVjdGVkIDEgc3RyZWFtIGJ1dCBnb3QgXCIgKyByZXNwb25zZS5zdHJlYW1zLmxlbmd0aCk7XG4gICAgICAgIGNvbnN0IHJlc3BvbnNlU3RyaW5nID0gYXdhaXQgcmVzcG9uc2Uuc3RyZWFtc1swXS5yZWFkQXNTdHJpbmcoKTtcbiAgICAgICAgY29uc3QgY29udmVyc2F0aW9uID0gSlNPTi5wYXJzZShyZXNwb25zZVN0cmluZyk7XG4gICAgICAgIHRoaXMuY29udmVyc2F0aW9uSWQgPSBjb252ZXJzYXRpb24uY29udmVyc2F0aW9uSWQ7XG4gICAgICAgIHRoaXMuY29ubmVjdGlvblN0YXR1cyQubmV4dChDb25uZWN0aW9uU3RhdHVzLk9ubGluZSk7XG5cbiAgICAgICAgLy8gV2FpdCB1bnRpbCBETCBjb25zdW1lcnMgaGF2ZSBoYWQgYSBjaGFuY2UgdG8gYmUgbm90aWZpZWRcbiAgICAgICAgLy8gb2YgdGhlIGNvbm5lY3Rpb24gc3RhdHVzIGNoYW5nZS5cbiAgICAgICAgYXdhaXQgdGhpcy53YWl0VW50aWxPbmxpbmUoKTtcbiAgICAgICAgdGhpcy50aGVTdHJlYW1IYW5kbGVyLmZsdXNoKCk7XG4gICAgICAgIHRoaXMucXVldWVBY3Rpdml0aWVzID0gZmFsc2U7XG4gICAgICB9IGNhdGNoKGUpIHtcbiAgICAgICAgcmVqZWN0KGUpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBjb25uZWN0V2l0aFJldHJ5QXN5bmMoKSB7XG4gICAgbGV0IG51bVJldHJpZXMgPSBNQVhfUkVUUllfQ09VTlQ7XG4gICAgd2hpbGUgKG51bVJldHJpZXMgPiAwKSB7XG4gICAgICBudW1SZXRyaWVzLS07XG4gICAgICBjb25zdCBzdGFydCA9IERhdGUubm93KCk7XG4gICAgICB0cnkge1xuICAgICAgICB0aGlzLmNvbm5lY3Rpb25TdGF0dXMkLm5leHQoQ29ubmVjdGlvblN0YXR1cy5Db25uZWN0aW5nKTtcbiAgICAgICAgY29uc3QgcmVzID0gYXdhaXQgdGhpcy5jb25uZWN0QXN5bmMoKTtcbiAgICAgICAgaWYgKHRoaXMuY29ubmVjdGlvblN0YXR1cyQuZ2V0VmFsdWUoKSA9PT0gQ29ubmVjdGlvblN0YXR1cy5FbmRlZCl7XG4gICAgICAgICAgY29uc29sZS53YXJuKCdDb25uZWN0aW9uIGVuZCcpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNvbnNvbGUud2FybihgUmV0cnlpbmcgY29ubmVjdGlvbiAke3Jlc31gKTtcbiAgICAgICAgaWYgKDYwMDAwIDwgRGF0ZS5ub3coKSAtIHN0YXJ0KSB7XG4gICAgICAgICAgLy8gcmVzZXQgdGhlIHJldHJ5IGNvdW50ZXIgYW5kIHJldHJ5IGltbWVkaWF0ZWx5XG4gICAgICAgICAgLy8gaWYgdGhlIGNvbm5lY3Rpb24gbGFzdGVkIGZvciBtb3JlIHRoYW4gYSBtaW51dGVcbiAgICAgICAgICBudW1SZXRyaWVzID0gTUFYX1JFVFJZX0NPVU5UO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihgRmFpbGVkIHRvIGNvbm5lY3QgJHtlcnJ9YCk7XG4gICAgICAgIHRocm93KGVycik7XG4gICAgICB9XG5cbiAgICAgIGF3YWl0IG5ldyBQcm9taXNlKHIgPT4gc2V0VGltZW91dChyLCB0aGlzLmdldFJldHJ5RGVsYXkoKSkpO1xuICAgIH1cbiAgfVxuXG4gIC8vIFJldHVybnMgdGhlIGRlbGF5IGR1cmF0aW9uIGluIG1pbGxpc2Vjb25kc1xuICBwcml2YXRlIGdldFJldHJ5RGVsYXkoKSB7XG4gICAgcmV0dXJuIE1hdGguZmxvb3IoMzAwMCArIE1hdGgucmFuZG9tKCkgKiAxMjAwMCk7XG4gIH1cbn1cbiJdfQ==","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = parseFilename;\n\nvar _toArray2 = _interopRequireDefault(require(\"@babel/runtime/helpers/toArray\"));\n\nfunction parseFilename(filename) {\n if (!filename) {\n return {\n extname: '',\n name: ''\n };\n } else if (~filename.indexOf('.')) {\n var _filename$split$rever = filename.split('.').reverse(),\n _filename$split$rever2 = (0, _toArray2[\"default\"])(_filename$split$rever),\n extensionWithoutDot = _filename$split$rever2[0],\n nameSegments = _filename$split$rever2.slice(1);\n\n return {\n extname: '.' + extensionWithoutDot,\n name: nameSegments.reverse().join('.')\n };\n } else {\n return {\n extname: '',\n name: filename\n };\n }\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9wYXJzZUZpbGVuYW1lLmpzIl0sIm5hbWVzIjpbInBhcnNlRmlsZW5hbWUiLCJmaWxlbmFtZSIsImV4dG5hbWUiLCJuYW1lIiwiaW5kZXhPZiIsInNwbGl0IiwicmV2ZXJzZSIsImV4dGVuc2lvbldpdGhvdXREb3QiLCJuYW1lU2VnbWVudHMiLCJqb2luIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFlLFNBQVNBLGFBQVQsQ0FBdUJDLFFBQXZCLEVBQWlDO0FBQzVDLE1BQUksQ0FBQ0EsUUFBTCxFQUFlO0FBQ1gsV0FBTztBQUNIQyxNQUFBQSxPQUFPLEVBQUUsRUFETjtBQUVIQyxNQUFBQSxJQUFJLEVBQUU7QUFGSCxLQUFQO0FBSUgsR0FMRCxNQUtPLElBQUksQ0FBQ0YsUUFBUSxDQUFDRyxPQUFULENBQWlCLEdBQWpCLENBQUwsRUFBNEI7QUFDL0IsZ0NBQStDSCxRQUFRLENBQUNJLEtBQVQsQ0FBZSxHQUFmLEVBQW9CQyxPQUFwQixFQUEvQztBQUFBO0FBQUEsUUFBT0MsbUJBQVA7QUFBQSxRQUErQkMsWUFBL0I7O0FBRUEsV0FBTztBQUNITixNQUFBQSxPQUFPLEVBQUUsTUFBTUssbUJBRFo7QUFFSEosTUFBQUEsSUFBSSxFQUFFSyxZQUFZLENBQUNGLE9BQWIsR0FBdUJHLElBQXZCLENBQTRCLEdBQTVCO0FBRkgsS0FBUDtBQUlILEdBUE0sTUFPQTtBQUNILFdBQU87QUFDSFAsTUFBQUEsT0FBTyxFQUFFLEVBRE47QUFFSEMsTUFBQUEsSUFBSSxFQUFFRjtBQUZILEtBQVA7QUFJSDtBQUNKIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gcGFyc2VGaWxlbmFtZShmaWxlbmFtZSkge1xuICAgIGlmICghZmlsZW5hbWUpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGV4dG5hbWU6ICcnLFxuICAgICAgICAgICAgbmFtZTogJydcbiAgICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKH5maWxlbmFtZS5pbmRleE9mKCcuJykpIHtcbiAgICAgICAgY29uc3QgW2V4dGVuc2lvbldpdGhvdXREb3QsIC4uLm5hbWVTZWdtZW50c10gPSBmaWxlbmFtZS5zcGxpdCgnLicpLnJldmVyc2UoKTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZXh0bmFtZTogJy4nICsgZXh0ZW5zaW9uV2l0aG91dERvdCxcbiAgICAgICAgICAgIG5hbWU6IG5hbWVTZWdtZW50cy5yZXZlcnNlKCkuam9pbignLicpXG4gICAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGV4dG5hbWU6ICcnLFxuICAgICAgICAgICAgbmFtZTogZmlsZW5hbWVcbiAgICAgICAgfTtcbiAgICB9XG59XG4iXX0=","(function(f){if(typeof exports===\"object\"&&typeof module!==\"undefined\"){module.exports=f()}else if(typeof define===\"function\"&&define.amd){define([],f)}else{var g;if(typeof window!==\"undefined\"){g=window}else if(typeof global!==\"undefined\"){g=global}else if(typeof self!==\"undefined\"){g=self}else{g=this}g.BFSE = f()}})(function(){var define,module,exports;return (function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c=\"function\"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error(\"Cannot find module '\"+i+\"'\");throw a.code=\"MODULE_NOT_FOUND\",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u=\"function\"==typeof require&&require,i=0;i 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PayloadAssembler = void 0;\nvar subscribableStream_1 = require(\"../subscribableStream\");\nvar payloads_1 = require(\"../payloads\");\nvar contentStream_1 = require(\"../contentStream\");\n/**\n * Assembles payloads for streaming library.\n *\n * @internal\n */\nvar PayloadAssembler = /** @class */ (function () {\n /**\n * Initializes a new instance of the [PayloadAssembler](xref:botframework-streaming.PayloadAssembler) class.\n *\n * @param streamManager The [StreamManager](xref:botframework-streaming.StreamManager) managing the stream being assembled.\n * @param params Parameters for a streaming assembler.\n */\n function PayloadAssembler(streamManager, params) {\n this.streamManager = streamManager;\n this._byteOrderMark = 0xfeff;\n this._utf = 'utf8';\n if (params.header) {\n this.id = params.header.id;\n this.payloadType = params.header.payloadType;\n this.contentLength = params.header.payloadLength;\n this.end = params.header.end;\n }\n else {\n this.id = params.id;\n }\n if (!this.id) {\n throw Error('An ID must be supplied when creating an assembler.');\n }\n this._onCompleted = params.onCompleted;\n }\n /**\n * Retrieves the assembler's payload as a stream.\n *\n * @returns A [SubscribableStream](xref:botframework-streaming.SubscribableStream) of the assembler's payload.\n */\n PayloadAssembler.prototype.getPayloadStream = function () {\n if (!this.stream) {\n this.stream = this.createPayloadStream();\n }\n return this.stream;\n };\n /**\n * The action the assembler executes when new bytes are received on the incoming stream.\n *\n * @param header The stream's Header.\n * @param stream The incoming stream being assembled.\n * @param _contentLength The length of the stream, if finite.\n */\n PayloadAssembler.prototype.onReceive = function (header, stream, _contentLength) {\n this.end = header.end;\n if (header.payloadType === payloads_1.PayloadTypes.response || header.payloadType === payloads_1.PayloadTypes.request) {\n this.process(stream).then().catch();\n }\n else if (header.end) {\n stream.end();\n }\n };\n /**\n * Closes the assembler.\n */\n PayloadAssembler.prototype.close = function () {\n this.streamManager.closeStream(this.id);\n };\n /**\n * Creates a new [SubscribableStream](xref:botframework-streaming.SubscribableStream) instance.\n *\n * @returns The new stream ready for consumption.\n */\n PayloadAssembler.prototype.createPayloadStream = function () {\n return new subscribableStream_1.SubscribableStream();\n };\n PayloadAssembler.prototype.payloadFromJson = function (json) {\n return JSON.parse(json.charCodeAt(0) === this._byteOrderMark ? json.slice(1) : json);\n };\n PayloadAssembler.prototype.stripBOM = function (input) {\n return input.charCodeAt(0) === this._byteOrderMark ? input.slice(1) : input;\n };\n PayloadAssembler.prototype.process = function (stream) {\n return __awaiter(this, void 0, void 0, function () {\n var streamData, streamDataAsString;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n streamData = stream.read(stream.length);\n if (!streamData) {\n return [2 /*return*/];\n }\n streamDataAsString = streamData.toString(this._utf);\n if (!(this.payloadType === payloads_1.PayloadTypes.request)) return [3 /*break*/, 2];\n return [4 /*yield*/, this.processRequest(streamDataAsString)];\n case 1:\n _a.sent();\n return [3 /*break*/, 4];\n case 2:\n if (!(this.payloadType === payloads_1.PayloadTypes.response)) return [3 /*break*/, 4];\n return [4 /*yield*/, this.processResponse(streamDataAsString)];\n case 3:\n _a.sent();\n _a.label = 4;\n case 4: return [2 /*return*/];\n }\n });\n });\n };\n PayloadAssembler.prototype.processResponse = function (streamDataAsString) {\n return __awaiter(this, void 0, void 0, function () {\n var responsePayload, receiveResponse;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n responsePayload = this.payloadFromJson(this.stripBOM(streamDataAsString));\n receiveResponse = { streams: [], statusCode: responsePayload.statusCode };\n return [4 /*yield*/, this.processStreams(responsePayload, receiveResponse)];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n PayloadAssembler.prototype.processRequest = function (streamDataAsString) {\n return __awaiter(this, void 0, void 0, function () {\n var requestPayload, receiveRequest;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n requestPayload = this.payloadFromJson(streamDataAsString);\n receiveRequest = { streams: [], path: requestPayload.path, verb: requestPayload.verb };\n return [4 /*yield*/, this.processStreams(requestPayload, receiveRequest)];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n PayloadAssembler.prototype.processStreams = function (responsePayload, receiveResponse) {\n var _a;\n return __awaiter(this, void 0, void 0, function () {\n var _this = this;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n (_a = responsePayload.streams) === null || _a === void 0 ? void 0 : _a.forEach(function (responseStream) {\n var _a;\n // There was a bug in how streams were handled. In .NET, the StreamDescription definiton mapped the\n // \"type\" JSON property to `contentType`, but in Typescript there was no mapping. This is a workaround\n // to resolve this inconsistency.\n //\n // .NET code:\n // https://github.com/microsoft/botbuilder-dotnet/blob/a79036ddf6625ec3fd68a6f7295886eb7831bc1c/libraries/Microsoft.Bot.Streaming/Payloads/Models/StreamDescription.cs#L28-L29\n var contentType = (_a = responseStream.type) !== null && _a !== void 0 ? _a : responseStream.contentType;\n var contentAssembler = _this.streamManager.getPayloadAssembler(responseStream.id);\n contentAssembler.payloadType = contentType;\n contentAssembler.contentLength = responseStream.length;\n receiveResponse.streams.push(new contentStream_1.ContentStream(responseStream.id, contentAssembler));\n });\n return [4 /*yield*/, this._onCompleted(this.id, receiveResponse)];\n case 1:\n _b.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n return PayloadAssembler;\n}());\nexports.PayloadAssembler = PayloadAssembler;\n\n},{\"../contentStream\":2,\"../payloads\":16,\"../subscribableStream\":27}],2:[function(require,module,exports){\n\"use strict\";\n/**\n * @module botframework-streaming\n */\n/**\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ContentStream = void 0;\n/**\n * A stream of fixed or infinite length containing content to be decoded.\n */\nvar ContentStream = /** @class */ (function () {\n /**\n * Initializes a new instance of the [ContentStream](xref:botframework-streaming.ContentStream) class.\n *\n * @param id The ID assigned to this instance.\n * @param assembler The [PayloadAssembler](xref:botframework-streaming.PayloadAssembler) assigned to this instance.\n */\n function ContentStream(id, assembler) {\n if (!assembler) {\n throw Error('Null Argument Exception');\n }\n this.id = id;\n this.assembler = assembler;\n }\n Object.defineProperty(ContentStream.prototype, \"contentType\", {\n /**\n * Gets the name of the type of the object contained within this [ContentStream](xref:botframework-streaming.ContentStream).\n *\n * @returns The [PayloadType](xref:botframework-streaming.PayloadType) of this [ContentStream](xref:botframework-streaming.ContentStream).\n */\n get: function () {\n return this.assembler.payloadType;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ContentStream.prototype, \"length\", {\n /**\n * Gets the length of this [ContentStream](xref:botframework-streaming.ContentStream).\n *\n * @returns A number representing the length of this [ContentStream](xref:botframework-streaming.ContentStream).\n */\n get: function () {\n return this.assembler.contentLength;\n },\n enumerable: false,\n configurable: true\n });\n /**\n * Gets the data contained within this [ContentStream](xref:botframework-streaming.ContentStream).\n *\n * @returns This [ContentStream's](xref:botframework-streaming.ContentStream) [SubscribableStream](xref:botframework-streaming.SubscribableStream).\n */\n ContentStream.prototype.getStream = function () {\n if (!this.stream) {\n this.stream = this.assembler.getPayloadStream();\n }\n return this.stream;\n };\n /**\n * Closes the assembler.\n */\n ContentStream.prototype.cancel = function () {\n this.assembler.close();\n };\n /**\n * Gets the [SubscribableStream](xref:botframework-streaming.SubscribableStream) content as a string.\n *\n * @returns A string Promise with [SubscribableStream](xref:botframework-streaming.SubscribableStream) content.\n */\n ContentStream.prototype.readAsString = function () {\n return __awaiter(this, void 0, void 0, function () {\n var bufferArray;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.readAll()];\n case 1:\n bufferArray = (_a.sent()).bufferArray;\n return [2 /*return*/, (bufferArray || []).map(function (result) { return result.toString('utf8'); }).join('')];\n }\n });\n });\n };\n /**\n * Gets the [SubscribableStream](xref:botframework-streaming.SubscribableStream) content as a typed JSON object.\n *\n * @returns A typed object Promise with `SubscribableStream` content.\n */\n ContentStream.prototype.readAsJson = function () {\n return __awaiter(this, void 0, void 0, function () {\n var stringToParse;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.readAsString()];\n case 1:\n stringToParse = _a.sent();\n return [2 /*return*/, JSON.parse(stringToParse)];\n }\n });\n });\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ContentStream.prototype.readAll = function () {\n return __awaiter(this, void 0, void 0, function () {\n var allData, count, stream, chunk, readToEnd;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n allData = [];\n count = 0;\n stream = this.getStream();\n // populate the array with any existing buffers\n while (count < stream.length) {\n chunk = stream.read(stream.length);\n allData.push(chunk);\n count += chunk.length;\n }\n if (!(count < this.length)) return [3 /*break*/, 2];\n readToEnd = new Promise(function (resolve) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var callback = function (cs) { return function (chunk) {\n allData.push(chunk);\n count += chunk.length;\n if (count === cs.length) {\n resolve(true);\n }\n }; };\n stream.subscribe(callback(_this));\n });\n return [4 /*yield*/, readToEnd];\n case 1:\n _a.sent();\n _a.label = 2;\n case 2: return [2 /*return*/, { bufferArray: allData, size: count }];\n }\n });\n });\n };\n return ContentStream;\n}());\nexports.ContentStream = ContentStream;\n\n},{}],3:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CancelDisassembler = void 0;\n/**\n * Streaming cancel disassembler.\n */\nvar CancelDisassembler = /** @class */ (function () {\n /**\n * Initializes a new instance of the [CancelDisassembler](xref:botframework-streaming.CancelDisassembler) class.\n *\n * @param sender The [PayloadSender](xref:botframework-streaming.PayloadSender) that this Cancel request will be sent by.\n * @param id The ID of the Stream to cancel.\n * @param payloadType The type of the Stream that is being cancelled.\n */\n function CancelDisassembler(sender, id, payloadType) {\n this.sender = sender;\n this.id = id;\n this.payloadType = payloadType;\n }\n /**\n * Initiates the process of disassembling the request and signals the [PayloadSender](xref:botframework-streaming.PayloadSender) to begin sending.\n */\n CancelDisassembler.prototype.disassemble = function () {\n var header = {\n payloadType: this.payloadType,\n payloadLength: 0,\n id: this.id,\n end: true,\n };\n this.sender.sendPayload(header);\n };\n return CancelDisassembler;\n}());\nexports.CancelDisassembler = CancelDisassembler;\n\n},{}],4:[function(require,module,exports){\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.HttpContentStreamDisassembler = void 0;\nvar payloadDisassembler_1 = require(\"./payloadDisassembler\");\nvar payloads_1 = require(\"../payloads\");\n/**\n * Disassembler for Http content stream\n */\nvar HttpContentStreamDisassembler = /** @class */ (function (_super) {\n __extends(HttpContentStreamDisassembler, _super);\n /**\n * Initializes a new instance of the [HttpContentStreamDisassembler](xref:botframework-streaming.HttpContentStreamDisassembler) class.\n *\n * @param sender The [PayloadSender](xref:botframework-streaming.PayloadSender) to send the disassembled data to.\n * @param contentStream The [HttpContentStream](xref:botframework-streaming.HttpContentStream) to be disassembled.\n */\n function HttpContentStreamDisassembler(sender, contentStream) {\n var _this = _super.call(this, sender, contentStream.id) || this;\n _this.payloadType = payloads_1.PayloadTypes.stream;\n _this.contentStream = contentStream;\n return _this;\n }\n /**\n * Gets the stream this disassembler is operating on.\n *\n * @returns An [IStreamWrapper](xref:botframework-streaming.IStreamWrapper) with a Subscribable Strea.\n */\n HttpContentStreamDisassembler.prototype.getStream = function () {\n return __awaiter(this, void 0, void 0, function () {\n var stream;\n return __generator(this, function (_a) {\n stream = this.contentStream.content.getStream();\n return [2 /*return*/, { stream: stream, streamLength: stream.length }];\n });\n });\n };\n return HttpContentStreamDisassembler;\n}(payloadDisassembler_1.PayloadDisassembler));\nexports.HttpContentStreamDisassembler = HttpContentStreamDisassembler;\n\n},{\"../payloads\":16,\"./payloadDisassembler\":5}],5:[function(require,module,exports){\n\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PayloadDisassembler = void 0;\nvar subscribableStream_1 = require(\"../subscribableStream\");\n/**\n * Base class streaming payload disassembling.\n */\nvar PayloadDisassembler = /** @class */ (function () {\n /**\n * Initializes a new instance of the [PayloadDisassembler](xref:botframework-streaming.PayloadDisassembler) class.\n *\n * @param sender The [PayloadSender](xref:botframework-streaming.PayloadSender) used to send the disassembled payload chunks.\n * @param id The ID of this disassembler.\n */\n function PayloadDisassembler(sender, id) {\n this.sender = sender;\n this.id = id;\n }\n /**\n * Serializes the item into the [IStreamWrapper](xref:botframework-streaming.IStreamWrapper) that exposes the stream and length of the result.\n *\n * @param item The item to be serialized.\n * @returns The stream containing the serialized item and the length of the stream.\n */\n PayloadDisassembler.serialize = function (item) {\n var stream = new subscribableStream_1.SubscribableStream();\n stream.write(JSON.stringify(item));\n stream.end();\n return { stream: stream, streamLength: stream.length };\n };\n /**\n * Begins the process of disassembling a payload and sending the resulting chunks to the [PayloadSender](xref:botframework-streaming.PayloadSender) to dispatch over the transport.\n *\n * @returns A completed Promise after the disassembled payload has been sent.\n */\n PayloadDisassembler.prototype.disassemble = function () {\n return __awaiter(this, void 0, void 0, function () {\n var _a, stream, streamLength;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0: return [4 /*yield*/, this.getStream()];\n case 1:\n _a = _b.sent(), stream = _a.stream, streamLength = _a.streamLength;\n this.stream = stream;\n this.streamLength = streamLength;\n return [2 /*return*/, this.send()];\n }\n });\n });\n };\n /**\n * Begins the process of disassembling a payload and signals the [PayloadSender](xref:botframework-streaming.PayloadSender).\n */\n PayloadDisassembler.prototype.send = function () {\n return __awaiter(this, void 0, void 0, function () {\n var header;\n return __generator(this, function (_a) {\n header = {\n payloadType: this.payloadType,\n payloadLength: this.streamLength,\n id: this.id,\n end: true,\n };\n this.sender.sendPayload(header, this.stream);\n return [2 /*return*/];\n });\n });\n };\n return PayloadDisassembler;\n}());\nexports.PayloadDisassembler = PayloadDisassembler;\n\n},{\"../subscribableStream\":27}],6:[function(require,module,exports){\n\"use strict\";\n/**\n * @module botframework-streaming\n */\n/**\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RequestDisassembler = void 0;\nvar payloadTypes_1 = require(\"../payloads/payloadTypes\");\nvar payloadDisassembler_1 = require(\"./payloadDisassembler\");\n/**\n * Streaming request disassembler.\n */\nvar RequestDisassembler = /** @class */ (function (_super) {\n __extends(RequestDisassembler, _super);\n /**\n * Initializes a new instance of the [RequestDisassembler](xref:botframework-streaming.RequestDisassembler) class.\n *\n * @param sender The [PayloadSender](xref:botframework-streaming.PayloadSender) to send the disassembled data to.\n * @param id The ID of this disassembler.\n * @param request The request to be disassembled.\n */\n function RequestDisassembler(sender, id, request) {\n var _this = _super.call(this, sender, id) || this;\n _this.request = request;\n _this.payloadType = payloadTypes_1.PayloadTypes.request;\n return _this;\n }\n /**\n * Gets the stream this disassembler is operating on.\n *\n * @returns An [IStreamWrapper](xref:botframework-streaming.IStreamWrapper) with a Subscribable Stream.\n */\n RequestDisassembler.prototype.getStream = function () {\n var _a, _b, _c, _d;\n return __awaiter(this, void 0, void 0, function () {\n var payload;\n return __generator(this, function (_e) {\n payload = { verb: (_a = this.request) === null || _a === void 0 ? void 0 : _a.verb, path: (_b = this.request) === null || _b === void 0 ? void 0 : _b.path, streams: [] };\n (_d = (_c = this.request) === null || _c === void 0 ? void 0 : _c.streams) === null || _d === void 0 ? void 0 : _d.forEach(function (stream) {\n payload.streams.push(stream.description);\n });\n return [2 /*return*/, payloadDisassembler_1.PayloadDisassembler.serialize(payload)];\n });\n });\n };\n return RequestDisassembler;\n}(payloadDisassembler_1.PayloadDisassembler));\nexports.RequestDisassembler = RequestDisassembler;\n\n},{\"../payloads/payloadTypes\":19,\"./payloadDisassembler\":5}],7:[function(require,module,exports){\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ResponseDisassembler = void 0;\n/**\n * @module botframework-streaming\n */\n/**\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\nvar payloadTypes_1 = require(\"../payloads/payloadTypes\");\nvar payloadDisassembler_1 = require(\"./payloadDisassembler\");\n/**\n * Streaming response disassembler.\n */\nvar ResponseDisassembler = /** @class */ (function (_super) {\n __extends(ResponseDisassembler, _super);\n /**\n * Initializes a new instance of the [ResponseDisassembler](xref:botframework-streaming.ResponseDisassembler) class.\n *\n * @param sender The [PayloadSender](xref:botframework-streaming.PayloadSender) to send the disassembled data to.\n * @param id The ID of this disassembler.\n * @param response The response to be disassembled.\n */\n function ResponseDisassembler(sender, id, response) {\n var _this = _super.call(this, sender, id) || this;\n _this.payloadType = payloadTypes_1.PayloadTypes.response;\n _this.response = response;\n return _this;\n }\n /**\n * Gets the stream this disassembler is operating on.\n *\n * @returns An [IStreamWrapper](xref:botframework-streaming.IStreamWrapper) with a Subscribable Stream.\n */\n ResponseDisassembler.prototype.getStream = function () {\n var _a;\n return __awaiter(this, void 0, void 0, function () {\n var payload;\n return __generator(this, function (_b) {\n payload = { statusCode: this.response.statusCode, streams: [] };\n (_a = this.response.streams) === null || _a === void 0 ? void 0 : _a.forEach(function (_a) {\n var description = _a.description;\n payload.streams.push({\n id: description.id,\n contentType: description.type,\n length: description.length,\n });\n });\n return [2 /*return*/, payloadDisassembler_1.PayloadDisassembler.serialize(payload)];\n });\n });\n };\n return ResponseDisassembler;\n}(payloadDisassembler_1.PayloadDisassembler));\nexports.ResponseDisassembler = ResponseDisassembler;\n\n},{\"../payloads/payloadTypes\":19,\"./payloadDisassembler\":5}],8:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.HttpContent = exports.HttpContentStream = void 0;\n/**\n * @module botframework-streaming\n */\n/**\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\nvar protocol_base_1 = require(\"./utilities/protocol-base\");\n/**\n * An attachment contained within a StreamingRequest's stream collection, which itself contains any form of media item.\n */\nvar HttpContentStream = /** @class */ (function () {\n /**\n * Initializes a new instance of the [HttpContentStream](xref:botframework-streaming.HttpContentStream) class.\n *\n * @param content The [HttpContent](xref:botframework-streaming.HttpContent) to assign to the [HttpContentStream](xref:botframework-streaming.HttpContentStream).\n */\n function HttpContentStream(content) {\n var _a, _b, _c, _d, _e, _f;\n this.content = content;\n this.id = protocol_base_1.generateGuid();\n this.description = {\n id: this.id,\n type: (_c = (_b = (_a = this.content) === null || _a === void 0 ? void 0 : _a.headers) === null || _b === void 0 ? void 0 : _b.type) !== null && _c !== void 0 ? _c : 'unknown',\n length: (_f = (_e = (_d = this.content) === null || _d === void 0 ? void 0 : _d.headers) === null || _e === void 0 ? void 0 : _e.contentLength) !== null && _f !== void 0 ? _f : 0,\n };\n }\n return HttpContentStream;\n}());\nexports.HttpContentStream = HttpContentStream;\n/**\n * The HttpContent class that contains a [SubscribableStream](xref:botframework-streaming.SubscribableStream).\n */\nvar HttpContent = /** @class */ (function () {\n /**\n * Initializes a new instance of the [HttpContent](xref:botframework-streaming.HttpContent) class.\n *\n * @param headers The Streaming Http content header definition.\n * @param stream The stream of buffered data.\n */\n function HttpContent(headers, stream) {\n this.headers = headers;\n this.stream = stream;\n }\n /**\n * Gets the data contained within this [HttpContent](xref:botframework-streaming.HttpContent).\n *\n * @returns This [HttpContent's](xref:botframework-streaming.HttpContent) [SubscribableStream](xref:botframework-streaming.SubscribableStream) member.\n */\n HttpContent.prototype.getStream = function () {\n return this.stream;\n };\n return HttpContent;\n}());\nexports.HttpContent = HttpContent;\n\n},{\"./utilities/protocol-base\":28}],9:[function(require,module,exports){\n\"use strict\";\n/**\n * @module botframework-streaming\n */\n/**\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.WebSocketClient = exports.BrowserWebSocket = exports.SubscribableStream = exports.StreamingResponse = exports.StreamingRequest = exports.RequestHandler = exports.HttpContent = exports.ContentStream = void 0;\nvar contentStream_1 = require(\"./contentStream\");\nObject.defineProperty(exports, \"ContentStream\", { enumerable: true, get: function () { return contentStream_1.ContentStream; } });\nvar httpContentStream_1 = require(\"./httpContentStream\");\nObject.defineProperty(exports, \"HttpContent\", { enumerable: true, get: function () { return httpContentStream_1.HttpContent; } });\nvar requestHandler_1 = require(\"./requestHandler\");\nObject.defineProperty(exports, \"RequestHandler\", { enumerable: true, get: function () { return requestHandler_1.RequestHandler; } });\nvar streamingRequest_1 = require(\"./streamingRequest\");\nObject.defineProperty(exports, \"StreamingRequest\", { enumerable: true, get: function () { return streamingRequest_1.StreamingRequest; } });\nvar streamingResponse_1 = require(\"./streamingResponse\");\nObject.defineProperty(exports, \"StreamingResponse\", { enumerable: true, get: function () { return streamingResponse_1.StreamingResponse; } });\nvar subscribableStream_1 = require(\"./subscribableStream\");\nObject.defineProperty(exports, \"SubscribableStream\", { enumerable: true, get: function () { return subscribableStream_1.SubscribableStream; } });\nvar index_browser_1 = require(\"./webSocket/index-browser\");\nObject.defineProperty(exports, \"BrowserWebSocket\", { enumerable: true, get: function () { return index_browser_1.BrowserWebSocket; } });\nObject.defineProperty(exports, \"WebSocketClient\", { enumerable: true, get: function () { return index_browser_1.WebSocketClient; } });\n\n},{\"./contentStream\":2,\"./httpContentStream\":8,\"./requestHandler\":24,\"./streamingRequest\":25,\"./streamingResponse\":26,\"./subscribableStream\":27,\"./webSocket/index-browser\":31}],10:[function(require,module,exports){\n\"use strict\";\n/**\n * @module botframework-streaming\n */\n/**\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./payloadReceiver\"), exports);\n__exportStar(require(\"./payloadSender\"), exports);\n__exportStar(require(\"./transportDisconnectedEvent\"), exports);\n__exportStar(require(\"./transportDisconnectedEventHandler\"), exports);\n\n},{\"./payloadReceiver\":11,\"./payloadSender\":12,\"./transportDisconnectedEvent\":13,\"./transportDisconnectedEventHandler\":14}],11:[function(require,module,exports){\n\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PayloadReceiver = void 0;\nvar payloadTypes_1 = require(\"../payloads/payloadTypes\");\nvar headerSerializer_1 = require(\"../payloads/headerSerializer\");\nvar payloadConstants_1 = require(\"../payloads/payloadConstants\");\nvar transportDisconnectedEvent_1 = require(\"./transportDisconnectedEvent\");\n/**\n * Payload receiver for streaming.\n */\nvar PayloadReceiver = /** @class */ (function () {\n function PayloadReceiver() {\n }\n Object.defineProperty(PayloadReceiver.prototype, \"isConnected\", {\n /**\n * Get current connected state\n *\n * @returns true if connected to a transport sender.\n */\n get: function () {\n return this._receiver != null;\n },\n enumerable: false,\n configurable: true\n });\n /**\n * Connects to a transport receiver\n *\n * @param receiver The [ITransportReceiver](xref:botframework-streaming.ITransportReceiver) object to pull incoming data from.\n * @returns a promise that resolves when the receiver is complete\n */\n PayloadReceiver.prototype.connect = function (receiver) {\n this._receiver = receiver;\n return this.receivePackets();\n };\n /**\n * Allows subscribing to this receiver in order to be notified when new data comes in.\n *\n * @param getStream Callback when a new stream has been received.\n * @param receiveAction Callback when a new message has been received.\n */\n PayloadReceiver.prototype.subscribe = function (getStream, receiveAction) {\n this._getStream = getStream;\n this._receiveAction = receiveAction;\n };\n /**\n * Force this receiver to disconnect.\n *\n * @param event Event arguments to include when broadcasting disconnection event.\n */\n PayloadReceiver.prototype.disconnect = function (event) {\n var _a, _b;\n if (event === void 0) { event = transportDisconnectedEvent_1.TransportDisconnectedEvent.Empty; }\n if (!this.isConnected) {\n return;\n }\n try {\n this._receiver.close();\n (_a = this.disconnected) === null || _a === void 0 ? void 0 : _a.call(this, this, event);\n }\n catch (err) {\n (_b = this.disconnected) === null || _b === void 0 ? void 0 : _b.call(this, this, new transportDisconnectedEvent_1.TransportDisconnectedEvent(err.message));\n }\n finally {\n this._receiver = null;\n }\n };\n PayloadReceiver.prototype.receivePackets = function () {\n return __awaiter(this, void 0, void 0, function () {\n var readSoFar, _a, header, isStream, bytesActuallyRead, contentStream, count, _b, err_1;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n if (!this.isConnected) return [3 /*break*/, 11];\n _c.label = 1;\n case 1:\n _c.trys.push([1, 9, , 10]);\n readSoFar = 0;\n _c.label = 2;\n case 2:\n if (!(readSoFar < payloadConstants_1.PayloadConstants.MaxHeaderLength)) return [3 /*break*/, 4];\n _a = this;\n return [4 /*yield*/, this._receiver.receive(payloadConstants_1.PayloadConstants.MaxHeaderLength - readSoFar)];\n case 3:\n _a._receiveHeaderBuffer = _c.sent();\n if (this._receiveHeaderBuffer) {\n readSoFar += this._receiveHeaderBuffer.length;\n }\n return [3 /*break*/, 2];\n case 4:\n header = headerSerializer_1.HeaderSerializer.deserialize(this._receiveHeaderBuffer);\n isStream = header.payloadType === payloadTypes_1.PayloadTypes.stream;\n if (!(header.payloadLength > 0)) return [3 /*break*/, 8];\n bytesActuallyRead = 0;\n contentStream = this._getStream(header);\n _c.label = 5;\n case 5:\n if (!(bytesActuallyRead < header.payloadLength &&\n bytesActuallyRead < payloadConstants_1.PayloadConstants.MaxPayloadLength)) return [3 /*break*/, 7];\n count = Math.min(header.payloadLength - bytesActuallyRead, payloadConstants_1.PayloadConstants.MaxPayloadLength);\n _b = this;\n return [4 /*yield*/, this._receiver.receive(count)];\n case 6:\n _b._receivePayloadBuffer = _c.sent();\n bytesActuallyRead += this._receivePayloadBuffer.byteLength;\n contentStream.write(this._receivePayloadBuffer);\n // If this is a stream we want to keep handing it up as it comes in\n if (isStream) {\n this._receiveAction(header, contentStream, bytesActuallyRead);\n }\n return [3 /*break*/, 5];\n case 7:\n if (!isStream) {\n this._receiveAction(header, contentStream, bytesActuallyRead);\n }\n _c.label = 8;\n case 8: return [3 /*break*/, 10];\n case 9:\n err_1 = _c.sent();\n this.disconnect(new transportDisconnectedEvent_1.TransportDisconnectedEvent(err_1.message));\n return [3 /*break*/, 10];\n case 10: return [3 /*break*/, 0];\n case 11: return [2 /*return*/];\n }\n });\n });\n };\n return PayloadReceiver;\n}());\nexports.PayloadReceiver = PayloadReceiver;\n\n},{\"../payloads/headerSerializer\":15,\"../payloads/payloadConstants\":18,\"../payloads/payloadTypes\":19,\"./transportDisconnectedEvent\":13}],12:[function(require,module,exports){\n(function (Buffer){(function (){\n\"use strict\";\n/**\n * @module botframework-streaming\n */\n/**\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PayloadSender = void 0;\nvar headerSerializer_1 = require(\"../payloads/headerSerializer\");\nvar payloadConstants_1 = require(\"../payloads/payloadConstants\");\nvar transportDisconnectedEvent_1 = require(\"./transportDisconnectedEvent\");\n/**\n * Streaming payload sender.\n */\nvar PayloadSender = /** @class */ (function () {\n function PayloadSender() {\n }\n Object.defineProperty(PayloadSender.prototype, \"isConnected\", {\n /**\n * Get current connected state\n *\n * @returns true if connected to a transport sender.\n */\n get: function () {\n return this._sender != null;\n },\n enumerable: false,\n configurable: true\n });\n /**\n * Connects to the given transport sender.\n *\n * @param sender The transport sender to connect this payload sender to.\n */\n PayloadSender.prototype.connect = function (sender) {\n this._sender = sender;\n };\n /**\n * Sends a payload out over the connected transport sender.\n *\n * @param header The header to attach to the outgoing payload.\n * @param payload The stream of buffered data to send.\n * @param sentCallback The function to execute when the send has completed.\n */\n PayloadSender.prototype.sendPayload = function (header, payload, sentCallback) {\n var packet = { header: header, payload: payload, sentCallback: sentCallback };\n this.writePacket(packet);\n };\n /**\n * Disconnects this payload sender.\n *\n * @param event The disconnected event arguments to include in the disconnected event broadcast.\n */\n PayloadSender.prototype.disconnect = function (event) {\n var _a, _b;\n if (event === void 0) { event = transportDisconnectedEvent_1.TransportDisconnectedEvent.Empty; }\n if (!this.isConnected) {\n return;\n }\n try {\n this._sender.close();\n (_a = this.disconnected) === null || _a === void 0 ? void 0 : _a.call(this, this, event);\n }\n catch (err) {\n (_b = this.disconnected) === null || _b === void 0 ? void 0 : _b.call(this, this, new transportDisconnectedEvent_1.TransportDisconnectedEvent(err.message));\n }\n finally {\n this._sender = null;\n }\n };\n PayloadSender.prototype.writePacket = function (packet) {\n try {\n if (packet.header.payloadLength > 0 && packet.payload) {\n var leftOver = packet.header.payloadLength;\n while (leftOver > 0) {\n var count = leftOver <= payloadConstants_1.PayloadConstants.MaxPayloadLength ? leftOver : payloadConstants_1.PayloadConstants.MaxPayloadLength;\n var chunk = packet.payload.read(count);\n var header = packet.header;\n header.payloadLength = count;\n header.end = leftOver <= payloadConstants_1.PayloadConstants.MaxPayloadLength;\n var sendHeaderBuffer = Buffer.alloc(payloadConstants_1.PayloadConstants.MaxHeaderLength);\n headerSerializer_1.HeaderSerializer.serialize(header, sendHeaderBuffer);\n this._sender.send(sendHeaderBuffer);\n this._sender.send(chunk);\n leftOver -= chunk.length;\n }\n if (packet.sentCallback) {\n packet.sentCallback();\n }\n }\n }\n catch (err) {\n this.disconnect(new transportDisconnectedEvent_1.TransportDisconnectedEvent(err.message));\n }\n };\n return PayloadSender;\n}());\nexports.PayloadSender = PayloadSender;\n\n}).call(this)}).call(this,require(\"buffer\").Buffer)\n\n},{\"../payloads/headerSerializer\":15,\"../payloads/payloadConstants\":18,\"./transportDisconnectedEvent\":13,\"buffer\":35}],13:[function(require,module,exports){\n\"use strict\";\n/**\n * @module botframework-streaming\n */\n/**\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TransportDisconnectedEvent = void 0;\n/**\n * Event to be included when disconnection events are fired.\n */\nvar TransportDisconnectedEvent = /** @class */ (function () {\n /**\n * Indicates a transport disconnected with the reason provided via the constructor.\n *\n * @remarks\n * This class is used for communicating disconnection events between the\n * PayloadReceiver and PayloadSender.\n * @param reason The reason the disconnection event fired, in plain text.\n */\n function TransportDisconnectedEvent(reason) {\n this.reason = reason;\n }\n /**\n * A new and empty TransportDisconnectedEvent.\n */\n TransportDisconnectedEvent.Empty = new TransportDisconnectedEvent();\n return TransportDisconnectedEvent;\n}());\nexports.TransportDisconnectedEvent = TransportDisconnectedEvent;\n\n},{}],14:[function(require,module,exports){\n\"use strict\";\n/**\n * @module botframework-streaming\n */\n/**\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n},{}],15:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.HeaderSerializer = void 0;\nvar payloadConstants_1 = require(\"./payloadConstants\");\n/**\n * Streaming header serializer\n */\nvar HeaderSerializer = /** @class */ (function () {\n function HeaderSerializer() {\n }\n /**\n * Serializes the header into a buffer\n *\n * @param header The header to serialize.\n * @param buffer The buffer into which to serialize the header.\n */\n HeaderSerializer.serialize = function (header, buffer) {\n buffer.write(header.payloadType, this.TypeOffset, 1, this.Encoding);\n buffer.write(this.Delimiter, this.TypeDelimiterOffset, 1, this.Encoding);\n buffer.write(this.headerLengthPadder(header.payloadLength, this.LengthLength, '0'), this.LengthOffset, this.LengthLength, this.Encoding);\n buffer.write(this.Delimiter, this.LengthDelimeterOffset, 1, this.Encoding);\n buffer.write(header.id, this.IdOffset);\n buffer.write(this.Delimiter, this.IdDelimeterOffset, 1, this.Encoding);\n buffer.write(header.end ? this.End : this.NotEnd, this.EndOffset);\n buffer.write(this.Terminator, this.TerminatorOffset);\n };\n /**\n * Deserializes a buffer containing header information.\n *\n * @param buffer The buffer from which to obtain the data to deserialize.\n * @returns The deserialized header from the buffer.\n */\n HeaderSerializer.deserialize = function (buffer) {\n var jsonBuffer = buffer.toString(this.Encoding);\n var headerArray = jsonBuffer.split(this.Delimiter);\n if (headerArray.length !== 4) {\n throw Error(\"Cannot parse header, header is malformed. Header: \" + jsonBuffer);\n }\n var payloadType = headerArray[0], length = headerArray[1], id = headerArray[2], headerEnd = headerArray[3];\n var end = headerEnd === '1\\n';\n var payloadLength = Number(length);\n var header = { end: end, payloadLength: payloadLength, payloadType: payloadType, id: id };\n if (!(header.payloadLength <= payloadConstants_1.PayloadConstants.MaxPayloadLength &&\n header.payloadLength >= payloadConstants_1.PayloadConstants.MinLength)) {\n throw Error(\"Header length of \" + header.payloadLength + \" is missing or malformed\");\n }\n if (header.payloadType.length !== this.TypeDelimiterOffset) {\n throw Error(\"Header type '\" + header.payloadType.length + \"' is missing or malformed.\");\n }\n if (!header.id ||\n !header.id.match(/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i) ||\n header.id.length !== this.IdLength) {\n throw Error(\"Header ID '\" + header.id + \"' is missing or malformed.\");\n }\n if (!(headerEnd === '0\\n' || headerEnd === '1\\n')) {\n throw Error(\"Header End is missing or not a valid value. Header end: '\" + headerEnd + \"'\");\n }\n return header;\n };\n /**\n * Creates a padded string based on a length and character to be padded to.\n *\n * @param lengthValue The value to be assingned on the result.\n * @param totalLength The length of the padded string result.\n * @param padChar The character value to use as filling.\n * @returns The padded string.\n */\n HeaderSerializer.headerLengthPadder = function (lengthValue, totalLength, padChar) {\n var result = Array(totalLength + 1).join(padChar);\n var lengthString = lengthValue.toString();\n return (result + lengthString).slice(lengthString.length);\n };\n HeaderSerializer.Delimiter = '.';\n HeaderSerializer.Terminator = '\\n';\n HeaderSerializer.End = '1';\n HeaderSerializer.NotEnd = '0';\n HeaderSerializer.TypeOffset = 0;\n HeaderSerializer.TypeDelimiterOffset = 1;\n HeaderSerializer.LengthOffset = 2;\n HeaderSerializer.LengthLength = 6;\n HeaderSerializer.LengthDelimeterOffset = 8;\n HeaderSerializer.IdOffset = 9;\n HeaderSerializer.IdLength = 36;\n HeaderSerializer.IdDelimeterOffset = 45;\n HeaderSerializer.EndOffset = 46;\n HeaderSerializer.TerminatorOffset = 47;\n HeaderSerializer.Encoding = 'utf8';\n return HeaderSerializer;\n}());\nexports.HeaderSerializer = HeaderSerializer;\n\n},{\"./payloadConstants\":18}],16:[function(require,module,exports){\n\"use strict\";\n/**\n * @module botframework-streaming\n */\n/**\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./headerSerializer\"), exports);\n__exportStar(require(\"./streamManager\"), exports);\n__exportStar(require(\"./payloadAssemblerManager\"), exports);\n__exportStar(require(\"./payloadTypes\"), exports);\n__exportStar(require(\"./requestManager\"), exports);\n__exportStar(require(\"./sendOperations\"), exports);\n__exportStar(require(\"./streamManager\"), exports);\n\n},{\"./headerSerializer\":15,\"./payloadAssemblerManager\":17,\"./payloadTypes\":19,\"./requestManager\":20,\"./sendOperations\":21,\"./streamManager\":22}],17:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PayloadAssemblerManager = void 0;\nvar payloadAssembler_1 = require(\"../assemblers/payloadAssembler\");\nvar payloadTypes_1 = require(\"./payloadTypes\");\n/**\n * Orchestrates assembly of payloads.\n */\nvar PayloadAssemblerManager = /** @class */ (function () {\n /**\n * Initializes a new instance of the [PayloadAssemblerManager](xref:botframework-streaming.PayloadAssemblerManager) class.\n *\n * @param streamManager The [StreamManager](xref:botframework-streaming.StreamManager) managing the stream being assembled.\n * @param onReceiveResponse Function that executes when new bytes are received on a `response` stream.\n * @param onReceiveRequest Function that executes when new bytes are received on a `request` stream.\n */\n function PayloadAssemblerManager(streamManager, onReceiveResponse, onReceiveRequest) {\n this.streamManager = streamManager;\n this.onReceiveResponse = onReceiveResponse;\n this.onReceiveRequest = onReceiveRequest;\n this.activeAssemblers = {};\n }\n /**\n * Retrieves the assembler's payload as a stream.\n *\n * @param header The Header of the Stream to retrieve.\n * @returns A [SubscribableStream](xref:botframework-streaming.SubscribableStream) of the assembler's payload.\n */\n PayloadAssemblerManager.prototype.getPayloadStream = function (header) {\n if (header.payloadType === payloadTypes_1.PayloadTypes.stream) {\n return this.streamManager.getPayloadStream(header);\n }\n else if (!this.activeAssemblers[header.id]) {\n var assembler = this.createPayloadAssembler(header);\n if (assembler) {\n this.activeAssemblers[header.id] = assembler;\n return assembler.getPayloadStream();\n }\n }\n };\n /**\n * The action the assembler executes when new bytes are received on the incoming stream.\n *\n * @param header The stream's Header.\n * @param contentStream The incoming stream being assembled.\n * @param contentLength The length of the stream, if finite.\n */\n PayloadAssemblerManager.prototype.onReceive = function (header, contentStream, contentLength) {\n if (header.payloadType === payloadTypes_1.PayloadTypes.stream) {\n this.streamManager.onReceive(header, contentStream, contentLength);\n }\n else {\n if (this.activeAssemblers && this.activeAssemblers[header.id]) {\n var assembler = this.activeAssemblers[header.id];\n assembler.onReceive(header, contentStream, contentLength);\n }\n if (header.end) {\n delete this.activeAssemblers[header.id];\n }\n }\n };\n PayloadAssemblerManager.prototype.createPayloadAssembler = function (header) {\n if (header.payloadType === payloadTypes_1.PayloadTypes.request) {\n return new payloadAssembler_1.PayloadAssembler(this.streamManager, {\n header: header,\n onCompleted: this.onReceiveRequest,\n });\n }\n else if (header.payloadType === payloadTypes_1.PayloadTypes.response) {\n return new payloadAssembler_1.PayloadAssembler(this.streamManager, {\n header: header,\n onCompleted: this.onReceiveResponse,\n });\n }\n };\n return PayloadAssemblerManager;\n}());\nexports.PayloadAssemblerManager = PayloadAssemblerManager;\n\n},{\"../assemblers/payloadAssembler\":1,\"./payloadTypes\":19}],18:[function(require,module,exports){\n\"use strict\";\n/**\n * @module botframework-streaming\n */\n/**\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PayloadConstants = void 0;\n/**\n * Constants for streaming payloads.\n */\nvar PayloadConstants;\n(function (PayloadConstants) {\n PayloadConstants[PayloadConstants[\"MaxPayloadLength\"] = 4096] = \"MaxPayloadLength\";\n PayloadConstants[PayloadConstants[\"MaxHeaderLength\"] = 48] = \"MaxHeaderLength\";\n PayloadConstants[PayloadConstants[\"MaxLength\"] = 999999] = \"MaxLength\";\n PayloadConstants[PayloadConstants[\"MinLength\"] = 0] = \"MinLength\";\n})(PayloadConstants = exports.PayloadConstants || (exports.PayloadConstants = {}));\n\n},{}],19:[function(require,module,exports){\n\"use strict\";\n/**\n * @module botframework-streaming\n */\n/**\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PayloadTypes = void 0;\n/**\n * Typess of payloads supported in the streaming library.\n */\nvar PayloadTypes;\n(function (PayloadTypes) {\n PayloadTypes[\"request\"] = \"A\";\n PayloadTypes[\"response\"] = \"B\";\n PayloadTypes[\"stream\"] = \"S\";\n PayloadTypes[\"cancelAll\"] = \"X\";\n PayloadTypes[\"cancelStream\"] = \"C\";\n})(PayloadTypes = exports.PayloadTypes || (exports.PayloadTypes = {}));\n\n},{}],20:[function(require,module,exports){\n\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RequestManager = void 0;\n/**\n * A streaming pending request.\n */\nvar PendingRequest = /** @class */ (function () {\n function PendingRequest() {\n }\n return PendingRequest;\n}());\n/**\n * Orchestrates and manages pending streaming requests.\n */\nvar RequestManager = /** @class */ (function () {\n function RequestManager() {\n this._pendingRequests = {};\n }\n /**\n * Gets the count of the pending requests.\n *\n * @returns Number with the pending requests count.\n */\n RequestManager.prototype.pendingRequestCount = function () {\n return Object.keys(this._pendingRequests).length;\n };\n /**\n * Signal fired when all response tasks have completed.\n *\n * @param requestId The ID of the StreamingRequest.\n * @param response The [IReceiveResponse](xref:botframework-streaming.IReceiveResponse) in response to the request.\n * @returns A Promise that when completed returns `true` if the `requestId`'s pending response task was completed, otherwise `false`.\n */\n RequestManager.prototype.signalResponse = function (requestId, response) {\n return __awaiter(this, void 0, void 0, function () {\n var pendingRequest;\n return __generator(this, function (_a) {\n pendingRequest = this._pendingRequests[requestId];\n if (pendingRequest) {\n pendingRequest.resolve(response);\n delete this._pendingRequests[requestId];\n return [2 /*return*/, true];\n }\n return [2 /*return*/, false];\n });\n });\n };\n /**\n * Constructs and returns a response for this request.\n *\n * @param requestId The ID of the StreamingRequest being responded to.\n * @returns The response to the specified request.\n */\n RequestManager.prototype.getResponse = function (requestId) {\n var pendingRequest = this._pendingRequests[requestId];\n if (pendingRequest) {\n return Promise.reject(\"requestId '\" + requestId + \"' already exists in RequestManager\");\n }\n pendingRequest = new PendingRequest();\n pendingRequest.requestId = requestId;\n var promise = new Promise(function (resolve, reject) {\n pendingRequest.resolve = resolve;\n pendingRequest.reject = reject;\n });\n this._pendingRequests[requestId] = pendingRequest;\n return promise;\n };\n return RequestManager;\n}());\nexports.RequestManager = RequestManager;\n\n},{}],21:[function(require,module,exports){\n\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SendOperations = void 0;\nvar cancelDisassembler_1 = require(\"../disassemblers/cancelDisassembler\");\nvar httpContentStreamDisassembler_1 = require(\"../disassemblers/httpContentStreamDisassembler\");\nvar requestDisassembler_1 = require(\"../disassemblers/requestDisassembler\");\nvar responseDisassembler_1 = require(\"../disassemblers/responseDisassembler\");\nvar payloadTypes_1 = require(\"./payloadTypes\");\n/**\n * Send operations for streaming payloads.\n */\nvar SendOperations = /** @class */ (function () {\n /**\n * Initializes a new instance of the [SendOperations](xref:botframework-streaming.SendOperations) class.\n *\n * @param payloadSender The [PayloadSender](xref:botframework-streaming.PayloadSender) that will send the disassembled data from all of this instance's send operations.\n */\n function SendOperations(payloadSender) {\n this.payloadSender = payloadSender;\n }\n /**\n * The send operation used to send a [StreamingRequest](xref:botframework-streaming.StreamingRequest).\n *\n * @param id The ID to assign to the [RequestDisassembler](xref:botframework-streaming.RequestDisassembler) used by this operation.\n * @param request The request to send.\n */\n SendOperations.prototype.sendRequest = function (id, request) {\n return __awaiter(this, void 0, void 0, function () {\n var disassembler;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n disassembler = new requestDisassembler_1.RequestDisassembler(this.payloadSender, id, request);\n return [4 /*yield*/, disassembler.disassemble()];\n case 1:\n _a.sent();\n if (request.streams) {\n request.streams.forEach(function (contentStream) { return __awaiter(_this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, new httpContentStreamDisassembler_1.HttpContentStreamDisassembler(this.payloadSender, contentStream).disassemble()];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n }); });\n }\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * The send operation used to send a [PayloadTypes.response](xref:botframework-streaming.PayloadTypes.response).\n *\n * @param id The ID to assign to the [ResponseDisassembler](xref:botframework-streaming.ResponseDisassembler) used by this operation.\n * @param response The response to send.\n */\n SendOperations.prototype.sendResponse = function (id, response) {\n return __awaiter(this, void 0, void 0, function () {\n var disassembler;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n disassembler = new responseDisassembler_1.ResponseDisassembler(this.payloadSender, id, response);\n return [4 /*yield*/, disassembler.disassemble()];\n case 1:\n _a.sent();\n if (response.streams) {\n response.streams.forEach(function (contentStream) { return __awaiter(_this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, new httpContentStreamDisassembler_1.HttpContentStreamDisassembler(this.payloadSender, contentStream).disassemble()];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n }); });\n }\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * The send operation used to send a [PayloadTypes.cancelStream](xref:botframework-streaming.PayloadTypes.cancelStream).\n *\n * @param id The ID to assign to the [CancelDisassembler](xref:botframework-streaming.CancelDisassembler) used by this operation.\n */\n SendOperations.prototype.sendCancelStream = function (id) {\n return __awaiter(this, void 0, void 0, function () {\n var disassembler;\n return __generator(this, function (_a) {\n disassembler = new cancelDisassembler_1.CancelDisassembler(this.payloadSender, id, payloadTypes_1.PayloadTypes.cancelStream);\n disassembler.disassemble();\n return [2 /*return*/];\n });\n });\n };\n return SendOperations;\n}());\nexports.SendOperations = SendOperations;\n\n},{\"../disassemblers/cancelDisassembler\":3,\"../disassemblers/httpContentStreamDisassembler\":4,\"../disassemblers/requestDisassembler\":6,\"../disassemblers/responseDisassembler\":7,\"./payloadTypes\":19}],22:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.StreamManager = void 0;\nvar payloadAssembler_1 = require(\"../assemblers/payloadAssembler\");\n/**\n * Orchestrates and manages streams.\n */\nvar StreamManager = /** @class */ (function () {\n /**\n * Initializes a new instance of the [StreamManager](xref:botframework-streaming.StreamManager) class.\n *\n * @param onCancelStream Function to trigger if the managed stream is cancelled.\n */\n function StreamManager(onCancelStream) {\n this.onCancelStream = onCancelStream;\n this.activeAssemblers = [];\n }\n /**\n * Retrieves a [PayloadAssembler](xref:botframework-streaming.PayloadAssembler) with the given ID if one exists, otherwise a new instance is created and assigned the given ID.\n *\n * @param id The ID of the [PayloadAssembler](xref:botframework-streaming.PayloadAssembler) to retrieve or create.\n * @returns The [PayloadAssembler](xref:botframework-streaming.PayloadAssembler) with the given ID.\n */\n StreamManager.prototype.getPayloadAssembler = function (id) {\n if (!this.activeAssemblers[id]) {\n // A new id has come in, kick off the process of tracking it.\n var assembler = new payloadAssembler_1.PayloadAssembler(this, { id: id });\n this.activeAssemblers[id] = assembler;\n return assembler;\n }\n else {\n return this.activeAssemblers[id];\n }\n };\n /**\n * Retrieves the [SubscribableStream](xref:botframework-streaming.SubscribableStream) from the [PayloadAssembler](xref:botframework-streaming.PayloadAssembler) this manager manages.\n *\n * @param header The Header of the [SubscribableStream](xref:botframework-streaming.SubscribableStream) to retrieve.\n * @returns The [SubscribableStream](xref:botframework-streaming.SubscribableStream) with the given header.\n */\n StreamManager.prototype.getPayloadStream = function (header) {\n var assembler = this.getPayloadAssembler(header.id);\n return assembler.getPayloadStream();\n };\n /**\n * Used to set the behavior of the managed [PayloadAssembler](xref:botframework-streaming.PayloadAssembler) when data is received.\n *\n * @param header The Header of the stream.\n * @param contentStream The [SubscribableStream](xref:botframework-streaming.SubscribableStream) to write incoming data to.\n * @param contentLength The amount of data to write to the contentStream.\n */\n StreamManager.prototype.onReceive = function (header, contentStream, contentLength) {\n if (!this.activeAssemblers[header.id]) {\n return;\n }\n this.activeAssemblers[header.id].onReceive(header, contentStream, contentLength);\n };\n /**\n * Closes the [PayloadAssembler](xref:botframework-streaming.PayloadAssembler) assigned to the [SubscribableStream](xref:botframework-streaming.SubscribableStream) with the given ID.\n *\n * @param id The ID of the [SubscribableStream](xref:botframework-streaming.SubscribableStream) to close.\n */\n StreamManager.prototype.closeStream = function (id) {\n if (!this.activeAssemblers[id]) {\n return;\n }\n else {\n var assembler = this.activeAssemblers[id];\n this.activeAssemblers.splice(this.activeAssemblers.indexOf(id), 1);\n var targetStream = assembler.getPayloadStream();\n if ((assembler.contentLength && targetStream.length < assembler.contentLength) || !assembler.end) {\n this.onCancelStream(assembler);\n }\n }\n };\n return StreamManager;\n}());\nexports.StreamManager = StreamManager;\n\n},{\"../assemblers/payloadAssembler\":1}],23:[function(require,module,exports){\n\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ProtocolAdapter = void 0;\nvar payloadAssemblerManager_1 = require(\"./payloads/payloadAssemblerManager\");\nvar sendOperations_1 = require(\"./payloads/sendOperations\");\nvar streamManager_1 = require(\"./payloads/streamManager\");\nvar protocol_base_1 = require(\"./utilities/protocol-base\");\n/**\n * Creates a protocol adapter for Streaming.\n */\nvar ProtocolAdapter = /** @class */ (function () {\n /**\n * Creates a new instance of the protocol adapter class.\n *\n * @param requestHandler The [RequestHandler](xref:botframework-streaming.RequestHandler) that will process incoming requests.\n * @param requestManager The [RequestManager](xref:botframework-streaming.RequestManager) that will process outgoing requests.\n * @param sender The [PayloadSender](xref:botframework-streaming.PayloadSender) for use with outgoing requests.\n * @param receiver The [PayloadReceiver](xref:botframework-streaming.PayloadReceiver) for use with incoming requests.\n */\n function ProtocolAdapter(requestHandler, requestManager, sender, receiver) {\n var _this = this;\n this.requestHandler = requestHandler;\n this.requestManager = requestManager;\n this.payloadSender = sender;\n this.payloadReceiver = receiver;\n this.sendOperations = new sendOperations_1.SendOperations(this.payloadSender);\n this.streamManager = new streamManager_1.StreamManager(this.onCancelStream);\n this.assemblerManager = new payloadAssemblerManager_1.PayloadAssemblerManager(this.streamManager, function (id, response) { return _this.onReceiveResponse(id, response); }, function (id, request) { return _this.onReceiveRequest(id, request); });\n this.payloadReceiver.subscribe(function (header) { return _this.assemblerManager.getPayloadStream(header); }, function (header, contentStream, contentLength) {\n return _this.assemblerManager.onReceive(header, contentStream, contentLength);\n });\n }\n /**\n * Sends a request over the attached request manager.\n *\n * @param request The outgoing request to send.\n * @returns The response to the specified request.\n */\n ProtocolAdapter.prototype.sendRequest = function (request) {\n return __awaiter(this, void 0, void 0, function () {\n var requestId;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n requestId = protocol_base_1.generateGuid();\n return [4 /*yield*/, this.sendOperations.sendRequest(requestId, request)];\n case 1:\n _a.sent();\n return [2 /*return*/, this.requestManager.getResponse(requestId)];\n }\n });\n });\n };\n /**\n * Executes the receive pipeline when a request comes in.\n *\n * @param id The id the resources created for the response will be assigned.\n * @param request The incoming request to process.\n */\n ProtocolAdapter.prototype.onReceiveRequest = function (id, request) {\n return __awaiter(this, void 0, void 0, function () {\n var response;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!this.requestHandler) return [3 /*break*/, 3];\n return [4 /*yield*/, this.requestHandler.processRequest(request)];\n case 1:\n response = _a.sent();\n if (!response) return [3 /*break*/, 3];\n return [4 /*yield*/, this.sendOperations.sendResponse(id, response)];\n case 2:\n _a.sent();\n _a.label = 3;\n case 3: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Executes the receive pipeline when a response comes in.\n *\n * @param id The id the resources created for the response will be assigned.\n * @param response The incoming response to process.\n */\n ProtocolAdapter.prototype.onReceiveResponse = function (id, response) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.requestManager.signalResponse(id, response)];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Executes the receive pipeline when a cancellation comes in.\n *\n * @param contentStreamAssembler The payload assembler processing the incoming data that this cancellation request targets.\n */\n ProtocolAdapter.prototype.onCancelStream = function (contentStreamAssembler) {\n this.sendOperations.sendCancelStream(contentStreamAssembler.id).catch();\n };\n return ProtocolAdapter;\n}());\nexports.ProtocolAdapter = ProtocolAdapter;\n\n},{\"./payloads/payloadAssemblerManager\":17,\"./payloads/sendOperations\":21,\"./payloads/streamManager\":22,\"./utilities/protocol-base\":28}],24:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RequestHandler = void 0;\n/**\n * Implemented by classes used to process incoming streaming requests sent over an [IStreamingTransport](xref:botframework-streaming.IStreamingTransport).\n */\nvar RequestHandler = /** @class */ (function () {\n function RequestHandler() {\n }\n return RequestHandler;\n}());\nexports.RequestHandler = RequestHandler;\n\n},{}],25:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.StreamingRequest = void 0;\n/**\n * @module botframework-streaming\n */\n/**\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\nvar httpContentStream_1 = require(\"./httpContentStream\");\nvar subscribableStream_1 = require(\"./subscribableStream\");\n/**\n * The basic request type sent over Bot Framework Protocol 3 with Streaming Extensions transports, equivalent to HTTP request messages.\n */\nvar StreamingRequest = /** @class */ (function () {\n function StreamingRequest() {\n /**\n * List of associated streams.\n */\n this.streams = [];\n }\n /**\n * Creates a streaming request with the passed in method, path, and body.\n *\n * @param method The HTTP verb to use for this request.\n * @param path Optional path where the resource can be found on the remote server.\n * @param body Optional body to send to the remote server.\n * @returns On success returns a streaming request with appropriate status code and body.\n */\n StreamingRequest.create = function (method, path, body) {\n var request = new StreamingRequest();\n request.verb = method;\n request.path = path;\n if (body) {\n request.setBody(body);\n }\n return request;\n };\n /**\n * Adds a new stream attachment to this streaming request.\n *\n * @param content The Http content to include in the new stream attachment.\n */\n StreamingRequest.prototype.addStream = function (content) {\n if (!content) {\n throw new Error('Argument Undefined Exception: content undefined.');\n }\n this.streams.push(new httpContentStream_1.HttpContentStream(content));\n };\n /**\n * Sets the contents of the body of this streamingRequest.\n *\n * @param body The JSON text to write to the body of the streamingRequest.\n */\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types, @typescript-eslint/no-explicit-any\n StreamingRequest.prototype.setBody = function (body) {\n if (typeof body === 'string') {\n var stream = new subscribableStream_1.SubscribableStream();\n stream.write(body, 'utf8');\n this.addStream(new httpContentStream_1.HttpContent({\n type: 'application/json; charset=utf-8',\n contentLength: stream.length,\n }, stream));\n }\n else if (typeof body === 'object') {\n this.addStream(body);\n }\n };\n return StreamingRequest;\n}());\nexports.StreamingRequest = StreamingRequest;\n\n},{\"./httpContentStream\":8,\"./subscribableStream\":27}],26:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.StreamingResponse = void 0;\n/**\n * @module botframework-streaming\n */\n/**\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\nvar httpContentStream_1 = require(\"./httpContentStream\");\nvar subscribableStream_1 = require(\"./subscribableStream\");\n/**\n * The basic response type sent over Bot Framework Protocol 3 with Streaming Extensions transports, equivalent to HTTP response messages.\n */\nvar StreamingResponse = /** @class */ (function () {\n function StreamingResponse() {\n this.streams = [];\n }\n /**\n * Creates a streaming response with the passed in method, path, and body.\n *\n * @param statusCode The HTTP verb to use for this request.\n * @param body Optional body containing additional information.\n * @returns A streaming response with the appropriate statuscode and passed in body.\n */\n StreamingResponse.create = function (statusCode, body) {\n var response = new StreamingResponse();\n response.statusCode = statusCode;\n if (body) {\n response.addStream(body);\n }\n return response;\n };\n /**\n * Adds a new stream attachment to this streaming request.\n *\n * @param content The Http content to include in the new stream attachment.\n */\n StreamingResponse.prototype.addStream = function (content) {\n this.streams.push(new httpContentStream_1.HttpContentStream(content));\n };\n /**\n * Sets the contents of the body of this streaming response.\n *\n * @param body The JSON text to write to the body of the streaming response.\n */\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types, @typescript-eslint/no-explicit-any\n StreamingResponse.prototype.setBody = function (body) {\n var stream = new subscribableStream_1.SubscribableStream();\n stream.write(JSON.stringify(body), 'utf8');\n this.addStream(new httpContentStream_1.HttpContent({\n type: 'application/json; charset=utf-8',\n contentLength: stream.length,\n }, stream));\n };\n return StreamingResponse;\n}());\nexports.StreamingResponse = StreamingResponse;\n\n},{\"./httpContentStream\":8,\"./subscribableStream\":27}],27:[function(require,module,exports){\n(function (Buffer){(function (){\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SubscribableStream = void 0;\n/**\n * @module botframework-streaming\n */\n/**\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\nvar stream_1 = require(\"stream\");\n/**\n * An extension of `Duplex` that operates in conjunction with a `PayloadAssembler` to convert raw bytes into a consumable form.\n */\nvar SubscribableStream = /** @class */ (function (_super) {\n __extends(SubscribableStream, _super);\n /**\n * Initializes a new instance of the [SubscribableStream](xref:botframework-streaming.SubscribableStream) class.\n *\n * @param options The `DuplexOptions` to use when constructing this stream.\n */\n function SubscribableStream(options) {\n var _this = _super.call(this, options) || this;\n _this.length = 0;\n _this.bufferList = [];\n return _this;\n }\n /**\n * Writes data to the buffered list.\n * All calls to writable.write() that occur between the time writable._write() is called and the callback is called will cause the written data to be buffered.\n *\n * @param chunk The Buffer to be written.\n * @param _encoding The encoding. Unused in the implementation of Duplex.\n * @param callback Callback for when this chunk of data is flushed.\n */\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types, @typescript-eslint/no-explicit-any\n SubscribableStream.prototype._write = function (chunk, _encoding, callback) {\n var buffer = Buffer.from(chunk);\n this.bufferList.push(buffer);\n this.length += chunk.length;\n if (this._onData) {\n this._onData(buffer);\n }\n callback();\n };\n /**\n * Reads the buffered list.\n * Once the readable._read() method has been called, it will not be called again until more data is pushed through the readable.push() method.\n * Empty data such as empty buffers and strings will not cause readable._read() to be called.\n *\n * @param size Number of bytes to read.\n */\n SubscribableStream.prototype._read = function (size) {\n if (this.bufferList.length === 0) {\n // null signals end of stream\n this.push(null);\n }\n else {\n var total = 0;\n while (total < size && this.bufferList.length > 0) {\n var buffer = this.bufferList[0];\n this.push(buffer);\n this.bufferList.splice(0, 1);\n total += buffer.length;\n }\n }\n };\n /**\n * Subscribes to the stream when receives data.\n *\n * @param onData Callback to be called when onData is executed.\n */\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types, @typescript-eslint/no-explicit-any\n SubscribableStream.prototype.subscribe = function (onData) {\n this._onData = onData;\n };\n return SubscribableStream;\n}(stream_1.Duplex));\nexports.SubscribableStream = SubscribableStream;\n\n}).call(this)}).call(this,require(\"buffer\").Buffer)\n\n},{\"buffer\":35,\"stream\":41}],28:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.generateGuid = void 0;\n/**\n * @module botframework-streaming\n */\n/**\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\nvar uuid_1 = require(\"uuid\");\n/**\n * Generates an uuid v4 string.\n *\n * @returns An uuidv4 string.\n */\nfunction generateGuid() {\n return uuid_1.v4();\n}\nexports.generateGuid = generateGuid;\n\n},{\"uuid\":58}],29:[function(require,module,exports){\n\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BrowserWebSocket = void 0;\n/**\n * Represents a WebSocket that implements [ISocket](xref:botframework-streaming.ISocket).\n */\nvar BrowserWebSocket = /** @class */ (function () {\n /**\n * Creates a new instance of the [BrowserWebSocket](xref:botframework-streaming.BrowserWebSocket) class.\n *\n * @param socket The socket object to build this connection on.\n */\n function BrowserWebSocket(socket) {\n if (socket) {\n this.webSocket = socket;\n }\n }\n /**\n * Connects to the supporting socket using WebSocket protocol.\n *\n * @param serverAddress The address the server is listening on.\n * @returns A Promise that resolves the websocket is open and rejects if an error is encountered.\n */\n BrowserWebSocket.prototype.connect = function (serverAddress) {\n return __awaiter(this, void 0, void 0, function () {\n var resolver, rejector;\n return __generator(this, function (_a) {\n if (!this.webSocket) {\n this.webSocket = new WebSocket(serverAddress);\n }\n this.webSocket.onerror = function (e) {\n rejector(e);\n };\n this.webSocket.onopen = function (e) {\n resolver(e);\n };\n return [2 /*return*/, new Promise(function (resolve, reject) {\n resolver = resolve;\n rejector = reject;\n })];\n });\n });\n };\n Object.defineProperty(BrowserWebSocket.prototype, \"isConnected\", {\n /**\n * Indicates if the [BrowserWebSocket's](xref:botframework-streaming.BrowserWebSocket) underlying websocket is currently connected.\n *\n * @returns `true` if the underlying websocket is ready and availble to send messages, otherwise `false`.\n */\n get: function () {\n return this.webSocket.readyState === 1;\n },\n enumerable: false,\n configurable: true\n });\n /**\n * Writes a buffer to the socket and sends it.\n *\n * @param buffer The buffer of data to send across the connection.\n */\n BrowserWebSocket.prototype.write = function (buffer) {\n this.webSocket.send(buffer);\n };\n /**\n * Close the socket.\n */\n BrowserWebSocket.prototype.close = function () {\n this.webSocket.close();\n };\n /**\n * Set the handler for text and binary messages received on the socket.\n *\n * @param handler The callback to handle the \"message\" event.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n BrowserWebSocket.prototype.setOnMessageHandler = function (handler) {\n var bufferKey = 'buffer';\n var packets = [];\n this.webSocket.onmessage = function (evt) {\n var fileReader = new FileReader();\n var queueEntry = { buffer: null };\n packets.push(queueEntry);\n fileReader.onload = function (e) {\n var t = e.target;\n queueEntry[bufferKey] = t.result;\n if (packets[0] === queueEntry) {\n while (0 < packets.length && packets[0][bufferKey]) {\n handler(packets[0][bufferKey]);\n packets.splice(0, 1);\n }\n }\n };\n fileReader.readAsArrayBuffer(evt.data);\n };\n };\n /**\n * Set the callback to call when encountering errors.\n *\n * @param handler The callback to handle the \"error\" event.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n BrowserWebSocket.prototype.setOnErrorHandler = function (handler) {\n this.webSocket.onerror = function (error) {\n if (error) {\n handler(error);\n }\n };\n };\n /**\n * Set the callback to call when encountering socket closures.\n *\n * @param handler The callback to handle the \"close\" event.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n BrowserWebSocket.prototype.setOnCloseHandler = function (handler) {\n this.webSocket.onclose = handler;\n };\n return BrowserWebSocket;\n}());\nexports.BrowserWebSocket = BrowserWebSocket;\n\n},{}],30:[function(require,module,exports){\n\"use strict\";\n/**\n * @module botframework-streaming\n */\n/**\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.WebSocketClient = void 0;\nvar browserWebSocket_1 = require(\"./browserWebSocket\");\nvar payloadTransport_1 = require(\"../payloadTransport\");\nvar protocolAdapter_1 = require(\"../protocolAdapter\");\nvar payloads_1 = require(\"../payloads\");\nvar webSocketTransport_1 = require(\"./webSocketTransport\");\n/**\n * Web socket based client to be used as streaming transport.\n */\nvar WebSocketClient = /** @class */ (function () {\n /**\n * Creates a new instance of the [WebSocketClient](xref:botframework-streaming.WebSocketClient) class.\n *\n * @param config For configuring a [WebSocketClient](xref:botframework-streaming.WebSocketClient) instance to communicate with a WebSocket server.\n * @param config.url The URL of the remote server to connect to.\n * @param config.requestHandler The [RequestHandler](xref:botframework-streaming.RequestHandler) used to process incoming messages received by this client.\n * @param config.disconnectionHandler Optional function to handle the disconnection message.\n */\n function WebSocketClient(_a) {\n var url = _a.url, requestHandler = _a.requestHandler, _b = _a.disconnectionHandler, disconnectionHandler = _b === void 0 ? null : _b;\n this._url = url;\n this._requestHandler = requestHandler;\n this._disconnectionHandler = disconnectionHandler;\n this._requestManager = new payloads_1.RequestManager();\n this._sender = new payloadTransport_1.PayloadSender();\n this._sender.disconnected = this.onConnectionDisconnected.bind(this);\n this._receiver = new payloadTransport_1.PayloadReceiver();\n this._receiver.disconnected = this.onConnectionDisconnected.bind(this);\n this._protocolAdapter = new protocolAdapter_1.ProtocolAdapter(this._requestHandler, this._requestManager, this._sender, this._receiver);\n }\n /**\n * Establish a connection with no custom headers.\n *\n * @returns A promise that will not resolve until the client stops listening for incoming messages.\n */\n WebSocketClient.prototype.connect = function () {\n return __awaiter(this, void 0, void 0, function () {\n var ws, transport;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n ws = new browserWebSocket_1.BrowserWebSocket();\n return [4 /*yield*/, ws.connect(this._url)];\n case 1:\n _a.sent();\n transport = new webSocketTransport_1.WebSocketTransport(ws);\n this._sender.connect(transport);\n this._receiver.connect(transport);\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Stop this client from listening.\n */\n WebSocketClient.prototype.disconnect = function () {\n this._sender.disconnect(new payloadTransport_1.TransportDisconnectedEvent('Disconnect was called.'));\n this._receiver.disconnect(new payloadTransport_1.TransportDisconnectedEvent('Disconnect was called.'));\n };\n /**\n * Task used to send data over this client connection.\n *\n * @param request The streaming request to send.\n * @returns A promise that will produce an instance of receive response on completion of the send operation.\n */\n WebSocketClient.prototype.send = function (request) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, this._protocolAdapter.sendRequest(request)];\n });\n });\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n WebSocketClient.prototype.onConnectionDisconnected = function (sender, args) {\n if (this._disconnectionHandler != null) {\n this._disconnectionHandler('Disconnected');\n return;\n }\n throw new Error(\"Unable to re-connect client to transport for url \" + this._url + \". Sender: '\" + JSON.stringify(sender) + \"'. Args:' \" + JSON.stringify(args));\n };\n return WebSocketClient;\n}());\nexports.WebSocketClient = WebSocketClient;\n\n},{\"../payloadTransport\":10,\"../payloads\":16,\"../protocolAdapter\":23,\"./browserWebSocket\":29,\"./webSocketTransport\":32}],31:[function(require,module,exports){\n\"use strict\";\n/**\n * @module botframework-streaming\n */\n/**\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.WebSocketTransport = exports.WebSocketClient = exports.BrowserWebSocket = void 0;\nvar browserWebSocket_1 = require(\"./browserWebSocket\");\nObject.defineProperty(exports, \"BrowserWebSocket\", { enumerable: true, get: function () { return browserWebSocket_1.BrowserWebSocket; } });\nvar browserWebSocketClient_1 = require(\"./browserWebSocketClient\");\nObject.defineProperty(exports, \"WebSocketClient\", { enumerable: true, get: function () { return browserWebSocketClient_1.WebSocketClient; } });\n/** @internal */\nvar webSocketTransport_1 = require(\"./webSocketTransport\");\nObject.defineProperty(exports, \"WebSocketTransport\", { enumerable: true, get: function () { return webSocketTransport_1.WebSocketTransport; } });\n\n},{\"./browserWebSocket\":29,\"./browserWebSocketClient\":30,\"./webSocketTransport\":32}],32:[function(require,module,exports){\n(function (Buffer){(function (){\n\"use strict\";\n/**\n * @module botframework-streaming\n */\n/**\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.WebSocketTransport = void 0;\n/**\n * Web socket based transport.\n */\nvar WebSocketTransport = /** @class */ (function () {\n /**\n * Creates a new instance of the [WebSocketTransport](xref:botframework-streaming.WebSocketTransport) class.\n *\n * @param ws The ISocket to build this transport on top of.\n */\n function WebSocketTransport(ws) {\n var _this = this;\n this.ws = ws;\n this._queue = [];\n this._activeOffset = 0;\n this._activeReceiveCount = 0;\n this.ws.setOnMessageHandler(function (data) {\n _this.onReceive(data);\n });\n this.ws.setOnErrorHandler(function (err) {\n _this.onError(err);\n });\n this.ws.setOnCloseHandler(function () {\n _this.onClose();\n });\n }\n /**\n * Sends the given buffer out over the socket's connection.\n *\n * @param buffer The buffered data to send out over the connection.\n * @returns A number indicating the length of the sent data if the data was successfully sent, otherwise 0.\n */\n WebSocketTransport.prototype.send = function (buffer) {\n var _a;\n if ((_a = this.ws) === null || _a === void 0 ? void 0 : _a.isConnected) {\n this.ws.write(buffer);\n return buffer.length;\n }\n return 0;\n };\n Object.defineProperty(WebSocketTransport.prototype, \"isConnected\", {\n /**\n * Returns true if the transport is connected to a socket.\n *\n * @returns `true` if the the transport is connected and ready to send data, `false` otherwise.\n */\n get: function () {\n var _a;\n return (_a = this.ws) === null || _a === void 0 ? void 0 : _a.isConnected;\n },\n enumerable: false,\n configurable: true\n });\n /**\n * Close the socket this transport is connected to.\n */\n WebSocketTransport.prototype.close = function () {\n var _a;\n if ((_a = this.ws) === null || _a === void 0 ? void 0 : _a.isConnected) {\n this.ws.close();\n }\n };\n /**\n * Attempt to receive incoming data from the connected socket.\n *\n * @param count The number of bytes to attempt to receive.\n * @returns A buffer populated with the received data.\n */\n WebSocketTransport.prototype.receive = function (count) {\n return __awaiter(this, void 0, void 0, function () {\n var promise;\n var _this = this;\n return __generator(this, function (_a) {\n if (this._activeReceiveResolve) {\n throw new Error('Cannot call receive more than once before it has returned.');\n }\n this._activeReceiveCount = count;\n promise = new Promise(function (resolve, reject) {\n _this._activeReceiveResolve = resolve;\n _this._activeReceiveReject = reject;\n });\n this.trySignalData();\n return [2 /*return*/, promise];\n });\n });\n };\n /**\n * Sets the transport to attempt to receive incoming data that has not yet arrived.\n *\n * @param data A buffer to store incoming data in.\n */\n WebSocketTransport.prototype.onReceive = function (data) {\n if (this._queue && data && data.byteLength > 0) {\n this._queue.push(Buffer.from(data));\n this.trySignalData();\n }\n };\n WebSocketTransport.prototype.onClose = function () {\n if (this._activeReceiveReject) {\n this._activeReceiveReject(new Error('Socket was closed.'));\n }\n this._active = null;\n this._activeOffset = 0;\n this._activeReceiveResolve = null;\n this._activeReceiveReject = null;\n this._activeReceiveCount = 0;\n this.ws = null;\n };\n WebSocketTransport.prototype.onError = function (err) {\n if (this._activeReceiveReject) {\n this._activeReceiveReject(err);\n }\n this.onClose();\n };\n WebSocketTransport.prototype.trySignalData = function () {\n if (this._activeReceiveResolve) {\n if (!this._active && this._queue.length > 0) {\n this._active = this._queue.shift();\n this._activeOffset = 0;\n }\n if (this._active) {\n if (this._activeOffset === 0 && this._active.length === this._activeReceiveCount) {\n // can send the entire _active buffer\n var buffer = this._active;\n this._active = null;\n this._activeReceiveResolve(buffer);\n }\n else {\n // create a Buffer.from and copy some of the contents into it\n var available = Math.min(this._activeReceiveCount, this._active.length - this._activeOffset);\n var buffer = Buffer.alloc(available);\n this._active.copy(buffer, 0, this._activeOffset, this._activeOffset + available);\n this._activeOffset += available;\n // if we used all of active, set it to undefined\n if (this._activeOffset >= this._active.length) {\n this._active = null;\n this._activeOffset = 0;\n }\n this._activeReceiveResolve(buffer);\n }\n this._activeReceiveCount = 0;\n this._activeReceiveReject = null;\n this._activeReceiveResolve = null;\n }\n }\n };\n return WebSocketTransport;\n}());\nexports.WebSocketTransport = WebSocketTransport;\n\n}).call(this)}).call(this,require(\"buffer\").Buffer)\n\n},{\"buffer\":35}],33:[function(require,module,exports){\n'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(\n uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)\n ))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n\n},{}],34:[function(require,module,exports){\n\n},{}],35:[function(require,module,exports){\n(function (Buffer){(function (){\n/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\nvar K_MAX_LENGTH = 0x7fffffff\nexports.kMaxLength = K_MAX_LENGTH\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Print warning and recommend using `buffer` v4.x which has an Object\n * implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * We report that the browser does not support typed arrays if the are not subclassable\n * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n * for __proto__ and has a buggy typed array implementation.\n */\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport()\n\nif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n typeof console.error === 'function') {\n console.error(\n 'This browser lacks typed array (Uint8Array) support which is required by ' +\n '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n )\n}\n\nfunction typedArraySupport () {\n // Can typed array instances can be augmented?\n try {\n var arr = new Uint8Array(1)\n arr.__proto__ = { __proto__: Uint8Array.prototype, foo: function () { return 42 } }\n return arr.foo() === 42\n } catch (e) {\n return false\n }\n}\n\nObject.defineProperty(Buffer.prototype, 'parent', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.buffer\n }\n})\n\nObject.defineProperty(Buffer.prototype, 'offset', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.byteOffset\n }\n})\n\nfunction createBuffer (length) {\n if (length > K_MAX_LENGTH) {\n throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"')\n }\n // Return an augmented `Uint8Array` instance\n var buf = new Uint8Array(length)\n buf.__proto__ = Buffer.prototype\n return buf\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new TypeError(\n 'The \"string\" argument must be of type string. Received type number'\n )\n }\n return allocUnsafe(arg)\n }\n return from(arg, encodingOrOffset, length)\n}\n\n// Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\nif (typeof Symbol !== 'undefined' && Symbol.species != null &&\n Buffer[Symbol.species] === Buffer) {\n Object.defineProperty(Buffer, Symbol.species, {\n value: null,\n configurable: true,\n enumerable: false,\n writable: false\n })\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\nfunction from (value, encodingOrOffset, length) {\n if (typeof value === 'string') {\n return fromString(value, encodingOrOffset)\n }\n\n if (ArrayBuffer.isView(value)) {\n return fromArrayLike(value)\n }\n\n if (value == null) {\n throw TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n }\n\n if (isInstance(value, ArrayBuffer) ||\n (value && isInstance(value.buffer, ArrayBuffer))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof value === 'number') {\n throw new TypeError(\n 'The \"value\" argument must not be of type number. Received type number'\n )\n }\n\n var valueOf = value.valueOf && value.valueOf()\n if (valueOf != null && valueOf !== value) {\n return Buffer.from(valueOf, encodingOrOffset, length)\n }\n\n var b = fromObject(value)\n if (b) return b\n\n if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\n typeof value[Symbol.toPrimitive] === 'function') {\n return Buffer.from(\n value[Symbol.toPrimitive]('string'), encodingOrOffset, length\n )\n }\n\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(value, encodingOrOffset, length)\n}\n\n// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n// https://github.com/feross/buffer/pull/148\nBuffer.prototype.__proto__ = Uint8Array.prototype\nBuffer.__proto__ = Uint8Array\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be of type number')\n } else if (size < 0) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n}\n\nfunction alloc (size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpretted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(size).fill(fill, encoding)\n : createBuffer(size).fill(fill)\n }\n return createBuffer(size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(size, fill, encoding)\n}\n\nfunction allocUnsafe (size) {\n assertSize(size)\n return createBuffer(size < 0 ? 0 : checked(size) | 0)\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(size)\n}\n\nfunction fromString (string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n\n var length = byteLength(string, encoding) | 0\n var buf = createBuffer(length)\n\n var actual = buf.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n buf = buf.slice(0, actual)\n }\n\n return buf\n}\n\nfunction fromArrayLike (array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0\n var buf = createBuffer(length)\n for (var i = 0; i < length; i += 1) {\n buf[i] = array[i] & 255\n }\n return buf\n}\n\nfunction fromArrayBuffer (array, byteOffset, length) {\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\"offset\" is outside of buffer bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\"length\" is outside of buffer bounds')\n }\n\n var buf\n if (byteOffset === undefined && length === undefined) {\n buf = new Uint8Array(array)\n } else if (length === undefined) {\n buf = new Uint8Array(array, byteOffset)\n } else {\n buf = new Uint8Array(array, byteOffset, length)\n }\n\n // Return an augmented `Uint8Array` instance\n buf.__proto__ = Buffer.prototype\n return buf\n}\n\nfunction fromObject (obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0\n var buf = createBuffer(len)\n\n if (buf.length === 0) {\n return buf\n }\n\n obj.copy(buf, 0, 0, len)\n return buf\n }\n\n if (obj.length !== undefined) {\n if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n return createBuffer(0)\n }\n return fromArrayLike(obj)\n }\n\n if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n return fromArrayLike(obj.data)\n }\n}\n\nfunction checked (length) {\n // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= K_MAX_LENGTH) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return b != null && b._isBuffer === true &&\n b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\n}\n\nBuffer.compare = function compare (a, b) {\n if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength)\n if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength)\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError(\n 'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n )\n }\n\n if (a === b) return 0\n\n var x = a.length\n var y = b.length\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!Array.isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n var i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n var buffer = Buffer.allocUnsafe(length)\n var pos = 0\n for (i = 0; i < list.length; ++i) {\n var buf = list[i]\n if (isInstance(buf, Uint8Array)) {\n buf = Buffer.from(buf)\n }\n if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n buf.copy(buffer, pos)\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n throw new TypeError(\n 'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\n 'Received type ' + typeof string\n )\n }\n\n var len = string.length\n var mustMatch = (arguments.length > 2 && arguments[2] === true)\n if (!mustMatch && len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) {\n return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\n }\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n// reliably in a browserify context because there could be multiple different\n// copies of the 'buffer' package in use. This method works even for Buffer\n// instances that were created from another copy of the `buffer` package.\n// See: https://github.com/feross/buffer/issues/154\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n var i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n var len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n var len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n var len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n var length = this.length\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.toLocaleString = Buffer.prototype.toString\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n var str = ''\n var max = exports.INSPECT_MAX_BYTES\n str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim()\n if (this.length > max) str += ' ... '\n return ''\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (isInstance(target, Uint8Array)) {\n target = Buffer.from(target, target.offset, target.byteLength)\n }\n if (!Buffer.isBuffer(target)) {\n throw new TypeError(\n 'The \"target\" argument must be one of type Buffer or Uint8Array. ' +\n 'Received type ' + (typeof target)\n )\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n var x = thisEnd - thisStart\n var y = end - start\n var len = Math.min(x, y)\n\n var thisCopy = this.slice(thisStart, thisEnd)\n var targetCopy = target.slice(start, end)\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (numberIsNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n var indexSize = 1\n var arrLength = arr.length\n var valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n var i\n if (dir) {\n var foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n var found = true\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n var remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n var strLen = string.length\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16)\n if (numberIsNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction latin1Write (buf, string, offset, length) {\n return asciiWrite(buf, string, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset >>> 0\n if (isFinite(length)) {\n length = length >>> 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n var remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n return asciiWrite(this, string, offset, length)\n\n case 'latin1':\n case 'binary':\n return latin1Write(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n var res = []\n\n var i = start\n while (i < end) {\n var firstByte = buf[i]\n var codePoint = null\n var bytesPerSequence = (firstByte > 0xEF) ? 4\n : (firstByte > 0xDF) ? 3\n : (firstByte > 0xBF) ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = ''\n var i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n var out = ''\n for (var i = start; i < end; ++i) {\n out += toHex(buf[i])\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end)\n var res = ''\n for (var i = 0; i < bytes.length; i += 2) {\n res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n var newBuf = this.subarray(start, end)\n // Return an augmented `Uint8Array` instance\n newBuf.__proto__ = Buffer.prototype\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n var val = this[offset + --byteLength]\n var mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var i = byteLength\n var mul = 1\n var val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var mul = 1\n var i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var i = byteLength - 1\n var mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n var limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = 0\n var mul = 1\n var sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n var limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = byteLength - 1\n var mul = 1\n var sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('Index out of range')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n var len = end - start\n\n if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {\n // Use built-in when available, missing from IE11\n this.copyWithin(targetStart, start, end)\n } else if (this === target && start < targetStart && targetStart < end) {\n // descending copy from end\n for (var i = len - 1; i >= 0; --i) {\n target[i + targetStart] = this[i + start]\n }\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, end),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0)\n if ((encoding === 'utf8' && code < 128) ||\n encoding === 'latin1') {\n // Fast path: If `val` fits into a single byte, use that numeric value.\n val = code\n }\n }\n } else if (typeof val === 'number') {\n val = val & 255\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n var i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n var bytes = Buffer.isBuffer(val)\n ? val\n : Buffer.from(val, encoding)\n var len = bytes.length\n if (len === 0) {\n throw new TypeError('The value \"' + val +\n '\" is invalid for argument \"value\"')\n }\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node takes equal signs as end of the Base64 encoding\n str = str.split('=')[0]\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = str.trim().replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction toHex (n) {\n if (n < 16) return '0' + n.toString(16)\n return n.toString(16)\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n var codePoint\n var length = string.length\n var leadSurrogate = null\n var bytes = []\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\n// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n// the `instanceof` check but they should be treated as of that type.\n// See: https://github.com/feross/buffer/issues/166\nfunction isInstance (obj, type) {\n return obj instanceof type ||\n (obj != null && obj.constructor != null && obj.constructor.name != null &&\n obj.constructor.name === type.name)\n}\nfunction numberIsNaN (obj) {\n // For IE11 support\n return obj !== obj // eslint-disable-line no-self-compare\n}\n\n}).call(this)}).call(this,require(\"buffer\").Buffer)\n\n},{\"base64-js\":33,\"buffer\":35,\"ieee754\":37}],36:[function(require,module,exports){\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar R = typeof Reflect === 'object' ? Reflect : null\nvar ReflectApply = R && typeof R.apply === 'function'\n ? R.apply\n : function ReflectApply(target, receiver, args) {\n return Function.prototype.apply.call(target, receiver, args);\n }\n\nvar ReflectOwnKeys\nif (R && typeof R.ownKeys === 'function') {\n ReflectOwnKeys = R.ownKeys\n} else if (Object.getOwnPropertySymbols) {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target)\n .concat(Object.getOwnPropertySymbols(target));\n };\n} else {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target);\n };\n}\n\nfunction ProcessEmitWarning(warning) {\n if (console && console.warn) console.warn(warning);\n}\n\nvar NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n return value !== value;\n}\n\nfunction EventEmitter() {\n EventEmitter.init.call(this);\n}\nmodule.exports = EventEmitter;\nmodule.exports.once = once;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._eventsCount = 0;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nvar defaultMaxListeners = 10;\n\nfunction checkListener(listener) {\n if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\n}\n\nObject.defineProperty(EventEmitter, 'defaultMaxListeners', {\n enumerable: true,\n get: function() {\n return defaultMaxListeners;\n },\n set: function(arg) {\n if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {\n throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + arg + '.');\n }\n defaultMaxListeners = arg;\n }\n});\n\nEventEmitter.init = function() {\n\n if (this._events === undefined ||\n this._events === Object.getPrototypeOf(this)._events) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n }\n\n this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {\n throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + n + '.');\n }\n this._maxListeners = n;\n return this;\n};\n\nfunction _getMaxListeners(that) {\n if (that._maxListeners === undefined)\n return EventEmitter.defaultMaxListeners;\n return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n return _getMaxListeners(this);\n};\n\nEventEmitter.prototype.emit = function emit(type) {\n var args = [];\n for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);\n var doError = (type === 'error');\n\n var events = this._events;\n if (events !== undefined)\n doError = (doError && events.error === undefined);\n else if (!doError)\n return false;\n\n // If there is no 'error' event listener then throw.\n if (doError) {\n var er;\n if (args.length > 0)\n er = args[0];\n if (er instanceof Error) {\n // Note: The comments on the `throw` lines are intentional, they show\n // up in Node's output if this results in an unhandled exception.\n throw er; // Unhandled 'error' event\n }\n // At least give some kind of context to the user\n var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\n err.context = er;\n throw err; // Unhandled 'error' event\n }\n\n var handler = events[type];\n\n if (handler === undefined)\n return false;\n\n if (typeof handler === 'function') {\n ReflectApply(handler, this, args);\n } else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n ReflectApply(listeners[i], this, args);\n }\n\n return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n var m;\n var events;\n var existing;\n\n checkListener(listener);\n\n events = target._events;\n if (events === undefined) {\n events = target._events = Object.create(null);\n target._eventsCount = 0;\n } else {\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (events.newListener !== undefined) {\n target.emit('newListener', type,\n listener.listener ? listener.listener : listener);\n\n // Re-assign `events` because a newListener handler could have caused the\n // this._events to be assigned to a new object\n events = target._events;\n }\n existing = events[type];\n }\n\n if (existing === undefined) {\n // Optimize the case of one listener. Don't need the extra array object.\n existing = events[type] = listener;\n ++target._eventsCount;\n } else {\n if (typeof existing === 'function') {\n // Adding the second element, need to change to array.\n existing = events[type] =\n prepend ? [listener, existing] : [existing, listener];\n // If we've already got an array, just append.\n } else if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n }\n\n // Check for listener leak\n m = _getMaxListeners(target);\n if (m > 0 && existing.length > m && !existing.warned) {\n existing.warned = true;\n // No error code for this since it is a Warning\n // eslint-disable-next-line no-restricted-syntax\n var w = new Error('Possible EventEmitter memory leak detected. ' +\n existing.length + ' ' + String(type) + ' listeners ' +\n 'added. Use emitter.setMaxListeners() to ' +\n 'increase limit');\n w.name = 'MaxListenersExceededWarning';\n w.emitter = target;\n w.type = type;\n w.count = existing.length;\n ProcessEmitWarning(w);\n }\n }\n\n return target;\n}\n\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n function prependListener(type, listener) {\n return _addListener(this, type, listener, true);\n };\n\nfunction onceWrapper() {\n if (!this.fired) {\n this.target.removeListener(this.type, this.wrapFn);\n this.fired = true;\n if (arguments.length === 0)\n return this.listener.call(this.target);\n return this.listener.apply(this.target, arguments);\n }\n}\n\nfunction _onceWrap(target, type, listener) {\n var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };\n var wrapped = onceWrapper.bind(state);\n wrapped.listener = listener;\n state.wrapFn = wrapped;\n return wrapped;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n checkListener(listener);\n this.on(type, _onceWrap(this, type, listener));\n return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n function prependOnceListener(type, listener) {\n checkListener(listener);\n this.prependListener(type, _onceWrap(this, type, listener));\n return this;\n };\n\n// Emits a 'removeListener' event if and only if the listener was removed.\nEventEmitter.prototype.removeListener =\n function removeListener(type, listener) {\n var list, events, position, i, originalListener;\n\n checkListener(listener);\n\n events = this._events;\n if (events === undefined)\n return this;\n\n list = events[type];\n if (list === undefined)\n return this;\n\n if (list === listener || list.listener === listener) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else {\n delete events[type];\n if (events.removeListener)\n this.emit('removeListener', type, list.listener || listener);\n }\n } else if (typeof list !== 'function') {\n position = -1;\n\n for (i = list.length - 1; i >= 0; i--) {\n if (list[i] === listener || list[i].listener === listener) {\n originalListener = list[i].listener;\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (position === 0)\n list.shift();\n else {\n spliceOne(list, position);\n }\n\n if (list.length === 1)\n events[type] = list[0];\n\n if (events.removeListener !== undefined)\n this.emit('removeListener', type, originalListener || listener);\n }\n\n return this;\n };\n\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\nEventEmitter.prototype.removeAllListeners =\n function removeAllListeners(type) {\n var listeners, events, i;\n\n events = this._events;\n if (events === undefined)\n return this;\n\n // not listening for removeListener, no need to emit\n if (events.removeListener === undefined) {\n if (arguments.length === 0) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n } else if (events[type] !== undefined) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else\n delete events[type];\n }\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n var keys = Object.keys(events);\n var key;\n for (i = 0; i < keys.length; ++i) {\n key = keys[i];\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = Object.create(null);\n this._eventsCount = 0;\n return this;\n }\n\n listeners = events[type];\n\n if (typeof listeners === 'function') {\n this.removeListener(type, listeners);\n } else if (listeners !== undefined) {\n // LIFO order\n for (i = listeners.length - 1; i >= 0; i--) {\n this.removeListener(type, listeners[i]);\n }\n }\n\n return this;\n };\n\nfunction _listeners(target, type, unwrap) {\n var events = target._events;\n\n if (events === undefined)\n return [];\n\n var evlistener = events[type];\n if (evlistener === undefined)\n return [];\n\n if (typeof evlistener === 'function')\n return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n\n return unwrap ?\n unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\n\nEventEmitter.prototype.listeners = function listeners(type) {\n return _listeners(this, type, true);\n};\n\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n return _listeners(this, type, false);\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n if (typeof emitter.listenerCount === 'function') {\n return emitter.listenerCount(type);\n } else {\n return listenerCount.call(emitter, type);\n }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n var events = this._events;\n\n if (events !== undefined) {\n var evlistener = events[type];\n\n if (typeof evlistener === 'function') {\n return 1;\n } else if (evlistener !== undefined) {\n return evlistener.length;\n }\n }\n\n return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n};\n\nfunction arrayClone(arr, n) {\n var copy = new Array(n);\n for (var i = 0; i < n; ++i)\n copy[i] = arr[i];\n return copy;\n}\n\nfunction spliceOne(list, index) {\n for (; index + 1 < list.length; index++)\n list[index] = list[index + 1];\n list.pop();\n}\n\nfunction unwrapListeners(arr) {\n var ret = new Array(arr.length);\n for (var i = 0; i < ret.length; ++i) {\n ret[i] = arr[i].listener || arr[i];\n }\n return ret;\n}\n\nfunction once(emitter, name) {\n return new Promise(function (resolve, reject) {\n function eventListener() {\n if (errorListener !== undefined) {\n emitter.removeListener('error', errorListener);\n }\n resolve([].slice.call(arguments));\n };\n var errorListener;\n\n // Adding an error listener is not optional because\n // if an error is thrown on an event emitter we cannot\n // guarantee that the actual event we are waiting will\n // be fired. The result could be a silent way to create\n // memory or file descriptor leaks, which is something\n // we should avoid.\n if (name !== 'error') {\n errorListener = function errorListener(err) {\n emitter.removeListener(name, eventListener);\n reject(err);\n };\n\n emitter.once('error', errorListener);\n }\n\n emitter.once(name, eventListener);\n });\n}\n\n},{}],37:[function(require,module,exports){\n/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n\n},{}],38:[function(require,module,exports){\nif (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n\n},{}],39:[function(require,module,exports){\n// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n\n},{}],40:[function(require,module,exports){\n/*! safe-buffer. MIT License. Feross Aboukhadijeh */\n/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.prototype = Object.create(Buffer.prototype)\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\n}\n\n},{\"buffer\":35}],41:[function(require,module,exports){\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nmodule.exports = Stream;\n\nvar EE = require('events').EventEmitter;\nvar inherits = require('inherits');\n\ninherits(Stream, EE);\nStream.Readable = require('readable-stream/lib/_stream_readable.js');\nStream.Writable = require('readable-stream/lib/_stream_writable.js');\nStream.Duplex = require('readable-stream/lib/_stream_duplex.js');\nStream.Transform = require('readable-stream/lib/_stream_transform.js');\nStream.PassThrough = require('readable-stream/lib/_stream_passthrough.js');\nStream.finished = require('readable-stream/lib/internal/streams/end-of-stream.js')\nStream.pipeline = require('readable-stream/lib/internal/streams/pipeline.js')\n\n// Backwards-compat with node 0.4.x\nStream.Stream = Stream;\n\n\n\n// old-style streams. Note that the pipe method (the only relevant\n// part of this class) is overridden in the Readable class.\n\nfunction Stream() {\n EE.call(this);\n}\n\nStream.prototype.pipe = function(dest, options) {\n var source = this;\n\n function ondata(chunk) {\n if (dest.writable) {\n if (false === dest.write(chunk) && source.pause) {\n source.pause();\n }\n }\n }\n\n source.on('data', ondata);\n\n function ondrain() {\n if (source.readable && source.resume) {\n source.resume();\n }\n }\n\n dest.on('drain', ondrain);\n\n // If the 'end' option is not supplied, dest.end() will be called when\n // source gets the 'end' or 'close' events. Only dest.end() once.\n if (!dest._isStdio && (!options || options.end !== false)) {\n source.on('end', onend);\n source.on('close', onclose);\n }\n\n var didOnEnd = false;\n function onend() {\n if (didOnEnd) return;\n didOnEnd = true;\n\n dest.end();\n }\n\n\n function onclose() {\n if (didOnEnd) return;\n didOnEnd = true;\n\n if (typeof dest.destroy === 'function') dest.destroy();\n }\n\n // don't leave dangling pipes when there are errors.\n function onerror(er) {\n cleanup();\n if (EE.listenerCount(this, 'error') === 0) {\n throw er; // Unhandled stream error in pipe.\n }\n }\n\n source.on('error', onerror);\n dest.on('error', onerror);\n\n // remove all the event listeners that were added.\n function cleanup() {\n source.removeListener('data', ondata);\n dest.removeListener('drain', ondrain);\n\n source.removeListener('end', onend);\n source.removeListener('close', onclose);\n\n source.removeListener('error', onerror);\n dest.removeListener('error', onerror);\n\n source.removeListener('end', cleanup);\n source.removeListener('close', cleanup);\n\n dest.removeListener('close', cleanup);\n }\n\n source.on('end', cleanup);\n source.on('close', cleanup);\n\n dest.on('close', cleanup);\n\n dest.emit('pipe', source);\n\n // Allow for unix-like usage: A.pipe(B).pipe(C)\n return dest;\n};\n\n},{\"events\":36,\"inherits\":38,\"readable-stream/lib/_stream_duplex.js\":43,\"readable-stream/lib/_stream_passthrough.js\":44,\"readable-stream/lib/_stream_readable.js\":45,\"readable-stream/lib/_stream_transform.js\":46,\"readable-stream/lib/_stream_writable.js\":47,\"readable-stream/lib/internal/streams/end-of-stream.js\":51,\"readable-stream/lib/internal/streams/pipeline.js\":53}],42:[function(require,module,exports){\n'use strict';\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar codes = {};\n\nfunction createErrorType(code, message, Base) {\n if (!Base) {\n Base = Error;\n }\n\n function getMessage(arg1, arg2, arg3) {\n if (typeof message === 'string') {\n return message;\n } else {\n return message(arg1, arg2, arg3);\n }\n }\n\n var NodeError =\n /*#__PURE__*/\n function (_Base) {\n _inheritsLoose(NodeError, _Base);\n\n function NodeError(arg1, arg2, arg3) {\n return _Base.call(this, getMessage(arg1, arg2, arg3)) || this;\n }\n\n return NodeError;\n }(Base);\n\n NodeError.prototype.name = Base.name;\n NodeError.prototype.code = code;\n codes[code] = NodeError;\n} // https://github.com/nodejs/node/blob/v10.8.0/lib/internal/errors.js\n\n\nfunction oneOf(expected, thing) {\n if (Array.isArray(expected)) {\n var len = expected.length;\n expected = expected.map(function (i) {\n return String(i);\n });\n\n if (len > 2) {\n return \"one of \".concat(thing, \" \").concat(expected.slice(0, len - 1).join(', '), \", or \") + expected[len - 1];\n } else if (len === 2) {\n return \"one of \".concat(thing, \" \").concat(expected[0], \" or \").concat(expected[1]);\n } else {\n return \"of \".concat(thing, \" \").concat(expected[0]);\n }\n } else {\n return \"of \".concat(thing, \" \").concat(String(expected));\n }\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith\n\n\nfunction startsWith(str, search, pos) {\n return str.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith\n\n\nfunction endsWith(str, search, this_len) {\n if (this_len === undefined || this_len > str.length) {\n this_len = str.length;\n }\n\n return str.substring(this_len - search.length, this_len) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes\n\n\nfunction includes(str, search, start) {\n if (typeof start !== 'number') {\n start = 0;\n }\n\n if (start + search.length > str.length) {\n return false;\n } else {\n return str.indexOf(search, start) !== -1;\n }\n}\n\ncreateErrorType('ERR_INVALID_OPT_VALUE', function (name, value) {\n return 'The value \"' + value + '\" is invalid for option \"' + name + '\"';\n}, TypeError);\ncreateErrorType('ERR_INVALID_ARG_TYPE', function (name, expected, actual) {\n // determiner: 'must be' or 'must not be'\n var determiner;\n\n if (typeof expected === 'string' && startsWith(expected, 'not ')) {\n determiner = 'must not be';\n expected = expected.replace(/^not /, '');\n } else {\n determiner = 'must be';\n }\n\n var msg;\n\n if (endsWith(name, ' argument')) {\n // For cases like 'first argument'\n msg = \"The \".concat(name, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n } else {\n var type = includes(name, '.') ? 'property' : 'argument';\n msg = \"The \\\"\".concat(name, \"\\\" \").concat(type, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n }\n\n msg += \". Received type \".concat(typeof actual);\n return msg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_PUSH_AFTER_EOF', 'stream.push() after EOF');\ncreateErrorType('ERR_METHOD_NOT_IMPLEMENTED', function (name) {\n return 'The ' + name + ' method is not implemented';\n});\ncreateErrorType('ERR_STREAM_PREMATURE_CLOSE', 'Premature close');\ncreateErrorType('ERR_STREAM_DESTROYED', function (name) {\n return 'Cannot call ' + name + ' after a stream was destroyed';\n});\ncreateErrorType('ERR_MULTIPLE_CALLBACK', 'Callback called multiple times');\ncreateErrorType('ERR_STREAM_CANNOT_PIPE', 'Cannot pipe, not readable');\ncreateErrorType('ERR_STREAM_WRITE_AFTER_END', 'write after end');\ncreateErrorType('ERR_STREAM_NULL_VALUES', 'May not write null values to stream', TypeError);\ncreateErrorType('ERR_UNKNOWN_ENCODING', function (arg) {\n return 'Unknown encoding: ' + arg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_UNSHIFT_AFTER_END_EVENT', 'stream.unshift() after end event');\nmodule.exports.codes = codes;\n\n},{}],43:[function(require,module,exports){\n(function (process){(function (){\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// a duplex stream is just a stream that is both readable and writable.\n// Since JS doesn't have multiple prototypal inheritance, this class\n// prototypally inherits from Readable, and then parasitically from\n// Writable.\n'use strict';\n/**/\n\nvar objectKeys = Object.keys || function (obj) {\n var keys = [];\n\n for (var key in obj) {\n keys.push(key);\n }\n\n return keys;\n};\n/**/\n\n\nmodule.exports = Duplex;\n\nvar Readable = require('./_stream_readable');\n\nvar Writable = require('./_stream_writable');\n\nrequire('inherits')(Duplex, Readable);\n\n{\n // Allow the keys array to be GC'ed.\n var keys = objectKeys(Writable.prototype);\n\n for (var v = 0; v < keys.length; v++) {\n var method = keys[v];\n if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];\n }\n}\n\nfunction Duplex(options) {\n if (!(this instanceof Duplex)) return new Duplex(options);\n Readable.call(this, options);\n Writable.call(this, options);\n this.allowHalfOpen = true;\n\n if (options) {\n if (options.readable === false) this.readable = false;\n if (options.writable === false) this.writable = false;\n\n if (options.allowHalfOpen === false) {\n this.allowHalfOpen = false;\n this.once('end', onend);\n }\n }\n}\n\nObject.defineProperty(Duplex.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.highWaterMark;\n }\n});\nObject.defineProperty(Duplex.prototype, 'writableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState && this._writableState.getBuffer();\n }\n});\nObject.defineProperty(Duplex.prototype, 'writableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.length;\n }\n}); // the no-half-open enforcer\n\nfunction onend() {\n // If the writable side ended, then we're ok.\n if (this._writableState.ended) return; // no more data can be written.\n // But allow more writes to happen in this tick.\n\n process.nextTick(onEndNT, this);\n}\n\nfunction onEndNT(self) {\n self.end();\n}\n\nObject.defineProperty(Duplex.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._readableState === undefined || this._writableState === undefined) {\n return false;\n }\n\n return this._readableState.destroyed && this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (this._readableState === undefined || this._writableState === undefined) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._readableState.destroyed = value;\n this._writableState.destroyed = value;\n }\n});\n}).call(this)}).call(this,require('_process'))\n\n},{\"./_stream_readable\":45,\"./_stream_writable\":47,\"_process\":39,\"inherits\":38}],44:[function(require,module,exports){\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n'use strict';\n\nmodule.exports = PassThrough;\n\nvar Transform = require('./_stream_transform');\n\nrequire('inherits')(PassThrough, Transform);\n\nfunction PassThrough(options) {\n if (!(this instanceof PassThrough)) return new PassThrough(options);\n Transform.call(this, options);\n}\n\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n cb(null, chunk);\n};\n},{\"./_stream_transform\":46,\"inherits\":38}],45:[function(require,module,exports){\n(function (process,global){(function (){\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n'use strict';\n\nmodule.exports = Readable;\n/**/\n\nvar Duplex;\n/**/\n\nReadable.ReadableState = ReadableState;\n/**/\n\nvar EE = require('events').EventEmitter;\n\nvar EElistenerCount = function EElistenerCount(emitter, type) {\n return emitter.listeners(type).length;\n};\n/**/\n\n/**/\n\n\nvar Stream = require('./internal/streams/stream');\n/**/\n\n\nvar Buffer = require('buffer').Buffer;\n\nvar OurUint8Array = global.Uint8Array || function () {};\n\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\n\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n/**/\n\n\nvar debugUtil = require('util');\n\nvar debug;\n\nif (debugUtil && debugUtil.debuglog) {\n debug = debugUtil.debuglog('stream');\n} else {\n debug = function debug() {};\n}\n/**/\n\n\nvar BufferList = require('./internal/streams/buffer_list');\n\nvar destroyImpl = require('./internal/streams/destroy');\n\nvar _require = require('./internal/streams/state'),\n getHighWaterMark = _require.getHighWaterMark;\n\nvar _require$codes = require('../errors').codes,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_STREAM_PUSH_AFTER_EOF = _require$codes.ERR_STREAM_PUSH_AFTER_EOF,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_STREAM_UNSHIFT_AFTER_END_EVENT = _require$codes.ERR_STREAM_UNSHIFT_AFTER_END_EVENT; // Lazy loaded to improve the startup performance.\n\n\nvar StringDecoder;\nvar createReadableStreamAsyncIterator;\nvar from;\n\nrequire('inherits')(Readable, Stream);\n\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\n\nfunction prependListener(emitter, event, fn) {\n // Sadly this is not cacheable as some libraries bundle their own\n // event emitter implementation with them.\n if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn); // This is a hack to make sure that our error handler is attached before any\n // userland ones. NEVER DO THIS. This is here only because this code needs\n // to continue to work with older versions of Node.js that do not include\n // the prependListener() method. The goal is to eventually remove this hack.\n\n if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (Array.isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\n}\n\nfunction ReadableState(options, stream, isDuplex) {\n Duplex = Duplex || require('./_stream_duplex');\n options = options || {}; // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex; // object stream flag. Used to make read(n) ignore n and to\n // make all the buffer merging and length checks go away\n\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode; // the point at which it stops calling _read() to fill the buffer\n // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n\n this.highWaterMark = getHighWaterMark(this, options, 'readableHighWaterMark', isDuplex); // A linked list is used to store data chunks instead of an array because the\n // linked list can remove elements from the beginning faster than\n // array.shift()\n\n this.buffer = new BufferList();\n this.length = 0;\n this.pipes = null;\n this.pipesCount = 0;\n this.flowing = null;\n this.ended = false;\n this.endEmitted = false;\n this.reading = false; // a flag to be able to tell if the event 'readable'/'data' is emitted\n // immediately, or on a later tick. We set this to true at first, because\n // any actions that shouldn't happen until \"later\" should generally also\n // not happen before the first read call.\n\n this.sync = true; // whenever we return null, then we set a flag to say\n // that we're awaiting a 'readable' event emission.\n\n this.needReadable = false;\n this.emittedReadable = false;\n this.readableListening = false;\n this.resumeScheduled = false;\n this.paused = true; // Should close be emitted on destroy. Defaults to true.\n\n this.emitClose = options.emitClose !== false; // Should .destroy() be called after 'end' (and potentially 'finish')\n\n this.autoDestroy = !!options.autoDestroy; // has it been destroyed\n\n this.destroyed = false; // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n\n this.defaultEncoding = options.defaultEncoding || 'utf8'; // the number of writers that are awaiting a drain event in .pipe()s\n\n this.awaitDrain = 0; // if true, a maybeReadMore has been scheduled\n\n this.readingMore = false;\n this.decoder = null;\n this.encoding = null;\n\n if (options.encoding) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n this.decoder = new StringDecoder(options.encoding);\n this.encoding = options.encoding;\n }\n}\n\nfunction Readable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n if (!(this instanceof Readable)) return new Readable(options); // Checking for a Stream.Duplex instance is faster here instead of inside\n // the ReadableState constructor, at least with V8 6.5\n\n var isDuplex = this instanceof Duplex;\n this._readableState = new ReadableState(options, this, isDuplex); // legacy\n\n this.readable = true;\n\n if (options) {\n if (typeof options.read === 'function') this._read = options.read;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n }\n\n Stream.call(this);\n}\n\nObject.defineProperty(Readable.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._readableState === undefined) {\n return false;\n }\n\n return this._readableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._readableState) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._readableState.destroyed = value;\n }\n});\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\n\nReadable.prototype._destroy = function (err, cb) {\n cb(err);\n}; // Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\n\n\nReadable.prototype.push = function (chunk, encoding) {\n var state = this._readableState;\n var skipChunkCheck;\n\n if (!state.objectMode) {\n if (typeof chunk === 'string') {\n encoding = encoding || state.defaultEncoding;\n\n if (encoding !== state.encoding) {\n chunk = Buffer.from(chunk, encoding);\n encoding = '';\n }\n\n skipChunkCheck = true;\n }\n } else {\n skipChunkCheck = true;\n }\n\n return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n}; // Unshift should *always* be something directly out of read()\n\n\nReadable.prototype.unshift = function (chunk) {\n return readableAddChunk(this, chunk, null, true, false);\n};\n\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n debug('readableAddChunk', chunk);\n var state = stream._readableState;\n\n if (chunk === null) {\n state.reading = false;\n onEofChunk(stream, state);\n } else {\n var er;\n if (!skipChunkCheck) er = chunkInvalid(state, chunk);\n\n if (er) {\n errorOrDestroy(stream, er);\n } else if (state.objectMode || chunk && chunk.length > 0) {\n if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (addToFront) {\n if (state.endEmitted) errorOrDestroy(stream, new ERR_STREAM_UNSHIFT_AFTER_END_EVENT());else addChunk(stream, state, chunk, true);\n } else if (state.ended) {\n errorOrDestroy(stream, new ERR_STREAM_PUSH_AFTER_EOF());\n } else if (state.destroyed) {\n return false;\n } else {\n state.reading = false;\n\n if (state.decoder && !encoding) {\n chunk = state.decoder.write(chunk);\n if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);\n } else {\n addChunk(stream, state, chunk, false);\n }\n }\n } else if (!addToFront) {\n state.reading = false;\n maybeReadMore(stream, state);\n }\n } // We can push more data if we are below the highWaterMark.\n // Also, if we have no data yet, we can stand some more bytes.\n // This is to work around cases where hwm=0, such as the repl.\n\n\n return !state.ended && (state.length < state.highWaterMark || state.length === 0);\n}\n\nfunction addChunk(stream, state, chunk, addToFront) {\n if (state.flowing && state.length === 0 && !state.sync) {\n state.awaitDrain = 0;\n stream.emit('data', chunk);\n } else {\n // update the buffer info.\n state.length += state.objectMode ? 1 : chunk.length;\n if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);\n if (state.needReadable) emitReadable(stream);\n }\n\n maybeReadMore(stream, state);\n}\n\nfunction chunkInvalid(state, chunk) {\n var er;\n\n if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer', 'Uint8Array'], chunk);\n }\n\n return er;\n}\n\nReadable.prototype.isPaused = function () {\n return this._readableState.flowing === false;\n}; // backwards compatibility.\n\n\nReadable.prototype.setEncoding = function (enc) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n var decoder = new StringDecoder(enc);\n this._readableState.decoder = decoder; // If setEncoding(null), decoder.encoding equals utf8\n\n this._readableState.encoding = this._readableState.decoder.encoding; // Iterate over current buffer to convert already stored Buffers:\n\n var p = this._readableState.buffer.head;\n var content = '';\n\n while (p !== null) {\n content += decoder.write(p.data);\n p = p.next;\n }\n\n this._readableState.buffer.clear();\n\n if (content !== '') this._readableState.buffer.push(content);\n this._readableState.length = content.length;\n return this;\n}; // Don't raise the hwm > 1GB\n\n\nvar MAX_HWM = 0x40000000;\n\nfunction computeNewHighWaterMark(n) {\n if (n >= MAX_HWM) {\n // TODO(ronag): Throw ERR_VALUE_OUT_OF_RANGE.\n n = MAX_HWM;\n } else {\n // Get the next highest power of 2 to prevent increasing hwm excessively in\n // tiny amounts\n n--;\n n |= n >>> 1;\n n |= n >>> 2;\n n |= n >>> 4;\n n |= n >>> 8;\n n |= n >>> 16;\n n++;\n }\n\n return n;\n} // This function is designed to be inlinable, so please take care when making\n// changes to the function body.\n\n\nfunction howMuchToRead(n, state) {\n if (n <= 0 || state.length === 0 && state.ended) return 0;\n if (state.objectMode) return 1;\n\n if (n !== n) {\n // Only flow one buffer at a time\n if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;\n } // If we're asking for more than the current hwm, then raise the hwm.\n\n\n if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n if (n <= state.length) return n; // Don't have enough\n\n if (!state.ended) {\n state.needReadable = true;\n return 0;\n }\n\n return state.length;\n} // you can override either this method, or the async _read(n) below.\n\n\nReadable.prototype.read = function (n) {\n debug('read', n);\n n = parseInt(n, 10);\n var state = this._readableState;\n var nOrig = n;\n if (n !== 0) state.emittedReadable = false; // if we're doing read(0) to trigger a readable event, but we\n // already have a bunch of data in the buffer, then just trigger\n // the 'readable' event and move on.\n\n if (n === 0 && state.needReadable && ((state.highWaterMark !== 0 ? state.length >= state.highWaterMark : state.length > 0) || state.ended)) {\n debug('read: emitReadable', state.length, state.ended);\n if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);\n return null;\n }\n\n n = howMuchToRead(n, state); // if we've ended, and we're now clear, then finish it up.\n\n if (n === 0 && state.ended) {\n if (state.length === 0) endReadable(this);\n return null;\n } // All the actual chunk generation logic needs to be\n // *below* the call to _read. The reason is that in certain\n // synthetic stream cases, such as passthrough streams, _read\n // may be a completely synchronous operation which may change\n // the state of the read buffer, providing enough data when\n // before there was *not* enough.\n //\n // So, the steps are:\n // 1. Figure out what the state of things will be after we do\n // a read from the buffer.\n //\n // 2. If that resulting state will trigger a _read, then call _read.\n // Note that this may be asynchronous, or synchronous. Yes, it is\n // deeply ugly to write APIs this way, but that still doesn't mean\n // that the Readable class should behave improperly, as streams are\n // designed to be sync/async agnostic.\n // Take note if the _read call is sync or async (ie, if the read call\n // has returned yet), so that we know whether or not it's safe to emit\n // 'readable' etc.\n //\n // 3. Actually pull the requested chunks out of the buffer and return.\n // if we need a readable event, then we need to do some reading.\n\n\n var doRead = state.needReadable;\n debug('need readable', doRead); // if we currently have less than the highWaterMark, then also read some\n\n if (state.length === 0 || state.length - n < state.highWaterMark) {\n doRead = true;\n debug('length less than watermark', doRead);\n } // however, if we've ended, then there's no point, and if we're already\n // reading, then it's unnecessary.\n\n\n if (state.ended || state.reading) {\n doRead = false;\n debug('reading or ended', doRead);\n } else if (doRead) {\n debug('do read');\n state.reading = true;\n state.sync = true; // if the length is currently zero, then we *need* a readable event.\n\n if (state.length === 0) state.needReadable = true; // call internal read method\n\n this._read(state.highWaterMark);\n\n state.sync = false; // If _read pushed data synchronously, then `reading` will be false,\n // and we need to re-evaluate how much data we can return to the user.\n\n if (!state.reading) n = howMuchToRead(nOrig, state);\n }\n\n var ret;\n if (n > 0) ret = fromList(n, state);else ret = null;\n\n if (ret === null) {\n state.needReadable = state.length <= state.highWaterMark;\n n = 0;\n } else {\n state.length -= n;\n state.awaitDrain = 0;\n }\n\n if (state.length === 0) {\n // If we have nothing in the buffer, then we want to know\n // as soon as we *do* get something into the buffer.\n if (!state.ended) state.needReadable = true; // If we tried to read() past the EOF, then emit end on the next tick.\n\n if (nOrig !== n && state.ended) endReadable(this);\n }\n\n if (ret !== null) this.emit('data', ret);\n return ret;\n};\n\nfunction onEofChunk(stream, state) {\n debug('onEofChunk');\n if (state.ended) return;\n\n if (state.decoder) {\n var chunk = state.decoder.end();\n\n if (chunk && chunk.length) {\n state.buffer.push(chunk);\n state.length += state.objectMode ? 1 : chunk.length;\n }\n }\n\n state.ended = true;\n\n if (state.sync) {\n // if we are sync, wait until next tick to emit the data.\n // Otherwise we risk emitting data in the flow()\n // the readable code triggers during a read() call\n emitReadable(stream);\n } else {\n // emit 'readable' now to make sure it gets picked up.\n state.needReadable = false;\n\n if (!state.emittedReadable) {\n state.emittedReadable = true;\n emitReadable_(stream);\n }\n }\n} // Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow. This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\n\n\nfunction emitReadable(stream) {\n var state = stream._readableState;\n debug('emitReadable', state.needReadable, state.emittedReadable);\n state.needReadable = false;\n\n if (!state.emittedReadable) {\n debug('emitReadable', state.flowing);\n state.emittedReadable = true;\n process.nextTick(emitReadable_, stream);\n }\n}\n\nfunction emitReadable_(stream) {\n var state = stream._readableState;\n debug('emitReadable_', state.destroyed, state.length, state.ended);\n\n if (!state.destroyed && (state.length || state.ended)) {\n stream.emit('readable');\n state.emittedReadable = false;\n } // The stream needs another readable event if\n // 1. It is not flowing, as the flow mechanism will take\n // care of it.\n // 2. It is not ended.\n // 3. It is below the highWaterMark, so we can schedule\n // another readable later.\n\n\n state.needReadable = !state.flowing && !state.ended && state.length <= state.highWaterMark;\n flow(stream);\n} // at this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data. that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\n\n\nfunction maybeReadMore(stream, state) {\n if (!state.readingMore) {\n state.readingMore = true;\n process.nextTick(maybeReadMore_, stream, state);\n }\n}\n\nfunction maybeReadMore_(stream, state) {\n // Attempt to read more data if we should.\n //\n // The conditions for reading more data are (one of):\n // - Not enough data buffered (state.length < state.highWaterMark). The loop\n // is responsible for filling the buffer with enough data if such data\n // is available. If highWaterMark is 0 and we are not in the flowing mode\n // we should _not_ attempt to buffer any extra data. We'll get more data\n // when the stream consumer calls read() instead.\n // - No data in the buffer, and the stream is in flowing mode. In this mode\n // the loop below is responsible for ensuring read() is called. Failing to\n // call read here would abort the flow and there's no other mechanism for\n // continuing the flow if the stream consumer has just subscribed to the\n // 'data' event.\n //\n // In addition to the above conditions to keep reading data, the following\n // conditions prevent the data from being read:\n // - The stream has ended (state.ended).\n // - There is already a pending 'read' operation (state.reading). This is a\n // case where the the stream has called the implementation defined _read()\n // method, but they are processing the call asynchronously and have _not_\n // called push() with new data. In this case we skip performing more\n // read()s. The execution ends in this method again after the _read() ends\n // up calling push() with more data.\n while (!state.reading && !state.ended && (state.length < state.highWaterMark || state.flowing && state.length === 0)) {\n var len = state.length;\n debug('maybeReadMore read 0');\n stream.read(0);\n if (len === state.length) // didn't get any data, stop spinning.\n break;\n }\n\n state.readingMore = false;\n} // abstract method. to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\n\n\nReadable.prototype._read = function (n) {\n errorOrDestroy(this, new ERR_METHOD_NOT_IMPLEMENTED('_read()'));\n};\n\nReadable.prototype.pipe = function (dest, pipeOpts) {\n var src = this;\n var state = this._readableState;\n\n switch (state.pipesCount) {\n case 0:\n state.pipes = dest;\n break;\n\n case 1:\n state.pipes = [state.pipes, dest];\n break;\n\n default:\n state.pipes.push(dest);\n break;\n }\n\n state.pipesCount += 1;\n debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n var endFn = doEnd ? onend : unpipe;\n if (state.endEmitted) process.nextTick(endFn);else src.once('end', endFn);\n dest.on('unpipe', onunpipe);\n\n function onunpipe(readable, unpipeInfo) {\n debug('onunpipe');\n\n if (readable === src) {\n if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n unpipeInfo.hasUnpiped = true;\n cleanup();\n }\n }\n }\n\n function onend() {\n debug('onend');\n dest.end();\n } // when the dest drains, it reduces the awaitDrain counter\n // on the source. This would be more elegant with a .once()\n // handler in flow(), but adding and removing repeatedly is\n // too slow.\n\n\n var ondrain = pipeOnDrain(src);\n dest.on('drain', ondrain);\n var cleanedUp = false;\n\n function cleanup() {\n debug('cleanup'); // cleanup event handlers once the pipe is broken\n\n dest.removeListener('close', onclose);\n dest.removeListener('finish', onfinish);\n dest.removeListener('drain', ondrain);\n dest.removeListener('error', onerror);\n dest.removeListener('unpipe', onunpipe);\n src.removeListener('end', onend);\n src.removeListener('end', unpipe);\n src.removeListener('data', ondata);\n cleanedUp = true; // if the reader is waiting for a drain event from this\n // specific writer, then it would cause it to never start\n // flowing again.\n // So, if this is awaiting a drain, then we just call it now.\n // If we don't know, then assume that we are waiting for one.\n\n if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n }\n\n src.on('data', ondata);\n\n function ondata(chunk) {\n debug('ondata');\n var ret = dest.write(chunk);\n debug('dest.write', ret);\n\n if (ret === false) {\n // If the user unpiped during `dest.write()`, it is possible\n // to get stuck in a permanently paused state if that write\n // also returned false.\n // => Check whether `dest` is still a piping destination.\n if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {\n debug('false write response, pause', state.awaitDrain);\n state.awaitDrain++;\n }\n\n src.pause();\n }\n } // if the dest has an error, then stop piping into it.\n // however, don't suppress the throwing behavior for this.\n\n\n function onerror(er) {\n debug('onerror', er);\n unpipe();\n dest.removeListener('error', onerror);\n if (EElistenerCount(dest, 'error') === 0) errorOrDestroy(dest, er);\n } // Make sure our error handler is attached before userland ones.\n\n\n prependListener(dest, 'error', onerror); // Both close and finish should trigger unpipe, but only once.\n\n function onclose() {\n dest.removeListener('finish', onfinish);\n unpipe();\n }\n\n dest.once('close', onclose);\n\n function onfinish() {\n debug('onfinish');\n dest.removeListener('close', onclose);\n unpipe();\n }\n\n dest.once('finish', onfinish);\n\n function unpipe() {\n debug('unpipe');\n src.unpipe(dest);\n } // tell the dest that it's being piped to\n\n\n dest.emit('pipe', src); // start the flow if it hasn't been started already.\n\n if (!state.flowing) {\n debug('pipe resume');\n src.resume();\n }\n\n return dest;\n};\n\nfunction pipeOnDrain(src) {\n return function pipeOnDrainFunctionResult() {\n var state = src._readableState;\n debug('pipeOnDrain', state.awaitDrain);\n if (state.awaitDrain) state.awaitDrain--;\n\n if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n state.flowing = true;\n flow(src);\n }\n };\n}\n\nReadable.prototype.unpipe = function (dest) {\n var state = this._readableState;\n var unpipeInfo = {\n hasUnpiped: false\n }; // if we're not piping anywhere, then do nothing.\n\n if (state.pipesCount === 0) return this; // just one destination. most common case.\n\n if (state.pipesCount === 1) {\n // passed in one, but it's not the right one.\n if (dest && dest !== state.pipes) return this;\n if (!dest) dest = state.pipes; // got a match.\n\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n if (dest) dest.emit('unpipe', this, unpipeInfo);\n return this;\n } // slow case. multiple pipe destinations.\n\n\n if (!dest) {\n // remove all.\n var dests = state.pipes;\n var len = state.pipesCount;\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n\n for (var i = 0; i < len; i++) {\n dests[i].emit('unpipe', this, {\n hasUnpiped: false\n });\n }\n\n return this;\n } // try to find the right one.\n\n\n var index = indexOf(state.pipes, dest);\n if (index === -1) return this;\n state.pipes.splice(index, 1);\n state.pipesCount -= 1;\n if (state.pipesCount === 1) state.pipes = state.pipes[0];\n dest.emit('unpipe', this, unpipeInfo);\n return this;\n}; // set up data events if they are asked for\n// Ensure readable listeners eventually get something\n\n\nReadable.prototype.on = function (ev, fn) {\n var res = Stream.prototype.on.call(this, ev, fn);\n var state = this._readableState;\n\n if (ev === 'data') {\n // update readableListening so that resume() may be a no-op\n // a few lines down. This is needed to support once('readable').\n state.readableListening = this.listenerCount('readable') > 0; // Try start flowing on next tick if stream isn't explicitly paused\n\n if (state.flowing !== false) this.resume();\n } else if (ev === 'readable') {\n if (!state.endEmitted && !state.readableListening) {\n state.readableListening = state.needReadable = true;\n state.flowing = false;\n state.emittedReadable = false;\n debug('on readable', state.length, state.reading);\n\n if (state.length) {\n emitReadable(this);\n } else if (!state.reading) {\n process.nextTick(nReadingNextTick, this);\n }\n }\n }\n\n return res;\n};\n\nReadable.prototype.addListener = Readable.prototype.on;\n\nReadable.prototype.removeListener = function (ev, fn) {\n var res = Stream.prototype.removeListener.call(this, ev, fn);\n\n if (ev === 'readable') {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this);\n }\n\n return res;\n};\n\nReadable.prototype.removeAllListeners = function (ev) {\n var res = Stream.prototype.removeAllListeners.apply(this, arguments);\n\n if (ev === 'readable' || ev === undefined) {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this);\n }\n\n return res;\n};\n\nfunction updateReadableListening(self) {\n var state = self._readableState;\n state.readableListening = self.listenerCount('readable') > 0;\n\n if (state.resumeScheduled && !state.paused) {\n // flowing needs to be set to true now, otherwise\n // the upcoming resume will not flow.\n state.flowing = true; // crude way to check if we should resume\n } else if (self.listenerCount('data') > 0) {\n self.resume();\n }\n}\n\nfunction nReadingNextTick(self) {\n debug('readable nexttick read 0');\n self.read(0);\n} // pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\n\n\nReadable.prototype.resume = function () {\n var state = this._readableState;\n\n if (!state.flowing) {\n debug('resume'); // we flow only if there is no one listening\n // for readable, but we still have to call\n // resume()\n\n state.flowing = !state.readableListening;\n resume(this, state);\n }\n\n state.paused = false;\n return this;\n};\n\nfunction resume(stream, state) {\n if (!state.resumeScheduled) {\n state.resumeScheduled = true;\n process.nextTick(resume_, stream, state);\n }\n}\n\nfunction resume_(stream, state) {\n debug('resume', state.reading);\n\n if (!state.reading) {\n stream.read(0);\n }\n\n state.resumeScheduled = false;\n stream.emit('resume');\n flow(stream);\n if (state.flowing && !state.reading) stream.read(0);\n}\n\nReadable.prototype.pause = function () {\n debug('call pause flowing=%j', this._readableState.flowing);\n\n if (this._readableState.flowing !== false) {\n debug('pause');\n this._readableState.flowing = false;\n this.emit('pause');\n }\n\n this._readableState.paused = true;\n return this;\n};\n\nfunction flow(stream) {\n var state = stream._readableState;\n debug('flow', state.flowing);\n\n while (state.flowing && stream.read() !== null) {\n ;\n }\n} // wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\n\n\nReadable.prototype.wrap = function (stream) {\n var _this = this;\n\n var state = this._readableState;\n var paused = false;\n stream.on('end', function () {\n debug('wrapped end');\n\n if (state.decoder && !state.ended) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) _this.push(chunk);\n }\n\n _this.push(null);\n });\n stream.on('data', function (chunk) {\n debug('wrapped data');\n if (state.decoder) chunk = state.decoder.write(chunk); // don't skip over falsy values in objectMode\n\n if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n\n var ret = _this.push(chunk);\n\n if (!ret) {\n paused = true;\n stream.pause();\n }\n }); // proxy all the other methods.\n // important when wrapping filters and duplexes.\n\n for (var i in stream) {\n if (this[i] === undefined && typeof stream[i] === 'function') {\n this[i] = function methodWrap(method) {\n return function methodWrapReturnFunction() {\n return stream[method].apply(stream, arguments);\n };\n }(i);\n }\n } // proxy certain important events.\n\n\n for (var n = 0; n < kProxyEvents.length; n++) {\n stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));\n } // when we try to consume some more bytes, simply unpause the\n // underlying stream.\n\n\n this._read = function (n) {\n debug('wrapped _read', n);\n\n if (paused) {\n paused = false;\n stream.resume();\n }\n };\n\n return this;\n};\n\nif (typeof Symbol === 'function') {\n Readable.prototype[Symbol.asyncIterator] = function () {\n if (createReadableStreamAsyncIterator === undefined) {\n createReadableStreamAsyncIterator = require('./internal/streams/async_iterator');\n }\n\n return createReadableStreamAsyncIterator(this);\n };\n}\n\nObject.defineProperty(Readable.prototype, 'readableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.highWaterMark;\n }\n});\nObject.defineProperty(Readable.prototype, 'readableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState && this._readableState.buffer;\n }\n});\nObject.defineProperty(Readable.prototype, 'readableFlowing', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.flowing;\n },\n set: function set(state) {\n if (this._readableState) {\n this._readableState.flowing = state;\n }\n }\n}); // exposed for testing purposes only.\n\nReadable._fromList = fromList;\nObject.defineProperty(Readable.prototype, 'readableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.length;\n }\n}); // Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\n\nfunction fromList(n, state) {\n // nothing buffered\n if (state.length === 0) return null;\n var ret;\n if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {\n // read it all, truncate the list\n if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.first();else ret = state.buffer.concat(state.length);\n state.buffer.clear();\n } else {\n // read part of list\n ret = state.buffer.consume(n, state.decoder);\n }\n return ret;\n}\n\nfunction endReadable(stream) {\n var state = stream._readableState;\n debug('endReadable', state.endEmitted);\n\n if (!state.endEmitted) {\n state.ended = true;\n process.nextTick(endReadableNT, state, stream);\n }\n}\n\nfunction endReadableNT(state, stream) {\n debug('endReadableNT', state.endEmitted, state.length); // Check that we didn't get one last unshift.\n\n if (!state.endEmitted && state.length === 0) {\n state.endEmitted = true;\n stream.readable = false;\n stream.emit('end');\n\n if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the writable side is ready for autoDestroy as well\n var wState = stream._writableState;\n\n if (!wState || wState.autoDestroy && wState.finished) {\n stream.destroy();\n }\n }\n }\n}\n\nif (typeof Symbol === 'function') {\n Readable.from = function (iterable, opts) {\n if (from === undefined) {\n from = require('./internal/streams/from');\n }\n\n return from(Readable, iterable, opts);\n };\n}\n\nfunction indexOf(xs, x) {\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) return i;\n }\n\n return -1;\n}\n}).call(this)}).call(this,require('_process'),typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n\n},{\"../errors\":42,\"./_stream_duplex\":43,\"./internal/streams/async_iterator\":48,\"./internal/streams/buffer_list\":49,\"./internal/streams/destroy\":50,\"./internal/streams/from\":52,\"./internal/streams/state\":54,\"./internal/streams/stream\":55,\"_process\":39,\"buffer\":35,\"events\":36,\"inherits\":38,\"string_decoder/\":56,\"util\":34}],46:[function(require,module,exports){\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// a transform stream is a readable/writable stream where you do\n// something with the data. Sometimes it's called a \"filter\",\n// but that's not a great name for it, since that implies a thing where\n// some bits pass through, and others are simply ignored. (That would\n// be a valid example of a transform, of course.)\n//\n// While the output is causally related to the input, it's not a\n// necessarily symmetric or synchronous transformation. For example,\n// a zlib stream might take multiple plain-text writes(), and then\n// emit a single compressed chunk some time in the future.\n//\n// Here's how this works:\n//\n// The Transform stream has all the aspects of the readable and writable\n// stream classes. When you write(chunk), that calls _write(chunk,cb)\n// internally, and returns false if there's a lot of pending writes\n// buffered up. When you call read(), that calls _read(n) until\n// there's enough pending readable data buffered up.\n//\n// In a transform stream, the written data is placed in a buffer. When\n// _read(n) is called, it transforms the queued up data, calling the\n// buffered _write cb's as it consumes chunks. If consuming a single\n// written chunk would result in multiple output chunks, then the first\n// outputted bit calls the readcb, and subsequent chunks just go into\n// the read buffer, and will cause it to emit 'readable' if necessary.\n//\n// This way, back-pressure is actually determined by the reading side,\n// since _read has to be called to start processing a new chunk. However,\n// a pathological inflate type of transform can cause excessive buffering\n// here. For example, imagine a stream where every byte of input is\n// interpreted as an integer from 0-255, and then results in that many\n// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in\n// 1kb of data being output. In this case, you could write a very small\n// amount of input, and end up with a very large amount of output. In\n// such a pathological inflating mechanism, there'd be no way to tell\n// the system to stop doing the transform. A single 4MB write could\n// cause the system to run out of memory.\n//\n// However, even in such a pathological case, only a single written chunk\n// would be consumed, and then the rest would wait (un-transformed) until\n// the results of the previous transformed chunk were consumed.\n'use strict';\n\nmodule.exports = Transform;\n\nvar _require$codes = require('../errors').codes,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n ERR_TRANSFORM_ALREADY_TRANSFORMING = _require$codes.ERR_TRANSFORM_ALREADY_TRANSFORMING,\n ERR_TRANSFORM_WITH_LENGTH_0 = _require$codes.ERR_TRANSFORM_WITH_LENGTH_0;\n\nvar Duplex = require('./_stream_duplex');\n\nrequire('inherits')(Transform, Duplex);\n\nfunction afterTransform(er, data) {\n var ts = this._transformState;\n ts.transforming = false;\n var cb = ts.writecb;\n\n if (cb === null) {\n return this.emit('error', new ERR_MULTIPLE_CALLBACK());\n }\n\n ts.writechunk = null;\n ts.writecb = null;\n if (data != null) // single equals check for both `null` and `undefined`\n this.push(data);\n cb(er);\n var rs = this._readableState;\n rs.reading = false;\n\n if (rs.needReadable || rs.length < rs.highWaterMark) {\n this._read(rs.highWaterMark);\n }\n}\n\nfunction Transform(options) {\n if (!(this instanceof Transform)) return new Transform(options);\n Duplex.call(this, options);\n this._transformState = {\n afterTransform: afterTransform.bind(this),\n needTransform: false,\n transforming: false,\n writecb: null,\n writechunk: null,\n writeencoding: null\n }; // start out asking for a readable event once data is transformed.\n\n this._readableState.needReadable = true; // we have implemented the _read method, and done the other things\n // that Readable wants before the first _read call, so unset the\n // sync guard flag.\n\n this._readableState.sync = false;\n\n if (options) {\n if (typeof options.transform === 'function') this._transform = options.transform;\n if (typeof options.flush === 'function') this._flush = options.flush;\n } // When the writable side finishes, then flush out anything remaining.\n\n\n this.on('prefinish', prefinish);\n}\n\nfunction prefinish() {\n var _this = this;\n\n if (typeof this._flush === 'function' && !this._readableState.destroyed) {\n this._flush(function (er, data) {\n done(_this, er, data);\n });\n } else {\n done(this, null, null);\n }\n}\n\nTransform.prototype.push = function (chunk, encoding) {\n this._transformState.needTransform = false;\n return Duplex.prototype.push.call(this, chunk, encoding);\n}; // This is the part where you do stuff!\n// override this function in implementation classes.\n// 'chunk' is an input chunk.\n//\n// Call `push(newChunk)` to pass along transformed output\n// to the readable side. You may call 'push' zero or more times.\n//\n// Call `cb(err)` when you are done with this chunk. If you pass\n// an error, then that'll put the hurt on the whole operation. If you\n// never call cb(), then you'll never get another chunk.\n\n\nTransform.prototype._transform = function (chunk, encoding, cb) {\n cb(new ERR_METHOD_NOT_IMPLEMENTED('_transform()'));\n};\n\nTransform.prototype._write = function (chunk, encoding, cb) {\n var ts = this._transformState;\n ts.writecb = cb;\n ts.writechunk = chunk;\n ts.writeencoding = encoding;\n\n if (!ts.transforming) {\n var rs = this._readableState;\n if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\n }\n}; // Doesn't matter what the args are here.\n// _transform does all the work.\n// That we got here means that the readable side wants more data.\n\n\nTransform.prototype._read = function (n) {\n var ts = this._transformState;\n\n if (ts.writechunk !== null && !ts.transforming) {\n ts.transforming = true;\n\n this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n } else {\n // mark that we need a transform, so that any data that comes in\n // will get processed, now that we've asked for it.\n ts.needTransform = true;\n }\n};\n\nTransform.prototype._destroy = function (err, cb) {\n Duplex.prototype._destroy.call(this, err, function (err2) {\n cb(err2);\n });\n};\n\nfunction done(stream, er, data) {\n if (er) return stream.emit('error', er);\n if (data != null) // single equals check for both `null` and `undefined`\n stream.push(data); // TODO(BridgeAR): Write a test for these two error cases\n // if there's nothing in the write buffer, then that means\n // that nothing more will ever be provided\n\n if (stream._writableState.length) throw new ERR_TRANSFORM_WITH_LENGTH_0();\n if (stream._transformState.transforming) throw new ERR_TRANSFORM_ALREADY_TRANSFORMING();\n return stream.push(null);\n}\n},{\"../errors\":42,\"./_stream_duplex\":43,\"inherits\":38}],47:[function(require,module,exports){\n(function (process,global){(function (){\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// A bit simpler than readable streams.\n// Implement an async ._write(chunk, encoding, cb), and it'll handle all\n// the drain event emission and buffering.\n'use strict';\n\nmodule.exports = Writable;\n/* */\n\nfunction WriteReq(chunk, encoding, cb) {\n this.chunk = chunk;\n this.encoding = encoding;\n this.callback = cb;\n this.next = null;\n} // It seems a linked list but it is not\n// there will be only 2 of these for each stream\n\n\nfunction CorkedRequest(state) {\n var _this = this;\n\n this.next = null;\n this.entry = null;\n\n this.finish = function () {\n onCorkedFinish(_this, state);\n };\n}\n/* */\n\n/**/\n\n\nvar Duplex;\n/**/\n\nWritable.WritableState = WritableState;\n/**/\n\nvar internalUtil = {\n deprecate: require('util-deprecate')\n};\n/**/\n\n/**/\n\nvar Stream = require('./internal/streams/stream');\n/**/\n\n\nvar Buffer = require('buffer').Buffer;\n\nvar OurUint8Array = global.Uint8Array || function () {};\n\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\n\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\nvar destroyImpl = require('./internal/streams/destroy');\n\nvar _require = require('./internal/streams/state'),\n getHighWaterMark = _require.getHighWaterMark;\n\nvar _require$codes = require('../errors').codes,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n ERR_STREAM_CANNOT_PIPE = _require$codes.ERR_STREAM_CANNOT_PIPE,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED,\n ERR_STREAM_NULL_VALUES = _require$codes.ERR_STREAM_NULL_VALUES,\n ERR_STREAM_WRITE_AFTER_END = _require$codes.ERR_STREAM_WRITE_AFTER_END,\n ERR_UNKNOWN_ENCODING = _require$codes.ERR_UNKNOWN_ENCODING;\n\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\n\nrequire('inherits')(Writable, Stream);\n\nfunction nop() {}\n\nfunction WritableState(options, stream, isDuplex) {\n Duplex = Duplex || require('./_stream_duplex');\n options = options || {}; // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream,\n // e.g. options.readableObjectMode vs. options.writableObjectMode, etc.\n\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex; // object stream flag to indicate whether or not this stream\n // contains buffers or objects.\n\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode; // the point at which write() starts returning false\n // Note: 0 is a valid value, means that we always return false if\n // the entire buffer is not flushed immediately on write()\n\n this.highWaterMark = getHighWaterMark(this, options, 'writableHighWaterMark', isDuplex); // if _final has been called\n\n this.finalCalled = false; // drain event flag.\n\n this.needDrain = false; // at the start of calling end()\n\n this.ending = false; // when end() has been called, and returned\n\n this.ended = false; // when 'finish' is emitted\n\n this.finished = false; // has it been destroyed\n\n this.destroyed = false; // should we decode strings into buffers before passing to _write?\n // this is here so that some node-core streams can optimize string\n // handling at a lower level.\n\n var noDecode = options.decodeStrings === false;\n this.decodeStrings = !noDecode; // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n\n this.defaultEncoding = options.defaultEncoding || 'utf8'; // not an actual buffer we keep track of, but a measurement\n // of how much we're waiting to get pushed to some underlying\n // socket or file.\n\n this.length = 0; // a flag to see when we're in the middle of a write.\n\n this.writing = false; // when true all writes will be buffered until .uncork() call\n\n this.corked = 0; // a flag to be able to tell if the onwrite cb is called immediately,\n // or on a later tick. We set this to true at first, because any\n // actions that shouldn't happen until \"later\" should generally also\n // not happen before the first write call.\n\n this.sync = true; // a flag to know if we're processing previously buffered items, which\n // may call the _write() callback in the same tick, so that we don't\n // end up in an overlapped onwrite situation.\n\n this.bufferProcessing = false; // the callback that's passed to _write(chunk,cb)\n\n this.onwrite = function (er) {\n onwrite(stream, er);\n }; // the callback that the user supplies to write(chunk,encoding,cb)\n\n\n this.writecb = null; // the amount that is being written when _write is called.\n\n this.writelen = 0;\n this.bufferedRequest = null;\n this.lastBufferedRequest = null; // number of pending user-supplied write callbacks\n // this must be 0 before 'finish' can be emitted\n\n this.pendingcb = 0; // emit prefinish if the only thing we're waiting for is _write cbs\n // This is relevant for synchronous Transform streams\n\n this.prefinished = false; // True if the error was already emitted and should not be thrown again\n\n this.errorEmitted = false; // Should close be emitted on destroy. Defaults to true.\n\n this.emitClose = options.emitClose !== false; // Should .destroy() be called after 'finish' (and potentially 'end')\n\n this.autoDestroy = !!options.autoDestroy; // count buffered requests\n\n this.bufferedRequestCount = 0; // allocate the first CorkedRequest, there is always\n // one allocated and free to use, and we maintain at most two\n\n this.corkedRequestsFree = new CorkedRequest(this);\n}\n\nWritableState.prototype.getBuffer = function getBuffer() {\n var current = this.bufferedRequest;\n var out = [];\n\n while (current) {\n out.push(current);\n current = current.next;\n }\n\n return out;\n};\n\n(function () {\n try {\n Object.defineProperty(WritableState.prototype, 'buffer', {\n get: internalUtil.deprecate(function writableStateBufferGetter() {\n return this.getBuffer();\n }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')\n });\n } catch (_) {}\n})(); // Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\n\n\nvar realHasInstance;\n\nif (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {\n realHasInstance = Function.prototype[Symbol.hasInstance];\n Object.defineProperty(Writable, Symbol.hasInstance, {\n value: function value(object) {\n if (realHasInstance.call(this, object)) return true;\n if (this !== Writable) return false;\n return object && object._writableState instanceof WritableState;\n }\n });\n} else {\n realHasInstance = function realHasInstance(object) {\n return object instanceof this;\n };\n}\n\nfunction Writable(options) {\n Duplex = Duplex || require('./_stream_duplex'); // Writable ctor is applied to Duplexes, too.\n // `realHasInstance` is necessary because using plain `instanceof`\n // would return false, as no `_writableState` property is attached.\n // Trying to use the custom `instanceof` for Writable here will also break the\n // Node.js LazyTransform implementation, which has a non-trivial getter for\n // `_writableState` that would lead to infinite recursion.\n // Checking for a Stream.Duplex instance is faster here instead of inside\n // the WritableState constructor, at least with V8 6.5\n\n var isDuplex = this instanceof Duplex;\n if (!isDuplex && !realHasInstance.call(Writable, this)) return new Writable(options);\n this._writableState = new WritableState(options, this, isDuplex); // legacy.\n\n this.writable = true;\n\n if (options) {\n if (typeof options.write === 'function') this._write = options.write;\n if (typeof options.writev === 'function') this._writev = options.writev;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n if (typeof options.final === 'function') this._final = options.final;\n }\n\n Stream.call(this);\n} // Otherwise people can pipe Writable streams, which is just wrong.\n\n\nWritable.prototype.pipe = function () {\n errorOrDestroy(this, new ERR_STREAM_CANNOT_PIPE());\n};\n\nfunction writeAfterEnd(stream, cb) {\n var er = new ERR_STREAM_WRITE_AFTER_END(); // TODO: defer error events consistently everywhere, not just the cb\n\n errorOrDestroy(stream, er);\n process.nextTick(cb, er);\n} // Checks that a user-supplied chunk is valid, especially for the particular\n// mode the stream is in. Currently this means that `null` is never accepted\n// and undefined/non-string values are only allowed in object mode.\n\n\nfunction validChunk(stream, state, chunk, cb) {\n var er;\n\n if (chunk === null) {\n er = new ERR_STREAM_NULL_VALUES();\n } else if (typeof chunk !== 'string' && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer'], chunk);\n }\n\n if (er) {\n errorOrDestroy(stream, er);\n process.nextTick(cb, er);\n return false;\n }\n\n return true;\n}\n\nWritable.prototype.write = function (chunk, encoding, cb) {\n var state = this._writableState;\n var ret = false;\n\n var isBuf = !state.objectMode && _isUint8Array(chunk);\n\n if (isBuf && !Buffer.isBuffer(chunk)) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\n if (typeof cb !== 'function') cb = nop;\n if (state.ending) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {\n state.pendingcb++;\n ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);\n }\n return ret;\n};\n\nWritable.prototype.cork = function () {\n this._writableState.corked++;\n};\n\nWritable.prototype.uncork = function () {\n var state = this._writableState;\n\n if (state.corked) {\n state.corked--;\n if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n }\n};\n\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n // node::ParseEncoding() requires lower case.\n if (typeof encoding === 'string') encoding = encoding.toLowerCase();\n if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new ERR_UNKNOWN_ENCODING(encoding);\n this._writableState.defaultEncoding = encoding;\n return this;\n};\n\nObject.defineProperty(Writable.prototype, 'writableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState && this._writableState.getBuffer();\n }\n});\n\nfunction decodeChunk(state, chunk, encoding) {\n if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n chunk = Buffer.from(chunk, encoding);\n }\n\n return chunk;\n}\n\nObject.defineProperty(Writable.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.highWaterMark;\n }\n}); // if we're already writing something, then just put this\n// in the queue, and wait our turn. Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\n\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n if (!isBuf) {\n var newChunk = decodeChunk(state, chunk, encoding);\n\n if (chunk !== newChunk) {\n isBuf = true;\n encoding = 'buffer';\n chunk = newChunk;\n }\n }\n\n var len = state.objectMode ? 1 : chunk.length;\n state.length += len;\n var ret = state.length < state.highWaterMark; // we must ensure that previous needDrain will not be reset to false.\n\n if (!ret) state.needDrain = true;\n\n if (state.writing || state.corked) {\n var last = state.lastBufferedRequest;\n state.lastBufferedRequest = {\n chunk: chunk,\n encoding: encoding,\n isBuf: isBuf,\n callback: cb,\n next: null\n };\n\n if (last) {\n last.next = state.lastBufferedRequest;\n } else {\n state.bufferedRequest = state.lastBufferedRequest;\n }\n\n state.bufferedRequestCount += 1;\n } else {\n doWrite(stream, state, false, len, chunk, encoding, cb);\n }\n\n return ret;\n}\n\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n state.writelen = len;\n state.writecb = cb;\n state.writing = true;\n state.sync = true;\n if (state.destroyed) state.onwrite(new ERR_STREAM_DESTROYED('write'));else if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n state.sync = false;\n}\n\nfunction onwriteError(stream, state, sync, er, cb) {\n --state.pendingcb;\n\n if (sync) {\n // defer the callback if we are being called synchronously\n // to avoid piling up things on the stack\n process.nextTick(cb, er); // this can emit finish, and it will always happen\n // after error\n\n process.nextTick(finishMaybe, stream, state);\n stream._writableState.errorEmitted = true;\n errorOrDestroy(stream, er);\n } else {\n // the caller expect this to happen before if\n // it is async\n cb(er);\n stream._writableState.errorEmitted = true;\n errorOrDestroy(stream, er); // this can emit finish, but finish must\n // always follow error\n\n finishMaybe(stream, state);\n }\n}\n\nfunction onwriteStateUpdate(state) {\n state.writing = false;\n state.writecb = null;\n state.length -= state.writelen;\n state.writelen = 0;\n}\n\nfunction onwrite(stream, er) {\n var state = stream._writableState;\n var sync = state.sync;\n var cb = state.writecb;\n if (typeof cb !== 'function') throw new ERR_MULTIPLE_CALLBACK();\n onwriteStateUpdate(state);\n if (er) onwriteError(stream, state, sync, er, cb);else {\n // Check if we're actually ready to finish, but don't emit yet\n var finished = needFinish(state) || stream.destroyed;\n\n if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n clearBuffer(stream, state);\n }\n\n if (sync) {\n process.nextTick(afterWrite, stream, state, finished, cb);\n } else {\n afterWrite(stream, state, finished, cb);\n }\n }\n}\n\nfunction afterWrite(stream, state, finished, cb) {\n if (!finished) onwriteDrain(stream, state);\n state.pendingcb--;\n cb();\n finishMaybe(stream, state);\n} // Must force callback to be called on nextTick, so that we don't\n// emit 'drain' before the write() consumer gets the 'false' return\n// value, and has a chance to attach a 'drain' listener.\n\n\nfunction onwriteDrain(stream, state) {\n if (state.length === 0 && state.needDrain) {\n state.needDrain = false;\n stream.emit('drain');\n }\n} // if there's something in the buffer waiting, then process it\n\n\nfunction clearBuffer(stream, state) {\n state.bufferProcessing = true;\n var entry = state.bufferedRequest;\n\n if (stream._writev && entry && entry.next) {\n // Fast case, write everything using _writev()\n var l = state.bufferedRequestCount;\n var buffer = new Array(l);\n var holder = state.corkedRequestsFree;\n holder.entry = entry;\n var count = 0;\n var allBuffers = true;\n\n while (entry) {\n buffer[count] = entry;\n if (!entry.isBuf) allBuffers = false;\n entry = entry.next;\n count += 1;\n }\n\n buffer.allBuffers = allBuffers;\n doWrite(stream, state, true, state.length, buffer, '', holder.finish); // doWrite is almost always async, defer these to save a bit of time\n // as the hot path ends with doWrite\n\n state.pendingcb++;\n state.lastBufferedRequest = null;\n\n if (holder.next) {\n state.corkedRequestsFree = holder.next;\n holder.next = null;\n } else {\n state.corkedRequestsFree = new CorkedRequest(state);\n }\n\n state.bufferedRequestCount = 0;\n } else {\n // Slow case, write chunks one-by-one\n while (entry) {\n var chunk = entry.chunk;\n var encoding = entry.encoding;\n var cb = entry.callback;\n var len = state.objectMode ? 1 : chunk.length;\n doWrite(stream, state, false, len, chunk, encoding, cb);\n entry = entry.next;\n state.bufferedRequestCount--; // if we didn't call the onwrite immediately, then\n // it means that we need to wait until it does.\n // also, that means that the chunk and cb are currently\n // being processed, so move the buffer counter past them.\n\n if (state.writing) {\n break;\n }\n }\n\n if (entry === null) state.lastBufferedRequest = null;\n }\n\n state.bufferedRequest = entry;\n state.bufferProcessing = false;\n}\n\nWritable.prototype._write = function (chunk, encoding, cb) {\n cb(new ERR_METHOD_NOT_IMPLEMENTED('_write()'));\n};\n\nWritable.prototype._writev = null;\n\nWritable.prototype.end = function (chunk, encoding, cb) {\n var state = this._writableState;\n\n if (typeof chunk === 'function') {\n cb = chunk;\n chunk = null;\n encoding = null;\n } else if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (chunk !== null && chunk !== undefined) this.write(chunk, encoding); // .end() fully uncorks\n\n if (state.corked) {\n state.corked = 1;\n this.uncork();\n } // ignore unnecessary end() calls.\n\n\n if (!state.ending) endWritable(this, state, cb);\n return this;\n};\n\nObject.defineProperty(Writable.prototype, 'writableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.length;\n }\n});\n\nfunction needFinish(state) {\n return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\n\nfunction callFinal(stream, state) {\n stream._final(function (err) {\n state.pendingcb--;\n\n if (err) {\n errorOrDestroy(stream, err);\n }\n\n state.prefinished = true;\n stream.emit('prefinish');\n finishMaybe(stream, state);\n });\n}\n\nfunction prefinish(stream, state) {\n if (!state.prefinished && !state.finalCalled) {\n if (typeof stream._final === 'function' && !state.destroyed) {\n state.pendingcb++;\n state.finalCalled = true;\n process.nextTick(callFinal, stream, state);\n } else {\n state.prefinished = true;\n stream.emit('prefinish');\n }\n }\n}\n\nfunction finishMaybe(stream, state) {\n var need = needFinish(state);\n\n if (need) {\n prefinish(stream, state);\n\n if (state.pendingcb === 0) {\n state.finished = true;\n stream.emit('finish');\n\n if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the readable side is ready for autoDestroy as well\n var rState = stream._readableState;\n\n if (!rState || rState.autoDestroy && rState.endEmitted) {\n stream.destroy();\n }\n }\n }\n }\n\n return need;\n}\n\nfunction endWritable(stream, state, cb) {\n state.ending = true;\n finishMaybe(stream, state);\n\n if (cb) {\n if (state.finished) process.nextTick(cb);else stream.once('finish', cb);\n }\n\n state.ended = true;\n stream.writable = false;\n}\n\nfunction onCorkedFinish(corkReq, state, err) {\n var entry = corkReq.entry;\n corkReq.entry = null;\n\n while (entry) {\n var cb = entry.callback;\n state.pendingcb--;\n cb(err);\n entry = entry.next;\n } // reuse the free corkReq.\n\n\n state.corkedRequestsFree.next = corkReq;\n}\n\nObject.defineProperty(Writable.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._writableState === undefined) {\n return false;\n }\n\n return this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._writableState) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._writableState.destroyed = value;\n }\n});\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\n\nWritable.prototype._destroy = function (err, cb) {\n cb(err);\n};\n}).call(this)}).call(this,require('_process'),typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n\n},{\"../errors\":42,\"./_stream_duplex\":43,\"./internal/streams/destroy\":50,\"./internal/streams/state\":54,\"./internal/streams/stream\":55,\"_process\":39,\"buffer\":35,\"inherits\":38,\"util-deprecate\":57}],48:[function(require,module,exports){\n(function (process){(function (){\n'use strict';\n\nvar _Object$setPrototypeO;\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar finished = require('./end-of-stream');\n\nvar kLastResolve = Symbol('lastResolve');\nvar kLastReject = Symbol('lastReject');\nvar kError = Symbol('error');\nvar kEnded = Symbol('ended');\nvar kLastPromise = Symbol('lastPromise');\nvar kHandlePromise = Symbol('handlePromise');\nvar kStream = Symbol('stream');\n\nfunction createIterResult(value, done) {\n return {\n value: value,\n done: done\n };\n}\n\nfunction readAndResolve(iter) {\n var resolve = iter[kLastResolve];\n\n if (resolve !== null) {\n var data = iter[kStream].read(); // we defer if data is null\n // we can be expecting either 'end' or\n // 'error'\n\n if (data !== null) {\n iter[kLastPromise] = null;\n iter[kLastResolve] = null;\n iter[kLastReject] = null;\n resolve(createIterResult(data, false));\n }\n }\n}\n\nfunction onReadable(iter) {\n // we wait for the next tick, because it might\n // emit an error with process.nextTick\n process.nextTick(readAndResolve, iter);\n}\n\nfunction wrapForNext(lastPromise, iter) {\n return function (resolve, reject) {\n lastPromise.then(function () {\n if (iter[kEnded]) {\n resolve(createIterResult(undefined, true));\n return;\n }\n\n iter[kHandlePromise](resolve, reject);\n }, reject);\n };\n}\n\nvar AsyncIteratorPrototype = Object.getPrototypeOf(function () {});\nvar ReadableStreamAsyncIteratorPrototype = Object.setPrototypeOf((_Object$setPrototypeO = {\n get stream() {\n return this[kStream];\n },\n\n next: function next() {\n var _this = this;\n\n // if we have detected an error in the meanwhile\n // reject straight away\n var error = this[kError];\n\n if (error !== null) {\n return Promise.reject(error);\n }\n\n if (this[kEnded]) {\n return Promise.resolve(createIterResult(undefined, true));\n }\n\n if (this[kStream].destroyed) {\n // We need to defer via nextTick because if .destroy(err) is\n // called, the error will be emitted via nextTick, and\n // we cannot guarantee that there is no error lingering around\n // waiting to be emitted.\n return new Promise(function (resolve, reject) {\n process.nextTick(function () {\n if (_this[kError]) {\n reject(_this[kError]);\n } else {\n resolve(createIterResult(undefined, true));\n }\n });\n });\n } // if we have multiple next() calls\n // we will wait for the previous Promise to finish\n // this logic is optimized to support for await loops,\n // where next() is only called once at a time\n\n\n var lastPromise = this[kLastPromise];\n var promise;\n\n if (lastPromise) {\n promise = new Promise(wrapForNext(lastPromise, this));\n } else {\n // fast path needed to support multiple this.push()\n // without triggering the next() queue\n var data = this[kStream].read();\n\n if (data !== null) {\n return Promise.resolve(createIterResult(data, false));\n }\n\n promise = new Promise(this[kHandlePromise]);\n }\n\n this[kLastPromise] = promise;\n return promise;\n }\n}, _defineProperty(_Object$setPrototypeO, Symbol.asyncIterator, function () {\n return this;\n}), _defineProperty(_Object$setPrototypeO, \"return\", function _return() {\n var _this2 = this;\n\n // destroy(err, cb) is a private API\n // we can guarantee we have that here, because we control the\n // Readable class this is attached to\n return new Promise(function (resolve, reject) {\n _this2[kStream].destroy(null, function (err) {\n if (err) {\n reject(err);\n return;\n }\n\n resolve(createIterResult(undefined, true));\n });\n });\n}), _Object$setPrototypeO), AsyncIteratorPrototype);\n\nvar createReadableStreamAsyncIterator = function createReadableStreamAsyncIterator(stream) {\n var _Object$create;\n\n var iterator = Object.create(ReadableStreamAsyncIteratorPrototype, (_Object$create = {}, _defineProperty(_Object$create, kStream, {\n value: stream,\n writable: true\n }), _defineProperty(_Object$create, kLastResolve, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kLastReject, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kError, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kEnded, {\n value: stream._readableState.endEmitted,\n writable: true\n }), _defineProperty(_Object$create, kHandlePromise, {\n value: function value(resolve, reject) {\n var data = iterator[kStream].read();\n\n if (data) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(data, false));\n } else {\n iterator[kLastResolve] = resolve;\n iterator[kLastReject] = reject;\n }\n },\n writable: true\n }), _Object$create));\n iterator[kLastPromise] = null;\n finished(stream, function (err) {\n if (err && err.code !== 'ERR_STREAM_PREMATURE_CLOSE') {\n var reject = iterator[kLastReject]; // reject if we are waiting for data in the Promise\n // returned by next() and store the error\n\n if (reject !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n reject(err);\n }\n\n iterator[kError] = err;\n return;\n }\n\n var resolve = iterator[kLastResolve];\n\n if (resolve !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(undefined, true));\n }\n\n iterator[kEnded] = true;\n });\n stream.on('readable', onReadable.bind(null, iterator));\n return iterator;\n};\n\nmodule.exports = createReadableStreamAsyncIterator;\n}).call(this)}).call(this,require('_process'))\n\n},{\"./end-of-stream\":51,\"_process\":39}],49:[function(require,module,exports){\n'use strict';\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar _require = require('buffer'),\n Buffer = _require.Buffer;\n\nvar _require2 = require('util'),\n inspect = _require2.inspect;\n\nvar custom = inspect && inspect.custom || 'inspect';\n\nfunction copyBuffer(src, target, offset) {\n Buffer.prototype.copy.call(src, target, offset);\n}\n\nmodule.exports =\n/*#__PURE__*/\nfunction () {\n function BufferList() {\n _classCallCheck(this, BufferList);\n\n this.head = null;\n this.tail = null;\n this.length = 0;\n }\n\n _createClass(BufferList, [{\n key: \"push\",\n value: function push(v) {\n var entry = {\n data: v,\n next: null\n };\n if (this.length > 0) this.tail.next = entry;else this.head = entry;\n this.tail = entry;\n ++this.length;\n }\n }, {\n key: \"unshift\",\n value: function unshift(v) {\n var entry = {\n data: v,\n next: this.head\n };\n if (this.length === 0) this.tail = entry;\n this.head = entry;\n ++this.length;\n }\n }, {\n key: \"shift\",\n value: function shift() {\n if (this.length === 0) return;\n var ret = this.head.data;\n if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;\n --this.length;\n return ret;\n }\n }, {\n key: \"clear\",\n value: function clear() {\n this.head = this.tail = null;\n this.length = 0;\n }\n }, {\n key: \"join\",\n value: function join(s) {\n if (this.length === 0) return '';\n var p = this.head;\n var ret = '' + p.data;\n\n while (p = p.next) {\n ret += s + p.data;\n }\n\n return ret;\n }\n }, {\n key: \"concat\",\n value: function concat(n) {\n if (this.length === 0) return Buffer.alloc(0);\n var ret = Buffer.allocUnsafe(n >>> 0);\n var p = this.head;\n var i = 0;\n\n while (p) {\n copyBuffer(p.data, ret, i);\n i += p.data.length;\n p = p.next;\n }\n\n return ret;\n } // Consumes a specified amount of bytes or characters from the buffered data.\n\n }, {\n key: \"consume\",\n value: function consume(n, hasStrings) {\n var ret;\n\n if (n < this.head.data.length) {\n // `slice` is the same for buffers and strings.\n ret = this.head.data.slice(0, n);\n this.head.data = this.head.data.slice(n);\n } else if (n === this.head.data.length) {\n // First chunk is a perfect match.\n ret = this.shift();\n } else {\n // Result spans more than one buffer.\n ret = hasStrings ? this._getString(n) : this._getBuffer(n);\n }\n\n return ret;\n }\n }, {\n key: \"first\",\n value: function first() {\n return this.head.data;\n } // Consumes a specified amount of characters from the buffered data.\n\n }, {\n key: \"_getString\",\n value: function _getString(n) {\n var p = this.head;\n var c = 1;\n var ret = p.data;\n n -= ret.length;\n\n while (p = p.next) {\n var str = p.data;\n var nb = n > str.length ? str.length : n;\n if (nb === str.length) ret += str;else ret += str.slice(0, n);\n n -= nb;\n\n if (n === 0) {\n if (nb === str.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = str.slice(nb);\n }\n\n break;\n }\n\n ++c;\n }\n\n this.length -= c;\n return ret;\n } // Consumes a specified amount of bytes from the buffered data.\n\n }, {\n key: \"_getBuffer\",\n value: function _getBuffer(n) {\n var ret = Buffer.allocUnsafe(n);\n var p = this.head;\n var c = 1;\n p.data.copy(ret);\n n -= p.data.length;\n\n while (p = p.next) {\n var buf = p.data;\n var nb = n > buf.length ? buf.length : n;\n buf.copy(ret, ret.length - n, 0, nb);\n n -= nb;\n\n if (n === 0) {\n if (nb === buf.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = buf.slice(nb);\n }\n\n break;\n }\n\n ++c;\n }\n\n this.length -= c;\n return ret;\n } // Make sure the linked list only shows the minimal necessary information.\n\n }, {\n key: custom,\n value: function value(_, options) {\n return inspect(this, _objectSpread({}, options, {\n // Only inspect one level.\n depth: 0,\n // It should not recurse.\n customInspect: false\n }));\n }\n }]);\n\n return BufferList;\n}();\n},{\"buffer\":35,\"util\":34}],50:[function(require,module,exports){\n(function (process){(function (){\n'use strict'; // undocumented cb() API, needed for core, not for public API\n\nfunction destroy(err, cb) {\n var _this = this;\n\n var readableDestroyed = this._readableState && this._readableState.destroyed;\n var writableDestroyed = this._writableState && this._writableState.destroyed;\n\n if (readableDestroyed || writableDestroyed) {\n if (cb) {\n cb(err);\n } else if (err) {\n if (!this._writableState) {\n process.nextTick(emitErrorNT, this, err);\n } else if (!this._writableState.errorEmitted) {\n this._writableState.errorEmitted = true;\n process.nextTick(emitErrorNT, this, err);\n }\n }\n\n return this;\n } // we set destroyed to true before firing error callbacks in order\n // to make it re-entrance safe in case destroy() is called within callbacks\n\n\n if (this._readableState) {\n this._readableState.destroyed = true;\n } // if this is a duplex stream mark the writable part as destroyed as well\n\n\n if (this._writableState) {\n this._writableState.destroyed = true;\n }\n\n this._destroy(err || null, function (err) {\n if (!cb && err) {\n if (!_this._writableState) {\n process.nextTick(emitErrorAndCloseNT, _this, err);\n } else if (!_this._writableState.errorEmitted) {\n _this._writableState.errorEmitted = true;\n process.nextTick(emitErrorAndCloseNT, _this, err);\n } else {\n process.nextTick(emitCloseNT, _this);\n }\n } else if (cb) {\n process.nextTick(emitCloseNT, _this);\n cb(err);\n } else {\n process.nextTick(emitCloseNT, _this);\n }\n });\n\n return this;\n}\n\nfunction emitErrorAndCloseNT(self, err) {\n emitErrorNT(self, err);\n emitCloseNT(self);\n}\n\nfunction emitCloseNT(self) {\n if (self._writableState && !self._writableState.emitClose) return;\n if (self._readableState && !self._readableState.emitClose) return;\n self.emit('close');\n}\n\nfunction undestroy() {\n if (this._readableState) {\n this._readableState.destroyed = false;\n this._readableState.reading = false;\n this._readableState.ended = false;\n this._readableState.endEmitted = false;\n }\n\n if (this._writableState) {\n this._writableState.destroyed = false;\n this._writableState.ended = false;\n this._writableState.ending = false;\n this._writableState.finalCalled = false;\n this._writableState.prefinished = false;\n this._writableState.finished = false;\n this._writableState.errorEmitted = false;\n }\n}\n\nfunction emitErrorNT(self, err) {\n self.emit('error', err);\n}\n\nfunction errorOrDestroy(stream, err) {\n // We have tests that rely on errors being emitted\n // in the same tick, so changing this is semver major.\n // For now when you opt-in to autoDestroy we allow\n // the error to be emitted nextTick. In a future\n // semver major update we should change the default to this.\n var rState = stream._readableState;\n var wState = stream._writableState;\n if (rState && rState.autoDestroy || wState && wState.autoDestroy) stream.destroy(err);else stream.emit('error', err);\n}\n\nmodule.exports = {\n destroy: destroy,\n undestroy: undestroy,\n errorOrDestroy: errorOrDestroy\n};\n}).call(this)}).call(this,require('_process'))\n\n},{\"_process\":39}],51:[function(require,module,exports){\n// Ported from https://github.com/mafintosh/end-of-stream with\n// permission from the author, Mathias Buus (@mafintosh).\n'use strict';\n\nvar ERR_STREAM_PREMATURE_CLOSE = require('../../../errors').codes.ERR_STREAM_PREMATURE_CLOSE;\n\nfunction once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n callback.apply(this, args);\n };\n}\n\nfunction noop() {}\n\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\n}\n\nfunction eos(stream, opts, callback) {\n if (typeof opts === 'function') return eos(stream, null, opts);\n if (!opts) opts = {};\n callback = once(callback || noop);\n var readable = opts.readable || opts.readable !== false && stream.readable;\n var writable = opts.writable || opts.writable !== false && stream.writable;\n\n var onlegacyfinish = function onlegacyfinish() {\n if (!stream.writable) onfinish();\n };\n\n var writableEnded = stream._writableState && stream._writableState.finished;\n\n var onfinish = function onfinish() {\n writable = false;\n writableEnded = true;\n if (!readable) callback.call(stream);\n };\n\n var readableEnded = stream._readableState && stream._readableState.endEmitted;\n\n var onend = function onend() {\n readable = false;\n readableEnded = true;\n if (!writable) callback.call(stream);\n };\n\n var onerror = function onerror(err) {\n callback.call(stream, err);\n };\n\n var onclose = function onclose() {\n var err;\n\n if (readable && !readableEnded) {\n if (!stream._readableState || !stream._readableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n return callback.call(stream, err);\n }\n\n if (writable && !writableEnded) {\n if (!stream._writableState || !stream._writableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n return callback.call(stream, err);\n }\n };\n\n var onrequest = function onrequest() {\n stream.req.on('finish', onfinish);\n };\n\n if (isRequest(stream)) {\n stream.on('complete', onfinish);\n stream.on('abort', onclose);\n if (stream.req) onrequest();else stream.on('request', onrequest);\n } else if (writable && !stream._writableState) {\n // legacy streams\n stream.on('end', onlegacyfinish);\n stream.on('close', onlegacyfinish);\n }\n\n stream.on('end', onend);\n stream.on('finish', onfinish);\n if (opts.error !== false) stream.on('error', onerror);\n stream.on('close', onclose);\n return function () {\n stream.removeListener('complete', onfinish);\n stream.removeListener('abort', onclose);\n stream.removeListener('request', onrequest);\n if (stream.req) stream.req.removeListener('finish', onfinish);\n stream.removeListener('end', onlegacyfinish);\n stream.removeListener('close', onlegacyfinish);\n stream.removeListener('finish', onfinish);\n stream.removeListener('end', onend);\n stream.removeListener('error', onerror);\n stream.removeListener('close', onclose);\n };\n}\n\nmodule.exports = eos;\n},{\"../../../errors\":42}],52:[function(require,module,exports){\nmodule.exports = function () {\n throw new Error('Readable.from is not available in the browser')\n};\n\n},{}],53:[function(require,module,exports){\n// Ported from https://github.com/mafintosh/pump with\n// permission from the author, Mathias Buus (@mafintosh).\n'use strict';\n\nvar eos;\n\nfunction once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n callback.apply(void 0, arguments);\n };\n}\n\nvar _require$codes = require('../../../errors').codes,\n ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED;\n\nfunction noop(err) {\n // Rethrow the error if it exists to avoid swallowing it\n if (err) throw err;\n}\n\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\n}\n\nfunction destroyer(stream, reading, writing, callback) {\n callback = once(callback);\n var closed = false;\n stream.on('close', function () {\n closed = true;\n });\n if (eos === undefined) eos = require('./end-of-stream');\n eos(stream, {\n readable: reading,\n writable: writing\n }, function (err) {\n if (err) return callback(err);\n closed = true;\n callback();\n });\n var destroyed = false;\n return function (err) {\n if (closed) return;\n if (destroyed) return;\n destroyed = true; // request.destroy just do .end - .abort is what we want\n\n if (isRequest(stream)) return stream.abort();\n if (typeof stream.destroy === 'function') return stream.destroy();\n callback(err || new ERR_STREAM_DESTROYED('pipe'));\n };\n}\n\nfunction call(fn) {\n fn();\n}\n\nfunction pipe(from, to) {\n return from.pipe(to);\n}\n\nfunction popCallback(streams) {\n if (!streams.length) return noop;\n if (typeof streams[streams.length - 1] !== 'function') return noop;\n return streams.pop();\n}\n\nfunction pipeline() {\n for (var _len = arguments.length, streams = new Array(_len), _key = 0; _key < _len; _key++) {\n streams[_key] = arguments[_key];\n }\n\n var callback = popCallback(streams);\n if (Array.isArray(streams[0])) streams = streams[0];\n\n if (streams.length < 2) {\n throw new ERR_MISSING_ARGS('streams');\n }\n\n var error;\n var destroys = streams.map(function (stream, i) {\n var reading = i < streams.length - 1;\n var writing = i > 0;\n return destroyer(stream, reading, writing, function (err) {\n if (!error) error = err;\n if (err) destroys.forEach(call);\n if (reading) return;\n destroys.forEach(call);\n callback(error);\n });\n });\n return streams.reduce(pipe);\n}\n\nmodule.exports = pipeline;\n},{\"../../../errors\":42,\"./end-of-stream\":51}],54:[function(require,module,exports){\n'use strict';\n\nvar ERR_INVALID_OPT_VALUE = require('../../../errors').codes.ERR_INVALID_OPT_VALUE;\n\nfunction highWaterMarkFrom(options, isDuplex, duplexKey) {\n return options.highWaterMark != null ? options.highWaterMark : isDuplex ? options[duplexKey] : null;\n}\n\nfunction getHighWaterMark(state, options, duplexKey, isDuplex) {\n var hwm = highWaterMarkFrom(options, isDuplex, duplexKey);\n\n if (hwm != null) {\n if (!(isFinite(hwm) && Math.floor(hwm) === hwm) || hwm < 0) {\n var name = isDuplex ? duplexKey : 'highWaterMark';\n throw new ERR_INVALID_OPT_VALUE(name, hwm);\n }\n\n return Math.floor(hwm);\n } // Default value\n\n\n return state.objectMode ? 16 : 16 * 1024;\n}\n\nmodule.exports = {\n getHighWaterMark: getHighWaterMark\n};\n},{\"../../../errors\":42}],55:[function(require,module,exports){\nmodule.exports = require('events').EventEmitter;\n\n},{\"events\":36}],56:[function(require,module,exports){\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n/**/\n\nvar Buffer = require('safe-buffer').Buffer;\n/**/\n\nvar isEncoding = Buffer.isEncoding || function (encoding) {\n encoding = '' + encoding;\n switch (encoding && encoding.toLowerCase()) {\n case 'hex':case 'utf8':case 'utf-8':case 'ascii':case 'binary':case 'base64':case 'ucs2':case 'ucs-2':case 'utf16le':case 'utf-16le':case 'raw':\n return true;\n default:\n return false;\n }\n};\n\nfunction _normalizeEncoding(enc) {\n if (!enc) return 'utf8';\n var retried;\n while (true) {\n switch (enc) {\n case 'utf8':\n case 'utf-8':\n return 'utf8';\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return 'utf16le';\n case 'latin1':\n case 'binary':\n return 'latin1';\n case 'base64':\n case 'ascii':\n case 'hex':\n return enc;\n default:\n if (retried) return; // undefined\n enc = ('' + enc).toLowerCase();\n retried = true;\n }\n }\n};\n\n// Do not cache `Buffer.isEncoding` when checking encoding names as some\n// modules monkey-patch it to support additional encodings\nfunction normalizeEncoding(enc) {\n var nenc = _normalizeEncoding(enc);\n if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc);\n return nenc || enc;\n}\n\n// StringDecoder provides an interface for efficiently splitting a series of\n// buffers into a series of JS strings without breaking apart multi-byte\n// characters.\nexports.StringDecoder = StringDecoder;\nfunction StringDecoder(encoding) {\n this.encoding = normalizeEncoding(encoding);\n var nb;\n switch (this.encoding) {\n case 'utf16le':\n this.text = utf16Text;\n this.end = utf16End;\n nb = 4;\n break;\n case 'utf8':\n this.fillLast = utf8FillLast;\n nb = 4;\n break;\n case 'base64':\n this.text = base64Text;\n this.end = base64End;\n nb = 3;\n break;\n default:\n this.write = simpleWrite;\n this.end = simpleEnd;\n return;\n }\n this.lastNeed = 0;\n this.lastTotal = 0;\n this.lastChar = Buffer.allocUnsafe(nb);\n}\n\nStringDecoder.prototype.write = function (buf) {\n if (buf.length === 0) return '';\n var r;\n var i;\n if (this.lastNeed) {\n r = this.fillLast(buf);\n if (r === undefined) return '';\n i = this.lastNeed;\n this.lastNeed = 0;\n } else {\n i = 0;\n }\n if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i);\n return r || '';\n};\n\nStringDecoder.prototype.end = utf8End;\n\n// Returns only complete characters in a Buffer\nStringDecoder.prototype.text = utf8Text;\n\n// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer\nStringDecoder.prototype.fillLast = function (buf) {\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length);\n this.lastNeed -= buf.length;\n};\n\n// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a\n// continuation byte. If an invalid byte is detected, -2 is returned.\nfunction utf8CheckByte(byte) {\n if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4;\n return byte >> 6 === 0x02 ? -1 : -2;\n}\n\n// Checks at most 3 bytes at the end of a Buffer in order to detect an\n// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4)\n// needed to complete the UTF-8 character (if applicable) are returned.\nfunction utf8CheckIncomplete(self, buf, i) {\n var j = buf.length - 1;\n if (j < i) return 0;\n var nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 1;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 2;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) {\n if (nb === 2) nb = 0;else self.lastNeed = nb - 3;\n }\n return nb;\n }\n return 0;\n}\n\n// Validates as many continuation bytes for a multi-byte UTF-8 character as\n// needed or are available. If we see a non-continuation byte where we expect\n// one, we \"replace\" the validated continuation bytes we've seen so far with\n// a single UTF-8 replacement character ('\\ufffd'), to match v8's UTF-8 decoding\n// behavior. The continuation byte check is included three times in the case\n// where all of the continuation bytes for a character exist in the same buffer.\n// It is also done this way as a slight performance increase instead of using a\n// loop.\nfunction utf8CheckExtraBytes(self, buf, p) {\n if ((buf[0] & 0xC0) !== 0x80) {\n self.lastNeed = 0;\n return '\\ufffd';\n }\n if (self.lastNeed > 1 && buf.length > 1) {\n if ((buf[1] & 0xC0) !== 0x80) {\n self.lastNeed = 1;\n return '\\ufffd';\n }\n if (self.lastNeed > 2 && buf.length > 2) {\n if ((buf[2] & 0xC0) !== 0x80) {\n self.lastNeed = 2;\n return '\\ufffd';\n }\n }\n }\n}\n\n// Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer.\nfunction utf8FillLast(buf) {\n var p = this.lastTotal - this.lastNeed;\n var r = utf8CheckExtraBytes(this, buf, p);\n if (r !== undefined) return r;\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, p, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, p, 0, buf.length);\n this.lastNeed -= buf.length;\n}\n\n// Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a\n// partial character, the character's bytes are buffered until the required\n// number of bytes are available.\nfunction utf8Text(buf, i) {\n var total = utf8CheckIncomplete(this, buf, i);\n if (!this.lastNeed) return buf.toString('utf8', i);\n this.lastTotal = total;\n var end = buf.length - (total - this.lastNeed);\n buf.copy(this.lastChar, 0, end);\n return buf.toString('utf8', i, end);\n}\n\n// For UTF-8, a replacement character is added when ending on a partial\n// character.\nfunction utf8End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + '\\ufffd';\n return r;\n}\n\n// UTF-16LE typically needs two bytes per character, but even if we have an even\n// number of bytes available, we need to check if we end on a leading/high\n// surrogate. In that case, we need to wait for the next two bytes in order to\n// decode the last character properly.\nfunction utf16Text(buf, i) {\n if ((buf.length - i) % 2 === 0) {\n var r = buf.toString('utf16le', i);\n if (r) {\n var c = r.charCodeAt(r.length - 1);\n if (c >= 0xD800 && c <= 0xDBFF) {\n this.lastNeed = 2;\n this.lastTotal = 4;\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n return r.slice(0, -1);\n }\n }\n return r;\n }\n this.lastNeed = 1;\n this.lastTotal = 2;\n this.lastChar[0] = buf[buf.length - 1];\n return buf.toString('utf16le', i, buf.length - 1);\n}\n\n// For UTF-16LE we do not explicitly append special replacement characters if we\n// end on a partial character, we simply let v8 handle that.\nfunction utf16End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) {\n var end = this.lastTotal - this.lastNeed;\n return r + this.lastChar.toString('utf16le', 0, end);\n }\n return r;\n}\n\nfunction base64Text(buf, i) {\n var n = (buf.length - i) % 3;\n if (n === 0) return buf.toString('base64', i);\n this.lastNeed = 3 - n;\n this.lastTotal = 3;\n if (n === 1) {\n this.lastChar[0] = buf[buf.length - 1];\n } else {\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n }\n return buf.toString('base64', i, buf.length - n);\n}\n\nfunction base64End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed);\n return r;\n}\n\n// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex)\nfunction simpleWrite(buf) {\n return buf.toString(this.encoding);\n}\n\nfunction simpleEnd(buf) {\n return buf && buf.length ? this.write(buf) : '';\n}\n},{\"safe-buffer\":40}],57:[function(require,module,exports){\n(function (global){(function (){\n\n/**\n * Module exports.\n */\n\nmodule.exports = deprecate;\n\n/**\n * Mark that a method should not be used.\n * Returns a modified function which warns once by default.\n *\n * If `localStorage.noDeprecation = true` is set, then it is a no-op.\n *\n * If `localStorage.throwDeprecation = true` is set, then deprecated functions\n * will throw an Error when invoked.\n *\n * If `localStorage.traceDeprecation = true` is set, then deprecated functions\n * will invoke `console.trace()` instead of `console.error()`.\n *\n * @param {Function} fn - the function to deprecate\n * @param {String} msg - the string to print to the console when `fn` is invoked\n * @returns {Function} a new \"deprecated\" version of `fn`\n * @api public\n */\n\nfunction deprecate (fn, msg) {\n if (config('noDeprecation')) {\n return fn;\n }\n\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (config('throwDeprecation')) {\n throw new Error(msg);\n } else if (config('traceDeprecation')) {\n console.trace(msg);\n } else {\n console.warn(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n}\n\n/**\n * Checks `localStorage` for boolean values for the given `name`.\n *\n * @param {String} name\n * @returns {Boolean}\n * @api private\n */\n\nfunction config (name) {\n // accessing global.localStorage can trigger a DOMException in sandboxed iframes\n try {\n if (!global.localStorage) return false;\n } catch (_) {\n return false;\n }\n var val = global.localStorage[name];\n if (null == val) return false;\n return String(val).toLowerCase() === 'true';\n}\n\n}).call(this)}).call(this,typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n\n},{}],58:[function(require,module,exports){\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"v1\", {\n enumerable: true,\n get: function () {\n return _v.default;\n }\n});\nObject.defineProperty(exports, \"v3\", {\n enumerable: true,\n get: function () {\n return _v2.default;\n }\n});\nObject.defineProperty(exports, \"v4\", {\n enumerable: true,\n get: function () {\n return _v3.default;\n }\n});\nObject.defineProperty(exports, \"v5\", {\n enumerable: true,\n get: function () {\n return _v4.default;\n }\n});\nObject.defineProperty(exports, \"NIL\", {\n enumerable: true,\n get: function () {\n return _nil.default;\n }\n});\nObject.defineProperty(exports, \"version\", {\n enumerable: true,\n get: function () {\n return _version.default;\n }\n});\nObject.defineProperty(exports, \"validate\", {\n enumerable: true,\n get: function () {\n return _validate.default;\n }\n});\nObject.defineProperty(exports, \"stringify\", {\n enumerable: true,\n get: function () {\n return _stringify.default;\n }\n});\nObject.defineProperty(exports, \"parse\", {\n enumerable: true,\n get: function () {\n return _parse.default;\n }\n});\n\nvar _v = _interopRequireDefault(require(\"./v1.js\"));\n\nvar _v2 = _interopRequireDefault(require(\"./v3.js\"));\n\nvar _v3 = _interopRequireDefault(require(\"./v4.js\"));\n\nvar _v4 = _interopRequireDefault(require(\"./v5.js\"));\n\nvar _nil = _interopRequireDefault(require(\"./nil.js\"));\n\nvar _version = _interopRequireDefault(require(\"./version.js\"));\n\nvar _validate = _interopRequireDefault(require(\"./validate.js\"));\n\nvar _stringify = _interopRequireDefault(require(\"./stringify.js\"));\n\nvar _parse = _interopRequireDefault(require(\"./parse.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n},{\"./nil.js\":60,\"./parse.js\":61,\"./stringify.js\":65,\"./v1.js\":66,\"./v3.js\":67,\"./v4.js\":69,\"./v5.js\":70,\"./validate.js\":71,\"./version.js\":72}],59:[function(require,module,exports){\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\n/*\n * Browser-compatible JavaScript MD5\n *\n * Modification of JavaScript MD5\n * https://github.com/blueimp/JavaScript-MD5\n *\n * Copyright 2011, Sebastian Tschan\n * https://blueimp.net\n *\n * Licensed under the MIT license:\n * https://opensource.org/licenses/MIT\n *\n * Based on\n * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message\n * Digest Algorithm, as defined in RFC 1321.\n * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n * Distributed under the BSD License\n * See http://pajhome.org.uk/crypt/md5 for more info.\n */\nfunction md5(bytes) {\n if (typeof bytes === 'string') {\n const msg = unescape(encodeURIComponent(bytes)); // UTF8 escape\n\n bytes = new Uint8Array(msg.length);\n\n for (let i = 0; i < msg.length; ++i) {\n bytes[i] = msg.charCodeAt(i);\n }\n }\n\n return md5ToHexEncodedArray(wordsToMd5(bytesToWords(bytes), bytes.length * 8));\n}\n/*\n * Convert an array of little-endian words to an array of bytes\n */\n\n\nfunction md5ToHexEncodedArray(input) {\n const output = [];\n const length32 = input.length * 32;\n const hexTab = '0123456789abcdef';\n\n for (let i = 0; i < length32; i += 8) {\n const x = input[i >> 5] >>> i % 32 & 0xff;\n const hex = parseInt(hexTab.charAt(x >>> 4 & 0x0f) + hexTab.charAt(x & 0x0f), 16);\n output.push(hex);\n }\n\n return output;\n}\n/**\n * Calculate output length with padding and bit length\n */\n\n\nfunction getOutputLength(inputLength8) {\n return (inputLength8 + 64 >>> 9 << 4) + 14 + 1;\n}\n/*\n * Calculate the MD5 of an array of little-endian words, and a bit length.\n */\n\n\nfunction wordsToMd5(x, len) {\n /* append padding */\n x[len >> 5] |= 0x80 << len % 32;\n x[getOutputLength(len) - 1] = len;\n let a = 1732584193;\n let b = -271733879;\n let c = -1732584194;\n let d = 271733878;\n\n for (let i = 0; i < x.length; i += 16) {\n const olda = a;\n const oldb = b;\n const oldc = c;\n const oldd = d;\n a = md5ff(a, b, c, d, x[i], 7, -680876936);\n d = md5ff(d, a, b, c, x[i + 1], 12, -389564586);\n c = md5ff(c, d, a, b, x[i + 2], 17, 606105819);\n b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330);\n a = md5ff(a, b, c, d, x[i + 4], 7, -176418897);\n d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426);\n c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341);\n b = md5ff(b, c, d, a, x[i + 7], 22, -45705983);\n a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416);\n d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417);\n c = md5ff(c, d, a, b, x[i + 10], 17, -42063);\n b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162);\n a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682);\n d = md5ff(d, a, b, c, x[i + 13], 12, -40341101);\n c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290);\n b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329);\n a = md5gg(a, b, c, d, x[i + 1], 5, -165796510);\n d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632);\n c = md5gg(c, d, a, b, x[i + 11], 14, 643717713);\n b = md5gg(b, c, d, a, x[i], 20, -373897302);\n a = md5gg(a, b, c, d, x[i + 5], 5, -701558691);\n d = md5gg(d, a, b, c, x[i + 10], 9, 38016083);\n c = md5gg(c, d, a, b, x[i + 15], 14, -660478335);\n b = md5gg(b, c, d, a, x[i + 4], 20, -405537848);\n a = md5gg(a, b, c, d, x[i + 9], 5, 568446438);\n d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690);\n c = md5gg(c, d, a, b, x[i + 3], 14, -187363961);\n b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501);\n a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467);\n d = md5gg(d, a, b, c, x[i + 2], 9, -51403784);\n c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473);\n b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734);\n a = md5hh(a, b, c, d, x[i + 5], 4, -378558);\n d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463);\n c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562);\n b = md5hh(b, c, d, a, x[i + 14], 23, -35309556);\n a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060);\n d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353);\n c = md5hh(c, d, a, b, x[i + 7], 16, -155497632);\n b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640);\n a = md5hh(a, b, c, d, x[i + 13], 4, 681279174);\n d = md5hh(d, a, b, c, x[i], 11, -358537222);\n c = md5hh(c, d, a, b, x[i + 3], 16, -722521979);\n b = md5hh(b, c, d, a, x[i + 6], 23, 76029189);\n a = md5hh(a, b, c, d, x[i + 9], 4, -640364487);\n d = md5hh(d, a, b, c, x[i + 12], 11, -421815835);\n c = md5hh(c, d, a, b, x[i + 15], 16, 530742520);\n b = md5hh(b, c, d, a, x[i + 2], 23, -995338651);\n a = md5ii(a, b, c, d, x[i], 6, -198630844);\n d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415);\n c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905);\n b = md5ii(b, c, d, a, x[i + 5], 21, -57434055);\n a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571);\n d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606);\n c = md5ii(c, d, a, b, x[i + 10], 15, -1051523);\n b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799);\n a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359);\n d = md5ii(d, a, b, c, x[i + 15], 10, -30611744);\n c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380);\n b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649);\n a = md5ii(a, b, c, d, x[i + 4], 6, -145523070);\n d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379);\n c = md5ii(c, d, a, b, x[i + 2], 15, 718787259);\n b = md5ii(b, c, d, a, x[i + 9], 21, -343485551);\n a = safeAdd(a, olda);\n b = safeAdd(b, oldb);\n c = safeAdd(c, oldc);\n d = safeAdd(d, oldd);\n }\n\n return [a, b, c, d];\n}\n/*\n * Convert an array bytes to an array of little-endian words\n * Characters >255 have their high-byte silently ignored.\n */\n\n\nfunction bytesToWords(input) {\n if (input.length === 0) {\n return [];\n }\n\n const length8 = input.length * 8;\n const output = new Uint32Array(getOutputLength(length8));\n\n for (let i = 0; i < length8; i += 8) {\n output[i >> 5] |= (input[i / 8] & 0xff) << i % 32;\n }\n\n return output;\n}\n/*\n * Add integers, wrapping at 2^32. This uses 16-bit operations internally\n * to work around bugs in some JS interpreters.\n */\n\n\nfunction safeAdd(x, y) {\n const lsw = (x & 0xffff) + (y & 0xffff);\n const msw = (x >> 16) + (y >> 16) + (lsw >> 16);\n return msw << 16 | lsw & 0xffff;\n}\n/*\n * Bitwise rotate a 32-bit number to the left.\n */\n\n\nfunction bitRotateLeft(num, cnt) {\n return num << cnt | num >>> 32 - cnt;\n}\n/*\n * These functions implement the four basic operations the algorithm uses.\n */\n\n\nfunction md5cmn(q, a, b, x, s, t) {\n return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b);\n}\n\nfunction md5ff(a, b, c, d, x, s, t) {\n return md5cmn(b & c | ~b & d, a, b, x, s, t);\n}\n\nfunction md5gg(a, b, c, d, x, s, t) {\n return md5cmn(b & d | c & ~d, a, b, x, s, t);\n}\n\nfunction md5hh(a, b, c, d, x, s, t) {\n return md5cmn(b ^ c ^ d, a, b, x, s, t);\n}\n\nfunction md5ii(a, b, c, d, x, s, t) {\n return md5cmn(c ^ (b | ~d), a, b, x, s, t);\n}\n\nvar _default = md5;\nexports.default = _default;\n},{}],60:[function(require,module,exports){\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _default = '00000000-0000-0000-0000-000000000000';\nexports.default = _default;\n},{}],61:[function(require,module,exports){\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _validate = _interopRequireDefault(require(\"./validate.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction parse(uuid) {\n if (!(0, _validate.default)(uuid)) {\n throw TypeError('Invalid UUID');\n }\n\n let v;\n const arr = new Uint8Array(16); // Parse ########-....-....-....-............\n\n arr[0] = (v = parseInt(uuid.slice(0, 8), 16)) >>> 24;\n arr[1] = v >>> 16 & 0xff;\n arr[2] = v >>> 8 & 0xff;\n arr[3] = v & 0xff; // Parse ........-####-....-....-............\n\n arr[4] = (v = parseInt(uuid.slice(9, 13), 16)) >>> 8;\n arr[5] = v & 0xff; // Parse ........-....-####-....-............\n\n arr[6] = (v = parseInt(uuid.slice(14, 18), 16)) >>> 8;\n arr[7] = v & 0xff; // Parse ........-....-....-####-............\n\n arr[8] = (v = parseInt(uuid.slice(19, 23), 16)) >>> 8;\n arr[9] = v & 0xff; // Parse ........-....-....-....-############\n // (Use \"/\" to avoid 32-bit truncation when bit-shifting high-order bytes)\n\n arr[10] = (v = parseInt(uuid.slice(24, 36), 16)) / 0x10000000000 & 0xff;\n arr[11] = v / 0x100000000 & 0xff;\n arr[12] = v >>> 24 & 0xff;\n arr[13] = v >>> 16 & 0xff;\n arr[14] = v >>> 8 & 0xff;\n arr[15] = v & 0xff;\n return arr;\n}\n\nvar _default = parse;\nexports.default = _default;\n},{\"./validate.js\":71}],62:[function(require,module,exports){\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _default = /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;\nexports.default = _default;\n},{}],63:[function(require,module,exports){\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = rng;\n// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\nlet getRandomValues;\nconst rnds8 = new Uint8Array(16);\n\nfunction rng() {\n // lazy load so that environments that need to polyfill have a chance to do so\n if (!getRandomValues) {\n // getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation. Also,\n // find the complete implementation of crypto (msCrypto) on IE11.\n getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto) || typeof msCrypto !== 'undefined' && typeof msCrypto.getRandomValues === 'function' && msCrypto.getRandomValues.bind(msCrypto);\n\n if (!getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n }\n\n return getRandomValues(rnds8);\n}\n},{}],64:[function(require,module,exports){\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\n// Adapted from Chris Veness' SHA1 code at\n// http://www.movable-type.co.uk/scripts/sha1.html\nfunction f(s, x, y, z) {\n switch (s) {\n case 0:\n return x & y ^ ~x & z;\n\n case 1:\n return x ^ y ^ z;\n\n case 2:\n return x & y ^ x & z ^ y & z;\n\n case 3:\n return x ^ y ^ z;\n }\n}\n\nfunction ROTL(x, n) {\n return x << n | x >>> 32 - n;\n}\n\nfunction sha1(bytes) {\n const K = [0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xca62c1d6];\n const H = [0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0];\n\n if (typeof bytes === 'string') {\n const msg = unescape(encodeURIComponent(bytes)); // UTF8 escape\n\n bytes = [];\n\n for (let i = 0; i < msg.length; ++i) {\n bytes.push(msg.charCodeAt(i));\n }\n } else if (!Array.isArray(bytes)) {\n // Convert Array-like to Array\n bytes = Array.prototype.slice.call(bytes);\n }\n\n bytes.push(0x80);\n const l = bytes.length / 4 + 2;\n const N = Math.ceil(l / 16);\n const M = new Array(N);\n\n for (let i = 0; i < N; ++i) {\n const arr = new Uint32Array(16);\n\n for (let j = 0; j < 16; ++j) {\n arr[j] = bytes[i * 64 + j * 4] << 24 | bytes[i * 64 + j * 4 + 1] << 16 | bytes[i * 64 + j * 4 + 2] << 8 | bytes[i * 64 + j * 4 + 3];\n }\n\n M[i] = arr;\n }\n\n M[N - 1][14] = (bytes.length - 1) * 8 / Math.pow(2, 32);\n M[N - 1][14] = Math.floor(M[N - 1][14]);\n M[N - 1][15] = (bytes.length - 1) * 8 & 0xffffffff;\n\n for (let i = 0; i < N; ++i) {\n const W = new Uint32Array(80);\n\n for (let t = 0; t < 16; ++t) {\n W[t] = M[i][t];\n }\n\n for (let t = 16; t < 80; ++t) {\n W[t] = ROTL(W[t - 3] ^ W[t - 8] ^ W[t - 14] ^ W[t - 16], 1);\n }\n\n let a = H[0];\n let b = H[1];\n let c = H[2];\n let d = H[3];\n let e = H[4];\n\n for (let t = 0; t < 80; ++t) {\n const s = Math.floor(t / 20);\n const T = ROTL(a, 5) + f(s, b, c, d) + e + K[s] + W[t] >>> 0;\n e = d;\n d = c;\n c = ROTL(b, 30) >>> 0;\n b = a;\n a = T;\n }\n\n H[0] = H[0] + a >>> 0;\n H[1] = H[1] + b >>> 0;\n H[2] = H[2] + c >>> 0;\n H[3] = H[3] + d >>> 0;\n H[4] = H[4] + e >>> 0;\n }\n\n return [H[0] >> 24 & 0xff, H[0] >> 16 & 0xff, H[0] >> 8 & 0xff, H[0] & 0xff, H[1] >> 24 & 0xff, H[1] >> 16 & 0xff, H[1] >> 8 & 0xff, H[1] & 0xff, H[2] >> 24 & 0xff, H[2] >> 16 & 0xff, H[2] >> 8 & 0xff, H[2] & 0xff, H[3] >> 24 & 0xff, H[3] >> 16 & 0xff, H[3] >> 8 & 0xff, H[3] & 0xff, H[4] >> 24 & 0xff, H[4] >> 16 & 0xff, H[4] >> 8 & 0xff, H[4] & 0xff];\n}\n\nvar _default = sha1;\nexports.default = _default;\n},{}],65:[function(require,module,exports){\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _validate = _interopRequireDefault(require(\"./validate.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\nconst byteToHex = [];\n\nfor (let i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).substr(1));\n}\n\nfunction stringify(arr, offset = 0) {\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n const uuid = (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n\n if (!(0, _validate.default)(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n\n return uuid;\n}\n\nvar _default = stringify;\nexports.default = _default;\n},{\"./validate.js\":71}],66:[function(require,module,exports){\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _rng = _interopRequireDefault(require(\"./rng.js\"));\n\nvar _stringify = _interopRequireDefault(require(\"./stringify.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// **`v1()` - Generate time-based UUID**\n//\n// Inspired by https://github.com/LiosK/UUID.js\n// and http://docs.python.org/library/uuid.html\nlet _nodeId;\n\nlet _clockseq; // Previous uuid creation time\n\n\nlet _lastMSecs = 0;\nlet _lastNSecs = 0; // See https://github.com/uuidjs/uuid for API details\n\nfunction v1(options, buf, offset) {\n let i = buf && offset || 0;\n const b = buf || new Array(16);\n options = options || {};\n let node = options.node || _nodeId;\n let clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq; // node and clockseq need to be initialized to random values if they're not\n // specified. We do this lazily to minimize issues related to insufficient\n // system entropy. See #189\n\n if (node == null || clockseq == null) {\n const seedBytes = options.random || (options.rng || _rng.default)();\n\n if (node == null) {\n // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1)\n node = _nodeId = [seedBytes[0] | 0x01, seedBytes[1], seedBytes[2], seedBytes[3], seedBytes[4], seedBytes[5]];\n }\n\n if (clockseq == null) {\n // Per 4.2.2, randomize (14 bit) clockseq\n clockseq = _clockseq = (seedBytes[6] << 8 | seedBytes[7]) & 0x3fff;\n }\n } // UUID timestamps are 100 nano-second units since the Gregorian epoch,\n // (1582-10-15 00:00). JSNumbers aren't precise enough for this, so\n // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs'\n // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00.\n\n\n let msecs = options.msecs !== undefined ? options.msecs : Date.now(); // Per 4.2.1.2, use count of uuid's generated during the current clock\n // cycle to simulate higher resolution clock\n\n let nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1; // Time since last uuid creation (in msecs)\n\n const dt = msecs - _lastMSecs + (nsecs - _lastNSecs) / 10000; // Per 4.2.1.2, Bump clockseq on clock regression\n\n if (dt < 0 && options.clockseq === undefined) {\n clockseq = clockseq + 1 & 0x3fff;\n } // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new\n // time interval\n\n\n if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) {\n nsecs = 0;\n } // Per 4.2.1.2 Throw error if too many uuids are requested\n\n\n if (nsecs >= 10000) {\n throw new Error(\"uuid.v1(): Can't create more than 10M uuids/sec\");\n }\n\n _lastMSecs = msecs;\n _lastNSecs = nsecs;\n _clockseq = clockseq; // Per 4.1.4 - Convert from unix epoch to Gregorian epoch\n\n msecs += 12219292800000; // `time_low`\n\n const tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000;\n b[i++] = tl >>> 24 & 0xff;\n b[i++] = tl >>> 16 & 0xff;\n b[i++] = tl >>> 8 & 0xff;\n b[i++] = tl & 0xff; // `time_mid`\n\n const tmh = msecs / 0x100000000 * 10000 & 0xfffffff;\n b[i++] = tmh >>> 8 & 0xff;\n b[i++] = tmh & 0xff; // `time_high_and_version`\n\n b[i++] = tmh >>> 24 & 0xf | 0x10; // include version\n\n b[i++] = tmh >>> 16 & 0xff; // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant)\n\n b[i++] = clockseq >>> 8 | 0x80; // `clock_seq_low`\n\n b[i++] = clockseq & 0xff; // `node`\n\n for (let n = 0; n < 6; ++n) {\n b[i + n] = node[n];\n }\n\n return buf || (0, _stringify.default)(b);\n}\n\nvar _default = v1;\nexports.default = _default;\n},{\"./rng.js\":63,\"./stringify.js\":65}],67:[function(require,module,exports){\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _v = _interopRequireDefault(require(\"./v35.js\"));\n\nvar _md = _interopRequireDefault(require(\"./md5.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nconst v3 = (0, _v.default)('v3', 0x30, _md.default);\nvar _default = v3;\nexports.default = _default;\n},{\"./md5.js\":59,\"./v35.js\":68}],68:[function(require,module,exports){\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = _default;\nexports.URL = exports.DNS = void 0;\n\nvar _stringify = _interopRequireDefault(require(\"./stringify.js\"));\n\nvar _parse = _interopRequireDefault(require(\"./parse.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction stringToBytes(str) {\n str = unescape(encodeURIComponent(str)); // UTF8 escape\n\n const bytes = [];\n\n for (let i = 0; i < str.length; ++i) {\n bytes.push(str.charCodeAt(i));\n }\n\n return bytes;\n}\n\nconst DNS = '6ba7b810-9dad-11d1-80b4-00c04fd430c8';\nexports.DNS = DNS;\nconst URL = '6ba7b811-9dad-11d1-80b4-00c04fd430c8';\nexports.URL = URL;\n\nfunction _default(name, version, hashfunc) {\n function generateUUID(value, namespace, buf, offset) {\n if (typeof value === 'string') {\n value = stringToBytes(value);\n }\n\n if (typeof namespace === 'string') {\n namespace = (0, _parse.default)(namespace);\n }\n\n if (namespace.length !== 16) {\n throw TypeError('Namespace must be array-like (16 iterable integer values, 0-255)');\n } // Compute hash of namespace and value, Per 4.3\n // Future: Use spread syntax when supported on all platforms, e.g. `bytes =\n // hashfunc([...namespace, ... value])`\n\n\n let bytes = new Uint8Array(16 + value.length);\n bytes.set(namespace);\n bytes.set(value, namespace.length);\n bytes = hashfunc(bytes);\n bytes[6] = bytes[6] & 0x0f | version;\n bytes[8] = bytes[8] & 0x3f | 0x80;\n\n if (buf) {\n offset = offset || 0;\n\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = bytes[i];\n }\n\n return buf;\n }\n\n return (0, _stringify.default)(bytes);\n } // Function#name is not settable on some platforms (#270)\n\n\n try {\n generateUUID.name = name; // eslint-disable-next-line no-empty\n } catch (err) {} // For CommonJS default export support\n\n\n generateUUID.DNS = DNS;\n generateUUID.URL = URL;\n return generateUUID;\n}\n},{\"./parse.js\":61,\"./stringify.js\":65}],69:[function(require,module,exports){\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _rng = _interopRequireDefault(require(\"./rng.js\"));\n\nvar _stringify = _interopRequireDefault(require(\"./stringify.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction v4(options, buf, offset) {\n options = options || {};\n\n const rnds = options.random || (options.rng || _rng.default)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n offset = offset || 0;\n\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n\n return buf;\n }\n\n return (0, _stringify.default)(rnds);\n}\n\nvar _default = v4;\nexports.default = _default;\n},{\"./rng.js\":63,\"./stringify.js\":65}],70:[function(require,module,exports){\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _v = _interopRequireDefault(require(\"./v35.js\"));\n\nvar _sha = _interopRequireDefault(require(\"./sha1.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nconst v5 = (0, _v.default)('v5', 0x50, _sha.default);\nvar _default = v5;\nexports.default = _default;\n},{\"./sha1.js\":64,\"./v35.js\":68}],71:[function(require,module,exports){\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _regex = _interopRequireDefault(require(\"./regex.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction validate(uuid) {\n return typeof uuid === 'string' && _regex.default.test(uuid);\n}\n\nvar _default = validate;\nexports.default = _default;\n},{\"./regex.js\":62}],72:[function(require,module,exports){\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _validate = _interopRequireDefault(require(\"./validate.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction version(uuid) {\n if (!(0, _validate.default)(uuid)) {\n throw TypeError('Invalid UUID');\n }\n\n return parseInt(uuid.substr(14, 1), 16);\n}\n\nvar _default = version;\nexports.default = _default;\n},{\"./validate.js\":71}]},{},[9])(9)\n});\n//# sourceMappingURL=index-browser.js.map\n","exports.defaults = {};\r\n\r\nexports.set = function(name, value, options) {\r\n // Retrieve options and defaults\r\n var opts = options || {};\r\n var defaults = exports.defaults;\r\n\r\n // Apply default value for unspecified options\r\n var expires = opts.expires || defaults.expires;\r\n var domain = opts.domain || defaults.domain;\r\n var path = opts.path !== undefined ? opts.path : (defaults.path !== undefined ? defaults.path : '/');\r\n var secure = opts.secure !== undefined ? opts.secure : defaults.secure;\r\n var httponly = opts.httponly !== undefined ? opts.httponly : defaults.httponly;\r\n var samesite = opts.samesite !== undefined ? opts.samesite : defaults.samesite;\r\n\r\n // Determine cookie expiration date\r\n // If succesful the result will be a valid Date, otherwise it will be an invalid Date or false(ish)\r\n var expDate = expires ? new Date(\r\n // in case expires is an integer, it should specify the number of days till the cookie expires\r\n typeof expires === 'number' ? new Date().getTime() + (expires * 864e5) :\r\n // else expires should be either a Date object or in a format recognized by Date.parse()\r\n expires\r\n ) : 0;\r\n\r\n // Set cookie\r\n document.cookie = name.replace(/[^+#$&^`|]/g, encodeURIComponent) // Encode cookie name\r\n .replace('(', '%28')\r\n .replace(')', '%29') +\r\n '=' + value.replace(/[^+#$&/:<-\\[\\]-}]/g, encodeURIComponent) + // Encode cookie value (RFC6265)\r\n (expDate && expDate.getTime() >= 0 ? ';expires=' + expDate.toUTCString() : '') + // Add expiration date\r\n (domain ? ';domain=' + domain : '') + // Add domain\r\n (path ? ';path=' + path : '') + // Add path\r\n (secure ? ';secure' : '') + // Add secure option\r\n (httponly ? ';httponly' : '') + // Add httponly option\r\n (samesite ? ';samesite=' + samesite : ''); // Add samesite option\r\n};\r\n\r\nexports.get = function(name) {\r\n var cookies = document.cookie.split(';');\r\n \r\n // Iterate all cookies\r\n while(cookies.length) {\r\n var cookie = cookies.pop();\r\n\r\n // Determine separator index (\"name=value\")\r\n var separatorIndex = cookie.indexOf('=');\r\n\r\n // IE<11 emits the equal sign when the cookie value is empty\r\n separatorIndex = separatorIndex < 0 ? cookie.length : separatorIndex;\r\n\r\n var cookie_name = decodeURIComponent(cookie.slice(0, separatorIndex).replace(/^\\s+/, ''));\r\n\r\n // Return cookie value if the name matches\r\n if (cookie_name === name) {\r\n return decodeURIComponent(cookie.slice(separatorIndex + 1));\r\n }\r\n }\r\n\r\n // Return `null` as the cookie was not found\r\n return null;\r\n};\r\n\r\nexports.erase = function(name, options) {\r\n exports.set(name, '', {\r\n expires: -1,\r\n domain: options && options.domain,\r\n path: options && options.path,\r\n secure: 0,\r\n httponly: 0}\r\n );\r\n};\r\n\r\nexports.all = function() {\r\n var all = {};\r\n var cookies = document.cookie.split(';');\r\n\r\n // Iterate all cookies\r\n while(cookies.length) {\r\n var cookie = cookies.pop();\r\n\r\n // Determine separator index (\"name=value\")\r\n var separatorIndex = cookie.indexOf('=');\r\n\r\n // IE<11 emits the equal sign when the cookie value is empty\r\n separatorIndex = separatorIndex < 0 ? cookie.length : separatorIndex;\r\n\r\n // add the cookie name and value to the `all` object\r\n var cookie_name = decodeURIComponent(cookie.slice(0, separatorIndex).replace(/^\\s+/, ''));\r\n all[cookie_name] = decodeURIComponent(cookie.slice(separatorIndex + 1));\r\n }\r\n\r\n return all;\r\n};\r\n"],"names":["e","define","module","exports","t","n","r","s","o","u","a","_dereq_","i","f","Error","code","l","call","length","Promise","SomePromiseArray","_SomePromiseArray","any","promises","ret","promise","setHowMany","setUnwrap","init","prototype","this","firstLineError","schedule","Queue","Async","_customScheduler","_isTickUsed","_lateQueue","_normalQueue","_haveDrainedQueues","self","drainQueues","_drainQueues","_schedule","_drainQueue","queue","_drainQueueStep","fn","shift","_settlePromises","receiver","arg","setScheduler","prev","hasCustomScheduler","haveItemsQueued","fatalError","isNode","process","stderr","write","stack","exit","throwLater","arguments","setTimeout","invokeLater","push","_queueTick","invoke","settlePromises","_pushOne","_reset","INTERNAL","tryConvertToPromise","debug","calledBind","rejectThis","_","_reject","targetRejected","context","promiseRejectionQueued","bindingPromise","_then","bindingResolved","thisArg","_bitField","_resolveCallback","target","bindingRejected","bind","_propagateFrom","propagateFromFunction","_boundValue","boundValueFunction","maybePromise","_target","_setBoundTo","undefined","_setOnCancel","obj","_boundTo","_isBound","value","resolve","old","bluebird","noConflict","cr","Object","create","callerCache","getterCache","util","canEvaluate","caller","methodName","message","classString","toString","TypeError","ensureMethod","pop","apply","namedGetter","indexedGetter","index","Math","max","isIdentifier","args","slice","get","propertyName","getter","maybeGetter","getGetter","PromiseArray","apiRejection","tryCatch","errorObj","async","_async","cancel","cancellation","_warn","child","_isCancellable","_cancelBy","_isFollowing","_followee","_cancelBranched","parent","_cancellationParent","_setWillBeCancelled","_branchHasCancelled","_branchesRemainingToCancel","_enoughBranchesHaveCancelled","canceller","_invokeOnCancel","_cancel","_setCancelled","_cancelPromises","_length","_unsetOnCancel","_onCancelField","isPending","_isCancelled","isCancellable","isCancelled","_doInvokeOnCancel","onCancelCallback","internalOnly","isArray","_attachExtraTrace","_resultCancelled","_onCancel","_invokeInternalOnCancel","NEXT_FILTER","getKeys","keys","instances","cb","boundTo","predicateLoop","item","matchesPredicate","isObject","j","key","longStackTraces","contextStack","Context","_trace","CapturedTrace","peekContext","lastIndex","_promiseCreated","_pushContext","_popContext","_peekContext","trace","deactivateLongStackTraces","activateLongStackTraces","Promise_pushContext","Promise_popContext","Promise_PeekContext","Promise_peekContext","Promise_promiseCreated","ctx","enableAsyncHooks","disableAsyncHooks","unhandledRejectionHandled","possiblyUnhandledRejection","printWarning","deferUnhandledRejectionCheck","Warning","es5","canAttachTrace","bluebirdFramePattern","nodeFramePattern","parseLinePattern","stackFramePattern","formatStack","indentStackFrames","debugging","env","warnings","wForgottenReturn","unhandledRejectionCheck","_notifyUnhandledRejection","unhandledRejectionClear","defineProperty","suppressUnhandledRejections","_ensurePossibleRejectionHandled","_setRejectionIsUnhandled","_notifyUnhandledRejectionIsHandled","fireRejectionEvent","_setReturnedNonUndefined","_returnedNonUndefined","_isRejectionUnhandled","reason","_settledValue","_setUnhandledRejectionIsNotified","_unsetUnhandledRejectionIsNotified","_isUnhandledRejectionNotified","_unsetRejectionIsUnhandled","shouldUseOwnTrace","warn","onPossiblyUnhandledRejection","_getContext","contextBind","onUnhandledRejectionHandled","disableLongStackTraces","config","longStackTracesIsSupported","Promise_captureStackTrace","_captureStackTrace","Promise_attachExtraTrace","Promise_dereferenceTrace","_dereferenceTrace","longStackTracesCaptureStackTrace","longStackTracesAttachExtraTrace","longStackTracesDereferenceTrace","hasLongStackTraces","legacyHandlers","unhandledrejection","before","global","onunhandledrejection","after","rejectionhandled","onrejectionhandled","fireDomEvent","dispatch","legacy","dispatchEvent","CustomEvent","event","name","toLowerCase","domEvent","detail","cancelable","Event","document","createEvent","initCustomEvent","fireGlobalEvent","emit","method","generatePromiseLifecycleEventObject","eventToObjectGenerator","promiseCreated","promiseFulfilled","promiseRejected","promiseResolved","promiseCancelled","promiseChained","warning","unhandledRejection","rejectionHandled","activeFireEvent","globalEventFired","domEventFired","defaultFireEvent","cancellationExecute","executor","reject","onCancel","_attachCancellationCallback","cancellationAttachCancellationCallback","previousOnCancel","cancellationOnCancel","cancellationSetOnCancel","cancellationClearCancellationData","cancellationPropagateFrom","flags","branchesRemainingToCancel","opts","warningsOption","_clearCancellationData","_execute","monitoring","_fireEvent","nodeSupportsAsyncResource","asyncHooks","cur","handler","isFulfilled","error","ignoreSelf","_parent","attachExtraTrace","__stackCleaned__","parsed","parseStackAndMessage","notEnumerableProp","join","formatAndLogError","cleanStack","line","isTraceLine","test","isInternalFrame","shouldIgnore","charAt","replace","split","stackFramesAsArray","title","isSoft","console","String","log","localHandler","localEventFired","formatNonError","str","JSON","stringify","maxChars","substr","snip","captureStackTrace","parseLineInfoRegex","parseLineInfo","matches","match","fileName","parseInt","_promisesCreated","uncycle","inherits","nodes","stackToIndex","node","cycleEdgeNode","currentChildLength","stacks","current","currentLastIndex","currentLastLine","commonRootMeetPoint","removeCommonRoots","splice","removeDuplicateOrEmptyJumps","reconstructStack","v8stackFramePattern","v8stackFormatter","stackTraceLimit","ignoreUntil","hasStackAfterThrow","err","indexOf","isTTY","color","checkForgottenReturns","returnValue","handlerLine","creatorLine","traceLines","lineMatches","firstUserLine","msg","setBounds","lastLineError","firstFileName","lastFileName","firstStackLines","lastStackLines","firstIndex","result","info","deprecated","replacement","returner","thrower","thenReturn","thenThrow","catchThrow","_reason","caught","catchReturn","_value","PromiseReduce","reduce","PromiseAll","all","promiseAllThis","each","mapSeries","_TypeError","_RangeError","Objectfreeze","freeze","subError","nameProperty","defaultMessage","SubError","constructor","CancellationError","TimeoutError","AggregateError","RangeError","methods","Array","configurable","writable","enumerable","level","OperationalError","cause","indent","lines","errorTypes","RejectionError","isES5","getDescriptor","getOwnPropertyDescriptor","names","getOwnPropertyNames","getPrototypeOf","propertyIsWritable","prop","descriptor","set","has","hasOwnProperty","proto","ObjectKeys","desc","PromiseMap","map","filter","options","catchFilter","PassThroughHandlerContext","type","called","cancelPromise","FinallyHandlerCancelReaction","finallyHandler","checkCancel","succeed","fail","reasonOrValue","isFinallyHandler","isRejected","_passThrough","success","then","lastly","tap","tapCatch","handlerOrPredicate","len","catchInstances","Proxyable","yieldHandlers","PromiseSpawn","generatorFunction","yieldHandler","internal","_finallyPromise","_promise","_stack","_generatorFunction","_receiver","_generator","_yieldHandlers","concat","_yieldedPromise","_cancellationPhase","_isResolved","_cleanup","_fulfill","_promiseCancelled","coroutine","returnSentinel","_continue","_promiseFulfilled","next","_promiseRejected","_run","_rejectCallback","done","traceParent","promiseFromYieldHandler","bitField","_proxy","PromiseSpawn$","generator","spawn","addYieldHandler","last","spread","MappingPromiseArray","limit","_filter","constructor$","_callback","_preservedValues","_limit","_inFlight","_queue","_asyncInit","concurrency","isFinite","_init$","_init","values","_values","preservedValues","callback","_totalResolved","_resolve","booleans","_resolveFromSyncValue","attempt","maybeWrapAsError","rErrorKey","wrapAsOperationalError","isUntypedError","markAsOriginatingFromRejection","multiArgs","wrapped","spreadAdapter","val","nodeback","successAdapter","errorAdapter","newReason","asCallback","nodeify","adapter","makeSelfResolutionError","reflectHandler","PromiseInspection","UNDEFINED_BINDING","setReflectHandler","getDomain","domain","getContextDomain","AsyncResource","getContextAsyncHooks","getContext","errors","APPLY","createContext","nodebackForPromise","check","_fulfillmentHandler0","_rejectionHandler0","_promise0","_receiver0","_resolveFromExecutor","deferResolve","v","deferReject","fillTypes","p","reflect","didFulfill","didReject","_setIsFinal","toJSON","fulfillmentValue","rejectionReason","originatesFromRejection","getNewLibraryCopy","is","fromNode","fromCallback","_isFateSealed","_setAsyncGuaranteed","cast","_setFulfilled","fulfilled","rejected","internalData","haveInternalData","settler","_settlePromiseCtx","_settlePromiseLateCancellationObserver","_addCallbacks","_setLength","_setRejected","_setFollowing","_isFinal","_unsetCancelled","_setNoAsyncGuarantee","_receiverAt","_promiseAt","_fulfillmentHandlerAt","_rejectionHandlerAt","_migrateCallback0","follower","fulfill","_migrateCallbackAt","base","proxyable","shouldBind","_setFollowee","synchronous","ignoreNonErrorWarnings","ensureErrorObject","hasStack","_settlePromiseFromHandler","x","_settlePromise","isPromise","asyncGuaranteed","_settlePromise0","_clearCallbackDataAtIndex","_fulfillPromises","_rejectPromises","Symbol","toStringTag","defer","pending","version","toFastProperties","b","c","resolveValueIfEmpty","asArray","_iterate","_resolveEmptyArray","Map","toResolutionValue","getActualLength","shouldCopyValues","isResolved","THIS","withAppended","defaultPromisified","__isPromisified__","noCopyPropsPattern","RegExp","defaultFilter","propsFilter","isPromisified","hasPromisified","suffix","getDataPropertyOrDefault","promisifiableMethods","suffixRegexp","inheritedDataKeys","passesDefaultFilter","keyWithoutAsyncSuffix","checkValid","makeNodePromisified","makeNodePromisifiedEval","__","defaultThis","promisified","promisifyAll","promisifier","promisifiedKey","promisify","copyDescriptors","isClass","Es6Map","mapToEntries","size","extractEntry","forEach","PropertiesPromiseArray","entries","isMap","_isMap","props","castValue","entriesToMap","keyOffset","capacity","_capacity","_front","_willBeOverCapacity","_checkCapacity","wrapMask","front","_resizeTo","oldCapacity","src","srcIndex","dst","dstIndex","arrayMove","race","array","ReductionPromiseArray","initialValue","_each","_fn","_initialValue","_currentCancellable","_eachValues","completed","valueOrReason","gotAccum","accum","_gotAccum","gotValue","_eachComplete","sender","_resultCancelled$","NativePromise","getNativePromise","MutationObserver","GlobalSetImmediate","g","setImmediate","ProcessNextTick","nextTick","isRecentNode","nativePromise","window","navigator","standalone","cordova","documentElement","div","createElement","attributes","toggleScheduled","div2","classList","toggle","observe","disconnect","SettledPromiseArray","_promiseResolved","inspection","_settledValueField","settle","allSettled","CANCELLATION","_howMany","_unwrap","_initialized","some","howMany","isArrayResolved","_canPossiblyFulfill","_getRangeError","count","_addFulfilled","_fulfilled","_addRejected","_checkOutcome","_rejected","__isCancelled","hasProp","doGetThen","getThen","isAnyBluebirdPromise","doThenable","HandleWrapper","handle","clearTimeout","afterValue","delay","ms","successClear","failureClear","timeout","handleWrapper","afterTimeout","NULL","dispose","resources","iterator","thenable","_isDisposable","_getDisposer","_setDisposable","castPreservingDisposable","tryDispose","Disposer","data","_data","_context","FunctionDisposer","maybeUnwrapDisposer","isDisposer","ResourceList","resource","doDispose","_unsetDisposable","d","using","input","spreadArgs","disposer","reflectedResources","resultPromise","inspections","_disposer","tryCatchTarget","globalObject","tryCatcher","Child","Parent","T","isPrimitive","maybeError","safeToString","appendee","defaultValue","excludedPrototypes","Function","isExcludedProto","visitedKeys","enumeration","thisAssignmentPattern","hasMethods","hasMethodsOtherThanConstructor","hasThisAssignmentAndStaticMethods","FakeConstructor","ic","foo","rident","filledRange","prefix","isError","ignore","from","to","ArrayFrom","itResult","it","hasEnvVariables","runInAsyncScope","versions","Number","supportsAsync","P","$","Affix","element","extend","DEFAULTS","$target","on","proxy","checkPosition","checkPositionWithEventLoop","$element","affixed","unpin","pinnedOffset","Plugin","option","$this","VERSION","RESET","offset","getState","scrollHeight","height","offsetTop","offsetBottom","scrollTop","position","targetHeight","top","initializing","colliderTop","getPinnedOffset","removeClass","addClass","bottom","body","affix","css","affixType","trigger","isDefaultPrevented","Constructor","$spy","jQuery","dismiss","Alert","el","close","TRANSITION_DURATION","selector","attr","$parent","removeElement","detach","remove","preventDefault","closest","support","transition","hasClass","one","emulateTransitionEnd","alert","Button","isLoading","setState","loadingText","state","$el","resetText","removeAttr","changed","$input","find","toggleClass","button","$btn","first","Carousel","$indicators","paused","sliding","interval","$active","$items","keyboard","keydown","pause","cycle","action","slide","wrap","tagName","which","clearInterval","setInterval","getItemIndex","children","getItemForDirection","direction","active","activeIndex","itemIndex","eq","pos","that","end","$next","isCycling","relatedTarget","slideEvent","$nextIndicator","slidEvent","offsetWidth","carousel","clickHandler","href","slideIndex","$carousel","Collapse","$trigger","id","transitioning","getParent","addAriaAndCollapsedClass","getTargetFromTrigger","dimension","show","activesData","actives","startEvent","complete","scrollSize","camelCase","hide","offsetHeight","isOpen","collapse","Dropdown","clearMenus","contains","isActive","insertAfter","stopPropagation","dropdown","Modal","$body","$dialog","$backdrop","isShown","originalBodyPad","scrollbarWidth","ignoreBackdropClick","remote","load","_relatedTarget","BACKDROP_TRANSITION_DURATION","backdrop","checkScrollbar","setScrollbar","escape","resize","appendTo","adjustDialog","enforceFocus","off","hideModal","handleUpdate","resetAdjustments","resetScrollbar","removeBackdrop","animate","doAnimate","currentTarget","focus","callbackRemove","modalIsOverflowing","clientHeight","paddingLeft","bodyIsOverflowing","paddingRight","fullWindowWidth","innerWidth","documentElementRect","getBoundingClientRect","right","abs","left","clientWidth","measureScrollbar","bodyPad","style","scrollDiv","className","append","removeChild","modal","showEvent","Popover","tooltip","placement","content","template","getDefaults","setContent","$tip","tip","getTitle","getContent","html","hasContent","$e","arrow","$arrow","popover","ScrollSpy","$scrollElement","offsets","targets","activeTarget","refresh","getScrollHeight","offsetMethod","offsetBase","isWindow","$href","sort","maxScroll","activate","clear","parents","parentsUntil","scrollspy","Tab","$ul","$previous","hideEvent","container","tab","Tooltip","enabled","hoverState","inState","animation","viewport","padding","getOptions","$viewport","isFunction","click","hover","triggers","eventIn","eventOut","enter","leave","_options","fixTitle","getDelegateOptions","defaults","isInStateTrue","inDom","ownerDocument","tipId","getUID","autoToken","autoPlace","display","getPosition","actualWidth","actualHeight","orgPlacement","viewportDim","width","calculatedOffset","getCalculatedOffset","applyPlacement","prevHoverState","marginTop","marginLeft","isNaN","setOffset","round","delta","getViewportAdjustedDelta","isVertical","arrowDelta","arrowOffsetPosition","replaceArrow","isBody","elRect","isSvg","SVGElement","elOffset","scroll","outerDims","viewportPadding","viewportDimensions","topEdgeOffset","bottomEdgeOffset","leftEdgeOffset","rightEdgeOffset","random","getElementById","enable","disable","toggleEnabled","destroy","removeData","duration","transEndEventNames","WebkitTransition","MozTransition","OTransition","transitionEnd","special","bsTransitionEnd","bindType","delegateType","handleObj","_interopRequireDefault","nextArray","_parseFilename","_parseFilename2","extname","nextValue","includes","segment","_typeof","_directLineStreaming","DirectLineStreaming","DirectLine","ConnectionStatus","_objectWithoutProperties2","_classCallCheck2","_createClass2","_defineProperty2","_BehaviorSubject","_Observable","_jwtDecode","nodeInterop","__esModule","cache","_getRequireWildcardCache","newObj","hasPropertyDescriptor","_interopRequireWildcard","_dedupeFilenames","_excluded","WeakMap","cacheBabelInterop","cacheNodeInterop","ownKeys","object","enumerableOnly","getOwnPropertySymbols","symbols","sym","_objectSpread","source","getOwnPropertyDescriptors","defineProperties","wrapAjaxWithRetry","scheduler","notImplemented","assign","urlOrRequest","status","retryAfterValue","xhr","getResponseHeader","retryAfter","Observable","timer","flatMap","url","headers","post","put","patch","getJSON","intervalRefreshToken","lifetimeRefreshToken","errorExpiredToken","errorConversationEnded","errorFailedToConnect","konsole","_console","_len","optionalParams","_key","BehaviorSubject","Uninitialized","secret","token","webSocket","WebSocket","conversationStartProperties","locale","localeOnStartConversation","conversationId","watermark","streamUrl","retries","_botAgent","getBotAgent","botAgent","services","ajax","makeServices","parsedPollingInterval","pollingInterval","expiredTokenExhaustion","setConnectionStatusFallback","ExpiredToken","FailedToConnect","activity$","webSocketActivity$","pollingGetActivity$","share","_this","once","obs","connectionStatus$","connectionStatus","Connecting","Online","of","startConversation","conversation","referenceGrammarId","refreshTokenLoop","Ended","take","connectionStatusFrom","connectionStatusTo","maxAttempts","attempts","currStatus","getValue","protectedConnectionStatus","_this2","user","userIdOnStartConversation","commonHeaders","ajaxResponse","response","retryWhen","error$","mergeMap","_this3","tokenRefreshSubscription","refreshToken","subscribe","Date","_this4","checkConnection","expiredToken","unsubscribe","_this5","withCredentials","sessionId","catchExpiredToken","activity","_this6","attachments","postMessageWithAttachments","catchPostError","formData","_this7","attachmentNames","media","cleansedAttachments","attachment","FormData","Blob","_ref","contentUrl","responseType","contentType","_this8","poller$","subscriber","trigger$","startTimestamp","now","Accept","empty","activityGroup","observableFromActivityGroup","activities","_this9","observableWebSocket","getRetryDelay","reconnectToConversation","floor","_this10","sub","closed","ws","onopen","open","send","onclose","onerror","onmessage","parse","readyState","_this11","customAgent","clientAgent","userId","parseToken","InvalidTokenError","_regenerator","_toConsumableArray2","_asyncToGenerator2","_buffer","BFSE","_crossFetch","_directLine","StreamHandler","c$","sq","shouldQueue","_processRequest","mark","_callee","request","logger","streams","stream0","activitySetJson","activitySet","stream","dataUri","readAsString","sent","abrupt","StreamingResponse","activityQueue","stop","_x","_x2","cs","queueActivities","_callee2","_context2","activitySubscriber","theStreamHandler","connectWithRetryAsync","_x3","_ref2","connectAsync","streamConnection","_refreshToken","_callee3","numberOfAttempts","res","_yield$res$json","_args3","_context3","waitUntilOnline","refreshTokenLifetime","ok","json","statusText","t0","resp$","_ref3","_callee4","resp","numberOfStreams","idString","_JSON$parse","_context4","StreamingRequest","setBody","statusCode","Id","_x4","messageWithoutAttachments","httpContentList","_callee6","activityStream","_yield$resp$streams$","_context6","_ref5","_callee5","_context5","arrayBuffer","t1","_x5","_ref6","buffer","Buffer","SubscribableStream","httpContent","HttpContent","contentLength","addStream","readAsJson","_waitUntilOnline","_callee7","_context7","_connectAsync","_callee9","re","params","urlSearchParams","wsUrl","_context9","URLSearchParams","_ref7","_callee8","responseString","_context8","WebSocketClient","requestHandler","disconnectionHandler","connect","flush","_x6","_x7","_connectWithRetryAsync","_callee10","numRetries","start","_context10","filename","_filename$split$rever","reverse","_filename$split$rever2","_toArray2","require","__awaiter","_arguments","adopt","step","__generator","y","label","trys","ops","verb","op","PayloadAssembler","subscribableStream_1","payloads_1","contentStream_1","streamManager","_byteOrderMark","_utf","header","payloadType","payloadLength","_onCompleted","onCompleted","getPayloadStream","createPayloadStream","onReceive","_contentLength","PayloadTypes","catch","closeStream","payloadFromJson","charCodeAt","stripBOM","streamData","streamDataAsString","_a","read","processRequest","processResponse","responsePayload","receiveResponse","processStreams","requestPayload","receiveRequest","path","_b","responseStream","contentAssembler","getPayloadAssembler","ContentStream","assembler","getStream","readAll","bufferArray","stringToParse","allData","chunk","readToEnd","CancelDisassembler","disassemble","sendPayload","__extends","extendStatics","setPrototypeOf","__proto__","HttpContentStreamDisassembler","payloadDisassembler_1","_super","contentStream","streamLength","PayloadDisassembler","serialize","RequestDisassembler","payloadTypes_1","_c","_d","payload","_e","description","ResponseDisassembler","HttpContentStream","protocol_base_1","_f","generateGuid","BrowserWebSocket","RequestHandler","httpContentStream_1","requestHandler_1","streamingRequest_1","streamingResponse_1","index_browser_1","__createBinding","m","k","k2","__exportStar","PayloadReceiver","headerSerializer_1","payloadConstants_1","transportDisconnectedEvent_1","receivePackets","receiveAction","_getStream","_receiveAction","TransportDisconnectedEvent","Empty","isConnected","disconnected","readSoFar","isStream","bytesActuallyRead","err_1","PayloadConstants","MaxHeaderLength","receive","_receiveHeaderBuffer","HeaderSerializer","deserialize","MaxPayloadLength","min","_receivePayloadBuffer","byteLength","PayloadSender","_sender","sentCallback","packet","writePacket","leftOver","sendHeaderBuffer","alloc","TypeOffset","Encoding","Delimiter","TypeDelimiterOffset","headerLengthPadder","LengthLength","LengthOffset","LengthDelimeterOffset","IdOffset","IdDelimeterOffset","End","NotEnd","EndOffset","Terminator","TerminatorOffset","jsonBuffer","headerArray","headerEnd","MinLength","IdLength","lengthValue","totalLength","padChar","lengthString","PayloadAssemblerManager","payloadAssembler_1","onReceiveResponse","onReceiveRequest","activeAssemblers","createPayloadAssembler","RequestManager","PendingRequest","_pendingRequests","pendingRequestCount","signalResponse","requestId","pendingRequest","getResponse","SendOperations","cancelDisassembler_1","httpContentStreamDisassembler_1","requestDisassembler_1","responseDisassembler_1","payloadSender","sendRequest","sendResponse","sendCancelStream","cancelStream","StreamManager","onCancelStream","targetStream","ProtocolAdapter","payloadAssemblerManager_1","sendOperations_1","streamManager_1","requestManager","payloadReceiver","sendOperations","assemblerManager","contentStreamAssembler","bufferList","_write","_encoding","_onData","_read","total","onData","Duplex","uuid_1","v4","socket","serverAddress","resolver","rejector","setOnMessageHandler","bufferKey","packets","evt","fileReader","FileReader","queueEntry","onload","readAsArrayBuffer","setOnErrorHandler","setOnCloseHandler","browserWebSocket_1","payloadTransport_1","protocolAdapter_1","webSocketTransport_1","_url","_requestHandler","_disconnectionHandler","_requestManager","onConnectionDisconnected","_protocolAdapter","transport","WebSocketTransport","browserWebSocketClient_1","_activeOffset","_activeReceiveCount","onError","onClose","_activeReceiveResolve","_activeReceiveReject","trySignalData","_active","available","copy","toByteArray","fromByteArray","lookup","revLookup","Arr","Uint8Array","getLens","b64","validLen","lens","placeHoldersLen","_byteLength","tmp","arr","curByte","tripletToBase64","num","encodeChunk","uint8","output","extraBytes","parts","maxChunkLength","len2","base64","ieee754","SlowBuffer","INSPECT_MAX_BYTES","K_MAX_LENGTH","typedArraySupport","createBuffer","buf","encodingOrOffset","allocUnsafe","fromString","ArrayBuffer","isView","fromArrayLike","isInstance","fromArrayBuffer","valueOf","fromObject","toPrimitive","assertSize","fill","encoding","checked","string","isEncoding","actual","byteOffset","isBuffer","numberIsNaN","mustMatch","loweredCase","utf8ToBytes","base64ToBytes","slowToString","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","bidirectionalIndexOf","dir","arrayIndexOf","lastIndexOf","indexSize","arrLength","valLength","readUInt16BE","foundIndex","found","hexWrite","remaining","strLen","utf8Write","blitBuffer","asciiWrite","asciiToBytes","latin1Write","base64Write","ucs2Write","utf16leToBytes","secondByte","thirdByte","fourthByte","tempCodePoint","firstByte","codePoint","bytesPerSequence","decodeCodePointsArray","kMaxLength","TYPED_ARRAY_SUPPORT","species","poolSize","allocUnsafeSlow","_isBuffer","compare","list","swap16","swap32","swap64","toLocaleString","equals","inspect","trim","thisStart","thisEnd","thisCopy","targetCopy","_arr","MAX_ARGUMENTS_LENGTH","codePoints","fromCharCode","out","toHex","bytes","checkOffset","ext","checkInt","checkIEEE754","writeFloat","littleEndian","noAssert","writeDouble","newBuf","subarray","readUIntLE","mul","readUIntBE","readUInt8","readUInt16LE","readUInt32LE","readUInt32BE","readIntLE","pow","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUIntLE","writeUIntBE","writeUInt8","writeUInt16LE","writeUInt16BE","writeUInt32LE","writeUInt32BE","writeIntLE","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","copyWithin","INVALID_BASE64_RE","base64clean","units","Infinity","leadSurrogate","byteArray","hi","lo","ReflectOwnKeys","R","Reflect","ReflectApply","ProcessEmitWarning","NumberIsNaN","EventEmitter","_events","_eventsCount","_maxListeners","defaultMaxListeners","checkListener","listener","_getMaxListeners","_addListener","prepend","events","existing","newListener","unshift","warned","w","emitter","onceWrapper","fired","removeListener","wrapFn","_onceWrap","_listeners","unwrap","evlistener","unwrapListeners","arrayClone","listenerCount","spliceOne","eventListener","errorListener","setMaxListeners","getMaxListeners","doError","er","listeners","addListener","prependListener","prependOnceListener","originalListener","removeAllListeners","rawListeners","eventNames","isLE","mLen","nBytes","eLen","eMax","eBias","nBits","NaN","rt","LN2","ctor","superCtor","super_","TempCtor","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","runTimeout","fun","runClearTimeout","marker","currentQueue","draining","queueIndex","cleanUpNextTick","drainQueue","run","Item","noop","browser","argv","binding","cwd","chdir","umask","copyProps","SafeBuffer","Stream","EE","Readable","Writable","Transform","PassThrough","finished","pipeline","pipe","dest","ondata","ondrain","readable","resume","_isStdio","onend","didOnEnd","cleanup","_inheritsLoose","subClass","superClass","codes","createErrorType","Base","getMessage","arg1","arg2","arg3","NodeError","_Base","oneOf","expected","thing","startsWith","search","endsWith","this_len","substring","determiner","objectKeys","allowHalfOpen","_writableState","ended","onEndNT","highWaterMark","getBuffer","_readableState","destroyed","_transform","ReadableState","EElistenerCount","OurUint8Array","_uint8ArrayToBuffer","_isUint8Array","debugUtil","debuglog","StringDecoder","createReadableStreamAsyncIterator","BufferList","destroyImpl","getHighWaterMark","_require$codes","ERR_INVALID_ARG_TYPE","ERR_STREAM_PUSH_AFTER_EOF","ERR_METHOD_NOT_IMPLEMENTED","ERR_STREAM_UNSHIFT_AFTER_END_EVENT","errorOrDestroy","kProxyEvents","isDuplex","objectMode","readableObjectMode","pipes","pipesCount","flowing","endEmitted","reading","sync","needReadable","emittedReadable","readableListening","resumeScheduled","emitClose","autoDestroy","defaultEncoding","awaitDrain","readingMore","decoder","_destroy","readableAddChunk","addToFront","skipChunkCheck","onEofChunk","chunkInvalid","addChunk","maybeReadMore","emitReadable","_undestroy","undestroy","isPaused","setEncoding","enc","head","MAX_HWM","computeNewHighWaterMark","howMuchToRead","emitReadable_","flow","maybeReadMore_","pipeOnDrain","updateReadableListening","nReadingNextTick","resume_","fromList","consume","endReadable","endReadableNT","wState","xs","nOrig","doRead","pipeOpts","endFn","stdout","unpipe","onunpipe","unpipeInfo","hasUnpiped","cleanedUp","onfinish","needDrain","dests","ev","asyncIterator","_fromList","iterable","ERR_MULTIPLE_CALLBACK","ERR_TRANSFORM_ALREADY_TRANSFORMING","ERR_TRANSFORM_WITH_LENGTH_0","afterTransform","ts","_transformState","transforming","writecb","writechunk","rs","needTransform","writeencoding","transform","_flush","prefinish","err2","CorkedRequest","entry","finish","onCorkedFinish","WritableState","internalUtil","deprecate","realHasInstance","ERR_STREAM_CANNOT_PIPE","ERR_STREAM_DESTROYED","ERR_STREAM_NULL_VALUES","ERR_STREAM_WRITE_AFTER_END","ERR_UNKNOWN_ENCODING","nop","writableObjectMode","finalCalled","ending","noDecode","decodeStrings","writing","corked","bufferProcessing","onwrite","writelen","bufferedRequest","lastBufferedRequest","pendingcb","prefinished","errorEmitted","bufferedRequestCount","corkedRequestsFree","writev","_writev","final","_final","writeAfterEnd","validChunk","decodeChunk","writeOrBuffer","isBuf","newChunk","doWrite","onwriteError","finishMaybe","onwriteStateUpdate","needFinish","clearBuffer","afterWrite","onwriteDrain","holder","allBuffers","callFinal","need","rState","endWritable","corkReq","hasInstance","cork","uncork","setDefaultEncoding","_Object$setPrototypeO","_defineProperty","kLastResolve","kLastReject","kError","kEnded","kLastPromise","kHandlePromise","kStream","createIterResult","readAndResolve","iter","onReadable","wrapForNext","lastPromise","AsyncIteratorPrototype","ReadableStreamAsyncIteratorPrototype","_Object$create","_classCallCheck","instance","_defineProperties","_createClass","protoProps","staticProps","custom","copyBuffer","tail","hasStrings","_getString","_getBuffer","nb","depth","customInspect","readableDestroyed","writableDestroyed","emitErrorNT","emitCloseNT","emitErrorAndCloseNT","ERR_STREAM_PREMATURE_CLOSE","isRequest","setHeader","abort","eos","onlegacyfinish","writableEnded","readableEnded","onrequest","req","ERR_MISSING_ARGS","destroyer","popCallback","destroys","ERR_INVALID_OPT_VALUE","highWaterMarkFrom","duplexKey","hwm","_normalizeEncoding","retried","normalizeEncoding","nenc","text","utf16Text","utf16End","fillLast","utf8FillLast","base64Text","base64End","simpleWrite","simpleEnd","lastNeed","lastTotal","lastChar","utf8CheckByte","byte","utf8CheckIncomplete","utf8CheckExtraBytes","utf8Text","utf8End","localStorage","_v","default","_v2","_v3","_v4","_nil","_version","_validate","_stringify","_parse","md5","unescape","encodeURIComponent","md5ToHexEncodedArray","wordsToMd5","bytesToWords","length32","hexTab","hex","getOutputLength","inputLength8","olda","oldb","oldc","oldd","md5ff","md5gg","md5hh","md5ii","safeAdd","length8","Uint32Array","lsw","bitRotateLeft","cnt","md5cmn","q","_default","uuid","getRandomValues","rng","rnds8","crypto","msCrypto","z","ROTL","sha1","K","H","N","ceil","M","W","byteToHex","_rng","_nodeId","_clockseq","_lastMSecs","_lastNSecs","v1","clockseq","seedBytes","msecs","nsecs","dt","tl","tmh","_md","URL","DNS","stringToBytes","hashfunc","generateUUID","namespace","rnds","_sha","_regex","validate","expires","secure","httponly","samesite","expDate","getTime","cookie","toUTCString","cookies","separatorIndex","decodeURIComponent","erase"],"sourceRoot":""}