@onekeyfe/hd-web-sdk 0.0.5 → 0.0.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/iframe.html +1 -1
- package/build/js/iframe.74d40db7138f3806e39b.js +3 -0
- package/build/js/{iframe.9d569b5bafb1b842b4a0.js.LICENSE.txt → iframe.74d40db7138f3806e39b.js.LICENSE.txt} +0 -0
- package/build/js/iframe.74d40db7138f3806e39b.js.map +1 -0
- package/build/onekey-js-sdk.js +65 -13
- package/build/onekey-js-sdk.js.map +1 -1
- package/build/onekey-js-sdk.min.js +1 -1
- package/build/onekey-js-sdk.min.js.map +1 -1
- package/package.json +4 -4
- package/build/js/iframe.9d569b5bafb1b842b4a0.js +0 -3
- package/build/js/iframe.9d569b5bafb1b842b4a0.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"js/iframe.74d40db7138f3806e39b.js","mappings":"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","sources":["webpack://@onekeyfe/hd-web-sdk/../../node_modules/@onekeyfe/cross-inpage-provider-events/cross-events.js","webpack://@onekeyfe/hd-web-sdk/../../node_modules/@protobufjs/aspromise/index.js","webpack://@onekeyfe/hd-web-sdk/../../node_modules/@protobufjs/base64/index.js","webpack://@onekeyfe/hd-web-sdk/../../node_modules/@protobufjs/codegen/index.js","webpack://@onekeyfe/hd-web-sdk/../../node_modules/@protobufjs/eventemitter/index.js","webpack://@onekeyfe/hd-web-sdk/../../node_modules/@protobufjs/fetch/index.js","webpack://@onekeyfe/hd-web-sdk/../../node_modules/@protobufjs/float/index.js","webpack://@onekeyfe/hd-web-sdk/../../node_modules/@protobufjs/inquire/index.js","webpack://@onekeyfe/hd-web-sdk/../../node_modules/@protobufjs/path/index.js","webpack://@onekeyfe/hd-web-sdk/../../node_modules/@protobufjs/pool/index.js","webpack://@onekeyfe/hd-web-sdk/../../node_modules/@protobufjs/utf8/index.js","webpack://@onekeyfe/hd-web-sdk/../../node_modules/axios/index.js","webpack://@onekeyfe/hd-web-sdk/../../node_modules/axios/lib/adapters/xhr.js","webpack://@onekeyfe/hd-web-sdk/../../node_modules/axios/lib/axios.js","webpack://@onekeyfe/hd-web-sdk/../../node_modules/axios/lib/cancel/CancelToken.js","webpack://@onekeyfe/hd-web-sdk/../../node_modules/axios/lib/cancel/CanceledError.js","webpack://@onekeyfe/hd-web-sdk/../../node_modules/axios/lib/cancel/isCancel.js","webpack://@onekeyfe/hd-web-sdk/../../node_modules/axios/lib/core/Axios.js","webpack://@onekeyfe/hd-web-sdk/../../node_modules/axios/lib/core/AxiosError.js","webpack://@onekeyfe/hd-web-sdk/../../node_modules/axios/lib/core/InterceptorManager.js","webpack://@onekeyfe/hd-web-sdk/../../node_modules/axios/lib/core/buildFullPath.js","webpack://@onekeyfe/hd-web-sdk/../../node_modules/axios/lib/core/dispatchRequest.js","webpack://@onekeyfe/hd-web-sdk/../../node_modules/axios/lib/core/mergeConfig.js","webpack://@onekeyfe/hd-web-sdk/../../node_modules/axios/lib/core/settle.js","webpack://@onekeyfe/hd-web-sdk/../../node_modules/axios/lib/core/transformData.js","webpack://@onekeyfe/hd-web-sdk/../../node_modules/axios/lib/defaults/index.js","webpack://@onekeyfe/hd-web-sdk/../../node_modules/axios/lib/defaults/transitional.js","webpack://@onekeyfe/hd-web-sdk/../../node_modules/axios/lib/env/data.js","webpack://@onekeyfe/hd-web-sdk/../../node_modules/axios/lib/helpers/bind.js","webpack://@onekeyfe/hd-web-sdk/../../node_modules/axios/lib/helpers/buildURL.js","webpack://@onekeyfe/hd-web-sdk/../../node_modules/axios/lib/helpers/combineURLs.js","webpack://@onekeyfe/hd-web-sdk/../../node_modules/axios/lib/helpers/cookies.js","webpack://@onekeyfe/hd-web-sdk/../../node_modules/axios/lib/helpers/isAbsoluteURL.js","webpack://@onekeyfe/hd-web-sdk/../../node_modules/axios/lib/helpers/isAxiosError.js","webpack://@onekeyfe/hd-web-sdk/../../node_modules/axios/lib/helpers/isURLSameOrigin.js","webpack://@onekeyfe/hd-web-sdk/../../node_modules/axios/lib/helpers/normalizeHeaderName.js","webpack://@onekeyfe/hd-web-sdk/../../node_modules/axios/lib/helpers/null.js","webpack://@onekeyfe/hd-web-sdk/../../node_modules/axios/lib/helpers/parseHeaders.js","webpack://@onekeyfe/hd-web-sdk/../../node_modules/axios/lib/helpers/parseProtocol.js","webpack://@onekeyfe/hd-web-sdk/../../node_modules/axios/lib/helpers/spread.js","webpack://@onekeyfe/hd-web-sdk/../../node_modules/axios/lib/helpers/toFormData.js","webpack://@onekeyfe/hd-web-sdk/../../node_modules/axios/lib/helpers/validator.js","webpack://@onekeyfe/hd-web-sdk/../../node_modules/axios/lib/utils.js","webpack://@onekeyfe/hd-web-sdk/../core/dist/index.js","webpack://@onekeyfe/hd-web-sdk/../hd-transport-http/dist/index.js","webpack://@onekeyfe/hd-web-sdk/../hd-transport/dist/index.js","webpack://@onekeyfe/hd-web-sdk/../../node_modules/base64-js/index.js","webpack://@onekeyfe/hd-web-sdk/../../node_modules/bignumber.js/bignumber.js","webpack://@onekeyfe/hd-web-sdk/../../node_modules/buffer/index.js","webpack://@onekeyfe/hd-web-sdk/../../node_modules/bytebuffer/dist/bytebuffer.js","webpack://@onekeyfe/hd-web-sdk/../../node_modules/bytebuffer/node_modules/long/dist/long.js","webpack://@onekeyfe/hd-web-sdk/../../node_modules/es6-promise/dist/es6-promise.js","webpack://@onekeyfe/hd-web-sdk/../../node_modules/fast-safe-stringify/index.js","webpack://@onekeyfe/hd-web-sdk/../../node_modules/ieee754/index.js","webpack://@onekeyfe/hd-web-sdk/../../node_modules/lodash/_Symbol.js","webpack://@onekeyfe/hd-web-sdk/../../node_modules/lodash/_baseGetTag.js","webpack://@onekeyfe/hd-web-sdk/../../node_modules/lodash/_freeGlobal.js","webpack://@onekeyfe/hd-web-sdk/../../node_modules/lodash/_getPrototype.js","webpack://@onekeyfe/hd-web-sdk/../../node_modules/lodash/_getRawTag.js","webpack://@onekeyfe/hd-web-sdk/../../node_modules/lodash/_objectToString.js","webpack://@onekeyfe/hd-web-sdk/../../node_modules/lodash/_overArg.js","webpack://@onekeyfe/hd-web-sdk/../../node_modules/lodash/_root.js","webpack://@onekeyfe/hd-web-sdk/../../node_modules/lodash/isArray.js","webpack://@onekeyfe/hd-web-sdk/../../node_modules/lodash/isFunction.js","webpack://@onekeyfe/hd-web-sdk/../../node_modules/lodash/isObject.js","webpack://@onekeyfe/hd-web-sdk/../../node_modules/lodash/isObjectLike.js","webpack://@onekeyfe/hd-web-sdk/../../node_modules/lodash/isPlainObject.js","webpack://@onekeyfe/hd-web-sdk/../../node_modules/lodash/isString.js","webpack://@onekeyfe/hd-web-sdk/../../node_modules/long/src/long.js","webpack://@onekeyfe/hd-web-sdk/../../node_modules/lru-cache/index.js","webpack://@onekeyfe/hd-web-sdk/../../node_modules/ms/index.js","webpack://@onekeyfe/hd-web-sdk/../../node_modules/process/browser.js","webpack://@onekeyfe/hd-web-sdk/../../node_modules/protobufjs/light.js","webpack://@onekeyfe/hd-web-sdk/../../node_modules/protobufjs/src/converter.js","webpack://@onekeyfe/hd-web-sdk/../../node_modules/protobufjs/src/decoder.js","webpack://@onekeyfe/hd-web-sdk/../../node_modules/protobufjs/src/encoder.js","webpack://@onekeyfe/hd-web-sdk/../../node_modules/protobufjs/src/enum.js","webpack://@onekeyfe/hd-web-sdk/../../node_modules/protobufjs/src/field.js","webpack://@onekeyfe/hd-web-sdk/../../node_modules/protobufjs/src/index-light.js","webpack://@onekeyfe/hd-web-sdk/../../node_modules/protobufjs/src/index-minimal.js","webpack://@onekeyfe/hd-web-sdk/../../node_modules/protobufjs/src/mapfield.js","webpack://@onekeyfe/hd-web-sdk/../../node_modules/protobufjs/src/message.js","webpack://@onekeyfe/hd-web-sdk/../../node_modules/protobufjs/src/method.js","webpack://@onekeyfe/hd-web-sdk/../../node_modules/protobufjs/src/namespace.js","webpack://@onekeyfe/hd-web-sdk/../../node_modules/protobufjs/src/object.js","webpack://@onekeyfe/hd-web-sdk/../../node_modules/protobufjs/src/oneof.js","webpack://@onekeyfe/hd-web-sdk/../../node_modules/protobufjs/src/reader.js","webpack://@onekeyfe/hd-web-sdk/../../node_modules/protobufjs/src/reader_buffer.js","webpack://@onekeyfe/hd-web-sdk/../../node_modules/protobufjs/src/root.js","webpack://@onekeyfe/hd-web-sdk/../../node_modules/protobufjs/src/roots.js","webpack://@onekeyfe/hd-web-sdk/../../node_modules/protobufjs/src/rpc.js","webpack://@onekeyfe/hd-web-sdk/../../node_modules/protobufjs/src/rpc/service.js","webpack://@onekeyfe/hd-web-sdk/../../node_modules/protobufjs/src/service.js","webpack://@onekeyfe/hd-web-sdk/../../node_modules/protobufjs/src/type.js","webpack://@onekeyfe/hd-web-sdk/../../node_modules/protobufjs/src/types.js","webpack://@onekeyfe/hd-web-sdk/../../node_modules/protobufjs/src/util.js","webpack://@onekeyfe/hd-web-sdk/../../node_modules/protobufjs/src/util/longbits.js","webpack://@onekeyfe/hd-web-sdk/../../node_modules/protobufjs/src/util/minimal.js","webpack://@onekeyfe/hd-web-sdk/../../node_modules/protobufjs/src/verifier.js","webpack://@onekeyfe/hd-web-sdk/../../node_modules/protobufjs/src/wrappers.js","webpack://@onekeyfe/hd-web-sdk/../../node_modules/protobufjs/src/writer.js","webpack://@onekeyfe/hd-web-sdk/../../node_modules/protobufjs/src/writer_buffer.js","webpack://@onekeyfe/hd-web-sdk/../../node_modules/semver/classes/comparator.js","webpack://@onekeyfe/hd-web-sdk/../../node_modules/semver/classes/range.js","webpack://@onekeyfe/hd-web-sdk/../../node_modules/semver/classes/semver.js","webpack://@onekeyfe/hd-web-sdk/../../node_modules/semver/functions/clean.js","webpack://@onekeyfe/hd-web-sdk/../../node_modules/semver/functions/cmp.js","webpack://@onekeyfe/hd-web-sdk/../../node_modules/semver/functions/coerce.js","webpack://@onekeyfe/hd-web-sdk/../../node_modules/semver/functions/compare-build.js","webpack://@onekeyfe/hd-web-sdk/../../node_modules/semver/functions/compare-loose.js","webpack://@onekeyfe/hd-web-sdk/../../node_modules/semver/functions/compare.js","webpack://@onekeyfe/hd-web-sdk/../../node_modules/semver/functions/diff.js","webpack://@onekeyfe/hd-web-sdk/../../node_modules/semver/functions/eq.js","webpack://@onekeyfe/hd-web-sdk/../../node_modules/semver/functions/gt.js","webpack://@onekeyfe/hd-web-sdk/../../node_modules/semver/functions/gte.js","webpack://@onekeyfe/hd-web-sdk/../../node_modules/semver/functions/inc.js","webpack://@onekeyfe/hd-web-sdk/../../node_modules/semver/functions/lt.js","webpack://@onekeyfe/hd-web-sdk/../../node_modules/semver/functions/lte.js","webpack://@onekeyfe/hd-web-sdk/../../node_modules/semver/functions/major.js","webpack://@onekeyfe/hd-web-sdk/../../node_modules/semver/functions/minor.js","webpack://@onekeyfe/hd-web-sdk/../../node_modules/semver/functions/neq.js","webpack://@onekeyfe/hd-web-sdk/../../node_modules/semver/functions/parse.js","webpack://@onekeyfe/hd-web-sdk/../../node_modules/semver/functions/patch.js","webpack://@onekeyfe/hd-web-sdk/../../node_modules/semver/functions/prerelease.js","webpack://@onekeyfe/hd-web-sdk/../../node_modules/semver/functions/rcompare.js","webpack://@onekeyfe/hd-web-sdk/../../node_modules/semver/functions/rsort.js","webpack://@onekeyfe/hd-web-sdk/../../node_modules/semver/functions/satisfies.js","webpack://@onekeyfe/hd-web-sdk/../../node_modules/semver/functions/sort.js","webpack://@onekeyfe/hd-web-sdk/../../node_modules/semver/functions/valid.js","webpack://@onekeyfe/hd-web-sdk/../../node_modules/semver/index.js","webpack://@onekeyfe/hd-web-sdk/../../node_modules/semver/internal/constants.js","webpack://@onekeyfe/hd-web-sdk/../../node_modules/semver/internal/debug.js","webpack://@onekeyfe/hd-web-sdk/../../node_modules/semver/internal/identifiers.js","webpack://@onekeyfe/hd-web-sdk/../../node_modules/semver/internal/parse-options.js","webpack://@onekeyfe/hd-web-sdk/../../node_modules/semver/internal/re.js","webpack://@onekeyfe/hd-web-sdk/../../node_modules/semver/ranges/gtr.js","webpack://@onekeyfe/hd-web-sdk/../../node_modules/semver/ranges/intersects.js","webpack://@onekeyfe/hd-web-sdk/../../node_modules/semver/ranges/ltr.js","webpack://@onekeyfe/hd-web-sdk/../../node_modules/semver/ranges/max-satisfying.js","webpack://@onekeyfe/hd-web-sdk/../../node_modules/semver/ranges/min-satisfying.js","webpack://@onekeyfe/hd-web-sdk/../../node_modules/semver/ranges/min-version.js","webpack://@onekeyfe/hd-web-sdk/../../node_modules/semver/ranges/outside.js","webpack://@onekeyfe/hd-web-sdk/../../node_modules/semver/ranges/simplify.js","webpack://@onekeyfe/hd-web-sdk/../../node_modules/semver/ranges/subset.js","webpack://@onekeyfe/hd-web-sdk/../../node_modules/semver/ranges/to-comparators.js","webpack://@onekeyfe/hd-web-sdk/../../node_modules/semver/ranges/valid.js","webpack://@onekeyfe/hd-web-sdk/../../node_modules/yallist/iterator.js","webpack://@onekeyfe/hd-web-sdk/../../node_modules/yallist/yallist.js","webpack://@onekeyfe/hd-web-sdk/webpack/bootstrap","webpack://@onekeyfe/hd-web-sdk/webpack/runtime/compat get default export","webpack://@onekeyfe/hd-web-sdk/webpack/runtime/define property getters","webpack://@onekeyfe/hd-web-sdk/webpack/runtime/global","webpack://@onekeyfe/hd-web-sdk/webpack/runtime/hasOwnProperty shorthand","webpack://@onekeyfe/hd-web-sdk/./src/utils/urlUtils.ts","webpack://@onekeyfe/hd-web-sdk/../../node_modules/@onekeyfe/cross-inpage-provider-core/dist/CrossEventEmitter.js","webpack://@onekeyfe/hd-web-sdk/../../node_modules/@onekeyfe/cross-inpage-provider-core/dist/debug/common.js","webpack://@onekeyfe/hd-web-sdk/../../node_modules/@onekeyfe/cross-inpage-provider-core/dist/consts.js","webpack://@onekeyfe/hd-web-sdk/../../node_modules/@onekeyfe/cross-inpage-provider-core/dist/debug/browser.js","webpack://@onekeyfe/hd-web-sdk/../../node_modules/@onekeyfe/cross-inpage-provider-core/dist/debug/index.js","webpack://@onekeyfe/hd-web-sdk/../../node_modules/@onekeyfe/cross-inpage-provider-core/dist/loggers.js","webpack://@onekeyfe/hd-web-sdk/../../node_modules/@onekeyfe/cross-inpage-provider-types/dist/index.js","webpack://@onekeyfe/hd-web-sdk/../../node_modules/@onekeyfe/cross-inpage-provider-errors/dist/classes.js","webpack://@onekeyfe/hd-web-sdk/../../node_modules/@onekeyfe/cross-inpage-provider-errors/dist/error-constants.js","webpack://@onekeyfe/hd-web-sdk/../../node_modules/@onekeyfe/cross-inpage-provider-errors/dist/utils.js","webpack://@onekeyfe/hd-web-sdk/../../node_modules/@onekeyfe/cross-inpage-provider-errors/dist/errors.js","webpack://@onekeyfe/hd-web-sdk/../../node_modules/@onekeyfe/cross-inpage-provider-core/dist/JsBridgeBase.js","webpack://@onekeyfe/hd-web-sdk/../../node_modules/@onekeyfe/cross-inpage-provider-core/dist/versionInfo.js","webpack://@onekeyfe/hd-web-sdk/../../node_modules/@onekeyfe/cross-inpage-provider-core/dist/JsBridgeIframe.js","webpack://@onekeyfe/hd-web-sdk/../../node_modules/@onekeyfe/cross-inpage-provider-core/dist/injectedFactory.js","webpack://@onekeyfe/hd-web-sdk/./src/iframe/bridge-config.ts","webpack://@onekeyfe/hd-web-sdk/./src/utils/bridgeUtils.ts","webpack://@onekeyfe/hd-web-sdk/./src/iframe/index.ts"],"sourcesContent":["// 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 errorListener(err) {\n emitter.removeListener(name, resolver);\n reject(err);\n }\n\n function resolver() {\n if (typeof emitter.removeListener === 'function') {\n emitter.removeListener('error', errorListener);\n }\n resolve([].slice.call(arguments));\n };\n\n eventTargetAgnosticAddListener(emitter, name, resolver, { once: true });\n if (name !== 'error') {\n addErrorHandlerIfEventEmitter(emitter, errorListener, { once: true });\n }\n });\n}\n\nfunction addErrorHandlerIfEventEmitter(emitter, handler, flags) {\n if (typeof emitter.on === 'function') {\n eventTargetAgnosticAddListener(emitter, 'error', handler, flags);\n }\n}\n\nfunction eventTargetAgnosticAddListener(emitter, name, listener, flags) {\n if (typeof emitter.on === 'function') {\n if (flags.once) {\n emitter.once(name, listener);\n } else {\n emitter.on(name, listener);\n }\n } else if (typeof emitter.addEventListener === 'function') {\n // EventTarget does not have `error` event semantics like Node\n // EventEmitters, we do not listen for `error` events here.\n emitter.addEventListener(name, function wrapListener(arg) {\n // IE does not have builtin `{ once: true }` support so we\n // have to do it manually.\n if (flags.once) {\n emitter.removeEventListener(name, wrapListener);\n }\n listener(arg);\n });\n } else {\n throw new TypeError('The \"emitter\" argument must be of type EventEmitter. Received type ' + typeof emitter);\n }\n}\n","\"use strict\";\r\nmodule.exports = asPromise;\r\n\r\n/**\r\n * Callback as used by {@link util.asPromise}.\r\n * @typedef asPromiseCallback\r\n * @type {function}\r\n * @param {Error|null} error Error, if any\r\n * @param {...*} params Additional arguments\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Returns a promise from a node-style callback function.\r\n * @memberof util\r\n * @param {asPromiseCallback} fn Function to call\r\n * @param {*} ctx Function context\r\n * @param {...*} params Function arguments\r\n * @returns {Promise<*>} Promisified function\r\n */\r\nfunction asPromise(fn, ctx/*, varargs */) {\r\n var params = new Array(arguments.length - 1),\r\n offset = 0,\r\n index = 2,\r\n pending = true;\r\n while (index < arguments.length)\r\n params[offset++] = arguments[index++];\r\n return new Promise(function executor(resolve, reject) {\r\n params[offset] = function callback(err/*, varargs */) {\r\n if (pending) {\r\n pending = false;\r\n if (err)\r\n reject(err);\r\n else {\r\n var params = new Array(arguments.length - 1),\r\n offset = 0;\r\n while (offset < params.length)\r\n params[offset++] = arguments[offset];\r\n resolve.apply(null, params);\r\n }\r\n }\r\n };\r\n try {\r\n fn.apply(ctx || null, params);\r\n } catch (err) {\r\n if (pending) {\r\n pending = false;\r\n reject(err);\r\n }\r\n }\r\n });\r\n}\r\n","\"use strict\";\r\n\r\n/**\r\n * A minimal base64 implementation for number arrays.\r\n * @memberof util\r\n * @namespace\r\n */\r\nvar base64 = exports;\r\n\r\n/**\r\n * Calculates the byte length of a base64 encoded string.\r\n * @param {string} string Base64 encoded string\r\n * @returns {number} Byte length\r\n */\r\nbase64.length = function length(string) {\r\n var p = string.length;\r\n if (!p)\r\n return 0;\r\n var n = 0;\r\n while (--p % 4 > 1 && string.charAt(p) === \"=\")\r\n ++n;\r\n return Math.ceil(string.length * 3) / 4 - n;\r\n};\r\n\r\n// Base64 encoding table\r\nvar b64 = new Array(64);\r\n\r\n// Base64 decoding table\r\nvar s64 = new Array(123);\r\n\r\n// 65..90, 97..122, 48..57, 43, 47\r\nfor (var i = 0; i < 64;)\r\n s64[b64[i] = i < 26 ? i + 65 : i < 52 ? i + 71 : i < 62 ? i - 4 : i - 59 | 43] = i++;\r\n\r\n/**\r\n * Encodes a buffer to a base64 encoded string.\r\n * @param {Uint8Array} buffer Source buffer\r\n * @param {number} start Source start\r\n * @param {number} end Source end\r\n * @returns {string} Base64 encoded string\r\n */\r\nbase64.encode = function encode(buffer, start, end) {\r\n var parts = null,\r\n chunk = [];\r\n var i = 0, // output index\r\n j = 0, // goto index\r\n t; // temporary\r\n while (start < end) {\r\n var b = buffer[start++];\r\n switch (j) {\r\n case 0:\r\n chunk[i++] = b64[b >> 2];\r\n t = (b & 3) << 4;\r\n j = 1;\r\n break;\r\n case 1:\r\n chunk[i++] = b64[t | b >> 4];\r\n t = (b & 15) << 2;\r\n j = 2;\r\n break;\r\n case 2:\r\n chunk[i++] = b64[t | b >> 6];\r\n chunk[i++] = b64[b & 63];\r\n j = 0;\r\n break;\r\n }\r\n if (i > 8191) {\r\n (parts || (parts = [])).push(String.fromCharCode.apply(String, chunk));\r\n i = 0;\r\n }\r\n }\r\n if (j) {\r\n chunk[i++] = b64[t];\r\n chunk[i++] = 61;\r\n if (j === 1)\r\n chunk[i++] = 61;\r\n }\r\n if (parts) {\r\n if (i)\r\n parts.push(String.fromCharCode.apply(String, chunk.slice(0, i)));\r\n return parts.join(\"\");\r\n }\r\n return String.fromCharCode.apply(String, chunk.slice(0, i));\r\n};\r\n\r\nvar invalidEncoding = \"invalid encoding\";\r\n\r\n/**\r\n * Decodes a base64 encoded string to a buffer.\r\n * @param {string} string Source string\r\n * @param {Uint8Array} buffer Destination buffer\r\n * @param {number} offset Destination offset\r\n * @returns {number} Number of bytes written\r\n * @throws {Error} If encoding is invalid\r\n */\r\nbase64.decode = function decode(string, buffer, offset) {\r\n var start = offset;\r\n var j = 0, // goto index\r\n t; // temporary\r\n for (var i = 0; i < string.length;) {\r\n var c = string.charCodeAt(i++);\r\n if (c === 61 && j > 1)\r\n break;\r\n if ((c = s64[c]) === undefined)\r\n throw Error(invalidEncoding);\r\n switch (j) {\r\n case 0:\r\n t = c;\r\n j = 1;\r\n break;\r\n case 1:\r\n buffer[offset++] = t << 2 | (c & 48) >> 4;\r\n t = c;\r\n j = 2;\r\n break;\r\n case 2:\r\n buffer[offset++] = (t & 15) << 4 | (c & 60) >> 2;\r\n t = c;\r\n j = 3;\r\n break;\r\n case 3:\r\n buffer[offset++] = (t & 3) << 6 | c;\r\n j = 0;\r\n break;\r\n }\r\n }\r\n if (j === 1)\r\n throw Error(invalidEncoding);\r\n return offset - start;\r\n};\r\n\r\n/**\r\n * Tests if the specified string appears to be base64 encoded.\r\n * @param {string} string String to test\r\n * @returns {boolean} `true` if probably base64 encoded, otherwise false\r\n */\r\nbase64.test = function test(string) {\r\n return /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(string);\r\n};\r\n","\"use strict\";\r\nmodule.exports = codegen;\r\n\r\n/**\r\n * Begins generating a function.\r\n * @memberof util\r\n * @param {string[]} functionParams Function parameter names\r\n * @param {string} [functionName] Function name if not anonymous\r\n * @returns {Codegen} Appender that appends code to the function's body\r\n */\r\nfunction codegen(functionParams, functionName) {\r\n\r\n /* istanbul ignore if */\r\n if (typeof functionParams === \"string\") {\r\n functionName = functionParams;\r\n functionParams = undefined;\r\n }\r\n\r\n var body = [];\r\n\r\n /**\r\n * Appends code to the function's body or finishes generation.\r\n * @typedef Codegen\r\n * @type {function}\r\n * @param {string|Object.<string,*>} [formatStringOrScope] Format string or, to finish the function, an object of additional scope variables, if any\r\n * @param {...*} [formatParams] Format parameters\r\n * @returns {Codegen|Function} Itself or the generated function if finished\r\n * @throws {Error} If format parameter counts do not match\r\n */\r\n\r\n function Codegen(formatStringOrScope) {\r\n // note that explicit array handling below makes this ~50% faster\r\n\r\n // finish the function\r\n if (typeof formatStringOrScope !== \"string\") {\r\n var source = toString();\r\n if (codegen.verbose)\r\n console.log(\"codegen: \" + source); // eslint-disable-line no-console\r\n source = \"return \" + source;\r\n if (formatStringOrScope) {\r\n var scopeKeys = Object.keys(formatStringOrScope),\r\n scopeParams = new Array(scopeKeys.length + 1),\r\n scopeValues = new Array(scopeKeys.length),\r\n scopeOffset = 0;\r\n while (scopeOffset < scopeKeys.length) {\r\n scopeParams[scopeOffset] = scopeKeys[scopeOffset];\r\n scopeValues[scopeOffset] = formatStringOrScope[scopeKeys[scopeOffset++]];\r\n }\r\n scopeParams[scopeOffset] = source;\r\n return Function.apply(null, scopeParams).apply(null, scopeValues); // eslint-disable-line no-new-func\r\n }\r\n return Function(source)(); // eslint-disable-line no-new-func\r\n }\r\n\r\n // otherwise append to body\r\n var formatParams = new Array(arguments.length - 1),\r\n formatOffset = 0;\r\n while (formatOffset < formatParams.length)\r\n formatParams[formatOffset] = arguments[++formatOffset];\r\n formatOffset = 0;\r\n formatStringOrScope = formatStringOrScope.replace(/%([%dfijs])/g, function replace($0, $1) {\r\n var value = formatParams[formatOffset++];\r\n switch ($1) {\r\n case \"d\": case \"f\": return String(Number(value));\r\n case \"i\": return String(Math.floor(value));\r\n case \"j\": return JSON.stringify(value);\r\n case \"s\": return String(value);\r\n }\r\n return \"%\";\r\n });\r\n if (formatOffset !== formatParams.length)\r\n throw Error(\"parameter count mismatch\");\r\n body.push(formatStringOrScope);\r\n return Codegen;\r\n }\r\n\r\n function toString(functionNameOverride) {\r\n return \"function \" + (functionNameOverride || functionName || \"\") + \"(\" + (functionParams && functionParams.join(\",\") || \"\") + \"){\\n \" + body.join(\"\\n \") + \"\\n}\";\r\n }\r\n\r\n Codegen.toString = toString;\r\n return Codegen;\r\n}\r\n\r\n/**\r\n * Begins generating a function.\r\n * @memberof util\r\n * @function codegen\r\n * @param {string} [functionName] Function name if not anonymous\r\n * @returns {Codegen} Appender that appends code to the function's body\r\n * @variation 2\r\n */\r\n\r\n/**\r\n * When set to `true`, codegen will log generated code to console. Useful for debugging.\r\n * @name util.codegen.verbose\r\n * @type {boolean}\r\n */\r\ncodegen.verbose = false;\r\n","\"use strict\";\r\nmodule.exports = EventEmitter;\r\n\r\n/**\r\n * Constructs a new event emitter instance.\r\n * @classdesc A minimal event emitter.\r\n * @memberof util\r\n * @constructor\r\n */\r\nfunction EventEmitter() {\r\n\r\n /**\r\n * Registered listeners.\r\n * @type {Object.<string,*>}\r\n * @private\r\n */\r\n this._listeners = {};\r\n}\r\n\r\n/**\r\n * Registers an event listener.\r\n * @param {string} evt Event name\r\n * @param {function} fn Listener\r\n * @param {*} [ctx] Listener context\r\n * @returns {util.EventEmitter} `this`\r\n */\r\nEventEmitter.prototype.on = function on(evt, fn, ctx) {\r\n (this._listeners[evt] || (this._listeners[evt] = [])).push({\r\n fn : fn,\r\n ctx : ctx || this\r\n });\r\n return this;\r\n};\r\n\r\n/**\r\n * Removes an event listener or any matching listeners if arguments are omitted.\r\n * @param {string} [evt] Event name. Removes all listeners if omitted.\r\n * @param {function} [fn] Listener to remove. Removes all listeners of `evt` if omitted.\r\n * @returns {util.EventEmitter} `this`\r\n */\r\nEventEmitter.prototype.off = function off(evt, fn) {\r\n if (evt === undefined)\r\n this._listeners = {};\r\n else {\r\n if (fn === undefined)\r\n this._listeners[evt] = [];\r\n else {\r\n var listeners = this._listeners[evt];\r\n for (var i = 0; i < listeners.length;)\r\n if (listeners[i].fn === fn)\r\n listeners.splice(i, 1);\r\n else\r\n ++i;\r\n }\r\n }\r\n return this;\r\n};\r\n\r\n/**\r\n * Emits an event by calling its listeners with the specified arguments.\r\n * @param {string} evt Event name\r\n * @param {...*} args Arguments\r\n * @returns {util.EventEmitter} `this`\r\n */\r\nEventEmitter.prototype.emit = function emit(evt) {\r\n var listeners = this._listeners[evt];\r\n if (listeners) {\r\n var args = [],\r\n i = 1;\r\n for (; i < arguments.length;)\r\n args.push(arguments[i++]);\r\n for (i = 0; i < listeners.length;)\r\n listeners[i].fn.apply(listeners[i++].ctx, args);\r\n }\r\n return this;\r\n};\r\n","\"use strict\";\r\nmodule.exports = fetch;\r\n\r\nvar asPromise = require(\"@protobufjs/aspromise\"),\r\n inquire = require(\"@protobufjs/inquire\");\r\n\r\nvar fs = inquire(\"fs\");\r\n\r\n/**\r\n * Node-style callback as used by {@link util.fetch}.\r\n * @typedef FetchCallback\r\n * @type {function}\r\n * @param {?Error} error Error, if any, otherwise `null`\r\n * @param {string} [contents] File contents, if there hasn't been an error\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Options as used by {@link util.fetch}.\r\n * @typedef FetchOptions\r\n * @type {Object}\r\n * @property {boolean} [binary=false] Whether expecting a binary response\r\n * @property {boolean} [xhr=false] If `true`, forces the use of XMLHttpRequest\r\n */\r\n\r\n/**\r\n * Fetches the contents of a file.\r\n * @memberof util\r\n * @param {string} filename File path or url\r\n * @param {FetchOptions} options Fetch options\r\n * @param {FetchCallback} callback Callback function\r\n * @returns {undefined}\r\n */\r\nfunction fetch(filename, options, callback) {\r\n if (typeof options === \"function\") {\r\n callback = options;\r\n options = {};\r\n } else if (!options)\r\n options = {};\r\n\r\n if (!callback)\r\n return asPromise(fetch, this, filename, options); // eslint-disable-line no-invalid-this\r\n\r\n // if a node-like filesystem is present, try it first but fall back to XHR if nothing is found.\r\n if (!options.xhr && fs && fs.readFile)\r\n return fs.readFile(filename, function fetchReadFileCallback(err, contents) {\r\n return err && typeof XMLHttpRequest !== \"undefined\"\r\n ? fetch.xhr(filename, options, callback)\r\n : err\r\n ? callback(err)\r\n : callback(null, options.binary ? contents : contents.toString(\"utf8\"));\r\n });\r\n\r\n // use the XHR version otherwise.\r\n return fetch.xhr(filename, options, callback);\r\n}\r\n\r\n/**\r\n * Fetches the contents of a file.\r\n * @name util.fetch\r\n * @function\r\n * @param {string} path File path or url\r\n * @param {FetchCallback} callback Callback function\r\n * @returns {undefined}\r\n * @variation 2\r\n */\r\n\r\n/**\r\n * Fetches the contents of a file.\r\n * @name util.fetch\r\n * @function\r\n * @param {string} path File path or url\r\n * @param {FetchOptions} [options] Fetch options\r\n * @returns {Promise<string|Uint8Array>} Promise\r\n * @variation 3\r\n */\r\n\r\n/**/\r\nfetch.xhr = function fetch_xhr(filename, options, callback) {\r\n var xhr = new XMLHttpRequest();\r\n xhr.onreadystatechange /* works everywhere */ = function fetchOnReadyStateChange() {\r\n\r\n if (xhr.readyState !== 4)\r\n return undefined;\r\n\r\n // local cors security errors return status 0 / empty string, too. afaik this cannot be\r\n // reliably distinguished from an actually empty file for security reasons. feel free\r\n // to send a pull request if you are aware of a solution.\r\n if (xhr.status !== 0 && xhr.status !== 200)\r\n return callback(Error(\"status \" + xhr.status));\r\n\r\n // if binary data is expected, make sure that some sort of array is returned, even if\r\n // ArrayBuffers are not supported. the binary string fallback, however, is unsafe.\r\n if (options.binary) {\r\n var buffer = xhr.response;\r\n if (!buffer) {\r\n buffer = [];\r\n for (var i = 0; i < xhr.responseText.length; ++i)\r\n buffer.push(xhr.responseText.charCodeAt(i) & 255);\r\n }\r\n return callback(null, typeof Uint8Array !== \"undefined\" ? new Uint8Array(buffer) : buffer);\r\n }\r\n return callback(null, xhr.responseText);\r\n };\r\n\r\n if (options.binary) {\r\n // ref: https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/Sending_and_Receiving_Binary_Data#Receiving_binary_data_in_older_browsers\r\n if (\"overrideMimeType\" in xhr)\r\n xhr.overrideMimeType(\"text/plain; charset=x-user-defined\");\r\n xhr.responseType = \"arraybuffer\";\r\n }\r\n\r\n xhr.open(\"GET\", filename);\r\n xhr.send();\r\n};\r\n","\"use strict\";\r\n\r\nmodule.exports = factory(factory);\r\n\r\n/**\r\n * Reads / writes floats / doubles from / to buffers.\r\n * @name util.float\r\n * @namespace\r\n */\r\n\r\n/**\r\n * Writes a 32 bit float to a buffer using little endian byte order.\r\n * @name util.float.writeFloatLE\r\n * @function\r\n * @param {number} val Value to write\r\n * @param {Uint8Array} buf Target buffer\r\n * @param {number} pos Target buffer offset\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Writes a 32 bit float to a buffer using big endian byte order.\r\n * @name util.float.writeFloatBE\r\n * @function\r\n * @param {number} val Value to write\r\n * @param {Uint8Array} buf Target buffer\r\n * @param {number} pos Target buffer offset\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Reads a 32 bit float from a buffer using little endian byte order.\r\n * @name util.float.readFloatLE\r\n * @function\r\n * @param {Uint8Array} buf Source buffer\r\n * @param {number} pos Source buffer offset\r\n * @returns {number} Value read\r\n */\r\n\r\n/**\r\n * Reads a 32 bit float from a buffer using big endian byte order.\r\n * @name util.float.readFloatBE\r\n * @function\r\n * @param {Uint8Array} buf Source buffer\r\n * @param {number} pos Source buffer offset\r\n * @returns {number} Value read\r\n */\r\n\r\n/**\r\n * Writes a 64 bit double to a buffer using little endian byte order.\r\n * @name util.float.writeDoubleLE\r\n * @function\r\n * @param {number} val Value to write\r\n * @param {Uint8Array} buf Target buffer\r\n * @param {number} pos Target buffer offset\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Writes a 64 bit double to a buffer using big endian byte order.\r\n * @name util.float.writeDoubleBE\r\n * @function\r\n * @param {number} val Value to write\r\n * @param {Uint8Array} buf Target buffer\r\n * @param {number} pos Target buffer offset\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Reads a 64 bit double from a buffer using little endian byte order.\r\n * @name util.float.readDoubleLE\r\n * @function\r\n * @param {Uint8Array} buf Source buffer\r\n * @param {number} pos Source buffer offset\r\n * @returns {number} Value read\r\n */\r\n\r\n/**\r\n * Reads a 64 bit double from a buffer using big endian byte order.\r\n * @name util.float.readDoubleBE\r\n * @function\r\n * @param {Uint8Array} buf Source buffer\r\n * @param {number} pos Source buffer offset\r\n * @returns {number} Value read\r\n */\r\n\r\n// Factory function for the purpose of node-based testing in modified global environments\r\nfunction factory(exports) {\r\n\r\n // float: typed array\r\n if (typeof Float32Array !== \"undefined\") (function() {\r\n\r\n var f32 = new Float32Array([ -0 ]),\r\n f8b = new Uint8Array(f32.buffer),\r\n le = f8b[3] === 128;\r\n\r\n function writeFloat_f32_cpy(val, buf, pos) {\r\n f32[0] = val;\r\n buf[pos ] = f8b[0];\r\n buf[pos + 1] = f8b[1];\r\n buf[pos + 2] = f8b[2];\r\n buf[pos + 3] = f8b[3];\r\n }\r\n\r\n function writeFloat_f32_rev(val, buf, pos) {\r\n f32[0] = val;\r\n buf[pos ] = f8b[3];\r\n buf[pos + 1] = f8b[2];\r\n buf[pos + 2] = f8b[1];\r\n buf[pos + 3] = f8b[0];\r\n }\r\n\r\n /* istanbul ignore next */\r\n exports.writeFloatLE = le ? writeFloat_f32_cpy : writeFloat_f32_rev;\r\n /* istanbul ignore next */\r\n exports.writeFloatBE = le ? writeFloat_f32_rev : writeFloat_f32_cpy;\r\n\r\n function readFloat_f32_cpy(buf, pos) {\r\n f8b[0] = buf[pos ];\r\n f8b[1] = buf[pos + 1];\r\n f8b[2] = buf[pos + 2];\r\n f8b[3] = buf[pos + 3];\r\n return f32[0];\r\n }\r\n\r\n function readFloat_f32_rev(buf, pos) {\r\n f8b[3] = buf[pos ];\r\n f8b[2] = buf[pos + 1];\r\n f8b[1] = buf[pos + 2];\r\n f8b[0] = buf[pos + 3];\r\n return f32[0];\r\n }\r\n\r\n /* istanbul ignore next */\r\n exports.readFloatLE = le ? readFloat_f32_cpy : readFloat_f32_rev;\r\n /* istanbul ignore next */\r\n exports.readFloatBE = le ? readFloat_f32_rev : readFloat_f32_cpy;\r\n\r\n // float: ieee754\r\n })(); else (function() {\r\n\r\n function writeFloat_ieee754(writeUint, val, buf, pos) {\r\n var sign = val < 0 ? 1 : 0;\r\n if (sign)\r\n val = -val;\r\n if (val === 0)\r\n writeUint(1 / val > 0 ? /* positive */ 0 : /* negative 0 */ 2147483648, buf, pos);\r\n else if (isNaN(val))\r\n writeUint(2143289344, buf, pos);\r\n else if (val > 3.4028234663852886e+38) // +-Infinity\r\n writeUint((sign << 31 | 2139095040) >>> 0, buf, pos);\r\n else if (val < 1.1754943508222875e-38) // denormal\r\n writeUint((sign << 31 | Math.round(val / 1.401298464324817e-45)) >>> 0, buf, pos);\r\n else {\r\n var exponent = Math.floor(Math.log(val) / Math.LN2),\r\n mantissa = Math.round(val * Math.pow(2, -exponent) * 8388608) & 8388607;\r\n writeUint((sign << 31 | exponent + 127 << 23 | mantissa) >>> 0, buf, pos);\r\n }\r\n }\r\n\r\n exports.writeFloatLE = writeFloat_ieee754.bind(null, writeUintLE);\r\n exports.writeFloatBE = writeFloat_ieee754.bind(null, writeUintBE);\r\n\r\n function readFloat_ieee754(readUint, buf, pos) {\r\n var uint = readUint(buf, pos),\r\n sign = (uint >> 31) * 2 + 1,\r\n exponent = uint >>> 23 & 255,\r\n mantissa = uint & 8388607;\r\n return exponent === 255\r\n ? mantissa\r\n ? NaN\r\n : sign * Infinity\r\n : exponent === 0 // denormal\r\n ? sign * 1.401298464324817e-45 * mantissa\r\n : sign * Math.pow(2, exponent - 150) * (mantissa + 8388608);\r\n }\r\n\r\n exports.readFloatLE = readFloat_ieee754.bind(null, readUintLE);\r\n exports.readFloatBE = readFloat_ieee754.bind(null, readUintBE);\r\n\r\n })();\r\n\r\n // double: typed array\r\n if (typeof Float64Array !== \"undefined\") (function() {\r\n\r\n var f64 = new Float64Array([-0]),\r\n f8b = new Uint8Array(f64.buffer),\r\n le = f8b[7] === 128;\r\n\r\n function writeDouble_f64_cpy(val, buf, pos) {\r\n f64[0] = val;\r\n buf[pos ] = f8b[0];\r\n buf[pos + 1] = f8b[1];\r\n buf[pos + 2] = f8b[2];\r\n buf[pos + 3] = f8b[3];\r\n buf[pos + 4] = f8b[4];\r\n buf[pos + 5] = f8b[5];\r\n buf[pos + 6] = f8b[6];\r\n buf[pos + 7] = f8b[7];\r\n }\r\n\r\n function writeDouble_f64_rev(val, buf, pos) {\r\n f64[0] = val;\r\n buf[pos ] = f8b[7];\r\n buf[pos + 1] = f8b[6];\r\n buf[pos + 2] = f8b[5];\r\n buf[pos + 3] = f8b[4];\r\n buf[pos + 4] = f8b[3];\r\n buf[pos + 5] = f8b[2];\r\n buf[pos + 6] = f8b[1];\r\n buf[pos + 7] = f8b[0];\r\n }\r\n\r\n /* istanbul ignore next */\r\n exports.writeDoubleLE = le ? writeDouble_f64_cpy : writeDouble_f64_rev;\r\n /* istanbul ignore next */\r\n exports.writeDoubleBE = le ? writeDouble_f64_rev : writeDouble_f64_cpy;\r\n\r\n function readDouble_f64_cpy(buf, pos) {\r\n f8b[0] = buf[pos ];\r\n f8b[1] = buf[pos + 1];\r\n f8b[2] = buf[pos + 2];\r\n f8b[3] = buf[pos + 3];\r\n f8b[4] = buf[pos + 4];\r\n f8b[5] = buf[pos + 5];\r\n f8b[6] = buf[pos + 6];\r\n f8b[7] = buf[pos + 7];\r\n return f64[0];\r\n }\r\n\r\n function readDouble_f64_rev(buf, pos) {\r\n f8b[7] = buf[pos ];\r\n f8b[6] = buf[pos + 1];\r\n f8b[5] = buf[pos + 2];\r\n f8b[4] = buf[pos + 3];\r\n f8b[3] = buf[pos + 4];\r\n f8b[2] = buf[pos + 5];\r\n f8b[1] = buf[pos + 6];\r\n f8b[0] = buf[pos + 7];\r\n return f64[0];\r\n }\r\n\r\n /* istanbul ignore next */\r\n exports.readDoubleLE = le ? readDouble_f64_cpy : readDouble_f64_rev;\r\n /* istanbul ignore next */\r\n exports.readDoubleBE = le ? readDouble_f64_rev : readDouble_f64_cpy;\r\n\r\n // double: ieee754\r\n })(); else (function() {\r\n\r\n function writeDouble_ieee754(writeUint, off0, off1, val, buf, pos) {\r\n var sign = val < 0 ? 1 : 0;\r\n if (sign)\r\n val = -val;\r\n if (val === 0) {\r\n writeUint(0, buf, pos + off0);\r\n writeUint(1 / val > 0 ? /* positive */ 0 : /* negative 0 */ 2147483648, buf, pos + off1);\r\n } else if (isNaN(val)) {\r\n writeUint(0, buf, pos + off0);\r\n writeUint(2146959360, buf, pos + off1);\r\n } else if (val > 1.7976931348623157e+308) { // +-Infinity\r\n writeUint(0, buf, pos + off0);\r\n writeUint((sign << 31 | 2146435072) >>> 0, buf, pos + off1);\r\n } else {\r\n var mantissa;\r\n if (val < 2.2250738585072014e-308) { // denormal\r\n mantissa = val / 5e-324;\r\n writeUint(mantissa >>> 0, buf, pos + off0);\r\n writeUint((sign << 31 | mantissa / 4294967296) >>> 0, buf, pos + off1);\r\n } else {\r\n var exponent = Math.floor(Math.log(val) / Math.LN2);\r\n if (exponent === 1024)\r\n exponent = 1023;\r\n mantissa = val * Math.pow(2, -exponent);\r\n writeUint(mantissa * 4503599627370496 >>> 0, buf, pos + off0);\r\n writeUint((sign << 31 | exponent + 1023 << 20 | mantissa * 1048576 & 1048575) >>> 0, buf, pos + off1);\r\n }\r\n }\r\n }\r\n\r\n exports.writeDoubleLE = writeDouble_ieee754.bind(null, writeUintLE, 0, 4);\r\n exports.writeDoubleBE = writeDouble_ieee754.bind(null, writeUintBE, 4, 0);\r\n\r\n function readDouble_ieee754(readUint, off0, off1, buf, pos) {\r\n var lo = readUint(buf, pos + off0),\r\n hi = readUint(buf, pos + off1);\r\n var sign = (hi >> 31) * 2 + 1,\r\n exponent = hi >>> 20 & 2047,\r\n mantissa = 4294967296 * (hi & 1048575) + lo;\r\n return exponent === 2047\r\n ? mantissa\r\n ? NaN\r\n : sign * Infinity\r\n : exponent === 0 // denormal\r\n ? sign * 5e-324 * mantissa\r\n : sign * Math.pow(2, exponent - 1075) * (mantissa + 4503599627370496);\r\n }\r\n\r\n exports.readDoubleLE = readDouble_ieee754.bind(null, readUintLE, 0, 4);\r\n exports.readDoubleBE = readDouble_ieee754.bind(null, readUintBE, 4, 0);\r\n\r\n })();\r\n\r\n return exports;\r\n}\r\n\r\n// uint helpers\r\n\r\nfunction writeUintLE(val, buf, pos) {\r\n buf[pos ] = val & 255;\r\n buf[pos + 1] = val >>> 8 & 255;\r\n buf[pos + 2] = val >>> 16 & 255;\r\n buf[pos + 3] = val >>> 24;\r\n}\r\n\r\nfunction writeUintBE(val, buf, pos) {\r\n buf[pos ] = val >>> 24;\r\n buf[pos + 1] = val >>> 16 & 255;\r\n buf[pos + 2] = val >>> 8 & 255;\r\n buf[pos + 3] = val & 255;\r\n}\r\n\r\nfunction readUintLE(buf, pos) {\r\n return (buf[pos ]\r\n | buf[pos + 1] << 8\r\n | buf[pos + 2] << 16\r\n | buf[pos + 3] << 24) >>> 0;\r\n}\r\n\r\nfunction readUintBE(buf, pos) {\r\n return (buf[pos ] << 24\r\n | buf[pos + 1] << 16\r\n | buf[pos + 2] << 8\r\n | buf[pos + 3]) >>> 0;\r\n}\r\n","\"use strict\";\r\nmodule.exports = inquire;\r\n\r\n/**\r\n * Requires a module only if available.\r\n * @memberof util\r\n * @param {string} moduleName Module to require\r\n * @returns {?Object} Required module if available and not empty, otherwise `null`\r\n */\r\nfunction inquire(moduleName) {\r\n try {\r\n var mod = eval(\"quire\".replace(/^/,\"re\"))(moduleName); // eslint-disable-line no-eval\r\n if (mod && (mod.length || Object.keys(mod).length))\r\n return mod;\r\n } catch (e) {} // eslint-disable-line no-empty\r\n return null;\r\n}\r\n","\"use strict\";\r\n\r\n/**\r\n * A minimal path module to resolve Unix, Windows and URL paths alike.\r\n * @memberof util\r\n * @namespace\r\n */\r\nvar path = exports;\r\n\r\nvar isAbsolute =\r\n/**\r\n * Tests if the specified path is absolute.\r\n * @param {string} path Path to test\r\n * @returns {boolean} `true` if path is absolute\r\n */\r\npath.isAbsolute = function isAbsolute(path) {\r\n return /^(?:\\/|\\w+:)/.test(path);\r\n};\r\n\r\nvar normalize =\r\n/**\r\n * Normalizes the specified path.\r\n * @param {string} path Path to normalize\r\n * @returns {string} Normalized path\r\n */\r\npath.normalize = function normalize(path) {\r\n path = path.replace(/\\\\/g, \"/\")\r\n .replace(/\\/{2,}/g, \"/\");\r\n var parts = path.split(\"/\"),\r\n absolute = isAbsolute(path),\r\n prefix = \"\";\r\n if (absolute)\r\n prefix = parts.shift() + \"/\";\r\n for (var i = 0; i < parts.length;) {\r\n if (parts[i] === \"..\") {\r\n if (i > 0 && parts[i - 1] !== \"..\")\r\n parts.splice(--i, 2);\r\n else if (absolute)\r\n parts.splice(i, 1);\r\n else\r\n ++i;\r\n } else if (parts[i] === \".\")\r\n parts.splice(i, 1);\r\n else\r\n ++i;\r\n }\r\n return prefix + parts.join(\"/\");\r\n};\r\n\r\n/**\r\n * Resolves the specified include path against the specified origin path.\r\n * @param {string} originPath Path to the origin file\r\n * @param {string} includePath Include path relative to origin path\r\n * @param {boolean} [alreadyNormalized=false] `true` if both paths are already known to be normalized\r\n * @returns {string} Path to the include file\r\n */\r\npath.resolve = function resolve(originPath, includePath, alreadyNormalized) {\r\n if (!alreadyNormalized)\r\n includePath = normalize(includePath);\r\n if (isAbsolute(includePath))\r\n return includePath;\r\n if (!alreadyNormalized)\r\n originPath = normalize(originPath);\r\n return (originPath = originPath.replace(/(?:\\/|^)[^/]+$/, \"\")).length ? normalize(originPath + \"/\" + includePath) : includePath;\r\n};\r\n","\"use strict\";\r\nmodule.exports = pool;\r\n\r\n/**\r\n * An allocator as used by {@link util.pool}.\r\n * @typedef PoolAllocator\r\n * @type {function}\r\n * @param {number} size Buffer size\r\n * @returns {Uint8Array} Buffer\r\n */\r\n\r\n/**\r\n * A slicer as used by {@link util.pool}.\r\n * @typedef PoolSlicer\r\n * @type {function}\r\n * @param {number} start Start offset\r\n * @param {number} end End offset\r\n * @returns {Uint8Array} Buffer slice\r\n * @this {Uint8Array}\r\n */\r\n\r\n/**\r\n * A general purpose buffer pool.\r\n * @memberof util\r\n * @function\r\n * @param {PoolAllocator} alloc Allocator\r\n * @param {PoolSlicer} slice Slicer\r\n * @param {number} [size=8192] Slab size\r\n * @returns {PoolAllocator} Pooled allocator\r\n */\r\nfunction pool(alloc, slice, size) {\r\n var SIZE = size || 8192;\r\n var MAX = SIZE >>> 1;\r\n var slab = null;\r\n var offset = SIZE;\r\n return function pool_alloc(size) {\r\n if (size < 1 || size > MAX)\r\n return alloc(size);\r\n if (offset + size > SIZE) {\r\n slab = alloc(SIZE);\r\n offset = 0;\r\n }\r\n var buf = slice.call(slab, offset, offset += size);\r\n if (offset & 7) // align to 32 bit\r\n offset = (offset | 7) + 1;\r\n return buf;\r\n };\r\n}\r\n","\"use strict\";\r\n\r\n/**\r\n * A minimal UTF8 implementation for number arrays.\r\n * @memberof util\r\n * @namespace\r\n */\r\nvar utf8 = exports;\r\n\r\n/**\r\n * Calculates the UTF8 byte length of a string.\r\n * @param {string} string String\r\n * @returns {number} Byte length\r\n */\r\nutf8.length = function utf8_length(string) {\r\n var len = 0,\r\n c = 0;\r\n for (var i = 0; i < string.length; ++i) {\r\n c = string.charCodeAt(i);\r\n if (c < 128)\r\n len += 1;\r\n else if (c < 2048)\r\n len += 2;\r\n else if ((c & 0xFC00) === 0xD800 && (string.charCodeAt(i + 1) & 0xFC00) === 0xDC00) {\r\n ++i;\r\n len += 4;\r\n } else\r\n len += 3;\r\n }\r\n return len;\r\n};\r\n\r\n/**\r\n * Reads UTF8 bytes as a string.\r\n * @param {Uint8Array} buffer Source buffer\r\n * @param {number} start Source start\r\n * @param {number} end Source end\r\n * @returns {string} String read\r\n */\r\nutf8.read = function utf8_read(buffer, start, end) {\r\n var len = end - start;\r\n if (len < 1)\r\n return \"\";\r\n var parts = null,\r\n chunk = [],\r\n i = 0, // char offset\r\n t; // temporary\r\n while (start < end) {\r\n t = buffer[start++];\r\n if (t < 128)\r\n chunk[i++] = t;\r\n else if (t > 191 && t < 224)\r\n chunk[i++] = (t & 31) << 6 | buffer[start++] & 63;\r\n else if (t > 239 && t < 365) {\r\n t = ((t & 7) << 18 | (buffer[start++] & 63) << 12 | (buffer[start++] & 63) << 6 | buffer[start++] & 63) - 0x10000;\r\n chunk[i++] = 0xD800 + (t >> 10);\r\n chunk[i++] = 0xDC00 + (t & 1023);\r\n } else\r\n chunk[i++] = (t & 15) << 12 | (buffer[start++] & 63) << 6 | buffer[start++] & 63;\r\n if (i > 8191) {\r\n (parts || (parts = [])).push(String.fromCharCode.apply(String, chunk));\r\n i = 0;\r\n }\r\n }\r\n if (parts) {\r\n if (i)\r\n parts.push(String.fromCharCode.apply(String, chunk.slice(0, i)));\r\n return parts.join(\"\");\r\n }\r\n return String.fromCharCode.apply(String, chunk.slice(0, i));\r\n};\r\n\r\n/**\r\n * Writes a string as UTF8 bytes.\r\n * @param {string} string Source string\r\n * @param {Uint8Array} buffer Destination buffer\r\n * @param {number} offset Destination offset\r\n * @returns {number} Bytes written\r\n */\r\nutf8.write = function utf8_write(string, buffer, offset) {\r\n var start = offset,\r\n c1, // character 1\r\n c2; // character 2\r\n for (var i = 0; i < string.length; ++i) {\r\n c1 = string.charCodeAt(i);\r\n if (c1 < 128) {\r\n buffer[offset++] = c1;\r\n } else if (c1 < 2048) {\r\n buffer[offset++] = c1 >> 6 | 192;\r\n buffer[offset++] = c1 & 63 | 128;\r\n } else if ((c1 & 0xFC00) === 0xD800 && ((c2 = string.charCodeAt(i + 1)) & 0xFC00) === 0xDC00) {\r\n c1 = 0x10000 + ((c1 & 0x03FF) << 10) + (c2 & 0x03FF);\r\n ++i;\r\n buffer[offset++] = c1 >> 18 | 240;\r\n buffer[offset++] = c1 >> 12 & 63 | 128;\r\n buffer[offset++] = c1 >> 6 & 63 | 128;\r\n buffer[offset++] = c1 & 63 | 128;\r\n } else {\r\n buffer[offset++] = c1 >> 12 | 224;\r\n buffer[offset++] = c1 >> 6 & 63 | 128;\r\n buffer[offset++] = c1 & 63 | 128;\r\n }\r\n }\r\n return offset - start;\r\n};\r\n","module.exports = require('./lib/axios');","'use strict';\n\nvar utils = require('./../utils');\nvar settle = require('./../core/settle');\nvar cookies = require('./../helpers/cookies');\nvar buildURL = require('./../helpers/buildURL');\nvar buildFullPath = require('../core/buildFullPath');\nvar parseHeaders = require('./../helpers/parseHeaders');\nvar isURLSameOrigin = require('./../helpers/isURLSameOrigin');\nvar transitionalDefaults = require('../defaults/transitional');\nvar AxiosError = require('../core/AxiosError');\nvar CanceledError = require('../cancel/CanceledError');\nvar parseProtocol = require('../helpers/parseProtocol');\n\nmodule.exports = function xhrAdapter(config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n var requestData = config.data;\n var requestHeaders = config.headers;\n var responseType = config.responseType;\n var onCanceled;\n function done() {\n if (config.cancelToken) {\n config.cancelToken.unsubscribe(onCanceled);\n }\n\n if (config.signal) {\n config.signal.removeEventListener('abort', onCanceled);\n }\n }\n\n if (utils.isFormData(requestData) && utils.isStandardBrowserEnv()) {\n delete requestHeaders['Content-Type']; // Let the browser set it\n }\n\n var request = new XMLHttpRequest();\n\n // HTTP basic authentication\n if (config.auth) {\n var username = config.auth.username || '';\n var password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : '';\n requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);\n }\n\n var fullPath = buildFullPath(config.baseURL, config.url);\n\n request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n var responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n var response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config: config,\n request: request\n };\n\n settle(function _resolve(value) {\n resolve(value);\n done();\n }, function _reject(err) {\n reject(err);\n done();\n }, response);\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n var timeoutErrorMessage = config.timeout ? 'timeout of ' + config.timeout + 'ms exceeded' : 'timeout exceeded';\n var transitional = config.transitional || transitionalDefaults;\n if (config.timeoutErrorMessage) {\n timeoutErrorMessage = config.timeoutErrorMessage;\n }\n reject(new AxiosError(\n timeoutErrorMessage,\n transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,\n config,\n request));\n\n // Clean up request\n request = null;\n };\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if (utils.isStandardBrowserEnv()) {\n // Add xsrf header\n var xsrfValue = (config.withCredentials || isURLSameOrigin(fullPath)) && config.xsrfCookieName ?\n cookies.read(config.xsrfCookieName) :\n undefined;\n\n if (xsrfValue) {\n requestHeaders[config.xsrfHeaderName] = xsrfValue;\n }\n }\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders, function setRequestHeader(val, key) {\n if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {\n // Remove Content-Type if data is undefined\n delete requestHeaders[key];\n } else {\n // Otherwise add header to the request\n request.setRequestHeader(key, val);\n }\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(config.withCredentials)) {\n request.withCredentials = !!config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = config.responseType;\n }\n\n // Handle progress if needed\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', config.onDownloadProgress);\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', config.onUploadProgress);\n }\n\n if (config.cancelToken || config.signal) {\n // Handle cancellation\n // eslint-disable-next-line func-names\n onCanceled = function(cancel) {\n if (!request) {\n return;\n }\n reject(!cancel || (cancel && cancel.type) ? new CanceledError() : cancel);\n request.abort();\n request = null;\n };\n\n config.cancelToken && config.cancelToken.subscribe(onCanceled);\n if (config.signal) {\n config.signal.aborted ? onCanceled() : config.signal.addEventListener('abort', onCanceled);\n }\n }\n\n if (!requestData) {\n requestData = null;\n }\n\n var protocol = parseProtocol(fullPath);\n\n if (protocol && [ 'http', 'https', 'file' ].indexOf(protocol) === -1) {\n reject(new AxiosError('Unsupported protocol ' + protocol + ':', AxiosError.ERR_BAD_REQUEST, config));\n return;\n }\n\n\n // Send the request\n request.send(requestData);\n });\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar bind = require('./helpers/bind');\nvar Axios = require('./core/Axios');\nvar mergeConfig = require('./core/mergeConfig');\nvar defaults = require('./defaults');\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n * @return {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n var context = new Axios(defaultConfig);\n var instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context);\n\n // Copy context to instance\n utils.extend(instance, context);\n\n // Factory for creating new instances\n instance.create = function create(instanceConfig) {\n return createInstance(mergeConfig(defaultConfig, instanceConfig));\n };\n\n return instance;\n}\n\n// Create the default instance to be exported\nvar axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Expose Cancel & CancelToken\naxios.CanceledError = require('./cancel/CanceledError');\naxios.CancelToken = require('./cancel/CancelToken');\naxios.isCancel = require('./cancel/isCancel');\naxios.VERSION = require('./env/data').version;\naxios.toFormData = require('./helpers/toFormData');\n\n// Expose AxiosError class\naxios.AxiosError = require('../lib/core/AxiosError');\n\n// alias for CanceledError for backward compatibility\naxios.Cancel = axios.CanceledError;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\naxios.spread = require('./helpers/spread');\n\n// Expose isAxiosError\naxios.isAxiosError = require('./helpers/isAxiosError');\n\nmodule.exports = axios;\n\n// Allow use of default import syntax in TypeScript\nmodule.exports.default = axios;\n","'use strict';\n\nvar CanceledError = require('./CanceledError');\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @class\n * @param {Function} executor The executor function.\n */\nfunction CancelToken(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n var resolvePromise;\n\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n var token = this;\n\n // eslint-disable-next-line func-names\n this.promise.then(function(cancel) {\n if (!token._listeners) return;\n\n var i;\n var l = token._listeners.length;\n\n for (i = 0; i < l; i++) {\n token._listeners[i](cancel);\n }\n token._listeners = null;\n });\n\n // eslint-disable-next-line func-names\n this.promise.then = function(onfulfilled) {\n var _resolve;\n // eslint-disable-next-line func-names\n var promise = new Promise(function(resolve) {\n token.subscribe(resolve);\n _resolve = resolve;\n }).then(onfulfilled);\n\n promise.cancel = function reject() {\n token.unsubscribe(_resolve);\n };\n\n return promise;\n };\n\n executor(function cancel(message) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new CanceledError(message);\n resolvePromise(token.reason);\n });\n}\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n */\nCancelToken.prototype.throwIfRequested = function throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n};\n\n/**\n * Subscribe to the cancel signal\n */\n\nCancelToken.prototype.subscribe = function subscribe(listener) {\n if (this.reason) {\n listener(this.reason);\n return;\n }\n\n if (this._listeners) {\n this._listeners.push(listener);\n } else {\n this._listeners = [listener];\n }\n};\n\n/**\n * Unsubscribe from the cancel signal\n */\n\nCancelToken.prototype.unsubscribe = function unsubscribe(listener) {\n if (!this._listeners) {\n return;\n }\n var index = this._listeners.indexOf(listener);\n if (index !== -1) {\n this._listeners.splice(index, 1);\n }\n};\n\n/**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\nCancelToken.source = function source() {\n var cancel;\n var token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token: token,\n cancel: cancel\n };\n};\n\nmodule.exports = CancelToken;\n","'use strict';\n\nvar AxiosError = require('../core/AxiosError');\nvar utils = require('../utils');\n\n/**\n * A `CanceledError` is an object that is thrown when an operation is canceled.\n *\n * @class\n * @param {string=} message The message.\n */\nfunction CanceledError(message) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n AxiosError.call(this, message == null ? 'canceled' : message, AxiosError.ERR_CANCELED);\n this.name = 'CanceledError';\n}\n\nutils.inherits(CanceledError, AxiosError, {\n __CANCEL__: true\n});\n\nmodule.exports = CanceledError;\n","'use strict';\n\nmodule.exports = function isCancel(value) {\n return !!(value && value.__CANCEL__);\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar buildURL = require('../helpers/buildURL');\nvar InterceptorManager = require('./InterceptorManager');\nvar dispatchRequest = require('./dispatchRequest');\nvar mergeConfig = require('./mergeConfig');\nvar buildFullPath = require('./buildFullPath');\nvar validator = require('../helpers/validator');\n\nvar validators = validator.validators;\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n */\nfunction Axios(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n}\n\n/**\n * Dispatch a request\n *\n * @param {Object} config The config specific for this request (merged with this.defaults)\n */\nAxios.prototype.request = function request(configOrUrl, config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof configOrUrl === 'string') {\n config = config || {};\n config.url = configOrUrl;\n } else {\n config = configOrUrl || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n // Set config.method\n if (config.method) {\n config.method = config.method.toLowerCase();\n } else if (this.defaults.method) {\n config.method = this.defaults.method.toLowerCase();\n } else {\n config.method = 'get';\n }\n\n var transitional = config.transitional;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean),\n forcedJSONParsing: validators.transitional(validators.boolean),\n clarifyTimeoutError: validators.transitional(validators.boolean)\n }, false);\n }\n\n // filter out skipped interceptors\n var requestInterceptorChain = [];\n var synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n var responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n var promise;\n\n if (!synchronousRequestInterceptors) {\n var chain = [dispatchRequest, undefined];\n\n Array.prototype.unshift.apply(chain, requestInterceptorChain);\n chain = chain.concat(responseInterceptorChain);\n\n promise = Promise.resolve(config);\n while (chain.length) {\n promise = promise.then(chain.shift(), chain.shift());\n }\n\n return promise;\n }\n\n\n var newConfig = config;\n while (requestInterceptorChain.length) {\n var onFulfilled = requestInterceptorChain.shift();\n var onRejected = requestInterceptorChain.shift();\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected(error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest(newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n while (responseInterceptorChain.length) {\n promise = promise.then(responseInterceptorChain.shift(), responseInterceptorChain.shift());\n }\n\n return promise;\n};\n\nAxios.prototype.getUri = function getUri(config) {\n config = mergeConfig(this.defaults, config);\n var fullPath = buildFullPath(config.baseURL, config.url);\n return buildURL(fullPath, config.params, config.paramsSerializer);\n};\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n\n function generateHTTPMethod(isForm) {\n return function httpMethod(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n headers: isForm ? {\n 'Content-Type': 'multipart/form-data'\n } : {},\n url: url,\n data: data\n }));\n };\n }\n\n Axios.prototype[method] = generateHTTPMethod();\n\n Axios.prototype[method + 'Form'] = generateHTTPMethod(true);\n});\n\nmodule.exports = Axios;\n","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [config] The config.\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The created error.\n */\nfunction AxiosError(message, code, config, request, response) {\n Error.call(this);\n this.message = message;\n this.name = 'AxiosError';\n code && (this.code = code);\n config && (this.config = config);\n request && (this.request = request);\n response && (this.response = response);\n}\n\nutils.inherits(AxiosError, Error, {\n toJSON: function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: this.config,\n code: this.code,\n status: this.response && this.response.status ? this.response.status : null\n };\n }\n});\n\nvar prototype = AxiosError.prototype;\nvar descriptors = {};\n\n[\n 'ERR_BAD_OPTION_VALUE',\n 'ERR_BAD_OPTION',\n 'ECONNABORTED',\n 'ETIMEDOUT',\n 'ERR_NETWORK',\n 'ERR_FR_TOO_MANY_REDIRECTS',\n 'ERR_DEPRECATED',\n 'ERR_BAD_RESPONSE',\n 'ERR_BAD_REQUEST',\n 'ERR_CANCELED'\n// eslint-disable-next-line func-names\n].forEach(function(code) {\n descriptors[code] = {value: code};\n});\n\nObject.defineProperties(AxiosError, descriptors);\nObject.defineProperty(prototype, 'isAxiosError', {value: true});\n\n// eslint-disable-next-line func-names\nAxiosError.from = function(error, code, config, request, response, customProps) {\n var axiosError = Object.create(prototype);\n\n utils.toFlatObject(error, axiosError, function filter(obj) {\n return obj !== Error.prototype;\n });\n\n AxiosError.call(axiosError, error.message, code, config, request, response);\n\n axiosError.name = error.name;\n\n customProps && Object.assign(axiosError, customProps);\n\n return axiosError;\n};\n\nmodule.exports = AxiosError;\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction InterceptorManager() {\n this.handlers = [];\n}\n\n/**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\nInterceptorManager.prototype.use = function use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled: fulfilled,\n rejected: rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n};\n\n/**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n */\nInterceptorManager.prototype.eject = function eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n};\n\n/**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n */\nInterceptorManager.prototype.forEach = function forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n};\n\nmodule.exports = InterceptorManager;\n","'use strict';\n\nvar isAbsoluteURL = require('../helpers/isAbsoluteURL');\nvar combineURLs = require('../helpers/combineURLs');\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n * @returns {string} The combined full path\n */\nmodule.exports = function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar transformData = require('./transformData');\nvar isCancel = require('../cancel/isCancel');\nvar defaults = require('../defaults');\nvar CanceledError = require('../cancel/CanceledError');\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n\n if (config.signal && config.signal.aborted) {\n throw new CanceledError();\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n * @returns {Promise} The Promise to be fulfilled\n */\nmodule.exports = function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n // Ensure headers exist\n config.headers = config.headers || {};\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.data,\n config.headers,\n config.transformRequest\n );\n\n // Flatten headers\n config.headers = utils.merge(\n config.headers.common || {},\n config.headers[config.method] || {},\n config.headers\n );\n\n utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n function cleanHeaderConfig(method) {\n delete config.headers[method];\n }\n );\n\n var adapter = config.adapter || defaults.adapter;\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(\n config,\n response.data,\n response.headers,\n config.transformResponse\n );\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n reason.response.data,\n reason.response.headers,\n config.transformResponse\n );\n }\n }\n\n return Promise.reject(reason);\n });\n};\n","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n * @returns {Object} New object resulting from merging config2 to config1\n */\nmodule.exports = function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n var config = {};\n\n function getMergedValue(target, source) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge(target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDeepProperties(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(config1[prop], config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function valueFromConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(undefined, config2[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function defaultToConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(undefined, config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDirectKeys(prop) {\n if (prop in config2) {\n return getMergedValue(config1[prop], config2[prop]);\n } else if (prop in config1) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n var mergeMap = {\n 'url': valueFromConfig2,\n 'method': valueFromConfig2,\n 'data': valueFromConfig2,\n 'baseURL': defaultToConfig2,\n 'transformRequest': defaultToConfig2,\n 'transformResponse': defaultToConfig2,\n 'paramsSerializer': defaultToConfig2,\n 'timeout': defaultToConfig2,\n 'timeoutMessage': defaultToConfig2,\n 'withCredentials': defaultToConfig2,\n 'adapter': defaultToConfig2,\n 'responseType': defaultToConfig2,\n 'xsrfCookieName': defaultToConfig2,\n 'xsrfHeaderName': defaultToConfig2,\n 'onUploadProgress': defaultToConfig2,\n 'onDownloadProgress': defaultToConfig2,\n 'decompress': defaultToConfig2,\n 'maxContentLength': defaultToConfig2,\n 'maxBodyLength': defaultToConfig2,\n 'beforeRedirect': defaultToConfig2,\n 'transport': defaultToConfig2,\n 'httpAgent': defaultToConfig2,\n 'httpsAgent': defaultToConfig2,\n 'cancelToken': defaultToConfig2,\n 'socketPath': defaultToConfig2,\n 'responseEncoding': defaultToConfig2,\n 'validateStatus': mergeDirectKeys\n };\n\n utils.forEach(Object.keys(config1).concat(Object.keys(config2)), function computeConfigValue(prop) {\n var merge = mergeMap[prop] || mergeDeepProperties;\n var configValue = merge(prop);\n (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n });\n\n return config;\n};\n","'use strict';\n\nvar AxiosError = require('./AxiosError');\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n */\nmodule.exports = function settle(resolve, reject, response) {\n var validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(new AxiosError(\n 'Request failed with status code ' + response.status,\n [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4],\n response.config,\n response.request,\n response\n ));\n }\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar defaults = require('../defaults');\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Object|String} data The data to be transformed\n * @param {Array} headers The headers for the request or response\n * @param {Array|Function} fns A single function or Array of functions\n * @returns {*} The resulting transformed data\n */\nmodule.exports = function transformData(data, headers, fns) {\n var context = this || defaults;\n /*eslint no-param-reassign:0*/\n utils.forEach(fns, function transform(fn) {\n data = fn.call(context, data, headers);\n });\n\n return data;\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar normalizeHeaderName = require('../helpers/normalizeHeaderName');\nvar AxiosError = require('../core/AxiosError');\nvar transitionalDefaults = require('./transitional');\nvar toFormData = require('../helpers/toFormData');\n\nvar DEFAULT_CONTENT_TYPE = {\n 'Content-Type': 'application/x-www-form-urlencoded'\n};\n\nfunction setContentTypeIfUnset(headers, value) {\n if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {\n headers['Content-Type'] = value;\n }\n}\n\nfunction getDefaultAdapter() {\n var adapter;\n if (typeof XMLHttpRequest !== 'undefined') {\n // For browsers use XHR adapter\n adapter = require('../adapters/xhr');\n } else if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {\n // For node use HTTP adapter\n adapter = require('../adapters/http');\n }\n return adapter;\n}\n\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nvar defaults = {\n\n transitional: transitionalDefaults,\n\n adapter: getDefaultAdapter(),\n\n transformRequest: [function transformRequest(data, headers) {\n normalizeHeaderName(headers, 'Accept');\n normalizeHeaderName(headers, 'Content-Type');\n\n if (utils.isFormData(data) ||\n utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');\n return data.toString();\n }\n\n var isObjectPayload = utils.isObject(data);\n var contentType = headers && headers['Content-Type'];\n\n var isFileList;\n\n if ((isFileList = utils.isFileList(data)) || (isObjectPayload && contentType === 'multipart/form-data')) {\n var _FormData = this.env && this.env.FormData;\n return toFormData(isFileList ? {'files[]': data} : data, _FormData && new _FormData());\n } else if (isObjectPayload || contentType === 'application/json') {\n setContentTypeIfUnset(headers, 'application/json');\n return stringifySafely(data);\n }\n\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n var transitional = this.transitional || defaults.transitional;\n var silentJSONParsing = transitional && transitional.silentJSONParsing;\n var forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n var strictJSONParsing = !silentJSONParsing && this.responseType === 'json';\n\n if (strictJSONParsing || (forcedJSONParsing && utils.isString(data) && data.length)) {\n try {\n return JSON.parse(data);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response);\n }\n throw e;\n }\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n env: {\n FormData: require('./env/FormData')\n },\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n },\n\n headers: {\n common: {\n 'Accept': 'application/json, text/plain, */*'\n }\n }\n};\n\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n defaults.headers[method] = {};\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);\n});\n\nmodule.exports = defaults;\n","'use strict';\n\nmodule.exports = {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n};\n","module.exports = {\n \"version\": \"0.27.2\"\n};","'use strict';\n\nmodule.exports = function bind(fn, thisArg) {\n return function wrap() {\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n return fn.apply(thisArg, args);\n };\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @returns {string} The formatted url\n */\nmodule.exports = function buildURL(url, params, paramsSerializer) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n\n var serializedParams;\n if (paramsSerializer) {\n serializedParams = paramsSerializer(params);\n } else if (utils.isURLSearchParams(params)) {\n serializedParams = params.toString();\n } else {\n var parts = [];\n\n utils.forEach(params, function serialize(val, key) {\n if (val === null || typeof val === 'undefined') {\n return;\n }\n\n if (utils.isArray(val)) {\n key = key + '[]';\n } else {\n val = [val];\n }\n\n utils.forEach(val, function parseValue(v) {\n if (utils.isDate(v)) {\n v = v.toISOString();\n } else if (utils.isObject(v)) {\n v = JSON.stringify(v);\n }\n parts.push(encode(key) + '=' + encode(v));\n });\n });\n\n serializedParams = parts.join('&');\n }\n\n if (serializedParams) {\n var hashmarkIndex = url.indexOf('#');\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n};\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n * @returns {string} The combined URL\n */\nmodule.exports = function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs support document.cookie\n (function standardBrowserEnv() {\n return {\n write: function write(name, value, expires, path, domain, secure) {\n var cookie = [];\n cookie.push(name + '=' + encodeURIComponent(value));\n\n if (utils.isNumber(expires)) {\n cookie.push('expires=' + new Date(expires).toGMTString());\n }\n\n if (utils.isString(path)) {\n cookie.push('path=' + path);\n }\n\n if (utils.isString(domain)) {\n cookie.push('domain=' + domain);\n }\n\n if (secure === true) {\n cookie.push('secure');\n }\n\n document.cookie = cookie.join('; ');\n },\n\n read: function read(name) {\n var match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove: function remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n };\n })() :\n\n // Non standard browser env (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return {\n write: function write() {},\n read: function read() { return null; },\n remove: function remove() {}\n };\n })()\n);\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nmodule.exports = function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"<scheme>://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nmodule.exports = function isAxiosError(payload) {\n return utils.isObject(payload) && (payload.isAxiosError === true);\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs have full support of the APIs needed to test\n // whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n var msie = /(msie|trident)/i.test(navigator.userAgent);\n var urlParsingNode = document.createElement('a');\n var originURL;\n\n /**\n * Parse a URL to discover it's components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n var href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })()\n);\n","'use strict';\n\nvar utils = require('../utils');\n\nmodule.exports = function normalizeHeaderName(headers, normalizedName) {\n utils.forEach(headers, function processHeader(value, name) {\n if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {\n headers[normalizedName] = value;\n delete headers[name];\n }\n });\n};\n","// eslint-disable-next-line strict\nmodule.exports = null;\n","'use strict';\n\nvar utils = require('./../utils');\n\n// Headers whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nvar ignoreDuplicateOf = [\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n];\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} headers Headers needing to be parsed\n * @returns {Object} Headers parsed into an object\n */\nmodule.exports = function parseHeaders(headers) {\n var parsed = {};\n var key;\n var val;\n var i;\n\n if (!headers) { return parsed; }\n\n utils.forEach(headers.split('\\n'), function parser(line) {\n i = line.indexOf(':');\n key = utils.trim(line.substr(0, i)).toLowerCase();\n val = utils.trim(line.substr(i + 1));\n\n if (key) {\n if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {\n return;\n }\n if (key === 'set-cookie') {\n parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n }\n });\n\n return parsed;\n};\n","'use strict';\n\nmodule.exports = function parseProtocol(url) {\n var match = /^([-+\\w]{1,25})(:?\\/\\/|:)/.exec(url);\n return match && match[1] || '';\n};\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n * @returns {Function}\n */\nmodule.exports = function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n};\n","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Convert a data object to FormData\n * @param {Object} obj\n * @param {?Object} [formData]\n * @returns {Object}\n **/\n\nfunction toFormData(obj, formData) {\n // eslint-disable-next-line no-param-reassign\n formData = formData || new FormData();\n\n var stack = [];\n\n function convertValue(value) {\n if (value === null) return '';\n\n if (utils.isDate(value)) {\n return value.toISOString();\n }\n\n if (utils.isArrayBuffer(value) || utils.isTypedArray(value)) {\n return typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value);\n }\n\n return value;\n }\n\n function build(data, parentKey) {\n if (utils.isPlainObject(data) || utils.isArray(data)) {\n if (stack.indexOf(data) !== -1) {\n throw Error('Circular reference detected in ' + parentKey);\n }\n\n stack.push(data);\n\n utils.forEach(data, function each(value, key) {\n if (utils.isUndefined(value)) return;\n var fullKey = parentKey ? parentKey + '.' + key : key;\n var arr;\n\n if (value && !parentKey && typeof value === 'object') {\n if (utils.endsWith(key, '{}')) {\n // eslint-disable-next-line no-param-reassign\n value = JSON.stringify(value);\n } else if (utils.endsWith(key, '[]') && (arr = utils.toArray(value))) {\n // eslint-disable-next-line func-names\n arr.forEach(function(el) {\n !utils.isUndefined(el) && formData.append(fullKey, convertValue(el));\n });\n return;\n }\n }\n\n build(value, fullKey);\n });\n\n stack.pop();\n } else {\n formData.append(parentKey, convertValue(data));\n }\n }\n\n build(obj);\n\n return formData;\n}\n\nmodule.exports = toFormData;\n","'use strict';\n\nvar VERSION = require('../env/data').version;\nvar AxiosError = require('../core/AxiosError');\n\nvar validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach(function(type, i) {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nvar deprecatedWarnings = {};\n\n/**\n * Transitional option validator\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n function formatMessage(opt, desc) {\n return '[Axios v' + VERSION + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return function(value, opt, opts) {\n if (validator === false) {\n throw new AxiosError(\n formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')),\n AxiosError.ERR_DEPRECATED\n );\n }\n\n if (version && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\n/**\n * Assert object's properties type\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE);\n }\n var keys = Object.keys(options);\n var i = keys.length;\n while (i-- > 0) {\n var opt = keys[i];\n var validator = schema[opt];\n if (validator) {\n var value = options[opt];\n var result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new AxiosError('option ' + opt + ' must be ' + result, AxiosError.ERR_BAD_OPTION_VALUE);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION);\n }\n }\n}\n\nmodule.exports = {\n assertOptions: assertOptions,\n validators: validators\n};\n","'use strict';\n\nvar bind = require('./helpers/bind');\n\n// utils is a library of generic helper functions non-specific to axios\n\nvar toString = Object.prototype.toString;\n\n// eslint-disable-next-line func-names\nvar kindOf = (function(cache) {\n // eslint-disable-next-line func-names\n return function(thing) {\n var str = toString.call(thing);\n return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());\n };\n})(Object.create(null));\n\nfunction kindOfTest(type) {\n type = type.toLowerCase();\n return function isKindOf(thing) {\n return kindOf(thing) === type;\n };\n}\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Array, otherwise false\n */\nfunction isArray(val) {\n return Array.isArray(val);\n}\n\n/**\n * Determine if a value is undefined\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nfunction isUndefined(val) {\n return typeof val === 'undefined';\n}\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && typeof val.constructor.isBuffer === 'function' && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nvar isArrayBuffer = kindOfTest('ArrayBuffer');\n\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n var result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (isArrayBuffer(val.buffer));\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a String, otherwise false\n */\nfunction isString(val) {\n return typeof val === 'string';\n}\n\n/**\n * Determine if a value is a Number\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Number, otherwise false\n */\nfunction isNumber(val) {\n return typeof val === 'number';\n}\n\n/**\n * Determine if a value is an Object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Object, otherwise false\n */\nfunction isObject(val) {\n return val !== null && typeof val === 'object';\n}\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {Object} val The value to test\n * @return {boolean} True if value is a plain Object, otherwise false\n */\nfunction isPlainObject(val) {\n if (kindOf(val) !== 'object') {\n return false;\n }\n\n var prototype = Object.getPrototypeOf(val);\n return prototype === null || prototype === Object.prototype;\n}\n\n/**\n * Determine if a value is a Date\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\nvar isDate = kindOfTest('Date');\n\n/**\n * Determine if a value is a File\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nvar isFile = kindOfTest('File');\n\n/**\n * Determine if a value is a Blob\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nvar isBlob = kindOfTest('Blob');\n\n/**\n * Determine if a value is a FileList\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nvar isFileList = kindOfTest('FileList');\n\n/**\n * Determine if a value is a Function\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nfunction isFunction(val) {\n return toString.call(val) === '[object Function]';\n}\n\n/**\n * Determine if a value is a Stream\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nfunction isStream(val) {\n return isObject(val) && isFunction(val.pipe);\n}\n\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} thing The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction isFormData(thing) {\n var pattern = '[object FormData]';\n return thing && (\n (typeof FormData === 'function' && thing instanceof FormData) ||\n toString.call(thing) === pattern ||\n (isFunction(thing.toString) && thing.toString() === pattern)\n );\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nvar isURLSearchParams = kindOfTest('URLSearchParams');\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n * @returns {String} The String freed of excess whitespace\n */\nfunction trim(str) {\n return str.trim ? str.trim() : str.replace(/^\\s+|\\s+$/g, '');\n}\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n */\nfunction isStandardBrowserEnv() {\n if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' ||\n navigator.product === 'NativeScript' ||\n navigator.product === 'NS')) {\n return false;\n }\n return (\n typeof window !== 'undefined' &&\n typeof document !== 'undefined'\n );\n}\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n */\nfunction forEach(obj, fn) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (var i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n fn.call(null, obj[key], key, obj);\n }\n }\n }\n}\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n var result = {};\n function assignValue(val, key) {\n if (isPlainObject(result[key]) && isPlainObject(val)) {\n result[key] = merge(result[key], val);\n } else if (isPlainObject(val)) {\n result[key] = merge({}, val);\n } else if (isArray(val)) {\n result[key] = val.slice();\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n * @return {Object} The resulting value of object a\n */\nfunction extend(a, b, thisArg) {\n forEach(b, function assignValue(val, key) {\n if (thisArg && typeof val === 'function') {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n });\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n * @return {string} content value without BOM\n */\nfunction stripBOM(content) {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\n/**\n * Inherit the prototype methods from one constructor into another\n * @param {function} constructor\n * @param {function} superConstructor\n * @param {object} [props]\n * @param {object} [descriptors]\n */\n\nfunction inherits(constructor, superConstructor, props, descriptors) {\n constructor.prototype = Object.create(superConstructor.prototype, descriptors);\n constructor.prototype.constructor = constructor;\n props && Object.assign(constructor.prototype, props);\n}\n\n/**\n * Resolve object with deep prototype chain to a flat object\n * @param {Object} sourceObj source object\n * @param {Object} [destObj]\n * @param {Function} [filter]\n * @returns {Object}\n */\n\nfunction toFlatObject(sourceObj, destObj, filter) {\n var props;\n var i;\n var prop;\n var merged = {};\n\n destObj = destObj || {};\n\n do {\n props = Object.getOwnPropertyNames(sourceObj);\n i = props.length;\n while (i-- > 0) {\n prop = props[i];\n if (!merged[prop]) {\n destObj[prop] = sourceObj[prop];\n merged[prop] = true;\n }\n }\n sourceObj = Object.getPrototypeOf(sourceObj);\n } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype);\n\n return destObj;\n}\n\n/*\n * determines whether a string ends with the characters of a specified string\n * @param {String} str\n * @param {String} searchString\n * @param {Number} [position= 0]\n * @returns {boolean}\n */\nfunction endsWith(str, searchString, position) {\n str = String(str);\n if (position === undefined || position > str.length) {\n position = str.length;\n }\n position -= searchString.length;\n var lastIndex = str.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n}\n\n\n/**\n * Returns new array from array like object\n * @param {*} [thing]\n * @returns {Array}\n */\nfunction toArray(thing) {\n if (!thing) return null;\n var i = thing.length;\n if (isUndefined(i)) return null;\n var arr = new Array(i);\n while (i-- > 0) {\n arr[i] = thing[i];\n }\n return arr;\n}\n\n// eslint-disable-next-line func-names\nvar isTypedArray = (function(TypedArray) {\n // eslint-disable-next-line func-names\n return function(thing) {\n return TypedArray && thing instanceof TypedArray;\n };\n})(typeof Uint8Array !== 'undefined' && Object.getPrototypeOf(Uint8Array));\n\nmodule.exports = {\n isArray: isArray,\n isArrayBuffer: isArrayBuffer,\n isBuffer: isBuffer,\n isFormData: isFormData,\n isArrayBufferView: isArrayBufferView,\n isString: isString,\n isNumber: isNumber,\n isObject: isObject,\n isPlainObject: isPlainObject,\n isUndefined: isUndefined,\n isDate: isDate,\n isFile: isFile,\n isBlob: isBlob,\n isFunction: isFunction,\n isStream: isStream,\n isURLSearchParams: isURLSearchParams,\n isStandardBrowserEnv: isStandardBrowserEnv,\n forEach: forEach,\n merge: merge,\n extend: extend,\n trim: trim,\n stripBOM: stripBOM,\n inherits: inherits,\n toFlatObject: toFlatObject,\n kindOf: kindOf,\n kindOfTest: kindOfTest,\n endsWith: endsWith,\n toArray: toArray,\n isTypedArray: isTypedArray,\n isFileList: isFileList\n};\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nvar hdTransport = require('@onekeyfe/hd-transport');\nvar axios = require('axios');\nvar semver = require('semver');\nvar BigNumber = require('bignumber.js');\n\nfunction _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }\n\nvar axios__default = /*#__PURE__*/_interopDefaultLegacy(axios);\nvar semver__default = /*#__PURE__*/_interopDefaultLegacy(semver);\nvar BigNumber__default = /*#__PURE__*/_interopDefaultLegacy(BigNumber);\n\nconst inject = ({ call, cancel, dispose, eventEmitter, init, uiResponse, }) => {\n const api = {\n on: (type, fn) => {\n eventEmitter.on(type, fn);\n },\n off: (type, fn) => {\n eventEmitter.removeListener(type, fn);\n },\n removeAllListeners: type => {\n eventEmitter.removeAllListeners(type);\n },\n init,\n call,\n dispose,\n uiResponse,\n cancel,\n searchDevices: () => call({ method: 'searchDevices' }),\n getFeatures: connectId => call({ connectId, method: 'getFeatures' }),\n checkFirmwareRelease: connectId => call({ connectId, method: 'checkFirmwareRelease' }),\n checkBLEFirmwareRelease: connectId => call({ connectId, method: 'checkBLEFirmwareRelease' }),\n checkTransportRelease: () => call({ method: 'checkTransportRelease' }),\n deviceBackup: connectId => call({ connectId, method: 'deviceBackup' }),\n deviceChangePin: (connectId, params) => call(Object.assign(Object.assign({}, params), { connectId, method: 'deviceChangePin' })),\n deviceFlags: (connectId, params) => call(Object.assign(Object.assign({}, params), { connectId, method: 'deviceFlags' })),\n deviceRebootToBootloader: connectId => call({ connectId, method: 'deviceRebootToBootloader' }),\n deviceRecovery: (connectId, params) => call(Object.assign(Object.assign({}, params), { connectId, method: 'deviceRecovery' })),\n deviceReset: (connectId, params) => call(Object.assign(Object.assign({}, params), { connectId, method: 'deviceReset' })),\n deviceSettings: (connectId, params) => call(Object.assign(Object.assign({}, params), { connectId, method: 'deviceSettings' })),\n deviceUpdateReboot: connectId => call({ connectId, method: 'deviceUpdateReboot' }),\n deviceWipe: connectId => call({ connectId, method: 'deviceWipe' }),\n evmGetAddress: (connectId, params) => call(Object.assign(Object.assign({}, params), { connectId, method: 'evmGetAddress' })),\n evmGetPublicKey: (connectId, params) => call(Object.assign(Object.assign({}, params), { connectId, method: 'evmGetPublicKey' })),\n evmSignMessage: (connectId, params) => call(Object.assign(Object.assign({}, params), { connectId, method: 'evmSignMessage' })),\n evmSignMessageEIP712: (connectId, params) => call(Object.assign(Object.assign({}, params), { connectId, method: 'evmSignMessageEIP712' })),\n evmSignTransaction: (connectId, params) => call(Object.assign(Object.assign({}, params), { connectId, method: 'evmSignTransaction' })),\n evmSignTypedData: (connectId, params) => call(Object.assign(Object.assign({}, params), { connectId, method: 'evmSignTypedData' })),\n evmVerifyMessage: (connectId, params) => call(Object.assign(Object.assign({}, params), { connectId, method: 'evmVerifyMessage' })),\n btcGetAddress: (connectId, params) => call(Object.assign(Object.assign({}, params), { connectId, method: 'btcGetAddress' })),\n btcGetPublicKey: (connectId, params) => call(Object.assign(Object.assign({}, params), { connectId, method: 'btcGetPublicKey' })),\n btcSignMessage: (connectId, params) => call(Object.assign(Object.assign({}, params), { connectId, method: 'btcSignMessage' })),\n btcSignTransaction: (connectId, params) => call(Object.assign(Object.assign({}, params), { connectId, method: 'btcSignTransaction' })),\n btcVerifyMessage: (connectId, params) => call(Object.assign(Object.assign({}, params), { connectId, method: 'btcVerifyMessage' })),\n starcoinGetAddress: (connectId, params) => call(Object.assign(Object.assign({}, params), { connectId, method: 'starcoinGetAddress' })),\n starcoinGetPublicKey: (connectId, params) => call(Object.assign(Object.assign({}, params), { connectId, method: 'starcoinGetPublicKey' })),\n starcoinSignMessage: (connectId, params) => call(Object.assign(Object.assign({}, params), { connectId, method: 'starcoinSignMessage' })),\n starcoinSignTransaction: (connectId, params) => call(Object.assign(Object.assign({}, params), { connectId, method: 'starcoinSignTransaction' })),\n starcoinVerifyMessage: (connectId, params) => call(Object.assign(Object.assign({}, params), { connectId, method: 'starcoinVerifyMessage' })),\n };\n return api;\n};\n\n/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n\r\nfunction __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nfunction __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nfunction __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\n\nvar events = {exports: {}};\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}\nevents.exports = EventEmitter;\nevents.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 errorListener(err) {\n emitter.removeListener(name, resolver);\n reject(err);\n }\n\n function resolver() {\n if (typeof emitter.removeListener === 'function') {\n emitter.removeListener('error', errorListener);\n }\n resolve([].slice.call(arguments));\n }\n eventTargetAgnosticAddListener(emitter, name, resolver, { once: true });\n if (name !== 'error') {\n addErrorHandlerIfEventEmitter(emitter, errorListener, { once: true });\n }\n });\n}\n\nfunction addErrorHandlerIfEventEmitter(emitter, handler, flags) {\n if (typeof emitter.on === 'function') {\n eventTargetAgnosticAddListener(emitter, 'error', handler, flags);\n }\n}\n\nfunction eventTargetAgnosticAddListener(emitter, name, listener, flags) {\n if (typeof emitter.on === 'function') {\n if (flags.once) {\n emitter.once(name, listener);\n } else {\n emitter.on(name, listener);\n }\n } else if (typeof emitter.addEventListener === 'function') {\n // EventTarget does not have `error` event semantics like Node\n // EventEmitters, we do not listen for `error` events here.\n emitter.addEventListener(name, function wrapListener(arg) {\n // IE does not have builtin `{ once: true }` support so we\n // have to do it manually.\n if (flags.once) {\n emitter.removeEventListener(name, wrapListener);\n }\n listener(arg);\n });\n } else {\n throw new TypeError('The \"emitter\" argument must be of type EventEmitter. Received type ' + typeof emitter);\n }\n}\n\nconst ERROR_CODES = {\n Method_InvalidParameter: '',\n Call_API: '',\n Call_NotResponse: 'No response data',\n Transport_InvalidProtobuf: '',\n Device_FwException: '',\n Device_UnexpectedMode: '',\n Device_CallInProgress: '',\n Device_InitializeFailed: '',\n Not_Use_Onekey_Device: 'Please use onekey device',\n Runtime: '',\n Init_NotInitialized: 'Init_NotInitialized',\n Init_IframeBlocked: 'Init_IframeBlocked',\n Init_IframeTimeout: 'Init_IframeTimeout',\n Init_AlreadyInitialized: 'Init_AlreadyInitialized',\n Init_IframeLoadFail: 'Init_IframeLoadFail',\n};\nclass OnekeyError extends Error {\n constructor(code, message) {\n super(message);\n this.code = code;\n this.message = message;\n }\n}\nconst TypedError = (id, message) => new OnekeyError(id, message || ERROR_CODES[id]);\nconst serializeError = (payload) => {\n if (payload && payload.error instanceof Error) {\n return { error: payload.error.message, code: payload.error.code };\n }\n return payload;\n};\n\nvar errors = /*#__PURE__*/Object.freeze({\n __proto__: null,\n ERROR_CODES: ERROR_CODES,\n OnekeyError: OnekeyError,\n TypedError: TypedError,\n serializeError: serializeError\n});\n\nconst colors = {\n '@onekey/connect': 'color: #f4a742; background: #000;',\n IFrame: 'color: #f4a742; background: #000;',\n Core: 'color: #f4a742; background: #000;',\n DescriptorStream: 'color: #77ab59; background: #000;',\n DeviceList: 'color: #77ab59; background: #000;',\n Device: 'color: #bada55; background: #000;',\n DeviceCommands: 'color: #bada55; background: #000;',\n DeviceConnector: 'color: #bada55; background: #000;',\n Transport: 'color: #ffb6c1; background: #000;',\n};\nconst MAX_ENTRIES = 100;\nclass Log$5 {\n constructor(prefix, enabled) {\n this.prefix = prefix;\n this.enabled = enabled;\n this.messages = [];\n this.css = typeof window !== 'undefined' && colors[prefix] ? colors[prefix] : '';\n }\n addMessage(level, prefix, ...args) {\n this.messages.push({\n level,\n prefix,\n message: args,\n timestamp: new Date().getTime(),\n });\n if (this.messages.length > MAX_ENTRIES) {\n this.messages.shift();\n }\n }\n log(...args) {\n this.addMessage('log', this.prefix, ...args);\n if (this.enabled) {\n console.log(this.prefix, ...args);\n }\n }\n error(...args) {\n this.addMessage('error', this.prefix, ...args);\n if (this.enabled) {\n console.error(this.prefix, ...args);\n }\n }\n warn(...args) {\n this.addMessage('warn', this.prefix, ...args);\n if (this.enabled) {\n console.warn(this.prefix, ...args);\n }\n }\n debug(...args) {\n this.addMessage('debug', this.prefix, ...args);\n if (this.enabled) {\n if (this.css) {\n console.log(`%c${this.prefix}`, this.css, ...args);\n }\n else {\n console.log(this.prefix, ...args);\n }\n }\n }\n}\nconst _logs = {};\nconst initLog = (prefix, enabled) => {\n const instance = new Log$5(prefix, !!enabled);\n _logs[prefix] = instance;\n return instance;\n};\nconst enableLog = (enabled) => {\n Object.keys(_logs).forEach(key => {\n _logs[key].enabled = !!enabled;\n });\n};\n\nconst httpRequest$1 = (url, type = 'text') => __awaiter(void 0, void 0, void 0, function* () {\n const response = yield axios__default[\"default\"].request({\n url,\n withCredentials: false,\n });\n if (+response.status === 200) {\n if (type === 'json') {\n return response.data;\n }\n if (type === 'binary') {\n return response.data.arrayBuffer();\n }\n return response.data;\n }\n throw new Error(`httpRequest error: ${url} ${response.statusText}`);\n});\n\nconst httpRequest = (url, _type) => httpRequest$1(url);\nconst getTimeStamp = () => new Date().getTime();\n\nconst VER_NUMS = 3;\nconst versionRegex = new RegExp(/^[0-9]{1,3}(\\.[0-9]{1,3}){0,2}$/);\nconst isValidVersionString = (version) => versionRegex.test(version);\nconst isValidVersionArray = (version) => {\n if (!Array.isArray(version)) {\n return false;\n }\n if (version.length === 0 || version.length > VER_NUMS) {\n return false;\n }\n if (version[0] === 0) {\n return false;\n }\n for (let i = 0; i < version.length; i++) {\n if (typeof version[i] !== 'number' || version[i] < 0) {\n return false;\n }\n }\n return true;\n};\nconst normalizeVersionArray = (version) => {\n if (version.length === VER_NUMS) {\n return version;\n }\n const partialVersion = [...version];\n for (let i = version.length; i < VER_NUMS; i++) {\n partialVersion.push(0);\n }\n return partialVersion;\n};\nconst versionSplit = (version) => {\n if (!isValidVersionString(version)) {\n return [0, 0, 0];\n }\n return version.split('.').map(v => Number(v));\n};\nconst versionCompare = (a, b) => {\n if (typeof a === 'string' && typeof b === 'string' && a === b) {\n return 0;\n }\n const pa = typeof a === 'string' ? versionSplit(a) : a;\n const pb = typeof b === 'string' ? versionSplit(b) : b;\n const vpa = isValidVersionArray(pa);\n const vpb = isValidVersionArray(pb);\n if (!vpa && !vpb) {\n return 0;\n }\n if (!vpa && vpb) {\n return -1;\n }\n if (vpa && !vpb) {\n return 1;\n }\n const npa = normalizeVersionArray(pa);\n const npb = normalizeVersionArray(pb);\n for (let i = 0; i < VER_NUMS; i++) {\n if (npa[i] > npb[i])\n return 1;\n if (npb[i] > npa[i])\n return -1;\n }\n return 0;\n};\n\nfunction create(arg, data) {\n let localResolve = (_t) => { };\n let localReject = (_e) => { };\n let id;\n const promise = new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {\n localResolve = resolve;\n localReject = reject;\n if (typeof arg === 'function') {\n try {\n yield arg();\n }\n catch (error) {\n reject(error);\n }\n }\n if (typeof arg === 'string')\n id = arg;\n }));\n return {\n id,\n data,\n resolve: localResolve,\n reject: localReject,\n promise,\n };\n}\n\nconst getDeviceType = (features) => {\n if (!features || typeof features !== 'object' || !features.serial_no) {\n return 'classic';\n }\n const serialNo = features.serial_no;\n const miniFlag = serialNo.slice(0, 2);\n if (miniFlag.toLowerCase() === 'mi')\n return 'mini';\n if (miniFlag.toLowerCase() === 'tc')\n return 'touch';\n return 'classic';\n};\nconst getDeviceTypeByBleName = (name) => {\n if (!name)\n return 'classic';\n if (name.startsWith('MI'))\n return 'mini';\n if (name.startsWith('T'))\n return 'touch';\n return 'classic';\n};\nconst getDeviceTypeByDeviceId = (deviceId) => {\n if (!deviceId) {\n return 'classic';\n }\n const miniFlag = deviceId.slice(0, 2);\n if (miniFlag.toLowerCase() === 'mi')\n return 'mini';\n return 'classic';\n};\nconst getDeviceUUID = (features) => {\n const deviceType = getDeviceType(features);\n if (deviceType === 'classic') {\n return features.onekey_serial;\n }\n return features.serial_no;\n};\nconst getDeviceLabel = (features) => {\n const deviceType = getDeviceType(features);\n if (typeof features.label === 'string') {\n return features.label;\n }\n return `My OneKey ${deviceType.charAt(0).toUpperCase() + deviceType.slice(1)}`;\n};\nconst getDeviceFirmwareVersion = (features) => {\n if (features.onekey_version) {\n return features.onekey_version.split('.');\n }\n return [features.major_version, features.minor_version, features.patch_version];\n};\nconst getDeviceBLEFirmwareVersion = (features) => {\n if (!features.ble_ver) {\n return null;\n }\n return features.ble_ver.split('.');\n};\n\nconst HD_HARDENED = 0x80000000;\nconst toHardened = (n) => (n | HD_HARDENED) >>> 0;\nconst fromHardened = (n) => (n & ~HD_HARDENED) >>> 0;\nconst PATH_NOT_VALID = TypedError('Method_InvalidParameter', 'Not a valid path');\nconst PATH_NEGATIVE_VALUES = TypedError('Method_InvalidParameter', 'Path cannot contain negative values');\nconst getHDPath = (path) => {\n const parts = path.toLowerCase().split('/');\n if (parts[0] !== 'm')\n throw PATH_NOT_VALID;\n return parts\n .filter((p) => p !== 'm' && p !== '')\n .map((p) => {\n let hardened = false;\n if (p.substr(p.length - 1) === \"'\") {\n hardened = true;\n p = p.substr(0, p.length - 1);\n }\n let n = parseInt(p);\n if (Number.isNaN(n)) {\n throw PATH_NOT_VALID;\n }\n else if (n < 0) {\n throw PATH_NEGATIVE_VALUES;\n }\n if (hardened) {\n n = toHardened(n);\n }\n return n;\n });\n};\nconst isMultisigPath = (path) => Array.isArray(path) && path[0] === toHardened(48);\nconst isSegwitPath = (path) => Array.isArray(path) && path[0] === toHardened(49);\nconst getScriptType = (path) => {\n if (!Array.isArray(path) || path.length < 1)\n return 'SPENDADDRESS';\n const p1 = fromHardened(path[0]);\n switch (p1) {\n case 48:\n return 'SPENDMULTISIG';\n case 49:\n return 'SPENDP2SHWITNESS';\n case 84:\n return 'SPENDWITNESS';\n default:\n return 'SPENDADDRESS';\n }\n};\nconst getOutputScriptType = (path) => {\n if (!Array.isArray(path) || path.length < 1)\n return 'PAYTOADDRESS';\n if (path[0] === 49) {\n return 'PAYTOP2SHWITNESS';\n }\n const p = fromHardened(path[0]);\n switch (p) {\n case 48:\n return 'PAYTOMULTISIG';\n case 49:\n return 'PAYTOP2SHWITNESS';\n case 84:\n return 'PAYTOWITNESS';\n default:\n return 'PAYTOADDRESS';\n }\n};\nconst serializedPath = (path) => {\n const pathStr = path\n .map((p) => {\n if (p & HD_HARDENED) {\n return `${p & ~HD_HARDENED}'`;\n }\n return p;\n })\n .join('/');\n return `m/${pathStr}`;\n};\nconst validatePath = (path, length = 0, base = false) => {\n let valid;\n if (typeof path === 'string') {\n valid = getHDPath(path);\n }\n else if (Array.isArray(path)) {\n valid = path.map((p) => {\n const n = parseInt(p);\n if (Number.isNaN(n)) {\n throw PATH_NOT_VALID;\n }\n else if (n < 0) {\n throw PATH_NEGATIVE_VALUES;\n }\n return n;\n });\n }\n else {\n valid = undefined;\n }\n if (!valid)\n throw PATH_NOT_VALID;\n if (length > 0 && valid.length < length)\n throw PATH_NOT_VALID;\n return base ? valid.splice(0, 3) : valid;\n};\n\nvar nested = {\n\tBinanceGetAddress: {\n\t\tfields: {\n\t\t\taddress_n: {\n\t\t\t\trule: \"repeated\",\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 1,\n\t\t\t\toptions: {\n\t\t\t\t\tpacked: false\n\t\t\t\t}\n\t\t\t},\n\t\t\tshow_display: {\n\t\t\t\ttype: \"bool\",\n\t\t\t\tid: 2\n\t\t\t}\n\t\t}\n\t},\n\tBinanceAddress: {\n\t\tfields: {\n\t\t\taddress: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"string\",\n\t\t\t\tid: 1\n\t\t\t}\n\t\t}\n\t},\n\tBinanceGetPublicKey: {\n\t\tfields: {\n\t\t\taddress_n: {\n\t\t\t\trule: \"repeated\",\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 1,\n\t\t\t\toptions: {\n\t\t\t\t\tpacked: false\n\t\t\t\t}\n\t\t\t},\n\t\t\tshow_display: {\n\t\t\t\ttype: \"bool\",\n\t\t\t\tid: 2\n\t\t\t}\n\t\t}\n\t},\n\tBinancePublicKey: {\n\t\tfields: {\n\t\t\tpublic_key: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 1\n\t\t\t}\n\t\t}\n\t},\n\tBinanceSignTx: {\n\t\tfields: {\n\t\t\taddress_n: {\n\t\t\t\trule: \"repeated\",\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 1,\n\t\t\t\toptions: {\n\t\t\t\t\tpacked: false\n\t\t\t\t}\n\t\t\t},\n\t\t\tmsg_count: {\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 2\n\t\t\t},\n\t\t\taccount_number: {\n\t\t\t\ttype: \"sint64\",\n\t\t\t\tid: 3\n\t\t\t},\n\t\t\tchain_id: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tid: 4\n\t\t\t},\n\t\t\tmemo: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tid: 5\n\t\t\t},\n\t\t\tsequence: {\n\t\t\t\ttype: \"sint64\",\n\t\t\t\tid: 6\n\t\t\t},\n\t\t\tsource: {\n\t\t\t\ttype: \"sint64\",\n\t\t\t\tid: 7\n\t\t\t}\n\t\t}\n\t},\n\tBinanceTxRequest: {\n\t\tfields: {\n\t\t}\n\t},\n\tBinanceTransferMsg: {\n\t\tfields: {\n\t\t\tinputs: {\n\t\t\t\trule: \"repeated\",\n\t\t\t\ttype: \"BinanceInputOutput\",\n\t\t\t\tid: 1\n\t\t\t},\n\t\t\toutputs: {\n\t\t\t\trule: \"repeated\",\n\t\t\t\ttype: \"BinanceInputOutput\",\n\t\t\t\tid: 2\n\t\t\t}\n\t\t},\n\t\tnested: {\n\t\t\tBinanceInputOutput: {\n\t\t\t\tfields: {\n\t\t\t\t\taddress: {\n\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\tid: 1\n\t\t\t\t\t},\n\t\t\t\t\tcoins: {\n\t\t\t\t\t\trule: \"repeated\",\n\t\t\t\t\t\ttype: \"BinanceCoin\",\n\t\t\t\t\t\tid: 2\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\tBinanceCoin: {\n\t\t\t\tfields: {\n\t\t\t\t\tamount: {\n\t\t\t\t\t\ttype: \"sint64\",\n\t\t\t\t\t\tid: 1\n\t\t\t\t\t},\n\t\t\t\t\tdenom: {\n\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\tid: 2\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\tBinanceOrderMsg: {\n\t\tfields: {\n\t\t\tid: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tid: 1\n\t\t\t},\n\t\t\tordertype: {\n\t\t\t\ttype: \"BinanceOrderType\",\n\t\t\t\tid: 2\n\t\t\t},\n\t\t\tprice: {\n\t\t\t\ttype: \"sint64\",\n\t\t\t\tid: 3\n\t\t\t},\n\t\t\tquantity: {\n\t\t\t\ttype: \"sint64\",\n\t\t\t\tid: 4\n\t\t\t},\n\t\t\tsender: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tid: 5\n\t\t\t},\n\t\t\tside: {\n\t\t\t\ttype: \"BinanceOrderSide\",\n\t\t\t\tid: 6\n\t\t\t},\n\t\t\tsymbol: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tid: 7\n\t\t\t},\n\t\t\ttimeinforce: {\n\t\t\t\ttype: \"BinanceTimeInForce\",\n\t\t\t\tid: 8\n\t\t\t}\n\t\t},\n\t\tnested: {\n\t\t\tBinanceOrderType: {\n\t\t\t\tvalues: {\n\t\t\t\t\tOT_UNKNOWN: 0,\n\t\t\t\t\tMARKET: 1,\n\t\t\t\t\tLIMIT: 2,\n\t\t\t\t\tOT_RESERVED: 3\n\t\t\t\t}\n\t\t\t},\n\t\t\tBinanceOrderSide: {\n\t\t\t\tvalues: {\n\t\t\t\t\tSIDE_UNKNOWN: 0,\n\t\t\t\t\tBUY: 1,\n\t\t\t\t\tSELL: 2\n\t\t\t\t}\n\t\t\t},\n\t\t\tBinanceTimeInForce: {\n\t\t\t\tvalues: {\n\t\t\t\t\tTIF_UNKNOWN: 0,\n\t\t\t\t\tGTE: 1,\n\t\t\t\t\tTIF_RESERVED: 2,\n\t\t\t\t\tIOC: 3\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\tBinanceCancelMsg: {\n\t\tfields: {\n\t\t\trefid: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tid: 1\n\t\t\t},\n\t\t\tsender: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tid: 2\n\t\t\t},\n\t\t\tsymbol: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tid: 3\n\t\t\t}\n\t\t}\n\t},\n\tBinanceSignedTx: {\n\t\tfields: {\n\t\t\tsignature: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 1\n\t\t\t},\n\t\t\tpublic_key: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 2\n\t\t\t}\n\t\t}\n\t},\n\tInputScriptType: {\n\t\tvalues: {\n\t\t\tSPENDADDRESS: 0,\n\t\t\tSPENDMULTISIG: 1,\n\t\t\tEXTERNAL: 2,\n\t\t\tSPENDWITNESS: 3,\n\t\t\tSPENDP2SHWITNESS: 4,\n\t\t\tSPENDTAPROOT: 5\n\t\t}\n\t},\n\tOutputScriptType: {\n\t\tvalues: {\n\t\t\tPAYTOADDRESS: 0,\n\t\t\tPAYTOSCRIPTHASH: 1,\n\t\t\tPAYTOMULTISIG: 2,\n\t\t\tPAYTOOPRETURN: 3,\n\t\t\tPAYTOWITNESS: 4,\n\t\t\tPAYTOP2SHWITNESS: 5,\n\t\t\tPAYTOTAPROOT: 6\n\t\t}\n\t},\n\tDecredStakingSpendType: {\n\t\tvalues: {\n\t\t\tSSGen: 0,\n\t\t\tSSRTX: 1\n\t\t}\n\t},\n\tAmountUnit: {\n\t\tvalues: {\n\t\t\tBITCOIN: 0,\n\t\t\tMILLIBITCOIN: 1,\n\t\t\tMICROBITCOIN: 2,\n\t\t\tSATOSHI: 3\n\t\t}\n\t},\n\tMultisigRedeemScriptType: {\n\t\tfields: {\n\t\t\tpubkeys: {\n\t\t\t\trule: \"repeated\",\n\t\t\t\ttype: \"HDNodePathType\",\n\t\t\t\tid: 1\n\t\t\t},\n\t\t\tsignatures: {\n\t\t\t\trule: \"repeated\",\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 2\n\t\t\t},\n\t\t\tm: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 3\n\t\t\t},\n\t\t\tnodes: {\n\t\t\t\trule: \"repeated\",\n\t\t\t\ttype: \"HDNodeType\",\n\t\t\t\tid: 4\n\t\t\t},\n\t\t\taddress_n: {\n\t\t\t\trule: \"repeated\",\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 5,\n\t\t\t\toptions: {\n\t\t\t\t\tpacked: false\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tnested: {\n\t\t\tHDNodePathType: {\n\t\t\t\tfields: {\n\t\t\t\t\tnode: {\n\t\t\t\t\t\trule: \"required\",\n\t\t\t\t\t\ttype: \"HDNodeType\",\n\t\t\t\t\t\tid: 1\n\t\t\t\t\t},\n\t\t\t\t\taddress_n: {\n\t\t\t\t\t\trule: \"repeated\",\n\t\t\t\t\t\ttype: \"uint32\",\n\t\t\t\t\t\tid: 2,\n\t\t\t\t\t\toptions: {\n\t\t\t\t\t\t\tpacked: false\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\tGetPublicKey: {\n\t\tfields: {\n\t\t\taddress_n: {\n\t\t\t\trule: \"repeated\",\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 1,\n\t\t\t\toptions: {\n\t\t\t\t\tpacked: false\n\t\t\t\t}\n\t\t\t},\n\t\t\tecdsa_curve_name: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tid: 2\n\t\t\t},\n\t\t\tshow_display: {\n\t\t\t\ttype: \"bool\",\n\t\t\t\tid: 3\n\t\t\t},\n\t\t\tcoin_name: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tid: 4,\n\t\t\t\toptions: {\n\t\t\t\t\t\"default\": \"Bitcoin\"\n\t\t\t\t}\n\t\t\t},\n\t\t\tscript_type: {\n\t\t\t\ttype: \"InputScriptType\",\n\t\t\t\tid: 5,\n\t\t\t\toptions: {\n\t\t\t\t\t\"default\": \"SPENDADDRESS\"\n\t\t\t\t}\n\t\t\t},\n\t\t\tignore_xpub_magic: {\n\t\t\t\ttype: \"bool\",\n\t\t\t\tid: 6\n\t\t\t}\n\t\t}\n\t},\n\tPublicKey: {\n\t\tfields: {\n\t\t\tnode: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"HDNodeType\",\n\t\t\t\tid: 1\n\t\t\t},\n\t\t\txpub: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"string\",\n\t\t\t\tid: 2\n\t\t\t},\n\t\t\troot_fingerprint: {\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 3\n\t\t\t}\n\t\t}\n\t},\n\tGetAddress: {\n\t\tfields: {\n\t\t\taddress_n: {\n\t\t\t\trule: \"repeated\",\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 1,\n\t\t\t\toptions: {\n\t\t\t\t\tpacked: false\n\t\t\t\t}\n\t\t\t},\n\t\t\tcoin_name: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tid: 2,\n\t\t\t\toptions: {\n\t\t\t\t\t\"default\": \"Bitcoin\"\n\t\t\t\t}\n\t\t\t},\n\t\t\tshow_display: {\n\t\t\t\ttype: \"bool\",\n\t\t\t\tid: 3\n\t\t\t},\n\t\t\tmultisig: {\n\t\t\t\ttype: \"MultisigRedeemScriptType\",\n\t\t\t\tid: 4\n\t\t\t},\n\t\t\tscript_type: {\n\t\t\t\ttype: \"InputScriptType\",\n\t\t\t\tid: 5,\n\t\t\t\toptions: {\n\t\t\t\t\t\"default\": \"SPENDADDRESS\"\n\t\t\t\t}\n\t\t\t},\n\t\t\tignore_xpub_magic: {\n\t\t\t\ttype: \"bool\",\n\t\t\t\tid: 6\n\t\t\t}\n\t\t}\n\t},\n\tAddress: {\n\t\tfields: {\n\t\t\taddress: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"string\",\n\t\t\t\tid: 1\n\t\t\t}\n\t\t}\n\t},\n\tGetOwnershipId: {\n\t\tfields: {\n\t\t\taddress_n: {\n\t\t\t\trule: \"repeated\",\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 1,\n\t\t\t\toptions: {\n\t\t\t\t\tpacked: false\n\t\t\t\t}\n\t\t\t},\n\t\t\tcoin_name: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tid: 2,\n\t\t\t\toptions: {\n\t\t\t\t\t\"default\": \"Bitcoin\"\n\t\t\t\t}\n\t\t\t},\n\t\t\tmultisig: {\n\t\t\t\ttype: \"MultisigRedeemScriptType\",\n\t\t\t\tid: 3\n\t\t\t},\n\t\t\tscript_type: {\n\t\t\t\ttype: \"InputScriptType\",\n\t\t\t\tid: 4,\n\t\t\t\toptions: {\n\t\t\t\t\t\"default\": \"SPENDADDRESS\"\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\tOwnershipId: {\n\t\tfields: {\n\t\t\townership_id: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 1\n\t\t\t}\n\t\t}\n\t},\n\tSignMessage: {\n\t\tfields: {\n\t\t\taddress_n: {\n\t\t\t\trule: \"repeated\",\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 1,\n\t\t\t\toptions: {\n\t\t\t\t\tpacked: false\n\t\t\t\t}\n\t\t\t},\n\t\t\tmessage: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 2\n\t\t\t},\n\t\t\tcoin_name: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tid: 3,\n\t\t\t\toptions: {\n\t\t\t\t\t\"default\": \"Bitcoin\"\n\t\t\t\t}\n\t\t\t},\n\t\t\tscript_type: {\n\t\t\t\ttype: \"InputScriptType\",\n\t\t\t\tid: 4,\n\t\t\t\toptions: {\n\t\t\t\t\t\"default\": \"SPENDADDRESS\"\n\t\t\t\t}\n\t\t\t},\n\t\t\tno_script_type: {\n\t\t\t\ttype: \"bool\",\n\t\t\t\tid: 5\n\t\t\t}\n\t\t}\n\t},\n\tMessageSignature: {\n\t\tfields: {\n\t\t\taddress: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"string\",\n\t\t\t\tid: 1\n\t\t\t},\n\t\t\tsignature: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 2\n\t\t\t}\n\t\t}\n\t},\n\tVerifyMessage: {\n\t\tfields: {\n\t\t\taddress: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"string\",\n\t\t\t\tid: 1\n\t\t\t},\n\t\t\tsignature: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 2\n\t\t\t},\n\t\t\tmessage: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 3\n\t\t\t},\n\t\t\tcoin_name: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tid: 4,\n\t\t\t\toptions: {\n\t\t\t\t\t\"default\": \"Bitcoin\"\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\tSignTx: {\n\t\tfields: {\n\t\t\toutputs_count: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 1\n\t\t\t},\n\t\t\tinputs_count: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 2\n\t\t\t},\n\t\t\tcoin_name: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tid: 3,\n\t\t\t\toptions: {\n\t\t\t\t\t\"default\": \"Bitcoin\"\n\t\t\t\t}\n\t\t\t},\n\t\t\tversion: {\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 4,\n\t\t\t\toptions: {\n\t\t\t\t\t\"default\": 1\n\t\t\t\t}\n\t\t\t},\n\t\t\tlock_time: {\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 5,\n\t\t\t\toptions: {\n\t\t\t\t\t\"default\": 0\n\t\t\t\t}\n\t\t\t},\n\t\t\texpiry: {\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 6\n\t\t\t},\n\t\t\toverwintered: {\n\t\t\t\ttype: \"bool\",\n\t\t\t\tid: 7,\n\t\t\t\toptions: {\n\t\t\t\t\tdeprecated: true\n\t\t\t\t}\n\t\t\t},\n\t\t\tversion_group_id: {\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 8\n\t\t\t},\n\t\t\ttimestamp: {\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 9\n\t\t\t},\n\t\t\tbranch_id: {\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 10\n\t\t\t},\n\t\t\tamount_unit: {\n\t\t\t\ttype: \"AmountUnit\",\n\t\t\t\tid: 11,\n\t\t\t\toptions: {\n\t\t\t\t\t\"default\": \"BITCOIN\"\n\t\t\t\t}\n\t\t\t},\n\t\t\tdecred_staking_ticket: {\n\t\t\t\ttype: \"bool\",\n\t\t\t\tid: 12,\n\t\t\t\toptions: {\n\t\t\t\t\t\"default\": false\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\tTxRequest: {\n\t\tfields: {\n\t\t\trequest_type: {\n\t\t\t\ttype: \"RequestType\",\n\t\t\t\tid: 1\n\t\t\t},\n\t\t\tdetails: {\n\t\t\t\ttype: \"TxRequestDetailsType\",\n\t\t\t\tid: 2\n\t\t\t},\n\t\t\tserialized: {\n\t\t\t\ttype: \"TxRequestSerializedType\",\n\t\t\t\tid: 3\n\t\t\t}\n\t\t},\n\t\tnested: {\n\t\t\tRequestType: {\n\t\t\t\tvalues: {\n\t\t\t\t\tTXINPUT: 0,\n\t\t\t\t\tTXOUTPUT: 1,\n\t\t\t\t\tTXMETA: 2,\n\t\t\t\t\tTXFINISHED: 3,\n\t\t\t\t\tTXEXTRADATA: 4,\n\t\t\t\t\tTXORIGINPUT: 5,\n\t\t\t\t\tTXORIGOUTPUT: 6\n\t\t\t\t}\n\t\t\t},\n\t\t\tTxRequestDetailsType: {\n\t\t\t\tfields: {\n\t\t\t\t\trequest_index: {\n\t\t\t\t\t\ttype: \"uint32\",\n\t\t\t\t\t\tid: 1\n\t\t\t\t\t},\n\t\t\t\t\ttx_hash: {\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t\tid: 2\n\t\t\t\t\t},\n\t\t\t\t\textra_data_len: {\n\t\t\t\t\t\ttype: \"uint32\",\n\t\t\t\t\t\tid: 3\n\t\t\t\t\t},\n\t\t\t\t\textra_data_offset: {\n\t\t\t\t\t\ttype: \"uint32\",\n\t\t\t\t\t\tid: 4\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\tTxRequestSerializedType: {\n\t\t\t\tfields: {\n\t\t\t\t\tsignature_index: {\n\t\t\t\t\t\ttype: \"uint32\",\n\t\t\t\t\t\tid: 1\n\t\t\t\t\t},\n\t\t\t\t\tsignature: {\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t\tid: 2\n\t\t\t\t\t},\n\t\t\t\t\tserialized_tx: {\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t\tid: 3\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\tTxAck: {\n\t\toptions: {\n\t\t\tdeprecated: true\n\t\t},\n\t\tfields: {\n\t\t\ttx: {\n\t\t\t\ttype: \"TransactionType\",\n\t\t\t\tid: 1\n\t\t\t}\n\t\t},\n\t\tnested: {\n\t\t\tTransactionType: {\n\t\t\t\tfields: {\n\t\t\t\t\tversion: {\n\t\t\t\t\t\ttype: \"uint32\",\n\t\t\t\t\t\tid: 1\n\t\t\t\t\t},\n\t\t\t\t\tinputs: {\n\t\t\t\t\t\trule: \"repeated\",\n\t\t\t\t\t\ttype: \"TxInputType\",\n\t\t\t\t\t\tid: 2\n\t\t\t\t\t},\n\t\t\t\t\tbin_outputs: {\n\t\t\t\t\t\trule: \"repeated\",\n\t\t\t\t\t\ttype: \"TxOutputBinType\",\n\t\t\t\t\t\tid: 3\n\t\t\t\t\t},\n\t\t\t\t\tlock_time: {\n\t\t\t\t\t\ttype: \"uint32\",\n\t\t\t\t\t\tid: 4\n\t\t\t\t\t},\n\t\t\t\t\toutputs: {\n\t\t\t\t\t\trule: \"repeated\",\n\t\t\t\t\t\ttype: \"TxOutputType\",\n\t\t\t\t\t\tid: 5\n\t\t\t\t\t},\n\t\t\t\t\tinputs_cnt: {\n\t\t\t\t\t\ttype: \"uint32\",\n\t\t\t\t\t\tid: 6\n\t\t\t\t\t},\n\t\t\t\t\toutputs_cnt: {\n\t\t\t\t\t\ttype: \"uint32\",\n\t\t\t\t\t\tid: 7\n\t\t\t\t\t},\n\t\t\t\t\textra_data: {\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t\tid: 8\n\t\t\t\t\t},\n\t\t\t\t\textra_data_len: {\n\t\t\t\t\t\ttype: \"uint32\",\n\t\t\t\t\t\tid: 9\n\t\t\t\t\t},\n\t\t\t\t\texpiry: {\n\t\t\t\t\t\ttype: \"uint32\",\n\t\t\t\t\t\tid: 10\n\t\t\t\t\t},\n\t\t\t\t\toverwintered: {\n\t\t\t\t\t\ttype: \"bool\",\n\t\t\t\t\t\tid: 11,\n\t\t\t\t\t\toptions: {\n\t\t\t\t\t\t\tdeprecated: true\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\tversion_group_id: {\n\t\t\t\t\t\ttype: \"uint32\",\n\t\t\t\t\t\tid: 12\n\t\t\t\t\t},\n\t\t\t\t\ttimestamp: {\n\t\t\t\t\t\ttype: \"uint32\",\n\t\t\t\t\t\tid: 13\n\t\t\t\t\t},\n\t\t\t\t\tbranch_id: {\n\t\t\t\t\t\ttype: \"uint32\",\n\t\t\t\t\t\tid: 14\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tnested: {\n\t\t\t\t\tTxInputType: {\n\t\t\t\t\t\tfields: {\n\t\t\t\t\t\t\taddress_n: {\n\t\t\t\t\t\t\t\trule: \"repeated\",\n\t\t\t\t\t\t\t\ttype: \"uint32\",\n\t\t\t\t\t\t\t\tid: 1,\n\t\t\t\t\t\t\t\toptions: {\n\t\t\t\t\t\t\t\t\tpacked: false\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tprev_hash: {\n\t\t\t\t\t\t\t\trule: \"required\",\n\t\t\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t\t\t\tid: 2\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tprev_index: {\n\t\t\t\t\t\t\t\trule: \"required\",\n\t\t\t\t\t\t\t\ttype: \"uint32\",\n\t\t\t\t\t\t\t\tid: 3\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tscript_sig: {\n\t\t\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t\t\t\tid: 4\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tsequence: {\n\t\t\t\t\t\t\t\ttype: \"uint32\",\n\t\t\t\t\t\t\t\tid: 5,\n\t\t\t\t\t\t\t\toptions: {\n\t\t\t\t\t\t\t\t\t\"default\": 4294967295\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tscript_type: {\n\t\t\t\t\t\t\t\ttype: \"InputScriptType\",\n\t\t\t\t\t\t\t\tid: 6,\n\t\t\t\t\t\t\t\toptions: {\n\t\t\t\t\t\t\t\t\t\"default\": \"SPENDADDRESS\"\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tmultisig: {\n\t\t\t\t\t\t\t\ttype: \"MultisigRedeemScriptType\",\n\t\t\t\t\t\t\t\tid: 7\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tamount: {\n\t\t\t\t\t\t\t\ttype: \"uint64\",\n\t\t\t\t\t\t\t\tid: 8\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tdecred_tree: {\n\t\t\t\t\t\t\t\ttype: \"uint32\",\n\t\t\t\t\t\t\t\tid: 9\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\twitness: {\n\t\t\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t\t\t\tid: 13\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\townership_proof: {\n\t\t\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t\t\t\tid: 14\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tcommitment_data: {\n\t\t\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t\t\t\tid: 15\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\torig_hash: {\n\t\t\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t\t\t\tid: 16\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\torig_index: {\n\t\t\t\t\t\t\t\ttype: \"uint32\",\n\t\t\t\t\t\t\t\tid: 17\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tdecred_staking_spend: {\n\t\t\t\t\t\t\t\ttype: \"DecredStakingSpendType\",\n\t\t\t\t\t\t\t\tid: 18\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tscript_pubkey: {\n\t\t\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t\t\t\tid: 19\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\tTxOutputBinType: {\n\t\t\t\t\t\tfields: {\n\t\t\t\t\t\t\tamount: {\n\t\t\t\t\t\t\t\trule: \"required\",\n\t\t\t\t\t\t\t\ttype: \"uint64\",\n\t\t\t\t\t\t\t\tid: 1\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tscript_pubkey: {\n\t\t\t\t\t\t\t\trule: \"required\",\n\t\t\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t\t\t\tid: 2\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tdecred_script_version: {\n\t\t\t\t\t\t\t\ttype: \"uint32\",\n\t\t\t\t\t\t\t\tid: 3\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\tTxOutputType: {\n\t\t\t\t\t\tfields: {\n\t\t\t\t\t\t\taddress: {\n\t\t\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\t\t\tid: 1\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\taddress_n: {\n\t\t\t\t\t\t\t\trule: \"repeated\",\n\t\t\t\t\t\t\t\ttype: \"uint32\",\n\t\t\t\t\t\t\t\tid: 2,\n\t\t\t\t\t\t\t\toptions: {\n\t\t\t\t\t\t\t\t\tpacked: false\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tamount: {\n\t\t\t\t\t\t\t\trule: \"required\",\n\t\t\t\t\t\t\t\ttype: \"uint64\",\n\t\t\t\t\t\t\t\tid: 3\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tscript_type: {\n\t\t\t\t\t\t\t\ttype: \"OutputScriptType\",\n\t\t\t\t\t\t\t\tid: 4,\n\t\t\t\t\t\t\t\toptions: {\n\t\t\t\t\t\t\t\t\t\"default\": \"PAYTOADDRESS\"\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tmultisig: {\n\t\t\t\t\t\t\t\ttype: \"MultisigRedeemScriptType\",\n\t\t\t\t\t\t\t\tid: 5\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\top_return_data: {\n\t\t\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t\t\t\tid: 6\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\torig_hash: {\n\t\t\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t\t\t\tid: 10\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\torig_index: {\n\t\t\t\t\t\t\t\ttype: \"uint32\",\n\t\t\t\t\t\t\t\tid: 11\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\tTxInput: {\n\t\tfields: {\n\t\t\taddress_n: {\n\t\t\t\trule: \"repeated\",\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 1,\n\t\t\t\toptions: {\n\t\t\t\t\tpacked: false\n\t\t\t\t}\n\t\t\t},\n\t\t\tprev_hash: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 2\n\t\t\t},\n\t\t\tprev_index: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 3\n\t\t\t},\n\t\t\tscript_sig: {\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 4\n\t\t\t},\n\t\t\tsequence: {\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 5,\n\t\t\t\toptions: {\n\t\t\t\t\t\"default\": 4294967295\n\t\t\t\t}\n\t\t\t},\n\t\t\tscript_type: {\n\t\t\t\ttype: \"InputScriptType\",\n\t\t\t\tid: 6,\n\t\t\t\toptions: {\n\t\t\t\t\t\"default\": \"SPENDADDRESS\"\n\t\t\t\t}\n\t\t\t},\n\t\t\tmultisig: {\n\t\t\t\ttype: \"MultisigRedeemScriptType\",\n\t\t\t\tid: 7\n\t\t\t},\n\t\t\tamount: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"uint64\",\n\t\t\t\tid: 8\n\t\t\t},\n\t\t\tdecred_tree: {\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 9\n\t\t\t},\n\t\t\twitness: {\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 13\n\t\t\t},\n\t\t\townership_proof: {\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 14\n\t\t\t},\n\t\t\tcommitment_data: {\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 15\n\t\t\t},\n\t\t\torig_hash: {\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 16\n\t\t\t},\n\t\t\torig_index: {\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 17\n\t\t\t},\n\t\t\tdecred_staking_spend: {\n\t\t\t\ttype: \"DecredStakingSpendType\",\n\t\t\t\tid: 18\n\t\t\t},\n\t\t\tscript_pubkey: {\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 19\n\t\t\t}\n\t\t}\n\t},\n\tTxOutput: {\n\t\tfields: {\n\t\t\taddress: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tid: 1\n\t\t\t},\n\t\t\taddress_n: {\n\t\t\t\trule: \"repeated\",\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 2,\n\t\t\t\toptions: {\n\t\t\t\t\tpacked: false\n\t\t\t\t}\n\t\t\t},\n\t\t\tamount: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"uint64\",\n\t\t\t\tid: 3\n\t\t\t},\n\t\t\tscript_type: {\n\t\t\t\ttype: \"OutputScriptType\",\n\t\t\t\tid: 4,\n\t\t\t\toptions: {\n\t\t\t\t\t\"default\": \"PAYTOADDRESS\"\n\t\t\t\t}\n\t\t\t},\n\t\t\tmultisig: {\n\t\t\t\ttype: \"MultisigRedeemScriptType\",\n\t\t\t\tid: 5\n\t\t\t},\n\t\t\top_return_data: {\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 6\n\t\t\t},\n\t\t\torig_hash: {\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 10\n\t\t\t},\n\t\t\torig_index: {\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 11\n\t\t\t}\n\t\t}\n\t},\n\tPrevTx: {\n\t\tfields: {\n\t\t\tversion: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 1\n\t\t\t},\n\t\t\tlock_time: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 4\n\t\t\t},\n\t\t\tinputs_count: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 6\n\t\t\t},\n\t\t\toutputs_count: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 7\n\t\t\t},\n\t\t\textra_data_len: {\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 9,\n\t\t\t\toptions: {\n\t\t\t\t\t\"default\": 0\n\t\t\t\t}\n\t\t\t},\n\t\t\texpiry: {\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 10\n\t\t\t},\n\t\t\tversion_group_id: {\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 12\n\t\t\t},\n\t\t\ttimestamp: {\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 13\n\t\t\t},\n\t\t\tbranch_id: {\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 14\n\t\t\t}\n\t\t}\n\t},\n\tPrevInput: {\n\t\tfields: {\n\t\t\tprev_hash: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 2\n\t\t\t},\n\t\t\tprev_index: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 3\n\t\t\t},\n\t\t\tscript_sig: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 4\n\t\t\t},\n\t\t\tsequence: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 5\n\t\t\t},\n\t\t\tdecred_tree: {\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 9\n\t\t\t}\n\t\t}\n\t},\n\tPrevOutput: {\n\t\tfields: {\n\t\t\tamount: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"uint64\",\n\t\t\t\tid: 1\n\t\t\t},\n\t\t\tscript_pubkey: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 2\n\t\t\t},\n\t\t\tdecred_script_version: {\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 3\n\t\t\t}\n\t\t}\n\t},\n\tTxAckInput: {\n\t\toptions: {\n\t\t\t\"(wire_type)\": 22\n\t\t},\n\t\tfields: {\n\t\t\ttx: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"TxAckInputWrapper\",\n\t\t\t\tid: 1\n\t\t\t}\n\t\t},\n\t\tnested: {\n\t\t\tTxAckInputWrapper: {\n\t\t\t\tfields: {\n\t\t\t\t\tinput: {\n\t\t\t\t\t\trule: \"required\",\n\t\t\t\t\t\ttype: \"TxInput\",\n\t\t\t\t\t\tid: 2\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\tTxAckOutput: {\n\t\toptions: {\n\t\t\t\"(wire_type)\": 22\n\t\t},\n\t\tfields: {\n\t\t\ttx: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"TxAckOutputWrapper\",\n\t\t\t\tid: 1\n\t\t\t}\n\t\t},\n\t\tnested: {\n\t\t\tTxAckOutputWrapper: {\n\t\t\t\tfields: {\n\t\t\t\t\toutput: {\n\t\t\t\t\t\trule: \"required\",\n\t\t\t\t\t\ttype: \"TxOutput\",\n\t\t\t\t\t\tid: 5\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\tTxAckPrevMeta: {\n\t\toptions: {\n\t\t\t\"(wire_type)\": 22\n\t\t},\n\t\tfields: {\n\t\t\ttx: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"PrevTx\",\n\t\t\t\tid: 1\n\t\t\t}\n\t\t}\n\t},\n\tTxAckPrevInput: {\n\t\toptions: {\n\t\t\t\"(wire_type)\": 22\n\t\t},\n\t\tfields: {\n\t\t\ttx: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"TxAckPrevInputWrapper\",\n\t\t\t\tid: 1\n\t\t\t}\n\t\t},\n\t\tnested: {\n\t\t\tTxAckPrevInputWrapper: {\n\t\t\t\tfields: {\n\t\t\t\t\tinput: {\n\t\t\t\t\t\trule: \"required\",\n\t\t\t\t\t\ttype: \"PrevInput\",\n\t\t\t\t\t\tid: 2\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\tTxAckPrevOutput: {\n\t\toptions: {\n\t\t\t\"(wire_type)\": 22\n\t\t},\n\t\tfields: {\n\t\t\ttx: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"TxAckPrevOutputWrapper\",\n\t\t\t\tid: 1\n\t\t\t}\n\t\t},\n\t\tnested: {\n\t\t\tTxAckPrevOutputWrapper: {\n\t\t\t\tfields: {\n\t\t\t\t\toutput: {\n\t\t\t\t\t\trule: \"required\",\n\t\t\t\t\t\ttype: \"PrevOutput\",\n\t\t\t\t\t\tid: 3\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\tTxAckPrevExtraData: {\n\t\toptions: {\n\t\t\t\"(wire_type)\": 22\n\t\t},\n\t\tfields: {\n\t\t\ttx: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"TxAckPrevExtraDataWrapper\",\n\t\t\t\tid: 1\n\t\t\t}\n\t\t},\n\t\tnested: {\n\t\t\tTxAckPrevExtraDataWrapper: {\n\t\t\t\tfields: {\n\t\t\t\t\textra_data_chunk: {\n\t\t\t\t\t\trule: \"required\",\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t\tid: 8\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\tGetOwnershipProof: {\n\t\tfields: {\n\t\t\taddress_n: {\n\t\t\t\trule: \"repeated\",\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 1,\n\t\t\t\toptions: {\n\t\t\t\t\tpacked: false\n\t\t\t\t}\n\t\t\t},\n\t\t\tcoin_name: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tid: 2,\n\t\t\t\toptions: {\n\t\t\t\t\t\"default\": \"Bitcoin\"\n\t\t\t\t}\n\t\t\t},\n\t\t\tscript_type: {\n\t\t\t\ttype: \"InputScriptType\",\n\t\t\t\tid: 3,\n\t\t\t\toptions: {\n\t\t\t\t\t\"default\": \"SPENDWITNESS\"\n\t\t\t\t}\n\t\t\t},\n\t\t\tmultisig: {\n\t\t\t\ttype: \"MultisigRedeemScriptType\",\n\t\t\t\tid: 4\n\t\t\t},\n\t\t\tuser_confirmation: {\n\t\t\t\ttype: \"bool\",\n\t\t\t\tid: 5,\n\t\t\t\toptions: {\n\t\t\t\t\t\"default\": false\n\t\t\t\t}\n\t\t\t},\n\t\t\townership_ids: {\n\t\t\t\trule: \"repeated\",\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 6\n\t\t\t},\n\t\t\tcommitment_data: {\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 7,\n\t\t\t\toptions: {\n\t\t\t\t\t\"default\": \"\"\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\tOwnershipProof: {\n\t\tfields: {\n\t\t\townership_proof: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 1\n\t\t\t},\n\t\t\tsignature: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 2\n\t\t\t}\n\t\t}\n\t},\n\tAuthorizeCoinJoin: {\n\t\toptions: {\n\t\t\t\"(unstable)\": true\n\t\t},\n\t\tfields: {\n\t\t\tcoordinator: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"string\",\n\t\t\t\tid: 1\n\t\t\t},\n\t\t\tmax_total_fee: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"uint64\",\n\t\t\t\tid: 2\n\t\t\t},\n\t\t\tfee_per_anonymity: {\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 3,\n\t\t\t\toptions: {\n\t\t\t\t\t\"default\": 0\n\t\t\t\t}\n\t\t\t},\n\t\t\taddress_n: {\n\t\t\t\trule: \"repeated\",\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 4,\n\t\t\t\toptions: {\n\t\t\t\t\tpacked: false\n\t\t\t\t}\n\t\t\t},\n\t\t\tcoin_name: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tid: 5,\n\t\t\t\toptions: {\n\t\t\t\t\t\"default\": \"Bitcoin\"\n\t\t\t\t}\n\t\t\t},\n\t\t\tscript_type: {\n\t\t\t\ttype: \"InputScriptType\",\n\t\t\t\tid: 6,\n\t\t\t\toptions: {\n\t\t\t\t\t\"default\": \"SPENDADDRESS\"\n\t\t\t\t}\n\t\t\t},\n\t\t\tamount_unit: {\n\t\t\t\ttype: \"AmountUnit\",\n\t\t\t\tid: 11,\n\t\t\t\toptions: {\n\t\t\t\t\t\"default\": \"BITCOIN\"\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\tGetPublicKeyMultiple: {\n\t\tfields: {\n\t\t\taddresses: {\n\t\t\t\trule: \"repeated\",\n\t\t\t\ttype: \"BIP32Address\",\n\t\t\t\tid: 1\n\t\t\t},\n\t\t\tecdsa_curve_name: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tid: 2\n\t\t\t},\n\t\t\tshow_display: {\n\t\t\t\ttype: \"bool\",\n\t\t\t\tid: 3\n\t\t\t},\n\t\t\tcoin_name: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tid: 4,\n\t\t\t\toptions: {\n\t\t\t\t\t\"default\": \"Bitcoin\"\n\t\t\t\t}\n\t\t\t},\n\t\t\tscript_type: {\n\t\t\t\ttype: \"InputScriptType\",\n\t\t\t\tid: 5,\n\t\t\t\toptions: {\n\t\t\t\t\t\"default\": \"SPENDADDRESS\"\n\t\t\t\t}\n\t\t\t},\n\t\t\tignore_xpub_magic: {\n\t\t\t\ttype: \"bool\",\n\t\t\t\tid: 6\n\t\t\t}\n\t\t},\n\t\tnested: {\n\t\t\tBIP32Address: {\n\t\t\t\tfields: {\n\t\t\t\t\taddress_n: {\n\t\t\t\t\t\trule: \"repeated\",\n\t\t\t\t\t\ttype: \"uint32\",\n\t\t\t\t\t\tid: 1,\n\t\t\t\t\t\toptions: {\n\t\t\t\t\t\t\tpacked: false\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\tPublicKeyMultiple: {\n\t\tfields: {\n\t\t\txpubs: {\n\t\t\t\trule: \"repeated\",\n\t\t\t\ttype: \"string\",\n\t\t\t\tid: 1\n\t\t\t}\n\t\t}\n\t},\n\tFirmwareErase: {\n\t\tfields: {\n\t\t\tlength: {\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 1\n\t\t\t}\n\t\t}\n\t},\n\tFirmwareRequest: {\n\t\tfields: {\n\t\t\toffset: {\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 1\n\t\t\t},\n\t\t\tlength: {\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 2\n\t\t\t}\n\t\t}\n\t},\n\tFirmwareUpload: {\n\t\tfields: {\n\t\t\tpayload: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 1\n\t\t\t},\n\t\t\thash: {\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 2\n\t\t\t}\n\t\t}\n\t},\n\tSelfTest: {\n\t\tfields: {\n\t\t\tpayload: {\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 1\n\t\t\t}\n\t\t}\n\t},\n\tFirmwareErase_ex: {\n\t\tfields: {\n\t\t\tlength: {\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 1\n\t\t\t}\n\t\t}\n\t},\n\tCardanoDerivationType: {\n\t\tvalues: {\n\t\t\tLEDGER: 0,\n\t\t\tICARUS: 1,\n\t\t\tICARUS_TREZOR: 2\n\t\t}\n\t},\n\tCardanoAddressType: {\n\t\tvalues: {\n\t\t\tBASE: 0,\n\t\t\tBASE_SCRIPT_KEY: 1,\n\t\t\tBASE_KEY_SCRIPT: 2,\n\t\t\tBASE_SCRIPT_SCRIPT: 3,\n\t\t\tPOINTER: 4,\n\t\t\tPOINTER_SCRIPT: 5,\n\t\t\tENTERPRISE: 6,\n\t\t\tENTERPRISE_SCRIPT: 7,\n\t\t\tBYRON: 8,\n\t\t\tREWARD: 14,\n\t\t\tREWARD_SCRIPT: 15\n\t\t}\n\t},\n\tCardanoNativeScriptType: {\n\t\tvalues: {\n\t\t\tPUB_KEY: 0,\n\t\t\tALL: 1,\n\t\t\tANY: 2,\n\t\t\tN_OF_K: 3,\n\t\t\tINVALID_BEFORE: 4,\n\t\t\tINVALID_HEREAFTER: 5\n\t\t}\n\t},\n\tCardanoNativeScriptHashDisplayFormat: {\n\t\tvalues: {\n\t\t\tHIDE: 0,\n\t\t\tBECH32: 1,\n\t\t\tPOLICY_ID: 2\n\t\t}\n\t},\n\tCardanoCertificateType: {\n\t\tvalues: {\n\t\t\tSTAKE_REGISTRATION: 0,\n\t\t\tSTAKE_DEREGISTRATION: 1,\n\t\t\tSTAKE_DELEGATION: 2,\n\t\t\tSTAKE_POOL_REGISTRATION: 3\n\t\t}\n\t},\n\tCardanoPoolRelayType: {\n\t\tvalues: {\n\t\t\tSINGLE_HOST_IP: 0,\n\t\t\tSINGLE_HOST_NAME: 1,\n\t\t\tMULTIPLE_HOST_NAME: 2\n\t\t}\n\t},\n\tCardanoTxAuxiliaryDataSupplementType: {\n\t\tvalues: {\n\t\t\tNONE: 0,\n\t\t\tCATALYST_REGISTRATION_SIGNATURE: 1\n\t\t}\n\t},\n\tCardanoTxSigningMode: {\n\t\tvalues: {\n\t\t\tORDINARY_TRANSACTION: 0,\n\t\t\tPOOL_REGISTRATION_AS_OWNER: 1,\n\t\t\tMULTISIG_TRANSACTION: 2\n\t\t}\n\t},\n\tCardanoTxWitnessType: {\n\t\tvalues: {\n\t\t\tBYRON_WITNESS: 0,\n\t\t\tSHELLEY_WITNESS: 1\n\t\t}\n\t},\n\tCardanoBlockchainPointerType: {\n\t\tfields: {\n\t\t\tblock_index: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 1\n\t\t\t},\n\t\t\ttx_index: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 2\n\t\t\t},\n\t\t\tcertificate_index: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 3\n\t\t\t}\n\t\t}\n\t},\n\tCardanoNativeScript: {\n\t\tfields: {\n\t\t\ttype: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"CardanoNativeScriptType\",\n\t\t\t\tid: 1\n\t\t\t},\n\t\t\tscripts: {\n\t\t\t\trule: \"repeated\",\n\t\t\t\ttype: \"CardanoNativeScript\",\n\t\t\t\tid: 2\n\t\t\t},\n\t\t\tkey_hash: {\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 3\n\t\t\t},\n\t\t\tkey_path: {\n\t\t\t\trule: \"repeated\",\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 4,\n\t\t\t\toptions: {\n\t\t\t\t\tpacked: false\n\t\t\t\t}\n\t\t\t},\n\t\t\trequired_signatures_count: {\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 5\n\t\t\t},\n\t\t\tinvalid_before: {\n\t\t\t\ttype: \"uint64\",\n\t\t\t\tid: 6\n\t\t\t},\n\t\t\tinvalid_hereafter: {\n\t\t\t\ttype: \"uint64\",\n\t\t\t\tid: 7\n\t\t\t}\n\t\t}\n\t},\n\tCardanoGetNativeScriptHash: {\n\t\tfields: {\n\t\t\tscript: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"CardanoNativeScript\",\n\t\t\t\tid: 1\n\t\t\t},\n\t\t\tdisplay_format: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"CardanoNativeScriptHashDisplayFormat\",\n\t\t\t\tid: 2\n\t\t\t},\n\t\t\tderivation_type: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"CardanoDerivationType\",\n\t\t\t\tid: 3\n\t\t\t}\n\t\t}\n\t},\n\tCardanoNativeScriptHash: {\n\t\tfields: {\n\t\t\tscript_hash: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 1\n\t\t\t}\n\t\t}\n\t},\n\tCardanoAddressParametersType: {\n\t\tfields: {\n\t\t\taddress_type: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"CardanoAddressType\",\n\t\t\t\tid: 1\n\t\t\t},\n\t\t\taddress_n: {\n\t\t\t\trule: \"repeated\",\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 2,\n\t\t\t\toptions: {\n\t\t\t\t\tpacked: false\n\t\t\t\t}\n\t\t\t},\n\t\t\taddress_n_staking: {\n\t\t\t\trule: \"repeated\",\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 3,\n\t\t\t\toptions: {\n\t\t\t\t\tpacked: false\n\t\t\t\t}\n\t\t\t},\n\t\t\tstaking_key_hash: {\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 4\n\t\t\t},\n\t\t\tcertificate_pointer: {\n\t\t\t\ttype: \"CardanoBlockchainPointerType\",\n\t\t\t\tid: 5\n\t\t\t},\n\t\t\tscript_payment_hash: {\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 6\n\t\t\t},\n\t\t\tscript_staking_hash: {\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 7\n\t\t\t}\n\t\t}\n\t},\n\tCardanoGetAddress: {\n\t\tfields: {\n\t\t\tshow_display: {\n\t\t\t\ttype: \"bool\",\n\t\t\t\tid: 2,\n\t\t\t\toptions: {\n\t\t\t\t\t\"default\": false\n\t\t\t\t}\n\t\t\t},\n\t\t\tprotocol_magic: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 3\n\t\t\t},\n\t\t\tnetwork_id: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 4\n\t\t\t},\n\t\t\taddress_parameters: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"CardanoAddressParametersType\",\n\t\t\t\tid: 5\n\t\t\t},\n\t\t\tderivation_type: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"CardanoDerivationType\",\n\t\t\t\tid: 6\n\t\t\t}\n\t\t}\n\t},\n\tCardanoAddress: {\n\t\tfields: {\n\t\t\taddress: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"string\",\n\t\t\t\tid: 1\n\t\t\t}\n\t\t}\n\t},\n\tCardanoGetPublicKey: {\n\t\tfields: {\n\t\t\taddress_n: {\n\t\t\t\trule: \"repeated\",\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 1,\n\t\t\t\toptions: {\n\t\t\t\t\tpacked: false\n\t\t\t\t}\n\t\t\t},\n\t\t\tshow_display: {\n\t\t\t\ttype: \"bool\",\n\t\t\t\tid: 2\n\t\t\t},\n\t\t\tderivation_type: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"CardanoDerivationType\",\n\t\t\t\tid: 3\n\t\t\t}\n\t\t}\n\t},\n\tCardanoPublicKey: {\n\t\tfields: {\n\t\t\txpub: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"string\",\n\t\t\t\tid: 1\n\t\t\t},\n\t\t\tnode: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"HDNodeType\",\n\t\t\t\tid: 2\n\t\t\t}\n\t\t}\n\t},\n\tCardanoSignTxInit: {\n\t\tfields: {\n\t\t\tsigning_mode: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"CardanoTxSigningMode\",\n\t\t\t\tid: 1\n\t\t\t},\n\t\t\tprotocol_magic: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 2\n\t\t\t},\n\t\t\tnetwork_id: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 3\n\t\t\t},\n\t\t\tinputs_count: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 4\n\t\t\t},\n\t\t\toutputs_count: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 5\n\t\t\t},\n\t\t\tfee: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"uint64\",\n\t\t\t\tid: 6\n\t\t\t},\n\t\t\tttl: {\n\t\t\t\ttype: \"uint64\",\n\t\t\t\tid: 7\n\t\t\t},\n\t\t\tcertificates_count: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 8\n\t\t\t},\n\t\t\twithdrawals_count: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 9\n\t\t\t},\n\t\t\thas_auxiliary_data: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"bool\",\n\t\t\t\tid: 10\n\t\t\t},\n\t\t\tvalidity_interval_start: {\n\t\t\t\ttype: \"uint64\",\n\t\t\t\tid: 11\n\t\t\t},\n\t\t\twitness_requests_count: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 12\n\t\t\t},\n\t\t\tminting_asset_groups_count: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 13\n\t\t\t},\n\t\t\tderivation_type: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"CardanoDerivationType\",\n\t\t\t\tid: 14\n\t\t\t}\n\t\t}\n\t},\n\tCardanoTxInput: {\n\t\tfields: {\n\t\t\tprev_hash: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 1\n\t\t\t},\n\t\t\tprev_index: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 2\n\t\t\t}\n\t\t}\n\t},\n\tCardanoTxOutput: {\n\t\tfields: {\n\t\t\taddress: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tid: 1\n\t\t\t},\n\t\t\taddress_parameters: {\n\t\t\t\ttype: \"CardanoAddressParametersType\",\n\t\t\t\tid: 2\n\t\t\t},\n\t\t\tamount: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"uint64\",\n\t\t\t\tid: 3\n\t\t\t},\n\t\t\tasset_groups_count: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 4\n\t\t\t}\n\t\t}\n\t},\n\tCardanoAssetGroup: {\n\t\tfields: {\n\t\t\tpolicy_id: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 1\n\t\t\t},\n\t\t\ttokens_count: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 2\n\t\t\t}\n\t\t}\n\t},\n\tCardanoToken: {\n\t\tfields: {\n\t\t\tasset_name_bytes: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 1\n\t\t\t},\n\t\t\tamount: {\n\t\t\t\ttype: \"uint64\",\n\t\t\t\tid: 2\n\t\t\t},\n\t\t\tmint_amount: {\n\t\t\t\ttype: \"sint64\",\n\t\t\t\tid: 3\n\t\t\t}\n\t\t}\n\t},\n\tCardanoPoolOwner: {\n\t\tfields: {\n\t\t\tstaking_key_path: {\n\t\t\t\trule: \"repeated\",\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 1,\n\t\t\t\toptions: {\n\t\t\t\t\tpacked: false\n\t\t\t\t}\n\t\t\t},\n\t\t\tstaking_key_hash: {\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 2\n\t\t\t}\n\t\t}\n\t},\n\tCardanoPoolRelayParameters: {\n\t\tfields: {\n\t\t\ttype: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"CardanoPoolRelayType\",\n\t\t\t\tid: 1\n\t\t\t},\n\t\t\tipv4_address: {\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 2\n\t\t\t},\n\t\t\tipv6_address: {\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 3\n\t\t\t},\n\t\t\thost_name: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tid: 4\n\t\t\t},\n\t\t\tport: {\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 5\n\t\t\t}\n\t\t}\n\t},\n\tCardanoPoolMetadataType: {\n\t\tfields: {\n\t\t\turl: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"string\",\n\t\t\t\tid: 1\n\t\t\t},\n\t\t\thash: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 2\n\t\t\t}\n\t\t}\n\t},\n\tCardanoPoolParametersType: {\n\t\tfields: {\n\t\t\tpool_id: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 1\n\t\t\t},\n\t\t\tvrf_key_hash: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 2\n\t\t\t},\n\t\t\tpledge: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"uint64\",\n\t\t\t\tid: 3\n\t\t\t},\n\t\t\tcost: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"uint64\",\n\t\t\t\tid: 4\n\t\t\t},\n\t\t\tmargin_numerator: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"uint64\",\n\t\t\t\tid: 5\n\t\t\t},\n\t\t\tmargin_denominator: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"uint64\",\n\t\t\t\tid: 6\n\t\t\t},\n\t\t\treward_account: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"string\",\n\t\t\t\tid: 7\n\t\t\t},\n\t\t\towners: {\n\t\t\t\trule: \"repeated\",\n\t\t\t\ttype: \"CardanoPoolOwner\",\n\t\t\t\tid: 8,\n\t\t\t\toptions: {\n\t\t\t\t\tdeprecated: true\n\t\t\t\t}\n\t\t\t},\n\t\t\trelays: {\n\t\t\t\trule: \"repeated\",\n\t\t\t\ttype: \"CardanoPoolRelayParameters\",\n\t\t\t\tid: 9,\n\t\t\t\toptions: {\n\t\t\t\t\tdeprecated: true\n\t\t\t\t}\n\t\t\t},\n\t\t\tmetadata: {\n\t\t\t\ttype: \"CardanoPoolMetadataType\",\n\t\t\t\tid: 10\n\t\t\t},\n\t\t\towners_count: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 11\n\t\t\t},\n\t\t\trelays_count: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 12\n\t\t\t}\n\t\t}\n\t},\n\tCardanoTxCertificate: {\n\t\tfields: {\n\t\t\ttype: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"CardanoCertificateType\",\n\t\t\t\tid: 1\n\t\t\t},\n\t\t\tpath: {\n\t\t\t\trule: \"repeated\",\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 2,\n\t\t\t\toptions: {\n\t\t\t\t\tpacked: false\n\t\t\t\t}\n\t\t\t},\n\t\t\tpool: {\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 3\n\t\t\t},\n\t\t\tpool_parameters: {\n\t\t\t\ttype: \"CardanoPoolParametersType\",\n\t\t\t\tid: 4\n\t\t\t},\n\t\t\tscript_hash: {\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 5\n\t\t\t}\n\t\t}\n\t},\n\tCardanoTxWithdrawal: {\n\t\tfields: {\n\t\t\tpath: {\n\t\t\t\trule: \"repeated\",\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 1,\n\t\t\t\toptions: {\n\t\t\t\t\tpacked: false\n\t\t\t\t}\n\t\t\t},\n\t\t\tamount: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"uint64\",\n\t\t\t\tid: 2\n\t\t\t},\n\t\t\tscript_hash: {\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 3\n\t\t\t}\n\t\t}\n\t},\n\tCardanoCatalystRegistrationParametersType: {\n\t\tfields: {\n\t\t\tvoting_public_key: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 1\n\t\t\t},\n\t\t\tstaking_path: {\n\t\t\t\trule: \"repeated\",\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 2,\n\t\t\t\toptions: {\n\t\t\t\t\tpacked: false\n\t\t\t\t}\n\t\t\t},\n\t\t\treward_address_parameters: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"CardanoAddressParametersType\",\n\t\t\t\tid: 3\n\t\t\t},\n\t\t\tnonce: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"uint64\",\n\t\t\t\tid: 4\n\t\t\t}\n\t\t}\n\t},\n\tCardanoTxAuxiliaryData: {\n\t\tfields: {\n\t\t\tcatalyst_registration_parameters: {\n\t\t\t\ttype: \"CardanoCatalystRegistrationParametersType\",\n\t\t\t\tid: 1\n\t\t\t},\n\t\t\thash: {\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 2\n\t\t\t}\n\t\t}\n\t},\n\tCardanoTxMint: {\n\t\tfields: {\n\t\t\tasset_groups_count: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 1\n\t\t\t}\n\t\t}\n\t},\n\tCardanoTxItemAck: {\n\t\tfields: {\n\t\t}\n\t},\n\tCardanoTxAuxiliaryDataSupplement: {\n\t\tfields: {\n\t\t\ttype: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"CardanoTxAuxiliaryDataSupplementType\",\n\t\t\t\tid: 1\n\t\t\t},\n\t\t\tauxiliary_data_hash: {\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 2\n\t\t\t},\n\t\t\tcatalyst_signature: {\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 3\n\t\t\t}\n\t\t}\n\t},\n\tCardanoTxWitnessRequest: {\n\t\tfields: {\n\t\t\tpath: {\n\t\t\t\trule: \"repeated\",\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 1,\n\t\t\t\toptions: {\n\t\t\t\t\tpacked: false\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\tCardanoTxWitnessResponse: {\n\t\tfields: {\n\t\t\ttype: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"CardanoTxWitnessType\",\n\t\t\t\tid: 1\n\t\t\t},\n\t\t\tpub_key: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 2\n\t\t\t},\n\t\t\tsignature: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 3\n\t\t\t},\n\t\t\tchain_code: {\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 4\n\t\t\t}\n\t\t}\n\t},\n\tCardanoTxHostAck: {\n\t\tfields: {\n\t\t}\n\t},\n\tCardanoTxBodyHash: {\n\t\tfields: {\n\t\t\ttx_hash: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 1\n\t\t\t}\n\t\t}\n\t},\n\tCardanoSignTxFinished: {\n\t\tfields: {\n\t\t}\n\t},\n\tCardanoSignTx: {\n\t\toptions: {\n\t\t\tdeprecated: true\n\t\t},\n\t\tfields: {\n\t\t\tinputs: {\n\t\t\t\trule: \"repeated\",\n\t\t\t\ttype: \"CardanoTxInputType\",\n\t\t\t\tid: 1\n\t\t\t},\n\t\t\toutputs: {\n\t\t\t\trule: \"repeated\",\n\t\t\t\ttype: \"CardanoTxOutputType\",\n\t\t\t\tid: 2\n\t\t\t},\n\t\t\tprotocol_magic: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 5\n\t\t\t},\n\t\t\tfee: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"uint64\",\n\t\t\t\tid: 6\n\t\t\t},\n\t\t\tttl: {\n\t\t\t\ttype: \"uint64\",\n\t\t\t\tid: 7\n\t\t\t},\n\t\t\tnetwork_id: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 8\n\t\t\t},\n\t\t\tcertificates: {\n\t\t\t\trule: \"repeated\",\n\t\t\t\ttype: \"CardanoTxCertificateType\",\n\t\t\t\tid: 9\n\t\t\t},\n\t\t\twithdrawals: {\n\t\t\t\trule: \"repeated\",\n\t\t\t\ttype: \"CardanoTxWithdrawalType\",\n\t\t\t\tid: 10\n\t\t\t},\n\t\t\tvalidity_interval_start: {\n\t\t\t\ttype: \"uint64\",\n\t\t\t\tid: 12\n\t\t\t},\n\t\t\tauxiliary_data: {\n\t\t\t\ttype: \"CardanoTxAuxiliaryDataType\",\n\t\t\t\tid: 13\n\t\t\t}\n\t\t},\n\t\tnested: {\n\t\t\tCardanoTxInputType: {\n\t\t\t\tfields: {\n\t\t\t\t\taddress_n: {\n\t\t\t\t\t\trule: \"repeated\",\n\t\t\t\t\t\ttype: \"uint32\",\n\t\t\t\t\t\tid: 1,\n\t\t\t\t\t\toptions: {\n\t\t\t\t\t\t\tpacked: false\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\tprev_hash: {\n\t\t\t\t\t\trule: \"required\",\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t\tid: 2\n\t\t\t\t\t},\n\t\t\t\t\tprev_index: {\n\t\t\t\t\t\trule: \"required\",\n\t\t\t\t\t\ttype: \"uint32\",\n\t\t\t\t\t\tid: 3\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\tCardanoTxOutputType: {\n\t\t\t\tfields: {\n\t\t\t\t\taddress: {\n\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\tid: 1\n\t\t\t\t\t},\n\t\t\t\t\tamount: {\n\t\t\t\t\t\trule: \"required\",\n\t\t\t\t\t\ttype: \"uint64\",\n\t\t\t\t\t\tid: 3\n\t\t\t\t\t},\n\t\t\t\t\taddress_parameters: {\n\t\t\t\t\t\ttype: \"CardanoAddressParametersType\",\n\t\t\t\t\t\tid: 4\n\t\t\t\t\t},\n\t\t\t\t\ttoken_bundle: {\n\t\t\t\t\t\trule: \"repeated\",\n\t\t\t\t\t\ttype: \"CardanoAssetGroupType\",\n\t\t\t\t\t\tid: 5\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\tCardanoAssetGroupType: {\n\t\t\t\tfields: {\n\t\t\t\t\tpolicy_id: {\n\t\t\t\t\t\trule: \"required\",\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t\tid: 1\n\t\t\t\t\t},\n\t\t\t\t\ttokens: {\n\t\t\t\t\t\trule: \"repeated\",\n\t\t\t\t\t\ttype: \"CardanoTokenType\",\n\t\t\t\t\t\tid: 2\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\tCardanoTokenType: {\n\t\t\t\tfields: {\n\t\t\t\t\tasset_name_bytes: {\n\t\t\t\t\t\trule: \"required\",\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t\tid: 1\n\t\t\t\t\t},\n\t\t\t\t\tamount: {\n\t\t\t\t\t\trule: \"required\",\n\t\t\t\t\t\ttype: \"uint64\",\n\t\t\t\t\t\tid: 2\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\tCardanoPoolOwnerType: {\n\t\t\t\tfields: {\n\t\t\t\t\tstaking_key_path: {\n\t\t\t\t\t\trule: \"repeated\",\n\t\t\t\t\t\ttype: \"uint32\",\n\t\t\t\t\t\tid: 1,\n\t\t\t\t\t\toptions: {\n\t\t\t\t\t\t\tpacked: false\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\tstaking_key_hash: {\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t\tid: 2\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\tCardanoPoolRelayParametersType: {\n\t\t\t\tfields: {\n\t\t\t\t\ttype: {\n\t\t\t\t\t\trule: \"required\",\n\t\t\t\t\t\ttype: \"CardanoPoolRelayType\",\n\t\t\t\t\t\tid: 1\n\t\t\t\t\t},\n\t\t\t\t\tipv4_address: {\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t\tid: 2\n\t\t\t\t\t},\n\t\t\t\t\tipv6_address: {\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t\tid: 3\n\t\t\t\t\t},\n\t\t\t\t\thost_name: {\n\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\tid: 4\n\t\t\t\t\t},\n\t\t\t\t\tport: {\n\t\t\t\t\t\ttype: \"uint32\",\n\t\t\t\t\t\tid: 5\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\tCardanoTxCertificateType: {\n\t\t\t\tfields: {\n\t\t\t\t\ttype: {\n\t\t\t\t\t\trule: \"required\",\n\t\t\t\t\t\ttype: \"CardanoCertificateType\",\n\t\t\t\t\t\tid: 1\n\t\t\t\t\t},\n\t\t\t\t\tpath: {\n\t\t\t\t\t\trule: \"repeated\",\n\t\t\t\t\t\ttype: \"uint32\",\n\t\t\t\t\t\tid: 2,\n\t\t\t\t\t\toptions: {\n\t\t\t\t\t\t\tpacked: false\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\tpool: {\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t\tid: 3\n\t\t\t\t\t},\n\t\t\t\t\tpool_parameters: {\n\t\t\t\t\t\ttype: \"CardanoPoolParametersType\",\n\t\t\t\t\t\tid: 4\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\tCardanoTxWithdrawalType: {\n\t\t\t\tfields: {\n\t\t\t\t\tpath: {\n\t\t\t\t\t\trule: \"repeated\",\n\t\t\t\t\t\ttype: \"uint32\",\n\t\t\t\t\t\tid: 1,\n\t\t\t\t\t\toptions: {\n\t\t\t\t\t\t\tpacked: false\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\tamount: {\n\t\t\t\t\t\trule: \"required\",\n\t\t\t\t\t\ttype: \"uint64\",\n\t\t\t\t\t\tid: 2\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\tCardanoTxAuxiliaryDataType: {\n\t\t\t\tfields: {\n\t\t\t\t\tblob: {\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t\tid: 1\n\t\t\t\t\t},\n\t\t\t\t\tcatalyst_registration_parameters: {\n\t\t\t\t\t\ttype: \"CardanoCatalystRegistrationParametersType\",\n\t\t\t\t\t\tid: 2\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\tCardanoSignedTxChunk: {\n\t\toptions: {\n\t\t\tdeprecated: true\n\t\t},\n\t\tfields: {\n\t\t\tsigned_tx_chunk: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 1\n\t\t\t}\n\t\t}\n\t},\n\tCardanoSignedTxChunkAck: {\n\t\toptions: {\n\t\t\tdeprecated: true\n\t\t},\n\t\tfields: {\n\t\t}\n\t},\n\tCardanoSignedTx: {\n\t\toptions: {\n\t\t\tdeprecated: true\n\t\t},\n\t\tfields: {\n\t\t\ttx_hash: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 1\n\t\t\t},\n\t\t\tserialized_tx: {\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 2\n\t\t\t}\n\t\t}\n\t},\n\tSuccess: {\n\t\tfields: {\n\t\t\tmessage: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tid: 1,\n\t\t\t\toptions: {\n\t\t\t\t\t\"default\": \"\"\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\tFailure: {\n\t\tfields: {\n\t\t\tcode: {\n\t\t\t\ttype: \"FailureType\",\n\t\t\t\tid: 1\n\t\t\t},\n\t\t\tmessage: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tid: 2\n\t\t\t}\n\t\t},\n\t\tnested: {\n\t\t\tFailureType: {\n\t\t\t\tvalues: {\n\t\t\t\t\tFailure_UnexpectedMessage: 1,\n\t\t\t\t\tFailure_ButtonExpected: 2,\n\t\t\t\t\tFailure_DataError: 3,\n\t\t\t\t\tFailure_ActionCancelled: 4,\n\t\t\t\t\tFailure_PinExpected: 5,\n\t\t\t\t\tFailure_PinCancelled: 6,\n\t\t\t\t\tFailure_PinInvalid: 7,\n\t\t\t\t\tFailure_InvalidSignature: 8,\n\t\t\t\t\tFailure_ProcessError: 9,\n\t\t\t\t\tFailure_NotEnoughFunds: 10,\n\t\t\t\t\tFailure_NotInitialized: 11,\n\t\t\t\t\tFailure_PinMismatch: 12,\n\t\t\t\t\tFailure_WipeCodeMismatch: 13,\n\t\t\t\t\tFailure_InvalidSession: 14,\n\t\t\t\t\tFailure_FirmwareError: 99\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\tButtonRequest: {\n\t\tfields: {\n\t\t\tcode: {\n\t\t\t\ttype: \"ButtonRequestType\",\n\t\t\t\tid: 1\n\t\t\t},\n\t\t\tpages: {\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 2\n\t\t\t}\n\t\t},\n\t\tnested: {\n\t\t\tButtonRequestType: {\n\t\t\t\tvalues: {\n\t\t\t\t\tButtonRequest_Other: 1,\n\t\t\t\t\tButtonRequest_FeeOverThreshold: 2,\n\t\t\t\t\tButtonRequest_ConfirmOutput: 3,\n\t\t\t\t\tButtonRequest_ResetDevice: 4,\n\t\t\t\t\tButtonRequest_ConfirmWord: 5,\n\t\t\t\t\tButtonRequest_WipeDevice: 6,\n\t\t\t\t\tButtonRequest_ProtectCall: 7,\n\t\t\t\t\tButtonRequest_SignTx: 8,\n\t\t\t\t\tButtonRequest_FirmwareCheck: 9,\n\t\t\t\t\tButtonRequest_Address: 10,\n\t\t\t\t\tButtonRequest_PublicKey: 11,\n\t\t\t\t\tButtonRequest_MnemonicWordCount: 12,\n\t\t\t\t\tButtonRequest_MnemonicInput: 13,\n\t\t\t\t\t_Deprecated_ButtonRequest_PassphraseType: 14,\n\t\t\t\t\tButtonRequest_UnknownDerivationPath: 15,\n\t\t\t\t\tButtonRequest_RecoveryHomepage: 16,\n\t\t\t\t\tButtonRequest_Success: 17,\n\t\t\t\t\tButtonRequest_Warning: 18,\n\t\t\t\t\tButtonRequest_PassphraseEntry: 19,\n\t\t\t\t\tButtonRequest_PinEntry: 20\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\tButtonAck: {\n\t\tfields: {\n\t\t}\n\t},\n\tPinMatrixRequest: {\n\t\tfields: {\n\t\t\ttype: {\n\t\t\t\ttype: \"PinMatrixRequestType\",\n\t\t\t\tid: 1\n\t\t\t}\n\t\t},\n\t\tnested: {\n\t\t\tPinMatrixRequestType: {\n\t\t\t\tvalues: {\n\t\t\t\t\tPinMatrixRequestType_Current: 1,\n\t\t\t\t\tPinMatrixRequestType_NewFirst: 2,\n\t\t\t\t\tPinMatrixRequestType_NewSecond: 3,\n\t\t\t\t\tPinMatrixRequestType_WipeCodeFirst: 4,\n\t\t\t\t\tPinMatrixRequestType_WipeCodeSecond: 5,\n\t\t\t\t\tPinMatrixRequestType_BackupFirst: 6,\n\t\t\t\t\tPinMatrixRequestType_BackupSecond: 7\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\tPinMatrixAck: {\n\t\tfields: {\n\t\t\tpin: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"string\",\n\t\t\t\tid: 1\n\t\t\t},\n\t\t\tnew_pin: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tid: 2\n\t\t\t}\n\t\t}\n\t},\n\tPassphraseRequest: {\n\t\tfields: {\n\t\t\t_on_device: {\n\t\t\t\ttype: \"bool\",\n\t\t\t\tid: 1,\n\t\t\t\toptions: {\n\t\t\t\t\tdeprecated: true\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\tPassphraseAck: {\n\t\tfields: {\n\t\t\tpassphrase: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tid: 1\n\t\t\t},\n\t\t\t_state: {\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 2,\n\t\t\t\toptions: {\n\t\t\t\t\tdeprecated: true\n\t\t\t\t}\n\t\t\t},\n\t\t\ton_device: {\n\t\t\t\ttype: \"bool\",\n\t\t\t\tid: 3\n\t\t\t}\n\t\t}\n\t},\n\tDeprecated_PassphraseStateRequest: {\n\t\toptions: {\n\t\t\tdeprecated: true\n\t\t},\n\t\tfields: {\n\t\t\tstate: {\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 1\n\t\t\t}\n\t\t}\n\t},\n\tDeprecated_PassphraseStateAck: {\n\t\toptions: {\n\t\t\tdeprecated: true\n\t\t},\n\t\tfields: {\n\t\t}\n\t},\n\tHDNodeType: {\n\t\tfields: {\n\t\t\tdepth: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 1\n\t\t\t},\n\t\t\tfingerprint: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 2\n\t\t\t},\n\t\t\tchild_num: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 3\n\t\t\t},\n\t\t\tchain_code: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 4\n\t\t\t},\n\t\t\tprivate_key: {\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 5\n\t\t\t},\n\t\t\tpublic_key: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 6\n\t\t\t}\n\t\t}\n\t},\n\tBixinPinInputOnDevice: {\n\t\tfields: {\n\t\t}\n\t},\n\tCipherKeyValue: {\n\t\tfields: {\n\t\t\taddress_n: {\n\t\t\t\trule: \"repeated\",\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 1,\n\t\t\t\toptions: {\n\t\t\t\t\tpacked: false\n\t\t\t\t}\n\t\t\t},\n\t\t\tkey: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"string\",\n\t\t\t\tid: 2\n\t\t\t},\n\t\t\tvalue: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 3\n\t\t\t},\n\t\t\tencrypt: {\n\t\t\t\ttype: \"bool\",\n\t\t\t\tid: 4\n\t\t\t},\n\t\t\task_on_encrypt: {\n\t\t\t\ttype: \"bool\",\n\t\t\t\tid: 5\n\t\t\t},\n\t\t\task_on_decrypt: {\n\t\t\t\ttype: \"bool\",\n\t\t\t\tid: 6\n\t\t\t},\n\t\t\tiv: {\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 7\n\t\t\t}\n\t\t}\n\t},\n\tCipheredKeyValue: {\n\t\tfields: {\n\t\t\tvalue: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 1\n\t\t\t}\n\t\t}\n\t},\n\tIdentityType: {\n\t\tfields: {\n\t\t\tproto: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tid: 1\n\t\t\t},\n\t\t\tuser: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tid: 2\n\t\t\t},\n\t\t\thost: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tid: 3\n\t\t\t},\n\t\t\tport: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tid: 4\n\t\t\t},\n\t\t\tpath: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tid: 5\n\t\t\t},\n\t\t\tindex: {\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 6,\n\t\t\t\toptions: {\n\t\t\t\t\t\"default\": 0\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\tSignIdentity: {\n\t\tfields: {\n\t\t\tidentity: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"IdentityType\",\n\t\t\t\tid: 1\n\t\t\t},\n\t\t\tchallenge_hidden: {\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 2,\n\t\t\t\toptions: {\n\t\t\t\t\t\"default\": \"\"\n\t\t\t\t}\n\t\t\t},\n\t\t\tchallenge_visual: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tid: 3,\n\t\t\t\toptions: {\n\t\t\t\t\t\"default\": \"\"\n\t\t\t\t}\n\t\t\t},\n\t\t\tecdsa_curve_name: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tid: 4\n\t\t\t}\n\t\t}\n\t},\n\tSignedIdentity: {\n\t\tfields: {\n\t\t\taddress: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tid: 1\n\t\t\t},\n\t\t\tpublic_key: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 2\n\t\t\t},\n\t\t\tsignature: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 3\n\t\t\t}\n\t\t}\n\t},\n\tGetECDHSessionKey: {\n\t\tfields: {\n\t\t\tidentity: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"IdentityType\",\n\t\t\t\tid: 1\n\t\t\t},\n\t\t\tpeer_public_key: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 2\n\t\t\t},\n\t\t\tecdsa_curve_name: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tid: 3\n\t\t\t}\n\t\t}\n\t},\n\tECDHSessionKey: {\n\t\tfields: {\n\t\t\tsession_key: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 1\n\t\t\t},\n\t\t\tpublic_key: {\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 2\n\t\t\t}\n\t\t}\n\t},\n\tCosiCommit: {\n\t\tfields: {\n\t\t\taddress_n: {\n\t\t\t\trule: \"repeated\",\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 1,\n\t\t\t\toptions: {\n\t\t\t\t\tpacked: false\n\t\t\t\t}\n\t\t\t},\n\t\t\tdata: {\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 2\n\t\t\t}\n\t\t}\n\t},\n\tCosiCommitment: {\n\t\tfields: {\n\t\t\tcommitment: {\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 1\n\t\t\t},\n\t\t\tpubkey: {\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 2\n\t\t\t}\n\t\t}\n\t},\n\tCosiSign: {\n\t\tfields: {\n\t\t\taddress_n: {\n\t\t\t\trule: \"repeated\",\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 1,\n\t\t\t\toptions: {\n\t\t\t\t\tpacked: false\n\t\t\t\t}\n\t\t\t},\n\t\t\tdata: {\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 2\n\t\t\t},\n\t\t\tglobal_commitment: {\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 3\n\t\t\t},\n\t\t\tglobal_pubkey: {\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 4\n\t\t\t}\n\t\t}\n\t},\n\tCosiSignature: {\n\t\tfields: {\n\t\t\tsignature: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 1\n\t\t\t}\n\t\t}\n\t},\n\tDebugLinkDecision: {\n\t\tfields: {\n\t\t\tyes_no: {\n\t\t\t\ttype: \"bool\",\n\t\t\t\tid: 1\n\t\t\t},\n\t\t\tswipe: {\n\t\t\t\ttype: \"DebugSwipeDirection\",\n\t\t\t\tid: 2\n\t\t\t},\n\t\t\tinput: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tid: 3\n\t\t\t},\n\t\t\tx: {\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 4\n\t\t\t},\n\t\t\ty: {\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 5\n\t\t\t},\n\t\t\twait: {\n\t\t\t\ttype: \"bool\",\n\t\t\t\tid: 6\n\t\t\t},\n\t\t\thold_ms: {\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 7\n\t\t\t}\n\t\t},\n\t\tnested: {\n\t\t\tDebugSwipeDirection: {\n\t\t\t\tvalues: {\n\t\t\t\t\tUP: 0,\n\t\t\t\t\tDOWN: 1,\n\t\t\t\t\tLEFT: 2,\n\t\t\t\t\tRIGHT: 3\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\tDebugLinkLayout: {\n\t\tfields: {\n\t\t\tlines: {\n\t\t\t\trule: \"repeated\",\n\t\t\t\ttype: \"string\",\n\t\t\t\tid: 1\n\t\t\t}\n\t\t}\n\t},\n\tDebugLinkReseedRandom: {\n\t\tfields: {\n\t\t\tvalue: {\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 1\n\t\t\t}\n\t\t}\n\t},\n\tDebugLinkRecordScreen: {\n\t\tfields: {\n\t\t\ttarget_directory: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tid: 1\n\t\t\t}\n\t\t}\n\t},\n\tDebugLinkGetState: {\n\t\tfields: {\n\t\t\twait_word_list: {\n\t\t\t\ttype: \"bool\",\n\t\t\t\tid: 1\n\t\t\t},\n\t\t\twait_word_pos: {\n\t\t\t\ttype: \"bool\",\n\t\t\t\tid: 2\n\t\t\t},\n\t\t\twait_layout: {\n\t\t\t\ttype: \"bool\",\n\t\t\t\tid: 3\n\t\t\t}\n\t\t}\n\t},\n\tDebugLinkState: {\n\t\tfields: {\n\t\t\tlayout: {\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 1\n\t\t\t},\n\t\t\tpin: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tid: 2\n\t\t\t},\n\t\t\tmatrix: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tid: 3\n\t\t\t},\n\t\t\tmnemonic_secret: {\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 4\n\t\t\t},\n\t\t\tnode: {\n\t\t\t\ttype: \"HDNodeType\",\n\t\t\t\tid: 5\n\t\t\t},\n\t\t\tpassphrase_protection: {\n\t\t\t\ttype: \"bool\",\n\t\t\t\tid: 6\n\t\t\t},\n\t\t\treset_word: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tid: 7\n\t\t\t},\n\t\t\treset_entropy: {\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 8\n\t\t\t},\n\t\t\trecovery_fake_word: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tid: 9\n\t\t\t},\n\t\t\trecovery_word_pos: {\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 10\n\t\t\t},\n\t\t\treset_word_pos: {\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 11\n\t\t\t},\n\t\t\tmnemonic_type: {\n\t\t\t\ttype: \"BackupType\",\n\t\t\t\tid: 12\n\t\t\t},\n\t\t\tlayout_lines: {\n\t\t\t\trule: \"repeated\",\n\t\t\t\ttype: \"string\",\n\t\t\t\tid: 13\n\t\t\t}\n\t\t}\n\t},\n\tDebugLinkStop: {\n\t\tfields: {\n\t\t}\n\t},\n\tDebugLinkLog: {\n\t\tfields: {\n\t\t\tlevel: {\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 1\n\t\t\t},\n\t\t\tbucket: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tid: 2\n\t\t\t},\n\t\t\ttext: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tid: 3\n\t\t\t}\n\t\t}\n\t},\n\tDebugLinkMemoryRead: {\n\t\tfields: {\n\t\t\taddress: {\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 1\n\t\t\t},\n\t\t\tlength: {\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 2\n\t\t\t}\n\t\t}\n\t},\n\tDebugLinkMemory: {\n\t\tfields: {\n\t\t\tmemory: {\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 1\n\t\t\t}\n\t\t}\n\t},\n\tDebugLinkMemoryWrite: {\n\t\tfields: {\n\t\t\taddress: {\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 1\n\t\t\t},\n\t\t\tmemory: {\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 2\n\t\t\t},\n\t\t\tflash: {\n\t\t\t\ttype: \"bool\",\n\t\t\t\tid: 3\n\t\t\t}\n\t\t}\n\t},\n\tDebugLinkFlashErase: {\n\t\tfields: {\n\t\t\tsector: {\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 1\n\t\t\t}\n\t\t}\n\t},\n\tDebugLinkEraseSdCard: {\n\t\tfields: {\n\t\t\tformat: {\n\t\t\t\ttype: \"bool\",\n\t\t\t\tid: 1\n\t\t\t}\n\t\t}\n\t},\n\tDebugLinkWatchLayout: {\n\t\tfields: {\n\t\t\twatch: {\n\t\t\t\ttype: \"bool\",\n\t\t\t\tid: 1\n\t\t\t}\n\t\t}\n\t},\n\tEosGetPublicKey: {\n\t\tfields: {\n\t\t\taddress_n: {\n\t\t\t\trule: \"repeated\",\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 1,\n\t\t\t\toptions: {\n\t\t\t\t\tpacked: false\n\t\t\t\t}\n\t\t\t},\n\t\t\tshow_display: {\n\t\t\t\ttype: \"bool\",\n\t\t\t\tid: 2\n\t\t\t}\n\t\t}\n\t},\n\tEosPublicKey: {\n\t\tfields: {\n\t\t\twif_public_key: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"string\",\n\t\t\t\tid: 1\n\t\t\t},\n\t\t\traw_public_key: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 2\n\t\t\t}\n\t\t}\n\t},\n\tEosSignTx: {\n\t\tfields: {\n\t\t\taddress_n: {\n\t\t\t\trule: \"repeated\",\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 1,\n\t\t\t\toptions: {\n\t\t\t\t\tpacked: false\n\t\t\t\t}\n\t\t\t},\n\t\t\tchain_id: {\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 2\n\t\t\t},\n\t\t\theader: {\n\t\t\t\ttype: \"EosTxHeader\",\n\t\t\t\tid: 3\n\t\t\t},\n\t\t\tnum_actions: {\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 4\n\t\t\t}\n\t\t},\n\t\tnested: {\n\t\t\tEosTxHeader: {\n\t\t\t\tfields: {\n\t\t\t\t\texpiration: {\n\t\t\t\t\t\trule: \"required\",\n\t\t\t\t\t\ttype: \"uint32\",\n\t\t\t\t\t\tid: 1\n\t\t\t\t\t},\n\t\t\t\t\tref_block_num: {\n\t\t\t\t\t\trule: \"required\",\n\t\t\t\t\t\ttype: \"uint32\",\n\t\t\t\t\t\tid: 2\n\t\t\t\t\t},\n\t\t\t\t\tref_block_prefix: {\n\t\t\t\t\t\trule: \"required\",\n\t\t\t\t\t\ttype: \"uint32\",\n\t\t\t\t\t\tid: 3\n\t\t\t\t\t},\n\t\t\t\t\tmax_net_usage_words: {\n\t\t\t\t\t\trule: \"required\",\n\t\t\t\t\t\ttype: \"uint32\",\n\t\t\t\t\t\tid: 4\n\t\t\t\t\t},\n\t\t\t\t\tmax_cpu_usage_ms: {\n\t\t\t\t\t\trule: \"required\",\n\t\t\t\t\t\ttype: \"uint32\",\n\t\t\t\t\t\tid: 5\n\t\t\t\t\t},\n\t\t\t\t\tdelay_sec: {\n\t\t\t\t\t\trule: \"required\",\n\t\t\t\t\t\ttype: \"uint32\",\n\t\t\t\t\t\tid: 6\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\tEosTxActionRequest: {\n\t\tfields: {\n\t\t\tdata_size: {\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 1\n\t\t\t}\n\t\t}\n\t},\n\tEosTxActionAck: {\n\t\tfields: {\n\t\t\tcommon: {\n\t\t\t\ttype: \"EosActionCommon\",\n\t\t\t\tid: 1\n\t\t\t},\n\t\t\ttransfer: {\n\t\t\t\ttype: \"EosActionTransfer\",\n\t\t\t\tid: 2\n\t\t\t},\n\t\t\tdelegate: {\n\t\t\t\ttype: \"EosActionDelegate\",\n\t\t\t\tid: 3\n\t\t\t},\n\t\t\tundelegate: {\n\t\t\t\ttype: \"EosActionUndelegate\",\n\t\t\t\tid: 4\n\t\t\t},\n\t\t\trefund: {\n\t\t\t\ttype: \"EosActionRefund\",\n\t\t\t\tid: 5\n\t\t\t},\n\t\t\tbuy_ram: {\n\t\t\t\ttype: \"EosActionBuyRam\",\n\t\t\t\tid: 6\n\t\t\t},\n\t\t\tbuy_ram_bytes: {\n\t\t\t\ttype: \"EosActionBuyRamBytes\",\n\t\t\t\tid: 7\n\t\t\t},\n\t\t\tsell_ram: {\n\t\t\t\ttype: \"EosActionSellRam\",\n\t\t\t\tid: 8\n\t\t\t},\n\t\t\tvote_producer: {\n\t\t\t\ttype: \"EosActionVoteProducer\",\n\t\t\t\tid: 9\n\t\t\t},\n\t\t\tupdate_auth: {\n\t\t\t\ttype: \"EosActionUpdateAuth\",\n\t\t\t\tid: 10\n\t\t\t},\n\t\t\tdelete_auth: {\n\t\t\t\ttype: \"EosActionDeleteAuth\",\n\t\t\t\tid: 11\n\t\t\t},\n\t\t\tlink_auth: {\n\t\t\t\ttype: \"EosActionLinkAuth\",\n\t\t\t\tid: 12\n\t\t\t},\n\t\t\tunlink_auth: {\n\t\t\t\ttype: \"EosActionUnlinkAuth\",\n\t\t\t\tid: 13\n\t\t\t},\n\t\t\tnew_account: {\n\t\t\t\ttype: \"EosActionNewAccount\",\n\t\t\t\tid: 14\n\t\t\t},\n\t\t\tunknown: {\n\t\t\t\ttype: \"EosActionUnknown\",\n\t\t\t\tid: 15\n\t\t\t}\n\t\t},\n\t\tnested: {\n\t\t\tEosAsset: {\n\t\t\t\tfields: {\n\t\t\t\t\tamount: {\n\t\t\t\t\t\ttype: \"sint64\",\n\t\t\t\t\t\tid: 1\n\t\t\t\t\t},\n\t\t\t\t\tsymbol: {\n\t\t\t\t\t\ttype: \"uint64\",\n\t\t\t\t\t\tid: 2\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\tEosPermissionLevel: {\n\t\t\t\tfields: {\n\t\t\t\t\tactor: {\n\t\t\t\t\t\ttype: \"uint64\",\n\t\t\t\t\t\tid: 1\n\t\t\t\t\t},\n\t\t\t\t\tpermission: {\n\t\t\t\t\t\ttype: \"uint64\",\n\t\t\t\t\t\tid: 2\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\tEosAuthorizationKey: {\n\t\t\t\tfields: {\n\t\t\t\t\ttype: {\n\t\t\t\t\t\trule: \"required\",\n\t\t\t\t\t\ttype: \"uint32\",\n\t\t\t\t\t\tid: 1\n\t\t\t\t\t},\n\t\t\t\t\tkey: {\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t\tid: 2\n\t\t\t\t\t},\n\t\t\t\t\taddress_n: {\n\t\t\t\t\t\trule: \"repeated\",\n\t\t\t\t\t\ttype: \"uint32\",\n\t\t\t\t\t\tid: 3,\n\t\t\t\t\t\toptions: {\n\t\t\t\t\t\t\tpacked: false\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\tweight: {\n\t\t\t\t\t\trule: \"required\",\n\t\t\t\t\t\ttype: \"uint32\",\n\t\t\t\t\t\tid: 4\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\tEosAuthorizationAccount: {\n\t\t\t\tfields: {\n\t\t\t\t\taccount: {\n\t\t\t\t\t\ttype: \"EosPermissionLevel\",\n\t\t\t\t\t\tid: 1\n\t\t\t\t\t},\n\t\t\t\t\tweight: {\n\t\t\t\t\t\ttype: \"uint32\",\n\t\t\t\t\t\tid: 2\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\tEosAuthorizationWait: {\n\t\t\t\tfields: {\n\t\t\t\t\twait_sec: {\n\t\t\t\t\t\ttype: \"uint32\",\n\t\t\t\t\t\tid: 1\n\t\t\t\t\t},\n\t\t\t\t\tweight: {\n\t\t\t\t\t\ttype: \"uint32\",\n\t\t\t\t\t\tid: 2\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\tEosAuthorization: {\n\t\t\t\tfields: {\n\t\t\t\t\tthreshold: {\n\t\t\t\t\t\ttype: \"uint32\",\n\t\t\t\t\t\tid: 1\n\t\t\t\t\t},\n\t\t\t\t\tkeys: {\n\t\t\t\t\t\trule: \"repeated\",\n\t\t\t\t\t\ttype: \"EosAuthorizationKey\",\n\t\t\t\t\t\tid: 2\n\t\t\t\t\t},\n\t\t\t\t\taccounts: {\n\t\t\t\t\t\trule: \"repeated\",\n\t\t\t\t\t\ttype: \"EosAuthorizationAccount\",\n\t\t\t\t\t\tid: 3\n\t\t\t\t\t},\n\t\t\t\t\twaits: {\n\t\t\t\t\t\trule: \"repeated\",\n\t\t\t\t\t\ttype: \"EosAuthorizationWait\",\n\t\t\t\t\t\tid: 4\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\tEosActionCommon: {\n\t\t\t\tfields: {\n\t\t\t\t\taccount: {\n\t\t\t\t\t\ttype: \"uint64\",\n\t\t\t\t\t\tid: 1\n\t\t\t\t\t},\n\t\t\t\t\tname: {\n\t\t\t\t\t\ttype: \"uint64\",\n\t\t\t\t\t\tid: 2\n\t\t\t\t\t},\n\t\t\t\t\tauthorization: {\n\t\t\t\t\t\trule: \"repeated\",\n\t\t\t\t\t\ttype: \"EosPermissionLevel\",\n\t\t\t\t\t\tid: 3\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\tEosActionTransfer: {\n\t\t\t\tfields: {\n\t\t\t\t\tsender: {\n\t\t\t\t\t\ttype: \"uint64\",\n\t\t\t\t\t\tid: 1\n\t\t\t\t\t},\n\t\t\t\t\treceiver: {\n\t\t\t\t\t\ttype: \"uint64\",\n\t\t\t\t\t\tid: 2\n\t\t\t\t\t},\n\t\t\t\t\tquantity: {\n\t\t\t\t\t\ttype: \"EosAsset\",\n\t\t\t\t\t\tid: 3\n\t\t\t\t\t},\n\t\t\t\t\tmemo: {\n\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\tid: 4\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\tEosActionDelegate: {\n\t\t\t\tfields: {\n\t\t\t\t\tsender: {\n\t\t\t\t\t\ttype: \"uint64\",\n\t\t\t\t\t\tid: 1\n\t\t\t\t\t},\n\t\t\t\t\treceiver: {\n\t\t\t\t\t\ttype: \"uint64\",\n\t\t\t\t\t\tid: 2\n\t\t\t\t\t},\n\t\t\t\t\tnet_quantity: {\n\t\t\t\t\t\ttype: \"EosAsset\",\n\t\t\t\t\t\tid: 3\n\t\t\t\t\t},\n\t\t\t\t\tcpu_quantity: {\n\t\t\t\t\t\ttype: \"EosAsset\",\n\t\t\t\t\t\tid: 4\n\t\t\t\t\t},\n\t\t\t\t\ttransfer: {\n\t\t\t\t\t\ttype: \"bool\",\n\t\t\t\t\t\tid: 5\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\tEosActionUndelegate: {\n\t\t\t\tfields: {\n\t\t\t\t\tsender: {\n\t\t\t\t\t\ttype: \"uint64\",\n\t\t\t\t\t\tid: 1\n\t\t\t\t\t},\n\t\t\t\t\treceiver: {\n\t\t\t\t\t\ttype: \"uint64\",\n\t\t\t\t\t\tid: 2\n\t\t\t\t\t},\n\t\t\t\t\tnet_quantity: {\n\t\t\t\t\t\ttype: \"EosAsset\",\n\t\t\t\t\t\tid: 3\n\t\t\t\t\t},\n\t\t\t\t\tcpu_quantity: {\n\t\t\t\t\t\ttype: \"EosAsset\",\n\t\t\t\t\t\tid: 4\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\tEosActionRefund: {\n\t\t\t\tfields: {\n\t\t\t\t\towner: {\n\t\t\t\t\t\ttype: \"uint64\",\n\t\t\t\t\t\tid: 1\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\tEosActionBuyRam: {\n\t\t\t\tfields: {\n\t\t\t\t\tpayer: {\n\t\t\t\t\t\ttype: \"uint64\",\n\t\t\t\t\t\tid: 1\n\t\t\t\t\t},\n\t\t\t\t\treceiver: {\n\t\t\t\t\t\ttype: \"uint64\",\n\t\t\t\t\t\tid: 2\n\t\t\t\t\t},\n\t\t\t\t\tquantity: {\n\t\t\t\t\t\ttype: \"EosAsset\",\n\t\t\t\t\t\tid: 3\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\tEosActionBuyRamBytes: {\n\t\t\t\tfields: {\n\t\t\t\t\tpayer: {\n\t\t\t\t\t\ttype: \"uint64\",\n\t\t\t\t\t\tid: 1\n\t\t\t\t\t},\n\t\t\t\t\treceiver: {\n\t\t\t\t\t\ttype: \"uint64\",\n\t\t\t\t\t\tid: 2\n\t\t\t\t\t},\n\t\t\t\t\tbytes: {\n\t\t\t\t\t\ttype: \"uint32\",\n\t\t\t\t\t\tid: 3\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\tEosActionSellRam: {\n\t\t\t\tfields: {\n\t\t\t\t\taccount: {\n\t\t\t\t\t\ttype: \"uint64\",\n\t\t\t\t\t\tid: 1\n\t\t\t\t\t},\n\t\t\t\t\tbytes: {\n\t\t\t\t\t\ttype: \"uint64\",\n\t\t\t\t\t\tid: 2\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\tEosActionVoteProducer: {\n\t\t\t\tfields: {\n\t\t\t\t\tvoter: {\n\t\t\t\t\t\ttype: \"uint64\",\n\t\t\t\t\t\tid: 1\n\t\t\t\t\t},\n\t\t\t\t\tproxy: {\n\t\t\t\t\t\ttype: \"uint64\",\n\t\t\t\t\t\tid: 2\n\t\t\t\t\t},\n\t\t\t\t\tproducers: {\n\t\t\t\t\t\trule: \"repeated\",\n\t\t\t\t\t\ttype: \"uint64\",\n\t\t\t\t\t\tid: 3,\n\t\t\t\t\t\toptions: {\n\t\t\t\t\t\t\tpacked: false\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\tEosActionUpdateAuth: {\n\t\t\t\tfields: {\n\t\t\t\t\taccount: {\n\t\t\t\t\t\ttype: \"uint64\",\n\t\t\t\t\t\tid: 1\n\t\t\t\t\t},\n\t\t\t\t\tpermission: {\n\t\t\t\t\t\ttype: \"uint64\",\n\t\t\t\t\t\tid: 2\n\t\t\t\t\t},\n\t\t\t\t\tparent: {\n\t\t\t\t\t\ttype: \"uint64\",\n\t\t\t\t\t\tid: 3\n\t\t\t\t\t},\n\t\t\t\t\tauth: {\n\t\t\t\t\t\ttype: \"EosAuthorization\",\n\t\t\t\t\t\tid: 4\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\tEosActionDeleteAuth: {\n\t\t\t\tfields: {\n\t\t\t\t\taccount: {\n\t\t\t\t\t\ttype: \"uint64\",\n\t\t\t\t\t\tid: 1\n\t\t\t\t\t},\n\t\t\t\t\tpermission: {\n\t\t\t\t\t\ttype: \"uint64\",\n\t\t\t\t\t\tid: 2\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\tEosActionLinkAuth: {\n\t\t\t\tfields: {\n\t\t\t\t\taccount: {\n\t\t\t\t\t\ttype: \"uint64\",\n\t\t\t\t\t\tid: 1\n\t\t\t\t\t},\n\t\t\t\t\tcode: {\n\t\t\t\t\t\ttype: \"uint64\",\n\t\t\t\t\t\tid: 2\n\t\t\t\t\t},\n\t\t\t\t\ttype: {\n\t\t\t\t\t\ttype: \"uint64\",\n\t\t\t\t\t\tid: 3\n\t\t\t\t\t},\n\t\t\t\t\trequirement: {\n\t\t\t\t\t\ttype: \"uint64\",\n\t\t\t\t\t\tid: 4\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\tEosActionUnlinkAuth: {\n\t\t\t\tfields: {\n\t\t\t\t\taccount: {\n\t\t\t\t\t\ttype: \"uint64\",\n\t\t\t\t\t\tid: 1\n\t\t\t\t\t},\n\t\t\t\t\tcode: {\n\t\t\t\t\t\ttype: \"uint64\",\n\t\t\t\t\t\tid: 2\n\t\t\t\t\t},\n\t\t\t\t\ttype: {\n\t\t\t\t\t\ttype: \"uint64\",\n\t\t\t\t\t\tid: 3\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\tEosActionNewAccount: {\n\t\t\t\tfields: {\n\t\t\t\t\tcreator: {\n\t\t\t\t\t\ttype: \"uint64\",\n\t\t\t\t\t\tid: 1\n\t\t\t\t\t},\n\t\t\t\t\tname: {\n\t\t\t\t\t\ttype: \"uint64\",\n\t\t\t\t\t\tid: 2\n\t\t\t\t\t},\n\t\t\t\t\towner: {\n\t\t\t\t\t\ttype: \"EosAuthorization\",\n\t\t\t\t\t\tid: 3\n\t\t\t\t\t},\n\t\t\t\t\tactive: {\n\t\t\t\t\t\ttype: \"EosAuthorization\",\n\t\t\t\t\t\tid: 4\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\tEosActionUnknown: {\n\t\t\t\tfields: {\n\t\t\t\t\tdata_size: {\n\t\t\t\t\t\trule: \"required\",\n\t\t\t\t\t\ttype: \"uint32\",\n\t\t\t\t\t\tid: 1\n\t\t\t\t\t},\n\t\t\t\t\tdata_chunk: {\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t\tid: 2\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\tEosSignedTx: {\n\t\tfields: {\n\t\t\tsignature: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"string\",\n\t\t\t\tid: 1\n\t\t\t}\n\t\t}\n\t},\n\tEthereumSignTypedData: {\n\t\tfields: {\n\t\t\taddress_n: {\n\t\t\t\trule: \"repeated\",\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 1,\n\t\t\t\toptions: {\n\t\t\t\t\tpacked: false\n\t\t\t\t}\n\t\t\t},\n\t\t\tprimary_type: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"string\",\n\t\t\t\tid: 2\n\t\t\t},\n\t\t\tmetamask_v4_compat: {\n\t\t\t\ttype: \"bool\",\n\t\t\t\tid: 3,\n\t\t\t\toptions: {\n\t\t\t\t\t\"default\": true\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\tEthereumTypedDataStructRequest: {\n\t\tfields: {\n\t\t\tname: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"string\",\n\t\t\t\tid: 1\n\t\t\t}\n\t\t}\n\t},\n\tEthereumTypedDataStructAck: {\n\t\tfields: {\n\t\t\tmembers: {\n\t\t\t\trule: \"repeated\",\n\t\t\t\ttype: \"EthereumStructMember\",\n\t\t\t\tid: 1\n\t\t\t}\n\t\t},\n\t\tnested: {\n\t\t\tEthereumStructMember: {\n\t\t\t\tfields: {\n\t\t\t\t\ttype: {\n\t\t\t\t\t\trule: \"required\",\n\t\t\t\t\t\ttype: \"EthereumFieldType\",\n\t\t\t\t\t\tid: 1\n\t\t\t\t\t},\n\t\t\t\t\tname: {\n\t\t\t\t\t\trule: \"required\",\n\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\tid: 2\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\tEthereumFieldType: {\n\t\t\t\tfields: {\n\t\t\t\t\tdata_type: {\n\t\t\t\t\t\trule: \"required\",\n\t\t\t\t\t\ttype: \"EthereumDataType\",\n\t\t\t\t\t\tid: 1\n\t\t\t\t\t},\n\t\t\t\t\tsize: {\n\t\t\t\t\t\ttype: \"uint32\",\n\t\t\t\t\t\tid: 2\n\t\t\t\t\t},\n\t\t\t\t\tentry_type: {\n\t\t\t\t\t\ttype: \"EthereumFieldType\",\n\t\t\t\t\t\tid: 3\n\t\t\t\t\t},\n\t\t\t\t\tstruct_name: {\n\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\tid: 4\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\tEthereumDataType: {\n\t\t\t\tvalues: {\n\t\t\t\t\tUINT: 1,\n\t\t\t\t\tINT: 2,\n\t\t\t\t\tBYTES: 3,\n\t\t\t\t\tSTRING: 4,\n\t\t\t\t\tBOOL: 5,\n\t\t\t\t\tADDRESS: 6,\n\t\t\t\t\tARRAY: 7,\n\t\t\t\t\tSTRUCT: 8\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\tEthereumTypedDataValueRequest: {\n\t\tfields: {\n\t\t\tmember_path: {\n\t\t\t\trule: \"repeated\",\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 1,\n\t\t\t\toptions: {\n\t\t\t\t\tpacked: false\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\tEthereumTypedDataValueAck: {\n\t\tfields: {\n\t\t\tvalue: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 1\n\t\t\t}\n\t\t}\n\t},\n\tEthereumGetPublicKey: {\n\t\tfields: {\n\t\t\taddress_n: {\n\t\t\t\trule: \"repeated\",\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 1,\n\t\t\t\toptions: {\n\t\t\t\t\tpacked: false\n\t\t\t\t}\n\t\t\t},\n\t\t\tshow_display: {\n\t\t\t\ttype: \"bool\",\n\t\t\t\tid: 2\n\t\t\t}\n\t\t}\n\t},\n\tEthereumPublicKey: {\n\t\tfields: {\n\t\t\tnode: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"HDNodeType\",\n\t\t\t\tid: 1\n\t\t\t},\n\t\t\txpub: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"string\",\n\t\t\t\tid: 2\n\t\t\t}\n\t\t}\n\t},\n\tEthereumGetAddress: {\n\t\tfields: {\n\t\t\taddress_n: {\n\t\t\t\trule: \"repeated\",\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 1,\n\t\t\t\toptions: {\n\t\t\t\t\tpacked: false\n\t\t\t\t}\n\t\t\t},\n\t\t\tshow_display: {\n\t\t\t\ttype: \"bool\",\n\t\t\t\tid: 2\n\t\t\t}\n\t\t}\n\t},\n\tEthereumAddress: {\n\t\tfields: {\n\t\t\t_old_address: {\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 1,\n\t\t\t\toptions: {\n\t\t\t\t\tdeprecated: true\n\t\t\t\t}\n\t\t\t},\n\t\t\taddress: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tid: 2\n\t\t\t}\n\t\t}\n\t},\n\tEthereumSignTx: {\n\t\tfields: {\n\t\t\taddress_n: {\n\t\t\t\trule: \"repeated\",\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 1,\n\t\t\t\toptions: {\n\t\t\t\t\tpacked: false\n\t\t\t\t}\n\t\t\t},\n\t\t\tnonce: {\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 2,\n\t\t\t\toptions: {\n\t\t\t\t\t\"default\": \"\"\n\t\t\t\t}\n\t\t\t},\n\t\t\tgas_price: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 3\n\t\t\t},\n\t\t\tgas_limit: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 4\n\t\t\t},\n\t\t\tto: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tid: 11,\n\t\t\t\toptions: {\n\t\t\t\t\t\"default\": \"\"\n\t\t\t\t}\n\t\t\t},\n\t\t\tvalue: {\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 6,\n\t\t\t\toptions: {\n\t\t\t\t\t\"default\": \"\"\n\t\t\t\t}\n\t\t\t},\n\t\t\tdata_initial_chunk: {\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 7,\n\t\t\t\toptions: {\n\t\t\t\t\t\"default\": \"\"\n\t\t\t\t}\n\t\t\t},\n\t\t\tdata_length: {\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 8,\n\t\t\t\toptions: {\n\t\t\t\t\t\"default\": 0\n\t\t\t\t}\n\t\t\t},\n\t\t\tchain_id: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"uint64\",\n\t\t\t\tid: 9\n\t\t\t},\n\t\t\ttx_type: {\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 10\n\t\t\t}\n\t\t}\n\t},\n\tEthereumSignTxEIP1559: {\n\t\tfields: {\n\t\t\taddress_n: {\n\t\t\t\trule: \"repeated\",\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 1,\n\t\t\t\toptions: {\n\t\t\t\t\tpacked: false\n\t\t\t\t}\n\t\t\t},\n\t\t\tnonce: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 2\n\t\t\t},\n\t\t\tmax_gas_fee: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 3\n\t\t\t},\n\t\t\tmax_priority_fee: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 4\n\t\t\t},\n\t\t\tgas_limit: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 5\n\t\t\t},\n\t\t\tto: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tid: 6,\n\t\t\t\toptions: {\n\t\t\t\t\t\"default\": \"\"\n\t\t\t\t}\n\t\t\t},\n\t\t\tvalue: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 7\n\t\t\t},\n\t\t\tdata_initial_chunk: {\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 8,\n\t\t\t\toptions: {\n\t\t\t\t\t\"default\": \"\"\n\t\t\t\t}\n\t\t\t},\n\t\t\tdata_length: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 9\n\t\t\t},\n\t\t\tchain_id: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"uint64\",\n\t\t\t\tid: 10\n\t\t\t},\n\t\t\taccess_list: {\n\t\t\t\trule: \"repeated\",\n\t\t\t\ttype: \"EthereumAccessList\",\n\t\t\t\tid: 11\n\t\t\t}\n\t\t},\n\t\tnested: {\n\t\t\tEthereumAccessList: {\n\t\t\t\tfields: {\n\t\t\t\t\taddress: {\n\t\t\t\t\t\trule: \"required\",\n\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\tid: 1\n\t\t\t\t\t},\n\t\t\t\t\tstorage_keys: {\n\t\t\t\t\t\trule: \"repeated\",\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t\tid: 2\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\tEthereumTxRequest: {\n\t\tfields: {\n\t\t\tdata_length: {\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 1\n\t\t\t},\n\t\t\tsignature_v: {\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 2\n\t\t\t},\n\t\t\tsignature_r: {\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 3\n\t\t\t},\n\t\t\tsignature_s: {\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 4\n\t\t\t}\n\t\t}\n\t},\n\tEthereumTxAck: {\n\t\tfields: {\n\t\t\tdata_chunk: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 1\n\t\t\t}\n\t\t}\n\t},\n\tEthereumSignMessage: {\n\t\tfields: {\n\t\t\taddress_n: {\n\t\t\t\trule: \"repeated\",\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 1,\n\t\t\t\toptions: {\n\t\t\t\t\tpacked: false\n\t\t\t\t}\n\t\t\t},\n\t\t\tmessage: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 2\n\t\t\t}\n\t\t}\n\t},\n\tEthereumMessageSignature: {\n\t\tfields: {\n\t\t\tsignature: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 2\n\t\t\t},\n\t\t\taddress: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"string\",\n\t\t\t\tid: 3\n\t\t\t}\n\t\t}\n\t},\n\tEthereumVerifyMessage: {\n\t\tfields: {\n\t\t\tsignature: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 2\n\t\t\t},\n\t\t\tmessage: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 3\n\t\t\t},\n\t\t\taddress: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"string\",\n\t\t\t\tid: 4\n\t\t\t}\n\t\t}\n\t},\n\tEthereumSignMessageEIP712: {\n\t\tfields: {\n\t\t\taddress_n: {\n\t\t\t\trule: \"repeated\",\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 1,\n\t\t\t\toptions: {\n\t\t\t\t\tpacked: false\n\t\t\t\t}\n\t\t\t},\n\t\t\tdomain_hash: {\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 2\n\t\t\t},\n\t\t\tmessage_hash: {\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 3\n\t\t\t}\n\t\t}\n\t},\n\tEthereumSignTypedHash: {\n\t\tfields: {\n\t\t\taddress_n: {\n\t\t\t\trule: \"repeated\",\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 1,\n\t\t\t\toptions: {\n\t\t\t\t\tpacked: false\n\t\t\t\t}\n\t\t\t},\n\t\t\tdomain_separator_hash: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 2\n\t\t\t},\n\t\t\tmessage_hash: {\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 3\n\t\t\t}\n\t\t}\n\t},\n\tEthereumTypedDataSignature: {\n\t\tfields: {\n\t\t\tsignature: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 1\n\t\t\t},\n\t\t\taddress: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"string\",\n\t\t\t\tid: 2\n\t\t\t}\n\t\t}\n\t},\n\tBackupType: {\n\t\tvalues: {\n\t\t\tBip39: 0,\n\t\t\tSlip39_Basic: 1,\n\t\t\tSlip39_Advanced: 2\n\t\t}\n\t},\n\tSafetyCheckLevel: {\n\t\tvalues: {\n\t\t\tStrict: 0,\n\t\t\tPromptAlways: 1,\n\t\t\tPromptTemporarily: 2\n\t\t}\n\t},\n\tInitialize: {\n\t\tfields: {\n\t\t\tsession_id: {\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 1\n\t\t\t},\n\t\t\t_skip_passphrase: {\n\t\t\t\ttype: \"bool\",\n\t\t\t\tid: 2,\n\t\t\t\toptions: {\n\t\t\t\t\tdeprecated: true\n\t\t\t\t}\n\t\t\t},\n\t\t\tderive_cardano: {\n\t\t\t\ttype: \"bool\",\n\t\t\t\tid: 3\n\t\t\t}\n\t\t}\n\t},\n\tGetFeatures: {\n\t\tfields: {\n\t\t}\n\t},\n\tFeatures: {\n\t\tfields: {\n\t\t\tvendor: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tid: 1\n\t\t\t},\n\t\t\tmajor_version: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 2\n\t\t\t},\n\t\t\tminor_version: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 3\n\t\t\t},\n\t\t\tpatch_version: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 4\n\t\t\t},\n\t\t\tbootloader_mode: {\n\t\t\t\ttype: \"bool\",\n\t\t\t\tid: 5\n\t\t\t},\n\t\t\tdevice_id: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tid: 6\n\t\t\t},\n\t\t\tpin_protection: {\n\t\t\t\ttype: \"bool\",\n\t\t\t\tid: 7\n\t\t\t},\n\t\t\tpassphrase_protection: {\n\t\t\t\ttype: \"bool\",\n\t\t\t\tid: 8\n\t\t\t},\n\t\t\tlanguage: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tid: 9\n\t\t\t},\n\t\t\tlabel: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tid: 10\n\t\t\t},\n\t\t\tinitialized: {\n\t\t\t\ttype: \"bool\",\n\t\t\t\tid: 12\n\t\t\t},\n\t\t\trevision: {\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 13\n\t\t\t},\n\t\t\tbootloader_hash: {\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 14\n\t\t\t},\n\t\t\timported: {\n\t\t\t\ttype: \"bool\",\n\t\t\t\tid: 15\n\t\t\t},\n\t\t\tunlocked: {\n\t\t\t\ttype: \"bool\",\n\t\t\t\tid: 16\n\t\t\t},\n\t\t\t_passphrase_cached: {\n\t\t\t\ttype: \"bool\",\n\t\t\t\tid: 17,\n\t\t\t\toptions: {\n\t\t\t\t\tdeprecated: true\n\t\t\t\t}\n\t\t\t},\n\t\t\tfirmware_present: {\n\t\t\t\ttype: \"bool\",\n\t\t\t\tid: 18\n\t\t\t},\n\t\t\tneeds_backup: {\n\t\t\t\ttype: \"bool\",\n\t\t\t\tid: 19\n\t\t\t},\n\t\t\tflags: {\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 20\n\t\t\t},\n\t\t\tmodel: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tid: 21\n\t\t\t},\n\t\t\tfw_major: {\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 22\n\t\t\t},\n\t\t\tfw_minor: {\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 23\n\t\t\t},\n\t\t\tfw_patch: {\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 24\n\t\t\t},\n\t\t\tfw_vendor: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tid: 25\n\t\t\t},\n\t\t\tfw_vendor_keys: {\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 26\n\t\t\t},\n\t\t\tunfinished_backup: {\n\t\t\t\ttype: \"bool\",\n\t\t\t\tid: 27\n\t\t\t},\n\t\t\tno_backup: {\n\t\t\t\ttype: \"bool\",\n\t\t\t\tid: 28\n\t\t\t},\n\t\t\trecovery_mode: {\n\t\t\t\ttype: \"bool\",\n\t\t\t\tid: 29\n\t\t\t},\n\t\t\tcapabilities: {\n\t\t\t\trule: \"repeated\",\n\t\t\t\ttype: \"Capability\",\n\t\t\t\tid: 30,\n\t\t\t\toptions: {\n\t\t\t\t\tpacked: false\n\t\t\t\t}\n\t\t\t},\n\t\t\tbackup_type: {\n\t\t\t\ttype: \"BackupType\",\n\t\t\t\tid: 31\n\t\t\t},\n\t\t\tsd_card_present: {\n\t\t\t\ttype: \"bool\",\n\t\t\t\tid: 32\n\t\t\t},\n\t\t\tsd_protection: {\n\t\t\t\ttype: \"bool\",\n\t\t\t\tid: 33\n\t\t\t},\n\t\t\twipe_code_protection: {\n\t\t\t\ttype: \"bool\",\n\t\t\t\tid: 34\n\t\t\t},\n\t\t\tsession_id: {\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 35\n\t\t\t},\n\t\t\tpassphrase_always_on_device: {\n\t\t\t\ttype: \"bool\",\n\t\t\t\tid: 36\n\t\t\t},\n\t\t\tsafety_checks: {\n\t\t\t\ttype: \"SafetyCheckLevel\",\n\t\t\t\tid: 37\n\t\t\t},\n\t\t\tauto_lock_delay_ms: {\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 38\n\t\t\t},\n\t\t\tdisplay_rotation: {\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 39\n\t\t\t},\n\t\t\texperimental_features: {\n\t\t\t\ttype: \"bool\",\n\t\t\t\tid: 40\n\t\t\t},\n\t\t\toffset: {\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 500\n\t\t\t},\n\t\t\tble_name: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tid: 501\n\t\t\t},\n\t\t\tble_ver: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tid: 502\n\t\t\t},\n\t\t\tble_enable: {\n\t\t\t\ttype: \"bool\",\n\t\t\t\tid: 503\n\t\t\t},\n\t\t\tse_enable: {\n\t\t\t\ttype: \"bool\",\n\t\t\t\tid: 504\n\t\t\t},\n\t\t\tse_ver: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tid: 506\n\t\t\t},\n\t\t\tbackup_only: {\n\t\t\t\ttype: \"bool\",\n\t\t\t\tid: 507\n\t\t\t},\n\t\t\tonekey_version: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tid: 508\n\t\t\t},\n\t\t\tonekey_serial: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tid: 509\n\t\t\t},\n\t\t\tbootloader_version: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tid: 510\n\t\t\t},\n\t\t\tserial_no: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tid: 511\n\t\t\t},\n\t\t\tspi_flash: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tid: 512\n\t\t\t},\n\t\t\tinitstates: {\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 513\n\t\t\t},\n\t\t\tNFT_voucher: {\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 514\n\t\t\t},\n\t\t\tcpu_info: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tid: 515\n\t\t\t},\n\t\t\tpre_firmware: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tid: 516\n\t\t\t},\n\t\t\tcoin_switch: {\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 517\n\t\t\t}\n\t\t},\n\t\tnested: {\n\t\t\tCapability: {\n\t\t\t\toptions: {\n\t\t\t\t\t\"(has_bitcoin_only_values)\": true\n\t\t\t\t},\n\t\t\t\tvalues: {\n\t\t\t\t\tCapability_Bitcoin: 1,\n\t\t\t\t\tCapability_Bitcoin_like: 2,\n\t\t\t\t\tCapability_Binance: 3,\n\t\t\t\t\tCapability_Cardano: 4,\n\t\t\t\t\tCapability_Crypto: 5,\n\t\t\t\t\tCapability_EOS: 6,\n\t\t\t\t\tCapability_Ethereum: 7,\n\t\t\t\t\tCapability_Lisk: 8,\n\t\t\t\t\tCapability_Monero: 9,\n\t\t\t\t\tCapability_NEM: 10,\n\t\t\t\t\tCapability_Ripple: 11,\n\t\t\t\t\tCapability_Stellar: 12,\n\t\t\t\t\tCapability_Tezos: 13,\n\t\t\t\t\tCapability_U2F: 14,\n\t\t\t\t\tCapability_Shamir: 15,\n\t\t\t\t\tCapability_ShamirGroups: 16,\n\t\t\t\t\tCapability_PassphraseEntry: 17\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\tLockDevice: {\n\t\tfields: {\n\t\t}\n\t},\n\tEndSession: {\n\t\tfields: {\n\t\t}\n\t},\n\tApplySettings: {\n\t\tfields: {\n\t\t\tlanguage: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tid: 1\n\t\t\t},\n\t\t\tlabel: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tid: 2\n\t\t\t},\n\t\t\tuse_passphrase: {\n\t\t\t\ttype: \"bool\",\n\t\t\t\tid: 3\n\t\t\t},\n\t\t\thomescreen: {\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 4\n\t\t\t},\n\t\t\t_passphrase_source: {\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 5,\n\t\t\t\toptions: {\n\t\t\t\t\tdeprecated: true\n\t\t\t\t}\n\t\t\t},\n\t\t\tauto_lock_delay_ms: {\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 6\n\t\t\t},\n\t\t\tdisplay_rotation: {\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 7\n\t\t\t},\n\t\t\tpassphrase_always_on_device: {\n\t\t\t\ttype: \"bool\",\n\t\t\t\tid: 8\n\t\t\t},\n\t\t\tsafety_checks: {\n\t\t\t\ttype: \"SafetyCheckLevel\",\n\t\t\t\tid: 9\n\t\t\t},\n\t\t\texperimental_features: {\n\t\t\t\ttype: \"bool\",\n\t\t\t\tid: 10\n\t\t\t},\n\t\t\tuse_ble: {\n\t\t\t\ttype: \"bool\",\n\t\t\t\tid: 100\n\t\t\t},\n\t\t\tuse_se: {\n\t\t\t\ttype: \"bool\",\n\t\t\t\tid: 101\n\t\t\t},\n\t\t\tis_bixinapp: {\n\t\t\t\ttype: \"bool\",\n\t\t\t\tid: 102\n\t\t\t},\n\t\t\tfastpay_pin: {\n\t\t\t\ttype: \"bool\",\n\t\t\t\tid: 103\n\t\t\t},\n\t\t\tfastpay_confirm: {\n\t\t\t\ttype: \"bool\",\n\t\t\t\tid: 104\n\t\t\t},\n\t\t\tfastpay_money_limit: {\n\t\t\t\ttype: \"uint64\",\n\t\t\t\tid: 105\n\t\t\t},\n\t\t\tfastpay_times: {\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 106\n\t\t\t}\n\t\t},\n\t\tnested: {\n\t\t\tExportType: {\n\t\t\t\tvalues: {\n\t\t\t\t\tSeedEncExportType_NO: 0,\n\t\t\t\t\tSeedEncExportType_YES: 1,\n\t\t\t\t\tMnemonicPlainExportType_YES: 2\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\tApplyFlags: {\n\t\tfields: {\n\t\t\tflags: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 1\n\t\t\t}\n\t\t}\n\t},\n\tChangePin: {\n\t\tfields: {\n\t\t\tremove: {\n\t\t\t\ttype: \"bool\",\n\t\t\t\tid: 1\n\t\t\t}\n\t\t}\n\t},\n\tChangeWipeCode: {\n\t\tfields: {\n\t\t\tremove: {\n\t\t\t\ttype: \"bool\",\n\t\t\t\tid: 1\n\t\t\t}\n\t\t}\n\t},\n\tSdProtect: {\n\t\tfields: {\n\t\t\toperation: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"SdProtectOperationType\",\n\t\t\t\tid: 1\n\t\t\t}\n\t\t},\n\t\tnested: {\n\t\t\tSdProtectOperationType: {\n\t\t\t\tvalues: {\n\t\t\t\t\tDISABLE: 0,\n\t\t\t\t\tENABLE: 1,\n\t\t\t\t\tREFRESH: 2\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\tPing: {\n\t\tfields: {\n\t\t\tmessage: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tid: 1,\n\t\t\t\toptions: {\n\t\t\t\t\t\"default\": \"\"\n\t\t\t\t}\n\t\t\t},\n\t\t\tbutton_protection: {\n\t\t\t\ttype: \"bool\",\n\t\t\t\tid: 2\n\t\t\t}\n\t\t}\n\t},\n\tCancel: {\n\t\tfields: {\n\t\t}\n\t},\n\tGetEntropy: {\n\t\tfields: {\n\t\t\tsize: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 1\n\t\t\t}\n\t\t}\n\t},\n\tEntropy: {\n\t\tfields: {\n\t\t\tentropy: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 1\n\t\t\t}\n\t\t}\n\t},\n\tWipeDevice: {\n\t\tfields: {\n\t\t}\n\t},\n\tLoadDevice: {\n\t\tfields: {\n\t\t\tmnemonics: {\n\t\t\t\trule: \"repeated\",\n\t\t\t\ttype: \"string\",\n\t\t\t\tid: 1\n\t\t\t},\n\t\t\tpin: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tid: 3\n\t\t\t},\n\t\t\tpassphrase_protection: {\n\t\t\t\ttype: \"bool\",\n\t\t\t\tid: 4\n\t\t\t},\n\t\t\tlanguage: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tid: 5,\n\t\t\t\toptions: {\n\t\t\t\t\t\"default\": \"en-US\"\n\t\t\t\t}\n\t\t\t},\n\t\t\tlabel: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tid: 6\n\t\t\t},\n\t\t\tskip_checksum: {\n\t\t\t\ttype: \"bool\",\n\t\t\t\tid: 7\n\t\t\t},\n\t\t\tu2f_counter: {\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 8\n\t\t\t},\n\t\t\tneeds_backup: {\n\t\t\t\ttype: \"bool\",\n\t\t\t\tid: 9\n\t\t\t},\n\t\t\tno_backup: {\n\t\t\t\ttype: \"bool\",\n\t\t\t\tid: 10\n\t\t\t}\n\t\t}\n\t},\n\tResetDevice: {\n\t\tfields: {\n\t\t\tdisplay_random: {\n\t\t\t\ttype: \"bool\",\n\t\t\t\tid: 1\n\t\t\t},\n\t\t\tstrength: {\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 2,\n\t\t\t\toptions: {\n\t\t\t\t\t\"default\": 256\n\t\t\t\t}\n\t\t\t},\n\t\t\tpassphrase_protection: {\n\t\t\t\ttype: \"bool\",\n\t\t\t\tid: 3\n\t\t\t},\n\t\t\tpin_protection: {\n\t\t\t\ttype: \"bool\",\n\t\t\t\tid: 4\n\t\t\t},\n\t\t\tlanguage: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tid: 5,\n\t\t\t\toptions: {\n\t\t\t\t\t\"default\": \"en-US\"\n\t\t\t\t}\n\t\t\t},\n\t\t\tlabel: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tid: 6\n\t\t\t},\n\t\t\tu2f_counter: {\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 7\n\t\t\t},\n\t\t\tskip_backup: {\n\t\t\t\ttype: \"bool\",\n\t\t\t\tid: 8\n\t\t\t},\n\t\t\tno_backup: {\n\t\t\t\ttype: \"bool\",\n\t\t\t\tid: 9\n\t\t\t},\n\t\t\tbackup_type: {\n\t\t\t\ttype: \"BackupType\",\n\t\t\t\tid: 10,\n\t\t\t\toptions: {\n\t\t\t\t\t\"default\": \"Bip39\"\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\tBackupDevice: {\n\t\tfields: {\n\t\t}\n\t},\n\tEntropyRequest: {\n\t\tfields: {\n\t\t}\n\t},\n\tEntropyAck: {\n\t\tfields: {\n\t\t\tentropy: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 1\n\t\t\t}\n\t\t}\n\t},\n\tRecoveryDevice: {\n\t\tfields: {\n\t\t\tword_count: {\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 1\n\t\t\t},\n\t\t\tpassphrase_protection: {\n\t\t\t\ttype: \"bool\",\n\t\t\t\tid: 2\n\t\t\t},\n\t\t\tpin_protection: {\n\t\t\t\ttype: \"bool\",\n\t\t\t\tid: 3\n\t\t\t},\n\t\t\tlanguage: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tid: 4\n\t\t\t},\n\t\t\tlabel: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tid: 5\n\t\t\t},\n\t\t\tenforce_wordlist: {\n\t\t\t\ttype: \"bool\",\n\t\t\t\tid: 6\n\t\t\t},\n\t\t\ttype: {\n\t\t\t\ttype: \"RecoveryDeviceType\",\n\t\t\t\tid: 8\n\t\t\t},\n\t\t\tu2f_counter: {\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 9\n\t\t\t},\n\t\t\tdry_run: {\n\t\t\t\ttype: \"bool\",\n\t\t\t\tid: 10\n\t\t\t}\n\t\t},\n\t\tnested: {\n\t\t\tRecoveryDeviceType: {\n\t\t\t\tvalues: {\n\t\t\t\t\tRecoveryDeviceType_ScrambledWords: 0,\n\t\t\t\t\tRecoveryDeviceType_Matrix: 1\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\tWordRequest: {\n\t\tfields: {\n\t\t\ttype: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"WordRequestType\",\n\t\t\t\tid: 1\n\t\t\t}\n\t\t},\n\t\tnested: {\n\t\t\tWordRequestType: {\n\t\t\t\tvalues: {\n\t\t\t\t\tWordRequestType_Plain: 0,\n\t\t\t\t\tWordRequestType_Matrix9: 1,\n\t\t\t\t\tWordRequestType_Matrix6: 2\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\tWordAck: {\n\t\tfields: {\n\t\t\tword: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"string\",\n\t\t\t\tid: 1\n\t\t\t}\n\t\t}\n\t},\n\tSetU2FCounter: {\n\t\tfields: {\n\t\t\tu2f_counter: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 1\n\t\t\t}\n\t\t}\n\t},\n\tGetNextU2FCounter: {\n\t\tfields: {\n\t\t}\n\t},\n\tNextU2FCounter: {\n\t\tfields: {\n\t\t\tu2f_counter: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 1\n\t\t\t}\n\t\t}\n\t},\n\tDoPreauthorized: {\n\t\tfields: {\n\t\t}\n\t},\n\tPreauthorizedRequest: {\n\t\tfields: {\n\t\t}\n\t},\n\tCancelAuthorization: {\n\t\tfields: {\n\t\t}\n\t},\n\tBixinSeedOperate: {\n\t\tfields: {\n\t\t\ttype: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"SeedRequestType\",\n\t\t\t\tid: 1\n\t\t\t},\n\t\t\tseed_importData: {\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 2\n\t\t\t}\n\t\t},\n\t\tnested: {\n\t\t\tSeedRequestType: {\n\t\t\t\tvalues: {\n\t\t\t\t\tSeedRequestType_Gen: 0,\n\t\t\t\t\tSeedRequestType_EncExport: 1,\n\t\t\t\t\tSeedRequestType_EncImport: 2\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\tBixinMessageSE: {\n\t\tfields: {\n\t\t\tinputmessage: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 1\n\t\t\t}\n\t\t}\n\t},\n\tBixinOutMessageSE: {\n\t\tfields: {\n\t\t\toutmessage: {\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 1\n\t\t\t}\n\t\t}\n\t},\n\tBixinReboot: {\n\t\tfields: {\n\t\t}\n\t},\n\tBixinBackupRequest: {\n\t\tfields: {\n\t\t}\n\t},\n\tBixinBackupAck: {\n\t\tfields: {\n\t\t\tdata: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 1\n\t\t\t}\n\t\t}\n\t},\n\tBixinRestoreRequest: {\n\t\tfields: {\n\t\t\tdata: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 1\n\t\t\t},\n\t\t\tlanguage: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tid: 2\n\t\t\t},\n\t\t\tlabel: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tid: 3\n\t\t\t},\n\t\t\tpassphrase_protection: {\n\t\t\t\ttype: \"bool\",\n\t\t\t\tid: 4\n\t\t\t}\n\t\t}\n\t},\n\tBixinRestoreAck: {\n\t\tfields: {\n\t\t\tdata: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 1\n\t\t\t}\n\t\t}\n\t},\n\tBixinVerifyDeviceRequest: {\n\t\tfields: {\n\t\t\tdata: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 1\n\t\t\t}\n\t\t}\n\t},\n\tBixinVerifyDeviceAck: {\n\t\tfields: {\n\t\t\tcert: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 1\n\t\t\t},\n\t\t\tsignature: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 2\n\t\t\t}\n\t\t}\n\t},\n\tBixinWhiteListRequest: {\n\t\tfields: {\n\t\t\ttype: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"WL_OperationType\",\n\t\t\t\tid: 1\n\t\t\t},\n\t\t\taddr_in: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tid: 2\n\t\t\t}\n\t\t},\n\t\tnested: {\n\t\t\tWL_OperationType: {\n\t\t\t\tvalues: {\n\t\t\t\t\tWL_OperationType_Add: 0,\n\t\t\t\t\tWL_OperationType_Delete: 1,\n\t\t\t\t\tWL_OperationType_Inquire: 2\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\tBixinWhiteListAck: {\n\t\tfields: {\n\t\t\taddress: {\n\t\t\t\trule: \"repeated\",\n\t\t\t\ttype: \"string\",\n\t\t\t\tid: 1\n\t\t\t}\n\t\t}\n\t},\n\tBixinLoadDevice: {\n\t\tfields: {\n\t\t\tmnemonics: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"string\",\n\t\t\t\tid: 1\n\t\t\t},\n\t\t\tlanguage: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tid: 5,\n\t\t\t\toptions: {\n\t\t\t\t\t\"default\": \"en-US\"\n\t\t\t\t}\n\t\t\t},\n\t\t\tlabel: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tid: 6\n\t\t\t},\n\t\t\tskip_checksum: {\n\t\t\t\ttype: \"bool\",\n\t\t\t\tid: 7\n\t\t\t}\n\t\t}\n\t},\n\tBixinBackupDevice: {\n\t\tfields: {\n\t\t}\n\t},\n\tBixinBackupDeviceAck: {\n\t\tfields: {\n\t\t\tmnemonics: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"string\",\n\t\t\t\tid: 1\n\t\t\t}\n\t\t}\n\t},\n\tDeviceInfoSettings: {\n\t\tfields: {\n\t\t\tserial_no: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tid: 1\n\t\t\t},\n\t\t\tcpu_info: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tid: 2\n\t\t\t},\n\t\t\tpre_firmware: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tid: 3\n\t\t\t}\n\t\t}\n\t},\n\tGetDeviceInfo: {\n\t\tfields: {\n\t\t}\n\t},\n\tDeviceInfo: {\n\t\tfields: {\n\t\t\tserial_no: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tid: 1\n\t\t\t},\n\t\t\tspiFlash_info: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tid: 2\n\t\t\t},\n\t\t\tSE_info: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tid: 3\n\t\t\t},\n\t\t\tNFT_voucher: {\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 4\n\t\t\t},\n\t\t\tcpu_info: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tid: 5\n\t\t\t},\n\t\t\tpre_firmware: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tid: 6\n\t\t\t}\n\t\t}\n\t},\n\tReadSEPublicKey: {\n\t\tfields: {\n\t\t}\n\t},\n\tSEPublicKey: {\n\t\tfields: {\n\t\t\tpublic_key: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 1\n\t\t\t}\n\t\t}\n\t},\n\tWriteSEPublicCert: {\n\t\tfields: {\n\t\t\tpublic_cert: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 1\n\t\t\t}\n\t\t}\n\t},\n\tReadSEPublicCert: {\n\t\tfields: {\n\t\t}\n\t},\n\tSEPublicCert: {\n\t\tfields: {\n\t\t\tpublic_cert: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 1\n\t\t\t}\n\t\t}\n\t},\n\tSpiFlashWrite: {\n\t\tfields: {\n\t\t\taddress: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 1\n\t\t\t},\n\t\t\tdata: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 2\n\t\t\t}\n\t\t}\n\t},\n\tSpiFlashRead: {\n\t\tfields: {\n\t\t\taddress: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 1\n\t\t\t},\n\t\t\tlen: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 2\n\t\t\t}\n\t\t}\n\t},\n\tSpiFlashData: {\n\t\tfields: {\n\t\t\tdata: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 1\n\t\t\t}\n\t\t}\n\t},\n\tSESignMessage: {\n\t\tfields: {\n\t\t\tmessage: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 1\n\t\t\t}\n\t\t}\n\t},\n\tSEMessageSignature: {\n\t\tfields: {\n\t\t\tsignature: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 1\n\t\t\t}\n\t\t}\n\t},\n\tNFTWriteInfo: {\n\t\tfields: {\n\t\t\tindex: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 1\n\t\t\t},\n\t\t\twidth: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 2\n\t\t\t},\n\t\t\theight: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 3\n\t\t\t},\n\t\t\tname_zh: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tid: 4\n\t\t\t},\n\t\t\tname_en: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tid: 5\n\t\t\t}\n\t\t}\n\t},\n\tNFTWriteData: {\n\t\tfields: {\n\t\t\tindex: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 1\n\t\t\t},\n\t\t\tdata: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 2\n\t\t\t},\n\t\t\toffset: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 3\n\t\t\t}\n\t\t}\n\t},\n\tRebootToBootloader: {\n\t\tfields: {\n\t\t}\n\t},\n\tMoneroTransactionSourceEntry: {\n\t\tfields: {\n\t\t\toutputs: {\n\t\t\t\trule: \"repeated\",\n\t\t\t\ttype: \"MoneroOutputEntry\",\n\t\t\t\tid: 1\n\t\t\t},\n\t\t\treal_output: {\n\t\t\t\ttype: \"uint64\",\n\t\t\t\tid: 2\n\t\t\t},\n\t\t\treal_out_tx_key: {\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 3\n\t\t\t},\n\t\t\treal_out_additional_tx_keys: {\n\t\t\t\trule: \"repeated\",\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 4\n\t\t\t},\n\t\t\treal_output_in_tx_index: {\n\t\t\t\ttype: \"uint64\",\n\t\t\t\tid: 5\n\t\t\t},\n\t\t\tamount: {\n\t\t\t\ttype: \"uint64\",\n\t\t\t\tid: 6\n\t\t\t},\n\t\t\trct: {\n\t\t\t\ttype: \"bool\",\n\t\t\t\tid: 7\n\t\t\t},\n\t\t\tmask: {\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 8\n\t\t\t},\n\t\t\tmultisig_kLRki: {\n\t\t\t\ttype: \"MoneroMultisigKLRki\",\n\t\t\t\tid: 9\n\t\t\t},\n\t\t\tsubaddr_minor: {\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 10\n\t\t\t}\n\t\t},\n\t\tnested: {\n\t\t\tMoneroOutputEntry: {\n\t\t\t\tfields: {\n\t\t\t\t\tidx: {\n\t\t\t\t\t\ttype: \"uint64\",\n\t\t\t\t\t\tid: 1\n\t\t\t\t\t},\n\t\t\t\t\tkey: {\n\t\t\t\t\t\ttype: \"MoneroRctKeyPublic\",\n\t\t\t\t\t\tid: 2\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tnested: {\n\t\t\t\t\tMoneroRctKeyPublic: {\n\t\t\t\t\t\tfields: {\n\t\t\t\t\t\t\tdest: {\n\t\t\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t\t\t\tid: 1\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tcommitment: {\n\t\t\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t\t\t\tid: 2\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\tMoneroMultisigKLRki: {\n\t\t\t\tfields: {\n\t\t\t\t\tK: {\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t\tid: 1\n\t\t\t\t\t},\n\t\t\t\t\tL: {\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t\tid: 2\n\t\t\t\t\t},\n\t\t\t\t\tR: {\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t\tid: 3\n\t\t\t\t\t},\n\t\t\t\t\tki: {\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t\tid: 4\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\tMoneroTransactionDestinationEntry: {\n\t\tfields: {\n\t\t\tamount: {\n\t\t\t\ttype: \"uint64\",\n\t\t\t\tid: 1\n\t\t\t},\n\t\t\taddr: {\n\t\t\t\ttype: \"MoneroAccountPublicAddress\",\n\t\t\t\tid: 2\n\t\t\t},\n\t\t\tis_subaddress: {\n\t\t\t\ttype: \"bool\",\n\t\t\t\tid: 3\n\t\t\t},\n\t\t\toriginal: {\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 4\n\t\t\t},\n\t\t\tis_integrated: {\n\t\t\t\ttype: \"bool\",\n\t\t\t\tid: 5\n\t\t\t}\n\t\t},\n\t\tnested: {\n\t\t\tMoneroAccountPublicAddress: {\n\t\t\t\tfields: {\n\t\t\t\t\tspend_public_key: {\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t\tid: 1\n\t\t\t\t\t},\n\t\t\t\t\tview_public_key: {\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t\tid: 2\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\tMoneroTransactionRsigData: {\n\t\tfields: {\n\t\t\trsig_type: {\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 1\n\t\t\t},\n\t\t\toffload_type: {\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 2\n\t\t\t},\n\t\t\tgrouping: {\n\t\t\t\trule: \"repeated\",\n\t\t\t\ttype: \"uint64\",\n\t\t\t\tid: 3,\n\t\t\t\toptions: {\n\t\t\t\t\tpacked: false\n\t\t\t\t}\n\t\t\t},\n\t\t\tmask: {\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 4\n\t\t\t},\n\t\t\trsig: {\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 5\n\t\t\t},\n\t\t\trsig_parts: {\n\t\t\t\trule: \"repeated\",\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 6\n\t\t\t},\n\t\t\tbp_version: {\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 7\n\t\t\t}\n\t\t}\n\t},\n\tMoneroGetAddress: {\n\t\tfields: {\n\t\t\taddress_n: {\n\t\t\t\trule: \"repeated\",\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 1,\n\t\t\t\toptions: {\n\t\t\t\t\tpacked: false\n\t\t\t\t}\n\t\t\t},\n\t\t\tshow_display: {\n\t\t\t\ttype: \"bool\",\n\t\t\t\tid: 2\n\t\t\t},\n\t\t\tnetwork_type: {\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 3\n\t\t\t},\n\t\t\taccount: {\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 4\n\t\t\t},\n\t\t\tminor: {\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 5\n\t\t\t},\n\t\t\tpayment_id: {\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 6\n\t\t\t}\n\t\t}\n\t},\n\tMoneroAddress: {\n\t\tfields: {\n\t\t\taddress: {\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 1\n\t\t\t}\n\t\t}\n\t},\n\tMoneroGetWatchKey: {\n\t\tfields: {\n\t\t\taddress_n: {\n\t\t\t\trule: \"repeated\",\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 1,\n\t\t\t\toptions: {\n\t\t\t\t\tpacked: false\n\t\t\t\t}\n\t\t\t},\n\t\t\tnetwork_type: {\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 2\n\t\t\t}\n\t\t}\n\t},\n\tMoneroWatchKey: {\n\t\tfields: {\n\t\t\twatch_key: {\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 1\n\t\t\t},\n\t\t\taddress: {\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 2\n\t\t\t}\n\t\t}\n\t},\n\tMoneroTransactionInitRequest: {\n\t\tfields: {\n\t\t\tversion: {\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 1\n\t\t\t},\n\t\t\taddress_n: {\n\t\t\t\trule: \"repeated\",\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 2,\n\t\t\t\toptions: {\n\t\t\t\t\tpacked: false\n\t\t\t\t}\n\t\t\t},\n\t\t\tnetwork_type: {\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 3\n\t\t\t},\n\t\t\ttsx_data: {\n\t\t\t\ttype: \"MoneroTransactionData\",\n\t\t\t\tid: 4\n\t\t\t}\n\t\t},\n\t\tnested: {\n\t\t\tMoneroTransactionData: {\n\t\t\t\tfields: {\n\t\t\t\t\tversion: {\n\t\t\t\t\t\ttype: \"uint32\",\n\t\t\t\t\t\tid: 1\n\t\t\t\t\t},\n\t\t\t\t\tpayment_id: {\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t\tid: 2\n\t\t\t\t\t},\n\t\t\t\t\tunlock_time: {\n\t\t\t\t\t\ttype: \"uint64\",\n\t\t\t\t\t\tid: 3\n\t\t\t\t\t},\n\t\t\t\t\toutputs: {\n\t\t\t\t\t\trule: \"repeated\",\n\t\t\t\t\t\ttype: \"MoneroTransactionDestinationEntry\",\n\t\t\t\t\t\tid: 4\n\t\t\t\t\t},\n\t\t\t\t\tchange_dts: {\n\t\t\t\t\t\ttype: \"MoneroTransactionDestinationEntry\",\n\t\t\t\t\t\tid: 5\n\t\t\t\t\t},\n\t\t\t\t\tnum_inputs: {\n\t\t\t\t\t\ttype: \"uint32\",\n\t\t\t\t\t\tid: 6\n\t\t\t\t\t},\n\t\t\t\t\tmixin: {\n\t\t\t\t\t\ttype: \"uint32\",\n\t\t\t\t\t\tid: 7\n\t\t\t\t\t},\n\t\t\t\t\tfee: {\n\t\t\t\t\t\ttype: \"uint64\",\n\t\t\t\t\t\tid: 8\n\t\t\t\t\t},\n\t\t\t\t\taccount: {\n\t\t\t\t\t\ttype: \"uint32\",\n\t\t\t\t\t\tid: 9\n\t\t\t\t\t},\n\t\t\t\t\tminor_indices: {\n\t\t\t\t\t\trule: \"repeated\",\n\t\t\t\t\t\ttype: \"uint32\",\n\t\t\t\t\t\tid: 10,\n\t\t\t\t\t\toptions: {\n\t\t\t\t\t\t\tpacked: false\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\trsig_data: {\n\t\t\t\t\t\ttype: \"MoneroTransactionRsigData\",\n\t\t\t\t\t\tid: 11\n\t\t\t\t\t},\n\t\t\t\t\tintegrated_indices: {\n\t\t\t\t\t\trule: \"repeated\",\n\t\t\t\t\t\ttype: \"uint32\",\n\t\t\t\t\t\tid: 12,\n\t\t\t\t\t\toptions: {\n\t\t\t\t\t\t\tpacked: false\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\tclient_version: {\n\t\t\t\t\t\ttype: \"uint32\",\n\t\t\t\t\t\tid: 13\n\t\t\t\t\t},\n\t\t\t\t\thard_fork: {\n\t\t\t\t\t\ttype: \"uint32\",\n\t\t\t\t\t\tid: 14\n\t\t\t\t\t},\n\t\t\t\t\tmonero_version: {\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t\tid: 15\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\tMoneroTransactionInitAck: {\n\t\tfields: {\n\t\t\thmacs: {\n\t\t\t\trule: \"repeated\",\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 1\n\t\t\t},\n\t\t\trsig_data: {\n\t\t\t\ttype: \"MoneroTransactionRsigData\",\n\t\t\t\tid: 2\n\t\t\t}\n\t\t}\n\t},\n\tMoneroTransactionSetInputRequest: {\n\t\tfields: {\n\t\t\tsrc_entr: {\n\t\t\t\ttype: \"MoneroTransactionSourceEntry\",\n\t\t\t\tid: 1\n\t\t\t}\n\t\t}\n\t},\n\tMoneroTransactionSetInputAck: {\n\t\tfields: {\n\t\t\tvini: {\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 1\n\t\t\t},\n\t\t\tvini_hmac: {\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 2\n\t\t\t},\n\t\t\tpseudo_out: {\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 3\n\t\t\t},\n\t\t\tpseudo_out_hmac: {\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 4\n\t\t\t},\n\t\t\tpseudo_out_alpha: {\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 5\n\t\t\t},\n\t\t\tspend_key: {\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 6\n\t\t\t}\n\t\t}\n\t},\n\tMoneroTransactionInputsPermutationRequest: {\n\t\tfields: {\n\t\t\tperm: {\n\t\t\t\trule: \"repeated\",\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 1,\n\t\t\t\toptions: {\n\t\t\t\t\tpacked: false\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\tMoneroTransactionInputsPermutationAck: {\n\t\tfields: {\n\t\t}\n\t},\n\tMoneroTransactionInputViniRequest: {\n\t\tfields: {\n\t\t\tsrc_entr: {\n\t\t\t\ttype: \"MoneroTransactionSourceEntry\",\n\t\t\t\tid: 1\n\t\t\t},\n\t\t\tvini: {\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 2\n\t\t\t},\n\t\t\tvini_hmac: {\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 3\n\t\t\t},\n\t\t\tpseudo_out: {\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 4\n\t\t\t},\n\t\t\tpseudo_out_hmac: {\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 5\n\t\t\t},\n\t\t\torig_idx: {\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 6\n\t\t\t}\n\t\t}\n\t},\n\tMoneroTransactionInputViniAck: {\n\t\tfields: {\n\t\t}\n\t},\n\tMoneroTransactionAllInputsSetRequest: {\n\t\tfields: {\n\t\t}\n\t},\n\tMoneroTransactionAllInputsSetAck: {\n\t\tfields: {\n\t\t\trsig_data: {\n\t\t\t\ttype: \"MoneroTransactionRsigData\",\n\t\t\t\tid: 1\n\t\t\t}\n\t\t}\n\t},\n\tMoneroTransactionSetOutputRequest: {\n\t\tfields: {\n\t\t\tdst_entr: {\n\t\t\t\ttype: \"MoneroTransactionDestinationEntry\",\n\t\t\t\tid: 1\n\t\t\t},\n\t\t\tdst_entr_hmac: {\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 2\n\t\t\t},\n\t\t\trsig_data: {\n\t\t\t\ttype: \"MoneroTransactionRsigData\",\n\t\t\t\tid: 3\n\t\t\t},\n\t\t\tis_offloaded_bp: {\n\t\t\t\ttype: \"bool\",\n\t\t\t\tid: 4\n\t\t\t}\n\t\t}\n\t},\n\tMoneroTransactionSetOutputAck: {\n\t\tfields: {\n\t\t\ttx_out: {\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 1\n\t\t\t},\n\t\t\tvouti_hmac: {\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 2\n\t\t\t},\n\t\t\trsig_data: {\n\t\t\t\ttype: \"MoneroTransactionRsigData\",\n\t\t\t\tid: 3\n\t\t\t},\n\t\t\tout_pk: {\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 4\n\t\t\t},\n\t\t\tecdh_info: {\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 5\n\t\t\t}\n\t\t}\n\t},\n\tMoneroTransactionAllOutSetRequest: {\n\t\tfields: {\n\t\t\trsig_data: {\n\t\t\t\ttype: \"MoneroTransactionRsigData\",\n\t\t\t\tid: 1\n\t\t\t}\n\t\t}\n\t},\n\tMoneroTransactionAllOutSetAck: {\n\t\tfields: {\n\t\t\textra: {\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 1\n\t\t\t},\n\t\t\ttx_prefix_hash: {\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 2\n\t\t\t},\n\t\t\trv: {\n\t\t\t\ttype: \"MoneroRingCtSig\",\n\t\t\t\tid: 4\n\t\t\t},\n\t\t\tfull_message_hash: {\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 5\n\t\t\t}\n\t\t},\n\t\tnested: {\n\t\t\tMoneroRingCtSig: {\n\t\t\t\tfields: {\n\t\t\t\t\ttxn_fee: {\n\t\t\t\t\t\ttype: \"uint64\",\n\t\t\t\t\t\tid: 1\n\t\t\t\t\t},\n\t\t\t\t\tmessage: {\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t\tid: 2\n\t\t\t\t\t},\n\t\t\t\t\trv_type: {\n\t\t\t\t\t\ttype: \"uint32\",\n\t\t\t\t\t\tid: 3\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\tMoneroTransactionSignInputRequest: {\n\t\tfields: {\n\t\t\tsrc_entr: {\n\t\t\t\ttype: \"MoneroTransactionSourceEntry\",\n\t\t\t\tid: 1\n\t\t\t},\n\t\t\tvini: {\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 2\n\t\t\t},\n\t\t\tvini_hmac: {\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 3\n\t\t\t},\n\t\t\tpseudo_out: {\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 4\n\t\t\t},\n\t\t\tpseudo_out_hmac: {\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 5\n\t\t\t},\n\t\t\tpseudo_out_alpha: {\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 6\n\t\t\t},\n\t\t\tspend_key: {\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 7\n\t\t\t},\n\t\t\torig_idx: {\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 8\n\t\t\t}\n\t\t}\n\t},\n\tMoneroTransactionSignInputAck: {\n\t\tfields: {\n\t\t\tsignature: {\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 1\n\t\t\t},\n\t\t\tpseudo_out: {\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 2\n\t\t\t}\n\t\t}\n\t},\n\tMoneroTransactionFinalRequest: {\n\t\tfields: {\n\t\t}\n\t},\n\tMoneroTransactionFinalAck: {\n\t\tfields: {\n\t\t\tcout_key: {\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 1\n\t\t\t},\n\t\t\tsalt: {\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 2\n\t\t\t},\n\t\t\trand_mult: {\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 3\n\t\t\t},\n\t\t\ttx_enc_keys: {\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 4\n\t\t\t},\n\t\t\topening_key: {\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 5\n\t\t\t}\n\t\t}\n\t},\n\tMoneroKeyImageExportInitRequest: {\n\t\tfields: {\n\t\t\tnum: {\n\t\t\t\ttype: \"uint64\",\n\t\t\t\tid: 1\n\t\t\t},\n\t\t\thash: {\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 2\n\t\t\t},\n\t\t\taddress_n: {\n\t\t\t\trule: \"repeated\",\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 3,\n\t\t\t\toptions: {\n\t\t\t\t\tpacked: false\n\t\t\t\t}\n\t\t\t},\n\t\t\tnetwork_type: {\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 4\n\t\t\t},\n\t\t\tsubs: {\n\t\t\t\trule: \"repeated\",\n\t\t\t\ttype: \"MoneroSubAddressIndicesList\",\n\t\t\t\tid: 5\n\t\t\t}\n\t\t},\n\t\tnested: {\n\t\t\tMoneroSubAddressIndicesList: {\n\t\t\t\tfields: {\n\t\t\t\t\taccount: {\n\t\t\t\t\t\ttype: \"uint32\",\n\t\t\t\t\t\tid: 1\n\t\t\t\t\t},\n\t\t\t\t\tminor_indices: {\n\t\t\t\t\t\trule: \"repeated\",\n\t\t\t\t\t\ttype: \"uint32\",\n\t\t\t\t\t\tid: 2,\n\t\t\t\t\t\toptions: {\n\t\t\t\t\t\t\tpacked: false\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\tMoneroKeyImageExportInitAck: {\n\t\tfields: {\n\t\t}\n\t},\n\tMoneroKeyImageSyncStepRequest: {\n\t\tfields: {\n\t\t\ttdis: {\n\t\t\t\trule: \"repeated\",\n\t\t\t\ttype: \"MoneroTransferDetails\",\n\t\t\t\tid: 1\n\t\t\t}\n\t\t},\n\t\tnested: {\n\t\t\tMoneroTransferDetails: {\n\t\t\t\tfields: {\n\t\t\t\t\tout_key: {\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t\tid: 1\n\t\t\t\t\t},\n\t\t\t\t\ttx_pub_key: {\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t\tid: 2\n\t\t\t\t\t},\n\t\t\t\t\tadditional_tx_pub_keys: {\n\t\t\t\t\t\trule: \"repeated\",\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t\tid: 3\n\t\t\t\t\t},\n\t\t\t\t\tinternal_output_index: {\n\t\t\t\t\t\ttype: \"uint64\",\n\t\t\t\t\t\tid: 4\n\t\t\t\t\t},\n\t\t\t\t\tsub_addr_major: {\n\t\t\t\t\t\ttype: \"uint32\",\n\t\t\t\t\t\tid: 5\n\t\t\t\t\t},\n\t\t\t\t\tsub_addr_minor: {\n\t\t\t\t\t\ttype: \"uint32\",\n\t\t\t\t\t\tid: 6\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\tMoneroKeyImageSyncStepAck: {\n\t\tfields: {\n\t\t\tkis: {\n\t\t\t\trule: \"repeated\",\n\t\t\t\ttype: \"MoneroExportedKeyImage\",\n\t\t\t\tid: 1\n\t\t\t}\n\t\t},\n\t\tnested: {\n\t\t\tMoneroExportedKeyImage: {\n\t\t\t\tfields: {\n\t\t\t\t\tiv: {\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t\tid: 1\n\t\t\t\t\t},\n\t\t\t\t\tblob: {\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t\tid: 3\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\tMoneroKeyImageSyncFinalRequest: {\n\t\tfields: {\n\t\t}\n\t},\n\tMoneroKeyImageSyncFinalAck: {\n\t\tfields: {\n\t\t\tenc_key: {\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 1\n\t\t\t}\n\t\t}\n\t},\n\tMoneroGetTxKeyRequest: {\n\t\tfields: {\n\t\t\taddress_n: {\n\t\t\t\trule: \"repeated\",\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 1,\n\t\t\t\toptions: {\n\t\t\t\t\tpacked: false\n\t\t\t\t}\n\t\t\t},\n\t\t\tnetwork_type: {\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 2\n\t\t\t},\n\t\t\tsalt1: {\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 3\n\t\t\t},\n\t\t\tsalt2: {\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 4\n\t\t\t},\n\t\t\ttx_enc_keys: {\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 5\n\t\t\t},\n\t\t\ttx_prefix_hash: {\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 6\n\t\t\t},\n\t\t\treason: {\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 7\n\t\t\t},\n\t\t\tview_public_key: {\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 8\n\t\t\t}\n\t\t}\n\t},\n\tMoneroGetTxKeyAck: {\n\t\tfields: {\n\t\t\tsalt: {\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 1\n\t\t\t},\n\t\t\ttx_keys: {\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 2\n\t\t\t},\n\t\t\ttx_derivations: {\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 3\n\t\t\t}\n\t\t}\n\t},\n\tMoneroLiveRefreshStartRequest: {\n\t\tfields: {\n\t\t\taddress_n: {\n\t\t\t\trule: \"repeated\",\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 1,\n\t\t\t\toptions: {\n\t\t\t\t\tpacked: false\n\t\t\t\t}\n\t\t\t},\n\t\t\tnetwork_type: {\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 2\n\t\t\t}\n\t\t}\n\t},\n\tMoneroLiveRefreshStartAck: {\n\t\tfields: {\n\t\t}\n\t},\n\tMoneroLiveRefreshStepRequest: {\n\t\tfields: {\n\t\t\tout_key: {\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 1\n\t\t\t},\n\t\t\trecv_deriv: {\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 2\n\t\t\t},\n\t\t\treal_out_idx: {\n\t\t\t\ttype: \"uint64\",\n\t\t\t\tid: 3\n\t\t\t},\n\t\t\tsub_addr_major: {\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 4\n\t\t\t},\n\t\t\tsub_addr_minor: {\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 5\n\t\t\t}\n\t\t}\n\t},\n\tMoneroLiveRefreshStepAck: {\n\t\tfields: {\n\t\t\tsalt: {\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 1\n\t\t\t},\n\t\t\tkey_image: {\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 2\n\t\t\t}\n\t\t}\n\t},\n\tMoneroLiveRefreshFinalRequest: {\n\t\tfields: {\n\t\t}\n\t},\n\tMoneroLiveRefreshFinalAck: {\n\t\tfields: {\n\t\t}\n\t},\n\tDebugMoneroDiagRequest: {\n\t\tfields: {\n\t\t\tins: {\n\t\t\t\ttype: \"uint64\",\n\t\t\t\tid: 1\n\t\t\t},\n\t\t\tp1: {\n\t\t\t\ttype: \"uint64\",\n\t\t\t\tid: 2\n\t\t\t},\n\t\t\tp2: {\n\t\t\t\ttype: \"uint64\",\n\t\t\t\tid: 3\n\t\t\t},\n\t\t\tpd: {\n\t\t\t\trule: \"repeated\",\n\t\t\t\ttype: \"uint64\",\n\t\t\t\tid: 4,\n\t\t\t\toptions: {\n\t\t\t\t\tpacked: false\n\t\t\t\t}\n\t\t\t},\n\t\t\tdata1: {\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 5\n\t\t\t},\n\t\t\tdata2: {\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 6\n\t\t\t}\n\t\t}\n\t},\n\tDebugMoneroDiagAck: {\n\t\tfields: {\n\t\t\tins: {\n\t\t\t\ttype: \"uint64\",\n\t\t\t\tid: 1\n\t\t\t},\n\t\t\tp1: {\n\t\t\t\ttype: \"uint64\",\n\t\t\t\tid: 2\n\t\t\t},\n\t\t\tp2: {\n\t\t\t\ttype: \"uint64\",\n\t\t\t\tid: 3\n\t\t\t},\n\t\t\tpd: {\n\t\t\t\trule: \"repeated\",\n\t\t\t\ttype: \"uint64\",\n\t\t\t\tid: 4,\n\t\t\t\toptions: {\n\t\t\t\t\tpacked: false\n\t\t\t\t}\n\t\t\t},\n\t\t\tdata1: {\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 5\n\t\t\t},\n\t\t\tdata2: {\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 6\n\t\t\t}\n\t\t}\n\t},\n\tNEMGetAddress: {\n\t\tfields: {\n\t\t\taddress_n: {\n\t\t\t\trule: \"repeated\",\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 1,\n\t\t\t\toptions: {\n\t\t\t\t\tpacked: false\n\t\t\t\t}\n\t\t\t},\n\t\t\tnetwork: {\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 2\n\t\t\t},\n\t\t\tshow_display: {\n\t\t\t\ttype: \"bool\",\n\t\t\t\tid: 3\n\t\t\t}\n\t\t}\n\t},\n\tNEMAddress: {\n\t\tfields: {\n\t\t\taddress: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"string\",\n\t\t\t\tid: 1\n\t\t\t}\n\t\t}\n\t},\n\tNEMSignTx: {\n\t\tfields: {\n\t\t\ttransaction: {\n\t\t\t\ttype: \"NEMTransactionCommon\",\n\t\t\t\tid: 1\n\t\t\t},\n\t\t\tmultisig: {\n\t\t\t\ttype: \"NEMTransactionCommon\",\n\t\t\t\tid: 2\n\t\t\t},\n\t\t\ttransfer: {\n\t\t\t\ttype: \"NEMTransfer\",\n\t\t\t\tid: 3\n\t\t\t},\n\t\t\tcosigning: {\n\t\t\t\ttype: \"bool\",\n\t\t\t\tid: 4\n\t\t\t},\n\t\t\tprovision_namespace: {\n\t\t\t\ttype: \"NEMProvisionNamespace\",\n\t\t\t\tid: 5\n\t\t\t},\n\t\t\tmosaic_creation: {\n\t\t\t\ttype: \"NEMMosaicCreation\",\n\t\t\t\tid: 6\n\t\t\t},\n\t\t\tsupply_change: {\n\t\t\t\ttype: \"NEMMosaicSupplyChange\",\n\t\t\t\tid: 7\n\t\t\t},\n\t\t\taggregate_modification: {\n\t\t\t\ttype: \"NEMAggregateModification\",\n\t\t\t\tid: 8\n\t\t\t},\n\t\t\timportance_transfer: {\n\t\t\t\ttype: \"NEMImportanceTransfer\",\n\t\t\t\tid: 9\n\t\t\t}\n\t\t},\n\t\tnested: {\n\t\t\tNEMTransactionCommon: {\n\t\t\t\tfields: {\n\t\t\t\t\taddress_n: {\n\t\t\t\t\t\trule: \"repeated\",\n\t\t\t\t\t\ttype: \"uint32\",\n\t\t\t\t\t\tid: 1,\n\t\t\t\t\t\toptions: {\n\t\t\t\t\t\t\tpacked: false\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\tnetwork: {\n\t\t\t\t\t\ttype: \"uint32\",\n\t\t\t\t\t\tid: 2\n\t\t\t\t\t},\n\t\t\t\t\ttimestamp: {\n\t\t\t\t\t\ttype: \"uint32\",\n\t\t\t\t\t\tid: 3\n\t\t\t\t\t},\n\t\t\t\t\tfee: {\n\t\t\t\t\t\ttype: \"uint64\",\n\t\t\t\t\t\tid: 4\n\t\t\t\t\t},\n\t\t\t\t\tdeadline: {\n\t\t\t\t\t\ttype: \"uint32\",\n\t\t\t\t\t\tid: 5\n\t\t\t\t\t},\n\t\t\t\t\tsigner: {\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t\tid: 6\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\tNEMTransfer: {\n\t\t\t\tfields: {\n\t\t\t\t\trecipient: {\n\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\tid: 1\n\t\t\t\t\t},\n\t\t\t\t\tamount: {\n\t\t\t\t\t\ttype: \"uint64\",\n\t\t\t\t\t\tid: 2\n\t\t\t\t\t},\n\t\t\t\t\tpayload: {\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t\tid: 3\n\t\t\t\t\t},\n\t\t\t\t\tpublic_key: {\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t\tid: 4\n\t\t\t\t\t},\n\t\t\t\t\tmosaics: {\n\t\t\t\t\t\trule: \"repeated\",\n\t\t\t\t\t\ttype: \"NEMMosaic\",\n\t\t\t\t\t\tid: 5\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tnested: {\n\t\t\t\t\tNEMMosaic: {\n\t\t\t\t\t\tfields: {\n\t\t\t\t\t\t\tnamespace: {\n\t\t\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\t\t\tid: 1\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tmosaic: {\n\t\t\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\t\t\tid: 2\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tquantity: {\n\t\t\t\t\t\t\t\ttype: \"uint64\",\n\t\t\t\t\t\t\t\tid: 3\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\tNEMProvisionNamespace: {\n\t\t\t\tfields: {\n\t\t\t\t\tnamespace: {\n\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\tid: 1\n\t\t\t\t\t},\n\t\t\t\t\tparent: {\n\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\tid: 2\n\t\t\t\t\t},\n\t\t\t\t\tsink: {\n\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\tid: 3\n\t\t\t\t\t},\n\t\t\t\t\tfee: {\n\t\t\t\t\t\ttype: \"uint64\",\n\t\t\t\t\t\tid: 4\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\tNEMMosaicCreation: {\n\t\t\t\tfields: {\n\t\t\t\t\tdefinition: {\n\t\t\t\t\t\ttype: \"NEMMosaicDefinition\",\n\t\t\t\t\t\tid: 1\n\t\t\t\t\t},\n\t\t\t\t\tsink: {\n\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\tid: 2\n\t\t\t\t\t},\n\t\t\t\t\tfee: {\n\t\t\t\t\t\ttype: \"uint64\",\n\t\t\t\t\t\tid: 3\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tnested: {\n\t\t\t\t\tNEMMosaicDefinition: {\n\t\t\t\t\t\tfields: {\n\t\t\t\t\t\t\tname: {\n\t\t\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\t\t\tid: 1\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tticker: {\n\t\t\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\t\t\tid: 2\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tnamespace: {\n\t\t\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\t\t\tid: 3\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tmosaic: {\n\t\t\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\t\t\tid: 4\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tdivisibility: {\n\t\t\t\t\t\t\t\ttype: \"uint32\",\n\t\t\t\t\t\t\t\tid: 5\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tlevy: {\n\t\t\t\t\t\t\t\ttype: \"NEMMosaicLevy\",\n\t\t\t\t\t\t\t\tid: 6\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tfee: {\n\t\t\t\t\t\t\t\ttype: \"uint64\",\n\t\t\t\t\t\t\t\tid: 7\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tlevy_address: {\n\t\t\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\t\t\tid: 8\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tlevy_namespace: {\n\t\t\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\t\t\tid: 9\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tlevy_mosaic: {\n\t\t\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\t\t\tid: 10\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tsupply: {\n\t\t\t\t\t\t\t\ttype: \"uint64\",\n\t\t\t\t\t\t\t\tid: 11\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tmutable_supply: {\n\t\t\t\t\t\t\t\ttype: \"bool\",\n\t\t\t\t\t\t\t\tid: 12\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\ttransferable: {\n\t\t\t\t\t\t\t\ttype: \"bool\",\n\t\t\t\t\t\t\t\tid: 13\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tdescription: {\n\t\t\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\t\t\tid: 14\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tnetworks: {\n\t\t\t\t\t\t\t\trule: \"repeated\",\n\t\t\t\t\t\t\t\ttype: \"uint32\",\n\t\t\t\t\t\t\t\tid: 15,\n\t\t\t\t\t\t\t\toptions: {\n\t\t\t\t\t\t\t\t\tpacked: false\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t\tnested: {\n\t\t\t\t\t\t\tNEMMosaicLevy: {\n\t\t\t\t\t\t\t\tvalues: {\n\t\t\t\t\t\t\t\t\tMosaicLevy_Absolute: 1,\n\t\t\t\t\t\t\t\t\tMosaicLevy_Percentile: 2\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\tNEMMosaicSupplyChange: {\n\t\t\t\tfields: {\n\t\t\t\t\tnamespace: {\n\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\tid: 1\n\t\t\t\t\t},\n\t\t\t\t\tmosaic: {\n\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\tid: 2\n\t\t\t\t\t},\n\t\t\t\t\ttype: {\n\t\t\t\t\t\ttype: \"NEMSupplyChangeType\",\n\t\t\t\t\t\tid: 3\n\t\t\t\t\t},\n\t\t\t\t\tdelta: {\n\t\t\t\t\t\ttype: \"uint64\",\n\t\t\t\t\t\tid: 4\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tnested: {\n\t\t\t\t\tNEMSupplyChangeType: {\n\t\t\t\t\t\tvalues: {\n\t\t\t\t\t\t\tSupplyChange_Increase: 1,\n\t\t\t\t\t\t\tSupplyChange_Decrease: 2\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\tNEMAggregateModification: {\n\t\t\t\tfields: {\n\t\t\t\t\tmodifications: {\n\t\t\t\t\t\trule: \"repeated\",\n\t\t\t\t\t\ttype: \"NEMCosignatoryModification\",\n\t\t\t\t\t\tid: 1\n\t\t\t\t\t},\n\t\t\t\t\trelative_change: {\n\t\t\t\t\t\ttype: \"sint32\",\n\t\t\t\t\t\tid: 2\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tnested: {\n\t\t\t\t\tNEMCosignatoryModification: {\n\t\t\t\t\t\tfields: {\n\t\t\t\t\t\t\ttype: {\n\t\t\t\t\t\t\t\ttype: \"NEMModificationType\",\n\t\t\t\t\t\t\t\tid: 1\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tpublic_key: {\n\t\t\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t\t\t\tid: 2\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t\tnested: {\n\t\t\t\t\t\t\tNEMModificationType: {\n\t\t\t\t\t\t\t\tvalues: {\n\t\t\t\t\t\t\t\t\tCosignatoryModification_Add: 1,\n\t\t\t\t\t\t\t\t\tCosignatoryModification_Delete: 2\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\tNEMImportanceTransfer: {\n\t\t\t\tfields: {\n\t\t\t\t\tmode: {\n\t\t\t\t\t\ttype: \"NEMImportanceTransferMode\",\n\t\t\t\t\t\tid: 1\n\t\t\t\t\t},\n\t\t\t\t\tpublic_key: {\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t\tid: 2\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tnested: {\n\t\t\t\t\tNEMImportanceTransferMode: {\n\t\t\t\t\t\tvalues: {\n\t\t\t\t\t\t\tImportanceTransfer_Activate: 1,\n\t\t\t\t\t\t\tImportanceTransfer_Deactivate: 2\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\tNEMSignedTx: {\n\t\tfields: {\n\t\t\tdata: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 1\n\t\t\t},\n\t\t\tsignature: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 2\n\t\t\t}\n\t\t}\n\t},\n\tNEMDecryptMessage: {\n\t\tfields: {\n\t\t\taddress_n: {\n\t\t\t\trule: \"repeated\",\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 1,\n\t\t\t\toptions: {\n\t\t\t\t\tpacked: false\n\t\t\t\t}\n\t\t\t},\n\t\t\tnetwork: {\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 2\n\t\t\t},\n\t\t\tpublic_key: {\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 3\n\t\t\t},\n\t\t\tpayload: {\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 4\n\t\t\t}\n\t\t}\n\t},\n\tNEMDecryptedMessage: {\n\t\tfields: {\n\t\t\tpayload: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 1\n\t\t\t}\n\t\t}\n\t},\n\tRippleGetAddress: {\n\t\tfields: {\n\t\t\taddress_n: {\n\t\t\t\trule: \"repeated\",\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 1,\n\t\t\t\toptions: {\n\t\t\t\t\tpacked: false\n\t\t\t\t}\n\t\t\t},\n\t\t\tshow_display: {\n\t\t\t\ttype: \"bool\",\n\t\t\t\tid: 2\n\t\t\t}\n\t\t}\n\t},\n\tRippleAddress: {\n\t\tfields: {\n\t\t\taddress: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"string\",\n\t\t\t\tid: 1\n\t\t\t}\n\t\t}\n\t},\n\tRippleSignTx: {\n\t\tfields: {\n\t\t\taddress_n: {\n\t\t\t\trule: \"repeated\",\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 1,\n\t\t\t\toptions: {\n\t\t\t\t\tpacked: false\n\t\t\t\t}\n\t\t\t},\n\t\t\tfee: {\n\t\t\t\ttype: \"uint64\",\n\t\t\t\tid: 2\n\t\t\t},\n\t\t\tflags: {\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 3\n\t\t\t},\n\t\t\tsequence: {\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 4\n\t\t\t},\n\t\t\tlast_ledger_sequence: {\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 5\n\t\t\t},\n\t\t\tpayment: {\n\t\t\t\ttype: \"RipplePayment\",\n\t\t\t\tid: 6\n\t\t\t}\n\t\t},\n\t\tnested: {\n\t\t\tRipplePayment: {\n\t\t\t\tfields: {\n\t\t\t\t\tamount: {\n\t\t\t\t\t\trule: \"required\",\n\t\t\t\t\t\ttype: \"uint64\",\n\t\t\t\t\t\tid: 1\n\t\t\t\t\t},\n\t\t\t\t\tdestination: {\n\t\t\t\t\t\trule: \"required\",\n\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\tid: 2\n\t\t\t\t\t},\n\t\t\t\t\tdestination_tag: {\n\t\t\t\t\t\ttype: \"uint32\",\n\t\t\t\t\t\tid: 3\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\tRippleSignedTx: {\n\t\tfields: {\n\t\t\tsignature: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 1\n\t\t\t},\n\t\t\tserialized_tx: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 2\n\t\t\t}\n\t\t}\n\t},\n\tSolanaGetAddress: {\n\t\tfields: {\n\t\t\taddress_n: {\n\t\t\t\trule: \"repeated\",\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 1,\n\t\t\t\toptions: {\n\t\t\t\t\tpacked: false\n\t\t\t\t}\n\t\t\t},\n\t\t\tshow_display: {\n\t\t\t\ttype: \"bool\",\n\t\t\t\tid: 2\n\t\t\t}\n\t\t}\n\t},\n\tSolanaAddress: {\n\t\tfields: {\n\t\t\taddress: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tid: 1\n\t\t\t}\n\t\t}\n\t},\n\tSolanaSignTx: {\n\t\tfields: {\n\t\t\taddress_n: {\n\t\t\t\trule: \"repeated\",\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 1,\n\t\t\t\toptions: {\n\t\t\t\t\tpacked: false\n\t\t\t\t}\n\t\t\t},\n\t\t\traw_tx: {\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 2\n\t\t\t}\n\t\t}\n\t},\n\tSolanaSignedTx: {\n\t\tfields: {\n\t\t\tsignature: {\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 1\n\t\t\t}\n\t\t}\n\t},\n\tStarcoinGetAddress: {\n\t\tfields: {\n\t\t\taddress_n: {\n\t\t\t\trule: \"repeated\",\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 1,\n\t\t\t\toptions: {\n\t\t\t\t\tpacked: false\n\t\t\t\t}\n\t\t\t},\n\t\t\tshow_display: {\n\t\t\t\ttype: \"bool\",\n\t\t\t\tid: 2\n\t\t\t}\n\t\t}\n\t},\n\tStarcoinAddress: {\n\t\tfields: {\n\t\t\taddress: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tid: 1\n\t\t\t}\n\t\t}\n\t},\n\tStarcoinGetPublicKey: {\n\t\tfields: {\n\t\t\taddress_n: {\n\t\t\t\trule: \"repeated\",\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 1,\n\t\t\t\toptions: {\n\t\t\t\t\tpacked: false\n\t\t\t\t}\n\t\t\t},\n\t\t\tshow_display: {\n\t\t\t\ttype: \"bool\",\n\t\t\t\tid: 2\n\t\t\t}\n\t\t}\n\t},\n\tStarcoinPublicKey: {\n\t\tfields: {\n\t\t\tpublic_key: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 1\n\t\t\t}\n\t\t}\n\t},\n\tStarcoinSignTx: {\n\t\tfields: {\n\t\t\taddress_n: {\n\t\t\t\trule: \"repeated\",\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 1,\n\t\t\t\toptions: {\n\t\t\t\t\tpacked: false\n\t\t\t\t}\n\t\t\t},\n\t\t\traw_tx: {\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 2\n\t\t\t}\n\t\t}\n\t},\n\tStarcoinSignedTx: {\n\t\tfields: {\n\t\t\tpublic_key: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 1\n\t\t\t},\n\t\t\tsignature: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 2\n\t\t\t}\n\t\t}\n\t},\n\tStarcoinSignMessage: {\n\t\tfields: {\n\t\t\taddress_n: {\n\t\t\t\trule: \"repeated\",\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 1,\n\t\t\t\toptions: {\n\t\t\t\t\tpacked: false\n\t\t\t\t}\n\t\t\t},\n\t\t\tmessage: {\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 2\n\t\t\t}\n\t\t}\n\t},\n\tStarcoinMessageSignature: {\n\t\tfields: {\n\t\t\tpublic_key: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 1\n\t\t\t},\n\t\t\tsignature: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 2\n\t\t\t}\n\t\t}\n\t},\n\tStarcoinVerifyMessage: {\n\t\tfields: {\n\t\t\tpublic_key: {\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 1\n\t\t\t},\n\t\t\tsignature: {\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 2\n\t\t\t},\n\t\t\tmessage: {\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 3\n\t\t\t}\n\t\t}\n\t},\n\tStellarAssetType: {\n\t\tvalues: {\n\t\t\tNATIVE: 0,\n\t\t\tALPHANUM4: 1,\n\t\t\tALPHANUM12: 2\n\t\t}\n\t},\n\tStellarAsset: {\n\t\tfields: {\n\t\t\ttype: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"StellarAssetType\",\n\t\t\t\tid: 1\n\t\t\t},\n\t\t\tcode: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tid: 2\n\t\t\t},\n\t\t\tissuer: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tid: 3\n\t\t\t}\n\t\t}\n\t},\n\tStellarGetAddress: {\n\t\tfields: {\n\t\t\taddress_n: {\n\t\t\t\trule: \"repeated\",\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 1,\n\t\t\t\toptions: {\n\t\t\t\t\tpacked: false\n\t\t\t\t}\n\t\t\t},\n\t\t\tshow_display: {\n\t\t\t\ttype: \"bool\",\n\t\t\t\tid: 2\n\t\t\t}\n\t\t}\n\t},\n\tStellarAddress: {\n\t\tfields: {\n\t\t\taddress: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"string\",\n\t\t\t\tid: 1\n\t\t\t}\n\t\t}\n\t},\n\tStellarSignTx: {\n\t\tfields: {\n\t\t\taddress_n: {\n\t\t\t\trule: \"repeated\",\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 2,\n\t\t\t\toptions: {\n\t\t\t\t\tpacked: false\n\t\t\t\t}\n\t\t\t},\n\t\t\tnetwork_passphrase: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"string\",\n\t\t\t\tid: 3\n\t\t\t},\n\t\t\tsource_account: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"string\",\n\t\t\t\tid: 4\n\t\t\t},\n\t\t\tfee: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 5\n\t\t\t},\n\t\t\tsequence_number: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"uint64\",\n\t\t\t\tid: 6\n\t\t\t},\n\t\t\ttimebounds_start: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 8\n\t\t\t},\n\t\t\ttimebounds_end: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 9\n\t\t\t},\n\t\t\tmemo_type: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"StellarMemoType\",\n\t\t\t\tid: 10\n\t\t\t},\n\t\t\tmemo_text: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tid: 11\n\t\t\t},\n\t\t\tmemo_id: {\n\t\t\t\ttype: \"uint64\",\n\t\t\t\tid: 12\n\t\t\t},\n\t\t\tmemo_hash: {\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 13\n\t\t\t},\n\t\t\tnum_operations: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 14\n\t\t\t}\n\t\t},\n\t\tnested: {\n\t\t\tStellarMemoType: {\n\t\t\t\tvalues: {\n\t\t\t\t\tNONE: 0,\n\t\t\t\t\tTEXT: 1,\n\t\t\t\t\tID: 2,\n\t\t\t\t\tHASH: 3,\n\t\t\t\t\tRETURN: 4\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\tStellarTxOpRequest: {\n\t\tfields: {\n\t\t}\n\t},\n\tStellarPaymentOp: {\n\t\tfields: {\n\t\t\tsource_account: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tid: 1\n\t\t\t},\n\t\t\tdestination_account: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"string\",\n\t\t\t\tid: 2\n\t\t\t},\n\t\t\tasset: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"StellarAsset\",\n\t\t\t\tid: 3\n\t\t\t},\n\t\t\tamount: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"sint64\",\n\t\t\t\tid: 4\n\t\t\t}\n\t\t}\n\t},\n\tStellarCreateAccountOp: {\n\t\tfields: {\n\t\t\tsource_account: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tid: 1\n\t\t\t},\n\t\t\tnew_account: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"string\",\n\t\t\t\tid: 2\n\t\t\t},\n\t\t\tstarting_balance: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"sint64\",\n\t\t\t\tid: 3\n\t\t\t}\n\t\t}\n\t},\n\tStellarPathPaymentStrictReceiveOp: {\n\t\tfields: {\n\t\t\tsource_account: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tid: 1\n\t\t\t},\n\t\t\tsend_asset: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"StellarAsset\",\n\t\t\t\tid: 2\n\t\t\t},\n\t\t\tsend_max: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"sint64\",\n\t\t\t\tid: 3\n\t\t\t},\n\t\t\tdestination_account: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"string\",\n\t\t\t\tid: 4\n\t\t\t},\n\t\t\tdestination_asset: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"StellarAsset\",\n\t\t\t\tid: 5\n\t\t\t},\n\t\t\tdestination_amount: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"sint64\",\n\t\t\t\tid: 6\n\t\t\t},\n\t\t\tpaths: {\n\t\t\t\trule: \"repeated\",\n\t\t\t\ttype: \"StellarAsset\",\n\t\t\t\tid: 7\n\t\t\t}\n\t\t}\n\t},\n\tStellarPathPaymentStrictSendOp: {\n\t\tfields: {\n\t\t\tsource_account: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tid: 1\n\t\t\t},\n\t\t\tsend_asset: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"StellarAsset\",\n\t\t\t\tid: 2\n\t\t\t},\n\t\t\tsend_amount: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"sint64\",\n\t\t\t\tid: 3\n\t\t\t},\n\t\t\tdestination_account: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"string\",\n\t\t\t\tid: 4\n\t\t\t},\n\t\t\tdestination_asset: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"StellarAsset\",\n\t\t\t\tid: 5\n\t\t\t},\n\t\t\tdestination_min: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"sint64\",\n\t\t\t\tid: 6\n\t\t\t},\n\t\t\tpaths: {\n\t\t\t\trule: \"repeated\",\n\t\t\t\ttype: \"StellarAsset\",\n\t\t\t\tid: 7\n\t\t\t}\n\t\t}\n\t},\n\tStellarManageSellOfferOp: {\n\t\tfields: {\n\t\t\tsource_account: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tid: 1\n\t\t\t},\n\t\t\tselling_asset: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"StellarAsset\",\n\t\t\t\tid: 2\n\t\t\t},\n\t\t\tbuying_asset: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"StellarAsset\",\n\t\t\t\tid: 3\n\t\t\t},\n\t\t\tamount: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"sint64\",\n\t\t\t\tid: 4\n\t\t\t},\n\t\t\tprice_n: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 5\n\t\t\t},\n\t\t\tprice_d: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 6\n\t\t\t},\n\t\t\toffer_id: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"uint64\",\n\t\t\t\tid: 7\n\t\t\t}\n\t\t}\n\t},\n\tStellarManageBuyOfferOp: {\n\t\tfields: {\n\t\t\tsource_account: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tid: 1\n\t\t\t},\n\t\t\tselling_asset: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"StellarAsset\",\n\t\t\t\tid: 2\n\t\t\t},\n\t\t\tbuying_asset: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"StellarAsset\",\n\t\t\t\tid: 3\n\t\t\t},\n\t\t\tamount: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"sint64\",\n\t\t\t\tid: 4\n\t\t\t},\n\t\t\tprice_n: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 5\n\t\t\t},\n\t\t\tprice_d: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 6\n\t\t\t},\n\t\t\toffer_id: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"uint64\",\n\t\t\t\tid: 7\n\t\t\t}\n\t\t}\n\t},\n\tStellarCreatePassiveSellOfferOp: {\n\t\tfields: {\n\t\t\tsource_account: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tid: 1\n\t\t\t},\n\t\t\tselling_asset: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"StellarAsset\",\n\t\t\t\tid: 2\n\t\t\t},\n\t\t\tbuying_asset: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"StellarAsset\",\n\t\t\t\tid: 3\n\t\t\t},\n\t\t\tamount: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"sint64\",\n\t\t\t\tid: 4\n\t\t\t},\n\t\t\tprice_n: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 5\n\t\t\t},\n\t\t\tprice_d: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 6\n\t\t\t}\n\t\t}\n\t},\n\tStellarSetOptionsOp: {\n\t\tfields: {\n\t\t\tsource_account: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tid: 1\n\t\t\t},\n\t\t\tinflation_destination_account: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tid: 2\n\t\t\t},\n\t\t\tclear_flags: {\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 3\n\t\t\t},\n\t\t\tset_flags: {\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 4\n\t\t\t},\n\t\t\tmaster_weight: {\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 5\n\t\t\t},\n\t\t\tlow_threshold: {\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 6\n\t\t\t},\n\t\t\tmedium_threshold: {\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 7\n\t\t\t},\n\t\t\thigh_threshold: {\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 8\n\t\t\t},\n\t\t\thome_domain: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tid: 9\n\t\t\t},\n\t\t\tsigner_type: {\n\t\t\t\ttype: \"StellarSignerType\",\n\t\t\t\tid: 10\n\t\t\t},\n\t\t\tsigner_key: {\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 11\n\t\t\t},\n\t\t\tsigner_weight: {\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 12\n\t\t\t}\n\t\t},\n\t\tnested: {\n\t\t\tStellarSignerType: {\n\t\t\t\tvalues: {\n\t\t\t\t\tACCOUNT: 0,\n\t\t\t\t\tPRE_AUTH: 1,\n\t\t\t\t\tHASH: 2\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\tStellarChangeTrustOp: {\n\t\tfields: {\n\t\t\tsource_account: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tid: 1\n\t\t\t},\n\t\t\tasset: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"StellarAsset\",\n\t\t\t\tid: 2\n\t\t\t},\n\t\t\tlimit: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"uint64\",\n\t\t\t\tid: 3\n\t\t\t}\n\t\t}\n\t},\n\tStellarAllowTrustOp: {\n\t\tfields: {\n\t\t\tsource_account: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tid: 1\n\t\t\t},\n\t\t\ttrusted_account: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"string\",\n\t\t\t\tid: 2\n\t\t\t},\n\t\t\tasset_type: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"StellarAssetType\",\n\t\t\t\tid: 3\n\t\t\t},\n\t\t\tasset_code: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tid: 4\n\t\t\t},\n\t\t\tis_authorized: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"bool\",\n\t\t\t\tid: 5\n\t\t\t}\n\t\t}\n\t},\n\tStellarAccountMergeOp: {\n\t\tfields: {\n\t\t\tsource_account: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tid: 1\n\t\t\t},\n\t\t\tdestination_account: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"string\",\n\t\t\t\tid: 2\n\t\t\t}\n\t\t}\n\t},\n\tStellarManageDataOp: {\n\t\tfields: {\n\t\t\tsource_account: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tid: 1\n\t\t\t},\n\t\t\tkey: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"string\",\n\t\t\t\tid: 2\n\t\t\t},\n\t\t\tvalue: {\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 3\n\t\t\t}\n\t\t}\n\t},\n\tStellarBumpSequenceOp: {\n\t\tfields: {\n\t\t\tsource_account: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tid: 1\n\t\t\t},\n\t\t\tbump_to: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"uint64\",\n\t\t\t\tid: 2\n\t\t\t}\n\t\t}\n\t},\n\tStellarSignedTx: {\n\t\tfields: {\n\t\t\tpublic_key: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 1\n\t\t\t},\n\t\t\tsignature: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 2\n\t\t\t}\n\t\t}\n\t},\n\tTezosGetAddress: {\n\t\tfields: {\n\t\t\taddress_n: {\n\t\t\t\trule: \"repeated\",\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 1,\n\t\t\t\toptions: {\n\t\t\t\t\tpacked: false\n\t\t\t\t}\n\t\t\t},\n\t\t\tshow_display: {\n\t\t\t\ttype: \"bool\",\n\t\t\t\tid: 2\n\t\t\t}\n\t\t}\n\t},\n\tTezosAddress: {\n\t\tfields: {\n\t\t\taddress: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"string\",\n\t\t\t\tid: 1\n\t\t\t}\n\t\t}\n\t},\n\tTezosGetPublicKey: {\n\t\tfields: {\n\t\t\taddress_n: {\n\t\t\t\trule: \"repeated\",\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 1,\n\t\t\t\toptions: {\n\t\t\t\t\tpacked: false\n\t\t\t\t}\n\t\t\t},\n\t\t\tshow_display: {\n\t\t\t\ttype: \"bool\",\n\t\t\t\tid: 2\n\t\t\t}\n\t\t}\n\t},\n\tTezosPublicKey: {\n\t\tfields: {\n\t\t\tpublic_key: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"string\",\n\t\t\t\tid: 1\n\t\t\t}\n\t\t}\n\t},\n\tTezosSignTx: {\n\t\tfields: {\n\t\t\taddress_n: {\n\t\t\t\trule: \"repeated\",\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 1,\n\t\t\t\toptions: {\n\t\t\t\t\tpacked: false\n\t\t\t\t}\n\t\t\t},\n\t\t\tbranch: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 2\n\t\t\t},\n\t\t\treveal: {\n\t\t\t\ttype: \"TezosRevealOp\",\n\t\t\t\tid: 3\n\t\t\t},\n\t\t\ttransaction: {\n\t\t\t\ttype: \"TezosTransactionOp\",\n\t\t\t\tid: 4\n\t\t\t},\n\t\t\torigination: {\n\t\t\t\ttype: \"TezosOriginationOp\",\n\t\t\t\tid: 5\n\t\t\t},\n\t\t\tdelegation: {\n\t\t\t\ttype: \"TezosDelegationOp\",\n\t\t\t\tid: 6\n\t\t\t},\n\t\t\tproposal: {\n\t\t\t\ttype: \"TezosProposalOp\",\n\t\t\t\tid: 7\n\t\t\t},\n\t\t\tballot: {\n\t\t\t\ttype: \"TezosBallotOp\",\n\t\t\t\tid: 8\n\t\t\t}\n\t\t},\n\t\tnested: {\n\t\t\tTezosContractID: {\n\t\t\t\tfields: {\n\t\t\t\t\ttag: {\n\t\t\t\t\t\trule: \"required\",\n\t\t\t\t\t\ttype: \"TezosContractType\",\n\t\t\t\t\t\tid: 1\n\t\t\t\t\t},\n\t\t\t\t\thash: {\n\t\t\t\t\t\trule: \"required\",\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t\tid: 2\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tnested: {\n\t\t\t\t\tTezosContractType: {\n\t\t\t\t\t\tvalues: {\n\t\t\t\t\t\t\tImplicit: 0,\n\t\t\t\t\t\t\tOriginated: 1\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\tTezosRevealOp: {\n\t\t\t\tfields: {\n\t\t\t\t\tsource: {\n\t\t\t\t\t\trule: \"required\",\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t\tid: 7\n\t\t\t\t\t},\n\t\t\t\t\tfee: {\n\t\t\t\t\t\trule: \"required\",\n\t\t\t\t\t\ttype: \"uint64\",\n\t\t\t\t\t\tid: 2\n\t\t\t\t\t},\n\t\t\t\t\tcounter: {\n\t\t\t\t\t\trule: \"required\",\n\t\t\t\t\t\ttype: \"uint64\",\n\t\t\t\t\t\tid: 3\n\t\t\t\t\t},\n\t\t\t\t\tgas_limit: {\n\t\t\t\t\t\trule: \"required\",\n\t\t\t\t\t\ttype: \"uint64\",\n\t\t\t\t\t\tid: 4\n\t\t\t\t\t},\n\t\t\t\t\tstorage_limit: {\n\t\t\t\t\t\trule: \"required\",\n\t\t\t\t\t\ttype: \"uint64\",\n\t\t\t\t\t\tid: 5\n\t\t\t\t\t},\n\t\t\t\t\tpublic_key: {\n\t\t\t\t\t\trule: \"required\",\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t\tid: 6\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\tTezosTransactionOp: {\n\t\t\t\tfields: {\n\t\t\t\t\tsource: {\n\t\t\t\t\t\trule: \"required\",\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t\tid: 9\n\t\t\t\t\t},\n\t\t\t\t\tfee: {\n\t\t\t\t\t\trule: \"required\",\n\t\t\t\t\t\ttype: \"uint64\",\n\t\t\t\t\t\tid: 2\n\t\t\t\t\t},\n\t\t\t\t\tcounter: {\n\t\t\t\t\t\trule: \"required\",\n\t\t\t\t\t\ttype: \"uint64\",\n\t\t\t\t\t\tid: 3\n\t\t\t\t\t},\n\t\t\t\t\tgas_limit: {\n\t\t\t\t\t\trule: \"required\",\n\t\t\t\t\t\ttype: \"uint64\",\n\t\t\t\t\t\tid: 4\n\t\t\t\t\t},\n\t\t\t\t\tstorage_limit: {\n\t\t\t\t\t\trule: \"required\",\n\t\t\t\t\t\ttype: \"uint64\",\n\t\t\t\t\t\tid: 5\n\t\t\t\t\t},\n\t\t\t\t\tamount: {\n\t\t\t\t\t\trule: \"required\",\n\t\t\t\t\t\ttype: \"uint64\",\n\t\t\t\t\t\tid: 6\n\t\t\t\t\t},\n\t\t\t\t\tdestination: {\n\t\t\t\t\t\trule: \"required\",\n\t\t\t\t\t\ttype: \"TezosContractID\",\n\t\t\t\t\t\tid: 7\n\t\t\t\t\t},\n\t\t\t\t\tparameters: {\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t\tid: 8\n\t\t\t\t\t},\n\t\t\t\t\tparameters_manager: {\n\t\t\t\t\t\ttype: \"TezosParametersManager\",\n\t\t\t\t\t\tid: 10\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tnested: {\n\t\t\t\t\tTezosParametersManager: {\n\t\t\t\t\t\tfields: {\n\t\t\t\t\t\t\tset_delegate: {\n\t\t\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t\t\t\tid: 1\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tcancel_delegate: {\n\t\t\t\t\t\t\t\ttype: \"bool\",\n\t\t\t\t\t\t\t\tid: 2\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\ttransfer: {\n\t\t\t\t\t\t\t\ttype: \"TezosManagerTransfer\",\n\t\t\t\t\t\t\t\tid: 3\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t\tnested: {\n\t\t\t\t\t\t\tTezosManagerTransfer: {\n\t\t\t\t\t\t\t\tfields: {\n\t\t\t\t\t\t\t\t\tdestination: {\n\t\t\t\t\t\t\t\t\t\ttype: \"TezosContractID\",\n\t\t\t\t\t\t\t\t\t\tid: 1\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tamount: {\n\t\t\t\t\t\t\t\t\t\ttype: \"uint64\",\n\t\t\t\t\t\t\t\t\t\tid: 2\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\tTezosOriginationOp: {\n\t\t\t\tfields: {\n\t\t\t\t\tsource: {\n\t\t\t\t\t\trule: \"required\",\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t\tid: 12\n\t\t\t\t\t},\n\t\t\t\t\tfee: {\n\t\t\t\t\t\trule: \"required\",\n\t\t\t\t\t\ttype: \"uint64\",\n\t\t\t\t\t\tid: 2\n\t\t\t\t\t},\n\t\t\t\t\tcounter: {\n\t\t\t\t\t\trule: \"required\",\n\t\t\t\t\t\ttype: \"uint64\",\n\t\t\t\t\t\tid: 3\n\t\t\t\t\t},\n\t\t\t\t\tgas_limit: {\n\t\t\t\t\t\trule: \"required\",\n\t\t\t\t\t\ttype: \"uint64\",\n\t\t\t\t\t\tid: 4\n\t\t\t\t\t},\n\t\t\t\t\tstorage_limit: {\n\t\t\t\t\t\trule: \"required\",\n\t\t\t\t\t\ttype: \"uint64\",\n\t\t\t\t\t\tid: 5\n\t\t\t\t\t},\n\t\t\t\t\tmanager_pubkey: {\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t\tid: 6\n\t\t\t\t\t},\n\t\t\t\t\tbalance: {\n\t\t\t\t\t\trule: \"required\",\n\t\t\t\t\t\ttype: \"uint64\",\n\t\t\t\t\t\tid: 7\n\t\t\t\t\t},\n\t\t\t\t\tspendable: {\n\t\t\t\t\t\ttype: \"bool\",\n\t\t\t\t\t\tid: 8\n\t\t\t\t\t},\n\t\t\t\t\tdelegatable: {\n\t\t\t\t\t\ttype: \"bool\",\n\t\t\t\t\t\tid: 9\n\t\t\t\t\t},\n\t\t\t\t\tdelegate: {\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t\tid: 10\n\t\t\t\t\t},\n\t\t\t\t\tscript: {\n\t\t\t\t\t\trule: \"required\",\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t\tid: 11\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\tTezosDelegationOp: {\n\t\t\t\tfields: {\n\t\t\t\t\tsource: {\n\t\t\t\t\t\trule: \"required\",\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t\tid: 7\n\t\t\t\t\t},\n\t\t\t\t\tfee: {\n\t\t\t\t\t\trule: \"required\",\n\t\t\t\t\t\ttype: \"uint64\",\n\t\t\t\t\t\tid: 2\n\t\t\t\t\t},\n\t\t\t\t\tcounter: {\n\t\t\t\t\t\trule: \"required\",\n\t\t\t\t\t\ttype: \"uint64\",\n\t\t\t\t\t\tid: 3\n\t\t\t\t\t},\n\t\t\t\t\tgas_limit: {\n\t\t\t\t\t\trule: \"required\",\n\t\t\t\t\t\ttype: \"uint64\",\n\t\t\t\t\t\tid: 4\n\t\t\t\t\t},\n\t\t\t\t\tstorage_limit: {\n\t\t\t\t\t\trule: \"required\",\n\t\t\t\t\t\ttype: \"uint64\",\n\t\t\t\t\t\tid: 5\n\t\t\t\t\t},\n\t\t\t\t\tdelegate: {\n\t\t\t\t\t\trule: \"required\",\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t\tid: 6\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\tTezosProposalOp: {\n\t\t\t\tfields: {\n\t\t\t\t\tsource: {\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t\tid: 1\n\t\t\t\t\t},\n\t\t\t\t\tperiod: {\n\t\t\t\t\t\ttype: \"uint64\",\n\t\t\t\t\t\tid: 2\n\t\t\t\t\t},\n\t\t\t\t\tproposals: {\n\t\t\t\t\t\trule: \"repeated\",\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t\tid: 4\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\tTezosBallotOp: {\n\t\t\t\tfields: {\n\t\t\t\t\tsource: {\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t\tid: 1\n\t\t\t\t\t},\n\t\t\t\t\tperiod: {\n\t\t\t\t\t\ttype: \"uint64\",\n\t\t\t\t\t\tid: 2\n\t\t\t\t\t},\n\t\t\t\t\tproposal: {\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t\tid: 3\n\t\t\t\t\t},\n\t\t\t\t\tballot: {\n\t\t\t\t\t\ttype: \"TezosBallotType\",\n\t\t\t\t\t\tid: 4\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tnested: {\n\t\t\t\t\tTezosBallotType: {\n\t\t\t\t\t\tvalues: {\n\t\t\t\t\t\t\tYay: 0,\n\t\t\t\t\t\t\tNay: 1,\n\t\t\t\t\t\t\tPass: 2\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\tTezosSignedTx: {\n\t\tfields: {\n\t\t\tsignature: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"string\",\n\t\t\t\tid: 1\n\t\t\t},\n\t\t\tsig_op_contents: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 2\n\t\t\t},\n\t\t\toperation_hash: {\n\t\t\t\trule: \"required\",\n\t\t\t\ttype: \"string\",\n\t\t\t\tid: 3\n\t\t\t}\n\t\t}\n\t},\n\tWebAuthnListResidentCredentials: {\n\t\tfields: {\n\t\t}\n\t},\n\tWebAuthnAddResidentCredential: {\n\t\tfields: {\n\t\t\tcredential_id: {\n\t\t\t\ttype: \"bytes\",\n\t\t\t\tid: 1\n\t\t\t}\n\t\t}\n\t},\n\tWebAuthnRemoveResidentCredential: {\n\t\tfields: {\n\t\t\tindex: {\n\t\t\t\ttype: \"uint32\",\n\t\t\t\tid: 1\n\t\t\t}\n\t\t}\n\t},\n\tWebAuthnCredentials: {\n\t\tfields: {\n\t\t\tcredentials: {\n\t\t\t\trule: \"repeated\",\n\t\t\t\ttype: \"WebAuthnCredential\",\n\t\t\t\tid: 1\n\t\t\t}\n\t\t},\n\t\tnested: {\n\t\t\tWebAuthnCredential: {\n\t\t\t\tfields: {\n\t\t\t\t\tindex: {\n\t\t\t\t\t\ttype: \"uint32\",\n\t\t\t\t\t\tid: 1\n\t\t\t\t\t},\n\t\t\t\t\tid: {\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t\tid: 2\n\t\t\t\t\t},\n\t\t\t\t\trp_id: {\n\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\tid: 3\n\t\t\t\t\t},\n\t\t\t\t\trp_name: {\n\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\tid: 4\n\t\t\t\t\t},\n\t\t\t\t\tuser_id: {\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t\tid: 5\n\t\t\t\t\t},\n\t\t\t\t\tuser_name: {\n\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\tid: 6\n\t\t\t\t\t},\n\t\t\t\t\tuser_display_name: {\n\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\tid: 7\n\t\t\t\t\t},\n\t\t\t\t\tcreation_time: {\n\t\t\t\t\t\ttype: \"uint32\",\n\t\t\t\t\t\tid: 8\n\t\t\t\t\t},\n\t\t\t\t\thmac_secret: {\n\t\t\t\t\t\ttype: \"bool\",\n\t\t\t\t\t\tid: 9\n\t\t\t\t\t},\n\t\t\t\t\tuse_sign_count: {\n\t\t\t\t\t\ttype: \"bool\",\n\t\t\t\t\t\tid: 10\n\t\t\t\t\t},\n\t\t\t\t\talgorithm: {\n\t\t\t\t\t\ttype: \"sint32\",\n\t\t\t\t\t\tid: 11\n\t\t\t\t\t},\n\t\t\t\t\tcurve: {\n\t\t\t\t\t\ttype: \"sint32\",\n\t\t\t\t\t\tid: 12\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\twire_in: {\n\t\ttype: \"bool\",\n\t\tid: 50002,\n\t\textend: \"google.protobuf.EnumValueOptions\"\n\t},\n\twire_out: {\n\t\ttype: \"bool\",\n\t\tid: 50003,\n\t\textend: \"google.protobuf.EnumValueOptions\"\n\t},\n\twire_debug_in: {\n\t\ttype: \"bool\",\n\t\tid: 50004,\n\t\textend: \"google.protobuf.EnumValueOptions\"\n\t},\n\twire_debug_out: {\n\t\ttype: \"bool\",\n\t\tid: 50005,\n\t\textend: \"google.protobuf.EnumValueOptions\"\n\t},\n\twire_tiny: {\n\t\ttype: \"bool\",\n\t\tid: 50006,\n\t\textend: \"google.protobuf.EnumValueOptions\"\n\t},\n\twire_bootloader: {\n\t\ttype: \"bool\",\n\t\tid: 50007,\n\t\textend: \"google.protobuf.EnumValueOptions\"\n\t},\n\twire_no_fsm: {\n\t\ttype: \"bool\",\n\t\tid: 50008,\n\t\textend: \"google.protobuf.EnumValueOptions\"\n\t},\n\tfacotry: {\n\t\ttype: \"bool\",\n\t\tid: 50501,\n\t\textend: \"google.protobuf.EnumValueOptions\"\n\t},\n\tbitcoin_only: {\n\t\ttype: \"bool\",\n\t\tid: 60000,\n\t\textend: \"google.protobuf.EnumValueOptions\"\n\t},\n\thas_bitcoin_only_values: {\n\t\ttype: \"bool\",\n\t\tid: 51001,\n\t\textend: \"google.protobuf.EnumOptions\"\n\t},\n\tunstable: {\n\t\ttype: \"bool\",\n\t\tid: 52001,\n\t\textend: \"google.protobuf.MessageOptions\"\n\t},\n\twire_type: {\n\t\ttype: \"uint32\",\n\t\tid: 52002,\n\t\textend: \"google.protobuf.MessageOptions\"\n\t},\n\texperimental: {\n\t\ttype: \"bool\",\n\t\tid: 53001,\n\t\textend: \"google.protobuf.FieldOptions\"\n\t},\n\tinclude_in_bitcoin_only: {\n\t\ttype: \"bool\",\n\t\tid: 60000,\n\t\textend: \"google.protobuf.FileOptions\"\n\t},\n\tCommandFlags: {\n\t\tvalues: {\n\t\t\tDefault: 0,\n\t\t\tFactory_Only: 1\n\t\t}\n\t},\n\tMessageType: {\n\t\toptions: {\n\t\t\t\"(has_bitcoin_only_values)\": true\n\t\t},\n\t\tvalues: {\n\t\t\tMessageType_Initialize: 0,\n\t\t\tMessageType_Ping: 1,\n\t\t\tMessageType_Success: 2,\n\t\t\tMessageType_Failure: 3,\n\t\t\tMessageType_ChangePin: 4,\n\t\t\tMessageType_WipeDevice: 5,\n\t\t\tMessageType_GetEntropy: 9,\n\t\t\tMessageType_Entropy: 10,\n\t\t\tMessageType_LoadDevice: 13,\n\t\t\tMessageType_ResetDevice: 14,\n\t\t\tMessageType_Features: 17,\n\t\t\tMessageType_PinMatrixRequest: 18,\n\t\t\tMessageType_PinMatrixAck: 19,\n\t\t\tMessageType_Cancel: 20,\n\t\t\tMessageType_LockDevice: 24,\n\t\t\tMessageType_ApplySettings: 25,\n\t\t\tMessageType_ButtonRequest: 26,\n\t\t\tMessageType_ButtonAck: 27,\n\t\t\tMessageType_ApplyFlags: 28,\n\t\t\tMessageType_BackupDevice: 34,\n\t\t\tMessageType_EntropyRequest: 35,\n\t\t\tMessageType_EntropyAck: 36,\n\t\t\tMessageType_PassphraseRequest: 41,\n\t\t\tMessageType_PassphraseAck: 42,\n\t\t\tMessageType_RecoveryDevice: 45,\n\t\t\tMessageType_WordRequest: 46,\n\t\t\tMessageType_WordAck: 47,\n\t\t\tMessageType_GetFeatures: 55,\n\t\t\tMessageType_SdProtect: 79,\n\t\t\tMessageType_ChangeWipeCode: 82,\n\t\t\tMessageType_EndSession: 83,\n\t\t\tMessageType_DoPreauthorized: 84,\n\t\t\tMessageType_PreauthorizedRequest: 85,\n\t\t\tMessageType_CancelAuthorization: 86,\n\t\t\tMessageType_RebootToBootloader: 87,\n\t\t\tMessageType_SetU2FCounter: 63,\n\t\t\tMessageType_GetNextU2FCounter: 80,\n\t\t\tMessageType_NextU2FCounter: 81,\n\t\t\tMessageType_Deprecated_PassphraseStateRequest: 77,\n\t\t\tMessageType_Deprecated_PassphraseStateAck: 78,\n\t\t\tMessageType_FirmwareErase: 6,\n\t\t\tMessageType_FirmwareErase_ex: 16,\n\t\t\tMessageType_FirmwareUpload: 7,\n\t\t\tMessageType_FirmwareRequest: 8,\n\t\t\tMessageType_SelfTest: 32,\n\t\t\tMessageType_GetPublicKey: 11,\n\t\t\tMessageType_PublicKey: 12,\n\t\t\tMessageType_SignTx: 15,\n\t\t\tMessageType_TxRequest: 21,\n\t\t\tMessageType_TxAck: 22,\n\t\t\tMessageType_GetAddress: 29,\n\t\t\tMessageType_Address: 30,\n\t\t\tMessageType_SignMessage: 38,\n\t\t\tMessageType_VerifyMessage: 39,\n\t\t\tMessageType_MessageSignature: 40,\n\t\t\tMessageType_GetOwnershipId: 43,\n\t\t\tMessageType_OwnershipId: 44,\n\t\t\tMessageType_GetOwnershipProof: 49,\n\t\t\tMessageType_OwnershipProof: 50,\n\t\t\tMessageType_AuthorizeCoinJoin: 51,\n\t\t\tMessageType_CipherKeyValue: 23,\n\t\t\tMessageType_CipheredKeyValue: 48,\n\t\t\tMessageType_SignIdentity: 53,\n\t\t\tMessageType_SignedIdentity: 54,\n\t\t\tMessageType_GetECDHSessionKey: 61,\n\t\t\tMessageType_ECDHSessionKey: 62,\n\t\t\tMessageType_CosiCommit: 71,\n\t\t\tMessageType_CosiCommitment: 72,\n\t\t\tMessageType_CosiSign: 73,\n\t\t\tMessageType_CosiSignature: 74,\n\t\t\tMessageType_DebugLinkDecision: 100,\n\t\t\tMessageType_DebugLinkGetState: 101,\n\t\t\tMessageType_DebugLinkState: 102,\n\t\t\tMessageType_DebugLinkStop: 103,\n\t\t\tMessageType_DebugLinkLog: 104,\n\t\t\tMessageType_DebugLinkMemoryRead: 110,\n\t\t\tMessageType_DebugLinkMemory: 111,\n\t\t\tMessageType_DebugLinkMemoryWrite: 112,\n\t\t\tMessageType_DebugLinkFlashErase: 113,\n\t\t\tMessageType_DebugLinkLayout: 9001,\n\t\t\tMessageType_DebugLinkReseedRandom: 9002,\n\t\t\tMessageType_DebugLinkRecordScreen: 9003,\n\t\t\tMessageType_DebugLinkEraseSdCard: 9005,\n\t\t\tMessageType_DebugLinkWatchLayout: 9006,\n\t\t\tMessageType_EthereumGetPublicKey: 450,\n\t\t\tMessageType_EthereumPublicKey: 451,\n\t\t\tMessageType_EthereumGetAddress: 56,\n\t\t\tMessageType_EthereumAddress: 57,\n\t\t\tMessageType_EthereumSignTx: 58,\n\t\t\tMessageType_EthereumSignTxEIP1559: 452,\n\t\t\tMessageType_EthereumTxRequest: 59,\n\t\t\tMessageType_EthereumTxAck: 60,\n\t\t\tMessageType_EthereumSignMessage: 64,\n\t\t\tMessageType_EthereumVerifyMessage: 65,\n\t\t\tMessageType_EthereumMessageSignature: 66,\n\t\t\tMessageType_EthereumSignTypedData: 464,\n\t\t\tMessageType_EthereumTypedDataStructRequest: 465,\n\t\t\tMessageType_EthereumTypedDataStructAck: 466,\n\t\t\tMessageType_EthereumTypedDataValueRequest: 467,\n\t\t\tMessageType_EthereumTypedDataValueAck: 468,\n\t\t\tMessageType_EthereumTypedDataSignature: 469,\n\t\t\tMessageType_EthereumSignTypedHash: 470,\n\t\t\tMessageType_NEMGetAddress: 67,\n\t\t\tMessageType_NEMAddress: 68,\n\t\t\tMessageType_NEMSignTx: 69,\n\t\t\tMessageType_NEMSignedTx: 70,\n\t\t\tMessageType_NEMDecryptMessage: 75,\n\t\t\tMessageType_NEMDecryptedMessage: 76,\n\t\t\tMessageType_TezosGetAddress: 150,\n\t\t\tMessageType_TezosAddress: 151,\n\t\t\tMessageType_TezosSignTx: 152,\n\t\t\tMessageType_TezosSignedTx: 153,\n\t\t\tMessageType_TezosGetPublicKey: 154,\n\t\t\tMessageType_TezosPublicKey: 155,\n\t\t\tMessageType_StellarSignTx: 202,\n\t\t\tMessageType_StellarTxOpRequest: 203,\n\t\t\tMessageType_StellarGetAddress: 207,\n\t\t\tMessageType_StellarAddress: 208,\n\t\t\tMessageType_StellarCreateAccountOp: 210,\n\t\t\tMessageType_StellarPaymentOp: 211,\n\t\t\tMessageType_StellarPathPaymentStrictReceiveOp: 212,\n\t\t\tMessageType_StellarManageSellOfferOp: 213,\n\t\t\tMessageType_StellarCreatePassiveSellOfferOp: 214,\n\t\t\tMessageType_StellarSetOptionsOp: 215,\n\t\t\tMessageType_StellarChangeTrustOp: 216,\n\t\t\tMessageType_StellarAllowTrustOp: 217,\n\t\t\tMessageType_StellarAccountMergeOp: 218,\n\t\t\tMessageType_StellarManageDataOp: 220,\n\t\t\tMessageType_StellarBumpSequenceOp: 221,\n\t\t\tMessageType_StellarManageBuyOfferOp: 222,\n\t\t\tMessageType_StellarPathPaymentStrictSendOp: 223,\n\t\t\tMessageType_StellarSignedTx: 230,\n\t\t\tMessageType_CardanoSignTx: 303,\n\t\t\tMessageType_CardanoGetPublicKey: 305,\n\t\t\tMessageType_CardanoPublicKey: 306,\n\t\t\tMessageType_CardanoGetAddress: 307,\n\t\t\tMessageType_CardanoAddress: 308,\n\t\t\tMessageType_CardanoSignedTx: 310,\n\t\t\tMessageType_CardanoSignedTxChunk: 311,\n\t\t\tMessageType_CardanoSignedTxChunkAck: 312,\n\t\t\tMessageType_CardanoTxItemAck: 313,\n\t\t\tMessageType_CardanoTxAuxiliaryDataSupplement: 314,\n\t\t\tMessageType_CardanoTxWitnessRequest: 315,\n\t\t\tMessageType_CardanoTxWitnessResponse: 316,\n\t\t\tMessageType_CardanoTxHostAck: 317,\n\t\t\tMessageType_CardanoTxBodyHash: 318,\n\t\t\tMessageType_CardanoSignTxFinished: 319,\n\t\t\tMessageType_CardanoSignTxInit: 320,\n\t\t\tMessageType_CardanoTxInput: 321,\n\t\t\tMessageType_CardanoTxOutput: 322,\n\t\t\tMessageType_CardanoAssetGroup: 323,\n\t\t\tMessageType_CardanoToken: 324,\n\t\t\tMessageType_CardanoTxCertificate: 325,\n\t\t\tMessageType_CardanoTxWithdrawal: 326,\n\t\t\tMessageType_CardanoTxAuxiliaryData: 327,\n\t\t\tMessageType_CardanoPoolOwner: 328,\n\t\t\tMessageType_CardanoPoolRelayParameters: 329,\n\t\t\tMessageType_CardanoGetNativeScriptHash: 330,\n\t\t\tMessageType_CardanoNativeScriptHash: 331,\n\t\t\tMessageType_CardanoTxMint: 332,\n\t\t\tMessageType_RippleGetAddress: 400,\n\t\t\tMessageType_RippleAddress: 401,\n\t\t\tMessageType_RippleSignTx: 402,\n\t\t\tMessageType_RippleSignedTx: 403,\n\t\t\tMessageType_MoneroTransactionInitRequest: 501,\n\t\t\tMessageType_MoneroTransactionInitAck: 502,\n\t\t\tMessageType_MoneroTransactionSetInputRequest: 503,\n\t\t\tMessageType_MoneroTransactionSetInputAck: 504,\n\t\t\tMessageType_MoneroTransactionInputsPermutationRequest: 505,\n\t\t\tMessageType_MoneroTransactionInputsPermutationAck: 506,\n\t\t\tMessageType_MoneroTransactionInputViniRequest: 507,\n\t\t\tMessageType_MoneroTransactionInputViniAck: 508,\n\t\t\tMessageType_MoneroTransactionAllInputsSetRequest: 509,\n\t\t\tMessageType_MoneroTransactionAllInputsSetAck: 510,\n\t\t\tMessageType_MoneroTransactionSetOutputRequest: 511,\n\t\t\tMessageType_MoneroTransactionSetOutputAck: 512,\n\t\t\tMessageType_MoneroTransactionAllOutSetRequest: 513,\n\t\t\tMessageType_MoneroTransactionAllOutSetAck: 514,\n\t\t\tMessageType_MoneroTransactionSignInputRequest: 515,\n\t\t\tMessageType_MoneroTransactionSignInputAck: 516,\n\t\t\tMessageType_MoneroTransactionFinalRequest: 517,\n\t\t\tMessageType_MoneroTransactionFinalAck: 518,\n\t\t\tMessageType_MoneroKeyImageExportInitRequest: 530,\n\t\t\tMessageType_MoneroKeyImageExportInitAck: 531,\n\t\t\tMessageType_MoneroKeyImageSyncStepRequest: 532,\n\t\t\tMessageType_MoneroKeyImageSyncStepAck: 533,\n\t\t\tMessageType_MoneroKeyImageSyncFinalRequest: 534,\n\t\t\tMessageType_MoneroKeyImageSyncFinalAck: 535,\n\t\t\tMessageType_MoneroGetAddress: 540,\n\t\t\tMessageType_MoneroAddress: 541,\n\t\t\tMessageType_MoneroGetWatchKey: 542,\n\t\t\tMessageType_MoneroWatchKey: 543,\n\t\t\tMessageType_DebugMoneroDiagRequest: 546,\n\t\t\tMessageType_DebugMoneroDiagAck: 547,\n\t\t\tMessageType_MoneroGetTxKeyRequest: 550,\n\t\t\tMessageType_MoneroGetTxKeyAck: 551,\n\t\t\tMessageType_MoneroLiveRefreshStartRequest: 552,\n\t\t\tMessageType_MoneroLiveRefreshStartAck: 553,\n\t\t\tMessageType_MoneroLiveRefreshStepRequest: 554,\n\t\t\tMessageType_MoneroLiveRefreshStepAck: 555,\n\t\t\tMessageType_MoneroLiveRefreshFinalRequest: 556,\n\t\t\tMessageType_MoneroLiveRefreshFinalAck: 557,\n\t\t\tMessageType_EosGetPublicKey: 600,\n\t\t\tMessageType_EosPublicKey: 601,\n\t\t\tMessageType_EosSignTx: 602,\n\t\t\tMessageType_EosTxActionRequest: 603,\n\t\t\tMessageType_EosTxActionAck: 604,\n\t\t\tMessageType_EosSignedTx: 605,\n\t\t\tMessageType_BinanceGetAddress: 700,\n\t\t\tMessageType_BinanceAddress: 701,\n\t\t\tMessageType_BinanceGetPublicKey: 702,\n\t\t\tMessageType_BinancePublicKey: 703,\n\t\t\tMessageType_BinanceSignTx: 704,\n\t\t\tMessageType_BinanceTxRequest: 705,\n\t\t\tMessageType_BinanceTransferMsg: 706,\n\t\t\tMessageType_BinanceOrderMsg: 707,\n\t\t\tMessageType_BinanceCancelMsg: 708,\n\t\t\tMessageType_BinanceSignedTx: 709,\n\t\t\tMessageType_SolanaGetAddress: 10100,\n\t\t\tMessageType_SolanaAddress: 10101,\n\t\t\tMessageType_SolanaSignTx: 10102,\n\t\t\tMessageType_SolanaSignedTx: 10103,\n\t\t\tMessageType_StarcoinGetAddress: 10300,\n\t\t\tMessageType_StarcoinAddress: 10301,\n\t\t\tMessageType_StarcoinGetPublicKey: 10302,\n\t\t\tMessageType_StarcoinPublicKey: 10303,\n\t\t\tMessageType_StarcoinSignTx: 10304,\n\t\t\tMessageType_StarcoinSignedTx: 10305,\n\t\t\tMessageType_StarcoinSignMessage: 10306,\n\t\t\tMessageType_StarcoinMessageSignature: 10307,\n\t\t\tMessageType_StarcoinVerifyMessage: 10308,\n\t\t\tMessageType_WebAuthnListResidentCredentials: 800,\n\t\t\tMessageType_WebAuthnCredentials: 801,\n\t\t\tMessageType_WebAuthnAddResidentCredential: 802,\n\t\t\tMessageType_WebAuthnRemoveResidentCredential: 803,\n\t\t\tMessageType_BixinSeedOperate: 901,\n\t\t\tMessageType_BixinMessageSE: 902,\n\t\t\tMessageType_BixinReboot: 903,\n\t\t\tMessageType_BixinOutMessageSE: 904,\n\t\t\tMessageType_BixinBackupRequest: 905,\n\t\t\tMessageType_BixinBackupAck: 906,\n\t\t\tMessageType_BixinRestoreRequest: 907,\n\t\t\tMessageType_BixinRestoreAck: 908,\n\t\t\tMessageType_BixinVerifyDeviceRequest: 909,\n\t\t\tMessageType_BixinVerifyDeviceAck: 910,\n\t\t\tMessageType_BixinWhiteListRequest: 911,\n\t\t\tMessageType_BixinWhiteListAck: 912,\n\t\t\tMessageType_BixinLoadDevice: 913,\n\t\t\tMessageType_BixinBackupDevice: 914,\n\t\t\tMessageType_BixinBackupDeviceAck: 915,\n\t\t\tMessageType_BixinPinInputOnDevice: 10000,\n\t\t\tMessageType_EthereumSignMessageEIP712: 10200,\n\t\t\tMessageType_GetPublicKeyMultiple: 10210,\n\t\t\tMessageType_PublicKeyMultiple: 10211,\n\t\t\tMessageType_DeviceInfoSettings: 10001,\n\t\t\tMessageType_GetDeviceInfo: 10002,\n\t\t\tMessageType_DeviceInfo: 10003,\n\t\t\tMessageType_ReadSEPublicKey: 10004,\n\t\t\tMessageType_SEPublicKey: 10005,\n\t\t\tMessageType_WriteSEPublicCert: 10006,\n\t\t\tMessageType_ReadSEPublicCert: 10007,\n\t\t\tMessageType_SEPublicCert: 10008,\n\t\t\tMessageType_SpiFlashWrite: 10009,\n\t\t\tMessageType_SpiFlashRead: 10010,\n\t\t\tMessageType_SpiFlashData: 10011,\n\t\t\tMessageType_SESignMessage: 10012,\n\t\t\tMessageType_SEMessageSignature: 10013,\n\t\t\tMessageType_NFTWriteInfo: 10014,\n\t\t\tMessageType_NFTWriteData: 10015\n\t\t}\n\t},\n\tgoogle: {\n\t\tnested: {\n\t\t\tprotobuf: {\n\t\t\t\tnested: {\n\t\t\t\t\tFileDescriptorSet: {\n\t\t\t\t\t\tfields: {\n\t\t\t\t\t\t\tfile: {\n\t\t\t\t\t\t\t\trule: \"repeated\",\n\t\t\t\t\t\t\t\ttype: \"FileDescriptorProto\",\n\t\t\t\t\t\t\t\tid: 1\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\tFileDescriptorProto: {\n\t\t\t\t\t\tfields: {\n\t\t\t\t\t\t\tname: {\n\t\t\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\t\t\tid: 1\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\"package\": {\n\t\t\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\t\t\tid: 2\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tdependency: {\n\t\t\t\t\t\t\t\trule: \"repeated\",\n\t\t\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\t\t\tid: 3\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tpublic_dependency: {\n\t\t\t\t\t\t\t\trule: \"repeated\",\n\t\t\t\t\t\t\t\ttype: \"int32\",\n\t\t\t\t\t\t\t\tid: 10,\n\t\t\t\t\t\t\t\toptions: {\n\t\t\t\t\t\t\t\t\tpacked: false\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tweak_dependency: {\n\t\t\t\t\t\t\t\trule: \"repeated\",\n\t\t\t\t\t\t\t\ttype: \"int32\",\n\t\t\t\t\t\t\t\tid: 11,\n\t\t\t\t\t\t\t\toptions: {\n\t\t\t\t\t\t\t\t\tpacked: false\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tmessage_type: {\n\t\t\t\t\t\t\t\trule: \"repeated\",\n\t\t\t\t\t\t\t\ttype: \"DescriptorProto\",\n\t\t\t\t\t\t\t\tid: 4\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tenum_type: {\n\t\t\t\t\t\t\t\trule: \"repeated\",\n\t\t\t\t\t\t\t\ttype: \"EnumDescriptorProto\",\n\t\t\t\t\t\t\t\tid: 5\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tservice: {\n\t\t\t\t\t\t\t\trule: \"repeated\",\n\t\t\t\t\t\t\t\ttype: \"ServiceDescriptorProto\",\n\t\t\t\t\t\t\t\tid: 6\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\textension: {\n\t\t\t\t\t\t\t\trule: \"repeated\",\n\t\t\t\t\t\t\t\ttype: \"FieldDescriptorProto\",\n\t\t\t\t\t\t\t\tid: 7\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\toptions: {\n\t\t\t\t\t\t\t\ttype: \"FileOptions\",\n\t\t\t\t\t\t\t\tid: 8\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tsource_code_info: {\n\t\t\t\t\t\t\t\ttype: \"SourceCodeInfo\",\n\t\t\t\t\t\t\t\tid: 9\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tsyntax: {\n\t\t\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\t\t\tid: 12\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\tDescriptorProto: {\n\t\t\t\t\t\tfields: {\n\t\t\t\t\t\t\tname: {\n\t\t\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\t\t\tid: 1\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tfield: {\n\t\t\t\t\t\t\t\trule: \"repeated\",\n\t\t\t\t\t\t\t\ttype: \"FieldDescriptorProto\",\n\t\t\t\t\t\t\t\tid: 2\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\textension: {\n\t\t\t\t\t\t\t\trule: \"repeated\",\n\t\t\t\t\t\t\t\ttype: \"FieldDescriptorProto\",\n\t\t\t\t\t\t\t\tid: 6\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tnested_type: {\n\t\t\t\t\t\t\t\trule: \"repeated\",\n\t\t\t\t\t\t\t\ttype: \"DescriptorProto\",\n\t\t\t\t\t\t\t\tid: 3\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tenum_type: {\n\t\t\t\t\t\t\t\trule: \"repeated\",\n\t\t\t\t\t\t\t\ttype: \"EnumDescriptorProto\",\n\t\t\t\t\t\t\t\tid: 4\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\textension_range: {\n\t\t\t\t\t\t\t\trule: \"repeated\",\n\t\t\t\t\t\t\t\ttype: \"ExtensionRange\",\n\t\t\t\t\t\t\t\tid: 5\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\toneof_decl: {\n\t\t\t\t\t\t\t\trule: \"repeated\",\n\t\t\t\t\t\t\t\ttype: \"OneofDescriptorProto\",\n\t\t\t\t\t\t\t\tid: 8\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\toptions: {\n\t\t\t\t\t\t\t\ttype: \"MessageOptions\",\n\t\t\t\t\t\t\t\tid: 7\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\treserved_range: {\n\t\t\t\t\t\t\t\trule: \"repeated\",\n\t\t\t\t\t\t\t\ttype: \"ReservedRange\",\n\t\t\t\t\t\t\t\tid: 9\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\treserved_name: {\n\t\t\t\t\t\t\t\trule: \"repeated\",\n\t\t\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\t\t\tid: 10\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t\tnested: {\n\t\t\t\t\t\t\tExtensionRange: {\n\t\t\t\t\t\t\t\tfields: {\n\t\t\t\t\t\t\t\t\tstart: {\n\t\t\t\t\t\t\t\t\t\ttype: \"int32\",\n\t\t\t\t\t\t\t\t\t\tid: 1\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tend: {\n\t\t\t\t\t\t\t\t\t\ttype: \"int32\",\n\t\t\t\t\t\t\t\t\t\tid: 2\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tReservedRange: {\n\t\t\t\t\t\t\t\tfields: {\n\t\t\t\t\t\t\t\t\tstart: {\n\t\t\t\t\t\t\t\t\t\ttype: \"int32\",\n\t\t\t\t\t\t\t\t\t\tid: 1\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tend: {\n\t\t\t\t\t\t\t\t\t\ttype: \"int32\",\n\t\t\t\t\t\t\t\t\t\tid: 2\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\tFieldDescriptorProto: {\n\t\t\t\t\t\tfields: {\n\t\t\t\t\t\t\tname: {\n\t\t\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\t\t\tid: 1\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tnumber: {\n\t\t\t\t\t\t\t\ttype: \"int32\",\n\t\t\t\t\t\t\t\tid: 3\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tlabel: {\n\t\t\t\t\t\t\t\ttype: \"Label\",\n\t\t\t\t\t\t\t\tid: 4\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\ttype: {\n\t\t\t\t\t\t\t\ttype: \"Type\",\n\t\t\t\t\t\t\t\tid: 5\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\ttype_name: {\n\t\t\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\t\t\tid: 6\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\textendee: {\n\t\t\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\t\t\tid: 2\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tdefault_value: {\n\t\t\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\t\t\tid: 7\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\toneof_index: {\n\t\t\t\t\t\t\t\ttype: \"int32\",\n\t\t\t\t\t\t\t\tid: 9\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tjson_name: {\n\t\t\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\t\t\tid: 10\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\toptions: {\n\t\t\t\t\t\t\t\ttype: \"FieldOptions\",\n\t\t\t\t\t\t\t\tid: 8\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t\tnested: {\n\t\t\t\t\t\t\tType: {\n\t\t\t\t\t\t\t\tvalues: {\n\t\t\t\t\t\t\t\t\tTYPE_DOUBLE: 1,\n\t\t\t\t\t\t\t\t\tTYPE_FLOAT: 2,\n\t\t\t\t\t\t\t\t\tTYPE_INT64: 3,\n\t\t\t\t\t\t\t\t\tTYPE_UINT64: 4,\n\t\t\t\t\t\t\t\t\tTYPE_INT32: 5,\n\t\t\t\t\t\t\t\t\tTYPE_FIXED64: 6,\n\t\t\t\t\t\t\t\t\tTYPE_FIXED32: 7,\n\t\t\t\t\t\t\t\t\tTYPE_BOOL: 8,\n\t\t\t\t\t\t\t\t\tTYPE_STRING: 9,\n\t\t\t\t\t\t\t\t\tTYPE_GROUP: 10,\n\t\t\t\t\t\t\t\t\tTYPE_MESSAGE: 11,\n\t\t\t\t\t\t\t\t\tTYPE_BYTES: 12,\n\t\t\t\t\t\t\t\t\tTYPE_UINT32: 13,\n\t\t\t\t\t\t\t\t\tTYPE_ENUM: 14,\n\t\t\t\t\t\t\t\t\tTYPE_SFIXED32: 15,\n\t\t\t\t\t\t\t\t\tTYPE_SFIXED64: 16,\n\t\t\t\t\t\t\t\t\tTYPE_SINT32: 17,\n\t\t\t\t\t\t\t\t\tTYPE_SINT64: 18\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tLabel: {\n\t\t\t\t\t\t\t\tvalues: {\n\t\t\t\t\t\t\t\t\tLABEL_OPTIONAL: 1,\n\t\t\t\t\t\t\t\t\tLABEL_REQUIRED: 2,\n\t\t\t\t\t\t\t\t\tLABEL_REPEATED: 3\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\tOneofDescriptorProto: {\n\t\t\t\t\t\tfields: {\n\t\t\t\t\t\t\tname: {\n\t\t\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\t\t\tid: 1\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\toptions: {\n\t\t\t\t\t\t\t\ttype: \"OneofOptions\",\n\t\t\t\t\t\t\t\tid: 2\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\tEnumDescriptorProto: {\n\t\t\t\t\t\tfields: {\n\t\t\t\t\t\t\tname: {\n\t\t\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\t\t\tid: 1\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\t\trule: \"repeated\",\n\t\t\t\t\t\t\t\ttype: \"EnumValueDescriptorProto\",\n\t\t\t\t\t\t\t\tid: 2\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\toptions: {\n\t\t\t\t\t\t\t\ttype: \"EnumOptions\",\n\t\t\t\t\t\t\t\tid: 3\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\tEnumValueDescriptorProto: {\n\t\t\t\t\t\tfields: {\n\t\t\t\t\t\t\tname: {\n\t\t\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\t\t\tid: 1\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tnumber: {\n\t\t\t\t\t\t\t\ttype: \"int32\",\n\t\t\t\t\t\t\t\tid: 2\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\toptions: {\n\t\t\t\t\t\t\t\ttype: \"EnumValueOptions\",\n\t\t\t\t\t\t\t\tid: 3\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\tServiceDescriptorProto: {\n\t\t\t\t\t\tfields: {\n\t\t\t\t\t\t\tname: {\n\t\t\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\t\t\tid: 1\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tmethod: {\n\t\t\t\t\t\t\t\trule: \"repeated\",\n\t\t\t\t\t\t\t\ttype: \"MethodDescriptorProto\",\n\t\t\t\t\t\t\t\tid: 2\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\toptions: {\n\t\t\t\t\t\t\t\ttype: \"ServiceOptions\",\n\t\t\t\t\t\t\t\tid: 3\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\tMethodDescriptorProto: {\n\t\t\t\t\t\tfields: {\n\t\t\t\t\t\t\tname: {\n\t\t\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\t\t\tid: 1\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tinput_type: {\n\t\t\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\t\t\tid: 2\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\toutput_type: {\n\t\t\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\t\t\tid: 3\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\toptions: {\n\t\t\t\t\t\t\t\ttype: \"MethodOptions\",\n\t\t\t\t\t\t\t\tid: 4\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tclient_streaming: {\n\t\t\t\t\t\t\t\ttype: \"bool\",\n\t\t\t\t\t\t\t\tid: 5\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tserver_streaming: {\n\t\t\t\t\t\t\t\ttype: \"bool\",\n\t\t\t\t\t\t\t\tid: 6\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\tFileOptions: {\n\t\t\t\t\t\tfields: {\n\t\t\t\t\t\t\tjava_package: {\n\t\t\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\t\t\tid: 1\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tjava_outer_classname: {\n\t\t\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\t\t\tid: 8\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tjava_multiple_files: {\n\t\t\t\t\t\t\t\ttype: \"bool\",\n\t\t\t\t\t\t\t\tid: 10\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tjava_generate_equals_and_hash: {\n\t\t\t\t\t\t\t\ttype: \"bool\",\n\t\t\t\t\t\t\t\tid: 20,\n\t\t\t\t\t\t\t\toptions: {\n\t\t\t\t\t\t\t\t\tdeprecated: true\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tjava_string_check_utf8: {\n\t\t\t\t\t\t\t\ttype: \"bool\",\n\t\t\t\t\t\t\t\tid: 27\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\toptimize_for: {\n\t\t\t\t\t\t\t\ttype: \"OptimizeMode\",\n\t\t\t\t\t\t\t\tid: 9,\n\t\t\t\t\t\t\t\toptions: {\n\t\t\t\t\t\t\t\t\t\"default\": \"SPEED\"\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tgo_package: {\n\t\t\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\t\t\tid: 11\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tcc_generic_services: {\n\t\t\t\t\t\t\t\ttype: \"bool\",\n\t\t\t\t\t\t\t\tid: 16\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tjava_generic_services: {\n\t\t\t\t\t\t\t\ttype: \"bool\",\n\t\t\t\t\t\t\t\tid: 17\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tpy_generic_services: {\n\t\t\t\t\t\t\t\ttype: \"bool\",\n\t\t\t\t\t\t\t\tid: 18\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tdeprecated: {\n\t\t\t\t\t\t\t\ttype: \"bool\",\n\t\t\t\t\t\t\t\tid: 23\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tcc_enable_arenas: {\n\t\t\t\t\t\t\t\ttype: \"bool\",\n\t\t\t\t\t\t\t\tid: 31\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tobjc_class_prefix: {\n\t\t\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\t\t\tid: 36\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tcsharp_namespace: {\n\t\t\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\t\t\tid: 37\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tuninterpreted_option: {\n\t\t\t\t\t\t\t\trule: \"repeated\",\n\t\t\t\t\t\t\t\ttype: \"UninterpretedOption\",\n\t\t\t\t\t\t\t\tid: 999\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t\textensions: [\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t1000,\n\t\t\t\t\t\t\t\t536870911\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t],\n\t\t\t\t\t\treserved: [\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t38,\n\t\t\t\t\t\t\t\t38\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t],\n\t\t\t\t\t\tnested: {\n\t\t\t\t\t\t\tOptimizeMode: {\n\t\t\t\t\t\t\t\tvalues: {\n\t\t\t\t\t\t\t\t\tSPEED: 1,\n\t\t\t\t\t\t\t\t\tCODE_SIZE: 2,\n\t\t\t\t\t\t\t\t\tLITE_RUNTIME: 3\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\tMessageOptions: {\n\t\t\t\t\t\tfields: {\n\t\t\t\t\t\t\tmessage_set_wire_format: {\n\t\t\t\t\t\t\t\ttype: \"bool\",\n\t\t\t\t\t\t\t\tid: 1\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tno_standard_descriptor_accessor: {\n\t\t\t\t\t\t\t\ttype: \"bool\",\n\t\t\t\t\t\t\t\tid: 2\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tdeprecated: {\n\t\t\t\t\t\t\t\ttype: \"bool\",\n\t\t\t\t\t\t\t\tid: 3\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tmap_entry: {\n\t\t\t\t\t\t\t\ttype: \"bool\",\n\t\t\t\t\t\t\t\tid: 7\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tuninterpreted_option: {\n\t\t\t\t\t\t\t\trule: \"repeated\",\n\t\t\t\t\t\t\t\ttype: \"UninterpretedOption\",\n\t\t\t\t\t\t\t\tid: 999\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t\textensions: [\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t1000,\n\t\t\t\t\t\t\t\t536870911\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t],\n\t\t\t\t\t\treserved: [\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t8,\n\t\t\t\t\t\t\t\t8\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t]\n\t\t\t\t\t},\n\t\t\t\t\tFieldOptions: {\n\t\t\t\t\t\tfields: {\n\t\t\t\t\t\t\tctype: {\n\t\t\t\t\t\t\t\ttype: \"CType\",\n\t\t\t\t\t\t\t\tid: 1,\n\t\t\t\t\t\t\t\toptions: {\n\t\t\t\t\t\t\t\t\t\"default\": \"STRING\"\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tpacked: {\n\t\t\t\t\t\t\t\ttype: \"bool\",\n\t\t\t\t\t\t\t\tid: 2\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tjstype: {\n\t\t\t\t\t\t\t\ttype: \"JSType\",\n\t\t\t\t\t\t\t\tid: 6,\n\t\t\t\t\t\t\t\toptions: {\n\t\t\t\t\t\t\t\t\t\"default\": \"JS_NORMAL\"\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tlazy: {\n\t\t\t\t\t\t\t\ttype: \"bool\",\n\t\t\t\t\t\t\t\tid: 5\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tdeprecated: {\n\t\t\t\t\t\t\t\ttype: \"bool\",\n\t\t\t\t\t\t\t\tid: 3\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tweak: {\n\t\t\t\t\t\t\t\ttype: \"bool\",\n\t\t\t\t\t\t\t\tid: 10\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tuninterpreted_option: {\n\t\t\t\t\t\t\t\trule: \"repeated\",\n\t\t\t\t\t\t\t\ttype: \"UninterpretedOption\",\n\t\t\t\t\t\t\t\tid: 999\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t\textensions: [\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t1000,\n\t\t\t\t\t\t\t\t536870911\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t],\n\t\t\t\t\t\treserved: [\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t4,\n\t\t\t\t\t\t\t\t4\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t],\n\t\t\t\t\t\tnested: {\n\t\t\t\t\t\t\tCType: {\n\t\t\t\t\t\t\t\tvalues: {\n\t\t\t\t\t\t\t\t\tSTRING: 0,\n\t\t\t\t\t\t\t\t\tCORD: 1,\n\t\t\t\t\t\t\t\t\tSTRING_PIECE: 2\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tJSType: {\n\t\t\t\t\t\t\t\tvalues: {\n\t\t\t\t\t\t\t\t\tJS_NORMAL: 0,\n\t\t\t\t\t\t\t\t\tJS_STRING: 1,\n\t\t\t\t\t\t\t\t\tJS_NUMBER: 2\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\tOneofOptions: {\n\t\t\t\t\t\tfields: {\n\t\t\t\t\t\t\tuninterpreted_option: {\n\t\t\t\t\t\t\t\trule: \"repeated\",\n\t\t\t\t\t\t\t\ttype: \"UninterpretedOption\",\n\t\t\t\t\t\t\t\tid: 999\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t\textensions: [\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t1000,\n\t\t\t\t\t\t\t\t536870911\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t]\n\t\t\t\t\t},\n\t\t\t\t\tEnumOptions: {\n\t\t\t\t\t\tfields: {\n\t\t\t\t\t\t\tallow_alias: {\n\t\t\t\t\t\t\t\ttype: \"bool\",\n\t\t\t\t\t\t\t\tid: 2\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tdeprecated: {\n\t\t\t\t\t\t\t\ttype: \"bool\",\n\t\t\t\t\t\t\t\tid: 3\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tuninterpreted_option: {\n\t\t\t\t\t\t\t\trule: \"repeated\",\n\t\t\t\t\t\t\t\ttype: \"UninterpretedOption\",\n\t\t\t\t\t\t\t\tid: 999\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t\textensions: [\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t1000,\n\t\t\t\t\t\t\t\t536870911\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t]\n\t\t\t\t\t},\n\t\t\t\t\tEnumValueOptions: {\n\t\t\t\t\t\tfields: {\n\t\t\t\t\t\t\tdeprecated: {\n\t\t\t\t\t\t\t\ttype: \"bool\",\n\t\t\t\t\t\t\t\tid: 1\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tuninterpreted_option: {\n\t\t\t\t\t\t\t\trule: \"repeated\",\n\t\t\t\t\t\t\t\ttype: \"UninterpretedOption\",\n\t\t\t\t\t\t\t\tid: 999\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t\textensions: [\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t1000,\n\t\t\t\t\t\t\t\t536870911\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t]\n\t\t\t\t\t},\n\t\t\t\t\tServiceOptions: {\n\t\t\t\t\t\tfields: {\n\t\t\t\t\t\t\tdeprecated: {\n\t\t\t\t\t\t\t\ttype: \"bool\",\n\t\t\t\t\t\t\t\tid: 33\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tuninterpreted_option: {\n\t\t\t\t\t\t\t\trule: \"repeated\",\n\t\t\t\t\t\t\t\ttype: \"UninterpretedOption\",\n\t\t\t\t\t\t\t\tid: 999\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t\textensions: [\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t1000,\n\t\t\t\t\t\t\t\t536870911\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t]\n\t\t\t\t\t},\n\t\t\t\t\tMethodOptions: {\n\t\t\t\t\t\tfields: {\n\t\t\t\t\t\t\tdeprecated: {\n\t\t\t\t\t\t\t\ttype: \"bool\",\n\t\t\t\t\t\t\t\tid: 33\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tuninterpreted_option: {\n\t\t\t\t\t\t\t\trule: \"repeated\",\n\t\t\t\t\t\t\t\ttype: \"UninterpretedOption\",\n\t\t\t\t\t\t\t\tid: 999\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t\textensions: [\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t1000,\n\t\t\t\t\t\t\t\t536870911\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t]\n\t\t\t\t\t},\n\t\t\t\t\tUninterpretedOption: {\n\t\t\t\t\t\tfields: {\n\t\t\t\t\t\t\tname: {\n\t\t\t\t\t\t\t\trule: \"repeated\",\n\t\t\t\t\t\t\t\ttype: \"NamePart\",\n\t\t\t\t\t\t\t\tid: 2\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tidentifier_value: {\n\t\t\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\t\t\tid: 3\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tpositive_int_value: {\n\t\t\t\t\t\t\t\ttype: \"uint64\",\n\t\t\t\t\t\t\t\tid: 4\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tnegative_int_value: {\n\t\t\t\t\t\t\t\ttype: \"int64\",\n\t\t\t\t\t\t\t\tid: 5\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tdouble_value: {\n\t\t\t\t\t\t\t\ttype: \"double\",\n\t\t\t\t\t\t\t\tid: 6\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tstring_value: {\n\t\t\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t\t\t\tid: 7\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\taggregate_value: {\n\t\t\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\t\t\tid: 8\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t\tnested: {\n\t\t\t\t\t\t\tNamePart: {\n\t\t\t\t\t\t\t\tfields: {\n\t\t\t\t\t\t\t\t\tname_part: {\n\t\t\t\t\t\t\t\t\t\trule: \"required\",\n\t\t\t\t\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\t\t\t\t\tid: 1\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tis_extension: {\n\t\t\t\t\t\t\t\t\t\trule: \"required\",\n\t\t\t\t\t\t\t\t\t\ttype: \"bool\",\n\t\t\t\t\t\t\t\t\t\tid: 2\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\tSourceCodeInfo: {\n\t\t\t\t\t\tfields: {\n\t\t\t\t\t\t\tlocation: {\n\t\t\t\t\t\t\t\trule: \"repeated\",\n\t\t\t\t\t\t\t\ttype: \"Location\",\n\t\t\t\t\t\t\t\tid: 1\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t\tnested: {\n\t\t\t\t\t\t\tLocation: {\n\t\t\t\t\t\t\t\tfields: {\n\t\t\t\t\t\t\t\t\tpath: {\n\t\t\t\t\t\t\t\t\t\trule: \"repeated\",\n\t\t\t\t\t\t\t\t\t\ttype: \"int32\",\n\t\t\t\t\t\t\t\t\t\tid: 1\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tspan: {\n\t\t\t\t\t\t\t\t\t\trule: \"repeated\",\n\t\t\t\t\t\t\t\t\t\ttype: \"int32\",\n\t\t\t\t\t\t\t\t\t\tid: 2\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tleading_comments: {\n\t\t\t\t\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\t\t\t\t\tid: 3\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\ttrailing_comments: {\n\t\t\t\t\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\t\t\t\t\tid: 4\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tleading_detached_comments: {\n\t\t\t\t\t\t\t\t\t\trule: \"repeated\",\n\t\t\t\t\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\t\t\t\t\tid: 6\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\tGeneratedCodeInfo: {\n\t\t\t\t\t\tfields: {\n\t\t\t\t\t\t\tannotation: {\n\t\t\t\t\t\t\t\trule: \"repeated\",\n\t\t\t\t\t\t\t\ttype: \"Annotation\",\n\t\t\t\t\t\t\t\tid: 1\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t\tnested: {\n\t\t\t\t\t\t\tAnnotation: {\n\t\t\t\t\t\t\t\tfields: {\n\t\t\t\t\t\t\t\t\tpath: {\n\t\t\t\t\t\t\t\t\t\trule: \"repeated\",\n\t\t\t\t\t\t\t\t\t\ttype: \"int32\",\n\t\t\t\t\t\t\t\t\t\tid: 1\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tsource_file: {\n\t\t\t\t\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\t\t\t\t\tid: 2\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tbegin: {\n\t\t\t\t\t\t\t\t\t\ttype: \"int32\",\n\t\t\t\t\t\t\t\t\t\tid: 3\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tend: {\n\t\t\t\t\t\t\t\t\t\ttype: \"int32\",\n\t\t\t\t\t\t\t\t\t\tid: 4\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\nvar MessagesJSON = {\n\tnested: nested\n};\n\nvar _a;\nclass DataManager {\n static load(settings) {\n return __awaiter(this, void 0, void 0, function* () {\n this.settings = settings;\n try {\n const { data } = yield axios__default[\"default\"].get(`https://data.onekey.so/config.json?noCache=${getTimeStamp()}`);\n this.deviceMap = {\n classic: data.classic,\n mini: data.mini,\n touch: data.touch,\n pro: data.pro,\n };\n this.assets = {\n bridge: data.bridge,\n };\n }\n catch (e) {\n }\n });\n }\n static getProtobufMessages() {\n return this.messages.default;\n }\n static getSettings(key) {\n if (!this.settings)\n return null;\n if (typeof key === 'string') {\n return this.settings[key];\n }\n return this.settings;\n }\n}\n_a = DataManager;\nDataManager.deviceMap = {\n classic: {\n firmware: [],\n ble: [],\n },\n mini: {\n firmware: [],\n ble: [],\n },\n touch: {\n firmware: [],\n ble: [],\n },\n pro: {\n firmware: [],\n ble: [],\n },\n};\nDataManager.assets = null;\nDataManager.messages = {\n default: MessagesJSON,\n};\nDataManager.getFirmwareStatus = (features) => {\n var _b, _c;\n const deviceType = getDeviceType(features);\n const deviceFirmwareVersion = getDeviceFirmwareVersion(features);\n if (features.firmware_present === false) {\n return 'none';\n }\n if (deviceType === 'classic' && features.bootloader_mode) {\n return 'unknown';\n }\n const targetDeviceConfigList = (_c = (_b = _a.deviceMap[deviceType]) === null || _b === void 0 ? void 0 : _b.firmware) !== null && _c !== void 0 ? _c : [];\n const latestFirmware = targetDeviceConfigList[targetDeviceConfigList.length - 1];\n if (!latestFirmware)\n return 'valid';\n const latestVersion = latestFirmware.version.join('.');\n const currentVersion = deviceFirmwareVersion.join('.');\n if (semver__default[\"default\"].gt(latestVersion, currentVersion)) {\n if (latestFirmware.required)\n return 'required';\n return 'outdated';\n }\n return 'valid';\n};\nDataManager.getBLEFirmwareStatus = (features) => {\n var _b, _c;\n const deviceType = getDeviceType(features);\n const deviceBLEFirmwareVersion = getDeviceBLEFirmwareVersion(features);\n if (!deviceBLEFirmwareVersion) {\n return 'none';\n }\n const targetDeviceConfigList = (_c = (_b = _a.deviceMap[deviceType]) === null || _b === void 0 ? void 0 : _b.ble) !== null && _c !== void 0 ? _c : [];\n const latestBLEFirmware = targetDeviceConfigList[targetDeviceConfigList.length - 1];\n if (!latestBLEFirmware)\n return 'valid';\n const latestVersion = latestBLEFirmware.version.join('.');\n const currentVersion = deviceBLEFirmwareVersion.join('.');\n if (semver__default[\"default\"].gt(latestVersion, currentVersion)) {\n if (latestBLEFirmware.required)\n return 'required';\n return 'outdated';\n }\n return 'valid';\n};\nDataManager.getTransportStatus = (localVersion) => {\n var _b, _c;\n const latestTransportVersion = (_c = (_b = _a.assets) === null || _b === void 0 ? void 0 : _b.bridge) === null || _c === void 0 ? void 0 : _c.version;\n if (!latestTransportVersion)\n return 'valid';\n const isLatest = semver__default[\"default\"].gte(localVersion, latestTransportVersion.join('.'));\n return isLatest ? 'valid' : 'outdated';\n};\n\nconst Log$4 = initLog('Transport');\nclass TransportManager {\n static load() {\n console.log('transport manager load');\n this.defaultMessages = DataManager.getProtobufMessages();\n this.currentMessages = this.defaultMessages;\n }\n static configure() {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n const env = DataManager.getSettings('env');\n Log$4.debug('Initializing transports');\n if (env === 'react-native') {\n if (!this.reactNativeInit) {\n yield this.transport.init();\n this.reactNativeInit = true;\n }\n else {\n Log$4.debug('React Native Do Not Initializing transports');\n }\n }\n else {\n yield this.transport.init();\n }\n Log$4.debug('Configuring transports');\n yield this.transport.configure(JSON.stringify(this.defaultMessages));\n Log$4.debug('Configuring transports done');\n }\n catch (error) {\n Log$4.debug('Initializing transports error: ', error);\n }\n });\n }\n static reconfigure(messages) {\n return __awaiter(this, void 0, void 0, function* () {\n if (Array.isArray(messages)) {\n messages = DataManager.getProtobufMessages();\n }\n if (this.currentMessages === messages || !messages) {\n return;\n }\n try {\n yield this.transport.configure(JSON.stringify(messages));\n this.currentMessages = messages;\n }\n catch (error) {\n throw TypedError('Transport_InvalidProtobuf', error.message);\n }\n });\n }\n static setTransport(TransportConstructor) {\n const env = DataManager.getSettings('env');\n if (env === 'react-native') {\n this.transport = new TransportConstructor({ scanTimeout: 3000 });\n }\n else {\n this.transport = new TransportConstructor();\n }\n console.log('set transport: ', this.transport);\n }\n static getTransport() {\n return this.transport;\n }\n static getDefaultMessages() {\n return this.defaultMessages;\n }\n static getCurrentMessages() {\n return this.currentMessages;\n }\n}\nTransportManager.reactNativeInit = false;\n\nconst CORE_EVENT = 'CORE_EVENT';\nconst parseMessage = (messageData) => {\n const { data } = messageData;\n const message = {\n event: data.event,\n type: data.type,\n payload: data.payload,\n };\n if (typeof messageData.id === 'number') {\n message.id = messageData.id;\n }\n if (typeof message.success === 'boolean') {\n message.success = data.success;\n }\n return message;\n};\nconst createErrorMessage = (error) => ({\n success: false,\n payload: {\n error: error.message,\n code: error.code,\n },\n});\n\nconst UI_EVENT = 'UI_EVENT';\nconst UI_REQUEST$1 = {\n REQUEST_PIN: 'ui-request_pin',\n INVALID_PIN: 'ui-invalid_pin',\n REQUEST_BUTTON: 'ui-button',\n CLOSE_UI_WINDOW: 'ui-close_window',\n BLUETOOTH_PERMISSION: 'ui-bluetooth_permission',\n LOCATION_PERMISSION: 'ui-location_permission',\n};\nconst createUiMessage = (type, payload) => ({\n event: UI_EVENT,\n type,\n payload,\n});\n\nconst IFRAME = {\n INIT: 'iframe-init',\n INIT_BRIDGE: 'iframe-init-bridge',\n CALL: 'iframe-call',\n};\nconst createIFrameMessage = (type, payload) => ({\n event: UI_EVENT,\n type,\n payload,\n});\n\nconst RESPONSE_EVENT = 'RESPONSE_EVENT';\nconst createResponseMessage = (id, success, payload) => ({\n event: RESPONSE_EVENT,\n type: RESPONSE_EVENT,\n id,\n success,\n payload: success ? payload : serializeError(payload),\n});\n\nconst UI_RESPONSE = {\n RECEIVE_PIN: 'ui-receive_pin',\n};\nconst createUiResponse = (type, payload) => ({\n event: UI_EVENT,\n type,\n payload,\n});\n\nconst DEVICE_EVENT = 'DEVICE_EVENT';\nconst DEVICE = {\n CONNECT: 'device-connect',\n CONNECT_UNACQUIRED: 'device-connect_unacquired',\n DISCONNECT: 'device-disconnect',\n CHANGED: 'device-changed',\n ACQUIRE: 'device-acquire',\n RELEASE: 'device-release',\n ACQUIRED: 'device-acquired',\n RELEASED: 'device-released',\n USED_ELSEWHERE: 'device-used_elsewhere',\n UNREADABLE: 'unreadable-device',\n LOADING: 'device-loading',\n BUTTON: 'button',\n PIN: 'pin',\n PASSPHRASE: 'passphrase',\n PASSPHRASE_ON_DEVICE: 'passphrase_on_device',\n WORD: 'word',\n};\nconst createDeviceMessage = (type, payload) => ({\n event: DEVICE_EVENT,\n type,\n payload,\n});\n\nconst assertType = (res, resType) => {\n const splitResTypes = Array.isArray(resType) ? resType : resType.split('|');\n if (!splitResTypes.includes(res.type)) {\n throw TypedError('Runtime', `assertType: Response of unexpected type: ${res.type}. Should be ${resType}`);\n }\n};\nconst Log$3 = initLog('DeviceCommands');\nclass DeviceCommands {\n constructor(device, mainId) {\n this.device = device;\n this.mainId = mainId;\n this.transport = TransportManager.getTransport();\n this.disposed = false;\n }\n dispose() {\n this.disposed = true;\n this._cancelableRequest = undefined;\n }\n call(type, msg = {}) {\n return __awaiter(this, void 0, void 0, function* () {\n console.log('[DeviceCommands] [call] Sending', type, this.transport);\n try {\n const promise = this.transport.call(this.mainId, type, msg);\n this.callPromise = promise;\n const res = yield promise;\n Log$3.debug('[DeviceCommands] [call] Received', res.type);\n return res;\n }\n catch (error) {\n Log$3.debug('[DeviceCommands] [call] Received error', error);\n throw error;\n }\n });\n }\n typedCall(type, resType, msg) {\n return __awaiter(this, void 0, void 0, function* () {\n if (this.disposed) {\n throw TypedError('Runtime', 'typedCall: DeviceCommands already disposed');\n }\n const response = yield this._commonCall(type, msg);\n try {\n assertType(response, resType);\n }\n catch (error) {\n console.log('DeviceCommands typedcall error: ', error);\n throw error;\n }\n return response;\n });\n }\n _commonCall(type, msg) {\n return __awaiter(this, void 0, void 0, function* () {\n const resp = yield this.call(type, msg);\n return this._filterCommonTypes(resp);\n });\n }\n _filterCommonTypes(res) {\n console.log('_filterCommonTypes: ', res);\n if (res.type === 'Failure') {\n const { code } = res.message;\n let { message } = res.message;\n if (code === 'Failure_FirmwareError' && !message) {\n message = 'Firmware installation failed';\n }\n if (code === 'Failure_ActionCancelled' && !message) {\n message = 'Action cancelled by user';\n }\n return Promise.reject(new OnekeyError(code || 'Failure_UnknownCode', message || 'Failure_UnknownMessage'));\n }\n if (res.type === 'Features') {\n return Promise.resolve(res);\n }\n if (res.type === 'ButtonRequest') {\n if (res.message.code === 'ButtonRequest_PassphraseEntry') {\n this.device.emit(DEVICE.PASSPHRASE_ON_DEVICE, this.device);\n }\n else {\n this.device.emit(DEVICE.BUTTON, this.device, res.message);\n }\n return this._commonCall('ButtonAck', {});\n }\n if (res.type === 'EntropyRequest') ;\n if (res.type === 'PinMatrixRequest') {\n return this._promptPin(res.message.type).then(pin => {\n if (pin === '@@ONEKEY_INPUT_PIN_IN_DEVICE') {\n return this._commonCall('BixinPinInputOnDevice');\n }\n return this._commonCall('PinMatrixAck', { pin });\n }, () => this._commonCall('Cancel', {}));\n }\n if (res.type === 'PassphraseRequest') ;\n if (res.type === 'Deprecated_PassphraseStateRequest') ;\n if (res.type === 'WordRequest') ;\n return Promise.resolve(res);\n }\n _promptPin(type) {\n return new Promise((resolve, reject) => {\n if (this.device.listenerCount(DEVICE.PIN) > 0) {\n this._cancelableRequest = reject;\n this.device.emit(DEVICE.PIN, this.device, type, (err, pin) => {\n this._cancelableRequest = undefined;\n if (err) {\n reject(err);\n }\n else {\n resolve(pin);\n }\n });\n }\n else {\n console.warn('[DeviceCommands] [call] PIN callback not configured, cancelling request');\n reject(TypedError('Runtime', '_promptPin: PIN callback not configured'));\n }\n });\n }\n}\n\nconst UI_REQUEST = {\n BOOTLOADER: 'ui-device_bootloader_mode',\n NOT_IN_BOOTLOADER: 'ui-device_not_in_bootloader_mode',\n REQUIRE_MODE: 'ui-device_require_mode',\n INITIALIZE: 'ui-device_not_initialized',\n SEEDLESS: 'ui-device_seedless',\n FIRMWARE_OLD: 'ui-device_firmware_old',\n FIRMWARE_NOT_SUPPORTED: 'ui-device_firmware_unsupported',\n FIRMWARE_NOT_COMPATIBLE: 'ui-device_firmware_not_compatible',\n FIRMWARE_NOT_INSTALLED: 'ui-device_firmware_not_installed',\n NOT_USE_ONEKEY_DEVICE: 'ui-device_please_use_onekey_device',\n};\n\nconst VERSION = '1.0.0-alpha.1';\nconst DEFAULT_DOMAIN = `https://localhost:8088/`;\n\nconst DEFAULT_PRIORITY = 2;\nconst initialSettings = {\n configSrc: './data/config.json',\n version: VERSION,\n debug: false,\n priority: DEFAULT_PRIORITY,\n trustedHost: false,\n connectSrc: DEFAULT_DOMAIN,\n iframeSrc: `${DEFAULT_DOMAIN}iframe.html`,\n parentOrigin: window.location ? window.location.origin : '',\n supportedBrowser: typeof navigator !== 'undefined' ? !/Trident|MSIE|Edge/.test(navigator.userAgent) : true,\n env: 'web',\n lazyLoad: false,\n timestamp: new Date().getTime(),\n};\nconst getEnv = () => {\n if (typeof chrome !== 'undefined' &&\n chrome.runtime &&\n typeof chrome.runtime.onConnect !== 'undefined') {\n return 'webextension';\n }\n if (typeof navigator !== 'undefined') {\n if (typeof navigator.product === 'string' &&\n navigator.product.toLowerCase() === 'reactnative') {\n return 'react-native';\n }\n const userAgent = navigator.userAgent.toLowerCase();\n if (userAgent.indexOf(' electron/') > -1) {\n return 'electron';\n }\n }\n return 'web';\n};\nconst corsValidator = (url) => {\n if (typeof url !== 'string')\n return;\n if (url.match(/^https:\\/\\/([A-Za-z0-9\\-_]+\\.)*onekey\\.so\\//))\n return url;\n if (url.match(/^https?:\\/\\/localhost:[58][0-9]{3}\\//))\n return url;\n return url;\n};\nconst parseConnectSettings = (input = {}) => {\n const settings = Object.assign({}, initialSettings);\n if (Object.prototype.hasOwnProperty.call(input, 'debug')) {\n settings.debug = input.debug;\n }\n if (input.isFrame) {\n settings.parentOrigin = input.parentOrigin;\n }\n if (typeof input.connectSrc === 'string') {\n settings.connectSrc = input.connectSrc;\n }\n let globalSrc;\n if (typeof window !== 'undefined') {\n globalSrc = window.ONEKEY_CONNECT_SRC;\n }\n else if (typeof global !== 'undefined') {\n globalSrc = global.ONEKEY_CONNECT_SRC;\n }\n if (typeof globalSrc === 'string') {\n settings.connectSrc = corsValidator(globalSrc);\n settings.debug = true;\n }\n const src = settings.connectSrc || DEFAULT_DOMAIN;\n settings.iframeSrc = `${src}iframe.html`;\n if (input.transportReconnect) {\n settings.transportReconnect = input.transportReconnect;\n }\n if (input.lazyLoad) {\n settings.lazyLoad = input.lazyLoad;\n }\n if (typeof input.env === 'string') {\n settings.env = input.env;\n }\n else {\n settings.env = getEnv();\n }\n if (input.timestamp) {\n settings.timestamp = input.timestamp;\n }\n return settings;\n};\n\nconst parseRunOptions = (options) => {\n if (!options)\n options = {};\n return options;\n};\nconst Log$2 = initLog('Device');\nclass Device extends events.exports {\n constructor(descriptor) {\n super();\n this.deviceConnector = null;\n this.features = undefined;\n this.featuresNeedsReload = false;\n this.externalState = [];\n this.unavailableCapabilities = {};\n this.instance = 0;\n this.internalState = [];\n this.loaded = false;\n this.needReloadDevice = false;\n this.keepSession = false;\n this.originalDescriptor = descriptor;\n }\n static fromDescriptor(originalDescriptor) {\n const descriptor = Object.assign({}, originalDescriptor);\n return new Device(descriptor);\n }\n toMessageObject() {\n if (this.isUnacquired() || !this.features)\n return null;\n const env = DataManager.getSettings('env');\n return {\n connectId: env === 'react-native' ? this.mainId || null : getDeviceUUID(this.features),\n uuid: getDeviceUUID(this.features),\n deviceType: getDeviceType(this.features),\n deviceId: this.features.device_id || null,\n path: this.originalDescriptor.path,\n name: this.features.ble_name ||\n this.features.label ||\n `OneKey ${getDeviceType(this.features).toUpperCase()}`,\n label: getDeviceLabel(this.features),\n mode: this.getMode(),\n features: this.features,\n firmwareVersion: this.getFirmwareVersion(),\n bleFirmwareVersion: this.getBLEFirmwareVersion(),\n unavailableCapabilities: this.unavailableCapabilities,\n };\n }\n connect() {\n const env = DataManager.getSettings('env');\n return new Promise((resolve) => __awaiter(this, void 0, void 0, function* () {\n if (env === 'react-native') {\n try {\n yield this.acquire();\n resolve(true);\n }\n catch (error) {\n resolve(error);\n }\n return;\n }\n if (!this.mainId || (!this.isUsedHere() && this.originalDescriptor)) {\n try {\n yield this.acquire();\n resolve(true);\n }\n catch (error) {\n resolve(error);\n }\n return;\n }\n if (this.isUsedHere()) {\n resolve(true);\n return;\n }\n resolve(false);\n }));\n }\n acquire() {\n var _a, _b, _c, _d;\n return __awaiter(this, void 0, void 0, function* () {\n const env = DataManager.getSettings('env');\n const mainIdKey = env === 'react-native' ? 'id' : 'session';\n try {\n if (env === 'react-native') {\n const res = yield ((_a = this.deviceConnector) === null || _a === void 0 ? void 0 : _a.acquire(this.originalDescriptor.id));\n this.mainId = (_b = res.uuid) !== null && _b !== void 0 ? _b : '';\n Log$2.debug('Expected uuid:', this.mainId);\n }\n else {\n this.mainId = yield ((_c = this.deviceConnector) === null || _c === void 0 ? void 0 : _c.acquire(this.originalDescriptor.path, this.originalDescriptor.session));\n Log$2.debug('Expected session id:', this.mainId);\n }\n this.updateDescriptor({ [mainIdKey]: this.mainId });\n if (this.commands) {\n this.commands.dispose();\n }\n this.commands = new DeviceCommands(this, (_d = this.mainId) !== null && _d !== void 0 ? _d : '');\n }\n catch (error) {\n if (this.runPromise) {\n this.runPromise.reject(error);\n }\n else {\n throw error;\n }\n this.runPromise = null;\n }\n });\n }\n release() {\n var _a;\n return __awaiter(this, void 0, void 0, function* () {\n const env = DataManager.getSettings('env');\n if ((this.isUsedHere() && !this.keepSession && this.mainId) ||\n (this.mainId && env === 'react-native')) {\n if (this.commands) {\n this.commands.dispose();\n if (this.commands.callPromise) {\n try {\n yield this.commands.callPromise;\n }\n catch (error) {\n this.commands.callPromise = undefined;\n }\n }\n }\n try {\n yield ((_a = this.deviceConnector) === null || _a === void 0 ? void 0 : _a.release(this.mainId, false));\n this.updateDescriptor({ session: null });\n }\n catch (err) {\n Log$2.error('[Device] release error: ', err);\n }\n finally {\n this.needReloadDevice = true;\n }\n }\n });\n }\n getInternalState() {\n return this.internalState[this.instance];\n }\n initialize() {\n return __awaiter(this, void 0, void 0, function* () {\n let payload;\n if (this.features) {\n const internalState = this.getInternalState();\n payload = {};\n if (internalState) {\n payload.session_id = internalState;\n }\n }\n const { message } = yield this.commands.typedCall('Initialize', 'Features', payload);\n this._updateFeatures(message);\n });\n }\n getFeatures() {\n return __awaiter(this, void 0, void 0, function* () {\n const { message } = yield this.commands.typedCall('GetFeatures', 'Features', {});\n this._updateFeatures(message);\n });\n }\n _updateFeatures(feat) {\n if (this.features && this.features.session_id && !feat.session_id) {\n feat.session_id = this.features.session_id;\n }\n feat.unlocked = feat.unlocked || true;\n this.features = feat;\n this.featuresNeedsReload = false;\n }\n updateDescriptor(descriptor) {\n const env = DataManager.getSettings('env');\n if (env === 'react-native') {\n return;\n }\n const originalSession = this.originalDescriptor.session;\n const upcomingSession = descriptor.session;\n if (originalSession !== upcomingSession) {\n this.originalDescriptor.session = upcomingSession;\n }\n }\n run(fn, options) {\n return __awaiter(this, void 0, void 0, function* () {\n if (this.runPromise) {\n Log$2.error('[Device] run error:', 'Device is running');\n throw TypedError('Device_CallInProgress');\n }\n options = parseRunOptions(options);\n this.runPromise = create(this._runInner.bind(this, fn, options));\n return this.runPromise.promise;\n });\n }\n _runInner(fn, options) {\n return __awaiter(this, void 0, void 0, function* () {\n if (!this.isUsedHere() || this.commands.disposed) {\n yield this.acquire();\n try {\n if (fn) {\n yield this.initialize();\n }\n }\n catch (error) {\n this.runPromise = null;\n return Promise.reject(TypedError('Device_InitializeFailed', `Initialize failed: ${error.message}, code: ${error.code}`));\n }\n }\n if (options.keepSession) {\n this.keepSession = true;\n }\n if (fn) {\n yield fn();\n }\n if (this.loaded && this.features) {\n yield this.getFeatures();\n }\n if ((!this.keepSession && typeof options.keepSession !== 'boolean') ||\n options.keepSession === false) {\n this.keepSession = false;\n yield this.release();\n Log$2.debug('release device, mainId: ', this.mainId);\n }\n if (this.runPromise) {\n this.runPromise.resolve();\n }\n this.runPromise = null;\n if (!this.loaded) {\n this.loaded = true;\n }\n });\n }\n getMode() {\n var _a, _b, _c;\n if ((_a = this.features) === null || _a === void 0 ? void 0 : _a.bootloader_mode)\n return 'bootloader';\n if (!((_b = this.features) === null || _b === void 0 ? void 0 : _b.initialized))\n return 'initialize';\n if ((_c = this.features) === null || _c === void 0 ? void 0 : _c.no_backup)\n return 'seedless';\n return 'normal';\n }\n getFirmwareVersion() {\n if (!this.features)\n return null;\n return getDeviceFirmwareVersion(this.features);\n }\n getBLEFirmwareVersion() {\n if (!this.features)\n return null;\n return getDeviceBLEFirmwareVersion(this.features);\n }\n isUsed() {\n return typeof this.originalDescriptor.session === 'string';\n }\n isUsedHere() {\n const env = DataManager.getSettings('env');\n if (env === 'react-native') {\n return false;\n }\n return this.isUsed() && this.originalDescriptor.session === this.mainId;\n }\n isUsedElsewhere() {\n return this.isUsed() && !this.isUsedHere();\n }\n isBootloader() {\n return this.features && !!this.features.bootloader_mode;\n }\n isInitialized() {\n return this.features && !!this.features.initialized;\n }\n isSeedless() {\n return this.features && !!this.features.no_backup;\n }\n isUnacquired() {\n return this.features === undefined;\n }\n hasUnexpectedMode(allow, require) {\n if (this.features) {\n if (this.isBootloader() && !allow.includes(UI_REQUEST.BOOTLOADER)) {\n return UI_REQUEST.BOOTLOADER;\n }\n if (!this.isInitialized() && !allow.includes(UI_REQUEST.INITIALIZE)) {\n return UI_REQUEST.INITIALIZE;\n }\n if (this.isSeedless() && !allow.includes(UI_REQUEST.SEEDLESS)) {\n return UI_REQUEST.SEEDLESS;\n }\n if (!this.isBootloader() && require.includes(UI_REQUEST.BOOTLOADER)) {\n return UI_REQUEST.NOT_IN_BOOTLOADER;\n }\n }\n return null;\n }\n}\n\nclass DeviceList extends events.exports {\n constructor() {\n super(...arguments);\n this.devices = {};\n }\n getDeviceLists() {\n var e_1, _a;\n var _b, _c;\n return __awaiter(this, void 0, void 0, function* () {\n const deviceDiff = yield ((_b = this.connector) === null || _b === void 0 ? void 0 : _b.enumerate());\n const descriptorList = (_c = deviceDiff === null || deviceDiff === void 0 ? void 0 : deviceDiff.descriptors) !== null && _c !== void 0 ? _c : [];\n this.devices = {};\n const deviceList = [];\n console.log('get device list');\n try {\n for (var descriptorList_1 = __asyncValues(descriptorList), descriptorList_1_1; descriptorList_1_1 = yield descriptorList_1.next(), !descriptorList_1_1.done;) {\n const descriptor = descriptorList_1_1.value;\n const device = Device.fromDescriptor(descriptor);\n device.deviceConnector = this.connector;\n yield device.connect();\n yield device.initialize();\n yield device.release();\n deviceList.push(device);\n if (device.features) {\n const uuid = getDeviceUUID(device.features);\n this.devices[uuid] = device;\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (descriptorList_1_1 && !descriptorList_1_1.done && (_a = descriptorList_1.return)) yield _a.call(descriptorList_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return deviceList;\n });\n }\n allDevices() {\n return Object.keys(this.devices).map(key => this.devices[key]);\n }\n getDevice(connectId) {\n return this.devices[connectId];\n }\n}\n\nclass BaseMethod {\n constructor(message) {\n const { payload } = message;\n this.name = payload.method;\n this.payload = payload;\n this.responseID = message.id || 0;\n this.connectId = payload.connectId || '';\n this.useDevice = true;\n this.allowDeviceMode = [UI_REQUEST.INITIALIZE];\n this.requireDeviceMode = [];\n }\n setDevice(device) {\n this.device = device;\n this.connectId = device.originalDescriptor.path;\n }\n dispose() { }\n}\n\nclass SearchDevices extends BaseMethod {\n init() {\n this.useDevice = false;\n }\n run() {\n var e_1, _a;\n var _b, _c;\n return __awaiter(this, void 0, void 0, function* () {\n yield TransportManager.configure();\n const deviceDiff = yield ((_b = this.connector) === null || _b === void 0 ? void 0 : _b.enumerate());\n const devicesDescriptor = (_c = deviceDiff === null || deviceDiff === void 0 ? void 0 : deviceDiff.descriptors) !== null && _c !== void 0 ? _c : [];\n const env = DataManager.getSettings('env');\n if (env === 'react-native') {\n return devicesDescriptor.map(device => {\n var _a;\n return (Object.assign(Object.assign({}, device), { connectId: device.id, deviceType: getDeviceTypeByBleName((_a = device.name) !== null && _a !== void 0 ? _a : '') }));\n });\n }\n const devices = [];\n try {\n for (var devicesDescriptor_1 = __asyncValues(devicesDescriptor), devicesDescriptor_1_1; devicesDescriptor_1_1 = yield devicesDescriptor_1.next(), !devicesDescriptor_1_1.done;) {\n const descriptor = devicesDescriptor_1_1.value;\n const device = Device.fromDescriptor(descriptor);\n device.deviceConnector = this.connector;\n yield device.connect();\n yield device.initialize();\n yield device.release();\n devices.push(device);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (devicesDescriptor_1_1 && !devicesDescriptor_1_1.done && (_a = devicesDescriptor_1.return)) yield _a.call(devicesDescriptor_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return devices.map(device => device.toMessageObject());\n });\n }\n}\n\nclass GetFeatures extends BaseMethod {\n init() {\n this.allowDeviceMode = [...this.allowDeviceMode, UI_REQUEST.INITIALIZE, UI_REQUEST.BOOTLOADER];\n }\n run() {\n return Promise.resolve(this.device.features);\n }\n}\n\nconst hasHexPrefix = (str) => str.slice(0, 2).toLowerCase() === '0x';\nconst stripHexPrefix = (str) => (hasHexPrefix(str) ? str.slice(2) : str);\nconst addHexPrefix = (str) => (hasHexPrefix(str) ? str : `0x${str}`);\nconst isHexString = (value, length) => {\n if (typeof value !== 'string' || !value.match(/^(0x|0X)?[0-9A-Fa-f]*$/)) {\n return false;\n }\n if (length && value.length !== 2 + 2 * length) {\n return false;\n }\n return true;\n};\nconst stripHexStartZeroes = (str) => {\n while (/^00/.test(str)) {\n str = str.slice(2);\n }\n return str;\n};\nconst modifyValues = (object, transformer) => Object.fromEntries(Object.entries(object).map(([key, value]) => [key, transformer(value, key)]));\nconst formatAnyHex = value => {\n if (typeof value === 'string') {\n let stripped = stripHexPrefix(value);\n if (stripped.length % 2 !== 0) {\n stripped = `0${stripped}`;\n }\n return stripped;\n }\n if (Array.isArray(value)) {\n return value.map(formatAnyHex);\n }\n if (typeof value === 'object') {\n return modifyValues(value, value => formatAnyHex(value));\n }\n console.log('unexpected value', value);\n return value;\n};\n\nconst invalidParameter = (message) => TypedError('Method_InvalidParameter', message);\nconst validateParams = (values, fields) => {\n fields.forEach(field => {\n const existsProp = Object.prototype.hasOwnProperty.call(values, field.name);\n if (!existsProp && field.required) {\n throw invalidParameter(`Missing required parameter: ${field.name}`);\n }\n const value = values[field.name];\n if (value && field.type) {\n switch (field.type) {\n case 'array':\n if (!Array.isArray(value)) {\n throw invalidParameter(`Parameter [${field.name}] is of type invalid and should be [${field.type}].`);\n }\n else if (!field.allowEmpty && value.length < 1) {\n throw invalidParameter(`Parameter \"${field.name}\" is empty.`);\n }\n break;\n case 'bigNumber':\n if (typeof value !== 'string') {\n throw invalidParameter(`Parameter [${field.name}] is of type invalid and should be [string].`);\n }\n try {\n const bn = new BigNumber__default[\"default\"](value);\n if (bn.toFixed(0) !== value) {\n throw new Error('');\n }\n }\n catch (error) {\n throw invalidParameter(`Parameter [${field.name}] is of type invalid and should be [${field.type}].`);\n }\n break;\n case 'buffer':\n if (typeof value === 'undefined' ||\n (typeof value.constructor.isBuffer === 'function' && value.constructor.isBuffer(value))) {\n throw invalidParameter(`Parameter [${field.name}] is of type invalid and should be [buffer].`);\n }\n break;\n case 'hexString':\n if (typeof value !== 'string' || !isHexString(addHexPrefix(value))) {\n throw invalidParameter(`Parameter [${field.name}] is of type invalid and should be [${field.type}].`);\n }\n break;\n default:\n if (typeof value !== field.type) {\n throw invalidParameter(`Parameter [${field.name}] is of type invalid and should be [${field.type}].`);\n }\n break;\n }\n }\n });\n};\n\nvar bitcoin = [\n\t{\n\t\tname: \"Bitcoin\",\n\t\tlabel: \"BTC\",\n\t\tslip44: 0\n\t},\n\t{\n\t\tname: \"Regtest\",\n\t\tlabel: \"REGTEST\",\n\t\tslip44: 1\n\t},\n\t{\n\t\tname: \"Testnet\",\n\t\tlabel: \"TEST\",\n\t\tslip44: 1\n\t},\n\t{\n\t\tname: \"Actinium\",\n\t\tlabel: \"ACM\",\n\t\tslip44: 228\n\t},\n\t{\n\t\tname: \"Axe\",\n\t\tlabel: \"AXE\",\n\t\tslip44: 4242\n\t},\n\t{\n\t\tname: \"Bitcore\",\n\t\tlabel: \"BTX\",\n\t\tslip44: 160\n\t},\n\t{\n\t\tname: \"Dash\",\n\t\tlabel: \"DASH\",\n\t\tslip44: 5\n\t},\n\t{\n\t\tname: \"Dash Testnet\",\n\t\tlabel: \"tDASH\",\n\t\tslip44: 1\n\t},\n\t{\n\t\tname: \"Decred\",\n\t\tlabel: \"DCR\",\n\t\tslip44: 42\n\t},\n\t{\n\t\tname: \"Decred Testnet\",\n\t\tlabel: \"TDCR\",\n\t\tslip44: 1\n\t},\n\t{\n\t\tname: \"DigiByte\",\n\t\tlabel: \"DGB\",\n\t\tslip44: 20\n\t},\n\t{\n\t\tname: \"Dogecoin\",\n\t\tlabel: \"DOGE\",\n\t\tslip44: 3\n\t},\n\t{\n\t\tname: \"Feathercoin\",\n\t\tlabel: \"FTC\",\n\t\tslip44: 8\n\t},\n\t{\n\t\tname: \"Firo\",\n\t\tlabel: \"FIRO\",\n\t\tslip44: 136\n\t},\n\t{\n\t\tname: \"Firo Testnet\",\n\t\tlabel: \"tFIRO\",\n\t\tslip44: 1\n\t},\n\t{\n\t\tname: \"Fujicoin\",\n\t\tlabel: \"FJC\",\n\t\tslip44: 75\n\t},\n\t{\n\t\tname: \"GameCredits\",\n\t\tlabel: \"GAME\",\n\t\tslip44: 101\n\t},\n\t{\n\t\tname: \"Komodo\",\n\t\tlabel: \"KMD\",\n\t\tslip44: 141\n\t},\n\t{\n\t\tname: \"Koto\",\n\t\tlabel: \"KOTO\",\n\t\tslip44: 510\n\t},\n\t{\n\t\tname: \"Litecoin\",\n\t\tlabel: \"LTC\",\n\t\tslip44: 2\n\t},\n\t{\n\t\tname: \"Litecoin Testnet\",\n\t\tlabel: \"tLTC\",\n\t\tslip44: 1\n\t},\n\t{\n\t\tname: \"Monacoin\",\n\t\tlabel: \"MONA\",\n\t\tslip44: 22\n\t},\n\t{\n\t\tname: \"MonetaryUnit\",\n\t\tlabel: \"MUE\",\n\t\tslip44: 31\n\t},\n\t{\n\t\tname: \"NIX\",\n\t\tlabel: \"NIX\",\n\t\tslip44: 400\n\t},\n\t{\n\t\tname: \"Namecoin\",\n\t\tlabel: \"NMC\",\n\t\tslip44: 7\n\t},\n\t{\n\t\tname: \"Peercoin\",\n\t\tlabel: \"PPC\",\n\t\tslip44: 6\n\t},\n\t{\n\t\tname: \"Peercoin Testnet\",\n\t\tlabel: \"tPPC\",\n\t\tslip44: 1\n\t},\n\t{\n\t\tname: \"Polis\",\n\t\tlabel: \"POLIS\",\n\t\tslip44: 1997\n\t},\n\t{\n\t\tname: \"Primecoin\",\n\t\tlabel: \"XPM\",\n\t\tslip44: 24\n\t},\n\t{\n\t\tname: \"Ravencoin\",\n\t\tlabel: \"RVN\",\n\t\tslip44: 175\n\t},\n\t{\n\t\tname: \"Ritocoin\",\n\t\tlabel: \"RITO\",\n\t\tslip44: 19169\n\t},\n\t{\n\t\tname: \"Stakenet\",\n\t\tlabel: \"XSN\",\n\t\tslip44: 199\n\t},\n\t{\n\t\tname: \"Syscoin\",\n\t\tlabel: \"SYS\",\n\t\tslip44: 57\n\t},\n\t{\n\t\tname: \"Unobtanium\",\n\t\tlabel: \"UNO\",\n\t\tslip44: 92\n\t},\n\t{\n\t\tname: \"Verge\",\n\t\tlabel: \"XVG\",\n\t\tslip44: 77\n\t},\n\t{\n\t\tname: \"Vertcoin\",\n\t\tlabel: \"VTC\",\n\t\tslip44: 28\n\t},\n\t{\n\t\tname: \"Viacoin\",\n\t\tlabel: \"VIA\",\n\t\tslip44: 14\n\t},\n\t{\n\t\tname: \"ZCore\",\n\t\tlabel: \"ZCR\",\n\t\tslip44: 428\n\t},\n\t{\n\t\tname: \"Zcash\",\n\t\tlabel: \"ZEC\",\n\t\tslip44: 133\n\t},\n\t{\n\t\tname: \"Zcash Testnet\",\n\t\tlabel: \"TAZ\",\n\t\tslip44: 1\n\t}\n];\n\nconst getCoinInfo = (path, coin) => {\n let coinInfo;\n if (coin) {\n const coinName = coin.toLowerCase();\n coinInfo = bitcoin.find(c => c.name.toLowerCase() === coinName || c.label.toLowerCase() === coinName);\n }\n else if (path) {\n const slip44 = fromHardened(path[1]);\n coinInfo = bitcoin.find(c => c.slip44 === slip44);\n }\n if (!coinInfo) {\n if (coin) {\n throw TypedError('Method_InvalidParameter', `Invalid coin name: ${coin}`);\n }\n else if (path) {\n throw TypedError('Method_InvalidParameter', `Invalid path: ${path[0]}`);\n }\n else {\n throw TypedError('Method_InvalidParameter');\n }\n }\n return coinInfo;\n};\nconst getCoinAndScriptType = (path, coin, multisig) => {\n const coinName = getCoinInfo(path, coin).name;\n let isMultisig = multisig;\n if (isMultisig === undefined) {\n isMultisig = isMultisigPath(path);\n }\n let scriptType = getScriptType(path);\n if (scriptType === 'SPENDMULTISIG' && !isMultisig) {\n scriptType = 'SPENDADDRESS';\n }\n return {\n coinName,\n scriptType: scriptType !== null && scriptType !== void 0 ? scriptType : 'SPENDADDRESS',\n };\n};\n\nclass BTCGetAddress extends BaseMethod {\n constructor() {\n super(...arguments);\n this.hasBundle = false;\n }\n init() {\n this.allowDeviceMode = [...this.allowDeviceMode, UI_REQUEST.INITIALIZE];\n this.hasBundle = Object.prototype.hasOwnProperty.call(this.payload, 'bundle');\n const payload = this.hasBundle ? this.payload : { bundle: [this.payload] };\n validateParams(payload, [{ name: 'bundle', type: 'array' }]);\n this.params = [];\n payload.bundle.forEach((batch) => {\n var _a;\n const addressN = validatePath(batch.path, 1);\n validateParams(batch, [\n { name: 'path', required: true },\n { name: 'coin', type: 'string' },\n { name: 'showOnOneKey', type: 'boolean' },\n { name: 'multisig', type: 'object' },\n { name: 'scriptType', type: 'string' },\n ]);\n const showOnOneKey = (_a = batch.showOnOneKey) !== null && _a !== void 0 ? _a : true;\n const { multisig, coin } = batch;\n let { scriptType } = batch;\n if (!scriptType) {\n scriptType = getScriptType(addressN);\n if (scriptType === 'SPENDMULTISIG' && !multisig) {\n scriptType = 'SPENDADDRESS';\n }\n }\n const coinName = getCoinInfo(addressN, coin).name;\n this.params.push({\n address_n: addressN,\n show_display: showOnOneKey,\n coin_name: coinName,\n multisig,\n script_type: scriptType || 'SPENDADDRESS',\n });\n });\n }\n run() {\n return __awaiter(this, void 0, void 0, function* () {\n const responses = [];\n for (let i = 0; i < this.params.length; i++) {\n const param = this.params[i];\n const res = yield this.device.commands.typedCall('GetAddress', 'Address', Object.assign({}, param));\n responses.push(Object.assign({ path: serializedPath(param.address_n) }, res.message));\n }\n return Promise.resolve(this.hasBundle ? responses : responses[0]);\n });\n }\n}\n\nclass BTCGetPublicKey extends BaseMethod {\n constructor() {\n super(...arguments);\n this.hasBundle = false;\n }\n init() {\n this.allowDeviceMode = [...this.allowDeviceMode, UI_REQUEST.INITIALIZE];\n this.hasBundle = Object.prototype.hasOwnProperty.call(this.payload, 'bundle');\n const payload = this.hasBundle ? this.payload : { bundle: [this.payload] };\n validateParams(payload, [{ name: 'bundle', type: 'array' }]);\n this.params = [];\n payload.bundle.forEach((batch) => {\n var _a;\n const addressN = validatePath(batch.path, 1);\n validateParams(batch, [\n { name: 'path', required: true },\n { name: 'coin', type: 'string' },\n { name: 'showOnOneKey', type: 'boolean' },\n { name: 'scriptType', type: 'string' },\n ]);\n const showOnOneKey = (_a = batch.showOnOneKey) !== null && _a !== void 0 ? _a : true;\n const { multisig, coin } = batch;\n let { scriptType } = batch;\n if (!scriptType) {\n scriptType = getScriptType(addressN);\n if (scriptType === 'SPENDMULTISIG' && !multisig) {\n scriptType = 'SPENDADDRESS';\n }\n }\n const coinName = getCoinInfo(addressN, coin).name;\n this.params.push({\n address_n: addressN,\n show_display: showOnOneKey,\n coin_name: coinName,\n script_type: scriptType || 'SPENDADDRESS',\n });\n });\n }\n run() {\n return __awaiter(this, void 0, void 0, function* () {\n const responses = [];\n for (let i = 0; i < this.params.length; i++) {\n const param = this.params[i];\n const res = yield this.device.commands.typedCall('GetPublicKey', 'PublicKey', Object.assign({}, param));\n responses.push(Object.assign({ path: serializedPath(param.address_n) }, res.message));\n }\n return Promise.resolve(this.hasBundle ? responses : responses[0]);\n });\n }\n}\n\nclass BTCSignMessage extends BaseMethod {\n init() {\n this.allowDeviceMode = [...this.allowDeviceMode, UI_REQUEST.INITIALIZE];\n validateParams(this.payload, [\n { name: 'path', required: true },\n { name: 'messageHex', type: 'hexString', required: true },\n { name: 'coin', type: 'string' },\n ]);\n const { path, messageHex, coin } = this.payload;\n const addressN = validatePath(path);\n const { coinName, scriptType } = getCoinAndScriptType(addressN, coin, false);\n this.params = {\n address_n: addressN,\n message: formatAnyHex(messageHex),\n coin_name: coinName,\n script_type: scriptType,\n };\n }\n run() {\n return __awaiter(this, void 0, void 0, function* () {\n const res = yield this.device.commands.typedCall('SignMessage', 'MessageSignature', Object.assign({}, this.params));\n return Promise.resolve(res.message);\n });\n }\n}\n\nconst requestPrevTxInfo$1 = ({ typedCall, txRequest: { request_type, details }, refTxs }) => {\n const { tx_hash } = details;\n if (!tx_hash) {\n throw TypedError('Runtime', 'requestPrevTxInfo: unknown details.tx_hash');\n }\n const tx = refTxs[tx_hash.toLowerCase()];\n if (!tx) {\n throw TypedError('Runtime', `requestPrevTxInfo: Requested unknown tx: ${tx_hash}`);\n }\n if (request_type === 'TXINPUT') {\n if (!tx.bin_outputs)\n throw TypedError('Runtime', `requestPrevTxInfo: Requested unknown TXINPUT: ${tx_hash}`);\n return typedCall('TxAckPrevInput', 'TxRequest', {\n tx: { input: tx.inputs[details.request_index] },\n });\n }\n if (request_type === 'TXOUTPUT') {\n if (!tx.bin_outputs)\n throw TypedError('Runtime', `requestPrevTxInfo: Requested unknown TXOUTPUT: ${tx_hash}`);\n return typedCall('TxAckPrevOutput', 'TxRequest', {\n tx: { output: tx.bin_outputs[details.request_index] },\n });\n }\n if (request_type === 'TXORIGINPUT') {\n if (!tx.outputs)\n throw TypedError('Runtime', `requestPrevTxInfo: Requested unknown TXORIGINPUT: ${tx_hash}`);\n return typedCall('TxAckInput', 'TxRequest', {\n tx: { input: tx.inputs[details.request_index] },\n });\n }\n if (request_type === 'TXORIGOUTPUT') {\n if (!tx.outputs)\n throw TypedError('Runtime', `requestPrevTxInfo: Requested unknown TXORIGOUTPUT: ${tx_hash}`);\n return typedCall('TxAckOutput', 'TxRequest', {\n tx: { output: tx.outputs[details.request_index] },\n });\n }\n if (request_type === 'TXEXTRADATA') {\n if (typeof details.extra_data_len !== 'number') {\n throw TypedError('Runtime', 'requestPrevTxInfo: Missing extra_data_len');\n }\n if (typeof details.extra_data_offset !== 'number') {\n throw TypedError('Runtime', 'requestPrevTxInfo: Missing extra_data_offset');\n }\n if (typeof tx.extra_data !== 'string') {\n throw TypedError('Runtime', `requestPrevTxInfo: No extra data for transaction ${tx.hash}`);\n }\n const data = tx.extra_data;\n const dataLen = details.extra_data_len;\n const dataOffset = details.extra_data_offset;\n const extra_data_chunk = data.substring(dataOffset * 2, (dataOffset + dataLen) * 2);\n return typedCall('TxAckPrevExtraData', 'TxRequest', { tx: { extra_data_chunk } });\n }\n if (request_type === 'TXMETA') {\n const data = tx.extra_data;\n const meta = {\n version: tx.version,\n lock_time: tx.lock_time,\n inputs_count: tx.inputs.length,\n outputs_count: tx.outputs ? tx.outputs.length : tx.bin_outputs.length,\n timestamp: tx.timestamp,\n version_group_id: tx.version_group_id,\n expiry: tx.expiry,\n branch_id: tx.branch_id,\n extra_data_len: data ? data.length / 2 : undefined,\n };\n return typedCall('TxAckPrevMeta', 'TxRequest', { tx: meta });\n }\n throw TypedError('Runtime', `requestPrevTxInfo: Unknown request type: ${request_type}`);\n};\nconst requestSignedTxInfo$1 = ({ typedCall, txRequest: { request_type, details }, inputs, outputs, }) => {\n if (request_type === 'TXINPUT') {\n return typedCall('TxAckInput', 'TxRequest', { tx: { input: inputs[details.request_index] } });\n }\n if (request_type === 'TXOUTPUT') {\n return typedCall('TxAckOutput', 'TxRequest', {\n tx: { output: outputs[details.request_index] },\n });\n }\n if (request_type === 'TXMETA') {\n throw TypedError('Runtime', 'requestSignedTxInfo: Cannot read TXMETA from signed transaction');\n }\n if (request_type === 'TXEXTRADATA') {\n throw TypedError('Runtime', 'requestSignedTxInfo: Cannot read TXEXTRADATA from signed transaction');\n }\n throw TypedError('Runtime', `requestSignedTxInfo: Unknown request type: ${request_type}`);\n};\nconst requestTxAck$1 = (props) => {\n const { tx_hash } = props.txRequest.details;\n if (tx_hash) {\n return requestPrevTxInfo$1(props);\n }\n return requestSignedTxInfo$1(props);\n};\nconst saveTxSignatures$1 = (serializedTx, signatures, txRequest) => {\n if (!txRequest)\n return;\n const { signature_index, signature, serialized_tx } = txRequest;\n if (serialized_tx) {\n serializedTx.push(serialized_tx);\n }\n if (typeof signature_index === 'number') {\n if (!signature) {\n throw TypedError('Runtime', 'saveTxSignatures: Unexpected null in trezor:TxRequestSerialized signature.');\n }\n signatures[signature_index] = signature;\n }\n};\nconst processTxRequest$1 = (props) => __awaiter(void 0, void 0, void 0, function* () {\n const { typedCall, txRequest, refTxs, inputs, outputs, serializedTx, signatures } = props;\n saveTxSignatures$1(serializedTx, signatures, txRequest.serialized);\n if (txRequest.request_type === 'TXFINISHED') {\n return Promise.resolve({\n signatures,\n serializedTx: serializedTx.join(''),\n });\n }\n const { message } = yield requestTxAck$1(props);\n return processTxRequest$1({\n typedCall,\n txRequest: message,\n refTxs,\n inputs,\n outputs,\n serializedTx,\n signatures,\n });\n});\nvar signtx = (typedCall, inputs, outputs, refTxsArray, options, coinName) => __awaiter(void 0, void 0, void 0, function* () {\n const refTxs = {};\n refTxsArray.forEach(tx => {\n refTxs[tx.hash.toLowerCase()] = tx;\n });\n const { message } = yield typedCall('SignTx', 'TxRequest', Object.assign(Object.assign({}, options), { inputs_count: inputs.length, outputs_count: outputs.length, coin_name: coinName }));\n return processTxRequest$1({\n typedCall,\n txRequest: message,\n refTxs,\n inputs,\n outputs,\n serializedTx: [],\n signatures: [],\n });\n});\n\nconst requestPrevTxInfo = ({ txRequest: { request_type, details }, refTxs, }) => {\n const { tx_hash } = details;\n if (!tx_hash) {\n throw TypedError('Runtime', 'requestPrevTxInfo: unknown details.tx_hash');\n }\n const tx = refTxs[tx_hash.toLowerCase()];\n if (!tx) {\n throw TypedError('Runtime', `requestPrevTxInfo: Requested unknown tx: ${tx_hash}`);\n }\n if (!tx.bin_outputs) {\n throw TypedError('Runtime', `requestPrevTxInfo: bin_outputs not set tx: ${tx_hash}`);\n }\n if (request_type === 'TXINPUT') {\n return { inputs: [tx.inputs[details.request_index]] };\n }\n if (request_type === 'TXOUTPUT') {\n return { bin_outputs: [tx.bin_outputs[details.request_index]] };\n }\n if (request_type === 'TXEXTRADATA') {\n if (typeof details.extra_data_len !== 'number') {\n throw TypedError('Runtime', 'requestPrevTxInfo: Missing extra_data_len');\n }\n if (typeof details.extra_data_offset !== 'number') {\n throw TypedError('Runtime', 'requestPrevTxInfo: Missing extra_data_offset');\n }\n if (typeof tx.extra_data !== 'string') {\n throw TypedError('Runtime', `requestPrevTxInfo: No extra data for transaction ${tx.hash}`);\n }\n const data = tx.extra_data;\n const dataLen = details.extra_data_len;\n const dataOffset = details.extra_data_offset;\n const extra_data = data.substring(dataOffset * 2, (dataOffset + dataLen) * 2);\n return { extra_data };\n }\n if (request_type === 'TXMETA') {\n const data = tx.extra_data;\n const meta = {\n version: tx.version,\n lock_time: tx.lock_time,\n inputs_cnt: tx.inputs.length,\n outputs_cnt: tx.bin_outputs.length,\n timestamp: tx.timestamp,\n version_group_id: tx.version_group_id,\n expiry: tx.expiry,\n branch_id: tx.branch_id,\n };\n if (typeof data === 'string' && data.length !== 0) {\n return Object.assign(Object.assign({}, meta), { extra_data_len: data.length / 2 });\n }\n return meta;\n }\n throw TypedError('Runtime', `requestPrevTxInfo: Unknown request type: ${request_type}`);\n};\nconst requestSignedTxInfo = ({ txRequest: { request_type, details }, inputs, outputs, }) => {\n if (request_type === 'TXINPUT') {\n return { inputs: [inputs[details.request_index]] };\n }\n if (request_type === 'TXOUTPUT') {\n return { outputs: [outputs[details.request_index]] };\n }\n if (request_type === 'TXMETA') {\n throw TypedError('Runtime', 'requestSignedTxInfo: Cannot read TXMETA from signed transaction');\n }\n if (request_type === 'TXEXTRADATA') {\n throw TypedError('Runtime', 'requestSignedTxInfo: Cannot read TXEXTRADATA from signed transaction');\n }\n throw TypedError('Runtime', `requestSignedTxInfo: Unknown request type: ${request_type}`);\n};\nconst requestTxAck = (props) => {\n const { tx_hash } = props.txRequest.details;\n if (tx_hash) {\n return requestPrevTxInfo(props);\n }\n return requestSignedTxInfo(props);\n};\nconst saveTxSignatures = (serializedTx, signatures, txRequest) => {\n if (!txRequest)\n return;\n const { signature_index, signature, serialized_tx } = txRequest;\n if (serialized_tx) {\n serializedTx.push(serialized_tx);\n }\n if (typeof signature_index === 'number') {\n if (!signature) {\n throw TypedError('Runtime', 'saveTxSignatures: Unexpected null in trezor:TxRequestSerialized signature.');\n }\n signatures[signature_index] = signature;\n }\n};\nconst processTxRequest = (props) => __awaiter(void 0, void 0, void 0, function* () {\n const { typedCall, txRequest, refTxs, inputs, outputs, serializedTx, signatures } = props;\n saveTxSignatures(serializedTx, signatures, txRequest.serialized);\n if (txRequest.request_type === 'TXFINISHED') {\n return Promise.resolve({\n signatures,\n serializedTx: serializedTx.join(''),\n });\n }\n const txAck = requestTxAck(props);\n const { message } = yield typedCall('TxAck', 'TxRequest', { tx: txAck });\n return processTxRequest({\n typedCall,\n txRequest: message,\n refTxs,\n inputs,\n outputs,\n serializedTx,\n signatures,\n });\n});\nvar signtxLegacy = (typedCall, inputs, outputs, refTxsArray, options, coinName) => __awaiter(void 0, void 0, void 0, function* () {\n const refTxs = {};\n refTxsArray.forEach(tx => {\n refTxs[tx.hash.toLowerCase()] = tx;\n });\n const { message } = yield typedCall('SignTx', 'TxRequest', Object.assign(Object.assign({}, options), { inputs_count: inputs.length, outputs_count: outputs.length, coin_name: coinName }));\n return processTxRequest({\n typedCall,\n txRequest: message,\n refTxs,\n inputs,\n outputs,\n serializedTx: [],\n signatures: [],\n });\n});\n\nclass BTCSignTransaction extends BaseMethod {\n init() {\n this.allowDeviceMode = [...this.allowDeviceMode, UI_REQUEST.INITIALIZE];\n validateParams(this.payload, [\n { name: 'coin', type: 'string', required: true },\n { name: 'inputs', type: 'array', required: true },\n { name: 'outputs', type: 'array', required: true },\n { name: 'refTxs', type: 'array', required: true, allowEmpty: true },\n { name: 'locktime', type: 'number' },\n { name: 'version', type: 'number' },\n { name: 'expiry', type: 'number' },\n { name: 'overwintered', type: 'boolean' },\n { name: 'versionGroupId', type: 'number' },\n { name: 'branchId', type: 'number' },\n { name: 'timestamp', type: 'number' },\n ]);\n this.payload.refTxs.forEach((tx) => {\n validateParams(tx, [\n { name: 'hash', type: 'hexString', required: true },\n { name: 'inputs', type: 'array', required: true },\n { name: 'bin_outputs', type: 'array', required: !Array.isArray(tx.outputs) },\n { name: 'outputs', type: 'array' },\n { name: 'version', type: 'number', required: true },\n { name: 'lock_time', type: 'number', required: true },\n { name: 'extra_data', type: 'string' },\n { name: 'timestamp', type: 'number' },\n { name: 'version_group_id', type: 'number' },\n ]);\n });\n this.payload.inputs.forEach((input) => {\n validatePath(input.address_n);\n const useAmount = isSegwitPath(input.address_n);\n validateParams(input, [\n { name: 'prev_hash', type: 'hexString', required: true },\n { name: 'prev_index', type: 'number', required: true },\n { name: 'script_type', type: 'string' },\n { name: 'amount', type: 'string', required: useAmount },\n { name: 'sequence', type: 'number' },\n { name: 'multisig', type: 'object' },\n ]);\n });\n this.payload.outputs.forEach((output) => {\n validateParams(output, [\n { name: 'address_n', type: 'array' },\n { name: 'address', type: 'string' },\n { name: 'amount', type: 'string' },\n { name: 'op_return_data', type: 'string' },\n { name: 'multisig', type: 'object' },\n ]);\n if (Object.prototype.hasOwnProperty.call(output, 'address_n') &&\n Object.prototype.hasOwnProperty.call(output, 'address')) {\n throw TypedError('Method_InvalidParameter', 'Cannot use address and address_n in one output');\n }\n if (output.address_n) {\n const scriptType = getOutputScriptType(output.address_n);\n if (output.script_type !== scriptType)\n throw TypedError('Method_InvalidParameter', `Output change script_type should be set to ${scriptType}`);\n }\n });\n const { inputs, outputs, refTxs, account, coin } = this.payload;\n const coinName = getCoinInfo(undefined, coin).name;\n this.params = {\n inputs,\n outputs,\n refTxs,\n addresses: account ? account.addresses : undefined,\n options: {\n lock_time: this.payload.locktime,\n timestamp: this.payload.timestamp,\n version: this.payload.version,\n expiry: this.payload.expiry,\n overwintered: this.payload.overwintered,\n version_group_id: this.payload.versionGroupId,\n branch_id: this.payload.branchId,\n },\n coinName,\n };\n }\n run() {\n return __awaiter(this, void 0, void 0, function* () {\n const { device, params } = this;\n const useLegacySignProcess = device.unavailableCapabilities.replaceTransaction;\n const { refTxs } = params;\n const signTxMethod = !useLegacySignProcess ? signtx : signtxLegacy;\n const response = yield signTxMethod(device.commands.typedCall.bind(device.commands), params.inputs, params.outputs, refTxs, params.options, params.coinName);\n return response;\n });\n }\n}\n\nclass BTCVerifyMessage extends BaseMethod {\n init() {\n this.allowDeviceMode = [...this.allowDeviceMode, UI_REQUEST.INITIALIZE];\n validateParams(this.payload, [\n { name: 'address', type: 'string', required: true },\n { name: 'messageHex', type: 'hexString', required: true },\n { name: 'signature', type: 'hexString', required: true },\n { name: 'coin', type: 'string', required: true },\n ]);\n const { coin } = this.payload;\n const { address, messageHex, signature } = formatAnyHex(this.payload);\n const coinName = getCoinInfo(undefined, coin).name;\n this.params = {\n address,\n message: messageHex,\n signature,\n coin_name: coinName,\n };\n }\n run() {\n return __awaiter(this, void 0, void 0, function* () {\n const res = yield this.device.commands.typedCall('VerifyMessage', 'Success', Object.assign({}, this.params));\n return Promise.resolve(res.message);\n });\n }\n}\n\nclass CheckFirmwareRelease extends BaseMethod {\n init() { }\n run() {\n if (this.device.features) {\n const firmwareStatus = DataManager.getFirmwareStatus(this.device.features);\n return Promise.resolve(firmwareStatus);\n }\n return Promise.resolve(null);\n }\n}\n\nclass CheckBLEFirmwareRelease extends BaseMethod {\n init() {\n this.allowDeviceMode = [...this.allowDeviceMode, UI_REQUEST.BOOTLOADER];\n }\n run() {\n if (this.device.features) {\n const firmwareStatus = DataManager.getBLEFirmwareStatus(this.device.features);\n return Promise.resolve(firmwareStatus);\n }\n return Promise.resolve(null);\n }\n}\n\nclass CheckTransportRelease extends BaseMethod {\n init() {\n this.useDevice = false;\n }\n run() {\n return __awaiter(this, void 0, void 0, function* () {\n const transport = TransportManager.getTransport();\n const localVersion = yield transport.init();\n const response = DataManager.getTransportStatus(localVersion);\n return Promise.resolve(response);\n });\n }\n}\n\nclass DeviceBackup extends BaseMethod {\n init() { }\n run() {\n return __awaiter(this, void 0, void 0, function* () {\n const res = yield this.device.commands.typedCall('BackupDevice', 'Success');\n return Promise.resolve(res.message);\n });\n }\n}\n\nclass DeviceChangePin extends BaseMethod {\n init() {\n validateParams(this.payload, [{ name: 'remove', type: 'boolean' }]);\n this.params = {\n remove: this.payload.remove,\n };\n }\n run() {\n return __awaiter(this, void 0, void 0, function* () {\n const res = yield this.device.commands.typedCall('ChangePin', 'Success', Object.assign({}, this.params));\n return Promise.resolve(res.message);\n });\n }\n}\n\nclass DeviceFlags extends BaseMethod {\n init() {\n validateParams(this.payload, [{ name: 'flags', type: 'number' }]);\n this.params = {\n flags: this.payload.flags,\n };\n }\n run() {\n return __awaiter(this, void 0, void 0, function* () {\n const res = yield this.device.commands.typedCall('ApplyFlags', 'Success', Object.assign({}, this.params));\n return Promise.resolve(res.message);\n });\n }\n}\n\nclass DeviceRebootToBootloader extends BaseMethod {\n init() { }\n run() {\n return __awaiter(this, void 0, void 0, function* () {\n const res = yield this.device.commands.typedCall('RebootToBootloader', 'Success');\n return Promise.resolve(res.message);\n });\n }\n}\n\nclass DeviceRecovery extends BaseMethod {\n init() {\n validateParams(this.payload, [\n { name: 'wordCount', type: 'number' },\n { name: 'passphraseProtection', type: 'boolean' },\n { name: 'pinProtection', type: 'boolean' },\n { name: 'language', type: 'string' },\n { name: 'label', type: 'string' },\n { name: 'enforceWordlist', type: 'boolean' },\n { name: 'type', type: 'object' },\n { name: 'u2fCounter', type: 'number' },\n { name: 'dryRun', type: 'boolean' },\n ]);\n this.params = {\n word_count: this.payload.wordCount,\n passphrase_protection: this.payload.passphraseProtection,\n pin_protection: this.payload.pinProtection,\n language: this.payload.language,\n label: this.payload.label,\n enforce_wordlist: this.payload.enforceWordlist,\n type: this.payload.type,\n u2f_counter: this.payload.u2fCounter || Math.floor(Date.now() / 1000),\n dry_run: this.payload.dryRun,\n };\n }\n run() {\n return __awaiter(this, void 0, void 0, function* () {\n const res = yield this.device.commands.typedCall('RecoveryDevice', 'Success', Object.assign({}, this.params));\n return Promise.resolve(res.message);\n });\n }\n}\n\nclass DeviceReset extends BaseMethod {\n init() {\n validateParams(this.payload, [\n { name: 'displayRandom', type: 'boolean' },\n { name: 'strength', type: 'number' },\n { name: 'passphraseProtection', type: 'boolean' },\n { name: 'pinProtection', type: 'boolean' },\n { name: 'language', type: 'string' },\n { name: 'label', type: 'string' },\n { name: 'u2fCounter', type: 'number' },\n { name: 'skipBackup', type: 'boolean' },\n { name: 'noBackup', type: 'boolean' },\n { name: 'backupType' },\n ]);\n this.params = {\n display_random: this.payload.displayRandom,\n strength: this.payload.strength || 256,\n passphrase_protection: this.payload.passphraseProtection,\n pin_protection: this.payload.pinProtection,\n language: this.payload.language,\n label: this.payload.label,\n u2f_counter: this.payload.u2fCounter || Math.floor(Date.now() / 1000),\n skip_backup: this.payload.skipBackup,\n no_backup: this.payload.noBackup,\n backup_type: this.payload.backupType,\n };\n }\n run() {\n return __awaiter(this, void 0, void 0, function* () {\n const res = yield this.device.commands.typedCall('ResetDevice', 'Success', Object.assign({}, this.params));\n return Promise.resolve(res.message);\n });\n }\n}\n\nclass DeviceSettings extends BaseMethod {\n init() {\n validateParams(this.payload, [\n { name: 'language', type: 'string' },\n { name: 'label', type: 'string' },\n { name: 'usePassphrase', type: 'boolean' },\n { name: 'homescreen', type: 'string' },\n { name: 'passphraseSource', type: 'number' },\n { name: 'autoLockDelayMs', type: 'number' },\n { name: 'displayRotation', type: 'number' },\n { name: 'passphraseAlwaysOnDevice', type: 'boolean' },\n { name: 'safetyChecks', type: 'object' },\n { name: 'experimentalFeatures', type: 'boolean' },\n ]);\n console.log('DeviceSettings payload', this.payload);\n this.params = {\n language: this.payload.language,\n label: this.payload.label,\n use_passphrase: this.payload.usePassphrase,\n homescreen: this.payload.homescreen,\n _passphrase_source: this.payload.passphraseSource,\n auto_lock_delay_ms: this.payload.autoLockDelayMs,\n display_rotation: this.payload.displayRotation,\n passphrase_always_on_device: this.payload.passphraseAlwaysOnDevice,\n safety_checks: this.payload.safetyChecks,\n experimental_features: this.payload.experimentalFeatures,\n };\n }\n run() {\n return __awaiter(this, void 0, void 0, function* () {\n const res = yield this.device.commands.typedCall('ApplySettings', 'Success', Object.assign({}, this.params));\n return Promise.resolve(res.message);\n });\n }\n}\n\nclass DeviceUpdateReboot extends BaseMethod {\n init() { }\n run() {\n return __awaiter(this, void 0, void 0, function* () {\n const res = yield this.device.commands.typedCall('BixinReboot', 'Success');\n return Promise.resolve(res.message);\n });\n }\n}\n\nclass DeviceWipe extends BaseMethod {\n init() { }\n run() {\n return __awaiter(this, void 0, void 0, function* () {\n const res = yield this.device.commands.typedCall('WipeDevice', 'Success');\n return Promise.resolve(res.message);\n });\n }\n}\n\nclass EvmGetAddress extends BaseMethod {\n constructor() {\n super(...arguments);\n this.hasBundle = false;\n }\n init() {\n var _a;\n this.allowDeviceMode = [...this.allowDeviceMode, UI_REQUEST.INITIALIZE];\n this.hasBundle = !!((_a = this.payload) === null || _a === void 0 ? void 0 : _a.bundle);\n const payload = this.hasBundle ? this.payload : { bundle: [this.payload] };\n validateParams(payload, [{ name: 'bundle', type: 'array' }]);\n this.params = [];\n payload.bundle.forEach((batch) => {\n var _a;\n const addressN = validatePath(batch.path, 3);\n validateParams(batch, [\n { name: 'path', required: true },\n { name: 'showOnOneKey', type: 'boolean' },\n ]);\n const showOnOneKey = (_a = batch.showOnOneKey) !== null && _a !== void 0 ? _a : true;\n this.params.push({\n address_n: addressN,\n show_display: showOnOneKey,\n });\n });\n }\n run() {\n return __awaiter(this, void 0, void 0, function* () {\n const responses = [];\n for (let i = 0; i < this.params.length; i++) {\n const param = this.params[i];\n const res = yield this.device.commands.typedCall('EthereumGetAddress', 'EthereumAddress', Object.assign({}, param));\n const { address } = res.message;\n responses.push({\n path: serializedPath(param.address_n),\n address,\n });\n }\n return Promise.resolve(this.hasBundle ? responses : responses[0]);\n });\n }\n}\n\nclass EVMGetPublicKey extends BaseMethod {\n constructor() {\n super(...arguments);\n this.hasBundle = false;\n }\n init() {\n var _a;\n this.allowDeviceMode = [...this.allowDeviceMode, UI_REQUEST.INITIALIZE];\n this.hasBundle = !!((_a = this.payload) === null || _a === void 0 ? void 0 : _a.bundle);\n const payload = this.hasBundle ? this.payload : { bundle: [this.payload] };\n validateParams(payload, [{ name: 'bundle', type: 'array' }]);\n this.params = [];\n payload.bundle.forEach((batch) => {\n var _a;\n const addressN = validatePath(batch.path, 3);\n validateParams(batch, [\n { name: 'path', required: true },\n { name: 'showOnOneKey', type: 'boolean' },\n ]);\n const showOnOneKey = (_a = batch.showOnOneKey) !== null && _a !== void 0 ? _a : true;\n this.params.push({\n address_n: addressN,\n show_display: showOnOneKey,\n });\n });\n }\n run() {\n return __awaiter(this, void 0, void 0, function* () {\n const responses = [];\n for (let i = 0; i < this.params.length; i++) {\n const param = this.params[i];\n const res = yield this.device.commands.typedCall('EthereumGetPublicKey', 'EthereumPublicKey', Object.assign({}, param));\n responses.push(Object.assign({ path: serializedPath(param.address_n) }, res.message));\n }\n return Promise.resolve(this.hasBundle ? responses : responses[0]);\n });\n }\n}\n\nclass EVMSignMessage$2 extends BaseMethod {\n init() {\n this.allowDeviceMode = [...this.allowDeviceMode, UI_REQUEST.INITIALIZE];\n validateParams(this.payload, [\n { name: 'path', required: true },\n { name: 'messageHex', type: 'hexString', required: true },\n ]);\n const { path, messageHex } = this.payload;\n const addressN = validatePath(path, 3);\n this.params = {\n address_n: addressN,\n message: formatAnyHex(messageHex),\n };\n }\n run() {\n return __awaiter(this, void 0, void 0, function* () {\n const res = yield this.device.commands.typedCall('EthereumSignMessage', 'EthereumMessageSignature', Object.assign({}, this.params));\n return Promise.resolve(res.message);\n });\n }\n}\n\nclass EVMSignMessageEIP712$1 extends BaseMethod {\n init() {\n this.allowDeviceMode = [...this.allowDeviceMode, UI_REQUEST.INITIALIZE];\n validateParams(this.payload, [\n { name: 'path', required: true },\n { name: 'domainHash', type: 'hexString', required: true },\n { name: 'messageHash', type: 'hexString', required: true },\n ]);\n const { path, domainHash, messageHash } = this.payload;\n const addressN = validatePath(path, 3);\n this.params = {\n address_n: addressN,\n domain_hash: formatAnyHex(domainHash),\n message_hash: formatAnyHex(messageHash),\n };\n }\n run() {\n return __awaiter(this, void 0, void 0, function* () {\n const res = yield this.device.commands.typedCall('EthereumSignMessageEIP712', 'EthereumMessageSignature', Object.assign({}, this.params));\n return Promise.resolve(res.message);\n });\n }\n}\n\nconst cutString = (str, cutLen) => {\n if (!str) {\n return ['', ''];\n }\n const first = str.slice(0, cutLen);\n const second = str.slice(cutLen);\n return [first, second];\n};\n\nclass EVMSignTransaction extends BaseMethod {\n constructor() {\n super(...arguments);\n this.addressN = [];\n this.isEIP1559 = false;\n this.processTxRequest = (request, data, chain_id) => __awaiter(this, void 0, void 0, function* () {\n if (!request.data_length) {\n let v = request.signature_v;\n const r = request.signature_r;\n const s = request.signature_s;\n if (v == null || r == null || s == null) {\n throw TypedError('Runtime', 'processTxRequest: Unexpected request');\n }\n if (chain_id && v <= 1) {\n v += 2 * chain_id + 35;\n }\n return Promise.resolve({\n v: `0x${v.toString(16)}`,\n r: `0x${r}`,\n s: `0x${s}`,\n });\n }\n const [first, rest] = cutString(data, request.data_length * 2);\n const response = yield this.device.commands.typedCall('EthereumTxAck', 'EthereumTxRequest', {\n data_chunk: first,\n });\n return this.processTxRequest(response.message, rest, chain_id);\n });\n this.evmSignTx = (addressN, tx) => __awaiter(this, void 0, void 0, function* () {\n const { to, value, gasPrice, gasLimit, nonce, data, chainId, txType } = tx;\n const length = data == null ? 0 : data.length / 2;\n const [first, rest] = cutString(data, 1024 * 2);\n let message = {\n address_n: addressN,\n nonce: stripHexStartZeroes(nonce),\n gas_price: stripHexStartZeroes(gasPrice),\n gas_limit: stripHexStartZeroes(gasLimit),\n to,\n value: stripHexStartZeroes(value),\n chain_id: chainId,\n };\n if (length !== 0) {\n message = Object.assign(Object.assign({}, message), { data_length: length, data_initial_chunk: first });\n }\n if (txType !== null) {\n message = Object.assign(Object.assign({}, message), { tx_type: txType });\n }\n const response = yield this.device.commands.typedCall('EthereumSignTx', 'EthereumTxRequest', message);\n return this.processTxRequest(response.message, rest, chainId);\n });\n this.evmSignTxEip1559 = (addressN, tx) => __awaiter(this, void 0, void 0, function* () {\n const { to, value, gasLimit, nonce, data, chainId, maxFeePerGas, maxPriorityFeePerGas, accessList, } = tx;\n const length = data == null ? 0 : data.length / 2;\n const [first, rest] = cutString(data, 1024 * 2);\n const message = {\n address_n: addressN,\n nonce: stripHexStartZeroes(nonce),\n max_gas_fee: stripHexStartZeroes(maxFeePerGas),\n max_priority_fee: stripHexStartZeroes(maxPriorityFeePerGas),\n gas_limit: stripHexStartZeroes(gasLimit),\n to,\n value: stripHexStartZeroes(value),\n data_length: length,\n data_initial_chunk: first,\n chain_id: chainId,\n access_list: (accessList || []).map(a => ({\n address: a.address,\n storage_keys: a.storageKeys,\n })),\n };\n const response = yield this.device.commands.typedCall('EthereumSignTxEIP1559', 'EthereumTxRequest', message);\n return this.processTxRequest(response.message, rest, chainId);\n });\n }\n init() {\n this.allowDeviceMode = [...this.allowDeviceMode, UI_REQUEST.INITIALIZE];\n validateParams(this.payload, [\n { name: 'path', required: true },\n { name: 'transaction', type: 'object', required: true },\n ]);\n const { path, transaction } = this.payload;\n this.addressN = validatePath(path, 3);\n const tx = transaction;\n this.isEIP1559 = !!tx.maxFeePerGas && !!tx.maxPriorityFeePerGas;\n const schema = [\n { name: 'to', type: 'hexString', required: true },\n { name: 'value', type: 'hexString', required: true },\n { name: 'gasLimit', type: 'hexString', required: true },\n { name: 'nonce', type: 'hexString', required: true },\n { name: 'chainId', type: 'number', required: true },\n { name: 'data', type: 'hexString' },\n ];\n if (this.isEIP1559) {\n schema.push({ name: 'maxFeePerGas', type: 'hexString', required: true });\n schema.push({ name: 'maxPriorityFeePerGas', type: 'hexString', required: true });\n }\n else {\n schema.push({ name: 'gasPrice', type: 'hexString', required: true });\n schema.push({ name: 'txType', type: 'number' });\n }\n validateParams(tx, schema);\n this.formattedTx = formatAnyHex(tx);\n }\n run() {\n return __awaiter(this, void 0, void 0, function* () {\n const { addressN, isEIP1559, formattedTx } = this;\n const signedTx = yield (isEIP1559\n ? this.evmSignTxEip1559(addressN, formattedTx)\n : this.evmSignTx(addressN, formattedTx));\n return Promise.resolve(signedTx);\n });\n }\n}\n\nclass EVMSignMessageEIP712 extends BaseMethod {\n init() {\n this.allowDeviceMode = [...this.allowDeviceMode, UI_REQUEST.INITIALIZE];\n validateParams(this.payload, [\n { name: 'path', required: true },\n { name: 'metamaskV4Compat', type: 'boolean', required: true },\n { name: 'data', type: 'object', required: true },\n { name: 'domainHash', type: 'hexString' },\n { name: 'messageHash', type: 'hexString' },\n ]);\n const { path, data, metamaskV4Compat, domainHash, messageHash } = this.payload;\n const addressN = validatePath(path, 3);\n this.params = {\n addressN,\n metamaskV4Compat,\n data,\n };\n if (domainHash) {\n this.params.domainHash = formatAnyHex(domainHash);\n if (messageHash) {\n this.params.messageHash = formatAnyHex(messageHash);\n }\n else if (!data.primaryType || data.primaryType !== 'EIP712Domain') {\n throw TypedError('Method_InvalidParameter', 'message_hash should only be empty when data.primaryType=EIP712Domain');\n }\n }\n }\n run() {\n return __awaiter(this, void 0, void 0, function* () {\n if (!this.device.features) {\n throw TypedError('Device_InitializeFailed', 'Device initialization failed. Please try again.');\n }\n const { addressN } = this.params;\n if (this.device.features.model === '1') {\n validateParams(this.params, [\n { name: 'domainHash', type: 'hexString', required: true },\n { name: 'messageHash', type: 'hexString' },\n ]);\n const { domainHash, messageHash } = this.params;\n const response = yield this.device.commands.typedCall('EthereumSignTypedHash', 'EthereumTypedDataSignature', {\n address_n: addressN,\n domain_separator_hash: domainHash !== null && domainHash !== void 0 ? domainHash : '',\n message_hash: messageHash,\n });\n return Promise.resolve(response.message);\n }\n return Promise.resolve(TypedError('Runtime', 'Not implemented'));\n });\n }\n}\n\nclass EVMSignMessage$1 extends BaseMethod {\n init() {\n this.allowDeviceMode = [...this.allowDeviceMode, UI_REQUEST.INITIALIZE];\n validateParams(this.payload, [\n { name: 'address', type: 'string', required: true },\n { name: 'messageHex', type: 'hexString', required: true },\n { name: 'signature', type: 'hexString', required: true },\n ]);\n const { address, messageHex, signature } = formatAnyHex(this.payload);\n this.params = {\n address,\n message: messageHex,\n signature,\n };\n }\n run() {\n return __awaiter(this, void 0, void 0, function* () {\n const res = yield this.device.commands.typedCall('EthereumVerifyMessage', 'Success', Object.assign({}, this.params));\n return Promise.resolve(res.message);\n });\n }\n}\n\nclass StarcoinGetAddress extends BaseMethod {\n constructor() {\n super(...arguments);\n this.hasBundle = false;\n }\n init() {\n var _a;\n this.allowDeviceMode = [...this.allowDeviceMode, UI_REQUEST.INITIALIZE];\n this.hasBundle = !!((_a = this.payload) === null || _a === void 0 ? void 0 : _a.bundle);\n const payload = this.hasBundle ? this.payload : { bundle: [this.payload] };\n validateParams(payload, [{ name: 'bundle', type: 'array' }]);\n this.params = [];\n payload.bundle.forEach((batch) => {\n var _a;\n const addressN = validatePath(batch.path, 3);\n validateParams(batch, [\n { name: 'path', required: true },\n { name: 'showOnOneKey', type: 'boolean' },\n ]);\n const showOnOneKey = (_a = batch.showOnOneKey) !== null && _a !== void 0 ? _a : true;\n this.params.push({\n address_n: addressN,\n show_display: showOnOneKey,\n });\n });\n }\n run() {\n return __awaiter(this, void 0, void 0, function* () {\n const responses = [];\n for (let i = 0; i < this.params.length; i++) {\n const param = this.params[i];\n const res = yield this.device.commands.typedCall('StarcoinGetAddress', 'StarcoinAddress', Object.assign({}, param));\n responses.push(Object.assign({ path: serializedPath(param.address_n) }, res.message));\n }\n return Promise.resolve(this.hasBundle ? responses : responses[0]);\n });\n }\n}\n\nclass StarcoinGetPublicKey extends BaseMethod {\n constructor() {\n super(...arguments);\n this.hasBundle = false;\n }\n init() {\n var _a;\n this.allowDeviceMode = [...this.allowDeviceMode, UI_REQUEST.INITIALIZE];\n this.hasBundle = !!((_a = this.payload) === null || _a === void 0 ? void 0 : _a.bundle);\n const payload = this.hasBundle ? this.payload : { bundle: [this.payload] };\n validateParams(payload, [{ name: 'bundle', type: 'array' }]);\n this.params = [];\n payload.bundle.forEach((batch) => {\n var _a;\n const addressN = validatePath(batch.path, 3);\n validateParams(batch, [\n { name: 'path', required: true },\n { name: 'showOnOneKey', type: 'boolean' },\n ]);\n const showOnOneKey = (_a = batch.showOnOneKey) !== null && _a !== void 0 ? _a : true;\n this.params.push({\n address_n: addressN,\n show_display: showOnOneKey,\n });\n });\n }\n run() {\n return __awaiter(this, void 0, void 0, function* () {\n const responses = [];\n for (let i = 0; i < this.params.length; i++) {\n const param = this.params[i];\n const res = yield this.device.commands.typedCall('StarcoinGetPublicKey', 'StarcoinPublicKey', Object.assign({}, param));\n responses.push(Object.assign({ path: serializedPath(param.address_n) }, res.message));\n }\n return Promise.resolve(this.hasBundle ? responses : responses[0]);\n });\n }\n}\n\nclass StarcoinSignMessage extends BaseMethod {\n init() {\n this.allowDeviceMode = [...this.allowDeviceMode, UI_REQUEST.INITIALIZE];\n validateParams(this.payload, [\n { name: 'path', required: true },\n { name: 'messageHex', type: 'hexString', required: true },\n ]);\n const { path, messageHex } = this.payload;\n const addressN = validatePath(path, 3);\n this.params = {\n address_n: addressN,\n message: formatAnyHex(messageHex),\n };\n }\n run() {\n return __awaiter(this, void 0, void 0, function* () {\n const res = yield this.device.commands.typedCall('StarcoinSignMessage', 'StarcoinMessageSignature', Object.assign({}, this.params));\n return Promise.resolve(res.message);\n });\n }\n}\n\nclass StarcoinSignTransaction extends BaseMethod {\n init() {\n this.allowDeviceMode = [...this.allowDeviceMode, UI_REQUEST.INITIALIZE];\n validateParams(this.payload, [\n { name: 'path', required: true },\n { name: 'rawTx', type: 'hexString', required: true },\n ]);\n const { path, rawTx } = this.payload;\n const addressN = validatePath(path, 3);\n this.params = {\n address_n: addressN,\n raw_tx: formatAnyHex(rawTx),\n };\n }\n run() {\n return __awaiter(this, void 0, void 0, function* () {\n const res = yield this.device.commands.typedCall('StarcoinSignTx', 'StarcoinSignedTx', Object.assign({}, this.params));\n return Promise.resolve(res.message);\n });\n }\n}\n\nclass EVMSignMessage extends BaseMethod {\n init() {\n this.allowDeviceMode = [...this.allowDeviceMode, UI_REQUEST.INITIALIZE];\n validateParams(this.payload, [\n { name: 'publicKey', type: 'string', required: true },\n { name: 'messageHex', type: 'hexString', required: true },\n { name: 'signature', type: 'hexString', required: true },\n ]);\n const { publicKey, messageHex, signature } = formatAnyHex(this.payload);\n this.params = {\n public_key: publicKey,\n message: messageHex,\n signature,\n };\n }\n run() {\n return __awaiter(this, void 0, void 0, function* () {\n const res = yield this.device.commands.typedCall('StarcoinVerifyMessage', 'Success', Object.assign({}, this.params));\n return Promise.resolve(res.message);\n });\n }\n}\n\nvar ApiMethods = /*#__PURE__*/Object.freeze({\n __proto__: null,\n searchDevices: SearchDevices,\n getFeatures: GetFeatures,\n btcGetAddress: BTCGetAddress,\n btcGetPublicKey: BTCGetPublicKey,\n btcSignMessage: BTCSignMessage,\n btcSignTransaction: BTCSignTransaction,\n btcVerifyMessage: BTCVerifyMessage,\n checkFirmwareRelease: CheckFirmwareRelease,\n checkBLEFirmwareRelease: CheckBLEFirmwareRelease,\n checkTransportRelease: CheckTransportRelease,\n deviceBackup: DeviceBackup,\n deviceChangePin: DeviceChangePin,\n deviceFlags: DeviceFlags,\n deviceRebootToBootloader: DeviceRebootToBootloader,\n deviceRecovery: DeviceRecovery,\n deviceReset: DeviceReset,\n deviceSettings: DeviceSettings,\n deviceUpdateReboot: DeviceUpdateReboot,\n deviceWipe: DeviceWipe,\n evmGetAddress: EvmGetAddress,\n evmGetPublicKey: EVMGetPublicKey,\n evmSignMessage: EVMSignMessage$2,\n evmSignMessageEIP712: EVMSignMessageEIP712$1,\n evmSignTransaction: EVMSignTransaction,\n evmSignTypedData: EVMSignMessageEIP712,\n evmVerifyMessage: EVMSignMessage$1,\n starcoinGetAddress: StarcoinGetAddress,\n starcoinGetPublicKey: StarcoinGetPublicKey,\n starcoinSignMessage: StarcoinSignMessage,\n starcoinSignTransaction: StarcoinSignTransaction,\n starcoinVerifyMessage: EVMSignMessage\n});\n\nfunction findMethod(message) {\n const { method } = message.payload;\n if (typeof method !== 'string') {\n throw TypedError('Method_InvalidParameter', 'Method is not set');\n }\n const MethodConstructor = ApiMethods[method];\n if (MethodConstructor) {\n return new MethodConstructor(message);\n }\n throw TypedError('Method_InvalidParameter', `Method ${method} is not set`);\n}\n\nconst resolveAfter = (msec, value) => new Promise(resolve => {\n setTimeout(resolve, msec, value);\n});\n\nconst Log$1 = initLog('DeviceConnector');\nconst getDiff = (current, descriptors) => {\n const env = DataManager.getSettings('env');\n if (env === 'react-native') {\n return {\n descriptors,\n };\n }\n const connected = descriptors.filter(d => current.find(x => x.path === d.path) === undefined);\n const disconnected = current.filter(d => descriptors.find(x => x.path === d.path) === undefined);\n const changedSessions = descriptors.filter(d => {\n const currentDescriptor = current.find(x => x.path === d.path);\n if (currentDescriptor) {\n return currentDescriptor.session !== d.session;\n }\n return false;\n });\n const acquired = changedSessions.filter(d => typeof d.session === 'string');\n const released = changedSessions.filter(d => typeof d.session !== 'string');\n const changedDebugSessions = descriptors.filter(d => {\n const currentDescriptor = current.find(x => x.path === d.path);\n if (currentDescriptor) {\n return currentDescriptor.debugSession !== d.debugSession;\n }\n return false;\n });\n const debugAcquired = changedSessions.filter(d => typeof d.debugSession === 'string');\n const debugReleased = changedSessions.filter(d => typeof d.debugSession !== 'string');\n const didUpdate = connected.length + disconnected.length + changedSessions.length + changedDebugSessions.length >\n 0;\n return {\n connected,\n disconnected,\n changedSessions,\n acquired,\n released,\n changedDebugSessions,\n debugAcquired,\n debugReleased,\n didUpdate,\n descriptors,\n };\n};\nclass DeviceConnector {\n constructor() {\n this.listenTimestamp = 0;\n this.current = null;\n this.upcoming = [];\n this.listening = false;\n TransportManager.load();\n this.transport = TransportManager.getTransport();\n }\n enumerate() {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n this.upcoming = yield this.transport.enumerate();\n const diff = this._reportDevicesChange();\n Log$1.debug('diff result: ', diff);\n return diff;\n }\n catch (error) {\n throw new Error(error);\n }\n });\n }\n listen() {\n return __awaiter(this, void 0, void 0, function* () {\n const waitForEvent = this.current !== null;\n const current = this.current || [];\n this.listening = true;\n let descriptors;\n try {\n Log$1.debug('Start listening', current);\n this.listenTimestamp = new Date().getTime();\n descriptors = waitForEvent\n ? yield this.transport.listen(current)\n : yield this.transport.enumerate();\n if (!this.listening)\n return;\n this.upcoming = descriptors;\n Log$1.debug('Listen result', descriptors);\n this._reportDevicesChange();\n if (this.listening)\n this.listen();\n }\n catch (error) {\n const time = new Date().getTime() - this.listenTimestamp;\n Log$1.debug('Listen error', 'timestamp', time, typeof error);\n if (time > 1100) {\n yield resolveAfter(1000, null);\n if (this.listening)\n this.listen();\n }\n else {\n Log$1.warn('Transport error');\n }\n }\n });\n }\n stop() {\n this.listening = false;\n }\n acquire(path, session) {\n return __awaiter(this, void 0, void 0, function* () {\n console.log('acquire', path, session);\n const env = DataManager.getSettings('env');\n try {\n let res;\n if (env === 'react-native') {\n res = yield this.transport.acquire({ uuid: path });\n }\n else {\n res = yield this.transport.acquire({ path, previous: session !== null && session !== void 0 ? session : null });\n }\n return res;\n }\n catch (error) {\n throw new Error(error);\n }\n });\n }\n release(session, onclose) {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n const res = yield this.transport.release(session, onclose);\n return res;\n }\n catch (error) {\n throw new Error(error);\n }\n });\n }\n _reportDevicesChange() {\n const diff = getDiff(this.current || [], this.upcoming);\n this.current = this.upcoming;\n return diff;\n }\n}\n\nconst Log = initLog('Core');\nlet _core;\nlet _deviceList;\nlet _connector;\nlet _uiPromises = [];\nlet _callPromise;\nconst callAPI = (message) => __awaiter(void 0, void 0, void 0, function* () {\n var _a, _b;\n if (!message.id || !message.payload || message.type !== IFRAME.CALL) {\n return Promise.reject(TypedError('Method_InvalidParameter', 'onCall: message.id or message.payload is missing'));\n }\n let method;\n let messageResponse;\n try {\n method = findMethod(message);\n method.connector = _connector;\n method.init();\n }\n catch (error) {\n return Promise.reject(error);\n }\n if (!method.useDevice) {\n try {\n const response = yield method.run();\n return createResponseMessage(method.responseID, true, response);\n }\n catch (error) {\n return createResponseMessage(method.responseID, false, {\n code: error.code,\n error: (_a = error.message) !== null && _a !== void 0 ? _a : error,\n });\n }\n }\n try {\n yield initDeviceList(method);\n }\n catch (error) {\n return Promise.reject(error);\n }\n const env = DataManager.getSettings('env');\n let device;\n try {\n if (env === 'react-native') {\n device = initDeviceForBle(method);\n }\n else {\n device = initDevice(method);\n }\n }\n catch (error) {\n return Promise.reject(error);\n }\n Log.debug('Call API - setDevice: ', device);\n (_b = method.setDevice) === null || _b === void 0 ? void 0 : _b.call(method, device);\n device.on(DEVICE.PIN, onDevicePinHandler);\n device.on(DEVICE.BUTTON, (d, code) => {\n onDeviceButtonHandler(d, code);\n });\n try {\n const inner = () => __awaiter(void 0, void 0, void 0, function* () {\n const unexpectedMode = device.hasUnexpectedMode(method.allowDeviceMode, method.requireDeviceMode);\n if (unexpectedMode) {\n return Promise.reject(TypedError('Device_UnexpectedMode', unexpectedMode));\n }\n if (_deviceList) {\n yield TransportManager.reconfigure(device.getFirmwareVersion());\n }\n try {\n const response = yield method.run();\n Log.debug('Call API - Inner Method Run: ', device);\n messageResponse = createResponseMessage(method.responseID, true, response);\n _callPromise === null || _callPromise === void 0 ? void 0 : _callPromise.resolve(messageResponse);\n }\n catch (error) {\n Log.debug('Call API - Inner Method Run Error: ', error);\n messageResponse = createResponseMessage(method.responseID, false, error.message);\n _callPromise === null || _callPromise === void 0 ? void 0 : _callPromise.resolve(messageResponse);\n }\n });\n Log.debug('Call API - Device Run: ', device);\n const deviceRun = () => device.run(inner);\n _callPromise = create(deviceRun);\n try {\n return yield _callPromise.promise;\n }\n catch (e) {\n console.log('Device Run Error: ', e);\n return createResponseMessage(method.responseID, false, e.message);\n }\n }\n catch (error) {\n messageResponse = createResponseMessage(method.responseID, false, error);\n _callPromise === null || _callPromise === void 0 ? void 0 : _callPromise.reject(TypedError('Call_API', error));\n }\n finally {\n const response = messageResponse;\n if (response) {\n if (method) {\n method.dispose();\n }\n }\n closePopup();\n cleanup();\n }\n});\nfunction initDeviceList(method) {\n return __awaiter(this, void 0, void 0, function* () {\n const env = DataManager.getSettings('env');\n if (env === 'react-native' && method.connectId) {\n yield TransportManager.configure();\n return;\n }\n if (!_deviceList) {\n _deviceList = new DeviceList();\n yield TransportManager.configure();\n _deviceList.connector = _connector;\n }\n yield _deviceList.getDeviceLists();\n });\n}\nfunction initDevice(method) {\n if (!_deviceList) {\n throw TypedError('Call_API', 'DeviceList is not initialized');\n }\n let device;\n const allDevices = _deviceList.allDevices();\n if (method.connectId) {\n device = _deviceList.getDevice(method.connectId);\n }\n else if (allDevices.length === 1) {\n [device] = allDevices;\n }\n else if (allDevices.length > 1) {\n throw TypedError('Call_API', '请选择连接设备');\n }\n if (!device) {\n throw TypedError('Call_API', 'Device Not Found');\n }\n device.deviceConnector = _connector;\n return device;\n}\nfunction initDeviceForBle(method) {\n if (!method.connectId && !_deviceList) {\n throw TypedError('Call_API', 'DeviceList is not initialized');\n }\n if (!method.connectId) {\n return initDevice(method);\n }\n const device = Device.fromDescriptor({ id: method.connectId });\n device.deviceConnector = _connector;\n return device;\n}\nconst cleanup = () => {\n _uiPromises = [];\n Log.debug('Cleanup...');\n};\nconst closePopup = () => {\n postMessage(createUiMessage(UI_REQUEST$1.CLOSE_UI_WINDOW));\n};\nconst onDevicePinHandler = (...[device, type, callback]) => __awaiter(void 0, void 0, void 0, function* () {\n console.log('onDevicePinHandler');\n const uiPromise = createUiPromise(UI_RESPONSE.RECEIVE_PIN, device);\n postMessage(createUiMessage(UI_REQUEST$1.REQUEST_PIN, {\n device: device.toMessageObject(),\n type,\n }));\n const uiResp = yield uiPromise.promise;\n callback(null, uiResp.payload);\n});\nconst onDeviceButtonHandler = (...[device, request]) => {\n postMessage(createDeviceMessage(DEVICE.BUTTON, Object.assign(Object.assign({}, request), { device: device.toMessageObject() })));\n if (request.code === 'ButtonRequest_PinEntry') {\n postMessage(createUiMessage(UI_REQUEST$1.REQUEST_PIN, {\n device: device.toMessageObject(),\n type: 'ButtonRequest_PinEntry',\n }));\n }\n else {\n postMessage(createUiMessage(UI_REQUEST$1.REQUEST_BUTTON, { device: device.toMessageObject() }));\n }\n};\nconst postMessage = (message) => {\n _core.emit(CORE_EVENT, message);\n};\nconst createUiPromise = (promiseEvent, device) => {\n const uiPromise = create(promiseEvent, device);\n _uiPromises.push(uiPromise);\n return uiPromise;\n};\nconst findUiPromise = (promiseEvent) => _uiPromises.find(p => p.id === promiseEvent);\nconst removeUiPromise = (promise) => {\n _uiPromises = _uiPromises.filter(p => p !== promise);\n};\nclass Core extends events.exports {\n handleMessage(message) {\n return __awaiter(this, void 0, void 0, function* () {\n switch (message.type) {\n case UI_RESPONSE.RECEIVE_PIN: {\n const uiPromise = findUiPromise(message.type);\n if (uiPromise) {\n uiPromise.resolve(message);\n removeUiPromise(uiPromise);\n }\n break;\n }\n case UI_REQUEST$1.BLUETOOTH_PERMISSION:\n case UI_REQUEST$1.LOCATION_PERMISSION: {\n postMessage(message);\n break;\n }\n case IFRAME.CALL: {\n const response = yield callAPI(message);\n return response;\n }\n }\n return Promise.resolve(message);\n });\n }\n dispose() {\n }\n}\nconst initCore = () => {\n _core = new Core();\n return _core;\n};\nconst initConnector = () => {\n _connector = new DeviceConnector();\n return _connector;\n};\nconst initTransport = (Transport) => {\n TransportManager.setTransport(Transport);\n};\nconst init = (settings, Transport) => __awaiter(void 0, void 0, void 0, function* () {\n try {\n try {\n yield DataManager.load(settings);\n initTransport(Transport);\n }\n catch (_c) {\n Log.error('DataManager.load error');\n }\n enableLog(DataManager.getSettings('debug'));\n initCore();\n initConnector();\n return _core;\n }\n catch (error) {\n Log.error('core init', error);\n }\n});\n\nconst HardwareSdk = ({ init, call, dispose, eventEmitter, uiResponse, cancel, }) => inject({\n init,\n call,\n dispose,\n eventEmitter,\n uiResponse,\n cancel,\n});\n\nObject.defineProperty(exports, 'PROTO', {\n enumerable: true,\n get: function () { return hdTransport.Messages; }\n});\nexports.CORE_EVENT = CORE_EVENT;\nexports.Core = Core;\nexports.DEFAULT_PRIORITY = DEFAULT_PRIORITY;\nexports.DEVICE = DEVICE;\nexports.DEVICE_EVENT = DEVICE_EVENT;\nexports.DataManager = DataManager;\nexports.ERRORS = errors;\nexports.IFRAME = IFRAME;\nexports.RESPONSE_EVENT = RESPONSE_EVENT;\nexports.UI_EVENT = UI_EVENT;\nexports.UI_REQUEST = UI_REQUEST$1;\nexports.UI_RESPONSE = UI_RESPONSE;\nexports.corsValidator = corsValidator;\nexports.create = create;\nexports.createDeviceMessage = createDeviceMessage;\nexports.createErrorMessage = createErrorMessage;\nexports.createIFrameMessage = createIFrameMessage;\nexports.createResponseMessage = createResponseMessage;\nexports.createUiMessage = createUiMessage;\nexports.createUiResponse = createUiResponse;\nexports[\"default\"] = HardwareSdk;\nexports.enableLog = enableLog;\nexports.getDeviceLabel = getDeviceLabel;\nexports.getDeviceType = getDeviceType;\nexports.getDeviceTypeByBleName = getDeviceTypeByBleName;\nexports.getDeviceTypeByDeviceId = getDeviceTypeByDeviceId;\nexports.getDeviceUUID = getDeviceUUID;\nexports.getEnv = getEnv;\nexports.getHDPath = getHDPath;\nexports.getScriptType = getScriptType;\nexports.getTimeStamp = getTimeStamp;\nexports.httpRequest = httpRequest;\nexports.initCore = init;\nexports.initLog = initLog;\nexports.isValidVersionArray = isValidVersionArray;\nexports.isValidVersionString = isValidVersionString;\nexports.normalizeVersionArray = normalizeVersionArray;\nexports.parseConnectSettings = parseConnectSettings;\nexports.parseMessage = parseMessage;\nexports.versionCompare = versionCompare;\nexports.versionSplit = versionSplit;\n","'use strict';\n\nvar transport = require('@onekeyfe/hd-transport');\nvar axios = require('axios');\n\nfunction _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }\n\nvar transport__default = /*#__PURE__*/_interopDefaultLegacy(transport);\nvar axios__default = /*#__PURE__*/_interopDefaultLegacy(axios);\n\n/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n\r\nfunction __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\n\nfunction contentType(body) {\n if (typeof body === 'string') {\n return 'text/plain';\n }\n return 'application/json';\n}\nfunction wrapBody(body) {\n if (typeof body === 'string') {\n return body;\n }\n return JSON.stringify(body);\n}\nfunction parseResult(text) {\n try {\n return JSON.parse(text);\n }\n catch (e) {\n return text;\n }\n}\nfunction request(options) {\n return __awaiter(this, void 0, void 0, function* () {\n const fetchOptions = {\n url: options.url,\n method: options.method,\n data: wrapBody(options.body),\n withCredentials: false,\n headers: {\n 'Content-Type': contentType(options.body == null ? '' : options.body),\n },\n };\n const res = yield axios__default[\"default\"].request(fetchOptions);\n if (+res.status === 200) {\n return parseResult(res.data);\n }\n const resJson = parseResult(res.data);\n if (typeof resJson === 'object' && resJson != null && resJson.error != null) {\n throw new Error(resJson.error);\n }\n else {\n throw new Error(res.data);\n }\n });\n}\n\nconst DEFAULT_URL = 'http://localhost:21320';\n\nconst { check, buildOne, receiveOne, parseConfigure } = transport__default[\"default\"];\nclass HttpTransport {\n constructor(url) {\n this.configured = false;\n this.stopped = false;\n this.url = url == null ? DEFAULT_URL : url;\n }\n _post(options) {\n if (this.stopped) {\n return Promise.reject('Transport stopped.');\n }\n return request(Object.assign(Object.assign({}, options), { method: 'POST', url: this.url + options.url }));\n }\n init() {\n return __awaiter(this, void 0, void 0, function* () {\n const bridgeVersion = yield this._silentInit();\n return bridgeVersion;\n });\n }\n _silentInit() {\n return __awaiter(this, void 0, void 0, function* () {\n const infoS = yield request({\n url: this.url,\n method: 'POST',\n });\n const info = check.info(infoS);\n return info.version;\n });\n }\n configure(signedData) {\n const messages = parseConfigure(signedData);\n this.configured = true;\n this._messages = messages;\n }\n listen(old) {\n return __awaiter(this, void 0, void 0, function* () {\n if (old === null) {\n throw new Error('Http-Transport does not support listen without previous.');\n }\n const devicesS = yield this._post({\n url: '/listen',\n body: old,\n });\n const devices = check.devices(devicesS);\n return devices;\n });\n }\n enumerate() {\n return __awaiter(this, void 0, void 0, function* () {\n const devicesS = yield this._post({ url: '/enumerate' });\n const devices = check.devices(devicesS);\n return devices;\n });\n }\n _acquireMixed(input) {\n const previousStr = input.previous == null ? 'null' : input.previous;\n const url = `/acquire/${input.path}/${previousStr}`;\n return this._post({ url });\n }\n acquire(input) {\n return __awaiter(this, void 0, void 0, function* () {\n const acquireS = yield this._acquireMixed(input);\n return check.acquire(acquireS);\n });\n }\n release(session, onclose) {\n return __awaiter(this, void 0, void 0, function* () {\n const res = this._post({\n url: `/release/${session}`,\n });\n if (onclose) {\n return;\n }\n yield res;\n });\n }\n call(session, name, data) {\n return __awaiter(this, void 0, void 0, function* () {\n if (this._messages == null) {\n throw new Error('Transport not configured.');\n }\n const messages = this._messages;\n console.log('transport-http', 'call-', 'messages: ', messages, ' name: ', name, ' data: ', data);\n const o = buildOne(messages, name, data);\n const outData = o.toString('hex');\n const resData = yield this._post({\n url: `/call/${session}`,\n body: outData,\n });\n if (typeof resData !== 'string') {\n throw new Error('Returning data is not string.');\n }\n const jsonData = receiveOne(messages, resData);\n return check.call(jsonData);\n });\n }\n post(session, name, data) {\n return __awaiter(this, void 0, void 0, function* () {\n if (this._messages == null) {\n throw new Error('Transport not configured.');\n }\n const messages = this._messages;\n const outData = buildOne(messages, name, data).toString('hex');\n yield this._post({\n url: `/post/${session}`,\n body: outData,\n });\n });\n }\n read(session) {\n return __awaiter(this, void 0, void 0, function* () {\n if (this._messages == null) {\n throw new Error('Transport not configured.');\n }\n const messages = this._messages;\n const resData = yield this._post({\n url: `/read/${session}`,\n });\n if (typeof resData !== 'string') {\n throw new Error('Returning data is not string.');\n }\n const jsonData = receiveOne(messages, resData);\n return check.call(jsonData);\n });\n }\n requestDevice() {\n return Promise.reject();\n }\n stop() {\n this.stopped = true;\n }\n}\n\nmodule.exports = HttpTransport;\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nvar protobuf = require('protobufjs/light');\nvar Long = require('long');\nvar ByteBuffer = require('bytebuffer');\nvar buffer = require('buffer');\n\nfunction _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }\n\nfunction _interopNamespace(e) {\n if (e && e.__esModule) return e;\n var n = Object.create(null);\n if (e) {\n Object.keys(e).forEach(function (k) {\n if (k !== 'default') {\n var d = Object.getOwnPropertyDescriptor(e, k);\n Object.defineProperty(n, k, d.get ? d : {\n enumerable: true,\n get: function () { return e[k]; }\n });\n }\n });\n }\n n[\"default\"] = e;\n return Object.freeze(n);\n}\n\nvar protobuf__namespace = /*#__PURE__*/_interopNamespace(protobuf);\nvar Long__namespace = /*#__PURE__*/_interopNamespace(Long);\nvar ByteBuffer__default = /*#__PURE__*/_interopDefaultLegacy(ByteBuffer);\n\n/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n\r\nfunction __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\n\nconst primitiveTypes = [\n 'bool',\n 'string',\n 'bytes',\n 'int32',\n 'int64',\n 'uint32',\n 'uint64',\n 'sint32',\n 'sint64',\n 'fixed32',\n 'fixed64',\n 'sfixed32',\n 'sfixed64',\n 'double',\n 'float',\n];\nconst isPrimitiveField = (field) => primitiveTypes.includes(field);\n\nconst transform$1 = (field, value) => {\n if (field.optional && typeof value === 'undefined') {\n return null;\n }\n if (field.type === 'bytes') {\n return ByteBuffer__default[\"default\"].wrap(value).toString('hex');\n }\n if (field.long) {\n if (Number.isSafeInteger(value.toNumber())) {\n return value.toNumber();\n }\n return value.toString();\n }\n return value;\n};\nfunction messageToJSON(Message, fields) {\n const message = __rest(Message, []);\n const res = {};\n Object.keys(fields).forEach(key => {\n const field = fields[key];\n const value = message[key];\n if (field.repeated) {\n if (isPrimitiveField(field.type)) {\n res[key] = value.map((v) => transform$1(field, v));\n }\n else if ('valuesById' in field.resolvedType) {\n res[key] = value;\n }\n else if ('fields' in field.resolvedType) {\n res[key] = value.map((v) => messageToJSON(v, field.resolvedType.fields));\n }\n else {\n throw new Error(`case not handled for repeated key: ${key}`);\n }\n }\n else if (isPrimitiveField(field.type)) {\n res[key] = transform$1(field, value);\n }\n else if ('valuesById' in field.resolvedType) {\n res[key] = field.resolvedType.valuesById[value];\n }\n else if (field.resolvedType.fields) {\n res[key] = messageToJSON(value, field.resolvedType.fields);\n }\n else {\n throw new Error(`case not handled: ${key}`);\n }\n });\n return res;\n}\nconst decode$1 = (Message, data) => {\n const buff = data.toBuffer();\n const a = new Uint8Array(buff);\n const decoded = Message.decode(a);\n return messageToJSON(decoded, decoded.$type.fields);\n};\n\nconst transform = (fieldType, value) => {\n if (fieldType === 'bytes') {\n if (typeof value === 'string' && !value)\n return value;\n return buffer.Buffer.from(value, 'hex');\n }\n if (typeof value === 'number' && !Number.isSafeInteger(value)) {\n throw new RangeError('field value is not within safe integer range');\n }\n return value;\n};\nfunction patch(Message, payload) {\n const patched = {};\n if (!Message.fields) {\n return patched;\n }\n Object.keys(Message.fields).forEach(key => {\n const field = Message.fields[key];\n const value = payload[key];\n if (typeof value === 'undefined') {\n return;\n }\n if (isPrimitiveField(field.type)) {\n if (field.repeated) {\n patched[key] = value.map((v) => transform(field.type, v));\n }\n else {\n patched[key] = transform(field.type, value);\n }\n return;\n }\n if (field.repeated) {\n const RefMessage = Message.lookupTypeOrEnum(field.type);\n patched[key] = value.map((v) => patch(RefMessage, v));\n }\n else if (typeof value === 'object' && value !== null) {\n const RefMessage = Message.lookupType(field.type);\n patched[key] = patch(RefMessage, value);\n }\n else if (typeof value === 'number') {\n const RefMessage = Message.lookupEnum(field.type);\n patched[key] = RefMessage.values[value];\n }\n else {\n patched[key] = value;\n }\n });\n return patched;\n}\nconst encode$1 = (Message, data) => {\n const payload = patch(Message, data);\n const message = Message.fromObject(payload);\n const buffer = Message.encode(message).finish();\n const bytebuffer = new ByteBuffer__default[\"default\"](buffer.byteLength);\n bytebuffer.append(buffer);\n bytebuffer.reset();\n return bytebuffer;\n};\n\nfunction parseConfigure(data) {\n if (typeof data === 'string') {\n return protobuf__namespace.Root.fromJSON(JSON.parse(data));\n }\n return protobuf__namespace.Root.fromJSON(data);\n}\nconst createMessageFromName = (messages, name) => {\n const Message = messages.lookupType(name);\n const MessageType = messages.lookupEnum('MessageType');\n let messageType = MessageType.values[`MessageType_${name}`];\n if (!messageType && Message.options) {\n messageType = Message.options['(wire_type)'];\n }\n return {\n Message,\n messageType,\n };\n};\nconst createMessageFromType = (messages, typeId) => {\n const MessageType = messages.lookupEnum('MessageType');\n const messageName = MessageType.valuesById[typeId].replace('MessageType_', '');\n const Message = messages.lookupType(messageName);\n return {\n Message,\n messageName,\n };\n};\n\nconst MESSAGE_TOP_CHAR = 0x003f;\nconst MESSAGE_HEADER_BYTE = 0x23;\nconst HEADER_SIZE = 1 + 1 + 4 + 2;\nconst BUFFER_SIZE = 63;\nconst COMMON_HEADER_SIZE = 6;\n\nconst readHeader = (buffer) => {\n const typeId = buffer.readUint16();\n const length = buffer.readUint32();\n return { typeId, length };\n};\nconst decode = (byteBuffer) => {\n const { typeId } = readHeader(byteBuffer);\n return {\n typeId,\n buffer: byteBuffer,\n };\n};\n\nfunction encode(data, options) {\n const { addTrezorHeaders, chunked, messageType } = options;\n const fullSize = (addTrezorHeaders ? HEADER_SIZE : HEADER_SIZE - 2) + data.limit;\n const encodedByteBuffer = new ByteBuffer__default[\"default\"](fullSize);\n if (addTrezorHeaders) {\n encodedByteBuffer.writeByte(MESSAGE_HEADER_BYTE);\n encodedByteBuffer.writeByte(MESSAGE_HEADER_BYTE);\n }\n encodedByteBuffer.writeUint16(messageType);\n encodedByteBuffer.writeUint32(data.limit);\n encodedByteBuffer.append(data.buffer);\n encodedByteBuffer.reset();\n if (chunked === false) {\n return encodedByteBuffer;\n }\n const result = [];\n const size = BUFFER_SIZE;\n const count = Math.floor((encodedByteBuffer.limit - 1) / size) + 1 || 1;\n for (let i = 0; i < count; i++) {\n const start = i * size;\n const end = Math.min((i + 1) * size, encodedByteBuffer.limit);\n const slice = encodedByteBuffer.slice(start, end);\n slice.compact();\n result.push(slice.buffer);\n }\n return result;\n}\n\nfunction buildOne(messages, name, data) {\n const { Message, messageType } = createMessageFromName(messages, name);\n const buffer = encode$1(Message, data);\n return encode(buffer, {\n addTrezorHeaders: false,\n chunked: false,\n messageType,\n });\n}\nconst buildBuffers = (messages, name, data) => {\n const { Message, messageType } = createMessageFromName(messages, name);\n const buffer = encode$1(Message, data);\n const encodeBuffers = encode(buffer, {\n addTrezorHeaders: true,\n chunked: true,\n messageType,\n });\n const outBuffers = [];\n for (const buf of encodeBuffers) {\n const chunkBuffer = new ByteBuffer__default[\"default\"](BUFFER_SIZE + 1);\n chunkBuffer.writeByte(MESSAGE_TOP_CHAR);\n chunkBuffer.append(buf);\n chunkBuffer.reset();\n outBuffers.push(chunkBuffer);\n }\n return outBuffers;\n};\n\nfunction receiveOne(messages, data) {\n const bytebuffer = ByteBuffer__default[\"default\"].wrap(data, 'hex');\n const { typeId, buffer } = decode(bytebuffer);\n const { Message, messageName } = createMessageFromType(messages, typeId);\n const message = decode$1(Message, buffer);\n return {\n message,\n type: messageName,\n };\n}\n\nconst ERROR = 'Wrong result type.';\nfunction info(res) {\n if (typeof res !== 'object' || res == null) {\n throw new Error('Wrong result type.');\n }\n const { version } = res;\n if (typeof version !== 'string') {\n throw new Error(ERROR);\n }\n const configured = !!res.configured;\n return { version, configured };\n}\nfunction version(version) {\n if (typeof version !== 'string') {\n throw new Error(ERROR);\n }\n return version.trim();\n}\nfunction convertSession(r) {\n if (r == null) {\n return null;\n }\n if (typeof r !== 'string') {\n throw new Error(ERROR);\n }\n return r;\n}\nfunction devices(res) {\n if (typeof res !== 'object') {\n throw new Error(ERROR);\n }\n if (!(res instanceof Array)) {\n throw new Error(ERROR);\n }\n return res.map((o) => {\n if (typeof o !== 'object' || o == null) {\n throw new Error(ERROR);\n }\n const { path } = o;\n if (typeof path !== 'string') {\n throw new Error(ERROR);\n }\n const pathS = path.toString();\n return {\n path: pathS,\n session: convertSession(o.session),\n debugSession: convertSession(o.debugSession),\n product: o.product,\n vendor: o.vendor,\n debug: !!o.debug,\n };\n });\n}\nfunction acquire(res) {\n if (typeof res !== 'object' || res == null) {\n throw new Error(ERROR);\n }\n const { session } = res;\n if (typeof session !== 'string' && typeof session !== 'number') {\n throw new Error(ERROR);\n }\n return session.toString();\n}\nfunction call(res) {\n if (typeof res !== 'object' || res == null) {\n throw new Error(ERROR);\n }\n const { type } = res;\n if (typeof type !== 'string') {\n throw new Error(ERROR);\n }\n const { message } = res;\n if (typeof message !== 'object' || message == null) {\n throw new Error(ERROR);\n }\n return { type, message };\n}\n\nvar check = /*#__PURE__*/Object.freeze({\n __proto__: null,\n info: info,\n version: version,\n devices: devices,\n acquire: acquire,\n call: call\n});\n\nvar BinanceOrderType;\n(function (BinanceOrderType) {\n BinanceOrderType[BinanceOrderType[\"OT_UNKNOWN\"] = 0] = \"OT_UNKNOWN\";\n BinanceOrderType[BinanceOrderType[\"MARKET\"] = 1] = \"MARKET\";\n BinanceOrderType[BinanceOrderType[\"LIMIT\"] = 2] = \"LIMIT\";\n BinanceOrderType[BinanceOrderType[\"OT_RESERVED\"] = 3] = \"OT_RESERVED\";\n})(BinanceOrderType || (BinanceOrderType = {}));\nvar BinanceOrderSide;\n(function (BinanceOrderSide) {\n BinanceOrderSide[BinanceOrderSide[\"SIDE_UNKNOWN\"] = 0] = \"SIDE_UNKNOWN\";\n BinanceOrderSide[BinanceOrderSide[\"BUY\"] = 1] = \"BUY\";\n BinanceOrderSide[BinanceOrderSide[\"SELL\"] = 2] = \"SELL\";\n})(BinanceOrderSide || (BinanceOrderSide = {}));\nvar BinanceTimeInForce;\n(function (BinanceTimeInForce) {\n BinanceTimeInForce[BinanceTimeInForce[\"TIF_UNKNOWN\"] = 0] = \"TIF_UNKNOWN\";\n BinanceTimeInForce[BinanceTimeInForce[\"GTE\"] = 1] = \"GTE\";\n BinanceTimeInForce[BinanceTimeInForce[\"TIF_RESERVED\"] = 2] = \"TIF_RESERVED\";\n BinanceTimeInForce[BinanceTimeInForce[\"IOC\"] = 3] = \"IOC\";\n})(BinanceTimeInForce || (BinanceTimeInForce = {}));\nvar Enum_InputScriptType;\n(function (Enum_InputScriptType) {\n Enum_InputScriptType[Enum_InputScriptType[\"SPENDADDRESS\"] = 0] = \"SPENDADDRESS\";\n Enum_InputScriptType[Enum_InputScriptType[\"SPENDMULTISIG\"] = 1] = \"SPENDMULTISIG\";\n Enum_InputScriptType[Enum_InputScriptType[\"EXTERNAL\"] = 2] = \"EXTERNAL\";\n Enum_InputScriptType[Enum_InputScriptType[\"SPENDWITNESS\"] = 3] = \"SPENDWITNESS\";\n Enum_InputScriptType[Enum_InputScriptType[\"SPENDP2SHWITNESS\"] = 4] = \"SPENDP2SHWITNESS\";\n Enum_InputScriptType[Enum_InputScriptType[\"SPENDTAPROOT\"] = 5] = \"SPENDTAPROOT\";\n})(Enum_InputScriptType || (Enum_InputScriptType = {}));\nvar Enum_OutputScriptType;\n(function (Enum_OutputScriptType) {\n Enum_OutputScriptType[Enum_OutputScriptType[\"PAYTOADDRESS\"] = 0] = \"PAYTOADDRESS\";\n Enum_OutputScriptType[Enum_OutputScriptType[\"PAYTOSCRIPTHASH\"] = 1] = \"PAYTOSCRIPTHASH\";\n Enum_OutputScriptType[Enum_OutputScriptType[\"PAYTOMULTISIG\"] = 2] = \"PAYTOMULTISIG\";\n Enum_OutputScriptType[Enum_OutputScriptType[\"PAYTOOPRETURN\"] = 3] = \"PAYTOOPRETURN\";\n Enum_OutputScriptType[Enum_OutputScriptType[\"PAYTOWITNESS\"] = 4] = \"PAYTOWITNESS\";\n Enum_OutputScriptType[Enum_OutputScriptType[\"PAYTOP2SHWITNESS\"] = 5] = \"PAYTOP2SHWITNESS\";\n Enum_OutputScriptType[Enum_OutputScriptType[\"PAYTOTAPROOT\"] = 6] = \"PAYTOTAPROOT\";\n})(Enum_OutputScriptType || (Enum_OutputScriptType = {}));\nvar DecredStakingSpendType;\n(function (DecredStakingSpendType) {\n DecredStakingSpendType[DecredStakingSpendType[\"SSGen\"] = 0] = \"SSGen\";\n DecredStakingSpendType[DecredStakingSpendType[\"SSRTX\"] = 1] = \"SSRTX\";\n})(DecredStakingSpendType || (DecredStakingSpendType = {}));\nvar AmountUnit;\n(function (AmountUnit) {\n AmountUnit[AmountUnit[\"BITCOIN\"] = 0] = \"BITCOIN\";\n AmountUnit[AmountUnit[\"MILLIBITCOIN\"] = 1] = \"MILLIBITCOIN\";\n AmountUnit[AmountUnit[\"MICROBITCOIN\"] = 2] = \"MICROBITCOIN\";\n AmountUnit[AmountUnit[\"SATOSHI\"] = 3] = \"SATOSHI\";\n})(AmountUnit || (AmountUnit = {}));\nvar Enum_RequestType;\n(function (Enum_RequestType) {\n Enum_RequestType[Enum_RequestType[\"TXINPUT\"] = 0] = \"TXINPUT\";\n Enum_RequestType[Enum_RequestType[\"TXOUTPUT\"] = 1] = \"TXOUTPUT\";\n Enum_RequestType[Enum_RequestType[\"TXMETA\"] = 2] = \"TXMETA\";\n Enum_RequestType[Enum_RequestType[\"TXFINISHED\"] = 3] = \"TXFINISHED\";\n Enum_RequestType[Enum_RequestType[\"TXEXTRADATA\"] = 4] = \"TXEXTRADATA\";\n Enum_RequestType[Enum_RequestType[\"TXORIGINPUT\"] = 5] = \"TXORIGINPUT\";\n Enum_RequestType[Enum_RequestType[\"TXORIGOUTPUT\"] = 6] = \"TXORIGOUTPUT\";\n Enum_RequestType[Enum_RequestType[\"TXPAYMENTREQ\"] = 7] = \"TXPAYMENTREQ\";\n})(Enum_RequestType || (Enum_RequestType = {}));\nvar CardanoDerivationType;\n(function (CardanoDerivationType) {\n CardanoDerivationType[CardanoDerivationType[\"LEDGER\"] = 0] = \"LEDGER\";\n CardanoDerivationType[CardanoDerivationType[\"ICARUS\"] = 1] = \"ICARUS\";\n CardanoDerivationType[CardanoDerivationType[\"ICARUS_TREZOR\"] = 2] = \"ICARUS_TREZOR\";\n})(CardanoDerivationType || (CardanoDerivationType = {}));\nvar CardanoAddressType;\n(function (CardanoAddressType) {\n CardanoAddressType[CardanoAddressType[\"BASE\"] = 0] = \"BASE\";\n CardanoAddressType[CardanoAddressType[\"BASE_SCRIPT_KEY\"] = 1] = \"BASE_SCRIPT_KEY\";\n CardanoAddressType[CardanoAddressType[\"BASE_KEY_SCRIPT\"] = 2] = \"BASE_KEY_SCRIPT\";\n CardanoAddressType[CardanoAddressType[\"BASE_SCRIPT_SCRIPT\"] = 3] = \"BASE_SCRIPT_SCRIPT\";\n CardanoAddressType[CardanoAddressType[\"POINTER\"] = 4] = \"POINTER\";\n CardanoAddressType[CardanoAddressType[\"POINTER_SCRIPT\"] = 5] = \"POINTER_SCRIPT\";\n CardanoAddressType[CardanoAddressType[\"ENTERPRISE\"] = 6] = \"ENTERPRISE\";\n CardanoAddressType[CardanoAddressType[\"ENTERPRISE_SCRIPT\"] = 7] = \"ENTERPRISE_SCRIPT\";\n CardanoAddressType[CardanoAddressType[\"BYRON\"] = 8] = \"BYRON\";\n CardanoAddressType[CardanoAddressType[\"REWARD\"] = 14] = \"REWARD\";\n CardanoAddressType[CardanoAddressType[\"REWARD_SCRIPT\"] = 15] = \"REWARD_SCRIPT\";\n})(CardanoAddressType || (CardanoAddressType = {}));\nvar CardanoNativeScriptType;\n(function (CardanoNativeScriptType) {\n CardanoNativeScriptType[CardanoNativeScriptType[\"PUB_KEY\"] = 0] = \"PUB_KEY\";\n CardanoNativeScriptType[CardanoNativeScriptType[\"ALL\"] = 1] = \"ALL\";\n CardanoNativeScriptType[CardanoNativeScriptType[\"ANY\"] = 2] = \"ANY\";\n CardanoNativeScriptType[CardanoNativeScriptType[\"N_OF_K\"] = 3] = \"N_OF_K\";\n CardanoNativeScriptType[CardanoNativeScriptType[\"INVALID_BEFORE\"] = 4] = \"INVALID_BEFORE\";\n CardanoNativeScriptType[CardanoNativeScriptType[\"INVALID_HEREAFTER\"] = 5] = \"INVALID_HEREAFTER\";\n})(CardanoNativeScriptType || (CardanoNativeScriptType = {}));\nvar CardanoNativeScriptHashDisplayFormat;\n(function (CardanoNativeScriptHashDisplayFormat) {\n CardanoNativeScriptHashDisplayFormat[CardanoNativeScriptHashDisplayFormat[\"HIDE\"] = 0] = \"HIDE\";\n CardanoNativeScriptHashDisplayFormat[CardanoNativeScriptHashDisplayFormat[\"BECH32\"] = 1] = \"BECH32\";\n CardanoNativeScriptHashDisplayFormat[CardanoNativeScriptHashDisplayFormat[\"POLICY_ID\"] = 2] = \"POLICY_ID\";\n})(CardanoNativeScriptHashDisplayFormat || (CardanoNativeScriptHashDisplayFormat = {}));\nvar CardanoCertificateType;\n(function (CardanoCertificateType) {\n CardanoCertificateType[CardanoCertificateType[\"STAKE_REGISTRATION\"] = 0] = \"STAKE_REGISTRATION\";\n CardanoCertificateType[CardanoCertificateType[\"STAKE_DEREGISTRATION\"] = 1] = \"STAKE_DEREGISTRATION\";\n CardanoCertificateType[CardanoCertificateType[\"STAKE_DELEGATION\"] = 2] = \"STAKE_DELEGATION\";\n CardanoCertificateType[CardanoCertificateType[\"STAKE_POOL_REGISTRATION\"] = 3] = \"STAKE_POOL_REGISTRATION\";\n})(CardanoCertificateType || (CardanoCertificateType = {}));\nvar CardanoPoolRelayType;\n(function (CardanoPoolRelayType) {\n CardanoPoolRelayType[CardanoPoolRelayType[\"SINGLE_HOST_IP\"] = 0] = \"SINGLE_HOST_IP\";\n CardanoPoolRelayType[CardanoPoolRelayType[\"SINGLE_HOST_NAME\"] = 1] = \"SINGLE_HOST_NAME\";\n CardanoPoolRelayType[CardanoPoolRelayType[\"MULTIPLE_HOST_NAME\"] = 2] = \"MULTIPLE_HOST_NAME\";\n})(CardanoPoolRelayType || (CardanoPoolRelayType = {}));\nvar CardanoTxAuxiliaryDataSupplementType;\n(function (CardanoTxAuxiliaryDataSupplementType) {\n CardanoTxAuxiliaryDataSupplementType[CardanoTxAuxiliaryDataSupplementType[\"NONE\"] = 0] = \"NONE\";\n CardanoTxAuxiliaryDataSupplementType[CardanoTxAuxiliaryDataSupplementType[\"CATALYST_REGISTRATION_SIGNATURE\"] = 1] = \"CATALYST_REGISTRATION_SIGNATURE\";\n})(CardanoTxAuxiliaryDataSupplementType || (CardanoTxAuxiliaryDataSupplementType = {}));\nvar CardanoTxSigningMode;\n(function (CardanoTxSigningMode) {\n CardanoTxSigningMode[CardanoTxSigningMode[\"ORDINARY_TRANSACTION\"] = 0] = \"ORDINARY_TRANSACTION\";\n CardanoTxSigningMode[CardanoTxSigningMode[\"POOL_REGISTRATION_AS_OWNER\"] = 1] = \"POOL_REGISTRATION_AS_OWNER\";\n CardanoTxSigningMode[CardanoTxSigningMode[\"MULTISIG_TRANSACTION\"] = 2] = \"MULTISIG_TRANSACTION\";\n CardanoTxSigningMode[CardanoTxSigningMode[\"PLUTUS_TRANSACTION\"] = 3] = \"PLUTUS_TRANSACTION\";\n})(CardanoTxSigningMode || (CardanoTxSigningMode = {}));\nvar CardanoTxWitnessType;\n(function (CardanoTxWitnessType) {\n CardanoTxWitnessType[CardanoTxWitnessType[\"BYRON_WITNESS\"] = 0] = \"BYRON_WITNESS\";\n CardanoTxWitnessType[CardanoTxWitnessType[\"SHELLEY_WITNESS\"] = 1] = \"SHELLEY_WITNESS\";\n})(CardanoTxWitnessType || (CardanoTxWitnessType = {}));\nvar FailureType;\n(function (FailureType) {\n FailureType[FailureType[\"Failure_UnexpectedMessage\"] = 1] = \"Failure_UnexpectedMessage\";\n FailureType[FailureType[\"Failure_ButtonExpected\"] = 2] = \"Failure_ButtonExpected\";\n FailureType[FailureType[\"Failure_DataError\"] = 3] = \"Failure_DataError\";\n FailureType[FailureType[\"Failure_ActionCancelled\"] = 4] = \"Failure_ActionCancelled\";\n FailureType[FailureType[\"Failure_PinExpected\"] = 5] = \"Failure_PinExpected\";\n FailureType[FailureType[\"Failure_PinCancelled\"] = 6] = \"Failure_PinCancelled\";\n FailureType[FailureType[\"Failure_PinInvalid\"] = 7] = \"Failure_PinInvalid\";\n FailureType[FailureType[\"Failure_InvalidSignature\"] = 8] = \"Failure_InvalidSignature\";\n FailureType[FailureType[\"Failure_ProcessError\"] = 9] = \"Failure_ProcessError\";\n FailureType[FailureType[\"Failure_NotEnoughFunds\"] = 10] = \"Failure_NotEnoughFunds\";\n FailureType[FailureType[\"Failure_NotInitialized\"] = 11] = \"Failure_NotInitialized\";\n FailureType[FailureType[\"Failure_PinMismatch\"] = 12] = \"Failure_PinMismatch\";\n FailureType[FailureType[\"Failure_WipeCodeMismatch\"] = 13] = \"Failure_WipeCodeMismatch\";\n FailureType[FailureType[\"Failure_InvalidSession\"] = 14] = \"Failure_InvalidSession\";\n FailureType[FailureType[\"Failure_FirmwareError\"] = 99] = \"Failure_FirmwareError\";\n})(FailureType || (FailureType = {}));\nvar Enum_ButtonRequestType;\n(function (Enum_ButtonRequestType) {\n Enum_ButtonRequestType[Enum_ButtonRequestType[\"ButtonRequest_Other\"] = 1] = \"ButtonRequest_Other\";\n Enum_ButtonRequestType[Enum_ButtonRequestType[\"ButtonRequest_FeeOverThreshold\"] = 2] = \"ButtonRequest_FeeOverThreshold\";\n Enum_ButtonRequestType[Enum_ButtonRequestType[\"ButtonRequest_ConfirmOutput\"] = 3] = \"ButtonRequest_ConfirmOutput\";\n Enum_ButtonRequestType[Enum_ButtonRequestType[\"ButtonRequest_ResetDevice\"] = 4] = \"ButtonRequest_ResetDevice\";\n Enum_ButtonRequestType[Enum_ButtonRequestType[\"ButtonRequest_ConfirmWord\"] = 5] = \"ButtonRequest_ConfirmWord\";\n Enum_ButtonRequestType[Enum_ButtonRequestType[\"ButtonRequest_WipeDevice\"] = 6] = \"ButtonRequest_WipeDevice\";\n Enum_ButtonRequestType[Enum_ButtonRequestType[\"ButtonRequest_ProtectCall\"] = 7] = \"ButtonRequest_ProtectCall\";\n Enum_ButtonRequestType[Enum_ButtonRequestType[\"ButtonRequest_SignTx\"] = 8] = \"ButtonRequest_SignTx\";\n Enum_ButtonRequestType[Enum_ButtonRequestType[\"ButtonRequest_FirmwareCheck\"] = 9] = \"ButtonRequest_FirmwareCheck\";\n Enum_ButtonRequestType[Enum_ButtonRequestType[\"ButtonRequest_Address\"] = 10] = \"ButtonRequest_Address\";\n Enum_ButtonRequestType[Enum_ButtonRequestType[\"ButtonRequest_PublicKey\"] = 11] = \"ButtonRequest_PublicKey\";\n Enum_ButtonRequestType[Enum_ButtonRequestType[\"ButtonRequest_MnemonicWordCount\"] = 12] = \"ButtonRequest_MnemonicWordCount\";\n Enum_ButtonRequestType[Enum_ButtonRequestType[\"ButtonRequest_MnemonicInput\"] = 13] = \"ButtonRequest_MnemonicInput\";\n Enum_ButtonRequestType[Enum_ButtonRequestType[\"_Deprecated_ButtonRequest_PassphraseType\"] = 14] = \"_Deprecated_ButtonRequest_PassphraseType\";\n Enum_ButtonRequestType[Enum_ButtonRequestType[\"ButtonRequest_UnknownDerivationPath\"] = 15] = \"ButtonRequest_UnknownDerivationPath\";\n Enum_ButtonRequestType[Enum_ButtonRequestType[\"ButtonRequest_RecoveryHomepage\"] = 16] = \"ButtonRequest_RecoveryHomepage\";\n Enum_ButtonRequestType[Enum_ButtonRequestType[\"ButtonRequest_Success\"] = 17] = \"ButtonRequest_Success\";\n Enum_ButtonRequestType[Enum_ButtonRequestType[\"ButtonRequest_Warning\"] = 18] = \"ButtonRequest_Warning\";\n Enum_ButtonRequestType[Enum_ButtonRequestType[\"ButtonRequest_PassphraseEntry\"] = 19] = \"ButtonRequest_PassphraseEntry\";\n Enum_ButtonRequestType[Enum_ButtonRequestType[\"ButtonRequest_PinEntry\"] = 20] = \"ButtonRequest_PinEntry\";\n})(Enum_ButtonRequestType || (Enum_ButtonRequestType = {}));\nvar Enum_PinMatrixRequestType;\n(function (Enum_PinMatrixRequestType) {\n Enum_PinMatrixRequestType[Enum_PinMatrixRequestType[\"PinMatrixRequestType_Current\"] = 1] = \"PinMatrixRequestType_Current\";\n Enum_PinMatrixRequestType[Enum_PinMatrixRequestType[\"PinMatrixRequestType_NewFirst\"] = 2] = \"PinMatrixRequestType_NewFirst\";\n Enum_PinMatrixRequestType[Enum_PinMatrixRequestType[\"PinMatrixRequestType_NewSecond\"] = 3] = \"PinMatrixRequestType_NewSecond\";\n Enum_PinMatrixRequestType[Enum_PinMatrixRequestType[\"PinMatrixRequestType_WipeCodeFirst\"] = 4] = \"PinMatrixRequestType_WipeCodeFirst\";\n Enum_PinMatrixRequestType[Enum_PinMatrixRequestType[\"PinMatrixRequestType_WipeCodeSecond\"] = 5] = \"PinMatrixRequestType_WipeCodeSecond\";\n})(Enum_PinMatrixRequestType || (Enum_PinMatrixRequestType = {}));\nvar DebugButton;\n(function (DebugButton) {\n DebugButton[DebugButton[\"NO\"] = 0] = \"NO\";\n DebugButton[DebugButton[\"YES\"] = 1] = \"YES\";\n DebugButton[DebugButton[\"INFO\"] = 2] = \"INFO\";\n})(DebugButton || (DebugButton = {}));\nvar EthereumDataType;\n(function (EthereumDataType) {\n EthereumDataType[EthereumDataType[\"UINT\"] = 1] = \"UINT\";\n EthereumDataType[EthereumDataType[\"INT\"] = 2] = \"INT\";\n EthereumDataType[EthereumDataType[\"BYTES\"] = 3] = \"BYTES\";\n EthereumDataType[EthereumDataType[\"STRING\"] = 4] = \"STRING\";\n EthereumDataType[EthereumDataType[\"BOOL\"] = 5] = \"BOOL\";\n EthereumDataType[EthereumDataType[\"ADDRESS\"] = 6] = \"ADDRESS\";\n EthereumDataType[EthereumDataType[\"ARRAY\"] = 7] = \"ARRAY\";\n EthereumDataType[EthereumDataType[\"STRUCT\"] = 8] = \"STRUCT\";\n})(EthereumDataType || (EthereumDataType = {}));\nvar Enum_BackupType;\n(function (Enum_BackupType) {\n Enum_BackupType[Enum_BackupType[\"Bip39\"] = 0] = \"Bip39\";\n Enum_BackupType[Enum_BackupType[\"Slip39_Basic\"] = 1] = \"Slip39_Basic\";\n Enum_BackupType[Enum_BackupType[\"Slip39_Advanced\"] = 2] = \"Slip39_Advanced\";\n})(Enum_BackupType || (Enum_BackupType = {}));\nvar Enum_SafetyCheckLevel;\n(function (Enum_SafetyCheckLevel) {\n Enum_SafetyCheckLevel[Enum_SafetyCheckLevel[\"Strict\"] = 0] = \"Strict\";\n Enum_SafetyCheckLevel[Enum_SafetyCheckLevel[\"PromptAlways\"] = 1] = \"PromptAlways\";\n Enum_SafetyCheckLevel[Enum_SafetyCheckLevel[\"PromptTemporarily\"] = 2] = \"PromptTemporarily\";\n})(Enum_SafetyCheckLevel || (Enum_SafetyCheckLevel = {}));\nvar Enum_Capability;\n(function (Enum_Capability) {\n Enum_Capability[Enum_Capability[\"Capability_Bitcoin\"] = 1] = \"Capability_Bitcoin\";\n Enum_Capability[Enum_Capability[\"Capability_Bitcoin_like\"] = 2] = \"Capability_Bitcoin_like\";\n Enum_Capability[Enum_Capability[\"Capability_Binance\"] = 3] = \"Capability_Binance\";\n Enum_Capability[Enum_Capability[\"Capability_Cardano\"] = 4] = \"Capability_Cardano\";\n Enum_Capability[Enum_Capability[\"Capability_Crypto\"] = 5] = \"Capability_Crypto\";\n Enum_Capability[Enum_Capability[\"Capability_EOS\"] = 6] = \"Capability_EOS\";\n Enum_Capability[Enum_Capability[\"Capability_Ethereum\"] = 7] = \"Capability_Ethereum\";\n Enum_Capability[Enum_Capability[\"Capability_Lisk\"] = 8] = \"Capability_Lisk\";\n Enum_Capability[Enum_Capability[\"Capability_Monero\"] = 9] = \"Capability_Monero\";\n Enum_Capability[Enum_Capability[\"Capability_NEM\"] = 10] = \"Capability_NEM\";\n Enum_Capability[Enum_Capability[\"Capability_Ripple\"] = 11] = \"Capability_Ripple\";\n Enum_Capability[Enum_Capability[\"Capability_Stellar\"] = 12] = \"Capability_Stellar\";\n Enum_Capability[Enum_Capability[\"Capability_Tezos\"] = 13] = \"Capability_Tezos\";\n Enum_Capability[Enum_Capability[\"Capability_U2F\"] = 14] = \"Capability_U2F\";\n Enum_Capability[Enum_Capability[\"Capability_Shamir\"] = 15] = \"Capability_Shamir\";\n Enum_Capability[Enum_Capability[\"Capability_ShamirGroups\"] = 16] = \"Capability_ShamirGroups\";\n Enum_Capability[Enum_Capability[\"Capability_PassphraseEntry\"] = 17] = \"Capability_PassphraseEntry\";\n})(Enum_Capability || (Enum_Capability = {}));\nvar SdProtectOperationType;\n(function (SdProtectOperationType) {\n SdProtectOperationType[SdProtectOperationType[\"DISABLE\"] = 0] = \"DISABLE\";\n SdProtectOperationType[SdProtectOperationType[\"ENABLE\"] = 1] = \"ENABLE\";\n SdProtectOperationType[SdProtectOperationType[\"REFRESH\"] = 2] = \"REFRESH\";\n})(SdProtectOperationType || (SdProtectOperationType = {}));\nvar RecoveryDeviceType;\n(function (RecoveryDeviceType) {\n RecoveryDeviceType[RecoveryDeviceType[\"RecoveryDeviceType_ScrambledWords\"] = 0] = \"RecoveryDeviceType_ScrambledWords\";\n RecoveryDeviceType[RecoveryDeviceType[\"RecoveryDeviceType_Matrix\"] = 1] = \"RecoveryDeviceType_Matrix\";\n})(RecoveryDeviceType || (RecoveryDeviceType = {}));\nvar Enum_WordRequestType;\n(function (Enum_WordRequestType) {\n Enum_WordRequestType[Enum_WordRequestType[\"WordRequestType_Plain\"] = 0] = \"WordRequestType_Plain\";\n Enum_WordRequestType[Enum_WordRequestType[\"WordRequestType_Matrix9\"] = 1] = \"WordRequestType_Matrix9\";\n Enum_WordRequestType[Enum_WordRequestType[\"WordRequestType_Matrix6\"] = 2] = \"WordRequestType_Matrix6\";\n})(Enum_WordRequestType || (Enum_WordRequestType = {}));\nvar NEMMosaicLevy;\n(function (NEMMosaicLevy) {\n NEMMosaicLevy[NEMMosaicLevy[\"MosaicLevy_Absolute\"] = 1] = \"MosaicLevy_Absolute\";\n NEMMosaicLevy[NEMMosaicLevy[\"MosaicLevy_Percentile\"] = 2] = \"MosaicLevy_Percentile\";\n})(NEMMosaicLevy || (NEMMosaicLevy = {}));\nvar NEMSupplyChangeType;\n(function (NEMSupplyChangeType) {\n NEMSupplyChangeType[NEMSupplyChangeType[\"SupplyChange_Increase\"] = 1] = \"SupplyChange_Increase\";\n NEMSupplyChangeType[NEMSupplyChangeType[\"SupplyChange_Decrease\"] = 2] = \"SupplyChange_Decrease\";\n})(NEMSupplyChangeType || (NEMSupplyChangeType = {}));\nvar NEMModificationType;\n(function (NEMModificationType) {\n NEMModificationType[NEMModificationType[\"CosignatoryModification_Add\"] = 1] = \"CosignatoryModification_Add\";\n NEMModificationType[NEMModificationType[\"CosignatoryModification_Delete\"] = 2] = \"CosignatoryModification_Delete\";\n})(NEMModificationType || (NEMModificationType = {}));\nvar NEMImportanceTransferMode;\n(function (NEMImportanceTransferMode) {\n NEMImportanceTransferMode[NEMImportanceTransferMode[\"ImportanceTransfer_Activate\"] = 1] = \"ImportanceTransfer_Activate\";\n NEMImportanceTransferMode[NEMImportanceTransferMode[\"ImportanceTransfer_Deactivate\"] = 2] = \"ImportanceTransfer_Deactivate\";\n})(NEMImportanceTransferMode || (NEMImportanceTransferMode = {}));\nvar StellarAssetType;\n(function (StellarAssetType) {\n StellarAssetType[StellarAssetType[\"NATIVE\"] = 0] = \"NATIVE\";\n StellarAssetType[StellarAssetType[\"ALPHANUM4\"] = 1] = \"ALPHANUM4\";\n StellarAssetType[StellarAssetType[\"ALPHANUM12\"] = 2] = \"ALPHANUM12\";\n})(StellarAssetType || (StellarAssetType = {}));\nvar StellarMemoType;\n(function (StellarMemoType) {\n StellarMemoType[StellarMemoType[\"NONE\"] = 0] = \"NONE\";\n StellarMemoType[StellarMemoType[\"TEXT\"] = 1] = \"TEXT\";\n StellarMemoType[StellarMemoType[\"ID\"] = 2] = \"ID\";\n StellarMemoType[StellarMemoType[\"HASH\"] = 3] = \"HASH\";\n StellarMemoType[StellarMemoType[\"RETURN\"] = 4] = \"RETURN\";\n})(StellarMemoType || (StellarMemoType = {}));\nvar StellarSignerType;\n(function (StellarSignerType) {\n StellarSignerType[StellarSignerType[\"ACCOUNT\"] = 0] = \"ACCOUNT\";\n StellarSignerType[StellarSignerType[\"PRE_AUTH\"] = 1] = \"PRE_AUTH\";\n StellarSignerType[StellarSignerType[\"HASH\"] = 2] = \"HASH\";\n})(StellarSignerType || (StellarSignerType = {}));\nvar TezosContractType;\n(function (TezosContractType) {\n TezosContractType[TezosContractType[\"Implicit\"] = 0] = \"Implicit\";\n TezosContractType[TezosContractType[\"Originated\"] = 1] = \"Originated\";\n})(TezosContractType || (TezosContractType = {}));\nvar TezosBallotType;\n(function (TezosBallotType) {\n TezosBallotType[TezosBallotType[\"Yay\"] = 0] = \"Yay\";\n TezosBallotType[TezosBallotType[\"Nay\"] = 1] = \"Nay\";\n TezosBallotType[TezosBallotType[\"Pass\"] = 2] = \"Pass\";\n})(TezosBallotType || (TezosBallotType = {}));\n\nvar messages = /*#__PURE__*/Object.freeze({\n __proto__: null,\n get BinanceOrderType () { return BinanceOrderType; },\n get BinanceOrderSide () { return BinanceOrderSide; },\n get BinanceTimeInForce () { return BinanceTimeInForce; },\n get Enum_InputScriptType () { return Enum_InputScriptType; },\n get Enum_OutputScriptType () { return Enum_OutputScriptType; },\n get DecredStakingSpendType () { return DecredStakingSpendType; },\n get AmountUnit () { return AmountUnit; },\n get Enum_RequestType () { return Enum_RequestType; },\n get CardanoDerivationType () { return CardanoDerivationType; },\n get CardanoAddressType () { return CardanoAddressType; },\n get CardanoNativeScriptType () { return CardanoNativeScriptType; },\n get CardanoNativeScriptHashDisplayFormat () { return CardanoNativeScriptHashDisplayFormat; },\n get CardanoCertificateType () { return CardanoCertificateType; },\n get CardanoPoolRelayType () { return CardanoPoolRelayType; },\n get CardanoTxAuxiliaryDataSupplementType () { return CardanoTxAuxiliaryDataSupplementType; },\n get CardanoTxSigningMode () { return CardanoTxSigningMode; },\n get CardanoTxWitnessType () { return CardanoTxWitnessType; },\n get FailureType () { return FailureType; },\n get Enum_ButtonRequestType () { return Enum_ButtonRequestType; },\n get Enum_PinMatrixRequestType () { return Enum_PinMatrixRequestType; },\n get DebugButton () { return DebugButton; },\n get EthereumDataType () { return EthereumDataType; },\n get Enum_BackupType () { return Enum_BackupType; },\n get Enum_SafetyCheckLevel () { return Enum_SafetyCheckLevel; },\n get Enum_Capability () { return Enum_Capability; },\n get SdProtectOperationType () { return SdProtectOperationType; },\n get RecoveryDeviceType () { return RecoveryDeviceType; },\n get Enum_WordRequestType () { return Enum_WordRequestType; },\n get NEMMosaicLevy () { return NEMMosaicLevy; },\n get NEMSupplyChangeType () { return NEMSupplyChangeType; },\n get NEMModificationType () { return NEMModificationType; },\n get NEMImportanceTransferMode () { return NEMImportanceTransferMode; },\n get StellarAssetType () { return StellarAssetType; },\n get StellarMemoType () { return StellarMemoType; },\n get StellarSignerType () { return StellarSignerType; },\n get TezosContractType () { return TezosContractType; },\n get TezosBallotType () { return TezosBallotType; }\n});\n\nprotobuf__namespace.util.Long = Long__namespace;\nprotobuf__namespace.configure();\nvar index = {\n check,\n buildOne,\n buildBuffers,\n receiveOne,\n parseConfigure,\n};\n\nexports.BUFFER_SIZE = BUFFER_SIZE;\nexports.COMMON_HEADER_SIZE = COMMON_HEADER_SIZE;\nexports.HEADER_SIZE = HEADER_SIZE;\nexports.MESSAGE_HEADER_BYTE = MESSAGE_HEADER_BYTE;\nexports.MESSAGE_TOP_CHAR = MESSAGE_TOP_CHAR;\nexports.Messages = messages;\nexports[\"default\"] = index;\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(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\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",";(function (globalObject) {\r\n 'use strict';\r\n\r\n/*\r\n * bignumber.js v9.0.2\r\n * A JavaScript library for arbitrary-precision arithmetic.\r\n * https://github.com/MikeMcl/bignumber.js\r\n * Copyright (c) 2021 Michael Mclaughlin <M8ch88l@gmail.com>\r\n * MIT Licensed.\r\n *\r\n * BigNumber.prototype methods | BigNumber methods\r\n * |\r\n * absoluteValue abs | clone\r\n * comparedTo | config set\r\n * decimalPlaces dp | DECIMAL_PLACES\r\n * dividedBy div | ROUNDING_MODE\r\n * dividedToIntegerBy idiv | EXPONENTIAL_AT\r\n * exponentiatedBy pow | RANGE\r\n * integerValue | CRYPTO\r\n * isEqualTo eq | MODULO_MODE\r\n * isFinite | POW_PRECISION\r\n * isGreaterThan gt | FORMAT\r\n * isGreaterThanOrEqualTo gte | ALPHABET\r\n * isInteger | isBigNumber\r\n * isLessThan lt | maximum max\r\n * isLessThanOrEqualTo lte | minimum min\r\n * isNaN | random\r\n * isNegative | sum\r\n * isPositive |\r\n * isZero |\r\n * minus |\r\n * modulo mod |\r\n * multipliedBy times |\r\n * negated |\r\n * plus |\r\n * precision sd |\r\n * shiftedBy |\r\n * squareRoot sqrt |\r\n * toExponential |\r\n * toFixed |\r\n * toFormat |\r\n * toFraction |\r\n * toJSON |\r\n * toNumber |\r\n * toPrecision |\r\n * toString |\r\n * valueOf |\r\n *\r\n */\r\n\r\n\r\n var BigNumber,\r\n isNumeric = /^-?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:e[+-]?\\d+)?$/i,\r\n mathceil = Math.ceil,\r\n mathfloor = Math.floor,\r\n\r\n bignumberError = '[BigNumber Error] ',\r\n tooManyDigits = bignumberError + 'Number primitive has more than 15 significant digits: ',\r\n\r\n BASE = 1e14,\r\n LOG_BASE = 14,\r\n MAX_SAFE_INTEGER = 0x1fffffffffffff, // 2^53 - 1\r\n // MAX_INT32 = 0x7fffffff, // 2^31 - 1\r\n POWS_TEN = [1, 10, 100, 1e3, 1e4, 1e5, 1e6, 1e7, 1e8, 1e9, 1e10, 1e11, 1e12, 1e13],\r\n SQRT_BASE = 1e7,\r\n\r\n // EDITABLE\r\n // The limit on the value of DECIMAL_PLACES, TO_EXP_NEG, TO_EXP_POS, MIN_EXP, MAX_EXP, and\r\n // the arguments to toExponential, toFixed, toFormat, and toPrecision.\r\n MAX = 1E9; // 0 to MAX_INT32\r\n\r\n\r\n /*\r\n * Create and return a BigNumber constructor.\r\n */\r\n function clone(configObject) {\r\n var div, convertBase, parseNumeric,\r\n P = BigNumber.prototype = { constructor: BigNumber, toString: null, valueOf: null },\r\n ONE = new BigNumber(1),\r\n\r\n\r\n //----------------------------- EDITABLE CONFIG DEFAULTS -------------------------------\r\n\r\n\r\n // The default values below must be integers within the inclusive ranges stated.\r\n // The values can also be changed at run-time using BigNumber.set.\r\n\r\n // The maximum number of decimal places for operations involving division.\r\n DECIMAL_PLACES = 20, // 0 to MAX\r\n\r\n // The rounding mode used when rounding to the above decimal places, and when using\r\n // toExponential, toFixed, toFormat and toPrecision, and round (default value).\r\n // UP 0 Away from zero.\r\n // DOWN 1 Towards zero.\r\n // CEIL 2 Towards +Infinity.\r\n // FLOOR 3 Towards -Infinity.\r\n // HALF_UP 4 Towards nearest neighbour. If equidistant, up.\r\n // HALF_DOWN 5 Towards nearest neighbour. If equidistant, down.\r\n // HALF_EVEN 6 Towards nearest neighbour. If equidistant, towards even neighbour.\r\n // HALF_CEIL 7 Towards nearest neighbour. If equidistant, towards +Infinity.\r\n // HALF_FLOOR 8 Towards nearest neighbour. If equidistant, towards -Infinity.\r\n ROUNDING_MODE = 4, // 0 to 8\r\n\r\n // EXPONENTIAL_AT : [TO_EXP_NEG , TO_EXP_POS]\r\n\r\n // The exponent value at and beneath which toString returns exponential notation.\r\n // Number type: -7\r\n TO_EXP_NEG = -7, // 0 to -MAX\r\n\r\n // The exponent value at and above which toString returns exponential notation.\r\n // Number type: 21\r\n TO_EXP_POS = 21, // 0 to MAX\r\n\r\n // RANGE : [MIN_EXP, MAX_EXP]\r\n\r\n // The minimum exponent value, beneath which underflow to zero occurs.\r\n // Number type: -324 (5e-324)\r\n MIN_EXP = -1e7, // -1 to -MAX\r\n\r\n // The maximum exponent value, above which overflow to Infinity occurs.\r\n // Number type: 308 (1.7976931348623157e+308)\r\n // For MAX_EXP > 1e7, e.g. new BigNumber('1e100000000').plus(1) may be slow.\r\n MAX_EXP = 1e7, // 1 to MAX\r\n\r\n // Whether to use cryptographically-secure random number generation, if available.\r\n CRYPTO = false, // true or false\r\n\r\n // The modulo mode used when calculating the modulus: a mod n.\r\n // The quotient (q = a / n) is calculated according to the corresponding rounding mode.\r\n // The remainder (r) is calculated as: r = a - n * q.\r\n //\r\n // UP 0 The remainder is positive if the dividend is negative, else is negative.\r\n // DOWN 1 The remainder has the same sign as the dividend.\r\n // This modulo mode is commonly known as 'truncated division' and is\r\n // equivalent to (a % n) in JavaScript.\r\n // FLOOR 3 The remainder has the same sign as the divisor (Python %).\r\n // HALF_EVEN 6 This modulo mode implements the IEEE 754 remainder function.\r\n // EUCLID 9 Euclidian division. q = sign(n) * floor(a / abs(n)).\r\n // The remainder is always positive.\r\n //\r\n // The truncated division, floored division, Euclidian division and IEEE 754 remainder\r\n // modes are commonly used for the modulus operation.\r\n // Although the other rounding modes can also be used, they may not give useful results.\r\n MODULO_MODE = 1, // 0 to 9\r\n\r\n // The maximum number of significant digits of the result of the exponentiatedBy operation.\r\n // If POW_PRECISION is 0, there will be unlimited significant digits.\r\n POW_PRECISION = 0, // 0 to MAX\r\n\r\n // The format specification used by the BigNumber.prototype.toFormat method.\r\n FORMAT = {\r\n prefix: '',\r\n groupSize: 3,\r\n secondaryGroupSize: 0,\r\n groupSeparator: ',',\r\n decimalSeparator: '.',\r\n fractionGroupSize: 0,\r\n fractionGroupSeparator: '\\xA0', // non-breaking space\r\n suffix: ''\r\n },\r\n\r\n // The alphabet used for base conversion. It must be at least 2 characters long, with no '+',\r\n // '-', '.', whitespace, or repeated character.\r\n // '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ$_'\r\n ALPHABET = '0123456789abcdefghijklmnopqrstuvwxyz',\r\n alphabetHasNormalDecimalDigits = true;\r\n\r\n\r\n //------------------------------------------------------------------------------------------\r\n\r\n\r\n // CONSTRUCTOR\r\n\r\n\r\n /*\r\n * The BigNumber constructor and exported function.\r\n * Create and return a new instance of a BigNumber object.\r\n *\r\n * v {number|string|BigNumber} A numeric value.\r\n * [b] {number} The base of v. Integer, 2 to ALPHABET.length inclusive.\r\n */\r\n function BigNumber(v, b) {\r\n var alphabet, c, caseChanged, e, i, isNum, len, str,\r\n x = this;\r\n\r\n // Enable constructor call without `new`.\r\n if (!(x instanceof BigNumber)) return new BigNumber(v, b);\r\n\r\n if (b == null) {\r\n\r\n if (v && v._isBigNumber === true) {\r\n x.s = v.s;\r\n\r\n if (!v.c || v.e > MAX_EXP) {\r\n x.c = x.e = null;\r\n } else if (v.e < MIN_EXP) {\r\n x.c = [x.e = 0];\r\n } else {\r\n x.e = v.e;\r\n x.c = v.c.slice();\r\n }\r\n\r\n return;\r\n }\r\n\r\n if ((isNum = typeof v == 'number') && v * 0 == 0) {\r\n\r\n // Use `1 / n` to handle minus zero also.\r\n x.s = 1 / v < 0 ? (v = -v, -1) : 1;\r\n\r\n // Fast path for integers, where n < 2147483648 (2**31).\r\n if (v === ~~v) {\r\n for (e = 0, i = v; i >= 10; i /= 10, e++);\r\n\r\n if (e > MAX_EXP) {\r\n x.c = x.e = null;\r\n } else {\r\n x.e = e;\r\n x.c = [v];\r\n }\r\n\r\n return;\r\n }\r\n\r\n str = String(v);\r\n } else {\r\n\r\n if (!isNumeric.test(str = String(v))) return parseNumeric(x, str, isNum);\r\n\r\n x.s = str.charCodeAt(0) == 45 ? (str = str.slice(1), -1) : 1;\r\n }\r\n\r\n // Decimal point?\r\n if ((e = str.indexOf('.')) > -1) str = str.replace('.', '');\r\n\r\n // Exponential form?\r\n if ((i = str.search(/e/i)) > 0) {\r\n\r\n // Determine exponent.\r\n if (e < 0) e = i;\r\n e += +str.slice(i + 1);\r\n str = str.substring(0, i);\r\n } else if (e < 0) {\r\n\r\n // Integer.\r\n e = str.length;\r\n }\r\n\r\n } else {\r\n\r\n // '[BigNumber Error] Base {not a primitive number|not an integer|out of range}: {b}'\r\n intCheck(b, 2, ALPHABET.length, 'Base');\r\n\r\n // Allow exponential notation to be used with base 10 argument, while\r\n // also rounding to DECIMAL_PLACES as with other bases.\r\n if (b == 10 && alphabetHasNormalDecimalDigits) {\r\n x = new BigNumber(v);\r\n return round(x, DECIMAL_PLACES + x.e + 1, ROUNDING_MODE);\r\n }\r\n\r\n str = String(v);\r\n\r\n if (isNum = typeof v == 'number') {\r\n\r\n // Avoid potential interpretation of Infinity and NaN as base 44+ values.\r\n if (v * 0 != 0) return parseNumeric(x, str, isNum, b);\r\n\r\n x.s = 1 / v < 0 ? (str = str.slice(1), -1) : 1;\r\n\r\n // '[BigNumber Error] Number primitive has more than 15 significant digits: {n}'\r\n if (BigNumber.DEBUG && str.replace(/^0\\.0*|\\./, '').length > 15) {\r\n throw Error\r\n (tooManyDigits + v);\r\n }\r\n } else {\r\n x.s = str.charCodeAt(0) === 45 ? (str = str.slice(1), -1) : 1;\r\n }\r\n\r\n alphabet = ALPHABET.slice(0, b);\r\n e = i = 0;\r\n\r\n // Check that str is a valid base b number.\r\n // Don't use RegExp, so alphabet can contain special characters.\r\n for (len = str.length; i < len; i++) {\r\n if (alphabet.indexOf(c = str.charAt(i)) < 0) {\r\n if (c == '.') {\r\n\r\n // If '.' is not the first character and it has not be found before.\r\n if (i > e) {\r\n e = len;\r\n continue;\r\n }\r\n } else if (!caseChanged) {\r\n\r\n // Allow e.g. hexadecimal 'FF' as well as 'ff'.\r\n if (str == str.toUpperCase() && (str = str.toLowerCase()) ||\r\n str == str.toLowerCase() && (str = str.toUpperCase())) {\r\n caseChanged = true;\r\n i = -1;\r\n e = 0;\r\n continue;\r\n }\r\n }\r\n\r\n return parseNumeric(x, String(v), isNum, b);\r\n }\r\n }\r\n\r\n // Prevent later check for length on converted number.\r\n isNum = false;\r\n str = convertBase(str, b, 10, x.s);\r\n\r\n // Decimal point?\r\n if ((e = str.indexOf('.')) > -1) str = str.replace('.', '');\r\n else e = str.length;\r\n }\r\n\r\n // Determine leading zeros.\r\n for (i = 0; str.charCodeAt(i) === 48; i++);\r\n\r\n // Determine trailing zeros.\r\n for (len = str.length; str.charCodeAt(--len) === 48;);\r\n\r\n if (str = str.slice(i, ++len)) {\r\n len -= i;\r\n\r\n // '[BigNumber Error] Number primitive has more than 15 significant digits: {n}'\r\n if (isNum && BigNumber.DEBUG &&\r\n len > 15 && (v > MAX_SAFE_INTEGER || v !== mathfloor(v))) {\r\n throw Error\r\n (tooManyDigits + (x.s * v));\r\n }\r\n\r\n // Overflow?\r\n if ((e = e - i - 1) > MAX_EXP) {\r\n\r\n // Infinity.\r\n x.c = x.e = null;\r\n\r\n // Underflow?\r\n } else if (e < MIN_EXP) {\r\n\r\n // Zero.\r\n x.c = [x.e = 0];\r\n } else {\r\n x.e = e;\r\n x.c = [];\r\n\r\n // Transform base\r\n\r\n // e is the base 10 exponent.\r\n // i is where to slice str to get the first element of the coefficient array.\r\n i = (e + 1) % LOG_BASE;\r\n if (e < 0) i += LOG_BASE; // i < 1\r\n\r\n if (i < len) {\r\n if (i) x.c.push(+str.slice(0, i));\r\n\r\n for (len -= LOG_BASE; i < len;) {\r\n x.c.push(+str.slice(i, i += LOG_BASE));\r\n }\r\n\r\n i = LOG_BASE - (str = str.slice(i)).length;\r\n } else {\r\n i -= len;\r\n }\r\n\r\n for (; i--; str += '0');\r\n x.c.push(+str);\r\n }\r\n } else {\r\n\r\n // Zero.\r\n x.c = [x.e = 0];\r\n }\r\n }\r\n\r\n\r\n // CONSTRUCTOR PROPERTIES\r\n\r\n\r\n BigNumber.clone = clone;\r\n\r\n BigNumber.ROUND_UP = 0;\r\n BigNumber.ROUND_DOWN = 1;\r\n BigNumber.ROUND_CEIL = 2;\r\n BigNumber.ROUND_FLOOR = 3;\r\n BigNumber.ROUND_HALF_UP = 4;\r\n BigNumber.ROUND_HALF_DOWN = 5;\r\n BigNumber.ROUND_HALF_EVEN = 6;\r\n BigNumber.ROUND_HALF_CEIL = 7;\r\n BigNumber.ROUND_HALF_FLOOR = 8;\r\n BigNumber.EUCLID = 9;\r\n\r\n\r\n /*\r\n * Configure infrequently-changing library-wide settings.\r\n *\r\n * Accept an object with the following optional properties (if the value of a property is\r\n * a number, it must be an integer within the inclusive range stated):\r\n *\r\n * DECIMAL_PLACES {number} 0 to MAX\r\n * ROUNDING_MODE {number} 0 to 8\r\n * EXPONENTIAL_AT {number|number[]} -MAX to MAX or [-MAX to 0, 0 to MAX]\r\n * RANGE {number|number[]} -MAX to MAX (not zero) or [-MAX to -1, 1 to MAX]\r\n * CRYPTO {boolean} true or false\r\n * MODULO_MODE {number} 0 to 9\r\n * POW_PRECISION {number} 0 to MAX\r\n * ALPHABET {string} A string of two or more unique characters which does\r\n * not contain '.'.\r\n * FORMAT {object} An object with some of the following properties:\r\n * prefix {string}\r\n * groupSize {number}\r\n * secondaryGroupSize {number}\r\n * groupSeparator {string}\r\n * decimalSeparator {string}\r\n * fractionGroupSize {number}\r\n * fractionGroupSeparator {string}\r\n * suffix {string}\r\n *\r\n * (The values assigned to the above FORMAT object properties are not checked for validity.)\r\n *\r\n * E.g.\r\n * BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 4 })\r\n *\r\n * Ignore properties/parameters set to null or undefined, except for ALPHABET.\r\n *\r\n * Return an object with the properties current values.\r\n */\r\n BigNumber.config = BigNumber.set = function (obj) {\r\n var p, v;\r\n\r\n if (obj != null) {\r\n\r\n if (typeof obj == 'object') {\r\n\r\n // DECIMAL_PLACES {number} Integer, 0 to MAX inclusive.\r\n // '[BigNumber Error] DECIMAL_PLACES {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'DECIMAL_PLACES')) {\r\n v = obj[p];\r\n intCheck(v, 0, MAX, p);\r\n DECIMAL_PLACES = v;\r\n }\r\n\r\n // ROUNDING_MODE {number} Integer, 0 to 8 inclusive.\r\n // '[BigNumber Error] ROUNDING_MODE {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'ROUNDING_MODE')) {\r\n v = obj[p];\r\n intCheck(v, 0, 8, p);\r\n ROUNDING_MODE = v;\r\n }\r\n\r\n // EXPONENTIAL_AT {number|number[]}\r\n // Integer, -MAX to MAX inclusive or\r\n // [integer -MAX to 0 inclusive, 0 to MAX inclusive].\r\n // '[BigNumber Error] EXPONENTIAL_AT {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'EXPONENTIAL_AT')) {\r\n v = obj[p];\r\n if (v && v.pop) {\r\n intCheck(v[0], -MAX, 0, p);\r\n intCheck(v[1], 0, MAX, p);\r\n TO_EXP_NEG = v[0];\r\n TO_EXP_POS = v[1];\r\n } else {\r\n intCheck(v, -MAX, MAX, p);\r\n TO_EXP_NEG = -(TO_EXP_POS = v < 0 ? -v : v);\r\n }\r\n }\r\n\r\n // RANGE {number|number[]} Non-zero integer, -MAX to MAX inclusive or\r\n // [integer -MAX to -1 inclusive, integer 1 to MAX inclusive].\r\n // '[BigNumber Error] RANGE {not a primitive number|not an integer|out of range|cannot be zero}: {v}'\r\n if (obj.hasOwnProperty(p = 'RANGE')) {\r\n v = obj[p];\r\n if (v && v.pop) {\r\n intCheck(v[0], -MAX, -1, p);\r\n intCheck(v[1], 1, MAX, p);\r\n MIN_EXP = v[0];\r\n MAX_EXP = v[1];\r\n } else {\r\n intCheck(v, -MAX, MAX, p);\r\n if (v) {\r\n MIN_EXP = -(MAX_EXP = v < 0 ? -v : v);\r\n } else {\r\n throw Error\r\n (bignumberError + p + ' cannot be zero: ' + v);\r\n }\r\n }\r\n }\r\n\r\n // CRYPTO {boolean} true or false.\r\n // '[BigNumber Error] CRYPTO not true or false: {v}'\r\n // '[BigNumber Error] crypto unavailable'\r\n if (obj.hasOwnProperty(p = 'CRYPTO')) {\r\n v = obj[p];\r\n if (v === !!v) {\r\n if (v) {\r\n if (typeof crypto != 'undefined' && crypto &&\r\n (crypto.getRandomValues || crypto.randomBytes)) {\r\n CRYPTO = v;\r\n } else {\r\n CRYPTO = !v;\r\n throw Error\r\n (bignumberError + 'crypto unavailable');\r\n }\r\n } else {\r\n CRYPTO = v;\r\n }\r\n } else {\r\n throw Error\r\n (bignumberError + p + ' not true or false: ' + v);\r\n }\r\n }\r\n\r\n // MODULO_MODE {number} Integer, 0 to 9 inclusive.\r\n // '[BigNumber Error] MODULO_MODE {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'MODULO_MODE')) {\r\n v = obj[p];\r\n intCheck(v, 0, 9, p);\r\n MODULO_MODE = v;\r\n }\r\n\r\n // POW_PRECISION {number} Integer, 0 to MAX inclusive.\r\n // '[BigNumber Error] POW_PRECISION {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'POW_PRECISION')) {\r\n v = obj[p];\r\n intCheck(v, 0, MAX, p);\r\n POW_PRECISION = v;\r\n }\r\n\r\n // FORMAT {object}\r\n // '[BigNumber Error] FORMAT not an object: {v}'\r\n if (obj.hasOwnProperty(p = 'FORMAT')) {\r\n v = obj[p];\r\n if (typeof v == 'object') FORMAT = v;\r\n else throw Error\r\n (bignumberError + p + ' not an object: ' + v);\r\n }\r\n\r\n // ALPHABET {string}\r\n // '[BigNumber Error] ALPHABET invalid: {v}'\r\n if (obj.hasOwnProperty(p = 'ALPHABET')) {\r\n v = obj[p];\r\n\r\n // Disallow if less than two characters,\r\n // or if it contains '+', '-', '.', whitespace, or a repeated character.\r\n if (typeof v == 'string' && !/^.?$|[+\\-.\\s]|(.).*\\1/.test(v)) {\r\n alphabetHasNormalDecimalDigits = v.slice(0, 10) == '0123456789';\r\n ALPHABET = v;\r\n } else {\r\n throw Error\r\n (bignumberError + p + ' invalid: ' + v);\r\n }\r\n }\r\n\r\n } else {\r\n\r\n // '[BigNumber Error] Object expected: {v}'\r\n throw Error\r\n (bignumberError + 'Object expected: ' + obj);\r\n }\r\n }\r\n\r\n return {\r\n DECIMAL_PLACES: DECIMAL_PLACES,\r\n ROUNDING_MODE: ROUNDING_MODE,\r\n EXPONENTIAL_AT: [TO_EXP_NEG, TO_EXP_POS],\r\n RANGE: [MIN_EXP, MAX_EXP],\r\n CRYPTO: CRYPTO,\r\n MODULO_MODE: MODULO_MODE,\r\n POW_PRECISION: POW_PRECISION,\r\n FORMAT: FORMAT,\r\n ALPHABET: ALPHABET\r\n };\r\n };\r\n\r\n\r\n /*\r\n * Return true if v is a BigNumber instance, otherwise return false.\r\n *\r\n * If BigNumber.DEBUG is true, throw if a BigNumber instance is not well-formed.\r\n *\r\n * v {any}\r\n *\r\n * '[BigNumber Error] Invalid BigNumber: {v}'\r\n */\r\n BigNumber.isBigNumber = function (v) {\r\n if (!v || v._isBigNumber !== true) return false;\r\n if (!BigNumber.DEBUG) return true;\r\n\r\n var i, n,\r\n c = v.c,\r\n e = v.e,\r\n s = v.s;\r\n\r\n out: if ({}.toString.call(c) == '[object Array]') {\r\n\r\n if ((s === 1 || s === -1) && e >= -MAX && e <= MAX && e === mathfloor(e)) {\r\n\r\n // If the first element is zero, the BigNumber value must be zero.\r\n if (c[0] === 0) {\r\n if (e === 0 && c.length === 1) return true;\r\n break out;\r\n }\r\n\r\n // Calculate number of digits that c[0] should have, based on the exponent.\r\n i = (e + 1) % LOG_BASE;\r\n if (i < 1) i += LOG_BASE;\r\n\r\n // Calculate number of digits of c[0].\r\n //if (Math.ceil(Math.log(c[0] + 1) / Math.LN10) == i) {\r\n if (String(c[0]).length == i) {\r\n\r\n for (i = 0; i < c.length; i++) {\r\n n = c[i];\r\n if (n < 0 || n >= BASE || n !== mathfloor(n)) break out;\r\n }\r\n\r\n // Last element cannot be zero, unless it is the only element.\r\n if (n !== 0) return true;\r\n }\r\n }\r\n\r\n // Infinity/NaN\r\n } else if (c === null && e === null && (s === null || s === 1 || s === -1)) {\r\n return true;\r\n }\r\n\r\n throw Error\r\n (bignumberError + 'Invalid BigNumber: ' + v);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the maximum of the arguments.\r\n *\r\n * arguments {number|string|BigNumber}\r\n */\r\n BigNumber.maximum = BigNumber.max = function () {\r\n return maxOrMin(arguments, P.lt);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the minimum of the arguments.\r\n *\r\n * arguments {number|string|BigNumber}\r\n */\r\n BigNumber.minimum = BigNumber.min = function () {\r\n return maxOrMin(arguments, P.gt);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber with a random value equal to or greater than 0 and less than 1,\r\n * and with dp, or DECIMAL_PLACES if dp is omitted, decimal places (or less if trailing\r\n * zeros are produced).\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp}'\r\n * '[BigNumber Error] crypto unavailable'\r\n */\r\n BigNumber.random = (function () {\r\n var pow2_53 = 0x20000000000000;\r\n\r\n // Return a 53 bit integer n, where 0 <= n < 9007199254740992.\r\n // Check if Math.random() produces more than 32 bits of randomness.\r\n // If it does, assume at least 53 bits are produced, otherwise assume at least 30 bits.\r\n // 0x40000000 is 2^30, 0x800000 is 2^23, 0x1fffff is 2^21 - 1.\r\n var random53bitInt = (Math.random() * pow2_53) & 0x1fffff\r\n ? function () { return mathfloor(Math.random() * pow2_53); }\r\n : function () { return ((Math.random() * 0x40000000 | 0) * 0x800000) +\r\n (Math.random() * 0x800000 | 0); };\r\n\r\n return function (dp) {\r\n var a, b, e, k, v,\r\n i = 0,\r\n c = [],\r\n rand = new BigNumber(ONE);\r\n\r\n if (dp == null) dp = DECIMAL_PLACES;\r\n else intCheck(dp, 0, MAX);\r\n\r\n k = mathceil(dp / LOG_BASE);\r\n\r\n if (CRYPTO) {\r\n\r\n // Browsers supporting crypto.getRandomValues.\r\n if (crypto.getRandomValues) {\r\n\r\n a = crypto.getRandomValues(new Uint32Array(k *= 2));\r\n\r\n for (; i < k;) {\r\n\r\n // 53 bits:\r\n // ((Math.pow(2, 32) - 1) * Math.pow(2, 21)).toString(2)\r\n // 11111 11111111 11111111 11111111 11100000 00000000 00000000\r\n // ((Math.pow(2, 32) - 1) >>> 11).toString(2)\r\n // 11111 11111111 11111111\r\n // 0x20000 is 2^21.\r\n v = a[i] * 0x20000 + (a[i + 1] >>> 11);\r\n\r\n // Rejection sampling:\r\n // 0 <= v < 9007199254740992\r\n // Probability that v >= 9e15, is\r\n // 7199254740992 / 9007199254740992 ~= 0.0008, i.e. 1 in 1251\r\n if (v >= 9e15) {\r\n b = crypto.getRandomValues(new Uint32Array(2));\r\n a[i] = b[0];\r\n a[i + 1] = b[1];\r\n } else {\r\n\r\n // 0 <= v <= 8999999999999999\r\n // 0 <= (v % 1e14) <= 99999999999999\r\n c.push(v % 1e14);\r\n i += 2;\r\n }\r\n }\r\n i = k / 2;\r\n\r\n // Node.js supporting crypto.randomBytes.\r\n } else if (crypto.randomBytes) {\r\n\r\n // buffer\r\n a = crypto.randomBytes(k *= 7);\r\n\r\n for (; i < k;) {\r\n\r\n // 0x1000000000000 is 2^48, 0x10000000000 is 2^40\r\n // 0x100000000 is 2^32, 0x1000000 is 2^24\r\n // 11111 11111111 11111111 11111111 11111111 11111111 11111111\r\n // 0 <= v < 9007199254740992\r\n v = ((a[i] & 31) * 0x1000000000000) + (a[i + 1] * 0x10000000000) +\r\n (a[i + 2] * 0x100000000) + (a[i + 3] * 0x1000000) +\r\n (a[i + 4] << 16) + (a[i + 5] << 8) + a[i + 6];\r\n\r\n if (v >= 9e15) {\r\n crypto.randomBytes(7).copy(a, i);\r\n } else {\r\n\r\n // 0 <= (v % 1e14) <= 99999999999999\r\n c.push(v % 1e14);\r\n i += 7;\r\n }\r\n }\r\n i = k / 7;\r\n } else {\r\n CRYPTO = false;\r\n throw Error\r\n (bignumberError + 'crypto unavailable');\r\n }\r\n }\r\n\r\n // Use Math.random.\r\n if (!CRYPTO) {\r\n\r\n for (; i < k;) {\r\n v = random53bitInt();\r\n if (v < 9e15) c[i++] = v % 1e14;\r\n }\r\n }\r\n\r\n k = c[--i];\r\n dp %= LOG_BASE;\r\n\r\n // Convert trailing digits to zeros according to dp.\r\n if (k && dp) {\r\n v = POWS_TEN[LOG_BASE - dp];\r\n c[i] = mathfloor(k / v) * v;\r\n }\r\n\r\n // Remove trailing elements which are zero.\r\n for (; c[i] === 0; c.pop(), i--);\r\n\r\n // Zero?\r\n if (i < 0) {\r\n c = [e = 0];\r\n } else {\r\n\r\n // Remove leading elements which are zero and adjust exponent accordingly.\r\n for (e = -1 ; c[0] === 0; c.splice(0, 1), e -= LOG_BASE);\r\n\r\n // Count the digits of the first element of c to determine leading zeros, and...\r\n for (i = 1, v = c[0]; v >= 10; v /= 10, i++);\r\n\r\n // adjust the exponent accordingly.\r\n if (i < LOG_BASE) e -= LOG_BASE - i;\r\n }\r\n\r\n rand.e = e;\r\n rand.c = c;\r\n return rand;\r\n };\r\n })();\r\n\r\n\r\n /*\r\n * Return a BigNumber whose value is the sum of the arguments.\r\n *\r\n * arguments {number|string|BigNumber}\r\n */\r\n BigNumber.sum = function () {\r\n var i = 1,\r\n args = arguments,\r\n sum = new BigNumber(args[0]);\r\n for (; i < args.length;) sum = sum.plus(args[i++]);\r\n return sum;\r\n };\r\n\r\n\r\n // PRIVATE FUNCTIONS\r\n\r\n\r\n // Called by BigNumber and BigNumber.prototype.toString.\r\n convertBase = (function () {\r\n var decimal = '0123456789';\r\n\r\n /*\r\n * Convert string of baseIn to an array of numbers of baseOut.\r\n * Eg. toBaseOut('255', 10, 16) returns [15, 15].\r\n * Eg. toBaseOut('ff', 16, 10) returns [2, 5, 5].\r\n */\r\n function toBaseOut(str, baseIn, baseOut, alphabet) {\r\n var j,\r\n arr = [0],\r\n arrL,\r\n i = 0,\r\n len = str.length;\r\n\r\n for (; i < len;) {\r\n for (arrL = arr.length; arrL--; arr[arrL] *= baseIn);\r\n\r\n arr[0] += alphabet.indexOf(str.charAt(i++));\r\n\r\n for (j = 0; j < arr.length; j++) {\r\n\r\n if (arr[j] > baseOut - 1) {\r\n if (arr[j + 1] == null) arr[j + 1] = 0;\r\n arr[j + 1] += arr[j] / baseOut | 0;\r\n arr[j] %= baseOut;\r\n }\r\n }\r\n }\r\n\r\n return arr.reverse();\r\n }\r\n\r\n // Convert a numeric string of baseIn to a numeric string of baseOut.\r\n // If the caller is toString, we are converting from base 10 to baseOut.\r\n // If the caller is BigNumber, we are converting from baseIn to base 10.\r\n return function (str, baseIn, baseOut, sign, callerIsToString) {\r\n var alphabet, d, e, k, r, x, xc, y,\r\n i = str.indexOf('.'),\r\n dp = DECIMAL_PLACES,\r\n rm = ROUNDING_MODE;\r\n\r\n // Non-integer.\r\n if (i >= 0) {\r\n k = POW_PRECISION;\r\n\r\n // Unlimited precision.\r\n POW_PRECISION = 0;\r\n str = str.replace('.', '');\r\n y = new BigNumber(baseIn);\r\n x = y.pow(str.length - i);\r\n POW_PRECISION = k;\r\n\r\n // Convert str as if an integer, then restore the fraction part by dividing the\r\n // result by its base raised to a power.\r\n\r\n y.c = toBaseOut(toFixedPoint(coeffToString(x.c), x.e, '0'),\r\n 10, baseOut, decimal);\r\n y.e = y.c.length;\r\n }\r\n\r\n // Convert the number as integer.\r\n\r\n xc = toBaseOut(str, baseIn, baseOut, callerIsToString\r\n ? (alphabet = ALPHABET, decimal)\r\n : (alphabet = decimal, ALPHABET));\r\n\r\n // xc now represents str as an integer and converted to baseOut. e is the exponent.\r\n e = k = xc.length;\r\n\r\n // Remove trailing zeros.\r\n for (; xc[--k] == 0; xc.pop());\r\n\r\n // Zero?\r\n if (!xc[0]) return alphabet.charAt(0);\r\n\r\n // Does str represent an integer? If so, no need for the division.\r\n if (i < 0) {\r\n --e;\r\n } else {\r\n x.c = xc;\r\n x.e = e;\r\n\r\n // The sign is needed for correct rounding.\r\n x.s = sign;\r\n x = div(x, y, dp, rm, baseOut);\r\n xc = x.c;\r\n r = x.r;\r\n e = x.e;\r\n }\r\n\r\n // xc now represents str converted to baseOut.\r\n\r\n // THe index of the rounding digit.\r\n d = e + dp + 1;\r\n\r\n // The rounding digit: the digit to the right of the digit that may be rounded up.\r\n i = xc[d];\r\n\r\n // Look at the rounding digits and mode to determine whether to round up.\r\n\r\n k = baseOut / 2;\r\n r = r || d < 0 || xc[d + 1] != null;\r\n\r\n r = rm < 4 ? (i != null || r) && (rm == 0 || rm == (x.s < 0 ? 3 : 2))\r\n : i > k || i == k &&(rm == 4 || r || rm == 6 && xc[d - 1] & 1 ||\r\n rm == (x.s < 0 ? 8 : 7));\r\n\r\n // If the index of the rounding digit is not greater than zero, or xc represents\r\n // zero, then the result of the base conversion is zero or, if rounding up, a value\r\n // such as 0.00001.\r\n if (d < 1 || !xc[0]) {\r\n\r\n // 1^-dp or 0\r\n str = r ? toFixedPoint(alphabet.charAt(1), -dp, alphabet.charAt(0)) : alphabet.charAt(0);\r\n } else {\r\n\r\n // Truncate xc to the required number of decimal places.\r\n xc.length = d;\r\n\r\n // Round up?\r\n if (r) {\r\n\r\n // Rounding up may mean the previous digit has to be rounded up and so on.\r\n for (--baseOut; ++xc[--d] > baseOut;) {\r\n xc[d] = 0;\r\n\r\n if (!d) {\r\n ++e;\r\n xc = [1].concat(xc);\r\n }\r\n }\r\n }\r\n\r\n // Determine trailing zeros.\r\n for (k = xc.length; !xc[--k];);\r\n\r\n // E.g. [4, 11, 15] becomes 4bf.\r\n for (i = 0, str = ''; i <= k; str += alphabet.charAt(xc[i++]));\r\n\r\n // Add leading zeros, decimal point and trailing zeros as required.\r\n str = toFixedPoint(str, e, alphabet.charAt(0));\r\n }\r\n\r\n // The caller will add the sign.\r\n return str;\r\n };\r\n })();\r\n\r\n\r\n // Perform division in the specified base. Called by div and convertBase.\r\n div = (function () {\r\n\r\n // Assume non-zero x and k.\r\n function multiply(x, k, base) {\r\n var m, temp, xlo, xhi,\r\n carry = 0,\r\n i = x.length,\r\n klo = k % SQRT_BASE,\r\n khi = k / SQRT_BASE | 0;\r\n\r\n for (x = x.slice(); i--;) {\r\n xlo = x[i] % SQRT_BASE;\r\n xhi = x[i] / SQRT_BASE | 0;\r\n m = khi * xlo + xhi * klo;\r\n temp = klo * xlo + ((m % SQRT_BASE) * SQRT_BASE) + carry;\r\n carry = (temp / base | 0) + (m / SQRT_BASE | 0) + khi * xhi;\r\n x[i] = temp % base;\r\n }\r\n\r\n if (carry) x = [carry].concat(x);\r\n\r\n return x;\r\n }\r\n\r\n function compare(a, b, aL, bL) {\r\n var i, cmp;\r\n\r\n if (aL != bL) {\r\n cmp = aL > bL ? 1 : -1;\r\n } else {\r\n\r\n for (i = cmp = 0; i < aL; i++) {\r\n\r\n if (a[i] != b[i]) {\r\n cmp = a[i] > b[i] ? 1 : -1;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n return cmp;\r\n }\r\n\r\n function subtract(a, b, aL, base) {\r\n var i = 0;\r\n\r\n // Subtract b from a.\r\n for (; aL--;) {\r\n a[aL] -= i;\r\n i = a[aL] < b[aL] ? 1 : 0;\r\n a[aL] = i * base + a[aL] - b[aL];\r\n }\r\n\r\n // Remove leading zeros.\r\n for (; !a[0] && a.length > 1; a.splice(0, 1));\r\n }\r\n\r\n // x: dividend, y: divisor.\r\n return function (x, y, dp, rm, base) {\r\n var cmp, e, i, more, n, prod, prodL, q, qc, rem, remL, rem0, xi, xL, yc0,\r\n yL, yz,\r\n s = x.s == y.s ? 1 : -1,\r\n xc = x.c,\r\n yc = y.c;\r\n\r\n // Either NaN, Infinity or 0?\r\n if (!xc || !xc[0] || !yc || !yc[0]) {\r\n\r\n return new BigNumber(\r\n\r\n // Return NaN if either NaN, or both Infinity or 0.\r\n !x.s || !y.s || (xc ? yc && xc[0] == yc[0] : !yc) ? NaN :\r\n\r\n // Return ±0 if x is ±0 or y is ±Infinity, or return ±Infinity as y is ±0.\r\n xc && xc[0] == 0 || !yc ? s * 0 : s / 0\r\n );\r\n }\r\n\r\n q = new BigNumber(s);\r\n qc = q.c = [];\r\n e = x.e - y.e;\r\n s = dp + e + 1;\r\n\r\n if (!base) {\r\n base = BASE;\r\n e = bitFloor(x.e / LOG_BASE) - bitFloor(y.e / LOG_BASE);\r\n s = s / LOG_BASE | 0;\r\n }\r\n\r\n // Result exponent may be one less then the current value of e.\r\n // The coefficients of the BigNumbers from convertBase may have trailing zeros.\r\n for (i = 0; yc[i] == (xc[i] || 0); i++);\r\n\r\n if (yc[i] > (xc[i] || 0)) e--;\r\n\r\n if (s < 0) {\r\n qc.push(1);\r\n more = true;\r\n } else {\r\n xL = xc.length;\r\n yL = yc.length;\r\n i = 0;\r\n s += 2;\r\n\r\n // Normalise xc and yc so highest order digit of yc is >= base / 2.\r\n\r\n n = mathfloor(base / (yc[0] + 1));\r\n\r\n // Not necessary, but to handle odd bases where yc[0] == (base / 2) - 1.\r\n // if (n > 1 || n++ == 1 && yc[0] < base / 2) {\r\n if (n > 1) {\r\n yc = multiply(yc, n, base);\r\n xc = multiply(xc, n, base);\r\n yL = yc.length;\r\n xL = xc.length;\r\n }\r\n\r\n xi = yL;\r\n rem = xc.slice(0, yL);\r\n remL = rem.length;\r\n\r\n // Add zeros to make remainder as long as divisor.\r\n for (; remL < yL; rem[remL++] = 0);\r\n yz = yc.slice();\r\n yz = [0].concat(yz);\r\n yc0 = yc[0];\r\n if (yc[1] >= base / 2) yc0++;\r\n // Not necessary, but to prevent trial digit n > base, when using base 3.\r\n // else if (base == 3 && yc0 == 1) yc0 = 1 + 1e-15;\r\n\r\n do {\r\n n = 0;\r\n\r\n // Compare divisor and remainder.\r\n cmp = compare(yc, rem, yL, remL);\r\n\r\n // If divisor < remainder.\r\n if (cmp < 0) {\r\n\r\n // Calculate trial digit, n.\r\n\r\n rem0 = rem[0];\r\n if (yL != remL) rem0 = rem0 * base + (rem[1] || 0);\r\n\r\n // n is how many times the divisor goes into the current remainder.\r\n n = mathfloor(rem0 / yc0);\r\n\r\n // Algorithm:\r\n // product = divisor multiplied by trial digit (n).\r\n // Compare product and remainder.\r\n // If product is greater than remainder:\r\n // Subtract divisor from product, decrement trial digit.\r\n // Subtract product from remainder.\r\n // If product was less than remainder at the last compare:\r\n // Compare new remainder and divisor.\r\n // If remainder is greater than divisor:\r\n // Subtract divisor from remainder, increment trial digit.\r\n\r\n if (n > 1) {\r\n\r\n // n may be > base only when base is 3.\r\n if (n >= base) n = base - 1;\r\n\r\n // product = divisor * trial digit.\r\n prod = multiply(yc, n, base);\r\n prodL = prod.length;\r\n remL = rem.length;\r\n\r\n // Compare product and remainder.\r\n // If product > remainder then trial digit n too high.\r\n // n is 1 too high about 5% of the time, and is not known to have\r\n // ever been more than 1 too high.\r\n while (compare(prod, rem, prodL, remL) == 1) {\r\n n--;\r\n\r\n // Subtract divisor from product.\r\n subtract(prod, yL < prodL ? yz : yc, prodL, base);\r\n prodL = prod.length;\r\n cmp = 1;\r\n }\r\n } else {\r\n\r\n // n is 0 or 1, cmp is -1.\r\n // If n is 0, there is no need to compare yc and rem again below,\r\n // so change cmp to 1 to avoid it.\r\n // If n is 1, leave cmp as -1, so yc and rem are compared again.\r\n if (n == 0) {\r\n\r\n // divisor < remainder, so n must be at least 1.\r\n cmp = n = 1;\r\n }\r\n\r\n // product = divisor\r\n prod = yc.slice();\r\n prodL = prod.length;\r\n }\r\n\r\n if (prodL < remL) prod = [0].concat(prod);\r\n\r\n // Subtract product from remainder.\r\n subtract(rem, prod, remL, base);\r\n remL = rem.length;\r\n\r\n // If product was < remainder.\r\n if (cmp == -1) {\r\n\r\n // Compare divisor and new remainder.\r\n // If divisor < new remainder, subtract divisor from remainder.\r\n // Trial digit n too low.\r\n // n is 1 too low about 5% of the time, and very rarely 2 too low.\r\n while (compare(yc, rem, yL, remL) < 1) {\r\n n++;\r\n\r\n // Subtract divisor from remainder.\r\n subtract(rem, yL < remL ? yz : yc, remL, base);\r\n remL = rem.length;\r\n }\r\n }\r\n } else if (cmp === 0) {\r\n n++;\r\n rem = [0];\r\n } // else cmp === 1 and n will be 0\r\n\r\n // Add the next digit, n, to the result array.\r\n qc[i++] = n;\r\n\r\n // Update the remainder.\r\n if (rem[0]) {\r\n rem[remL++] = xc[xi] || 0;\r\n } else {\r\n rem = [xc[xi]];\r\n remL = 1;\r\n }\r\n } while ((xi++ < xL || rem[0] != null) && s--);\r\n\r\n more = rem[0] != null;\r\n\r\n // Leading zero?\r\n if (!qc[0]) qc.splice(0, 1);\r\n }\r\n\r\n if (base == BASE) {\r\n\r\n // To calculate q.e, first get the number of digits of qc[0].\r\n for (i = 1, s = qc[0]; s >= 10; s /= 10, i++);\r\n\r\n round(q, dp + (q.e = i + e * LOG_BASE - 1) + 1, rm, more);\r\n\r\n // Caller is convertBase.\r\n } else {\r\n q.e = e;\r\n q.r = +more;\r\n }\r\n\r\n return q;\r\n };\r\n })();\r\n\r\n\r\n /*\r\n * Return a string representing the value of BigNumber n in fixed-point or exponential\r\n * notation rounded to the specified decimal places or significant digits.\r\n *\r\n * n: a BigNumber.\r\n * i: the index of the last digit required (i.e. the digit that may be rounded up).\r\n * rm: the rounding mode.\r\n * id: 1 (toExponential) or 2 (toPrecision).\r\n */\r\n function format(n, i, rm, id) {\r\n var c0, e, ne, len, str;\r\n\r\n if (rm == null) rm = ROUNDING_MODE;\r\n else intCheck(rm, 0, 8);\r\n\r\n if (!n.c) return n.toString();\r\n\r\n c0 = n.c[0];\r\n ne = n.e;\r\n\r\n if (i == null) {\r\n str = coeffToString(n.c);\r\n str = id == 1 || id == 2 && (ne <= TO_EXP_NEG || ne >= TO_EXP_POS)\r\n ? toExponential(str, ne)\r\n : toFixedPoint(str, ne, '0');\r\n } else {\r\n n = round(new BigNumber(n), i, rm);\r\n\r\n // n.e may have changed if the value was rounded up.\r\n e = n.e;\r\n\r\n str = coeffToString(n.c);\r\n len = str.length;\r\n\r\n // toPrecision returns exponential notation if the number of significant digits\r\n // specified is less than the number of digits necessary to represent the integer\r\n // part of the value in fixed-point notation.\r\n\r\n // Exponential notation.\r\n if (id == 1 || id == 2 && (i <= e || e <= TO_EXP_NEG)) {\r\n\r\n // Append zeros?\r\n for (; len < i; str += '0', len++);\r\n str = toExponential(str, e);\r\n\r\n // Fixed-point notation.\r\n } else {\r\n i -= ne;\r\n str = toFixedPoint(str, e, '0');\r\n\r\n // Append zeros?\r\n if (e + 1 > len) {\r\n if (--i > 0) for (str += '.'; i--; str += '0');\r\n } else {\r\n i += e - len;\r\n if (i > 0) {\r\n if (e + 1 == len) str += '.';\r\n for (; i--; str += '0');\r\n }\r\n }\r\n }\r\n }\r\n\r\n return n.s < 0 && c0 ? '-' + str : str;\r\n }\r\n\r\n\r\n // Handle BigNumber.max and BigNumber.min.\r\n function maxOrMin(args, method) {\r\n var n,\r\n i = 1,\r\n m = new BigNumber(args[0]);\r\n\r\n for (; i < args.length; i++) {\r\n n = new BigNumber(args[i]);\r\n\r\n // If any number is NaN, return NaN.\r\n if (!n.s) {\r\n m = n;\r\n break;\r\n } else if (method.call(m, n)) {\r\n m = n;\r\n }\r\n }\r\n\r\n return m;\r\n }\r\n\r\n\r\n /*\r\n * Strip trailing zeros, calculate base 10 exponent and check against MIN_EXP and MAX_EXP.\r\n * Called by minus, plus and times.\r\n */\r\n function normalise(n, c, e) {\r\n var i = 1,\r\n j = c.length;\r\n\r\n // Remove trailing zeros.\r\n for (; !c[--j]; c.pop());\r\n\r\n // Calculate the base 10 exponent. First get the number of digits of c[0].\r\n for (j = c[0]; j >= 10; j /= 10, i++);\r\n\r\n // Overflow?\r\n if ((e = i + e * LOG_BASE - 1) > MAX_EXP) {\r\n\r\n // Infinity.\r\n n.c = n.e = null;\r\n\r\n // Underflow?\r\n } else if (e < MIN_EXP) {\r\n\r\n // Zero.\r\n n.c = [n.e = 0];\r\n } else {\r\n n.e = e;\r\n n.c = c;\r\n }\r\n\r\n return n;\r\n }\r\n\r\n\r\n // Handle values that fail the validity test in BigNumber.\r\n parseNumeric = (function () {\r\n var basePrefix = /^(-?)0([xbo])(?=\\w[\\w.]*$)/i,\r\n dotAfter = /^([^.]+)\\.$/,\r\n dotBefore = /^\\.([^.]+)$/,\r\n isInfinityOrNaN = /^-?(Infinity|NaN)$/,\r\n whitespaceOrPlus = /^\\s*\\+(?=[\\w.])|^\\s+|\\s+$/g;\r\n\r\n return function (x, str, isNum, b) {\r\n var base,\r\n s = isNum ? str : str.replace(whitespaceOrPlus, '');\r\n\r\n // No exception on ±Infinity or NaN.\r\n if (isInfinityOrNaN.test(s)) {\r\n x.s = isNaN(s) ? null : s < 0 ? -1 : 1;\r\n } else {\r\n if (!isNum) {\r\n\r\n // basePrefix = /^(-?)0([xbo])(?=\\w[\\w.]*$)/i\r\n s = s.replace(basePrefix, function (m, p1, p2) {\r\n base = (p2 = p2.toLowerCase()) == 'x' ? 16 : p2 == 'b' ? 2 : 8;\r\n return !b || b == base ? p1 : m;\r\n });\r\n\r\n if (b) {\r\n base = b;\r\n\r\n // E.g. '1.' to '1', '.1' to '0.1'\r\n s = s.replace(dotAfter, '$1').replace(dotBefore, '0.$1');\r\n }\r\n\r\n if (str != s) return new BigNumber(s, base);\r\n }\r\n\r\n // '[BigNumber Error] Not a number: {n}'\r\n // '[BigNumber Error] Not a base {b} number: {n}'\r\n if (BigNumber.DEBUG) {\r\n throw Error\r\n (bignumberError + 'Not a' + (b ? ' base ' + b : '') + ' number: ' + str);\r\n }\r\n\r\n // NaN\r\n x.s = null;\r\n }\r\n\r\n x.c = x.e = null;\r\n }\r\n })();\r\n\r\n\r\n /*\r\n * Round x to sd significant digits using rounding mode rm. Check for over/under-flow.\r\n * If r is truthy, it is known that there are more digits after the rounding digit.\r\n */\r\n function round(x, sd, rm, r) {\r\n var d, i, j, k, n, ni, rd,\r\n xc = x.c,\r\n pows10 = POWS_TEN;\r\n\r\n // if x is not Infinity or NaN...\r\n if (xc) {\r\n\r\n // rd is the rounding digit, i.e. the digit after the digit that may be rounded up.\r\n // n is a base 1e14 number, the value of the element of array x.c containing rd.\r\n // ni is the index of n within x.c.\r\n // d is the number of digits of n.\r\n // i is the index of rd within n including leading zeros.\r\n // j is the actual index of rd within n (if < 0, rd is a leading zero).\r\n out: {\r\n\r\n // Get the number of digits of the first element of xc.\r\n for (d = 1, k = xc[0]; k >= 10; k /= 10, d++);\r\n i = sd - d;\r\n\r\n // If the rounding digit is in the first element of xc...\r\n if (i < 0) {\r\n i += LOG_BASE;\r\n j = sd;\r\n n = xc[ni = 0];\r\n\r\n // Get the rounding digit at index j of n.\r\n rd = n / pows10[d - j - 1] % 10 | 0;\r\n } else {\r\n ni = mathceil((i + 1) / LOG_BASE);\r\n\r\n if (ni >= xc.length) {\r\n\r\n if (r) {\r\n\r\n // Needed by sqrt.\r\n for (; xc.length <= ni; xc.push(0));\r\n n = rd = 0;\r\n d = 1;\r\n i %= LOG_BASE;\r\n j = i - LOG_BASE + 1;\r\n } else {\r\n break out;\r\n }\r\n } else {\r\n n = k = xc[ni];\r\n\r\n // Get the number of digits of n.\r\n for (d = 1; k >= 10; k /= 10, d++);\r\n\r\n // Get the index of rd within n.\r\n i %= LOG_BASE;\r\n\r\n // Get the index of rd within n, adjusted for leading zeros.\r\n // The number of leading zeros of n is given by LOG_BASE - d.\r\n j = i - LOG_BASE + d;\r\n\r\n // Get the rounding digit at index j of n.\r\n rd = j < 0 ? 0 : n / pows10[d - j - 1] % 10 | 0;\r\n }\r\n }\r\n\r\n r = r || sd < 0 ||\r\n\r\n // Are there any non-zero digits after the rounding digit?\r\n // The expression n % pows10[d - j - 1] returns all digits of n to the right\r\n // of the digit at j, e.g. if n is 908714 and j is 2, the expression gives 714.\r\n xc[ni + 1] != null || (j < 0 ? n : n % pows10[d - j - 1]);\r\n\r\n r = rm < 4\r\n ? (rd || r) && (rm == 0 || rm == (x.s < 0 ? 3 : 2))\r\n : rd > 5 || rd == 5 && (rm == 4 || r || rm == 6 &&\r\n\r\n // Check whether the digit to the left of the rounding digit is odd.\r\n ((i > 0 ? j > 0 ? n / pows10[d - j] : 0 : xc[ni - 1]) % 10) & 1 ||\r\n rm == (x.s < 0 ? 8 : 7));\r\n\r\n if (sd < 1 || !xc[0]) {\r\n xc.length = 0;\r\n\r\n if (r) {\r\n\r\n // Convert sd to decimal places.\r\n sd -= x.e + 1;\r\n\r\n // 1, 0.1, 0.01, 0.001, 0.0001 etc.\r\n xc[0] = pows10[(LOG_BASE - sd % LOG_BASE) % LOG_BASE];\r\n x.e = -sd || 0;\r\n } else {\r\n\r\n // Zero.\r\n xc[0] = x.e = 0;\r\n }\r\n\r\n return x;\r\n }\r\n\r\n // Remove excess digits.\r\n if (i == 0) {\r\n xc.length = ni;\r\n k = 1;\r\n ni--;\r\n } else {\r\n xc.length = ni + 1;\r\n k = pows10[LOG_BASE - i];\r\n\r\n // E.g. 56700 becomes 56000 if 7 is the rounding digit.\r\n // j > 0 means i > number of leading zeros of n.\r\n xc[ni] = j > 0 ? mathfloor(n / pows10[d - j] % pows10[j]) * k : 0;\r\n }\r\n\r\n // Round up?\r\n if (r) {\r\n\r\n for (; ;) {\r\n\r\n // If the digit to be rounded up is in the first element of xc...\r\n if (ni == 0) {\r\n\r\n // i will be the length of xc[0] before k is added.\r\n for (i = 1, j = xc[0]; j >= 10; j /= 10, i++);\r\n j = xc[0] += k;\r\n for (k = 1; j >= 10; j /= 10, k++);\r\n\r\n // if i != k the length has increased.\r\n if (i != k) {\r\n x.e++;\r\n if (xc[0] == BASE) xc[0] = 1;\r\n }\r\n\r\n break;\r\n } else {\r\n xc[ni] += k;\r\n if (xc[ni] != BASE) break;\r\n xc[ni--] = 0;\r\n k = 1;\r\n }\r\n }\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (i = xc.length; xc[--i] === 0; xc.pop());\r\n }\r\n\r\n // Overflow? Infinity.\r\n if (x.e > MAX_EXP) {\r\n x.c = x.e = null;\r\n\r\n // Underflow? Zero.\r\n } else if (x.e < MIN_EXP) {\r\n x.c = [x.e = 0];\r\n }\r\n }\r\n\r\n return x;\r\n }\r\n\r\n\r\n function valueOf(n) {\r\n var str,\r\n e = n.e;\r\n\r\n if (e === null) return n.toString();\r\n\r\n str = coeffToString(n.c);\r\n\r\n str = e <= TO_EXP_NEG || e >= TO_EXP_POS\r\n ? toExponential(str, e)\r\n : toFixedPoint(str, e, '0');\r\n\r\n return n.s < 0 ? '-' + str : str;\r\n }\r\n\r\n\r\n // PROTOTYPE/INSTANCE METHODS\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the absolute value of this BigNumber.\r\n */\r\n P.absoluteValue = P.abs = function () {\r\n var x = new BigNumber(this);\r\n if (x.s < 0) x.s = 1;\r\n return x;\r\n };\r\n\r\n\r\n /*\r\n * Return\r\n * 1 if the value of this BigNumber is greater than the value of BigNumber(y, b),\r\n * -1 if the value of this BigNumber is less than the value of BigNumber(y, b),\r\n * 0 if they have the same value,\r\n * or null if the value of either is NaN.\r\n */\r\n P.comparedTo = function (y, b) {\r\n return compare(this, new BigNumber(y, b));\r\n };\r\n\r\n\r\n /*\r\n * If dp is undefined or null or true or false, return the number of decimal places of the\r\n * value of this BigNumber, or null if the value of this BigNumber is ±Infinity or NaN.\r\n *\r\n * Otherwise, if dp is a number, return a new BigNumber whose value is the value of this\r\n * BigNumber rounded to a maximum of dp decimal places using rounding mode rm, or\r\n * ROUNDING_MODE if rm is omitted.\r\n *\r\n * [dp] {number} Decimal places: integer, 0 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}'\r\n */\r\n P.decimalPlaces = P.dp = function (dp, rm) {\r\n var c, n, v,\r\n x = this;\r\n\r\n if (dp != null) {\r\n intCheck(dp, 0, MAX);\r\n if (rm == null) rm = ROUNDING_MODE;\r\n else intCheck(rm, 0, 8);\r\n\r\n return round(new BigNumber(x), dp + x.e + 1, rm);\r\n }\r\n\r\n if (!(c = x.c)) return null;\r\n n = ((v = c.length - 1) - bitFloor(this.e / LOG_BASE)) * LOG_BASE;\r\n\r\n // Subtract the number of trailing zeros of the last number.\r\n if (v = c[v]) for (; v % 10 == 0; v /= 10, n--);\r\n if (n < 0) n = 0;\r\n\r\n return n;\r\n };\r\n\r\n\r\n /*\r\n * n / 0 = I\r\n * n / N = N\r\n * n / I = 0\r\n * 0 / n = 0\r\n * 0 / 0 = N\r\n * 0 / N = N\r\n * 0 / I = 0\r\n * N / n = N\r\n * N / 0 = N\r\n * N / N = N\r\n * N / I = N\r\n * I / n = I\r\n * I / 0 = I\r\n * I / N = N\r\n * I / I = N\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber divided by the value of\r\n * BigNumber(y, b), rounded according to DECIMAL_PLACES and ROUNDING_MODE.\r\n */\r\n P.dividedBy = P.div = function (y, b) {\r\n return div(this, new BigNumber(y, b), DECIMAL_PLACES, ROUNDING_MODE);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the integer part of dividing the value of this\r\n * BigNumber by the value of BigNumber(y, b).\r\n */\r\n P.dividedToIntegerBy = P.idiv = function (y, b) {\r\n return div(this, new BigNumber(y, b), 0, 1);\r\n };\r\n\r\n\r\n /*\r\n * Return a BigNumber whose value is the value of this BigNumber exponentiated by n.\r\n *\r\n * If m is present, return the result modulo m.\r\n * If n is negative round according to DECIMAL_PLACES and ROUNDING_MODE.\r\n * If POW_PRECISION is non-zero and m is not present, round to POW_PRECISION using ROUNDING_MODE.\r\n *\r\n * The modular power operation works efficiently when x, n, and m are integers, otherwise it\r\n * is equivalent to calculating x.exponentiatedBy(n).modulo(m) with a POW_PRECISION of 0.\r\n *\r\n * n {number|string|BigNumber} The exponent. An integer.\r\n * [m] {number|string|BigNumber} The modulus.\r\n *\r\n * '[BigNumber Error] Exponent not an integer: {n}'\r\n */\r\n P.exponentiatedBy = P.pow = function (n, m) {\r\n var half, isModExp, i, k, more, nIsBig, nIsNeg, nIsOdd, y,\r\n x = this;\r\n\r\n n = new BigNumber(n);\r\n\r\n // Allow NaN and ±Infinity, but not other non-integers.\r\n if (n.c && !n.isInteger()) {\r\n throw Error\r\n (bignumberError + 'Exponent not an integer: ' + valueOf(n));\r\n }\r\n\r\n if (m != null) m = new BigNumber(m);\r\n\r\n // Exponent of MAX_SAFE_INTEGER is 15.\r\n nIsBig = n.e > 14;\r\n\r\n // If x is NaN, ±Infinity, ±0 or ±1, or n is ±Infinity, NaN or ±0.\r\n if (!x.c || !x.c[0] || x.c[0] == 1 && !x.e && x.c.length == 1 || !n.c || !n.c[0]) {\r\n\r\n // The sign of the result of pow when x is negative depends on the evenness of n.\r\n // If +n overflows to ±Infinity, the evenness of n would be not be known.\r\n y = new BigNumber(Math.pow(+valueOf(x), nIsBig ? 2 - isOdd(n) : +valueOf(n)));\r\n return m ? y.mod(m) : y;\r\n }\r\n\r\n nIsNeg = n.s < 0;\r\n\r\n if (m) {\r\n\r\n // x % m returns NaN if abs(m) is zero, or m is NaN.\r\n if (m.c ? !m.c[0] : !m.s) return new BigNumber(NaN);\r\n\r\n isModExp = !nIsNeg && x.isInteger() && m.isInteger();\r\n\r\n if (isModExp) x = x.mod(m);\r\n\r\n // Overflow to ±Infinity: >=2**1e10 or >=1.0000024**1e15.\r\n // Underflow to ±0: <=0.79**1e10 or <=0.9999975**1e15.\r\n } else if (n.e > 9 && (x.e > 0 || x.e < -1 || (x.e == 0\r\n // [1, 240000000]\r\n ? x.c[0] > 1 || nIsBig && x.c[1] >= 24e7\r\n // [80000000000000] [99999750000000]\r\n : x.c[0] < 8e13 || nIsBig && x.c[0] <= 9999975e7))) {\r\n\r\n // If x is negative and n is odd, k = -0, else k = 0.\r\n k = x.s < 0 && isOdd(n) ? -0 : 0;\r\n\r\n // If x >= 1, k = ±Infinity.\r\n if (x.e > -1) k = 1 / k;\r\n\r\n // If n is negative return ±0, else return ±Infinity.\r\n return new BigNumber(nIsNeg ? 1 / k : k);\r\n\r\n } else if (POW_PRECISION) {\r\n\r\n // Truncating each coefficient array to a length of k after each multiplication\r\n // equates to truncating significant digits to POW_PRECISION + [28, 41],\r\n // i.e. there will be a minimum of 28 guard digits retained.\r\n k = mathceil(POW_PRECISION / LOG_BASE + 2);\r\n }\r\n\r\n if (nIsBig) {\r\n half = new BigNumber(0.5);\r\n if (nIsNeg) n.s = 1;\r\n nIsOdd = isOdd(n);\r\n } else {\r\n i = Math.abs(+valueOf(n));\r\n nIsOdd = i % 2;\r\n }\r\n\r\n y = new BigNumber(ONE);\r\n\r\n // Performs 54 loop iterations for n of 9007199254740991.\r\n for (; ;) {\r\n\r\n if (nIsOdd) {\r\n y = y.times(x);\r\n if (!y.c) break;\r\n\r\n if (k) {\r\n if (y.c.length > k) y.c.length = k;\r\n } else if (isModExp) {\r\n y = y.mod(m); //y = y.minus(div(y, m, 0, MODULO_MODE).times(m));\r\n }\r\n }\r\n\r\n if (i) {\r\n i = mathfloor(i / 2);\r\n if (i === 0) break;\r\n nIsOdd = i % 2;\r\n } else {\r\n n = n.times(half);\r\n round(n, n.e + 1, 1);\r\n\r\n if (n.e > 14) {\r\n nIsOdd = isOdd(n);\r\n } else {\r\n i = +valueOf(n);\r\n if (i === 0) break;\r\n nIsOdd = i % 2;\r\n }\r\n }\r\n\r\n x = x.times(x);\r\n\r\n if (k) {\r\n if (x.c && x.c.length > k) x.c.length = k;\r\n } else if (isModExp) {\r\n x = x.mod(m); //x = x.minus(div(x, m, 0, MODULO_MODE).times(m));\r\n }\r\n }\r\n\r\n if (isModExp) return y;\r\n if (nIsNeg) y = ONE.div(y);\r\n\r\n return m ? y.mod(m) : k ? round(y, POW_PRECISION, ROUNDING_MODE, more) : y;\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the value of this BigNumber rounded to an integer\r\n * using rounding mode rm, or ROUNDING_MODE if rm is omitted.\r\n *\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {rm}'\r\n */\r\n P.integerValue = function (rm) {\r\n var n = new BigNumber(this);\r\n if (rm == null) rm = ROUNDING_MODE;\r\n else intCheck(rm, 0, 8);\r\n return round(n, n.e + 1, rm);\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is equal to the value of BigNumber(y, b),\r\n * otherwise return false.\r\n */\r\n P.isEqualTo = P.eq = function (y, b) {\r\n return compare(this, new BigNumber(y, b)) === 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is a finite number, otherwise return false.\r\n */\r\n P.isFinite = function () {\r\n return !!this.c;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is greater than the value of BigNumber(y, b),\r\n * otherwise return false.\r\n */\r\n P.isGreaterThan = P.gt = function (y, b) {\r\n return compare(this, new BigNumber(y, b)) > 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is greater than or equal to the value of\r\n * BigNumber(y, b), otherwise return false.\r\n */\r\n P.isGreaterThanOrEqualTo = P.gte = function (y, b) {\r\n return (b = compare(this, new BigNumber(y, b))) === 1 || b === 0;\r\n\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is an integer, otherwise return false.\r\n */\r\n P.isInteger = function () {\r\n return !!this.c && bitFloor(this.e / LOG_BASE) > this.c.length - 2;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is less than the value of BigNumber(y, b),\r\n * otherwise return false.\r\n */\r\n P.isLessThan = P.lt = function (y, b) {\r\n return compare(this, new BigNumber(y, b)) < 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is less than or equal to the value of\r\n * BigNumber(y, b), otherwise return false.\r\n */\r\n P.isLessThanOrEqualTo = P.lte = function (y, b) {\r\n return (b = compare(this, new BigNumber(y, b))) === -1 || b === 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is NaN, otherwise return false.\r\n */\r\n P.isNaN = function () {\r\n return !this.s;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is negative, otherwise return false.\r\n */\r\n P.isNegative = function () {\r\n return this.s < 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is positive, otherwise return false.\r\n */\r\n P.isPositive = function () {\r\n return this.s > 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is 0 or -0, otherwise return false.\r\n */\r\n P.isZero = function () {\r\n return !!this.c && this.c[0] == 0;\r\n };\r\n\r\n\r\n /*\r\n * n - 0 = n\r\n * n - N = N\r\n * n - I = -I\r\n * 0 - n = -n\r\n * 0 - 0 = 0\r\n * 0 - N = N\r\n * 0 - I = -I\r\n * N - n = N\r\n * N - 0 = N\r\n * N - N = N\r\n * N - I = N\r\n * I - n = I\r\n * I - 0 = I\r\n * I - N = N\r\n * I - I = N\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber minus the value of\r\n * BigNumber(y, b).\r\n */\r\n P.minus = function (y, b) {\r\n var i, j, t, xLTy,\r\n x = this,\r\n a = x.s;\r\n\r\n y = new BigNumber(y, b);\r\n b = y.s;\r\n\r\n // Either NaN?\r\n if (!a || !b) return new BigNumber(NaN);\r\n\r\n // Signs differ?\r\n if (a != b) {\r\n y.s = -b;\r\n return x.plus(y);\r\n }\r\n\r\n var xe = x.e / LOG_BASE,\r\n ye = y.e / LOG_BASE,\r\n xc = x.c,\r\n yc = y.c;\r\n\r\n if (!xe || !ye) {\r\n\r\n // Either Infinity?\r\n if (!xc || !yc) return xc ? (y.s = -b, y) : new BigNumber(yc ? x : NaN);\r\n\r\n // Either zero?\r\n if (!xc[0] || !yc[0]) {\r\n\r\n // Return y if y is non-zero, x if x is non-zero, or zero if both are zero.\r\n return yc[0] ? (y.s = -b, y) : new BigNumber(xc[0] ? x :\r\n\r\n // IEEE 754 (2008) 6.3: n - n = -0 when rounding to -Infinity\r\n ROUNDING_MODE == 3 ? -0 : 0);\r\n }\r\n }\r\n\r\n xe = bitFloor(xe);\r\n ye = bitFloor(ye);\r\n xc = xc.slice();\r\n\r\n // Determine which is the bigger number.\r\n if (a = xe - ye) {\r\n\r\n if (xLTy = a < 0) {\r\n a = -a;\r\n t = xc;\r\n } else {\r\n ye = xe;\r\n t = yc;\r\n }\r\n\r\n t.reverse();\r\n\r\n // Prepend zeros to equalise exponents.\r\n for (b = a; b--; t.push(0));\r\n t.reverse();\r\n } else {\r\n\r\n // Exponents equal. Check digit by digit.\r\n j = (xLTy = (a = xc.length) < (b = yc.length)) ? a : b;\r\n\r\n for (a = b = 0; b < j; b++) {\r\n\r\n if (xc[b] != yc[b]) {\r\n xLTy = xc[b] < yc[b];\r\n break;\r\n }\r\n }\r\n }\r\n\r\n // x < y? Point xc to the array of the bigger number.\r\n if (xLTy) t = xc, xc = yc, yc = t, y.s = -y.s;\r\n\r\n b = (j = yc.length) - (i = xc.length);\r\n\r\n // Append zeros to xc if shorter.\r\n // No need to add zeros to yc if shorter as subtract only needs to start at yc.length.\r\n if (b > 0) for (; b--; xc[i++] = 0);\r\n b = BASE - 1;\r\n\r\n // Subtract yc from xc.\r\n for (; j > a;) {\r\n\r\n if (xc[--j] < yc[j]) {\r\n for (i = j; i && !xc[--i]; xc[i] = b);\r\n --xc[i];\r\n xc[j] += BASE;\r\n }\r\n\r\n xc[j] -= yc[j];\r\n }\r\n\r\n // Remove leading zeros and adjust exponent accordingly.\r\n for (; xc[0] == 0; xc.splice(0, 1), --ye);\r\n\r\n // Zero?\r\n if (!xc[0]) {\r\n\r\n // Following IEEE 754 (2008) 6.3,\r\n // n - n = +0 but n - n = -0 when rounding towards -Infinity.\r\n y.s = ROUNDING_MODE == 3 ? -1 : 1;\r\n y.c = [y.e = 0];\r\n return y;\r\n }\r\n\r\n // No need to check for Infinity as +x - +y != Infinity && -x - -y != Infinity\r\n // for finite x and y.\r\n return normalise(y, xc, ye);\r\n };\r\n\r\n\r\n /*\r\n * n % 0 = N\r\n * n % N = N\r\n * n % I = n\r\n * 0 % n = 0\r\n * -0 % n = -0\r\n * 0 % 0 = N\r\n * 0 % N = N\r\n * 0 % I = 0\r\n * N % n = N\r\n * N % 0 = N\r\n * N % N = N\r\n * N % I = N\r\n * I % n = N\r\n * I % 0 = N\r\n * I % N = N\r\n * I % I = N\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber modulo the value of\r\n * BigNumber(y, b). The result depends on the value of MODULO_MODE.\r\n */\r\n P.modulo = P.mod = function (y, b) {\r\n var q, s,\r\n x = this;\r\n\r\n y = new BigNumber(y, b);\r\n\r\n // Return NaN if x is Infinity or NaN, or y is NaN or zero.\r\n if (!x.c || !y.s || y.c && !y.c[0]) {\r\n return new BigNumber(NaN);\r\n\r\n // Return x if y is Infinity or x is zero.\r\n } else if (!y.c || x.c && !x.c[0]) {\r\n return new BigNumber(x);\r\n }\r\n\r\n if (MODULO_MODE == 9) {\r\n\r\n // Euclidian division: q = sign(y) * floor(x / abs(y))\r\n // r = x - qy where 0 <= r < abs(y)\r\n s = y.s;\r\n y.s = 1;\r\n q = div(x, y, 0, 3);\r\n y.s = s;\r\n q.s *= s;\r\n } else {\r\n q = div(x, y, 0, MODULO_MODE);\r\n }\r\n\r\n y = x.minus(q.times(y));\r\n\r\n // To match JavaScript %, ensure sign of zero is sign of dividend.\r\n if (!y.c[0] && MODULO_MODE == 1) y.s = x.s;\r\n\r\n return y;\r\n };\r\n\r\n\r\n /*\r\n * n * 0 = 0\r\n * n * N = N\r\n * n * I = I\r\n * 0 * n = 0\r\n * 0 * 0 = 0\r\n * 0 * N = N\r\n * 0 * I = N\r\n * N * n = N\r\n * N * 0 = N\r\n * N * N = N\r\n * N * I = N\r\n * I * n = I\r\n * I * 0 = N\r\n * I * N = N\r\n * I * I = I\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber multiplied by the value\r\n * of BigNumber(y, b).\r\n */\r\n P.multipliedBy = P.times = function (y, b) {\r\n var c, e, i, j, k, m, xcL, xlo, xhi, ycL, ylo, yhi, zc,\r\n base, sqrtBase,\r\n x = this,\r\n xc = x.c,\r\n yc = (y = new BigNumber(y, b)).c;\r\n\r\n // Either NaN, ±Infinity or ±0?\r\n if (!xc || !yc || !xc[0] || !yc[0]) {\r\n\r\n // Return NaN if either is NaN, or one is 0 and the other is Infinity.\r\n if (!x.s || !y.s || xc && !xc[0] && !yc || yc && !yc[0] && !xc) {\r\n y.c = y.e = y.s = null;\r\n } else {\r\n y.s *= x.s;\r\n\r\n // Return ±Infinity if either is ±Infinity.\r\n if (!xc || !yc) {\r\n y.c = y.e = null;\r\n\r\n // Return ±0 if either is ±0.\r\n } else {\r\n y.c = [0];\r\n y.e = 0;\r\n }\r\n }\r\n\r\n return y;\r\n }\r\n\r\n e = bitFloor(x.e / LOG_BASE) + bitFloor(y.e / LOG_BASE);\r\n y.s *= x.s;\r\n xcL = xc.length;\r\n ycL = yc.length;\r\n\r\n // Ensure xc points to longer array and xcL to its length.\r\n if (xcL < ycL) zc = xc, xc = yc, yc = zc, i = xcL, xcL = ycL, ycL = i;\r\n\r\n // Initialise the result array with zeros.\r\n for (i = xcL + ycL, zc = []; i--; zc.push(0));\r\n\r\n base = BASE;\r\n sqrtBase = SQRT_BASE;\r\n\r\n for (i = ycL; --i >= 0;) {\r\n c = 0;\r\n ylo = yc[i] % sqrtBase;\r\n yhi = yc[i] / sqrtBase | 0;\r\n\r\n for (k = xcL, j = i + k; j > i;) {\r\n xlo = xc[--k] % sqrtBase;\r\n xhi = xc[k] / sqrtBase | 0;\r\n m = yhi * xlo + xhi * ylo;\r\n xlo = ylo * xlo + ((m % sqrtBase) * sqrtBase) + zc[j] + c;\r\n c = (xlo / base | 0) + (m / sqrtBase | 0) + yhi * xhi;\r\n zc[j--] = xlo % base;\r\n }\r\n\r\n zc[j] = c;\r\n }\r\n\r\n if (c) {\r\n ++e;\r\n } else {\r\n zc.splice(0, 1);\r\n }\r\n\r\n return normalise(y, zc, e);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the value of this BigNumber negated,\r\n * i.e. multiplied by -1.\r\n */\r\n P.negated = function () {\r\n var x = new BigNumber(this);\r\n x.s = -x.s || null;\r\n return x;\r\n };\r\n\r\n\r\n /*\r\n * n + 0 = n\r\n * n + N = N\r\n * n + I = I\r\n * 0 + n = n\r\n * 0 + 0 = 0\r\n * 0 + N = N\r\n * 0 + I = I\r\n * N + n = N\r\n * N + 0 = N\r\n * N + N = N\r\n * N + I = N\r\n * I + n = I\r\n * I + 0 = I\r\n * I + N = N\r\n * I + I = I\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber plus the value of\r\n * BigNumber(y, b).\r\n */\r\n P.plus = function (y, b) {\r\n var t,\r\n x = this,\r\n a = x.s;\r\n\r\n y = new BigNumber(y, b);\r\n b = y.s;\r\n\r\n // Either NaN?\r\n if (!a || !b) return new BigNumber(NaN);\r\n\r\n // Signs differ?\r\n if (a != b) {\r\n y.s = -b;\r\n return x.minus(y);\r\n }\r\n\r\n var xe = x.e / LOG_BASE,\r\n ye = y.e / LOG_BASE,\r\n xc = x.c,\r\n yc = y.c;\r\n\r\n if (!xe || !ye) {\r\n\r\n // Return ±Infinity if either ±Infinity.\r\n if (!xc || !yc) return new BigNumber(a / 0);\r\n\r\n // Either zero?\r\n // Return y if y is non-zero, x if x is non-zero, or zero if both are zero.\r\n if (!xc[0] || !yc[0]) return yc[0] ? y : new BigNumber(xc[0] ? x : a * 0);\r\n }\r\n\r\n xe = bitFloor(xe);\r\n ye = bitFloor(ye);\r\n xc = xc.slice();\r\n\r\n // Prepend zeros to equalise exponents. Faster to use reverse then do unshifts.\r\n if (a = xe - ye) {\r\n if (a > 0) {\r\n ye = xe;\r\n t = yc;\r\n } else {\r\n a = -a;\r\n t = xc;\r\n }\r\n\r\n t.reverse();\r\n for (; a--; t.push(0));\r\n t.reverse();\r\n }\r\n\r\n a = xc.length;\r\n b = yc.length;\r\n\r\n // Point xc to the longer array, and b to the shorter length.\r\n if (a - b < 0) t = yc, yc = xc, xc = t, b = a;\r\n\r\n // Only start adding at yc.length - 1 as the further digits of xc can be ignored.\r\n for (a = 0; b;) {\r\n a = (xc[--b] = xc[b] + yc[b] + a) / BASE | 0;\r\n xc[b] = BASE === xc[b] ? 0 : xc[b] % BASE;\r\n }\r\n\r\n if (a) {\r\n xc = [a].concat(xc);\r\n ++ye;\r\n }\r\n\r\n // No need to check for zero, as +x + +y != 0 && -x + -y != 0\r\n // ye = MAX_EXP + 1 possible\r\n return normalise(y, xc, ye);\r\n };\r\n\r\n\r\n /*\r\n * If sd is undefined or null or true or false, return the number of significant digits of\r\n * the value of this BigNumber, or null if the value of this BigNumber is ±Infinity or NaN.\r\n * If sd is true include integer-part trailing zeros in the count.\r\n *\r\n * Otherwise, if sd is a number, return a new BigNumber whose value is the value of this\r\n * BigNumber rounded to a maximum of sd significant digits using rounding mode rm, or\r\n * ROUNDING_MODE if rm is omitted.\r\n *\r\n * sd {number|boolean} number: significant digits: integer, 1 to MAX inclusive.\r\n * boolean: whether to count integer-part trailing zeros: true or false.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {sd|rm}'\r\n */\r\n P.precision = P.sd = function (sd, rm) {\r\n var c, n, v,\r\n x = this;\r\n\r\n if (sd != null && sd !== !!sd) {\r\n intCheck(sd, 1, MAX);\r\n if (rm == null) rm = ROUNDING_MODE;\r\n else intCheck(rm, 0, 8);\r\n\r\n return round(new BigNumber(x), sd, rm);\r\n }\r\n\r\n if (!(c = x.c)) return null;\r\n v = c.length - 1;\r\n n = v * LOG_BASE + 1;\r\n\r\n if (v = c[v]) {\r\n\r\n // Subtract the number of trailing zeros of the last element.\r\n for (; v % 10 == 0; v /= 10, n--);\r\n\r\n // Add the number of digits of the first element.\r\n for (v = c[0]; v >= 10; v /= 10, n++);\r\n }\r\n\r\n if (sd && x.e + 1 > n) n = x.e + 1;\r\n\r\n return n;\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the value of this BigNumber shifted by k places\r\n * (powers of 10). Shift to the right if n > 0, and to the left if n < 0.\r\n *\r\n * k {number} Integer, -MAX_SAFE_INTEGER to MAX_SAFE_INTEGER inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {k}'\r\n */\r\n P.shiftedBy = function (k) {\r\n intCheck(k, -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER);\r\n return this.times('1e' + k);\r\n };\r\n\r\n\r\n /*\r\n * sqrt(-n) = N\r\n * sqrt(N) = N\r\n * sqrt(-I) = N\r\n * sqrt(I) = I\r\n * sqrt(0) = 0\r\n * sqrt(-0) = -0\r\n *\r\n * Return a new BigNumber whose value is the square root of the value of this BigNumber,\r\n * rounded according to DECIMAL_PLACES and ROUNDING_MODE.\r\n */\r\n P.squareRoot = P.sqrt = function () {\r\n var m, n, r, rep, t,\r\n x = this,\r\n c = x.c,\r\n s = x.s,\r\n e = x.e,\r\n dp = DECIMAL_PLACES + 4,\r\n half = new BigNumber('0.5');\r\n\r\n // Negative/NaN/Infinity/zero?\r\n if (s !== 1 || !c || !c[0]) {\r\n return new BigNumber(!s || s < 0 && (!c || c[0]) ? NaN : c ? x : 1 / 0);\r\n }\r\n\r\n // Initial estimate.\r\n s = Math.sqrt(+valueOf(x));\r\n\r\n // Math.sqrt underflow/overflow?\r\n // Pass x to Math.sqrt as integer, then adjust the exponent of the result.\r\n if (s == 0 || s == 1 / 0) {\r\n n = coeffToString(c);\r\n if ((n.length + e) % 2 == 0) n += '0';\r\n s = Math.sqrt(+n);\r\n e = bitFloor((e + 1) / 2) - (e < 0 || e % 2);\r\n\r\n if (s == 1 / 0) {\r\n n = '5e' + e;\r\n } else {\r\n n = s.toExponential();\r\n n = n.slice(0, n.indexOf('e') + 1) + e;\r\n }\r\n\r\n r = new BigNumber(n);\r\n } else {\r\n r = new BigNumber(s + '');\r\n }\r\n\r\n // Check for zero.\r\n // r could be zero if MIN_EXP is changed after the this value was created.\r\n // This would cause a division by zero (x/t) and hence Infinity below, which would cause\r\n // coeffToString to throw.\r\n if (r.c[0]) {\r\n e = r.e;\r\n s = e + dp;\r\n if (s < 3) s = 0;\r\n\r\n // Newton-Raphson iteration.\r\n for (; ;) {\r\n t = r;\r\n r = half.times(t.plus(div(x, t, dp, 1)));\r\n\r\n if (coeffToString(t.c).slice(0, s) === (n = coeffToString(r.c)).slice(0, s)) {\r\n\r\n // The exponent of r may here be one less than the final result exponent,\r\n // e.g 0.0009999 (e-4) --> 0.001 (e-3), so adjust s so the rounding digits\r\n // are indexed correctly.\r\n if (r.e < e) --s;\r\n n = n.slice(s - 3, s + 1);\r\n\r\n // The 4th rounding digit may be in error by -1 so if the 4 rounding digits\r\n // are 9999 or 4999 (i.e. approaching a rounding boundary) continue the\r\n // iteration.\r\n if (n == '9999' || !rep && n == '4999') {\r\n\r\n // On the first iteration only, check to see if rounding up gives the\r\n // exact result as the nines may infinitely repeat.\r\n if (!rep) {\r\n round(t, t.e + DECIMAL_PLACES + 2, 0);\r\n\r\n if (t.times(t).eq(x)) {\r\n r = t;\r\n break;\r\n }\r\n }\r\n\r\n dp += 4;\r\n s += 4;\r\n rep = 1;\r\n } else {\r\n\r\n // If rounding digits are null, 0{0,4} or 50{0,3}, check for exact\r\n // result. If not, then there are further digits and m will be truthy.\r\n if (!+n || !+n.slice(1) && n.charAt(0) == '5') {\r\n\r\n // Truncate to the first rounding digit.\r\n round(r, r.e + DECIMAL_PLACES + 2, 1);\r\n m = !r.times(r).eq(x);\r\n }\r\n\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n return round(r, r.e + DECIMAL_PLACES + 1, ROUNDING_MODE, m);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber in exponential notation and\r\n * rounded using ROUNDING_MODE to dp fixed decimal places.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}'\r\n */\r\n P.toExponential = function (dp, rm) {\r\n if (dp != null) {\r\n intCheck(dp, 0, MAX);\r\n dp++;\r\n }\r\n return format(this, dp, rm, 1);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber in fixed-point notation rounding\r\n * to dp fixed decimal places using rounding mode rm, or ROUNDING_MODE if rm is omitted.\r\n *\r\n * Note: as with JavaScript's number type, (-0).toFixed(0) is '0',\r\n * but e.g. (-0.00001).toFixed(0) is '-0'.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}'\r\n */\r\n P.toFixed = function (dp, rm) {\r\n if (dp != null) {\r\n intCheck(dp, 0, MAX);\r\n dp = dp + this.e + 1;\r\n }\r\n return format(this, dp, rm);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber in fixed-point notation rounded\r\n * using rm or ROUNDING_MODE to dp decimal places, and formatted according to the properties\r\n * of the format or FORMAT object (see BigNumber.set).\r\n *\r\n * The formatting object may contain some or all of the properties shown below.\r\n *\r\n * FORMAT = {\r\n * prefix: '',\r\n * groupSize: 3,\r\n * secondaryGroupSize: 0,\r\n * groupSeparator: ',',\r\n * decimalSeparator: '.',\r\n * fractionGroupSize: 0,\r\n * fractionGroupSeparator: '\\xA0', // non-breaking space\r\n * suffix: ''\r\n * };\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n * [format] {object} Formatting options. See FORMAT pbject above.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}'\r\n * '[BigNumber Error] Argument not an object: {format}'\r\n */\r\n P.toFormat = function (dp, rm, format) {\r\n var str,\r\n x = this;\r\n\r\n if (format == null) {\r\n if (dp != null && rm && typeof rm == 'object') {\r\n format = rm;\r\n rm = null;\r\n } else if (dp && typeof dp == 'object') {\r\n format = dp;\r\n dp = rm = null;\r\n } else {\r\n format = FORMAT;\r\n }\r\n } else if (typeof format != 'object') {\r\n throw Error\r\n (bignumberError + 'Argument not an object: ' + format);\r\n }\r\n\r\n str = x.toFixed(dp, rm);\r\n\r\n if (x.c) {\r\n var i,\r\n arr = str.split('.'),\r\n g1 = +format.groupSize,\r\n g2 = +format.secondaryGroupSize,\r\n groupSeparator = format.groupSeparator || '',\r\n intPart = arr[0],\r\n fractionPart = arr[1],\r\n isNeg = x.s < 0,\r\n intDigits = isNeg ? intPart.slice(1) : intPart,\r\n len = intDigits.length;\r\n\r\n if (g2) i = g1, g1 = g2, g2 = i, len -= i;\r\n\r\n if (g1 > 0 && len > 0) {\r\n i = len % g1 || g1;\r\n intPart = intDigits.substr(0, i);\r\n for (; i < len; i += g1) intPart += groupSeparator + intDigits.substr(i, g1);\r\n if (g2 > 0) intPart += groupSeparator + intDigits.slice(i);\r\n if (isNeg) intPart = '-' + intPart;\r\n }\r\n\r\n str = fractionPart\r\n ? intPart + (format.decimalSeparator || '') + ((g2 = +format.fractionGroupSize)\r\n ? fractionPart.replace(new RegExp('\\\\d{' + g2 + '}\\\\B', 'g'),\r\n '$&' + (format.fractionGroupSeparator || ''))\r\n : fractionPart)\r\n : intPart;\r\n }\r\n\r\n return (format.prefix || '') + str + (format.suffix || '');\r\n };\r\n\r\n\r\n /*\r\n * Return an array of two BigNumbers representing the value of this BigNumber as a simple\r\n * fraction with an integer numerator and an integer denominator.\r\n * The denominator will be a positive non-zero value less than or equal to the specified\r\n * maximum denominator. If a maximum denominator is not specified, the denominator will be\r\n * the lowest value necessary to represent the number exactly.\r\n *\r\n * [md] {number|string|BigNumber} Integer >= 1, or Infinity. The maximum denominator.\r\n *\r\n * '[BigNumber Error] Argument {not an integer|out of range} : {md}'\r\n */\r\n P.toFraction = function (md) {\r\n var d, d0, d1, d2, e, exp, n, n0, n1, q, r, s,\r\n x = this,\r\n xc = x.c;\r\n\r\n if (md != null) {\r\n n = new BigNumber(md);\r\n\r\n // Throw if md is less than one or is not an integer, unless it is Infinity.\r\n if (!n.isInteger() && (n.c || n.s !== 1) || n.lt(ONE)) {\r\n throw Error\r\n (bignumberError + 'Argument ' +\r\n (n.isInteger() ? 'out of range: ' : 'not an integer: ') + valueOf(n));\r\n }\r\n }\r\n\r\n if (!xc) return new BigNumber(x);\r\n\r\n d = new BigNumber(ONE);\r\n n1 = d0 = new BigNumber(ONE);\r\n d1 = n0 = new BigNumber(ONE);\r\n s = coeffToString(xc);\r\n\r\n // Determine initial denominator.\r\n // d is a power of 10 and the minimum max denominator that specifies the value exactly.\r\n e = d.e = s.length - x.e - 1;\r\n d.c[0] = POWS_TEN[(exp = e % LOG_BASE) < 0 ? LOG_BASE + exp : exp];\r\n md = !md || n.comparedTo(d) > 0 ? (e > 0 ? d : n1) : n;\r\n\r\n exp = MAX_EXP;\r\n MAX_EXP = 1 / 0;\r\n n = new BigNumber(s);\r\n\r\n // n0 = d1 = 0\r\n n0.c[0] = 0;\r\n\r\n for (; ;) {\r\n q = div(n, d, 0, 1);\r\n d2 = d0.plus(q.times(d1));\r\n if (d2.comparedTo(md) == 1) break;\r\n d0 = d1;\r\n d1 = d2;\r\n n1 = n0.plus(q.times(d2 = n1));\r\n n0 = d2;\r\n d = n.minus(q.times(d2 = d));\r\n n = d2;\r\n }\r\n\r\n d2 = div(md.minus(d0), d1, 0, 1);\r\n n0 = n0.plus(d2.times(n1));\r\n d0 = d0.plus(d2.times(d1));\r\n n0.s = n1.s = x.s;\r\n e = e * 2;\r\n\r\n // Determine which fraction is closer to x, n0/d0 or n1/d1\r\n r = div(n1, d1, e, ROUNDING_MODE).minus(x).abs().comparedTo(\r\n div(n0, d0, e, ROUNDING_MODE).minus(x).abs()) < 1 ? [n1, d1] : [n0, d0];\r\n\r\n MAX_EXP = exp;\r\n\r\n return r;\r\n };\r\n\r\n\r\n /*\r\n * Return the value of this BigNumber converted to a number primitive.\r\n */\r\n P.toNumber = function () {\r\n return +valueOf(this);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber rounded to sd significant digits\r\n * using rounding mode rm or ROUNDING_MODE. If sd is less than the number of digits\r\n * necessary to represent the integer part of the value in fixed-point notation, then use\r\n * exponential notation.\r\n *\r\n * [sd] {number} Significant digits. Integer, 1 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {sd|rm}'\r\n */\r\n P.toPrecision = function (sd, rm) {\r\n if (sd != null) intCheck(sd, 1, MAX);\r\n return format(this, sd, rm, 2);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber in base b, or base 10 if b is\r\n * omitted. If a base is specified, including base 10, round according to DECIMAL_PLACES and\r\n * ROUNDING_MODE. If a base is not specified, and this BigNumber has a positive exponent\r\n * that is equal to or greater than TO_EXP_POS, or a negative exponent equal to or less than\r\n * TO_EXP_NEG, return exponential notation.\r\n *\r\n * [b] {number} Integer, 2 to ALPHABET.length inclusive.\r\n *\r\n * '[BigNumber Error] Base {not a primitive number|not an integer|out of range}: {b}'\r\n */\r\n P.toString = function (b) {\r\n var str,\r\n n = this,\r\n s = n.s,\r\n e = n.e;\r\n\r\n // Infinity or NaN?\r\n if (e === null) {\r\n if (s) {\r\n str = 'Infinity';\r\n if (s < 0) str = '-' + str;\r\n } else {\r\n str = 'NaN';\r\n }\r\n } else {\r\n if (b == null) {\r\n str = e <= TO_EXP_NEG || e >= TO_EXP_POS\r\n ? toExponential(coeffToString(n.c), e)\r\n : toFixedPoint(coeffToString(n.c), e, '0');\r\n } else if (b === 10 && alphabetHasNormalDecimalDigits) {\r\n n = round(new BigNumber(n), DECIMAL_PLACES + e + 1, ROUNDING_MODE);\r\n str = toFixedPoint(coeffToString(n.c), n.e, '0');\r\n } else {\r\n intCheck(b, 2, ALPHABET.length, 'Base');\r\n str = convertBase(toFixedPoint(coeffToString(n.c), e, '0'), 10, b, s, true);\r\n }\r\n\r\n if (s < 0 && n.c[0]) str = '-' + str;\r\n }\r\n\r\n return str;\r\n };\r\n\r\n\r\n /*\r\n * Return as toString, but do not accept a base argument, and include the minus sign for\r\n * negative zero.\r\n */\r\n P.valueOf = P.toJSON = function () {\r\n return valueOf(this);\r\n };\r\n\r\n\r\n P._isBigNumber = true;\r\n\r\n if (configObject != null) BigNumber.set(configObject);\r\n\r\n return BigNumber;\r\n }\r\n\r\n\r\n // PRIVATE HELPER FUNCTIONS\r\n\r\n // These functions don't need access to variables,\r\n // e.g. DECIMAL_PLACES, in the scope of the `clone` function above.\r\n\r\n\r\n function bitFloor(n) {\r\n var i = n | 0;\r\n return n > 0 || n === i ? i : i - 1;\r\n }\r\n\r\n\r\n // Return a coefficient array as a string of base 10 digits.\r\n function coeffToString(a) {\r\n var s, z,\r\n i = 1,\r\n j = a.length,\r\n r = a[0] + '';\r\n\r\n for (; i < j;) {\r\n s = a[i++] + '';\r\n z = LOG_BASE - s.length;\r\n for (; z--; s = '0' + s);\r\n r += s;\r\n }\r\n\r\n // Determine trailing zeros.\r\n for (j = r.length; r.charCodeAt(--j) === 48;);\r\n\r\n return r.slice(0, j + 1 || 1);\r\n }\r\n\r\n\r\n // Compare the value of BigNumbers x and y.\r\n function compare(x, y) {\r\n var a, b,\r\n xc = x.c,\r\n yc = y.c,\r\n i = x.s,\r\n j = y.s,\r\n k = x.e,\r\n l = y.e;\r\n\r\n // Either NaN?\r\n if (!i || !j) return null;\r\n\r\n a = xc && !xc[0];\r\n b = yc && !yc[0];\r\n\r\n // Either zero?\r\n if (a || b) return a ? b ? 0 : -j : i;\r\n\r\n // Signs differ?\r\n if (i != j) return i;\r\n\r\n a = i < 0;\r\n b = k == l;\r\n\r\n // Either Infinity?\r\n if (!xc || !yc) return b ? 0 : !xc ^ a ? 1 : -1;\r\n\r\n // Compare exponents.\r\n if (!b) return k > l ^ a ? 1 : -1;\r\n\r\n j = (k = xc.length) < (l = yc.length) ? k : l;\r\n\r\n // Compare digit by digit.\r\n for (i = 0; i < j; i++) if (xc[i] != yc[i]) return xc[i] > yc[i] ^ a ? 1 : -1;\r\n\r\n // Compare lengths.\r\n return k == l ? 0 : k > l ^ a ? 1 : -1;\r\n }\r\n\r\n\r\n /*\r\n * Check that n is a primitive number, an integer, and in range, otherwise throw.\r\n */\r\n function intCheck(n, min, max, name) {\r\n if (n < min || n > max || n !== mathfloor(n)) {\r\n throw Error\r\n (bignumberError + (name || 'Argument') + (typeof n == 'number'\r\n ? n < min || n > max ? ' out of range: ' : ' not an integer: '\r\n : ' not a primitive number: ') + String(n));\r\n }\r\n }\r\n\r\n\r\n // Assumes finite n.\r\n function isOdd(n) {\r\n var k = n.c.length - 1;\r\n return bitFloor(n.e / LOG_BASE) == k && n.c[k] % 2 != 0;\r\n }\r\n\r\n\r\n function toExponential(str, e) {\r\n return (str.length > 1 ? str.charAt(0) + '.' + str.slice(1) : str) +\r\n (e < 0 ? 'e' : 'e+') + e;\r\n }\r\n\r\n\r\n function toFixedPoint(str, e, z) {\r\n var len, zs;\r\n\r\n // Negative exponent?\r\n if (e < 0) {\r\n\r\n // Prepend zeros.\r\n for (zs = z + '.'; ++e; zs += z);\r\n str = zs + str;\r\n\r\n // Positive exponent\r\n } else {\r\n len = str.length;\r\n\r\n // Append zeros.\r\n if (++e > len) {\r\n for (zs = z, e -= len; --e; zs += z);\r\n str += zs;\r\n } else if (e < len) {\r\n str = str.slice(0, e) + '.' + str.slice(e);\r\n }\r\n }\r\n\r\n return str;\r\n }\r\n\r\n\r\n // EXPORT\r\n\r\n\r\n BigNumber = clone();\r\n BigNumber['default'] = BigNumber.BigNumber = BigNumber;\r\n\r\n // AMD.\r\n if (typeof define == 'function' && define.amd) {\r\n define(function () { return BigNumber; });\r\n\r\n // Node.js and other environments that support module.exports.\r\n } else if (typeof module != 'undefined' && module.exports) {\r\n module.exports = BigNumber;\r\n\r\n // Browser.\r\n } else {\r\n if (!globalObject) {\r\n globalObject = typeof self != 'undefined' && self ? self : window;\r\n }\r\n\r\n globalObject.BigNumber = BigNumber;\r\n }\r\n})(this);\r\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh <https://feross.org>\n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\nvar customInspectSymbol =\n (typeof Symbol === 'function' && typeof Symbol['for'] === 'function') // eslint-disable-line dot-notation\n ? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation\n : null\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 var proto = { foo: function () { return 42 } }\n Object.setPrototypeOf(proto, Uint8Array.prototype)\n Object.setPrototypeOf(arr, proto)\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 Object.setPrototypeOf(buf, 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\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 fromArrayView(value)\n }\n\n if (value == null) {\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 if (isInstance(value, ArrayBuffer) ||\n (value && isInstance(value.buffer, ArrayBuffer))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof SharedArrayBuffer !== 'undefined' &&\n (isInstance(value, SharedArrayBuffer) ||\n (value && isInstance(value.buffer, SharedArrayBuffer)))) {\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\nObject.setPrototypeOf(Buffer.prototype, Uint8Array.prototype)\nObject.setPrototypeOf(Buffer, 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 interpreted 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 fromArrayView (arrayView) {\n if (isInstance(arrayView, Uint8Array)) {\n var copy = new Uint8Array(arrayView)\n return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength)\n }\n return fromArrayLike(arrayView)\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 Object.setPrototypeOf(buf, Buffer.prototype)\n\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 if (pos + buf.length > buffer.length) {\n Buffer.from(buf).copy(buffer, pos)\n } else {\n Uint8Array.prototype.set.call(\n buffer,\n buf,\n pos\n )\n }\n } else if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n } else {\n buf.copy(buffer, pos)\n }\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 coercion 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 '<Buffer ' + str + '>'\n}\nif (customInspectSymbol) {\n Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect\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 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 case 'latin1':\n case 'binary':\n return asciiWrite(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)\n ? 4\n : (firstByte > 0xDF)\n ? 3\n : (firstByte > 0xBF)\n ? 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 += hexSliceLookupTable[buf[i]]\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end)\n var res = ''\n // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n for (var i = 0; i < bytes.length - 1; 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 Object.setPrototypeOf(newBuf, Buffer.prototype)\n\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 =\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 =\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 =\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 =\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 =\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 =\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 =\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 =\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 =\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 =\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 =\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 =\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 =\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 =\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 {\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 } else if (typeof val === 'boolean') {\n val = Number(val)\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 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// Create lookup table for `toString('hex')`\n// See: https://github.com/feross/buffer/issues/219\nvar hexSliceLookupTable = (function () {\n var alphabet = '0123456789abcdef'\n var table = new Array(256)\n for (var i = 0; i < 16; ++i) {\n var i16 = i * 16\n for (var j = 0; j < 16; ++j) {\n table[i16 + j] = alphabet[i] + alphabet[j]\n }\n }\n return table\n})()\n","/*\r\n Copyright 2013-2014 Daniel Wirtz <dcode@dcode.io>\r\n\r\n Licensed under the Apache License, Version 2.0 (the \"License\");\r\n you may not use this file except in compliance with the License.\r\n You may obtain a copy of the License at\r\n\r\n http://www.apache.org/licenses/LICENSE-2.0\r\n\r\n Unless required by applicable law or agreed to in writing, software\r\n distributed under the License is distributed on an \"AS IS\" BASIS,\r\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n See the License for the specific language governing permissions and\r\n limitations under the License.\r\n */\r\n\r\n/**\r\n * @license bytebuffer.js (c) 2015 Daniel Wirtz <dcode@dcode.io>\r\n * Backing buffer: ArrayBuffer, Accessor: Uint8Array\r\n * Released under the Apache License, Version 2.0\r\n * see: https://github.com/dcodeIO/bytebuffer.js for details\r\n */\r\n(function(global, factory) {\r\n\r\n /* AMD */ if (typeof define === 'function' && define[\"amd\"])\r\n define([\"long\"], factory);\r\n /* CommonJS */ else if (typeof require === 'function' && typeof module === \"object\" && module && module[\"exports\"])\r\n module['exports'] = (function() {\r\n var Long; try { Long = require(\"long\"); } catch (e) {}\r\n return factory(Long);\r\n })();\r\n /* Global */ else\r\n (global[\"dcodeIO\"] = global[\"dcodeIO\"] || {})[\"ByteBuffer\"] = factory(global[\"dcodeIO\"][\"Long\"]);\r\n\r\n})(this, function(Long) {\r\n \"use strict\";\r\n\r\n /**\r\n * Constructs a new ByteBuffer.\r\n * @class The swiss army knife for binary data in JavaScript.\r\n * @exports ByteBuffer\r\n * @constructor\r\n * @param {number=} capacity Initial capacity. Defaults to {@link ByteBuffer.DEFAULT_CAPACITY}.\r\n * @param {boolean=} littleEndian Whether to use little or big endian byte order. Defaults to\r\n * {@link ByteBuffer.DEFAULT_ENDIAN}.\r\n * @param {boolean=} noAssert Whether to skip assertions of offsets and values. Defaults to\r\n * {@link ByteBuffer.DEFAULT_NOASSERT}.\r\n * @expose\r\n */\r\n var ByteBuffer = function(capacity, littleEndian, noAssert) {\r\n if (typeof capacity === 'undefined')\r\n capacity = ByteBuffer.DEFAULT_CAPACITY;\r\n if (typeof littleEndian === 'undefined')\r\n littleEndian = ByteBuffer.DEFAULT_ENDIAN;\r\n if (typeof noAssert === 'undefined')\r\n noAssert = ByteBuffer.DEFAULT_NOASSERT;\r\n if (!noAssert) {\r\n capacity = capacity | 0;\r\n if (capacity < 0)\r\n throw RangeError(\"Illegal capacity\");\r\n littleEndian = !!littleEndian;\r\n noAssert = !!noAssert;\r\n }\r\n\r\n /**\r\n * Backing ArrayBuffer.\r\n * @type {!ArrayBuffer}\r\n * @expose\r\n */\r\n this.buffer = capacity === 0 ? EMPTY_BUFFER : new ArrayBuffer(capacity);\r\n\r\n /**\r\n * Uint8Array utilized to manipulate the backing buffer. Becomes `null` if the backing buffer has a capacity of `0`.\r\n * @type {?Uint8Array}\r\n * @expose\r\n */\r\n this.view = capacity === 0 ? null : new Uint8Array(this.buffer);\r\n\r\n /**\r\n * Absolute read/write offset.\r\n * @type {number}\r\n * @expose\r\n * @see ByteBuffer#flip\r\n * @see ByteBuffer#clear\r\n */\r\n this.offset = 0;\r\n\r\n /**\r\n * Marked offset.\r\n * @type {number}\r\n * @expose\r\n * @see ByteBuffer#mark\r\n * @see ByteBuffer#reset\r\n */\r\n this.markedOffset = -1;\r\n\r\n /**\r\n * Absolute limit of the contained data. Set to the backing buffer's capacity upon allocation.\r\n * @type {number}\r\n * @expose\r\n * @see ByteBuffer#flip\r\n * @see ByteBuffer#clear\r\n */\r\n this.limit = capacity;\r\n\r\n /**\r\n * Whether to use little endian byte order, defaults to `false` for big endian.\r\n * @type {boolean}\r\n * @expose\r\n */\r\n this.littleEndian = littleEndian;\r\n\r\n /**\r\n * Whether to skip assertions of offsets and values, defaults to `false`.\r\n * @type {boolean}\r\n * @expose\r\n */\r\n this.noAssert = noAssert;\r\n };\r\n\r\n /**\r\n * ByteBuffer version.\r\n * @type {string}\r\n * @const\r\n * @expose\r\n */\r\n ByteBuffer.VERSION = \"5.0.1\";\r\n\r\n /**\r\n * Little endian constant that can be used instead of its boolean value. Evaluates to `true`.\r\n * @type {boolean}\r\n * @const\r\n * @expose\r\n */\r\n ByteBuffer.LITTLE_ENDIAN = true;\r\n\r\n /**\r\n * Big endian constant that can be used instead of its boolean value. Evaluates to `false`.\r\n * @type {boolean}\r\n * @const\r\n * @expose\r\n */\r\n ByteBuffer.BIG_ENDIAN = false;\r\n\r\n /**\r\n * Default initial capacity of `16`.\r\n * @type {number}\r\n * @expose\r\n */\r\n ByteBuffer.DEFAULT_CAPACITY = 16;\r\n\r\n /**\r\n * Default endianess of `false` for big endian.\r\n * @type {boolean}\r\n * @expose\r\n */\r\n ByteBuffer.DEFAULT_ENDIAN = ByteBuffer.BIG_ENDIAN;\r\n\r\n /**\r\n * Default no assertions flag of `false`.\r\n * @type {boolean}\r\n * @expose\r\n */\r\n ByteBuffer.DEFAULT_NOASSERT = false;\r\n\r\n /**\r\n * A `Long` class for representing a 64-bit two's-complement integer value. May be `null` if Long.js has not been loaded\r\n * and int64 support is not available.\r\n * @type {?Long}\r\n * @const\r\n * @see https://github.com/dcodeIO/long.js\r\n * @expose\r\n */\r\n ByteBuffer.Long = Long || null;\r\n\r\n /**\r\n * @alias ByteBuffer.prototype\r\n * @inner\r\n */\r\n var ByteBufferPrototype = ByteBuffer.prototype;\r\n\r\n /**\r\n * An indicator used to reliably determine if an object is a ByteBuffer or not.\r\n * @type {boolean}\r\n * @const\r\n * @expose\r\n * @private\r\n */\r\n ByteBufferPrototype.__isByteBuffer__;\r\n\r\n Object.defineProperty(ByteBufferPrototype, \"__isByteBuffer__\", {\r\n value: true,\r\n enumerable: false,\r\n configurable: false\r\n });\r\n\r\n // helpers\r\n\r\n /**\r\n * @type {!ArrayBuffer}\r\n * @inner\r\n */\r\n var EMPTY_BUFFER = new ArrayBuffer(0);\r\n\r\n /**\r\n * String.fromCharCode reference for compile-time renaming.\r\n * @type {function(...number):string}\r\n * @inner\r\n */\r\n var stringFromCharCode = String.fromCharCode;\r\n\r\n /**\r\n * Creates a source function for a string.\r\n * @param {string} s String to read from\r\n * @returns {function():number|null} Source function returning the next char code respectively `null` if there are\r\n * no more characters left.\r\n * @throws {TypeError} If the argument is invalid\r\n * @inner\r\n */\r\n function stringSource(s) {\r\n var i=0; return function() {\r\n return i < s.length ? s.charCodeAt(i++) : null;\r\n };\r\n }\r\n\r\n /**\r\n * Creates a destination function for a string.\r\n * @returns {function(number=):undefined|string} Destination function successively called with the next char code.\r\n * Returns the final string when called without arguments.\r\n * @inner\r\n */\r\n function stringDestination() {\r\n var cs = [], ps = []; return function() {\r\n if (arguments.length === 0)\r\n return ps.join('')+stringFromCharCode.apply(String, cs);\r\n if (cs.length + arguments.length > 1024)\r\n ps.push(stringFromCharCode.apply(String, cs)),\r\n cs.length = 0;\r\n Array.prototype.push.apply(cs, arguments);\r\n };\r\n }\r\n\r\n /**\r\n * Gets the accessor type.\r\n * @returns {Function} `Buffer` under node.js, `Uint8Array` respectively `DataView` in the browser (classes)\r\n * @expose\r\n */\r\n ByteBuffer.accessor = function() {\r\n return Uint8Array;\r\n };\r\n /**\r\n * Allocates a new ByteBuffer backed by a buffer of the specified capacity.\r\n * @param {number=} capacity Initial capacity. Defaults to {@link ByteBuffer.DEFAULT_CAPACITY}.\r\n * @param {boolean=} littleEndian Whether to use little or big endian byte order. Defaults to\r\n * {@link ByteBuffer.DEFAULT_ENDIAN}.\r\n * @param {boolean=} noAssert Whether to skip assertions of offsets and values. Defaults to\r\n * {@link ByteBuffer.DEFAULT_NOASSERT}.\r\n * @returns {!ByteBuffer}\r\n * @expose\r\n */\r\n ByteBuffer.allocate = function(capacity, littleEndian, noAssert) {\r\n return new ByteBuffer(capacity, littleEndian, noAssert);\r\n };\r\n\r\n /**\r\n * Concatenates multiple ByteBuffers into one.\r\n * @param {!Array.<!ByteBuffer|!ArrayBuffer|!Uint8Array|string>} buffers Buffers to concatenate\r\n * @param {(string|boolean)=} encoding String encoding if `buffers` contains a string (\"base64\", \"hex\", \"binary\",\r\n * defaults to \"utf8\")\r\n * @param {boolean=} littleEndian Whether to use little or big endian byte order for the resulting ByteBuffer. Defaults\r\n * to {@link ByteBuffer.DEFAULT_ENDIAN}.\r\n * @param {boolean=} noAssert Whether to skip assertions of offsets and values for the resulting ByteBuffer. Defaults to\r\n * {@link ByteBuffer.DEFAULT_NOASSERT}.\r\n * @returns {!ByteBuffer} Concatenated ByteBuffer\r\n * @expose\r\n */\r\n ByteBuffer.concat = function(buffers, encoding, littleEndian, noAssert) {\r\n if (typeof encoding === 'boolean' || typeof encoding !== 'string') {\r\n noAssert = littleEndian;\r\n littleEndian = encoding;\r\n encoding = undefined;\r\n }\r\n var capacity = 0;\r\n for (var i=0, k=buffers.length, length; i<k; ++i) {\r\n if (!ByteBuffer.isByteBuffer(buffers[i]))\r\n buffers[i] = ByteBuffer.wrap(buffers[i], encoding);\r\n length = buffers[i].limit - buffers[i].offset;\r\n if (length > 0) capacity += length;\r\n }\r\n if (capacity === 0)\r\n return new ByteBuffer(0, littleEndian, noAssert);\r\n var bb = new ByteBuffer(capacity, littleEndian, noAssert),\r\n bi;\r\n i=0; while (i<k) {\r\n bi = buffers[i++];\r\n length = bi.limit - bi.offset;\r\n if (length <= 0) continue;\r\n bb.view.set(bi.view.subarray(bi.offset, bi.limit), bb.offset);\r\n bb.offset += length;\r\n }\r\n bb.limit = bb.offset;\r\n bb.offset = 0;\r\n return bb;\r\n };\r\n\r\n /**\r\n * Tests if the specified type is a ByteBuffer.\r\n * @param {*} bb ByteBuffer to test\r\n * @returns {boolean} `true` if it is a ByteBuffer, otherwise `false`\r\n * @expose\r\n */\r\n ByteBuffer.isByteBuffer = function(bb) {\r\n return (bb && bb[\"__isByteBuffer__\"]) === true;\r\n };\r\n /**\r\n * Gets the backing buffer type.\r\n * @returns {Function} `Buffer` under node.js, `ArrayBuffer` in the browser (classes)\r\n * @expose\r\n */\r\n ByteBuffer.type = function() {\r\n return ArrayBuffer;\r\n };\r\n /**\r\n * Wraps a buffer or a string. Sets the allocated ByteBuffer's {@link ByteBuffer#offset} to `0` and its\r\n * {@link ByteBuffer#limit} to the length of the wrapped data.\r\n * @param {!ByteBuffer|!ArrayBuffer|!Uint8Array|string|!Array.<number>} buffer Anything that can be wrapped\r\n * @param {(string|boolean)=} encoding String encoding if `buffer` is a string (\"base64\", \"hex\", \"binary\", defaults to\r\n * \"utf8\")\r\n * @param {boolean=} littleEndian Whether to use little or big endian byte order. Defaults to\r\n * {@link ByteBuffer.DEFAULT_ENDIAN}.\r\n * @param {boolean=} noAssert Whether to skip assertions of offsets and values. Defaults to\r\n * {@link ByteBuffer.DEFAULT_NOASSERT}.\r\n * @returns {!ByteBuffer} A ByteBuffer wrapping `buffer`\r\n * @expose\r\n */\r\n ByteBuffer.wrap = function(buffer, encoding, littleEndian, noAssert) {\r\n if (typeof encoding !== 'string') {\r\n noAssert = littleEndian;\r\n littleEndian = encoding;\r\n encoding = undefined;\r\n }\r\n if (typeof buffer === 'string') {\r\n if (typeof encoding === 'undefined')\r\n encoding = \"utf8\";\r\n switch (encoding) {\r\n case \"base64\":\r\n return ByteBuffer.fromBase64(buffer, littleEndian);\r\n case \"hex\":\r\n return ByteBuffer.fromHex(buffer, littleEndian);\r\n case \"binary\":\r\n return ByteBuffer.fromBinary(buffer, littleEndian);\r\n case \"utf8\":\r\n return ByteBuffer.fromUTF8(buffer, littleEndian);\r\n case \"debug\":\r\n return ByteBuffer.fromDebug(buffer, littleEndian);\r\n default:\r\n throw Error(\"Unsupported encoding: \"+encoding);\r\n }\r\n }\r\n if (buffer === null || typeof buffer !== 'object')\r\n throw TypeError(\"Illegal buffer\");\r\n var bb;\r\n if (ByteBuffer.isByteBuffer(buffer)) {\r\n bb = ByteBufferPrototype.clone.call(buffer);\r\n bb.markedOffset = -1;\r\n return bb;\r\n }\r\n if (buffer instanceof Uint8Array) { // Extract ArrayBuffer from Uint8Array\r\n bb = new ByteBuffer(0, littleEndian, noAssert);\r\n if (buffer.length > 0) { // Avoid references to more than one EMPTY_BUFFER\r\n bb.buffer = buffer.buffer;\r\n bb.offset = buffer.byteOffset;\r\n bb.limit = buffer.byteOffset + buffer.byteLength;\r\n bb.view = new Uint8Array(buffer.buffer);\r\n }\r\n } else if (buffer instanceof ArrayBuffer) { // Reuse ArrayBuffer\r\n bb = new ByteBuffer(0, littleEndian, noAssert);\r\n if (buffer.byteLength > 0) {\r\n bb.buffer = buffer;\r\n bb.offset = 0;\r\n bb.limit = buffer.byteLength;\r\n bb.view = buffer.byteLength > 0 ? new Uint8Array(buffer) : null;\r\n }\r\n } else if (Object.prototype.toString.call(buffer) === \"[object Array]\") { // Create from octets\r\n bb = new ByteBuffer(buffer.length, littleEndian, noAssert);\r\n bb.limit = buffer.length;\r\n for (var i=0; i<buffer.length; ++i)\r\n bb.view[i] = buffer[i];\r\n } else\r\n throw TypeError(\"Illegal buffer\"); // Otherwise fail\r\n return bb;\r\n };\r\n\r\n /**\r\n * Writes the array as a bitset.\r\n * @param {Array<boolean>} value Array of booleans to write\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `length` if omitted.\r\n * @returns {!ByteBuffer}\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeBitSet = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (!(value instanceof Array))\r\n throw TypeError(\"Illegal BitSet: Not an array\");\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n\r\n var start = offset,\r\n bits = value.length,\r\n bytes = (bits >> 3),\r\n bit = 0,\r\n k;\r\n\r\n offset += this.writeVarint32(bits,offset);\r\n\r\n while(bytes--) {\r\n k = (!!value[bit++] & 1) |\r\n ((!!value[bit++] & 1) << 1) |\r\n ((!!value[bit++] & 1) << 2) |\r\n ((!!value[bit++] & 1) << 3) |\r\n ((!!value[bit++] & 1) << 4) |\r\n ((!!value[bit++] & 1) << 5) |\r\n ((!!value[bit++] & 1) << 6) |\r\n ((!!value[bit++] & 1) << 7);\r\n this.writeByte(k,offset++);\r\n }\r\n\r\n if(bit < bits) {\r\n var m = 0; k = 0;\r\n while(bit < bits) k = k | ((!!value[bit++] & 1) << (m++));\r\n this.writeByte(k,offset++);\r\n }\r\n\r\n if (relative) {\r\n this.offset = offset;\r\n return this;\r\n }\r\n return offset - start;\r\n }\r\n\r\n /**\r\n * Reads a BitSet as an array of booleans.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `length` if omitted.\r\n * @returns {Array<boolean>\r\n * @expose\r\n */\r\n ByteBufferPrototype.readBitSet = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n\r\n var ret = this.readVarint32(offset),\r\n bits = ret.value,\r\n bytes = (bits >> 3),\r\n bit = 0,\r\n value = [],\r\n k;\r\n\r\n offset += ret.length;\r\n\r\n while(bytes--) {\r\n k = this.readByte(offset++);\r\n value[bit++] = !!(k & 0x01);\r\n value[bit++] = !!(k & 0x02);\r\n value[bit++] = !!(k & 0x04);\r\n value[bit++] = !!(k & 0x08);\r\n value[bit++] = !!(k & 0x10);\r\n value[bit++] = !!(k & 0x20);\r\n value[bit++] = !!(k & 0x40);\r\n value[bit++] = !!(k & 0x80);\r\n }\r\n\r\n if(bit < bits) {\r\n var m = 0;\r\n k = this.readByte(offset++);\r\n while(bit < bits) value[bit++] = !!((k >> (m++)) & 1);\r\n }\r\n\r\n if (relative) {\r\n this.offset = offset;\r\n }\r\n return value;\r\n }\r\n /**\r\n * Reads the specified number of bytes.\r\n * @param {number} length Number of bytes to read\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `length` if omitted.\r\n * @returns {!ByteBuffer}\r\n * @expose\r\n */\r\n ByteBufferPrototype.readBytes = function(length, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + length > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+length+\") <= \"+this.buffer.byteLength);\n }\r\n var slice = this.slice(offset, offset + length);\r\n if (relative) this.offset += length;\n return slice;\r\n };\r\n\r\n /**\r\n * Writes a payload of bytes. This is an alias of {@link ByteBuffer#append}.\r\n * @function\r\n * @param {!ByteBuffer|!ArrayBuffer|!Uint8Array|string} source Data to write. If `source` is a ByteBuffer, its offsets\r\n * will be modified according to the performed read operation.\r\n * @param {(string|number)=} encoding Encoding if `data` is a string (\"base64\", \"hex\", \"binary\", defaults to \"utf8\")\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * written if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeBytes = ByteBufferPrototype.append;\r\n\r\n // types/ints/int8\r\n\r\n /**\r\n * Writes an 8bit signed integer.\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and advance {@link ByteBuffer#offset} by `1` if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeInt8 = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof value !== 'number' || value % 1 !== 0)\n throw TypeError(\"Illegal value: \"+value+\" (not an integer)\");\n value |= 0;\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n offset += 1;\n var capacity0 = this.buffer.byteLength;\n if (offset > capacity0)\n this.resize((capacity0 *= 2) > offset ? capacity0 : offset);\n offset -= 1;\n this.view[offset] = value;\r\n if (relative) this.offset += 1;\n return this;\r\n };\r\n\r\n /**\r\n * Writes an 8bit signed integer. This is an alias of {@link ByteBuffer#writeInt8}.\r\n * @function\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and advance {@link ByteBuffer#offset} by `1` if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeByte = ByteBufferPrototype.writeInt8;\r\n\r\n /**\r\n * Reads an 8bit signed integer.\r\n * @param {number=} offset Offset to read from. Will use and advance {@link ByteBuffer#offset} by `1` if omitted.\r\n * @returns {number} Value read\r\n * @expose\r\n */\r\n ByteBufferPrototype.readInt8 = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 1 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+1+\") <= \"+this.buffer.byteLength);\n }\r\n var value = this.view[offset];\r\n if ((value & 0x80) === 0x80) value = -(0xFF - value + 1); // Cast to signed\r\n if (relative) this.offset += 1;\n return value;\r\n };\r\n\r\n /**\r\n * Reads an 8bit signed integer. This is an alias of {@link ByteBuffer#readInt8}.\r\n * @function\r\n * @param {number=} offset Offset to read from. Will use and advance {@link ByteBuffer#offset} by `1` if omitted.\r\n * @returns {number} Value read\r\n * @expose\r\n */\r\n ByteBufferPrototype.readByte = ByteBufferPrototype.readInt8;\r\n\r\n /**\r\n * Writes an 8bit unsigned integer.\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and advance {@link ByteBuffer#offset} by `1` if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeUint8 = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof value !== 'number' || value % 1 !== 0)\n throw TypeError(\"Illegal value: \"+value+\" (not an integer)\");\n value >>>= 0;\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n offset += 1;\n var capacity1 = this.buffer.byteLength;\n if (offset > capacity1)\n this.resize((capacity1 *= 2) > offset ? capacity1 : offset);\n offset -= 1;\n this.view[offset] = value;\r\n if (relative) this.offset += 1;\n return this;\r\n };\r\n\r\n /**\r\n * Writes an 8bit unsigned integer. This is an alias of {@link ByteBuffer#writeUint8}.\r\n * @function\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and advance {@link ByteBuffer#offset} by `1` if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeUInt8 = ByteBufferPrototype.writeUint8;\r\n\r\n /**\r\n * Reads an 8bit unsigned integer.\r\n * @param {number=} offset Offset to read from. Will use and advance {@link ByteBuffer#offset} by `1` if omitted.\r\n * @returns {number} Value read\r\n * @expose\r\n */\r\n ByteBufferPrototype.readUint8 = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 1 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+1+\") <= \"+this.buffer.byteLength);\n }\r\n var value = this.view[offset];\r\n if (relative) this.offset += 1;\n return value;\r\n };\r\n\r\n /**\r\n * Reads an 8bit unsigned integer. This is an alias of {@link ByteBuffer#readUint8}.\r\n * @function\r\n * @param {number=} offset Offset to read from. Will use and advance {@link ByteBuffer#offset} by `1` if omitted.\r\n * @returns {number} Value read\r\n * @expose\r\n */\r\n ByteBufferPrototype.readUInt8 = ByteBufferPrototype.readUint8;\r\n\r\n // types/ints/int16\r\n\r\n /**\r\n * Writes a 16bit signed integer.\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and advance {@link ByteBuffer#offset} by `2` if omitted.\r\n * @throws {TypeError} If `offset` or `value` is not a valid number\r\n * @throws {RangeError} If `offset` is out of bounds\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeInt16 = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof value !== 'number' || value % 1 !== 0)\n throw TypeError(\"Illegal value: \"+value+\" (not an integer)\");\n value |= 0;\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n offset += 2;\n var capacity2 = this.buffer.byteLength;\n if (offset > capacity2)\n this.resize((capacity2 *= 2) > offset ? capacity2 : offset);\n offset -= 2;\n if (this.littleEndian) {\r\n this.view[offset+1] = (value & 0xFF00) >>> 8;\r\n this.view[offset ] = value & 0x00FF;\r\n } else {\r\n this.view[offset] = (value & 0xFF00) >>> 8;\r\n this.view[offset+1] = value & 0x00FF;\r\n }\r\n if (relative) this.offset += 2;\n return this;\r\n };\r\n\r\n /**\r\n * Writes a 16bit signed integer. This is an alias of {@link ByteBuffer#writeInt16}.\r\n * @function\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and advance {@link ByteBuffer#offset} by `2` if omitted.\r\n * @throws {TypeError} If `offset` or `value` is not a valid number\r\n * @throws {RangeError} If `offset` is out of bounds\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeShort = ByteBufferPrototype.writeInt16;\r\n\r\n /**\r\n * Reads a 16bit signed integer.\r\n * @param {number=} offset Offset to read from. Will use and advance {@link ByteBuffer#offset} by `2` if omitted.\r\n * @returns {number} Value read\r\n * @throws {TypeError} If `offset` is not a valid number\r\n * @throws {RangeError} If `offset` is out of bounds\r\n * @expose\r\n */\r\n ByteBufferPrototype.readInt16 = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 2 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+2+\") <= \"+this.buffer.byteLength);\n }\r\n var value = 0;\r\n if (this.littleEndian) {\r\n value = this.view[offset ];\r\n value |= this.view[offset+1] << 8;\r\n } else {\r\n value = this.view[offset ] << 8;\r\n value |= this.view[offset+1];\r\n }\r\n if ((value & 0x8000) === 0x8000) value = -(0xFFFF - value + 1); // Cast to signed\r\n if (relative) this.offset += 2;\n return value;\r\n };\r\n\r\n /**\r\n * Reads a 16bit signed integer. This is an alias of {@link ByteBuffer#readInt16}.\r\n * @function\r\n * @param {number=} offset Offset to read from. Will use and advance {@link ByteBuffer#offset} by `2` if omitted.\r\n * @returns {number} Value read\r\n * @throws {TypeError} If `offset` is not a valid number\r\n * @throws {RangeError} If `offset` is out of bounds\r\n * @expose\r\n */\r\n ByteBufferPrototype.readShort = ByteBufferPrototype.readInt16;\r\n\r\n /**\r\n * Writes a 16bit unsigned integer.\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and advance {@link ByteBuffer#offset} by `2` if omitted.\r\n * @throws {TypeError} If `offset` or `value` is not a valid number\r\n * @throws {RangeError} If `offset` is out of bounds\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeUint16 = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof value !== 'number' || value % 1 !== 0)\n throw TypeError(\"Illegal value: \"+value+\" (not an integer)\");\n value >>>= 0;\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n offset += 2;\n var capacity3 = this.buffer.byteLength;\n if (offset > capacity3)\n this.resize((capacity3 *= 2) > offset ? capacity3 : offset);\n offset -= 2;\n if (this.littleEndian) {\r\n this.view[offset+1] = (value & 0xFF00) >>> 8;\r\n this.view[offset ] = value & 0x00FF;\r\n } else {\r\n this.view[offset] = (value & 0xFF00) >>> 8;\r\n this.view[offset+1] = value & 0x00FF;\r\n }\r\n if (relative) this.offset += 2;\n return this;\r\n };\r\n\r\n /**\r\n * Writes a 16bit unsigned integer. This is an alias of {@link ByteBuffer#writeUint16}.\r\n * @function\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and advance {@link ByteBuffer#offset} by `2` if omitted.\r\n * @throws {TypeError} If `offset` or `value` is not a valid number\r\n * @throws {RangeError} If `offset` is out of bounds\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeUInt16 = ByteBufferPrototype.writeUint16;\r\n\r\n /**\r\n * Reads a 16bit unsigned integer.\r\n * @param {number=} offset Offset to read from. Will use and advance {@link ByteBuffer#offset} by `2` if omitted.\r\n * @returns {number} Value read\r\n * @throws {TypeError} If `offset` is not a valid number\r\n * @throws {RangeError} If `offset` is out of bounds\r\n * @expose\r\n */\r\n ByteBufferPrototype.readUint16 = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 2 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+2+\") <= \"+this.buffer.byteLength);\n }\r\n var value = 0;\r\n if (this.littleEndian) {\r\n value = this.view[offset ];\r\n value |= this.view[offset+1] << 8;\r\n } else {\r\n value = this.view[offset ] << 8;\r\n value |= this.view[offset+1];\r\n }\r\n if (relative) this.offset += 2;\n return value;\r\n };\r\n\r\n /**\r\n * Reads a 16bit unsigned integer. This is an alias of {@link ByteBuffer#readUint16}.\r\n * @function\r\n * @param {number=} offset Offset to read from. Will use and advance {@link ByteBuffer#offset} by `2` if omitted.\r\n * @returns {number} Value read\r\n * @throws {TypeError} If `offset` is not a valid number\r\n * @throws {RangeError} If `offset` is out of bounds\r\n * @expose\r\n */\r\n ByteBufferPrototype.readUInt16 = ByteBufferPrototype.readUint16;\r\n\r\n // types/ints/int32\r\n\r\n /**\r\n * Writes a 32bit signed integer.\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `4` if omitted.\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeInt32 = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof value !== 'number' || value % 1 !== 0)\n throw TypeError(\"Illegal value: \"+value+\" (not an integer)\");\n value |= 0;\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n offset += 4;\n var capacity4 = this.buffer.byteLength;\n if (offset > capacity4)\n this.resize((capacity4 *= 2) > offset ? capacity4 : offset);\n offset -= 4;\n if (this.littleEndian) {\n this.view[offset+3] = (value >>> 24) & 0xFF;\n this.view[offset+2] = (value >>> 16) & 0xFF;\n this.view[offset+1] = (value >>> 8) & 0xFF;\n this.view[offset ] = value & 0xFF;\n } else {\n this.view[offset ] = (value >>> 24) & 0xFF;\n this.view[offset+1] = (value >>> 16) & 0xFF;\n this.view[offset+2] = (value >>> 8) & 0xFF;\n this.view[offset+3] = value & 0xFF;\n }\n if (relative) this.offset += 4;\n return this;\r\n };\r\n\r\n /**\r\n * Writes a 32bit signed integer. This is an alias of {@link ByteBuffer#writeInt32}.\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `4` if omitted.\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeInt = ByteBufferPrototype.writeInt32;\r\n\r\n /**\r\n * Reads a 32bit signed integer.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `4` if omitted.\r\n * @returns {number} Value read\r\n * @expose\r\n */\r\n ByteBufferPrototype.readInt32 = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 4 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+4+\") <= \"+this.buffer.byteLength);\n }\r\n var value = 0;\r\n if (this.littleEndian) {\n value = this.view[offset+2] << 16;\n value |= this.view[offset+1] << 8;\n value |= this.view[offset ];\n value += this.view[offset+3] << 24 >>> 0;\n } else {\n value = this.view[offset+1] << 16;\n value |= this.view[offset+2] << 8;\n value |= this.view[offset+3];\n value += this.view[offset ] << 24 >>> 0;\n }\n value |= 0; // Cast to signed\r\n if (relative) this.offset += 4;\n return value;\r\n };\r\n\r\n /**\r\n * Reads a 32bit signed integer. This is an alias of {@link ByteBuffer#readInt32}.\r\n * @param {number=} offset Offset to read from. Will use and advance {@link ByteBuffer#offset} by `4` if omitted.\r\n * @returns {number} Value read\r\n * @expose\r\n */\r\n ByteBufferPrototype.readInt = ByteBufferPrototype.readInt32;\r\n\r\n /**\r\n * Writes a 32bit unsigned integer.\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `4` if omitted.\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeUint32 = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof value !== 'number' || value % 1 !== 0)\n throw TypeError(\"Illegal value: \"+value+\" (not an integer)\");\n value >>>= 0;\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n offset += 4;\n var capacity5 = this.buffer.byteLength;\n if (offset > capacity5)\n this.resize((capacity5 *= 2) > offset ? capacity5 : offset);\n offset -= 4;\n if (this.littleEndian) {\n this.view[offset+3] = (value >>> 24) & 0xFF;\n this.view[offset+2] = (value >>> 16) & 0xFF;\n this.view[offset+1] = (value >>> 8) & 0xFF;\n this.view[offset ] = value & 0xFF;\n } else {\n this.view[offset ] = (value >>> 24) & 0xFF;\n this.view[offset+1] = (value >>> 16) & 0xFF;\n this.view[offset+2] = (value >>> 8) & 0xFF;\n this.view[offset+3] = value & 0xFF;\n }\n if (relative) this.offset += 4;\n return this;\r\n };\r\n\r\n /**\r\n * Writes a 32bit unsigned integer. This is an alias of {@link ByteBuffer#writeUint32}.\r\n * @function\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `4` if omitted.\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeUInt32 = ByteBufferPrototype.writeUint32;\r\n\r\n /**\r\n * Reads a 32bit unsigned integer.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `4` if omitted.\r\n * @returns {number} Value read\r\n * @expose\r\n */\r\n ByteBufferPrototype.readUint32 = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 4 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+4+\") <= \"+this.buffer.byteLength);\n }\r\n var value = 0;\r\n if (this.littleEndian) {\n value = this.view[offset+2] << 16;\n value |= this.view[offset+1] << 8;\n value |= this.view[offset ];\n value += this.view[offset+3] << 24 >>> 0;\n } else {\n value = this.view[offset+1] << 16;\n value |= this.view[offset+2] << 8;\n value |= this.view[offset+3];\n value += this.view[offset ] << 24 >>> 0;\n }\n if (relative) this.offset += 4;\n return value;\r\n };\r\n\r\n /**\r\n * Reads a 32bit unsigned integer. This is an alias of {@link ByteBuffer#readUint32}.\r\n * @function\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `4` if omitted.\r\n * @returns {number} Value read\r\n * @expose\r\n */\r\n ByteBufferPrototype.readUInt32 = ByteBufferPrototype.readUint32;\r\n\r\n // types/ints/int64\r\n\r\n if (Long) {\r\n\r\n /**\r\n * Writes a 64bit signed integer.\r\n * @param {number|!Long} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `8` if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeInt64 = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof value === 'number')\n value = Long.fromNumber(value);\n else if (typeof value === 'string')\n value = Long.fromString(value);\n else if (!(value && value instanceof Long))\n throw TypeError(\"Illegal value: \"+value+\" (not an integer or Long)\");\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n if (typeof value === 'number')\n value = Long.fromNumber(value);\n else if (typeof value === 'string')\n value = Long.fromString(value);\n offset += 8;\n var capacity6 = this.buffer.byteLength;\n if (offset > capacity6)\n this.resize((capacity6 *= 2) > offset ? capacity6 : offset);\n offset -= 8;\n var lo = value.low,\r\n hi = value.high;\r\n if (this.littleEndian) {\r\n this.view[offset+3] = (lo >>> 24) & 0xFF;\n this.view[offset+2] = (lo >>> 16) & 0xFF;\n this.view[offset+1] = (lo >>> 8) & 0xFF;\n this.view[offset ] = lo & 0xFF;\n offset += 4;\r\n this.view[offset+3] = (hi >>> 24) & 0xFF;\n this.view[offset+2] = (hi >>> 16) & 0xFF;\n this.view[offset+1] = (hi >>> 8) & 0xFF;\n this.view[offset ] = hi & 0xFF;\n } else {\r\n this.view[offset ] = (hi >>> 24) & 0xFF;\n this.view[offset+1] = (hi >>> 16) & 0xFF;\n this.view[offset+2] = (hi >>> 8) & 0xFF;\n this.view[offset+3] = hi & 0xFF;\n offset += 4;\r\n this.view[offset ] = (lo >>> 24) & 0xFF;\n this.view[offset+1] = (lo >>> 16) & 0xFF;\n this.view[offset+2] = (lo >>> 8) & 0xFF;\n this.view[offset+3] = lo & 0xFF;\n }\r\n if (relative) this.offset += 8;\n return this;\r\n };\r\n\r\n /**\r\n * Writes a 64bit signed integer. This is an alias of {@link ByteBuffer#writeInt64}.\r\n * @param {number|!Long} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `8` if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeLong = ByteBufferPrototype.writeInt64;\r\n\r\n /**\r\n * Reads a 64bit signed integer.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `8` if omitted.\r\n * @returns {!Long}\r\n * @expose\r\n */\r\n ByteBufferPrototype.readInt64 = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 8 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+8+\") <= \"+this.buffer.byteLength);\n }\r\n var lo = 0,\r\n hi = 0;\r\n if (this.littleEndian) {\r\n lo = this.view[offset+2] << 16;\n lo |= this.view[offset+1] << 8;\n lo |= this.view[offset ];\n lo += this.view[offset+3] << 24 >>> 0;\n offset += 4;\r\n hi = this.view[offset+2] << 16;\n hi |= this.view[offset+1] << 8;\n hi |= this.view[offset ];\n hi += this.view[offset+3] << 24 >>> 0;\n } else {\r\n hi = this.view[offset+1] << 16;\n hi |= this.view[offset+2] << 8;\n hi |= this.view[offset+3];\n hi += this.view[offset ] << 24 >>> 0;\n offset += 4;\r\n lo = this.view[offset+1] << 16;\n lo |= this.view[offset+2] << 8;\n lo |= this.view[offset+3];\n lo += this.view[offset ] << 24 >>> 0;\n }\r\n var value = new Long(lo, hi, false);\r\n if (relative) this.offset += 8;\n return value;\r\n };\r\n\r\n /**\r\n * Reads a 64bit signed integer. This is an alias of {@link ByteBuffer#readInt64}.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `8` if omitted.\r\n * @returns {!Long}\r\n * @expose\r\n */\r\n ByteBufferPrototype.readLong = ByteBufferPrototype.readInt64;\r\n\r\n /**\r\n * Writes a 64bit unsigned integer.\r\n * @param {number|!Long} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `8` if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeUint64 = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof value === 'number')\n value = Long.fromNumber(value);\n else if (typeof value === 'string')\n value = Long.fromString(value);\n else if (!(value && value instanceof Long))\n throw TypeError(\"Illegal value: \"+value+\" (not an integer or Long)\");\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n if (typeof value === 'number')\n value = Long.fromNumber(value);\n else if (typeof value === 'string')\n value = Long.fromString(value);\n offset += 8;\n var capacity7 = this.buffer.byteLength;\n if (offset > capacity7)\n this.resize((capacity7 *= 2) > offset ? capacity7 : offset);\n offset -= 8;\n var lo = value.low,\r\n hi = value.high;\r\n if (this.littleEndian) {\r\n this.view[offset+3] = (lo >>> 24) & 0xFF;\n this.view[offset+2] = (lo >>> 16) & 0xFF;\n this.view[offset+1] = (lo >>> 8) & 0xFF;\n this.view[offset ] = lo & 0xFF;\n offset += 4;\r\n this.view[offset+3] = (hi >>> 24) & 0xFF;\n this.view[offset+2] = (hi >>> 16) & 0xFF;\n this.view[offset+1] = (hi >>> 8) & 0xFF;\n this.view[offset ] = hi & 0xFF;\n } else {\r\n this.view[offset ] = (hi >>> 24) & 0xFF;\n this.view[offset+1] = (hi >>> 16) & 0xFF;\n this.view[offset+2] = (hi >>> 8) & 0xFF;\n this.view[offset+3] = hi & 0xFF;\n offset += 4;\r\n this.view[offset ] = (lo >>> 24) & 0xFF;\n this.view[offset+1] = (lo >>> 16) & 0xFF;\n this.view[offset+2] = (lo >>> 8) & 0xFF;\n this.view[offset+3] = lo & 0xFF;\n }\r\n if (relative) this.offset += 8;\n return this;\r\n };\r\n\r\n /**\r\n * Writes a 64bit unsigned integer. This is an alias of {@link ByteBuffer#writeUint64}.\r\n * @function\r\n * @param {number|!Long} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `8` if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeUInt64 = ByteBufferPrototype.writeUint64;\r\n\r\n /**\r\n * Reads a 64bit unsigned integer.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `8` if omitted.\r\n * @returns {!Long}\r\n * @expose\r\n */\r\n ByteBufferPrototype.readUint64 = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 8 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+8+\") <= \"+this.buffer.byteLength);\n }\r\n var lo = 0,\r\n hi = 0;\r\n if (this.littleEndian) {\r\n lo = this.view[offset+2] << 16;\n lo |= this.view[offset+1] << 8;\n lo |= this.view[offset ];\n lo += this.view[offset+3] << 24 >>> 0;\n offset += 4;\r\n hi = this.view[offset+2] << 16;\n hi |= this.view[offset+1] << 8;\n hi |= this.view[offset ];\n hi += this.view[offset+3] << 24 >>> 0;\n } else {\r\n hi = this.view[offset+1] << 16;\n hi |= this.view[offset+2] << 8;\n hi |= this.view[offset+3];\n hi += this.view[offset ] << 24 >>> 0;\n offset += 4;\r\n lo = this.view[offset+1] << 16;\n lo |= this.view[offset+2] << 8;\n lo |= this.view[offset+3];\n lo += this.view[offset ] << 24 >>> 0;\n }\r\n var value = new Long(lo, hi, true);\r\n if (relative) this.offset += 8;\n return value;\r\n };\r\n\r\n /**\r\n * Reads a 64bit unsigned integer. This is an alias of {@link ByteBuffer#readUint64}.\r\n * @function\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `8` if omitted.\r\n * @returns {!Long}\r\n * @expose\r\n */\r\n ByteBufferPrototype.readUInt64 = ByteBufferPrototype.readUint64;\r\n\r\n } // Long\r\n\r\n\r\n // types/floats/float32\r\n\r\n /*\r\n ieee754 - https://github.com/feross/ieee754\r\n\r\n The MIT License (MIT)\r\n\r\n Copyright (c) Feross Aboukhadijeh\r\n\r\n Permission is hereby granted, free of charge, to any person obtaining a copy\r\n of this software and associated documentation files (the \"Software\"), to deal\r\n in the Software without restriction, including without limitation the rights\r\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n copies of the Software, and to permit persons to whom the Software is\r\n furnished to do so, subject to the following conditions:\r\n\r\n The above copyright notice and this permission notice shall be included in\r\n all copies or substantial portions of the Software.\r\n\r\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\r\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n THE SOFTWARE.\r\n */\r\n\r\n /**\r\n * Reads an IEEE754 float from a byte array.\r\n * @param {!Array} buffer\r\n * @param {number} offset\r\n * @param {boolean} isLE\r\n * @param {number} mLen\r\n * @param {number} nBytes\r\n * @returns {number}\r\n * @inner\r\n */\r\n function ieee754_read(buffer, offset, isLE, mLen, nBytes) {\r\n var e, m,\r\n eLen = nBytes * 8 - mLen - 1,\r\n eMax = (1 << eLen) - 1,\r\n eBias = eMax >> 1,\r\n nBits = -7,\r\n i = isLE ? (nBytes - 1) : 0,\r\n d = isLE ? -1 : 1,\r\n s = buffer[offset + i];\r\n\r\n i += d;\r\n\r\n e = s & ((1 << (-nBits)) - 1);\r\n s >>= (-nBits);\r\n nBits += eLen;\r\n for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}\r\n\r\n m = e & ((1 << (-nBits)) - 1);\r\n e >>= (-nBits);\r\n nBits += mLen;\r\n for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}\r\n\r\n if (e === 0) {\r\n e = 1 - eBias;\r\n } else if (e === eMax) {\r\n return m ? NaN : ((s ? -1 : 1) * Infinity);\r\n } else {\r\n m = m + Math.pow(2, mLen);\r\n e = e - eBias;\r\n }\r\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen);\r\n }\r\n\r\n /**\r\n * Writes an IEEE754 float to a byte array.\r\n * @param {!Array} buffer\r\n * @param {number} value\r\n * @param {number} offset\r\n * @param {boolean} isLE\r\n * @param {number} mLen\r\n * @param {number} nBytes\r\n * @inner\r\n */\r\n function ieee754_write(buffer, value, offset, isLE, mLen, nBytes) {\r\n var e, m, c,\r\n eLen = nBytes * 8 - mLen - 1,\r\n eMax = (1 << eLen) - 1,\r\n eBias = eMax >> 1,\r\n rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0),\r\n i = isLE ? 0 : (nBytes - 1),\r\n d = isLE ? 1 : -1,\r\n s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0;\r\n\r\n value = Math.abs(value);\r\n\r\n if (isNaN(value) || value === Infinity) {\r\n m = isNaN(value) ? 1 : 0;\r\n e = eMax;\r\n } else {\r\n e = Math.floor(Math.log(value) / Math.LN2);\r\n if (value * (c = Math.pow(2, -e)) < 1) {\r\n e--;\r\n c *= 2;\r\n }\r\n if (e + eBias >= 1) {\r\n value += rt / c;\r\n } else {\r\n value += rt * Math.pow(2, 1 - eBias);\r\n }\r\n if (value * c >= 2) {\r\n e++;\r\n c /= 2;\r\n }\r\n\r\n if (e + eBias >= eMax) {\r\n m = 0;\r\n e = eMax;\r\n } else if (e + eBias >= 1) {\r\n m = (value * c - 1) * Math.pow(2, mLen);\r\n e = e + eBias;\r\n } else {\r\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen);\r\n e = 0;\r\n }\r\n }\r\n\r\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\r\n\r\n e = (e << mLen) | m;\r\n eLen += mLen;\r\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\r\n\r\n buffer[offset + i - d] |= s * 128;\r\n }\r\n\r\n /**\r\n * Writes a 32bit float.\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `4` if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeFloat32 = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof value !== 'number')\r\n throw TypeError(\"Illegal value: \"+value+\" (not a number)\");\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n offset += 4;\n var capacity8 = this.buffer.byteLength;\n if (offset > capacity8)\n this.resize((capacity8 *= 2) > offset ? capacity8 : offset);\n offset -= 4;\n ieee754_write(this.view, value, offset, this.littleEndian, 23, 4);\r\n if (relative) this.offset += 4;\n return this;\r\n };\r\n\r\n /**\r\n * Writes a 32bit float. This is an alias of {@link ByteBuffer#writeFloat32}.\r\n * @function\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `4` if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeFloat = ByteBufferPrototype.writeFloat32;\r\n\r\n /**\r\n * Reads a 32bit float.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `4` if omitted.\r\n * @returns {number}\r\n * @expose\r\n */\r\n ByteBufferPrototype.readFloat32 = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 4 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+4+\") <= \"+this.buffer.byteLength);\n }\r\n var value = ieee754_read(this.view, offset, this.littleEndian, 23, 4);\r\n if (relative) this.offset += 4;\n return value;\r\n };\r\n\r\n /**\r\n * Reads a 32bit float. This is an alias of {@link ByteBuffer#readFloat32}.\r\n * @function\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `4` if omitted.\r\n * @returns {number}\r\n * @expose\r\n */\r\n ByteBufferPrototype.readFloat = ByteBufferPrototype.readFloat32;\r\n\r\n // types/floats/float64\r\n\r\n /**\r\n * Writes a 64bit float.\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `8` if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeFloat64 = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof value !== 'number')\r\n throw TypeError(\"Illegal value: \"+value+\" (not a number)\");\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n offset += 8;\n var capacity9 = this.buffer.byteLength;\n if (offset > capacity9)\n this.resize((capacity9 *= 2) > offset ? capacity9 : offset);\n offset -= 8;\n ieee754_write(this.view, value, offset, this.littleEndian, 52, 8);\r\n if (relative) this.offset += 8;\n return this;\r\n };\r\n\r\n /**\r\n * Writes a 64bit float. This is an alias of {@link ByteBuffer#writeFloat64}.\r\n * @function\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `8` if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeDouble = ByteBufferPrototype.writeFloat64;\r\n\r\n /**\r\n * Reads a 64bit float.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `8` if omitted.\r\n * @returns {number}\r\n * @expose\r\n */\r\n ByteBufferPrototype.readFloat64 = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 8 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+8+\") <= \"+this.buffer.byteLength);\n }\r\n var value = ieee754_read(this.view, offset, this.littleEndian, 52, 8);\r\n if (relative) this.offset += 8;\n return value;\r\n };\r\n\r\n /**\r\n * Reads a 64bit float. This is an alias of {@link ByteBuffer#readFloat64}.\r\n * @function\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `8` if omitted.\r\n * @returns {number}\r\n * @expose\r\n */\r\n ByteBufferPrototype.readDouble = ByteBufferPrototype.readFloat64;\r\n\r\n\r\n // types/varints/varint32\r\n\r\n /**\r\n * Maximum number of bytes required to store a 32bit base 128 variable-length integer.\r\n * @type {number}\r\n * @const\r\n * @expose\r\n */\r\n ByteBuffer.MAX_VARINT32_BYTES = 5;\r\n\r\n /**\r\n * Calculates the actual number of bytes required to store a 32bit base 128 variable-length integer.\r\n * @param {number} value Value to encode\r\n * @returns {number} Number of bytes required. Capped to {@link ByteBuffer.MAX_VARINT32_BYTES}\r\n * @expose\r\n */\r\n ByteBuffer.calculateVarint32 = function(value) {\r\n // ref: src/google/protobuf/io/coded_stream.cc\r\n value = value >>> 0;\r\n if (value < 1 << 7 ) return 1;\r\n else if (value < 1 << 14) return 2;\r\n else if (value < 1 << 21) return 3;\r\n else if (value < 1 << 28) return 4;\r\n else return 5;\r\n };\r\n\r\n /**\r\n * Zigzag encodes a signed 32bit integer so that it can be effectively used with varint encoding.\r\n * @param {number} n Signed 32bit integer\r\n * @returns {number} Unsigned zigzag encoded 32bit integer\r\n * @expose\r\n */\r\n ByteBuffer.zigZagEncode32 = function(n) {\r\n return (((n |= 0) << 1) ^ (n >> 31)) >>> 0; // ref: src/google/protobuf/wire_format_lite.h\r\n };\r\n\r\n /**\r\n * Decodes a zigzag encoded signed 32bit integer.\r\n * @param {number} n Unsigned zigzag encoded 32bit integer\r\n * @returns {number} Signed 32bit integer\r\n * @expose\r\n */\r\n ByteBuffer.zigZagDecode32 = function(n) {\r\n return ((n >>> 1) ^ -(n & 1)) | 0; // // ref: src/google/protobuf/wire_format_lite.h\r\n };\r\n\r\n /**\r\n * Writes a 32bit base 128 variable-length integer.\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * written if omitted.\r\n * @returns {!ByteBuffer|number} this if `offset` is omitted, else the actual number of bytes written\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeVarint32 = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof value !== 'number' || value % 1 !== 0)\n throw TypeError(\"Illegal value: \"+value+\" (not an integer)\");\n value |= 0;\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n var size = ByteBuffer.calculateVarint32(value),\r\n b;\r\n offset += size;\n var capacity10 = this.buffer.byteLength;\n if (offset > capacity10)\n this.resize((capacity10 *= 2) > offset ? capacity10 : offset);\n offset -= size;\n value >>>= 0;\r\n while (value >= 0x80) {\r\n b = (value & 0x7f) | 0x80;\r\n this.view[offset++] = b;\r\n value >>>= 7;\r\n }\r\n this.view[offset++] = value;\r\n if (relative) {\r\n this.offset = offset;\r\n return this;\r\n }\r\n return size;\r\n };\r\n\r\n /**\r\n * Writes a zig-zag encoded (signed) 32bit base 128 variable-length integer.\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * written if omitted.\r\n * @returns {!ByteBuffer|number} this if `offset` is omitted, else the actual number of bytes written\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeVarint32ZigZag = function(value, offset) {\r\n return this.writeVarint32(ByteBuffer.zigZagEncode32(value), offset);\r\n };\r\n\r\n /**\r\n * Reads a 32bit base 128 variable-length integer.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * written if omitted.\r\n * @returns {number|!{value: number, length: number}} The value read if offset is omitted, else the value read\r\n * and the actual number of bytes read.\r\n * @throws {Error} If it's not a valid varint. Has a property `truncated = true` if there is not enough data available\r\n * to fully decode the varint.\r\n * @expose\r\n */\r\n ByteBufferPrototype.readVarint32 = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 1 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+1+\") <= \"+this.buffer.byteLength);\n }\r\n var c = 0,\r\n value = 0 >>> 0,\r\n b;\r\n do {\r\n if (!this.noAssert && offset > this.limit) {\r\n var err = Error(\"Truncated\");\r\n err['truncated'] = true;\r\n throw err;\r\n }\r\n b = this.view[offset++];\r\n if (c < 5)\r\n value |= (b & 0x7f) << (7*c);\r\n ++c;\r\n } while ((b & 0x80) !== 0);\r\n value |= 0;\r\n if (relative) {\r\n this.offset = offset;\r\n return value;\r\n }\r\n return {\r\n \"value\": value,\r\n \"length\": c\r\n };\r\n };\r\n\r\n /**\r\n * Reads a zig-zag encoded (signed) 32bit base 128 variable-length integer.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * written if omitted.\r\n * @returns {number|!{value: number, length: number}} The value read if offset is omitted, else the value read\r\n * and the actual number of bytes read.\r\n * @throws {Error} If it's not a valid varint\r\n * @expose\r\n */\r\n ByteBufferPrototype.readVarint32ZigZag = function(offset) {\r\n var val = this.readVarint32(offset);\r\n if (typeof val === 'object')\r\n val[\"value\"] = ByteBuffer.zigZagDecode32(val[\"value\"]);\r\n else\r\n val = ByteBuffer.zigZagDecode32(val);\r\n return val;\r\n };\r\n\r\n // types/varints/varint64\r\n\r\n if (Long) {\r\n\r\n /**\r\n * Maximum number of bytes required to store a 64bit base 128 variable-length integer.\r\n * @type {number}\r\n * @const\r\n * @expose\r\n */\r\n ByteBuffer.MAX_VARINT64_BYTES = 10;\r\n\r\n /**\r\n * Calculates the actual number of bytes required to store a 64bit base 128 variable-length integer.\r\n * @param {number|!Long} value Value to encode\r\n * @returns {number} Number of bytes required. Capped to {@link ByteBuffer.MAX_VARINT64_BYTES}\r\n * @expose\r\n */\r\n ByteBuffer.calculateVarint64 = function(value) {\r\n if (typeof value === 'number')\n value = Long.fromNumber(value);\n else if (typeof value === 'string')\n value = Long.fromString(value);\n // ref: src/google/protobuf/io/coded_stream.cc\r\n var part0 = value.toInt() >>> 0,\r\n part1 = value.shiftRightUnsigned(28).toInt() >>> 0,\r\n part2 = value.shiftRightUnsigned(56).toInt() >>> 0;\r\n if (part2 == 0) {\r\n if (part1 == 0) {\r\n if (part0 < 1 << 14)\r\n return part0 < 1 << 7 ? 1 : 2;\r\n else\r\n return part0 < 1 << 21 ? 3 : 4;\r\n } else {\r\n if (part1 < 1 << 14)\r\n return part1 < 1 << 7 ? 5 : 6;\r\n else\r\n return part1 < 1 << 21 ? 7 : 8;\r\n }\r\n } else\r\n return part2 < 1 << 7 ? 9 : 10;\r\n };\r\n\r\n /**\r\n * Zigzag encodes a signed 64bit integer so that it can be effectively used with varint encoding.\r\n * @param {number|!Long} value Signed long\r\n * @returns {!Long} Unsigned zigzag encoded long\r\n * @expose\r\n */\r\n ByteBuffer.zigZagEncode64 = function(value) {\r\n if (typeof value === 'number')\n value = Long.fromNumber(value, false);\n else if (typeof value === 'string')\n value = Long.fromString(value, false);\n else if (value.unsigned !== false) value = value.toSigned();\n // ref: src/google/protobuf/wire_format_lite.h\r\n return value.shiftLeft(1).xor(value.shiftRight(63)).toUnsigned();\r\n };\r\n\r\n /**\r\n * Decodes a zigzag encoded signed 64bit integer.\r\n * @param {!Long|number} value Unsigned zigzag encoded long or JavaScript number\r\n * @returns {!Long} Signed long\r\n * @expose\r\n */\r\n ByteBuffer.zigZagDecode64 = function(value) {\r\n if (typeof value === 'number')\n value = Long.fromNumber(value, false);\n else if (typeof value === 'string')\n value = Long.fromString(value, false);\n else if (value.unsigned !== false) value = value.toSigned();\n // ref: src/google/protobuf/wire_format_lite.h\r\n return value.shiftRightUnsigned(1).xor(value.and(Long.ONE).toSigned().negate()).toSigned();\r\n };\r\n\r\n /**\r\n * Writes a 64bit base 128 variable-length integer.\r\n * @param {number|Long} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * written if omitted.\r\n * @returns {!ByteBuffer|number} `this` if offset is omitted, else the actual number of bytes written.\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeVarint64 = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof value === 'number')\n value = Long.fromNumber(value);\n else if (typeof value === 'string')\n value = Long.fromString(value);\n else if (!(value && value instanceof Long))\n throw TypeError(\"Illegal value: \"+value+\" (not an integer or Long)\");\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n if (typeof value === 'number')\n value = Long.fromNumber(value, false);\n else if (typeof value === 'string')\n value = Long.fromString(value, false);\n else if (value.unsigned !== false) value = value.toSigned();\n var size = ByteBuffer.calculateVarint64(value),\r\n part0 = value.toInt() >>> 0,\r\n part1 = value.shiftRightUnsigned(28).toInt() >>> 0,\r\n part2 = value.shiftRightUnsigned(56).toInt() >>> 0;\r\n offset += size;\n var capacity11 = this.buffer.byteLength;\n if (offset > capacity11)\n this.resize((capacity11 *= 2) > offset ? capacity11 : offset);\n offset -= size;\n switch (size) {\r\n case 10: this.view[offset+9] = (part2 >>> 7) & 0x01;\r\n case 9 : this.view[offset+8] = size !== 9 ? (part2 ) | 0x80 : (part2 ) & 0x7F;\r\n case 8 : this.view[offset+7] = size !== 8 ? (part1 >>> 21) | 0x80 : (part1 >>> 21) & 0x7F;\r\n case 7 : this.view[offset+6] = size !== 7 ? (part1 >>> 14) | 0x80 : (part1 >>> 14) & 0x7F;\r\n case 6 : this.view[offset+5] = size !== 6 ? (part1 >>> 7) | 0x80 : (part1 >>> 7) & 0x7F;\r\n case 5 : this.view[offset+4] = size !== 5 ? (part1 ) | 0x80 : (part1 ) & 0x7F;\r\n case 4 : this.view[offset+3] = size !== 4 ? (part0 >>> 21) | 0x80 : (part0 >>> 21) & 0x7F;\r\n case 3 : this.view[offset+2] = size !== 3 ? (part0 >>> 14) | 0x80 : (part0 >>> 14) & 0x7F;\r\n case 2 : this.view[offset+1] = size !== 2 ? (part0 >>> 7) | 0x80 : (part0 >>> 7) & 0x7F;\r\n case 1 : this.view[offset ] = size !== 1 ? (part0 ) | 0x80 : (part0 ) & 0x7F;\r\n }\r\n if (relative) {\r\n this.offset += size;\r\n return this;\r\n } else {\r\n return size;\r\n }\r\n };\r\n\r\n /**\r\n * Writes a zig-zag encoded 64bit base 128 variable-length integer.\r\n * @param {number|Long} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * written if omitted.\r\n * @returns {!ByteBuffer|number} `this` if offset is omitted, else the actual number of bytes written.\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeVarint64ZigZag = function(value, offset) {\r\n return this.writeVarint64(ByteBuffer.zigZagEncode64(value), offset);\r\n };\r\n\r\n /**\r\n * Reads a 64bit base 128 variable-length integer. Requires Long.js.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * read if omitted.\r\n * @returns {!Long|!{value: Long, length: number}} The value read if offset is omitted, else the value read and\r\n * the actual number of bytes read.\r\n * @throws {Error} If it's not a valid varint\r\n * @expose\r\n */\r\n ByteBufferPrototype.readVarint64 = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 1 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+1+\") <= \"+this.buffer.byteLength);\n }\r\n // ref: src/google/protobuf/io/coded_stream.cc\r\n var start = offset,\r\n part0 = 0,\r\n part1 = 0,\r\n part2 = 0,\r\n b = 0;\r\n b = this.view[offset++]; part0 = (b & 0x7F) ; if ( b & 0x80 ) {\r\n b = this.view[offset++]; part0 |= (b & 0x7F) << 7; if ((b & 0x80) || (this.noAssert && typeof b === 'undefined')) {\r\n b = this.view[offset++]; part0 |= (b & 0x7F) << 14; if ((b & 0x80) || (this.noAssert && typeof b === 'undefined')) {\r\n b = this.view[offset++]; part0 |= (b & 0x7F) << 21; if ((b & 0x80) || (this.noAssert && typeof b === 'undefined')) {\r\n b = this.view[offset++]; part1 = (b & 0x7F) ; if ((b & 0x80) || (this.noAssert && typeof b === 'undefined')) {\r\n b = this.view[offset++]; part1 |= (b & 0x7F) << 7; if ((b & 0x80) || (this.noAssert && typeof b === 'undefined')) {\r\n b = this.view[offset++]; part1 |= (b & 0x7F) << 14; if ((b & 0x80) || (this.noAssert && typeof b === 'undefined')) {\r\n b = this.view[offset++]; part1 |= (b & 0x7F) << 21; if ((b & 0x80) || (this.noAssert && typeof b === 'undefined')) {\r\n b = this.view[offset++]; part2 = (b & 0x7F) ; if ((b & 0x80) || (this.noAssert && typeof b === 'undefined')) {\r\n b = this.view[offset++]; part2 |= (b & 0x7F) << 7; if ((b & 0x80) || (this.noAssert && typeof b === 'undefined')) {\r\n throw Error(\"Buffer overrun\"); }}}}}}}}}}\r\n var value = Long.fromBits(part0 | (part1 << 28), (part1 >>> 4) | (part2) << 24, false);\r\n if (relative) {\r\n this.offset = offset;\r\n return value;\r\n } else {\r\n return {\r\n 'value': value,\r\n 'length': offset-start\r\n };\r\n }\r\n };\r\n\r\n /**\r\n * Reads a zig-zag encoded 64bit base 128 variable-length integer. Requires Long.js.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * read if omitted.\r\n * @returns {!Long|!{value: Long, length: number}} The value read if offset is omitted, else the value read and\r\n * the actual number of bytes read.\r\n * @throws {Error} If it's not a valid varint\r\n * @expose\r\n */\r\n ByteBufferPrototype.readVarint64ZigZag = function(offset) {\r\n var val = this.readVarint64(offset);\r\n if (val && val['value'] instanceof Long)\r\n val[\"value\"] = ByteBuffer.zigZagDecode64(val[\"value\"]);\r\n else\r\n val = ByteBuffer.zigZagDecode64(val);\r\n return val;\r\n };\r\n\r\n } // Long\r\n\r\n\r\n // types/strings/cstring\r\n\r\n /**\r\n * Writes a NULL-terminated UTF8 encoded string. For this to work the specified string must not contain any NULL\r\n * characters itself.\r\n * @param {string} str String to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * contained in `str` + 1 if omitted.\r\n * @returns {!ByteBuffer|number} this if offset is omitted, else the actual number of bytes written\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeCString = function(str, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n var i,\r\n k = str.length;\r\n if (!this.noAssert) {\r\n if (typeof str !== 'string')\r\n throw TypeError(\"Illegal str: Not a string\");\r\n for (i=0; i<k; ++i) {\r\n if (str.charCodeAt(i) === 0)\r\n throw RangeError(\"Illegal str: Contains NULL-characters\");\r\n }\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n // UTF8 strings do not contain zero bytes in between except for the zero character, so:\r\n k = utfx.calculateUTF16asUTF8(stringSource(str))[1];\r\n offset += k+1;\n var capacity12 = this.buffer.byteLength;\n if (offset > capacity12)\n this.resize((capacity12 *= 2) > offset ? capacity12 : offset);\n offset -= k+1;\n utfx.encodeUTF16toUTF8(stringSource(str), function(b) {\r\n this.view[offset++] = b;\r\n }.bind(this));\r\n this.view[offset++] = 0;\r\n if (relative) {\r\n this.offset = offset;\r\n return this;\r\n }\r\n return k;\r\n };\r\n\r\n /**\r\n * Reads a NULL-terminated UTF8 encoded string. For this to work the string read must not contain any NULL characters\r\n * itself.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * read if omitted.\r\n * @returns {string|!{string: string, length: number}} The string read if offset is omitted, else the string\r\n * read and the actual number of bytes read.\r\n * @expose\r\n */\r\n ByteBufferPrototype.readCString = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 1 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+1+\") <= \"+this.buffer.byteLength);\n }\r\n var start = offset,\r\n temp;\r\n // UTF8 strings do not contain zero bytes in between except for the zero character itself, so:\r\n var sd, b = -1;\r\n utfx.decodeUTF8toUTF16(function() {\r\n if (b === 0) return null;\r\n if (offset >= this.limit)\r\n throw RangeError(\"Illegal range: Truncated data, \"+offset+\" < \"+this.limit);\r\n b = this.view[offset++];\r\n return b === 0 ? null : b;\r\n }.bind(this), sd = stringDestination(), true);\r\n if (relative) {\r\n this.offset = offset;\r\n return sd();\r\n } else {\r\n return {\r\n \"string\": sd(),\r\n \"length\": offset - start\r\n };\r\n }\r\n };\r\n\r\n // types/strings/istring\r\n\r\n /**\r\n * Writes a length as uint32 prefixed UTF8 encoded string.\r\n * @param {string} str String to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * written if omitted.\r\n * @returns {!ByteBuffer|number} `this` if `offset` is omitted, else the actual number of bytes written\r\n * @expose\r\n * @see ByteBuffer#writeVarint32\r\n */\r\n ByteBufferPrototype.writeIString = function(str, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof str !== 'string')\r\n throw TypeError(\"Illegal str: Not a string\");\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n var start = offset,\r\n k;\r\n k = utfx.calculateUTF16asUTF8(stringSource(str), this.noAssert)[1];\r\n offset += 4+k;\n var capacity13 = this.buffer.byteLength;\n if (offset > capacity13)\n this.resize((capacity13 *= 2) > offset ? capacity13 : offset);\n offset -= 4+k;\n if (this.littleEndian) {\n this.view[offset+3] = (k >>> 24) & 0xFF;\n this.view[offset+2] = (k >>> 16) & 0xFF;\n this.view[offset+1] = (k >>> 8) & 0xFF;\n this.view[offset ] = k & 0xFF;\n } else {\n this.view[offset ] = (k >>> 24) & 0xFF;\n this.view[offset+1] = (k >>> 16) & 0xFF;\n this.view[offset+2] = (k >>> 8) & 0xFF;\n this.view[offset+3] = k & 0xFF;\n }\n offset += 4;\r\n utfx.encodeUTF16toUTF8(stringSource(str), function(b) {\r\n this.view[offset++] = b;\r\n }.bind(this));\r\n if (offset !== start + 4 + k)\r\n throw RangeError(\"Illegal range: Truncated data, \"+offset+\" == \"+(offset+4+k));\r\n if (relative) {\r\n this.offset = offset;\r\n return this;\r\n }\r\n return offset - start;\r\n };\r\n\r\n /**\r\n * Reads a length as uint32 prefixed UTF8 encoded string.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * read if omitted.\r\n * @returns {string|!{string: string, length: number}} The string read if offset is omitted, else the string\r\n * read and the actual number of bytes read.\r\n * @expose\r\n * @see ByteBuffer#readVarint32\r\n */\r\n ByteBufferPrototype.readIString = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 4 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+4+\") <= \"+this.buffer.byteLength);\n }\r\n var start = offset;\r\n var len = this.readUint32(offset);\r\n var str = this.readUTF8String(len, ByteBuffer.METRICS_BYTES, offset += 4);\r\n offset += str['length'];\r\n if (relative) {\r\n this.offset = offset;\r\n return str['string'];\r\n } else {\r\n return {\r\n 'string': str['string'],\r\n 'length': offset - start\r\n };\r\n }\r\n };\r\n\r\n // types/strings/utf8string\r\n\r\n /**\r\n * Metrics representing number of UTF8 characters. Evaluates to `c`.\r\n * @type {string}\r\n * @const\r\n * @expose\r\n */\r\n ByteBuffer.METRICS_CHARS = 'c';\r\n\r\n /**\r\n * Metrics representing number of bytes. Evaluates to `b`.\r\n * @type {string}\r\n * @const\r\n * @expose\r\n */\r\n ByteBuffer.METRICS_BYTES = 'b';\r\n\r\n /**\r\n * Writes an UTF8 encoded string.\r\n * @param {string} str String to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} if omitted.\r\n * @returns {!ByteBuffer|number} this if offset is omitted, else the actual number of bytes written.\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeUTF8String = function(str, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n var k;\r\n var start = offset;\r\n k = utfx.calculateUTF16asUTF8(stringSource(str))[1];\r\n offset += k;\n var capacity14 = this.buffer.byteLength;\n if (offset > capacity14)\n this.resize((capacity14 *= 2) > offset ? capacity14 : offset);\n offset -= k;\n utfx.encodeUTF16toUTF8(stringSource(str), function(b) {\r\n this.view[offset++] = b;\r\n }.bind(this));\r\n if (relative) {\r\n this.offset = offset;\r\n return this;\r\n }\r\n return offset - start;\r\n };\r\n\r\n /**\r\n * Writes an UTF8 encoded string. This is an alias of {@link ByteBuffer#writeUTF8String}.\r\n * @function\r\n * @param {string} str String to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} if omitted.\r\n * @returns {!ByteBuffer|number} this if offset is omitted, else the actual number of bytes written.\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeString = ByteBufferPrototype.writeUTF8String;\r\n\r\n /**\r\n * Calculates the number of UTF8 characters of a string. JavaScript itself uses UTF-16, so that a string's\r\n * `length` property does not reflect its actual UTF8 size if it contains code points larger than 0xFFFF.\r\n * @param {string} str String to calculate\r\n * @returns {number} Number of UTF8 characters\r\n * @expose\r\n */\r\n ByteBuffer.calculateUTF8Chars = function(str) {\r\n return utfx.calculateUTF16asUTF8(stringSource(str))[0];\r\n };\r\n\r\n /**\r\n * Calculates the number of UTF8 bytes of a string.\r\n * @param {string} str String to calculate\r\n * @returns {number} Number of UTF8 bytes\r\n * @expose\r\n */\r\n ByteBuffer.calculateUTF8Bytes = function(str) {\r\n return utfx.calculateUTF16asUTF8(stringSource(str))[1];\r\n };\r\n\r\n /**\r\n * Calculates the number of UTF8 bytes of a string. This is an alias of {@link ByteBuffer.calculateUTF8Bytes}.\r\n * @function\r\n * @param {string} str String to calculate\r\n * @returns {number} Number of UTF8 bytes\r\n * @expose\r\n */\r\n ByteBuffer.calculateString = ByteBuffer.calculateUTF8Bytes;\r\n\r\n /**\r\n * Reads an UTF8 encoded string.\r\n * @param {number} length Number of characters or bytes to read.\r\n * @param {string=} metrics Metrics specifying what `length` is meant to count. Defaults to\r\n * {@link ByteBuffer.METRICS_CHARS}.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * read if omitted.\r\n * @returns {string|!{string: string, length: number}} The string read if offset is omitted, else the string\r\n * read and the actual number of bytes read.\r\n * @expose\r\n */\r\n ByteBufferPrototype.readUTF8String = function(length, metrics, offset) {\r\n if (typeof metrics === 'number') {\r\n offset = metrics;\r\n metrics = undefined;\r\n }\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (typeof metrics === 'undefined') metrics = ByteBuffer.METRICS_CHARS;\r\n if (!this.noAssert) {\r\n if (typeof length !== 'number' || length % 1 !== 0)\n throw TypeError(\"Illegal length: \"+length+\" (not an integer)\");\n length |= 0;\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n var i = 0,\r\n start = offset,\r\n sd;\r\n if (metrics === ByteBuffer.METRICS_CHARS) { // The same for node and the browser\r\n sd = stringDestination();\r\n utfx.decodeUTF8(function() {\r\n return i < length && offset < this.limit ? this.view[offset++] : null;\r\n }.bind(this), function(cp) {\r\n ++i; utfx.UTF8toUTF16(cp, sd);\r\n });\r\n if (i !== length)\r\n throw RangeError(\"Illegal range: Truncated data, \"+i+\" == \"+length);\r\n if (relative) {\r\n this.offset = offset;\r\n return sd();\r\n } else {\r\n return {\r\n \"string\": sd(),\r\n \"length\": offset - start\r\n };\r\n }\r\n } else if (metrics === ByteBuffer.METRICS_BYTES) {\r\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + length > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+length+\") <= \"+this.buffer.byteLength);\n }\r\n var k = offset + length;\r\n utfx.decodeUTF8toUTF16(function() {\r\n return offset < k ? this.view[offset++] : null;\r\n }.bind(this), sd = stringDestination(), this.noAssert);\r\n if (offset !== k)\r\n throw RangeError(\"Illegal range: Truncated data, \"+offset+\" == \"+k);\r\n if (relative) {\r\n this.offset = offset;\r\n return sd();\r\n } else {\r\n return {\r\n 'string': sd(),\r\n 'length': offset - start\r\n };\r\n }\r\n } else\r\n throw TypeError(\"Unsupported metrics: \"+metrics);\r\n };\r\n\r\n /**\r\n * Reads an UTF8 encoded string. This is an alias of {@link ByteBuffer#readUTF8String}.\r\n * @function\r\n * @param {number} length Number of characters or bytes to read\r\n * @param {number=} metrics Metrics specifying what `n` is meant to count. Defaults to\r\n * {@link ByteBuffer.METRICS_CHARS}.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * read if omitted.\r\n * @returns {string|!{string: string, length: number}} The string read if offset is omitted, else the string\r\n * read and the actual number of bytes read.\r\n * @expose\r\n */\r\n ByteBufferPrototype.readString = ByteBufferPrototype.readUTF8String;\r\n\r\n // types/strings/vstring\r\n\r\n /**\r\n * Writes a length as varint32 prefixed UTF8 encoded string.\r\n * @param {string} str String to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * written if omitted.\r\n * @returns {!ByteBuffer|number} `this` if `offset` is omitted, else the actual number of bytes written\r\n * @expose\r\n * @see ByteBuffer#writeVarint32\r\n */\r\n ByteBufferPrototype.writeVString = function(str, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof str !== 'string')\r\n throw TypeError(\"Illegal str: Not a string\");\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n var start = offset,\r\n k, l;\r\n k = utfx.calculateUTF16asUTF8(stringSource(str), this.noAssert)[1];\r\n l = ByteBuffer.calculateVarint32(k);\r\n offset += l+k;\n var capacity15 = this.buffer.byteLength;\n if (offset > capacity15)\n this.resize((capacity15 *= 2) > offset ? capacity15 : offset);\n offset -= l+k;\n offset += this.writeVarint32(k, offset);\r\n utfx.encodeUTF16toUTF8(stringSource(str), function(b) {\r\n this.view[offset++] = b;\r\n }.bind(this));\r\n if (offset !== start+k+l)\r\n throw RangeError(\"Illegal range: Truncated data, \"+offset+\" == \"+(offset+k+l));\r\n if (relative) {\r\n this.offset = offset;\r\n return this;\r\n }\r\n return offset - start;\r\n };\r\n\r\n /**\r\n * Reads a length as varint32 prefixed UTF8 encoded string.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * read if omitted.\r\n * @returns {string|!{string: string, length: number}} The string read if offset is omitted, else the string\r\n * read and the actual number of bytes read.\r\n * @expose\r\n * @see ByteBuffer#readVarint32\r\n */\r\n ByteBufferPrototype.readVString = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 1 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+1+\") <= \"+this.buffer.byteLength);\n }\r\n var start = offset;\r\n var len = this.readVarint32(offset);\r\n var str = this.readUTF8String(len['value'], ByteBuffer.METRICS_BYTES, offset += len['length']);\r\n offset += str['length'];\r\n if (relative) {\r\n this.offset = offset;\r\n return str['string'];\r\n } else {\r\n return {\r\n 'string': str['string'],\r\n 'length': offset - start\r\n };\r\n }\r\n };\r\n\r\n\r\n /**\r\n * Appends some data to this ByteBuffer. This will overwrite any contents behind the specified offset up to the appended\r\n * data's length.\r\n * @param {!ByteBuffer|!ArrayBuffer|!Uint8Array|string} source Data to append. If `source` is a ByteBuffer, its offsets\r\n * will be modified according to the performed read operation.\r\n * @param {(string|number)=} encoding Encoding if `data` is a string (\"base64\", \"hex\", \"binary\", defaults to \"utf8\")\r\n * @param {number=} offset Offset to append at. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * written if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n * @example A relative `<01 02>03.append(<04 05>)` will result in `<01 02 04 05>, 04 05|`\r\n * @example An absolute `<01 02>03.append(04 05>, 1)` will result in `<01 04>05, 04 05|`\r\n */\r\n ByteBufferPrototype.append = function(source, encoding, offset) {\r\n if (typeof encoding === 'number' || typeof encoding !== 'string') {\r\n offset = encoding;\r\n encoding = undefined;\r\n }\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n if (!(source instanceof ByteBuffer))\r\n source = ByteBuffer.wrap(source, encoding);\r\n var length = source.limit - source.offset;\r\n if (length <= 0) return this; // Nothing to append\r\n offset += length;\n var capacity16 = this.buffer.byteLength;\n if (offset > capacity16)\n this.resize((capacity16 *= 2) > offset ? capacity16 : offset);\n offset -= length;\n this.view.set(source.view.subarray(source.offset, source.limit), offset);\r\n source.offset += length;\r\n if (relative) this.offset += length;\n return this;\r\n };\r\n\r\n /**\r\n * Appends this ByteBuffer's contents to another ByteBuffer. This will overwrite any contents at and after the\r\n specified offset up to the length of this ByteBuffer's data.\r\n * @param {!ByteBuffer} target Target ByteBuffer\r\n * @param {number=} offset Offset to append to. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * read if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n * @see ByteBuffer#append\r\n */\r\n ByteBufferPrototype.appendTo = function(target, offset) {\r\n target.append(this, offset);\r\n return this;\r\n };\r\n\r\n /**\r\n * Enables or disables assertions of argument types and offsets. Assertions are enabled by default but you can opt to\r\n * disable them if your code already makes sure that everything is valid.\r\n * @param {boolean} assert `true` to enable assertions, otherwise `false`\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.assert = function(assert) {\r\n this.noAssert = !assert;\r\n return this;\r\n };\r\n\r\n /**\r\n * Gets the capacity of this ByteBuffer's backing buffer.\r\n * @returns {number} Capacity of the backing buffer\r\n * @expose\r\n */\r\n ByteBufferPrototype.capacity = function() {\r\n return this.buffer.byteLength;\r\n };\r\n /**\r\n * Clears this ByteBuffer's offsets by setting {@link ByteBuffer#offset} to `0` and {@link ByteBuffer#limit} to the\r\n * backing buffer's capacity. Discards {@link ByteBuffer#markedOffset}.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.clear = function() {\r\n this.offset = 0;\r\n this.limit = this.buffer.byteLength;\r\n this.markedOffset = -1;\r\n return this;\r\n };\r\n\r\n /**\r\n * Creates a cloned instance of this ByteBuffer, preset with this ByteBuffer's values for {@link ByteBuffer#offset},\r\n * {@link ByteBuffer#markedOffset} and {@link ByteBuffer#limit}.\r\n * @param {boolean=} copy Whether to copy the backing buffer or to return another view on the same, defaults to `false`\r\n * @returns {!ByteBuffer} Cloned instance\r\n * @expose\r\n */\r\n ByteBufferPrototype.clone = function(copy) {\r\n var bb = new ByteBuffer(0, this.littleEndian, this.noAssert);\r\n if (copy) {\r\n bb.buffer = new ArrayBuffer(this.buffer.byteLength);\r\n bb.view = new Uint8Array(bb.buffer);\r\n } else {\r\n bb.buffer = this.buffer;\r\n bb.view = this.view;\r\n }\r\n bb.offset = this.offset;\r\n bb.markedOffset = this.markedOffset;\r\n bb.limit = this.limit;\r\n return bb;\r\n };\r\n\r\n /**\r\n * Compacts this ByteBuffer to be backed by a {@link ByteBuffer#buffer} of its contents' length. Contents are the bytes\r\n * between {@link ByteBuffer#offset} and {@link ByteBuffer#limit}. Will set `offset = 0` and `limit = capacity` and\r\n * adapt {@link ByteBuffer#markedOffset} to the same relative position if set.\r\n * @param {number=} begin Offset to start at, defaults to {@link ByteBuffer#offset}\r\n * @param {number=} end Offset to end at, defaults to {@link ByteBuffer#limit}\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.compact = function(begin, end) {\r\n if (typeof begin === 'undefined') begin = this.offset;\r\n if (typeof end === 'undefined') end = this.limit;\r\n if (!this.noAssert) {\r\n if (typeof begin !== 'number' || begin % 1 !== 0)\n throw TypeError(\"Illegal begin: Not an integer\");\n begin >>>= 0;\n if (typeof end !== 'number' || end % 1 !== 0)\n throw TypeError(\"Illegal end: Not an integer\");\n end >>>= 0;\n if (begin < 0 || begin > end || end > this.buffer.byteLength)\n throw RangeError(\"Illegal range: 0 <= \"+begin+\" <= \"+end+\" <= \"+this.buffer.byteLength);\n }\r\n if (begin === 0 && end === this.buffer.byteLength)\r\n return this; // Already compacted\r\n var len = end - begin;\r\n if (len === 0) {\r\n this.buffer = EMPTY_BUFFER;\r\n this.view = null;\r\n if (this.markedOffset >= 0) this.markedOffset -= begin;\r\n this.offset = 0;\r\n this.limit = 0;\r\n return this;\r\n }\r\n var buffer = new ArrayBuffer(len);\r\n var view = new Uint8Array(buffer);\r\n view.set(this.view.subarray(begin, end));\r\n this.buffer = buffer;\r\n this.view = view;\r\n if (this.markedOffset >= 0) this.markedOffset -= begin;\r\n this.offset = 0;\r\n this.limit = len;\r\n return this;\r\n };\r\n\r\n /**\r\n * Creates a copy of this ByteBuffer's contents. Contents are the bytes between {@link ByteBuffer#offset} and\r\n * {@link ByteBuffer#limit}.\r\n * @param {number=} begin Begin offset, defaults to {@link ByteBuffer#offset}.\r\n * @param {number=} end End offset, defaults to {@link ByteBuffer#limit}.\r\n * @returns {!ByteBuffer} Copy\r\n * @expose\r\n */\r\n ByteBufferPrototype.copy = function(begin, end) {\r\n if (typeof begin === 'undefined') begin = this.offset;\r\n if (typeof end === 'undefined') end = this.limit;\r\n if (!this.noAssert) {\r\n if (typeof begin !== 'number' || begin % 1 !== 0)\n throw TypeError(\"Illegal begin: Not an integer\");\n begin >>>= 0;\n if (typeof end !== 'number' || end % 1 !== 0)\n throw TypeError(\"Illegal end: Not an integer\");\n end >>>= 0;\n if (begin < 0 || begin > end || end > this.buffer.byteLength)\n throw RangeError(\"Illegal range: 0 <= \"+begin+\" <= \"+end+\" <= \"+this.buffer.byteLength);\n }\r\n if (begin === end)\r\n return new ByteBuffer(0, this.littleEndian, this.noAssert);\r\n var capacity = end - begin,\r\n bb = new ByteBuffer(capacity, this.littleEndian, this.noAssert);\r\n bb.offset = 0;\r\n bb.limit = capacity;\r\n if (bb.markedOffset >= 0) bb.markedOffset -= begin;\r\n this.copyTo(bb, 0, begin, end);\r\n return bb;\r\n };\r\n\r\n /**\r\n * Copies this ByteBuffer's contents to another ByteBuffer. Contents are the bytes between {@link ByteBuffer#offset} and\r\n * {@link ByteBuffer#limit}.\r\n * @param {!ByteBuffer} target Target ByteBuffer\r\n * @param {number=} targetOffset Offset to copy to. Will use and increase the target's {@link ByteBuffer#offset}\r\n * by the number of bytes copied if omitted.\r\n * @param {number=} sourceOffset Offset to start copying from. Will use and increase {@link ByteBuffer#offset} by the\r\n * number of bytes copied if omitted.\r\n * @param {number=} sourceLimit Offset to end copying from, defaults to {@link ByteBuffer#limit}\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.copyTo = function(target, targetOffset, sourceOffset, sourceLimit) {\r\n var relative,\r\n targetRelative;\r\n if (!this.noAssert) {\r\n if (!ByteBuffer.isByteBuffer(target))\r\n throw TypeError(\"Illegal target: Not a ByteBuffer\");\r\n }\r\n targetOffset = (targetRelative = typeof targetOffset === 'undefined') ? target.offset : targetOffset | 0;\r\n sourceOffset = (relative = typeof sourceOffset === 'undefined') ? this.offset : sourceOffset | 0;\r\n sourceLimit = typeof sourceLimit === 'undefined' ? this.limit : sourceLimit | 0;\r\n\r\n if (targetOffset < 0 || targetOffset > target.buffer.byteLength)\r\n throw RangeError(\"Illegal target range: 0 <= \"+targetOffset+\" <= \"+target.buffer.byteLength);\r\n if (sourceOffset < 0 || sourceLimit > this.buffer.byteLength)\r\n throw RangeError(\"Illegal source range: 0 <= \"+sourceOffset+\" <= \"+this.buffer.byteLength);\r\n\r\n var len = sourceLimit - sourceOffset;\r\n if (len === 0)\r\n return target; // Nothing to copy\r\n\r\n target.ensureCapacity(targetOffset + len);\r\n\r\n target.view.set(this.view.subarray(sourceOffset, sourceLimit), targetOffset);\r\n\r\n if (relative) this.offset += len;\r\n if (targetRelative) target.offset += len;\r\n\r\n return this;\r\n };\r\n\r\n /**\r\n * Makes sure that this ByteBuffer is backed by a {@link ByteBuffer#buffer} of at least the specified capacity. If the\r\n * current capacity is exceeded, it will be doubled. If double the current capacity is less than the required capacity,\r\n * the required capacity will be used instead.\r\n * @param {number} capacity Required capacity\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.ensureCapacity = function(capacity) {\r\n var current = this.buffer.byteLength;\r\n if (current < capacity)\r\n return this.resize((current *= 2) > capacity ? current : capacity);\r\n return this;\r\n };\r\n\r\n /**\r\n * Overwrites this ByteBuffer's contents with the specified value. Contents are the bytes between\r\n * {@link ByteBuffer#offset} and {@link ByteBuffer#limit}.\r\n * @param {number|string} value Byte value to fill with. If given as a string, the first character is used.\r\n * @param {number=} begin Begin offset. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * written if omitted. defaults to {@link ByteBuffer#offset}.\r\n * @param {number=} end End offset, defaults to {@link ByteBuffer#limit}.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n * @example `someByteBuffer.clear().fill(0)` fills the entire backing buffer with zeroes\r\n */\r\n ByteBufferPrototype.fill = function(value, begin, end) {\r\n var relative = typeof begin === 'undefined';\n if (relative) begin = this.offset;\n if (typeof value === 'string' && value.length > 0)\r\n value = value.charCodeAt(0);\r\n if (typeof begin === 'undefined') begin = this.offset;\r\n if (typeof end === 'undefined') end = this.limit;\r\n if (!this.noAssert) {\r\n if (typeof value !== 'number' || value % 1 !== 0)\n throw TypeError(\"Illegal value: \"+value+\" (not an integer)\");\n value |= 0;\n if (typeof begin !== 'number' || begin % 1 !== 0)\n throw TypeError(\"Illegal begin: Not an integer\");\n begin >>>= 0;\n if (typeof end !== 'number' || end % 1 !== 0)\n throw TypeError(\"Illegal end: Not an integer\");\n end >>>= 0;\n if (begin < 0 || begin > end || end > this.buffer.byteLength)\n throw RangeError(\"Illegal range: 0 <= \"+begin+\" <= \"+end+\" <= \"+this.buffer.byteLength);\n }\r\n if (begin >= end)\r\n return this; // Nothing to fill\r\n while (begin < end) this.view[begin++] = value;\r\n if (relative) this.offset = begin;\r\n return this;\r\n };\r\n\r\n /**\r\n * Makes this ByteBuffer ready for a new sequence of write or relative read operations. Sets `limit = offset` and\r\n * `offset = 0`. Make sure always to flip a ByteBuffer when all relative read or write operations are complete.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.flip = function() {\r\n this.limit = this.offset;\r\n this.offset = 0;\r\n return this;\r\n };\r\n /**\r\n * Marks an offset on this ByteBuffer to be used later.\r\n * @param {number=} offset Offset to mark. Defaults to {@link ByteBuffer#offset}.\r\n * @returns {!ByteBuffer} this\r\n * @throws {TypeError} If `offset` is not a valid number\r\n * @throws {RangeError} If `offset` is out of bounds\r\n * @see ByteBuffer#reset\r\n * @expose\r\n */\r\n ByteBufferPrototype.mark = function(offset) {\r\n offset = typeof offset === 'undefined' ? this.offset : offset;\r\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n this.markedOffset = offset;\r\n return this;\r\n };\r\n /**\r\n * Sets the byte order.\r\n * @param {boolean} littleEndian `true` for little endian byte order, `false` for big endian\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.order = function(littleEndian) {\r\n if (!this.noAssert) {\r\n if (typeof littleEndian !== 'boolean')\r\n throw TypeError(\"Illegal littleEndian: Not a boolean\");\r\n }\r\n this.littleEndian = !!littleEndian;\r\n return this;\r\n };\r\n\r\n /**\r\n * Switches (to) little endian byte order.\r\n * @param {boolean=} littleEndian Defaults to `true`, otherwise uses big endian\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.LE = function(littleEndian) {\r\n this.littleEndian = typeof littleEndian !== 'undefined' ? !!littleEndian : true;\r\n return this;\r\n };\r\n\r\n /**\r\n * Switches (to) big endian byte order.\r\n * @param {boolean=} bigEndian Defaults to `true`, otherwise uses little endian\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.BE = function(bigEndian) {\r\n this.littleEndian = typeof bigEndian !== 'undefined' ? !bigEndian : false;\r\n return this;\r\n };\r\n /**\r\n * Prepends some data to this ByteBuffer. This will overwrite any contents before the specified offset up to the\r\n * prepended data's length. If there is not enough space available before the specified `offset`, the backing buffer\r\n * will be resized and its contents moved accordingly.\r\n * @param {!ByteBuffer|string|!ArrayBuffer} source Data to prepend. If `source` is a ByteBuffer, its offset will be\r\n * modified according to the performed read operation.\r\n * @param {(string|number)=} encoding Encoding if `data` is a string (\"base64\", \"hex\", \"binary\", defaults to \"utf8\")\r\n * @param {number=} offset Offset to prepend at. Will use and decrease {@link ByteBuffer#offset} by the number of bytes\r\n * prepended if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n * @example A relative `00<01 02 03>.prepend(<04 05>)` results in `<04 05 01 02 03>, 04 05|`\r\n * @example An absolute `00<01 02 03>.prepend(<04 05>, 2)` results in `04<05 02 03>, 04 05|`\r\n */\r\n ByteBufferPrototype.prepend = function(source, encoding, offset) {\r\n if (typeof encoding === 'number' || typeof encoding !== 'string') {\r\n offset = encoding;\r\n encoding = undefined;\r\n }\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n if (!(source instanceof ByteBuffer))\r\n source = ByteBuffer.wrap(source, encoding);\r\n var len = source.limit - source.offset;\r\n if (len <= 0) return this; // Nothing to prepend\r\n var diff = len - offset;\r\n if (diff > 0) { // Not enough space before offset, so resize + move\r\n var buffer = new ArrayBuffer(this.buffer.byteLength + diff);\r\n var view = new Uint8Array(buffer);\r\n view.set(this.view.subarray(offset, this.buffer.byteLength), len);\r\n this.buffer = buffer;\r\n this.view = view;\r\n this.offset += diff;\r\n if (this.markedOffset >= 0) this.markedOffset += diff;\r\n this.limit += diff;\r\n offset += diff;\r\n } else {\r\n var arrayView = new Uint8Array(this.buffer);\r\n }\r\n this.view.set(source.view.subarray(source.offset, source.limit), offset - len);\r\n\r\n source.offset = source.limit;\r\n if (relative)\r\n this.offset -= len;\r\n return this;\r\n };\r\n\r\n /**\r\n * Prepends this ByteBuffer to another ByteBuffer. This will overwrite any contents before the specified offset up to the\r\n * prepended data's length. If there is not enough space available before the specified `offset`, the backing buffer\r\n * will be resized and its contents moved accordingly.\r\n * @param {!ByteBuffer} target Target ByteBuffer\r\n * @param {number=} offset Offset to prepend at. Will use and decrease {@link ByteBuffer#offset} by the number of bytes\r\n * prepended if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n * @see ByteBuffer#prepend\r\n */\r\n ByteBufferPrototype.prependTo = function(target, offset) {\r\n target.prepend(this, offset);\r\n return this;\r\n };\r\n /**\r\n * Prints debug information about this ByteBuffer's contents.\r\n * @param {function(string)=} out Output function to call, defaults to console.log\r\n * @expose\r\n */\r\n ByteBufferPrototype.printDebug = function(out) {\r\n if (typeof out !== 'function') out = console.log.bind(console);\r\n out(\r\n this.toString()+\"\\n\"+\r\n \"-------------------------------------------------------------------\\n\"+\r\n this.toDebug(/* columns */ true)\r\n );\r\n };\r\n\r\n /**\r\n * Gets the number of remaining readable bytes. Contents are the bytes between {@link ByteBuffer#offset} and\r\n * {@link ByteBuffer#limit}, so this returns `limit - offset`.\r\n * @returns {number} Remaining readable bytes. May be negative if `offset > limit`.\r\n * @expose\r\n */\r\n ByteBufferPrototype.remaining = function() {\r\n return this.limit - this.offset;\r\n };\r\n /**\r\n * Resets this ByteBuffer's {@link ByteBuffer#offset}. If an offset has been marked through {@link ByteBuffer#mark}\r\n * before, `offset` will be set to {@link ByteBuffer#markedOffset}, which will then be discarded. If no offset has been\r\n * marked, sets `offset = 0`.\r\n * @returns {!ByteBuffer} this\r\n * @see ByteBuffer#mark\r\n * @expose\r\n */\r\n ByteBufferPrototype.reset = function() {\r\n if (this.markedOffset >= 0) {\r\n this.offset = this.markedOffset;\r\n this.markedOffset = -1;\r\n } else {\r\n this.offset = 0;\r\n }\r\n return this;\r\n };\r\n /**\r\n * Resizes this ByteBuffer to be backed by a buffer of at least the given capacity. Will do nothing if already that\r\n * large or larger.\r\n * @param {number} capacity Capacity required\r\n * @returns {!ByteBuffer} this\r\n * @throws {TypeError} If `capacity` is not a number\r\n * @throws {RangeError} If `capacity < 0`\r\n * @expose\r\n */\r\n ByteBufferPrototype.resize = function(capacity) {\r\n if (!this.noAssert) {\r\n if (typeof capacity !== 'number' || capacity % 1 !== 0)\n throw TypeError(\"Illegal capacity: \"+capacity+\" (not an integer)\");\n capacity |= 0;\n if (capacity < 0)\r\n throw RangeError(\"Illegal capacity: 0 <= \"+capacity);\r\n }\r\n if (this.buffer.byteLength < capacity) {\r\n var buffer = new ArrayBuffer(capacity);\r\n var view = new Uint8Array(buffer);\r\n view.set(this.view);\r\n this.buffer = buffer;\r\n this.view = view;\r\n }\r\n return this;\r\n };\r\n /**\r\n * Reverses this ByteBuffer's contents.\r\n * @param {number=} begin Offset to start at, defaults to {@link ByteBuffer#offset}\r\n * @param {number=} end Offset to end at, defaults to {@link ByteBuffer#limit}\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.reverse = function(begin, end) {\r\n if (typeof begin === 'undefined') begin = this.offset;\r\n if (typeof end === 'undefined') end = this.limit;\r\n if (!this.noAssert) {\r\n if (typeof begin !== 'number' || begin % 1 !== 0)\n throw TypeError(\"Illegal begin: Not an integer\");\n begin >>>= 0;\n if (typeof end !== 'number' || end % 1 !== 0)\n throw TypeError(\"Illegal end: Not an integer\");\n end >>>= 0;\n if (begin < 0 || begin > end || end > this.buffer.byteLength)\n throw RangeError(\"Illegal range: 0 <= \"+begin+\" <= \"+end+\" <= \"+this.buffer.byteLength);\n }\r\n if (begin === end)\r\n return this; // Nothing to reverse\r\n Array.prototype.reverse.call(this.view.subarray(begin, end));\r\n return this;\r\n };\r\n /**\r\n * Skips the next `length` bytes. This will just advance\r\n * @param {number} length Number of bytes to skip. May also be negative to move the offset back.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.skip = function(length) {\r\n if (!this.noAssert) {\r\n if (typeof length !== 'number' || length % 1 !== 0)\n throw TypeError(\"Illegal length: \"+length+\" (not an integer)\");\n length |= 0;\n }\r\n var offset = this.offset + length;\r\n if (!this.noAssert) {\r\n if (offset < 0 || offset > this.buffer.byteLength)\r\n throw RangeError(\"Illegal length: 0 <= \"+this.offset+\" + \"+length+\" <= \"+this.buffer.byteLength);\r\n }\r\n this.offset = offset;\r\n return this;\r\n };\r\n\r\n /**\r\n * Slices this ByteBuffer by creating a cloned instance with `offset = begin` and `limit = end`.\r\n * @param {number=} begin Begin offset, defaults to {@link ByteBuffer#offset}.\r\n * @param {number=} end End offset, defaults to {@link ByteBuffer#limit}.\r\n * @returns {!ByteBuffer} Clone of this ByteBuffer with slicing applied, backed by the same {@link ByteBuffer#buffer}\r\n * @expose\r\n */\r\n ByteBufferPrototype.slice = function(begin, end) {\r\n if (typeof begin === 'undefined') begin = this.offset;\r\n if (typeof end === 'undefined') end = this.limit;\r\n if (!this.noAssert) {\r\n if (typeof begin !== 'number' || begin % 1 !== 0)\n throw TypeError(\"Illegal begin: Not an integer\");\n begin >>>= 0;\n if (typeof end !== 'number' || end % 1 !== 0)\n throw TypeError(\"Illegal end: Not an integer\");\n end >>>= 0;\n if (begin < 0 || begin > end || end > this.buffer.byteLength)\n throw RangeError(\"Illegal range: 0 <= \"+begin+\" <= \"+end+\" <= \"+this.buffer.byteLength);\n }\r\n var bb = this.clone();\r\n bb.offset = begin;\r\n bb.limit = end;\r\n return bb;\r\n };\r\n /**\r\n * Returns a copy of the backing buffer that contains this ByteBuffer's contents. Contents are the bytes between\r\n * {@link ByteBuffer#offset} and {@link ByteBuffer#limit}.\r\n * @param {boolean=} forceCopy If `true` returns a copy, otherwise returns a view referencing the same memory if\r\n * possible. Defaults to `false`\r\n * @returns {!ArrayBuffer} Contents as an ArrayBuffer\r\n * @expose\r\n */\r\n ByteBufferPrototype.toBuffer = function(forceCopy) {\r\n var offset = this.offset,\r\n limit = this.limit;\r\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: Not an integer\");\n offset >>>= 0;\n if (typeof limit !== 'number' || limit % 1 !== 0)\n throw TypeError(\"Illegal limit: Not an integer\");\n limit >>>= 0;\n if (offset < 0 || offset > limit || limit > this.buffer.byteLength)\n throw RangeError(\"Illegal range: 0 <= \"+offset+\" <= \"+limit+\" <= \"+this.buffer.byteLength);\n }\r\n // NOTE: It's not possible to have another ArrayBuffer reference the same memory as the backing buffer. This is\r\n // possible with Uint8Array#subarray only, but we have to return an ArrayBuffer by contract. So:\r\n if (!forceCopy && offset === 0 && limit === this.buffer.byteLength)\r\n return this.buffer;\r\n if (offset === limit)\r\n return EMPTY_BUFFER;\r\n var buffer = new ArrayBuffer(limit - offset);\r\n new Uint8Array(buffer).set(new Uint8Array(this.buffer).subarray(offset, limit), 0);\r\n return buffer;\r\n };\r\n\r\n /**\r\n * Returns a raw buffer compacted to contain this ByteBuffer's contents. Contents are the bytes between\r\n * {@link ByteBuffer#offset} and {@link ByteBuffer#limit}. This is an alias of {@link ByteBuffer#toBuffer}.\r\n * @function\r\n * @param {boolean=} forceCopy If `true` returns a copy, otherwise returns a view referencing the same memory.\r\n * Defaults to `false`\r\n * @returns {!ArrayBuffer} Contents as an ArrayBuffer\r\n * @expose\r\n */\r\n ByteBufferPrototype.toArrayBuffer = ByteBufferPrototype.toBuffer;\r\n\r\n /**\r\n * Converts the ByteBuffer's contents to a string.\r\n * @param {string=} encoding Output encoding. Returns an informative string representation if omitted but also allows\r\n * direct conversion to \"utf8\", \"hex\", \"base64\" and \"binary\" encoding. \"debug\" returns a hex representation with\r\n * highlighted offsets.\r\n * @param {number=} begin Offset to begin at, defaults to {@link ByteBuffer#offset}\r\n * @param {number=} end Offset to end at, defaults to {@link ByteBuffer#limit}\r\n * @returns {string} String representation\r\n * @throws {Error} If `encoding` is invalid\r\n * @expose\r\n */\r\n ByteBufferPrototype.toString = function(encoding, begin, end) {\r\n if (typeof encoding === 'undefined')\r\n return \"ByteBufferAB(offset=\"+this.offset+\",markedOffset=\"+this.markedOffset+\",limit=\"+this.limit+\",capacity=\"+this.capacity()+\")\";\r\n if (typeof encoding === 'number')\r\n encoding = \"utf8\",\r\n begin = encoding,\r\n end = begin;\r\n switch (encoding) {\r\n case \"utf8\":\r\n return this.toUTF8(begin, end);\r\n case \"base64\":\r\n return this.toBase64(begin, end);\r\n case \"hex\":\r\n return this.toHex(begin, end);\r\n case \"binary\":\r\n return this.toBinary(begin, end);\r\n case \"debug\":\r\n return this.toDebug();\r\n case \"columns\":\r\n return this.toColumns();\r\n default:\r\n throw Error(\"Unsupported encoding: \"+encoding);\r\n }\r\n };\r\n\r\n // lxiv-embeddable\r\n\r\n /**\r\n * lxiv-embeddable (c) 2014 Daniel Wirtz <dcode@dcode.io>\r\n * Released under the Apache License, Version 2.0\r\n * see: https://github.com/dcodeIO/lxiv for details\r\n */\r\n var lxiv = function() {\r\n \"use strict\";\r\n\r\n /**\r\n * lxiv namespace.\r\n * @type {!Object.<string,*>}\r\n * @exports lxiv\r\n */\r\n var lxiv = {};\r\n\r\n /**\r\n * Character codes for output.\r\n * @type {!Array.<number>}\r\n * @inner\r\n */\r\n var aout = [\r\n 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80,\r\n 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 97, 98, 99, 100, 101, 102,\r\n 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118,\r\n 119, 120, 121, 122, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 43, 47\r\n ];\r\n\r\n /**\r\n * Character codes for input.\r\n * @type {!Array.<number>}\r\n * @inner\r\n */\r\n var ain = [];\r\n for (var i=0, k=aout.length; i<k; ++i)\r\n ain[aout[i]] = i;\r\n\r\n /**\r\n * Encodes bytes to base64 char codes.\r\n * @param {!function():number|null} src Bytes source as a function returning the next byte respectively `null` if\r\n * there are no more bytes left.\r\n * @param {!function(number)} dst Characters destination as a function successively called with each encoded char\r\n * code.\r\n */\r\n lxiv.encode = function(src, dst) {\r\n var b, t;\r\n while ((b = src()) !== null) {\r\n dst(aout[(b>>2)&0x3f]);\r\n t = (b&0x3)<<4;\r\n if ((b = src()) !== null) {\r\n t |= (b>>4)&0xf;\r\n dst(aout[(t|((b>>4)&0xf))&0x3f]);\r\n t = (b&0xf)<<2;\r\n if ((b = src()) !== null)\r\n dst(aout[(t|((b>>6)&0x3))&0x3f]),\r\n dst(aout[b&0x3f]);\r\n else\r\n dst(aout[t&0x3f]),\r\n dst(61);\r\n } else\r\n dst(aout[t&0x3f]),\r\n dst(61),\r\n dst(61);\r\n }\r\n };\r\n\r\n /**\r\n * Decodes base64 char codes to bytes.\r\n * @param {!function():number|null} src Characters source as a function returning the next char code respectively\r\n * `null` if there are no more characters left.\r\n * @param {!function(number)} dst Bytes destination as a function successively called with the next byte.\r\n * @throws {Error} If a character code is invalid\r\n */\r\n lxiv.decode = function(src, dst) {\r\n var c, t1, t2;\r\n function fail(c) {\r\n throw Error(\"Illegal character code: \"+c);\r\n }\r\n while ((c = src()) !== null) {\r\n t1 = ain[c];\r\n if (typeof t1 === 'undefined') fail(c);\r\n if ((c = src()) !== null) {\r\n t2 = ain[c];\r\n if (typeof t2 === 'undefined') fail(c);\r\n dst((t1<<2)>>>0|(t2&0x30)>>4);\r\n if ((c = src()) !== null) {\r\n t1 = ain[c];\r\n if (typeof t1 === 'undefined')\r\n if (c === 61) break; else fail(c);\r\n dst(((t2&0xf)<<4)>>>0|(t1&0x3c)>>2);\r\n if ((c = src()) !== null) {\r\n t2 = ain[c];\r\n if (typeof t2 === 'undefined')\r\n if (c === 61) break; else fail(c);\r\n dst(((t1&0x3)<<6)>>>0|t2);\r\n }\r\n }\r\n }\r\n }\r\n };\r\n\r\n /**\r\n * Tests if a string is valid base64.\r\n * @param {string} str String to test\r\n * @returns {boolean} `true` if valid, otherwise `false`\r\n */\r\n lxiv.test = function(str) {\r\n return /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(str);\r\n };\r\n\r\n return lxiv;\r\n }();\r\n\r\n // encodings/base64\r\n\r\n /**\r\n * Encodes this ByteBuffer's contents to a base64 encoded string.\r\n * @param {number=} begin Offset to begin at, defaults to {@link ByteBuffer#offset}.\r\n * @param {number=} end Offset to end at, defaults to {@link ByteBuffer#limit}.\r\n * @returns {string} Base64 encoded string\r\n * @throws {RangeError} If `begin` or `end` is out of bounds\r\n * @expose\r\n */\r\n ByteBufferPrototype.toBase64 = function(begin, end) {\r\n if (typeof begin === 'undefined')\r\n begin = this.offset;\r\n if (typeof end === 'undefined')\r\n end = this.limit;\r\n begin = begin | 0; end = end | 0;\r\n if (begin < 0 || end > this.capacity || begin > end)\r\n throw RangeError(\"begin, end\");\r\n var sd; lxiv.encode(function() {\r\n return begin < end ? this.view[begin++] : null;\r\n }.bind(this), sd = stringDestination());\r\n return sd();\r\n };\r\n\r\n /**\r\n * Decodes a base64 encoded string to a ByteBuffer.\r\n * @param {string} str String to decode\r\n * @param {boolean=} littleEndian Whether to use little or big endian byte order. Defaults to\r\n * {@link ByteBuffer.DEFAULT_ENDIAN}.\r\n * @returns {!ByteBuffer} ByteBuffer\r\n * @expose\r\n */\r\n ByteBuffer.fromBase64 = function(str, littleEndian) {\r\n if (typeof str !== 'string')\r\n throw TypeError(\"str\");\r\n var bb = new ByteBuffer(str.length/4*3, littleEndian),\r\n i = 0;\r\n lxiv.decode(stringSource(str), function(b) {\r\n bb.view[i++] = b;\r\n });\r\n bb.limit = i;\r\n return bb;\r\n };\r\n\r\n /**\r\n * Encodes a binary string to base64 like `window.btoa` does.\r\n * @param {string} str Binary string\r\n * @returns {string} Base64 encoded string\r\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Window.btoa\r\n * @expose\r\n */\r\n ByteBuffer.btoa = function(str) {\r\n return ByteBuffer.fromBinary(str).toBase64();\r\n };\r\n\r\n /**\r\n * Decodes a base64 encoded string to binary like `window.atob` does.\r\n * @param {string} b64 Base64 encoded string\r\n * @returns {string} Binary string\r\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Window.atob\r\n * @expose\r\n */\r\n ByteBuffer.atob = function(b64) {\r\n return ByteBuffer.fromBase64(b64).toBinary();\r\n };\r\n\r\n // encodings/binary\r\n\r\n /**\r\n * Encodes this ByteBuffer to a binary encoded string, that is using only characters 0x00-0xFF as bytes.\r\n * @param {number=} begin Offset to begin at. Defaults to {@link ByteBuffer#offset}.\r\n * @param {number=} end Offset to end at. Defaults to {@link ByteBuffer#limit}.\r\n * @returns {string} Binary encoded string\r\n * @throws {RangeError} If `offset > limit`\r\n * @expose\r\n */\r\n ByteBufferPrototype.toBinary = function(begin, end) {\r\n if (typeof begin === 'undefined')\r\n begin = this.offset;\r\n if (typeof end === 'undefined')\r\n end = this.limit;\r\n begin |= 0; end |= 0;\r\n if (begin < 0 || end > this.capacity() || begin > end)\r\n throw RangeError(\"begin, end\");\r\n if (begin === end)\r\n return \"\";\r\n var chars = [],\r\n parts = [];\r\n while (begin < end) {\r\n chars.push(this.view[begin++]);\r\n if (chars.length >= 1024)\r\n parts.push(String.fromCharCode.apply(String, chars)),\r\n chars = [];\r\n }\r\n return parts.join('') + String.fromCharCode.apply(String, chars);\r\n };\r\n\r\n /**\r\n * Decodes a binary encoded string, that is using only characters 0x00-0xFF as bytes, to a ByteBuffer.\r\n * @param {string} str String to decode\r\n * @param {boolean=} littleEndian Whether to use little or big endian byte order. Defaults to\r\n * {@link ByteBuffer.DEFAULT_ENDIAN}.\r\n * @returns {!ByteBuffer} ByteBuffer\r\n * @expose\r\n */\r\n ByteBuffer.fromBinary = function(str, littleEndian) {\r\n if (typeof str !== 'string')\r\n throw TypeError(\"str\");\r\n var i = 0,\r\n k = str.length,\r\n charCode,\r\n bb = new ByteBuffer(k, littleEndian);\r\n while (i<k) {\r\n charCode = str.charCodeAt(i);\r\n if (charCode > 0xff)\r\n throw RangeError(\"illegal char code: \"+charCode);\r\n bb.view[i++] = charCode;\r\n }\r\n bb.limit = k;\r\n return bb;\r\n };\r\n\r\n // encodings/debug\r\n\r\n /**\r\n * Encodes this ByteBuffer to a hex encoded string with marked offsets. Offset symbols are:\r\n * * `<` : offset,\r\n * * `'` : markedOffset,\r\n * * `>` : limit,\r\n * * `|` : offset and limit,\r\n * * `[` : offset and markedOffset,\r\n * * `]` : markedOffset and limit,\r\n * * `!` : offset, markedOffset and limit\r\n * @param {boolean=} columns If `true` returns two columns hex + ascii, defaults to `false`\r\n * @returns {string|!Array.<string>} Debug string or array of lines if `asArray = true`\r\n * @expose\r\n * @example `>00'01 02<03` contains four bytes with `limit=0, markedOffset=1, offset=3`\r\n * @example `00[01 02 03>` contains four bytes with `offset=markedOffset=1, limit=4`\r\n * @example `00|01 02 03` contains four bytes with `offset=limit=1, markedOffset=-1`\r\n * @example `|` contains zero bytes with `offset=limit=0, markedOffset=-1`\r\n */\r\n ByteBufferPrototype.toDebug = function(columns) {\r\n var i = -1,\r\n k = this.buffer.byteLength,\r\n b,\r\n hex = \"\",\r\n asc = \"\",\r\n out = \"\";\r\n while (i<k) {\r\n if (i !== -1) {\r\n b = this.view[i];\r\n if (b < 0x10) hex += \"0\"+b.toString(16).toUpperCase();\r\n else hex += b.toString(16).toUpperCase();\r\n if (columns)\r\n asc += b > 32 && b < 127 ? String.fromCharCode(b) : '.';\r\n }\r\n ++i;\r\n if (columns) {\r\n if (i > 0 && i % 16 === 0 && i !== k) {\r\n while (hex.length < 3*16+3) hex += \" \";\r\n out += hex+asc+\"\\n\";\r\n hex = asc = \"\";\r\n }\r\n }\r\n if (i === this.offset && i === this.limit)\r\n hex += i === this.markedOffset ? \"!\" : \"|\";\r\n else if (i === this.offset)\r\n hex += i === this.markedOffset ? \"[\" : \"<\";\r\n else if (i === this.limit)\r\n hex += i === this.markedOffset ? \"]\" : \">\";\r\n else\r\n hex += i === this.markedOffset ? \"'\" : (columns || (i !== 0 && i !== k) ? \" \" : \"\");\r\n }\r\n if (columns && hex !== \" \") {\r\n while (hex.length < 3*16+3)\r\n hex += \" \";\r\n out += hex + asc + \"\\n\";\r\n }\r\n return columns ? out : hex;\r\n };\r\n\r\n /**\r\n * Decodes a hex encoded string with marked offsets to a ByteBuffer.\r\n * @param {string} str Debug string to decode (not be generated with `columns = true`)\r\n * @param {boolean=} littleEndian Whether to use little or big endian byte order. Defaults to\r\n * {@link ByteBuffer.DEFAULT_ENDIAN}.\r\n * @param {boolean=} noAssert Whether to skip assertions of offsets and values. Defaults to\r\n * {@link ByteBuffer.DEFAULT_NOASSERT}.\r\n * @returns {!ByteBuffer} ByteBuffer\r\n * @expose\r\n * @see ByteBuffer#toDebug\r\n */\r\n ByteBuffer.fromDebug = function(str, littleEndian, noAssert) {\r\n var k = str.length,\r\n bb = new ByteBuffer(((k+1)/3)|0, littleEndian, noAssert);\r\n var i = 0, j = 0, ch, b,\r\n rs = false, // Require symbol next\r\n ho = false, hm = false, hl = false, // Already has offset (ho), markedOffset (hm), limit (hl)?\r\n fail = false;\r\n while (i<k) {\r\n switch (ch = str.charAt(i++)) {\r\n case '!':\r\n if (!noAssert) {\r\n if (ho || hm || hl) {\r\n fail = true;\r\n break;\r\n }\r\n ho = hm = hl = true;\r\n }\r\n bb.offset = bb.markedOffset = bb.limit = j;\r\n rs = false;\r\n break;\r\n case '|':\r\n if (!noAssert) {\r\n if (ho || hl) {\r\n fail = true;\r\n break;\r\n }\r\n ho = hl = true;\r\n }\r\n bb.offset = bb.limit = j;\r\n rs = false;\r\n break;\r\n case '[':\r\n if (!noAssert) {\r\n if (ho || hm) {\r\n fail = true;\r\n break;\r\n }\r\n ho = hm = true;\r\n }\r\n bb.offset = bb.markedOffset = j;\r\n rs = false;\r\n break;\r\n case '<':\r\n if (!noAssert) {\r\n if (ho) {\r\n fail = true;\r\n break;\r\n }\r\n ho = true;\r\n }\r\n bb.offset = j;\r\n rs = false;\r\n break;\r\n case ']':\r\n if (!noAssert) {\r\n if (hl || hm) {\r\n fail = true;\r\n break;\r\n }\r\n hl = hm = true;\r\n }\r\n bb.limit = bb.markedOffset = j;\r\n rs = false;\r\n break;\r\n case '>':\r\n if (!noAssert) {\r\n if (hl) {\r\n fail = true;\r\n break;\r\n }\r\n hl = true;\r\n }\r\n bb.limit = j;\r\n rs = false;\r\n break;\r\n case \"'\":\r\n if (!noAssert) {\r\n if (hm) {\r\n fail = true;\r\n break;\r\n }\r\n hm = true;\r\n }\r\n bb.markedOffset = j;\r\n rs = false;\r\n break;\r\n case ' ':\r\n rs = false;\r\n break;\r\n default:\r\n if (!noAssert) {\r\n if (rs) {\r\n fail = true;\r\n break;\r\n }\r\n }\r\n b = parseInt(ch+str.charAt(i++), 16);\r\n if (!noAssert) {\r\n if (isNaN(b) || b < 0 || b > 255)\r\n throw TypeError(\"Illegal str: Not a debug encoded string\");\r\n }\r\n bb.view[j++] = b;\r\n rs = true;\r\n }\r\n if (fail)\r\n throw TypeError(\"Illegal str: Invalid symbol at \"+i);\r\n }\r\n if (!noAssert) {\r\n if (!ho || !hl)\r\n throw TypeError(\"Illegal str: Missing offset or limit\");\r\n if (j<bb.buffer.byteLength)\r\n throw TypeError(\"Illegal str: Not a debug encoded string (is it hex?) \"+j+\" < \"+k);\r\n }\r\n return bb;\r\n };\r\n\r\n // encodings/hex\r\n\r\n /**\r\n * Encodes this ByteBuffer's contents to a hex encoded string.\r\n * @param {number=} begin Offset to begin at. Defaults to {@link ByteBuffer#offset}.\r\n * @param {number=} end Offset to end at. Defaults to {@link ByteBuffer#limit}.\r\n * @returns {string} Hex encoded string\r\n * @expose\r\n */\r\n ByteBufferPrototype.toHex = function(begin, end) {\r\n begin = typeof begin === 'undefined' ? this.offset : begin;\r\n end = typeof end === 'undefined' ? this.limit : end;\r\n if (!this.noAssert) {\r\n if (typeof begin !== 'number' || begin % 1 !== 0)\n throw TypeError(\"Illegal begin: Not an integer\");\n begin >>>= 0;\n if (typeof end !== 'number' || end % 1 !== 0)\n throw TypeError(\"Illegal end: Not an integer\");\n end >>>= 0;\n if (begin < 0 || begin > end || end > this.buffer.byteLength)\n throw RangeError(\"Illegal range: 0 <= \"+begin+\" <= \"+end+\" <= \"+this.buffer.byteLength);\n }\r\n var out = new Array(end - begin),\r\n b;\r\n while (begin < end) {\r\n b = this.view[begin++];\r\n if (b < 0x10)\r\n out.push(\"0\", b.toString(16));\r\n else out.push(b.toString(16));\r\n }\r\n return out.join('');\r\n };\r\n\r\n /**\r\n * Decodes a hex encoded string to a ByteBuffer.\r\n * @param {string} str String to decode\r\n * @param {boolean=} littleEndian Whether to use little or big endian byte order. Defaults to\r\n * {@link ByteBuffer.DEFAULT_ENDIAN}.\r\n * @param {boolean=} noAssert Whether to skip assertions of offsets and values. Defaults to\r\n * {@link ByteBuffer.DEFAULT_NOASSERT}.\r\n * @returns {!ByteBuffer} ByteBuffer\r\n * @expose\r\n */\r\n ByteBuffer.fromHex = function(str, littleEndian, noAssert) {\r\n if (!noAssert) {\r\n if (typeof str !== 'string')\r\n throw TypeError(\"Illegal str: Not a string\");\r\n if (str.length % 2 !== 0)\r\n throw TypeError(\"Illegal str: Length not a multiple of 2\");\r\n }\r\n var k = str.length,\r\n bb = new ByteBuffer((k / 2) | 0, littleEndian),\r\n b;\r\n for (var i=0, j=0; i<k; i+=2) {\r\n b = parseInt(str.substring(i, i+2), 16);\r\n if (!noAssert)\r\n if (!isFinite(b) || b < 0 || b > 255)\r\n throw TypeError(\"Illegal str: Contains non-hex characters\");\r\n bb.view[j++] = b;\r\n }\r\n bb.limit = j;\r\n return bb;\r\n };\r\n\r\n // utfx-embeddable\r\n\r\n /**\r\n * utfx-embeddable (c) 2014 Daniel Wirtz <dcode@dcode.io>\r\n * Released under the Apache License, Version 2.0\r\n * see: https://github.com/dcodeIO/utfx for details\r\n */\r\n var utfx = function() {\r\n \"use strict\";\r\n\r\n /**\r\n * utfx namespace.\r\n * @inner\r\n * @type {!Object.<string,*>}\r\n */\r\n var utfx = {};\r\n\r\n /**\r\n * Maximum valid code point.\r\n * @type {number}\r\n * @const\r\n */\r\n utfx.MAX_CODEPOINT = 0x10FFFF;\r\n\r\n /**\r\n * Encodes UTF8 code points to UTF8 bytes.\r\n * @param {(!function():number|null) | number} src Code points source, either as a function returning the next code point\r\n * respectively `null` if there are no more code points left or a single numeric code point.\r\n * @param {!function(number)} dst Bytes destination as a function successively called with the next byte\r\n */\r\n utfx.encodeUTF8 = function(src, dst) {\r\n var cp = null;\r\n if (typeof src === 'number')\r\n cp = src,\r\n src = function() { return null; };\r\n while (cp !== null || (cp = src()) !== null) {\r\n if (cp < 0x80)\r\n dst(cp&0x7F);\r\n else if (cp < 0x800)\r\n dst(((cp>>6)&0x1F)|0xC0),\r\n dst((cp&0x3F)|0x80);\r\n else if (cp < 0x10000)\r\n dst(((cp>>12)&0x0F)|0xE0),\r\n dst(((cp>>6)&0x3F)|0x80),\r\n dst((cp&0x3F)|0x80);\r\n else\r\n dst(((cp>>18)&0x07)|0xF0),\r\n dst(((cp>>12)&0x3F)|0x80),\r\n dst(((cp>>6)&0x3F)|0x80),\r\n dst((cp&0x3F)|0x80);\r\n cp = null;\r\n }\r\n };\r\n\r\n /**\r\n * Decodes UTF8 bytes to UTF8 code points.\r\n * @param {!function():number|null} src Bytes source as a function returning the next byte respectively `null` if there\r\n * are no more bytes left.\r\n * @param {!function(number)} dst Code points destination as a function successively called with each decoded code point.\r\n * @throws {RangeError} If a starting byte is invalid in UTF8\r\n * @throws {Error} If the last sequence is truncated. Has an array property `bytes` holding the\r\n * remaining bytes.\r\n */\r\n utfx.decodeUTF8 = function(src, dst) {\r\n var a, b, c, d, fail = function(b) {\r\n b = b.slice(0, b.indexOf(null));\r\n var err = Error(b.toString());\r\n err.name = \"TruncatedError\";\r\n err['bytes'] = b;\r\n throw err;\r\n };\r\n while ((a = src()) !== null) {\r\n if ((a&0x80) === 0)\r\n dst(a);\r\n else if ((a&0xE0) === 0xC0)\r\n ((b = src()) === null) && fail([a, b]),\r\n dst(((a&0x1F)<<6) | (b&0x3F));\r\n else if ((a&0xF0) === 0xE0)\r\n ((b=src()) === null || (c=src()) === null) && fail([a, b, c]),\r\n dst(((a&0x0F)<<12) | ((b&0x3F)<<6) | (c&0x3F));\r\n else if ((a&0xF8) === 0xF0)\r\n ((b=src()) === null || (c=src()) === null || (d=src()) === null) && fail([a, b, c ,d]),\r\n dst(((a&0x07)<<18) | ((b&0x3F)<<12) | ((c&0x3F)<<6) | (d&0x3F));\r\n else throw RangeError(\"Illegal starting byte: \"+a);\r\n }\r\n };\r\n\r\n /**\r\n * Converts UTF16 characters to UTF8 code points.\r\n * @param {!function():number|null} src Characters source as a function returning the next char code respectively\r\n * `null` if there are no more characters left.\r\n * @param {!function(number)} dst Code points destination as a function successively called with each converted code\r\n * point.\r\n */\r\n utfx.UTF16toUTF8 = function(src, dst) {\r\n var c1, c2 = null;\r\n while (true) {\r\n if ((c1 = c2 !== null ? c2 : src()) === null)\r\n break;\r\n if (c1 >= 0xD800 && c1 <= 0xDFFF) {\r\n if ((c2 = src()) !== null) {\r\n if (c2 >= 0xDC00 && c2 <= 0xDFFF) {\r\n dst((c1-0xD800)*0x400+c2-0xDC00+0x10000);\r\n c2 = null; continue;\r\n }\r\n }\r\n }\r\n dst(c1);\r\n }\r\n if (c2 !== null) dst(c2);\r\n };\r\n\r\n /**\r\n * Converts UTF8 code points to UTF16 characters.\r\n * @param {(!function():number|null) | number} src Code points source, either as a function returning the next code point\r\n * respectively `null` if there are no more code points left or a single numeric code point.\r\n * @param {!function(number)} dst Characters destination as a function successively called with each converted char code.\r\n * @throws {RangeError} If a code point is out of range\r\n */\r\n utfx.UTF8toUTF16 = function(src, dst) {\r\n var cp = null;\r\n if (typeof src === 'number')\r\n cp = src, src = function() { return null; };\r\n while (cp !== null || (cp = src()) !== null) {\r\n if (cp <= 0xFFFF)\r\n dst(cp);\r\n else\r\n cp -= 0x10000,\r\n dst((cp>>10)+0xD800),\r\n dst((cp%0x400)+0xDC00);\r\n cp = null;\r\n }\r\n };\r\n\r\n /**\r\n * Converts and encodes UTF16 characters to UTF8 bytes.\r\n * @param {!function():number|null} src Characters source as a function returning the next char code respectively `null`\r\n * if there are no more characters left.\r\n * @param {!function(number)} dst Bytes destination as a function successively called with the next byte.\r\n */\r\n utfx.encodeUTF16toUTF8 = function(src, dst) {\r\n utfx.UTF16toUTF8(src, function(cp) {\r\n utfx.encodeUTF8(cp, dst);\r\n });\r\n };\r\n\r\n /**\r\n * Decodes and converts UTF8 bytes to UTF16 characters.\r\n * @param {!function():number|null} src Bytes source as a function returning the next byte respectively `null` if there\r\n * are no more bytes left.\r\n * @param {!function(number)} dst Characters destination as a function successively called with each converted char code.\r\n * @throws {RangeError} If a starting byte is invalid in UTF8\r\n * @throws {Error} If the last sequence is truncated. Has an array property `bytes` holding the remaining bytes.\r\n */\r\n utfx.decodeUTF8toUTF16 = function(src, dst) {\r\n utfx.decodeUTF8(src, function(cp) {\r\n utfx.UTF8toUTF16(cp, dst);\r\n });\r\n };\r\n\r\n /**\r\n * Calculates the byte length of an UTF8 code point.\r\n * @param {number} cp UTF8 code point\r\n * @returns {number} Byte length\r\n */\r\n utfx.calculateCodePoint = function(cp) {\r\n return (cp < 0x80) ? 1 : (cp < 0x800) ? 2 : (cp < 0x10000) ? 3 : 4;\r\n };\r\n\r\n /**\r\n * Calculates the number of UTF8 bytes required to store UTF8 code points.\r\n * @param {(!function():number|null)} src Code points source as a function returning the next code point respectively\r\n * `null` if there are no more code points left.\r\n * @returns {number} The number of UTF8 bytes required\r\n */\r\n utfx.calculateUTF8 = function(src) {\r\n var cp, l=0;\r\n while ((cp = src()) !== null)\r\n l += (cp < 0x80) ? 1 : (cp < 0x800) ? 2 : (cp < 0x10000) ? 3 : 4;\r\n return l;\r\n };\r\n\r\n /**\r\n * Calculates the number of UTF8 code points respectively UTF8 bytes required to store UTF16 char codes.\r\n * @param {(!function():number|null)} src Characters source as a function returning the next char code respectively\r\n * `null` if there are no more characters left.\r\n * @returns {!Array.<number>} The number of UTF8 code points at index 0 and the number of UTF8 bytes required at index 1.\r\n */\r\n utfx.calculateUTF16asUTF8 = function(src) {\r\n var n=0, l=0;\r\n utfx.UTF16toUTF8(src, function(cp) {\r\n ++n; l += (cp < 0x80) ? 1 : (cp < 0x800) ? 2 : (cp < 0x10000) ? 3 : 4;\r\n });\r\n return [n,l];\r\n };\r\n\r\n return utfx;\r\n }();\r\n\r\n // encodings/utf8\r\n\r\n /**\r\n * Encodes this ByteBuffer's contents between {@link ByteBuffer#offset} and {@link ByteBuffer#limit} to an UTF8 encoded\r\n * string.\r\n * @returns {string} Hex encoded string\r\n * @throws {RangeError} If `offset > limit`\r\n * @expose\r\n */\r\n ByteBufferPrototype.toUTF8 = function(begin, end) {\r\n if (typeof begin === 'undefined') begin = this.offset;\r\n if (typeof end === 'undefined') end = this.limit;\r\n if (!this.noAssert) {\r\n if (typeof begin !== 'number' || begin % 1 !== 0)\n throw TypeError(\"Illegal begin: Not an integer\");\n begin >>>= 0;\n if (typeof end !== 'number' || end % 1 !== 0)\n throw TypeError(\"Illegal end: Not an integer\");\n end >>>= 0;\n if (begin < 0 || begin > end || end > this.buffer.byteLength)\n throw RangeError(\"Illegal range: 0 <= \"+begin+\" <= \"+end+\" <= \"+this.buffer.byteLength);\n }\r\n var sd; try {\r\n utfx.decodeUTF8toUTF16(function() {\r\n return begin < end ? this.view[begin++] : null;\r\n }.bind(this), sd = stringDestination());\r\n } catch (e) {\r\n if (begin !== end)\r\n throw RangeError(\"Illegal range: Truncated data, \"+begin+\" != \"+end);\r\n }\r\n return sd();\r\n };\r\n\r\n /**\r\n * Decodes an UTF8 encoded string to a ByteBuffer.\r\n * @param {string} str String to decode\r\n * @param {boolean=} littleEndian Whether to use little or big endian byte order. Defaults to\r\n * {@link ByteBuffer.DEFAULT_ENDIAN}.\r\n * @param {boolean=} noAssert Whether to skip assertions of offsets and values. Defaults to\r\n * {@link ByteBuffer.DEFAULT_NOASSERT}.\r\n * @returns {!ByteBuffer} ByteBuffer\r\n * @expose\r\n */\r\n ByteBuffer.fromUTF8 = function(str, littleEndian, noAssert) {\r\n if (!noAssert)\r\n if (typeof str !== 'string')\r\n throw TypeError(\"Illegal str: Not a string\");\r\n var bb = new ByteBuffer(utfx.calculateUTF16asUTF8(stringSource(str), true)[1], littleEndian, noAssert),\r\n i = 0;\r\n utfx.encodeUTF16toUTF8(stringSource(str), function(b) {\r\n bb.view[i++] = b;\r\n });\r\n bb.limit = i;\r\n return bb;\r\n };\r\n\r\n return ByteBuffer;\r\n});\r\n","/*\r\n Copyright 2013 Daniel Wirtz <dcode@dcode.io>\r\n Copyright 2009 The Closure Library Authors. All Rights Reserved.\r\n\r\n Licensed under the Apache License, Version 2.0 (the \"License\");\r\n you may not use this file except in compliance with the License.\r\n You may obtain a copy of the License at\r\n\r\n http://www.apache.org/licenses/LICENSE-2.0\r\n\r\n Unless required by applicable law or agreed to in writing, software\r\n distributed under the License is distributed on an \"AS-IS\" BASIS,\r\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n See the License for the specific language governing permissions and\r\n limitations under the License.\r\n */\r\n\r\n/**\r\n * @license long.js (c) 2013 Daniel Wirtz <dcode@dcode.io>\r\n * Released under the Apache License, Version 2.0\r\n * see: https://github.com/dcodeIO/long.js for details\r\n */\r\n(function(global, factory) {\r\n\r\n /* AMD */ if (typeof define === 'function' && define[\"amd\"])\r\n define([], factory);\r\n /* CommonJS */ else if (typeof require === 'function' && typeof module === \"object\" && module && module[\"exports\"])\r\n module[\"exports\"] = factory();\r\n /* Global */ else\r\n (global[\"dcodeIO\"] = global[\"dcodeIO\"] || {})[\"Long\"] = factory();\r\n\r\n})(this, function() {\r\n \"use strict\";\r\n\r\n /**\r\n * Constructs a 64 bit two's-complement integer, given its low and high 32 bit values as *signed* integers.\r\n * See the from* functions below for more convenient ways of constructing Longs.\r\n * @exports Long\r\n * @class A Long class for representing a 64 bit two's-complement integer value.\r\n * @param {number} low The low (signed) 32 bits of the long\r\n * @param {number} high The high (signed) 32 bits of the long\r\n * @param {boolean=} unsigned Whether unsigned or not, defaults to `false` for signed\r\n * @constructor\r\n */\r\n function Long(low, high, unsigned) {\r\n\r\n /**\r\n * The low 32 bits as a signed value.\r\n * @type {number}\r\n */\r\n this.low = low | 0;\r\n\r\n /**\r\n * The high 32 bits as a signed value.\r\n * @type {number}\r\n */\r\n this.high = high | 0;\r\n\r\n /**\r\n * Whether unsigned or not.\r\n * @type {boolean}\r\n */\r\n this.unsigned = !!unsigned;\r\n }\r\n\r\n // The internal representation of a long is the two given signed, 32-bit values.\r\n // We use 32-bit pieces because these are the size of integers on which\r\n // Javascript performs bit-operations. For operations like addition and\r\n // multiplication, we split each number into 16 bit pieces, which can easily be\r\n // multiplied within Javascript's floating-point representation without overflow\r\n // or change in sign.\r\n //\r\n // In the algorithms below, we frequently reduce the negative case to the\r\n // positive case by negating the input(s) and then post-processing the result.\r\n // Note that we must ALWAYS check specially whether those values are MIN_VALUE\r\n // (-2^63) because -MIN_VALUE == MIN_VALUE (since 2^63 cannot be represented as\r\n // a positive number, it overflows back into a negative). Not handling this\r\n // case would often result in infinite recursion.\r\n //\r\n // Common constant values ZERO, ONE, NEG_ONE, etc. are defined below the from*\r\n // methods on which they depend.\r\n\r\n /**\r\n * An indicator used to reliably determine if an object is a Long or not.\r\n * @type {boolean}\r\n * @const\r\n * @private\r\n */\r\n Long.prototype.__isLong__;\r\n\r\n Object.defineProperty(Long.prototype, \"__isLong__\", {\r\n value: true,\r\n enumerable: false,\r\n configurable: false\r\n });\r\n\r\n /**\r\n * @function\r\n * @param {*} obj Object\r\n * @returns {boolean}\r\n * @inner\r\n */\r\n function isLong(obj) {\r\n return (obj && obj[\"__isLong__\"]) === true;\r\n }\r\n\r\n /**\r\n * Tests if the specified object is a Long.\r\n * @function\r\n * @param {*} obj Object\r\n * @returns {boolean}\r\n */\r\n Long.isLong = isLong;\r\n\r\n /**\r\n * A cache of the Long representations of small integer values.\r\n * @type {!Object}\r\n * @inner\r\n */\r\n var INT_CACHE = {};\r\n\r\n /**\r\n * A cache of the Long representations of small unsigned integer values.\r\n * @type {!Object}\r\n * @inner\r\n */\r\n var UINT_CACHE = {};\r\n\r\n /**\r\n * @param {number} value\r\n * @param {boolean=} unsigned\r\n * @returns {!Long}\r\n * @inner\r\n */\r\n function fromInt(value, unsigned) {\r\n var obj, cachedObj, cache;\r\n if (unsigned) {\r\n value >>>= 0;\r\n if (cache = (0 <= value && value < 256)) {\r\n cachedObj = UINT_CACHE[value];\r\n if (cachedObj)\r\n return cachedObj;\r\n }\r\n obj = fromBits(value, (value | 0) < 0 ? -1 : 0, true);\r\n if (cache)\r\n UINT_CACHE[value] = obj;\r\n return obj;\r\n } else {\r\n value |= 0;\r\n if (cache = (-128 <= value && value < 128)) {\r\n cachedObj = INT_CACHE[value];\r\n if (cachedObj)\r\n return cachedObj;\r\n }\r\n obj = fromBits(value, value < 0 ? -1 : 0, false);\r\n if (cache)\r\n INT_CACHE[value] = obj;\r\n return obj;\r\n }\r\n }\r\n\r\n /**\r\n * Returns a Long representing the given 32 bit integer value.\r\n * @function\r\n * @param {number} value The 32 bit integer in question\r\n * @param {boolean=} unsigned Whether unsigned or not, defaults to `false` for signed\r\n * @returns {!Long} The corresponding Long value\r\n */\r\n Long.fromInt = fromInt;\r\n\r\n /**\r\n * @param {number} value\r\n * @param {boolean=} unsigned\r\n * @returns {!Long}\r\n * @inner\r\n */\r\n function fromNumber(value, unsigned) {\r\n if (isNaN(value) || !isFinite(value))\r\n return unsigned ? UZERO : ZERO;\r\n if (unsigned) {\r\n if (value < 0)\r\n return UZERO;\r\n if (value >= TWO_PWR_64_DBL)\r\n return MAX_UNSIGNED_VALUE;\r\n } else {\r\n if (value <= -TWO_PWR_63_DBL)\r\n return MIN_VALUE;\r\n if (value + 1 >= TWO_PWR_63_DBL)\r\n return MAX_VALUE;\r\n }\r\n if (value < 0)\r\n return fromNumber(-value, unsigned).neg();\r\n return fromBits((value % TWO_PWR_32_DBL) | 0, (value / TWO_PWR_32_DBL) | 0, unsigned);\r\n }\r\n\r\n /**\r\n * Returns a Long representing the given value, provided that it is a finite number. Otherwise, zero is returned.\r\n * @function\r\n * @param {number} value The number in question\r\n * @param {boolean=} unsigned Whether unsigned or not, defaults to `false` for signed\r\n * @returns {!Long} The corresponding Long value\r\n */\r\n Long.fromNumber = fromNumber;\r\n\r\n /**\r\n * @param {number} lowBits\r\n * @param {number} highBits\r\n * @param {boolean=} unsigned\r\n * @returns {!Long}\r\n * @inner\r\n */\r\n function fromBits(lowBits, highBits, unsigned) {\r\n return new Long(lowBits, highBits, unsigned);\r\n }\r\n\r\n /**\r\n * Returns a Long representing the 64 bit integer that comes by concatenating the given low and high bits. Each is\r\n * assumed to use 32 bits.\r\n * @function\r\n * @param {number} lowBits The low 32 bits\r\n * @param {number} highBits The high 32 bits\r\n * @param {boolean=} unsigned Whether unsigned or not, defaults to `false` for signed\r\n * @returns {!Long} The corresponding Long value\r\n */\r\n Long.fromBits = fromBits;\r\n\r\n /**\r\n * @function\r\n * @param {number} base\r\n * @param {number} exponent\r\n * @returns {number}\r\n * @inner\r\n */\r\n var pow_dbl = Math.pow; // Used 4 times (4*8 to 15+4)\r\n\r\n /**\r\n * @param {string} str\r\n * @param {(boolean|number)=} unsigned\r\n * @param {number=} radix\r\n * @returns {!Long}\r\n * @inner\r\n */\r\n function fromString(str, unsigned, radix) {\r\n if (str.length === 0)\r\n throw Error('empty string');\r\n if (str === \"NaN\" || str === \"Infinity\" || str === \"+Infinity\" || str === \"-Infinity\")\r\n return ZERO;\r\n if (typeof unsigned === 'number') {\r\n // For goog.math.long compatibility\r\n radix = unsigned,\r\n unsigned = false;\r\n } else {\r\n unsigned = !! unsigned;\r\n }\r\n radix = radix || 10;\r\n if (radix < 2 || 36 < radix)\r\n throw RangeError('radix');\r\n\r\n var p;\r\n if ((p = str.indexOf('-')) > 0)\r\n throw Error('interior hyphen');\r\n else if (p === 0) {\r\n return fromString(str.substring(1), unsigned, radix).neg();\r\n }\r\n\r\n // Do several (8) digits each time through the loop, so as to\r\n // minimize the calls to the very expensive emulated div.\r\n var radixToPower = fromNumber(pow_dbl(radix, 8));\r\n\r\n var result = ZERO;\r\n for (var i = 0; i < str.length; i += 8) {\r\n var size = Math.min(8, str.length - i),\r\n value = parseInt(str.substring(i, i + size), radix);\r\n if (size < 8) {\r\n var power = fromNumber(pow_dbl(radix, size));\r\n result = result.mul(power).add(fromNumber(value));\r\n } else {\r\n result = result.mul(radixToPower);\r\n result = result.add(fromNumber(value));\r\n }\r\n }\r\n result.unsigned = unsigned;\r\n return result;\r\n }\r\n\r\n /**\r\n * Returns a Long representation of the given string, written using the specified radix.\r\n * @function\r\n * @param {string} str The textual representation of the Long\r\n * @param {(boolean|number)=} unsigned Whether unsigned or not, defaults to `false` for signed\r\n * @param {number=} radix The radix in which the text is written (2-36), defaults to 10\r\n * @returns {!Long} The corresponding Long value\r\n */\r\n Long.fromString = fromString;\r\n\r\n /**\r\n * @function\r\n * @param {!Long|number|string|!{low: number, high: number, unsigned: boolean}} val\r\n * @returns {!Long}\r\n * @inner\r\n */\r\n function fromValue(val) {\r\n if (val /* is compatible */ instanceof Long)\r\n return val;\r\n if (typeof val === 'number')\r\n return fromNumber(val);\r\n if (typeof val === 'string')\r\n return fromString(val);\r\n // Throws for non-objects, converts non-instanceof Long:\r\n return fromBits(val.low, val.high, val.unsigned);\r\n }\r\n\r\n /**\r\n * Converts the specified value to a Long.\r\n * @function\r\n * @param {!Long|number|string|!{low: number, high: number, unsigned: boolean}} val Value\r\n * @returns {!Long}\r\n */\r\n Long.fromValue = fromValue;\r\n\r\n // NOTE: the compiler should inline these constant values below and then remove these variables, so there should be\r\n // no runtime penalty for these.\r\n\r\n /**\r\n * @type {number}\r\n * @const\r\n * @inner\r\n */\r\n var TWO_PWR_16_DBL = 1 << 16;\r\n\r\n /**\r\n * @type {number}\r\n * @const\r\n * @inner\r\n */\r\n var TWO_PWR_24_DBL = 1 << 24;\r\n\r\n /**\r\n * @type {number}\r\n * @const\r\n * @inner\r\n */\r\n var TWO_PWR_32_DBL = TWO_PWR_16_DBL * TWO_PWR_16_DBL;\r\n\r\n /**\r\n * @type {number}\r\n * @const\r\n * @inner\r\n */\r\n var TWO_PWR_64_DBL = TWO_PWR_32_DBL * TWO_PWR_32_DBL;\r\n\r\n /**\r\n * @type {number}\r\n * @const\r\n * @inner\r\n */\r\n var TWO_PWR_63_DBL = TWO_PWR_64_DBL / 2;\r\n\r\n /**\r\n * @type {!Long}\r\n * @const\r\n * @inner\r\n */\r\n var TWO_PWR_24 = fromInt(TWO_PWR_24_DBL);\r\n\r\n /**\r\n * @type {!Long}\r\n * @inner\r\n */\r\n var ZERO = fromInt(0);\r\n\r\n /**\r\n * Signed zero.\r\n * @type {!Long}\r\n */\r\n Long.ZERO = ZERO;\r\n\r\n /**\r\n * @type {!Long}\r\n * @inner\r\n */\r\n var UZERO = fromInt(0, true);\r\n\r\n /**\r\n * Unsigned zero.\r\n * @type {!Long}\r\n */\r\n Long.UZERO = UZERO;\r\n\r\n /**\r\n * @type {!Long}\r\n * @inner\r\n */\r\n var ONE = fromInt(1);\r\n\r\n /**\r\n * Signed one.\r\n * @type {!Long}\r\n */\r\n Long.ONE = ONE;\r\n\r\n /**\r\n * @type {!Long}\r\n * @inner\r\n */\r\n var UONE = fromInt(1, true);\r\n\r\n /**\r\n * Unsigned one.\r\n * @type {!Long}\r\n */\r\n Long.UONE = UONE;\r\n\r\n /**\r\n * @type {!Long}\r\n * @inner\r\n */\r\n var NEG_ONE = fromInt(-1);\r\n\r\n /**\r\n * Signed negative one.\r\n * @type {!Long}\r\n */\r\n Long.NEG_ONE = NEG_ONE;\r\n\r\n /**\r\n * @type {!Long}\r\n * @inner\r\n */\r\n var MAX_VALUE = fromBits(0xFFFFFFFF|0, 0x7FFFFFFF|0, false);\r\n\r\n /**\r\n * Maximum signed value.\r\n * @type {!Long}\r\n */\r\n Long.MAX_VALUE = MAX_VALUE;\r\n\r\n /**\r\n * @type {!Long}\r\n * @inner\r\n */\r\n var MAX_UNSIGNED_VALUE = fromBits(0xFFFFFFFF|0, 0xFFFFFFFF|0, true);\r\n\r\n /**\r\n * Maximum unsigned value.\r\n * @type {!Long}\r\n */\r\n Long.MAX_UNSIGNED_VALUE = MAX_UNSIGNED_VALUE;\r\n\r\n /**\r\n * @type {!Long}\r\n * @inner\r\n */\r\n var MIN_VALUE = fromBits(0, 0x80000000|0, false);\r\n\r\n /**\r\n * Minimum signed value.\r\n * @type {!Long}\r\n */\r\n Long.MIN_VALUE = MIN_VALUE;\r\n\r\n /**\r\n * @alias Long.prototype\r\n * @inner\r\n */\r\n var LongPrototype = Long.prototype;\r\n\r\n /**\r\n * Converts the Long to a 32 bit integer, assuming it is a 32 bit integer.\r\n * @returns {number}\r\n */\r\n LongPrototype.toInt = function toInt() {\r\n return this.unsigned ? this.low >>> 0 : this.low;\r\n };\r\n\r\n /**\r\n * Converts the Long to a the nearest floating-point representation of this value (double, 53 bit mantissa).\r\n * @returns {number}\r\n */\r\n LongPrototype.toNumber = function toNumber() {\r\n if (this.unsigned)\r\n return ((this.high >>> 0) * TWO_PWR_32_DBL) + (this.low >>> 0);\r\n return this.high * TWO_PWR_32_DBL + (this.low >>> 0);\r\n };\r\n\r\n /**\r\n * Converts the Long to a string written in the specified radix.\r\n * @param {number=} radix Radix (2-36), defaults to 10\r\n * @returns {string}\r\n * @override\r\n * @throws {RangeError} If `radix` is out of range\r\n */\r\n LongPrototype.toString = function toString(radix) {\r\n radix = radix || 10;\r\n if (radix < 2 || 36 < radix)\r\n throw RangeError('radix');\r\n if (this.isZero())\r\n return '0';\r\n if (this.isNegative()) { // Unsigned Longs are never negative\r\n if (this.eq(MIN_VALUE)) {\r\n // We need to change the Long value before it can be negated, so we remove\r\n // the bottom-most digit in this base and then recurse to do the rest.\r\n var radixLong = fromNumber(radix),\r\n div = this.div(radixLong),\r\n rem1 = div.mul(radixLong).sub(this);\r\n return div.toString(radix) + rem1.toInt().toString(radix);\r\n } else\r\n return '-' + this.neg().toString(radix);\r\n }\r\n\r\n // Do several (6) digits each time through the loop, so as to\r\n // minimize the calls to the very expensive emulated div.\r\n var radixToPower = fromNumber(pow_dbl(radix, 6), this.unsigned),\r\n rem = this;\r\n var result = '';\r\n while (true) {\r\n var remDiv = rem.div(radixToPower),\r\n intval = rem.sub(remDiv.mul(radixToPower)).toInt() >>> 0,\r\n digits = intval.toString(radix);\r\n rem = remDiv;\r\n if (rem.isZero())\r\n return digits + result;\r\n else {\r\n while (digits.length < 6)\r\n digits = '0' + digits;\r\n result = '' + digits + result;\r\n }\r\n }\r\n };\r\n\r\n /**\r\n * Gets the high 32 bits as a signed integer.\r\n * @returns {number} Signed high bits\r\n */\r\n LongPrototype.getHighBits = function getHighBits() {\r\n return this.high;\r\n };\r\n\r\n /**\r\n * Gets the high 32 bits as an unsigned integer.\r\n * @returns {number} Unsigned high bits\r\n */\r\n LongPrototype.getHighBitsUnsigned = function getHighBitsUnsigned() {\r\n return this.high >>> 0;\r\n };\r\n\r\n /**\r\n * Gets the low 32 bits as a signed integer.\r\n * @returns {number} Signed low bits\r\n */\r\n LongPrototype.getLowBits = function getLowBits() {\r\n return this.low;\r\n };\r\n\r\n /**\r\n * Gets the low 32 bits as an unsigned integer.\r\n * @returns {number} Unsigned low bits\r\n */\r\n LongPrototype.getLowBitsUnsigned = function getLowBitsUnsigned() {\r\n return this.low >>> 0;\r\n };\r\n\r\n /**\r\n * Gets the number of bits needed to represent the absolute value of this Long.\r\n * @returns {number}\r\n */\r\n LongPrototype.getNumBitsAbs = function getNumBitsAbs() {\r\n if (this.isNegative()) // Unsigned Longs are never negative\r\n return this.eq(MIN_VALUE) ? 64 : this.neg().getNumBitsAbs();\r\n var val = this.high != 0 ? this.high : this.low;\r\n for (var bit = 31; bit > 0; bit--)\r\n if ((val & (1 << bit)) != 0)\r\n break;\r\n return this.high != 0 ? bit + 33 : bit + 1;\r\n };\r\n\r\n /**\r\n * Tests if this Long's value equals zero.\r\n * @returns {boolean}\r\n */\r\n LongPrototype.isZero = function isZero() {\r\n return this.high === 0 && this.low === 0;\r\n };\r\n\r\n /**\r\n * Tests if this Long's value is negative.\r\n * @returns {boolean}\r\n */\r\n LongPrototype.isNegative = function isNegative() {\r\n return !this.unsigned && this.high < 0;\r\n };\r\n\r\n /**\r\n * Tests if this Long's value is positive.\r\n * @returns {boolean}\r\n */\r\n LongPrototype.isPositive = function isPositive() {\r\n return this.unsigned || this.high >= 0;\r\n };\r\n\r\n /**\r\n * Tests if this Long's value is odd.\r\n * @returns {boolean}\r\n */\r\n LongPrototype.isOdd = function isOdd() {\r\n return (this.low & 1) === 1;\r\n };\r\n\r\n /**\r\n * Tests if this Long's value is even.\r\n * @returns {boolean}\r\n */\r\n LongPrototype.isEven = function isEven() {\r\n return (this.low & 1) === 0;\r\n };\r\n\r\n /**\r\n * Tests if this Long's value equals the specified's.\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\n LongPrototype.equals = function equals(other) {\r\n if (!isLong(other))\r\n other = fromValue(other);\r\n if (this.unsigned !== other.unsigned && (this.high >>> 31) === 1 && (other.high >>> 31) === 1)\r\n return false;\r\n return this.high === other.high && this.low === other.low;\r\n };\r\n\r\n /**\r\n * Tests if this Long's value equals the specified's. This is an alias of {@link Long#equals}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\n LongPrototype.eq = LongPrototype.equals;\r\n\r\n /**\r\n * Tests if this Long's value differs from the specified's.\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\n LongPrototype.notEquals = function notEquals(other) {\r\n return !this.eq(/* validates */ other);\r\n };\r\n\r\n /**\r\n * Tests if this Long's value differs from the specified's. This is an alias of {@link Long#notEquals}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\n LongPrototype.neq = LongPrototype.notEquals;\r\n\r\n /**\r\n * Tests if this Long's value is less than the specified's.\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\n LongPrototype.lessThan = function lessThan(other) {\r\n return this.comp(/* validates */ other) < 0;\r\n };\r\n\r\n /**\r\n * Tests if this Long's value is less than the specified's. This is an alias of {@link Long#lessThan}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\n LongPrototype.lt = LongPrototype.lessThan;\r\n\r\n /**\r\n * Tests if this Long's value is less than or equal the specified's.\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\n LongPrototype.lessThanOrEqual = function lessThanOrEqual(other) {\r\n return this.comp(/* validates */ other) <= 0;\r\n };\r\n\r\n /**\r\n * Tests if this Long's value is less than or equal the specified's. This is an alias of {@link Long#lessThanOrEqual}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\n LongPrototype.lte = LongPrototype.lessThanOrEqual;\r\n\r\n /**\r\n * Tests if this Long's value is greater than the specified's.\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\n LongPrototype.greaterThan = function greaterThan(other) {\r\n return this.comp(/* validates */ other) > 0;\r\n };\r\n\r\n /**\r\n * Tests if this Long's value is greater than the specified's. This is an alias of {@link Long#greaterThan}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\n LongPrototype.gt = LongPrototype.greaterThan;\r\n\r\n /**\r\n * Tests if this Long's value is greater than or equal the specified's.\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\n LongPrototype.greaterThanOrEqual = function greaterThanOrEqual(other) {\r\n return this.comp(/* validates */ other) >= 0;\r\n };\r\n\r\n /**\r\n * Tests if this Long's value is greater than or equal the specified's. This is an alias of {@link Long#greaterThanOrEqual}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\n LongPrototype.gte = LongPrototype.greaterThanOrEqual;\r\n\r\n /**\r\n * Compares this Long's value with the specified's.\r\n * @param {!Long|number|string} other Other value\r\n * @returns {number} 0 if they are the same, 1 if the this is greater and -1\r\n * if the given one is greater\r\n */\r\n LongPrototype.compare = function compare(other) {\r\n if (!isLong(other))\r\n other = fromValue(other);\r\n if (this.eq(other))\r\n return 0;\r\n var thisNeg = this.isNegative(),\r\n otherNeg = other.isNegative();\r\n if (thisNeg && !otherNeg)\r\n return -1;\r\n if (!thisNeg && otherNeg)\r\n return 1;\r\n // At this point the sign bits are the same\r\n if (!this.unsigned)\r\n return this.sub(other).isNegative() ? -1 : 1;\r\n // Both are positive if at least one is unsigned\r\n return (other.high >>> 0) > (this.high >>> 0) || (other.high === this.high && (other.low >>> 0) > (this.low >>> 0)) ? -1 : 1;\r\n };\r\n\r\n /**\r\n * Compares this Long's value with the specified's. This is an alias of {@link Long#compare}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {number} 0 if they are the same, 1 if the this is greater and -1\r\n * if the given one is greater\r\n */\r\n LongPrototype.comp = LongPrototype.compare;\r\n\r\n /**\r\n * Negates this Long's value.\r\n * @returns {!Long} Negated Long\r\n */\r\n LongPrototype.negate = function negate() {\r\n if (!this.unsigned && this.eq(MIN_VALUE))\r\n return MIN_VALUE;\r\n return this.not().add(ONE);\r\n };\r\n\r\n /**\r\n * Negates this Long's value. This is an alias of {@link Long#negate}.\r\n * @function\r\n * @returns {!Long} Negated Long\r\n */\r\n LongPrototype.neg = LongPrototype.negate;\r\n\r\n /**\r\n * Returns the sum of this and the specified Long.\r\n * @param {!Long|number|string} addend Addend\r\n * @returns {!Long} Sum\r\n */\r\n LongPrototype.add = function add(addend) {\r\n if (!isLong(addend))\r\n addend = fromValue(addend);\r\n\r\n // Divide each number into 4 chunks of 16 bits, and then sum the chunks.\r\n\r\n var a48 = this.high >>> 16;\r\n var a32 = this.high & 0xFFFF;\r\n var a16 = this.low >>> 16;\r\n var a00 = this.low & 0xFFFF;\r\n\r\n var b48 = addend.high >>> 16;\r\n var b32 = addend.high & 0xFFFF;\r\n var b16 = addend.low >>> 16;\r\n var b00 = addend.low & 0xFFFF;\r\n\r\n var c48 = 0, c32 = 0, c16 = 0, c00 = 0;\r\n c00 += a00 + b00;\r\n c16 += c00 >>> 16;\r\n c00 &= 0xFFFF;\r\n c16 += a16 + b16;\r\n c32 += c16 >>> 16;\r\n c16 &= 0xFFFF;\r\n c32 += a32 + b32;\r\n c48 += c32 >>> 16;\r\n c32 &= 0xFFFF;\r\n c48 += a48 + b48;\r\n c48 &= 0xFFFF;\r\n return fromBits((c16 << 16) | c00, (c48 << 16) | c32, this.unsigned);\r\n };\r\n\r\n /**\r\n * Returns the difference of this and the specified Long.\r\n * @param {!Long|number|string} subtrahend Subtrahend\r\n * @returns {!Long} Difference\r\n */\r\n LongPrototype.subtract = function subtract(subtrahend) {\r\n if (!isLong(subtrahend))\r\n subtrahend = fromValue(subtrahend);\r\n return this.add(subtrahend.neg());\r\n };\r\n\r\n /**\r\n * Returns the difference of this and the specified Long. This is an alias of {@link Long#subtract}.\r\n * @function\r\n * @param {!Long|number|string} subtrahend Subtrahend\r\n * @returns {!Long} Difference\r\n */\r\n LongPrototype.sub = LongPrototype.subtract;\r\n\r\n /**\r\n * Returns the product of this and the specified Long.\r\n * @param {!Long|number|string} multiplier Multiplier\r\n * @returns {!Long} Product\r\n */\r\n LongPrototype.multiply = function multiply(multiplier) {\r\n if (this.isZero())\r\n return ZERO;\r\n if (!isLong(multiplier))\r\n multiplier = fromValue(multiplier);\r\n if (multiplier.isZero())\r\n return ZERO;\r\n if (this.eq(MIN_VALUE))\r\n return multiplier.isOdd() ? MIN_VALUE : ZERO;\r\n if (multiplier.eq(MIN_VALUE))\r\n return this.isOdd() ? MIN_VALUE : ZERO;\r\n\r\n if (this.isNegative()) {\r\n if (multiplier.isNegative())\r\n return this.neg().mul(multiplier.neg());\r\n else\r\n return this.neg().mul(multiplier).neg();\r\n } else if (multiplier.isNegative())\r\n return this.mul(multiplier.neg()).neg();\r\n\r\n // If both longs are small, use float multiplication\r\n if (this.lt(TWO_PWR_24) && multiplier.lt(TWO_PWR_24))\r\n return fromNumber(this.toNumber() * multiplier.toNumber(), this.unsigned);\r\n\r\n // Divide each long into 4 chunks of 16 bits, and then add up 4x4 products.\r\n // We can skip products that would overflow.\r\n\r\n var a48 = this.high >>> 16;\r\n var a32 = this.high & 0xFFFF;\r\n var a16 = this.low >>> 16;\r\n var a00 = this.low & 0xFFFF;\r\n\r\n var b48 = multiplier.high >>> 16;\r\n var b32 = multiplier.high & 0xFFFF;\r\n var b16 = multiplier.low >>> 16;\r\n var b00 = multiplier.low & 0xFFFF;\r\n\r\n var c48 = 0, c32 = 0, c16 = 0, c00 = 0;\r\n c00 += a00 * b00;\r\n c16 += c00 >>> 16;\r\n c00 &= 0xFFFF;\r\n c16 += a16 * b00;\r\n c32 += c16 >>> 16;\r\n c16 &= 0xFFFF;\r\n c16 += a00 * b16;\r\n c32 += c16 >>> 16;\r\n c16 &= 0xFFFF;\r\n c32 += a32 * b00;\r\n c48 += c32 >>> 16;\r\n c32 &= 0xFFFF;\r\n c32 += a16 * b16;\r\n c48 += c32 >>> 16;\r\n c32 &= 0xFFFF;\r\n c32 += a00 * b32;\r\n c48 += c32 >>> 16;\r\n c32 &= 0xFFFF;\r\n c48 += a48 * b00 + a32 * b16 + a16 * b32 + a00 * b48;\r\n c48 &= 0xFFFF;\r\n return fromBits((c16 << 16) | c00, (c48 << 16) | c32, this.unsigned);\r\n };\r\n\r\n /**\r\n * Returns the product of this and the specified Long. This is an alias of {@link Long#multiply}.\r\n * @function\r\n * @param {!Long|number|string} multiplier Multiplier\r\n * @returns {!Long} Product\r\n */\r\n LongPrototype.mul = LongPrototype.multiply;\r\n\r\n /**\r\n * Returns this Long divided by the specified. The result is signed if this Long is signed or\r\n * unsigned if this Long is unsigned.\r\n * @param {!Long|number|string} divisor Divisor\r\n * @returns {!Long} Quotient\r\n */\r\n LongPrototype.divide = function divide(divisor) {\r\n if (!isLong(divisor))\r\n divisor = fromValue(divisor);\r\n if (divisor.isZero())\r\n throw Error('division by zero');\r\n if (this.isZero())\r\n return this.unsigned ? UZERO : ZERO;\r\n var approx, rem, res;\r\n if (!this.unsigned) {\r\n // This section is only relevant for signed longs and is derived from the\r\n // closure library as a whole.\r\n if (this.eq(MIN_VALUE)) {\r\n if (divisor.eq(ONE) || divisor.eq(NEG_ONE))\r\n return MIN_VALUE; // recall that -MIN_VALUE == MIN_VALUE\r\n else if (divisor.eq(MIN_VALUE))\r\n return ONE;\r\n else {\r\n // At this point, we have |other| >= 2, so |this/other| < |MIN_VALUE|.\r\n var halfThis = this.shr(1);\r\n approx = halfThis.div(divisor).shl(1);\r\n if (approx.eq(ZERO)) {\r\n return divisor.isNegative() ? ONE : NEG_ONE;\r\n } else {\r\n rem = this.sub(divisor.mul(approx));\r\n res = approx.add(rem.div(divisor));\r\n return res;\r\n }\r\n }\r\n } else if (divisor.eq(MIN_VALUE))\r\n return this.unsigned ? UZERO : ZERO;\r\n if (this.isNegative()) {\r\n if (divisor.isNegative())\r\n return this.neg().div(divisor.neg());\r\n return this.neg().div(divisor).neg();\r\n } else if (divisor.isNegative())\r\n return this.div(divisor.neg()).neg();\r\n res = ZERO;\r\n } else {\r\n // The algorithm below has not been made for unsigned longs. It's therefore\r\n // required to take special care of the MSB prior to running it.\r\n if (!divisor.unsigned)\r\n divisor = divisor.toUnsigned();\r\n if (divisor.gt(this))\r\n return UZERO;\r\n if (divisor.gt(this.shru(1))) // 15 >>> 1 = 7 ; with divisor = 8 ; true\r\n return UONE;\r\n res = UZERO;\r\n }\r\n\r\n // Repeat the following until the remainder is less than other: find a\r\n // floating-point that approximates remainder / other *from below*, add this\r\n // into the result, and subtract it from the remainder. It is critical that\r\n // the approximate value is less than or equal to the real value so that the\r\n // remainder never becomes negative.\r\n rem = this;\r\n while (rem.gte(divisor)) {\r\n // Approximate the result of division. This may be a little greater or\r\n // smaller than the actual value.\r\n approx = Math.max(1, Math.floor(rem.toNumber() / divisor.toNumber()));\r\n\r\n // We will tweak the approximate result by changing it in the 48-th digit or\r\n // the smallest non-fractional digit, whichever is larger.\r\n var log2 = Math.ceil(Math.log(approx) / Math.LN2),\r\n delta = (log2 <= 48) ? 1 : pow_dbl(2, log2 - 48),\r\n\r\n // Decrease the approximation until it is smaller than the remainder. Note\r\n // that if it is too large, the product overflows and is negative.\r\n approxRes = fromNumber(approx),\r\n approxRem = approxRes.mul(divisor);\r\n while (approxRem.isNegative() || approxRem.gt(rem)) {\r\n approx -= delta;\r\n approxRes = fromNumber(approx, this.unsigned);\r\n approxRem = approxRes.mul(divisor);\r\n }\r\n\r\n // We know the answer can't be zero... and actually, zero would cause\r\n // infinite recursion since we would make no progress.\r\n if (approxRes.isZero())\r\n approxRes = ONE;\r\n\r\n res = res.add(approxRes);\r\n rem = rem.sub(approxRem);\r\n }\r\n return res;\r\n };\r\n\r\n /**\r\n * Returns this Long divided by the specified. This is an alias of {@link Long#divide}.\r\n * @function\r\n * @param {!Long|number|string} divisor Divisor\r\n * @returns {!Long} Quotient\r\n */\r\n LongPrototype.div = LongPrototype.divide;\r\n\r\n /**\r\n * Returns this Long modulo the specified.\r\n * @param {!Long|number|string} divisor Divisor\r\n * @returns {!Long} Remainder\r\n */\r\n LongPrototype.modulo = function modulo(divisor) {\r\n if (!isLong(divisor))\r\n divisor = fromValue(divisor);\r\n return this.sub(this.div(divisor).mul(divisor));\r\n };\r\n\r\n /**\r\n * Returns this Long modulo the specified. This is an alias of {@link Long#modulo}.\r\n * @function\r\n * @param {!Long|number|string} divisor Divisor\r\n * @returns {!Long} Remainder\r\n */\r\n LongPrototype.mod = LongPrototype.modulo;\r\n\r\n /**\r\n * Returns the bitwise NOT of this Long.\r\n * @returns {!Long}\r\n */\r\n LongPrototype.not = function not() {\r\n return fromBits(~this.low, ~this.high, this.unsigned);\r\n };\r\n\r\n /**\r\n * Returns the bitwise AND of this Long and the specified.\r\n * @param {!Long|number|string} other Other Long\r\n * @returns {!Long}\r\n */\r\n LongPrototype.and = function and(other) {\r\n if (!isLong(other))\r\n other = fromValue(other);\r\n return fromBits(this.low & other.low, this.high & other.high, this.unsigned);\r\n };\r\n\r\n /**\r\n * Returns the bitwise OR of this Long and the specified.\r\n * @param {!Long|number|string} other Other Long\r\n * @returns {!Long}\r\n */\r\n LongPrototype.or = function or(other) {\r\n if (!isLong(other))\r\n other = fromValue(other);\r\n return fromBits(this.low | other.low, this.high | other.high, this.unsigned);\r\n };\r\n\r\n /**\r\n * Returns the bitwise XOR of this Long and the given one.\r\n * @param {!Long|number|string} other Other Long\r\n * @returns {!Long}\r\n */\r\n LongPrototype.xor = function xor(other) {\r\n if (!isLong(other))\r\n other = fromValue(other);\r\n return fromBits(this.low ^ other.low, this.high ^ other.high, this.unsigned);\r\n };\r\n\r\n /**\r\n * Returns this Long with bits shifted to the left by the given amount.\r\n * @param {number|!Long} numBits Number of bits\r\n * @returns {!Long} Shifted Long\r\n */\r\n LongPrototype.shiftLeft = function shiftLeft(numBits) {\r\n if (isLong(numBits))\r\n numBits = numBits.toInt();\r\n if ((numBits &= 63) === 0)\r\n return this;\r\n else if (numBits < 32)\r\n return fromBits(this.low << numBits, (this.high << numBits) | (this.low >>> (32 - numBits)), this.unsigned);\r\n else\r\n return fromBits(0, this.low << (numBits - 32), this.unsigned);\r\n };\r\n\r\n /**\r\n * Returns this Long with bits shifted to the left by the given amount. This is an alias of {@link Long#shiftLeft}.\r\n * @function\r\n * @param {number|!Long} numBits Number of bits\r\n * @returns {!Long} Shifted Long\r\n */\r\n LongPrototype.shl = LongPrototype.shiftLeft;\r\n\r\n /**\r\n * Returns this Long with bits arithmetically shifted to the right by the given amount.\r\n * @param {number|!Long} numBits Number of bits\r\n * @returns {!Long} Shifted Long\r\n */\r\n LongPrototype.shiftRight = function shiftRight(numBits) {\r\n if (isLong(numBits))\r\n numBits = numBits.toInt();\r\n if ((numBits &= 63) === 0)\r\n return this;\r\n else if (numBits < 32)\r\n return fromBits((this.low >>> numBits) | (this.high << (32 - numBits)), this.high >> numBits, this.unsigned);\r\n else\r\n return fromBits(this.high >> (numBits - 32), this.high >= 0 ? 0 : -1, this.unsigned);\r\n };\r\n\r\n /**\r\n * Returns this Long with bits arithmetically shifted to the right by the given amount. This is an alias of {@link Long#shiftRight}.\r\n * @function\r\n * @param {number|!Long} numBits Number of bits\r\n * @returns {!Long} Shifted Long\r\n */\r\n LongPrototype.shr = LongPrototype.shiftRight;\r\n\r\n /**\r\n * Returns this Long with bits logically shifted to the right by the given amount.\r\n * @param {number|!Long} numBits Number of bits\r\n * @returns {!Long} Shifted Long\r\n */\r\n LongPrototype.shiftRightUnsigned = function shiftRightUnsigned(numBits) {\r\n if (isLong(numBits))\r\n numBits = numBits.toInt();\r\n numBits &= 63;\r\n if (numBits === 0)\r\n return this;\r\n else {\r\n var high = this.high;\r\n if (numBits < 32) {\r\n var low = this.low;\r\n return fromBits((low >>> numBits) | (high << (32 - numBits)), high >>> numBits, this.unsigned);\r\n } else if (numBits === 32)\r\n return fromBits(high, 0, this.unsigned);\r\n else\r\n return fromBits(high >>> (numBits - 32), 0, this.unsigned);\r\n }\r\n };\r\n\r\n /**\r\n * Returns this Long with bits logically shifted to the right by the given amount. This is an alias of {@link Long#shiftRightUnsigned}.\r\n * @function\r\n * @param {number|!Long} numBits Number of bits\r\n * @returns {!Long} Shifted Long\r\n */\r\n LongPrototype.shru = LongPrototype.shiftRightUnsigned;\r\n\r\n /**\r\n * Converts this Long to signed.\r\n * @returns {!Long} Signed long\r\n */\r\n LongPrototype.toSigned = function toSigned() {\r\n if (!this.unsigned)\r\n return this;\r\n return fromBits(this.low, this.high, false);\r\n };\r\n\r\n /**\r\n * Converts this Long to unsigned.\r\n * @returns {!Long} Unsigned long\r\n */\r\n LongPrototype.toUnsigned = function toUnsigned() {\r\n if (this.unsigned)\r\n return this;\r\n return fromBits(this.low, this.high, true);\r\n };\r\n\r\n /**\r\n * Converts this Long to its byte representation.\r\n * @param {boolean=} le Whether little or big endian, defaults to big endian\r\n * @returns {!Array.<number>} Byte representation\r\n */\r\n LongPrototype.toBytes = function(le) {\r\n return le ? this.toBytesLE() : this.toBytesBE();\r\n }\r\n\r\n /**\r\n * Converts this Long to its little endian byte representation.\r\n * @returns {!Array.<number>} Little endian byte representation\r\n */\r\n LongPrototype.toBytesLE = function() {\r\n var hi = this.high,\r\n lo = this.low;\r\n return [\r\n lo & 0xff,\r\n (lo >>> 8) & 0xff,\r\n (lo >>> 16) & 0xff,\r\n (lo >>> 24) & 0xff,\r\n hi & 0xff,\r\n (hi >>> 8) & 0xff,\r\n (hi >>> 16) & 0xff,\r\n (hi >>> 24) & 0xff\r\n ];\r\n }\r\n\r\n /**\r\n * Converts this Long to its big endian byte representation.\r\n * @returns {!Array.<number>} Big endian byte representation\r\n */\r\n LongPrototype.toBytesBE = function() {\r\n var hi = this.high,\r\n lo = this.low;\r\n return [\r\n (hi >>> 24) & 0xff,\r\n (hi >>> 16) & 0xff,\r\n (hi >>> 8) & 0xff,\r\n hi & 0xff,\r\n (lo >>> 24) & 0xff,\r\n (lo >>> 16) & 0xff,\r\n (lo >>> 8) & 0xff,\r\n lo & 0xff\r\n ];\r\n }\r\n\r\n return Long;\r\n});\r\n","/*!\n * @overview es6-promise - a tiny implementation of Promises/A+.\n * @copyright Copyright (c) 2014 Yehuda Katz, Tom Dale, Stefan Penner and contributors (Conversion to ES6 API by Jake Archibald)\n * @license Licensed under MIT license\n * See https://raw.githubusercontent.com/stefanpenner/es6-promise/master/LICENSE\n * @version v4.2.8+1e68dce6\n */\n\n(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n\ttypeof define === 'function' && define.amd ? define(factory) :\n\t(global.ES6Promise = factory());\n}(this, (function () { 'use strict';\n\nfunction objectOrFunction(x) {\n var type = typeof x;\n return x !== null && (type === 'object' || type === 'function');\n}\n\nfunction isFunction(x) {\n return typeof x === 'function';\n}\n\n\n\nvar _isArray = void 0;\nif (Array.isArray) {\n _isArray = Array.isArray;\n} else {\n _isArray = function (x) {\n return Object.prototype.toString.call(x) === '[object Array]';\n };\n}\n\nvar isArray = _isArray;\n\nvar len = 0;\nvar vertxNext = void 0;\nvar customSchedulerFn = void 0;\n\nvar asap = function asap(callback, arg) {\n queue[len] = callback;\n queue[len + 1] = arg;\n len += 2;\n if (len === 2) {\n // If len is 2, that means that we need to schedule an async flush.\n // If additional callbacks are queued before the queue is flushed, they\n // will be processed by this flush that we are scheduling.\n if (customSchedulerFn) {\n customSchedulerFn(flush);\n } else {\n scheduleFlush();\n }\n }\n};\n\nfunction setScheduler(scheduleFn) {\n customSchedulerFn = scheduleFn;\n}\n\nfunction setAsap(asapFn) {\n asap = asapFn;\n}\n\nvar browserWindow = typeof window !== 'undefined' ? window : undefined;\nvar browserGlobal = browserWindow || {};\nvar BrowserMutationObserver = browserGlobal.MutationObserver || browserGlobal.WebKitMutationObserver;\nvar isNode = typeof self === 'undefined' && typeof process !== 'undefined' && {}.toString.call(process) === '[object process]';\n\n// test for web worker but not in IE10\nvar isWorker = typeof Uint8ClampedArray !== 'undefined' && typeof importScripts !== 'undefined' && typeof MessageChannel !== 'undefined';\n\n// node\nfunction useNextTick() {\n // node version 0.10.x displays a deprecation warning when nextTick is used recursively\n // see https://github.com/cujojs/when/issues/410 for details\n return function () {\n return process.nextTick(flush);\n };\n}\n\n// vertx\nfunction useVertxTimer() {\n if (typeof vertxNext !== 'undefined') {\n return function () {\n vertxNext(flush);\n };\n }\n\n return useSetTimeout();\n}\n\nfunction useMutationObserver() {\n var iterations = 0;\n var observer = new BrowserMutationObserver(flush);\n var node = document.createTextNode('');\n observer.observe(node, { characterData: true });\n\n return function () {\n node.data = iterations = ++iterations % 2;\n };\n}\n\n// web worker\nfunction useMessageChannel() {\n var channel = new MessageChannel();\n channel.port1.onmessage = flush;\n return function () {\n return channel.port2.postMessage(0);\n };\n}\n\nfunction useSetTimeout() {\n // Store setTimeout reference so es6-promise will be unaffected by\n // other code modifying setTimeout (like sinon.useFakeTimers())\n var globalSetTimeout = setTimeout;\n return function () {\n return globalSetTimeout(flush, 1);\n };\n}\n\nvar queue = new Array(1000);\nfunction flush() {\n for (var i = 0; i < len; i += 2) {\n var callback = queue[i];\n var arg = queue[i + 1];\n\n callback(arg);\n\n queue[i] = undefined;\n queue[i + 1] = undefined;\n }\n\n len = 0;\n}\n\nfunction attemptVertx() {\n try {\n var vertx = Function('return this')().require('vertx');\n vertxNext = vertx.runOnLoop || vertx.runOnContext;\n return useVertxTimer();\n } catch (e) {\n return useSetTimeout();\n }\n}\n\nvar scheduleFlush = void 0;\n// Decide what async method to use to triggering processing of queued callbacks:\nif (isNode) {\n scheduleFlush = useNextTick();\n} else if (BrowserMutationObserver) {\n scheduleFlush = useMutationObserver();\n} else if (isWorker) {\n scheduleFlush = useMessageChannel();\n} else if (browserWindow === undefined && typeof require === 'function') {\n scheduleFlush = attemptVertx();\n} else {\n scheduleFlush = useSetTimeout();\n}\n\nfunction then(onFulfillment, onRejection) {\n var parent = this;\n\n var child = new this.constructor(noop);\n\n if (child[PROMISE_ID] === undefined) {\n makePromise(child);\n }\n\n var _state = parent._state;\n\n\n if (_state) {\n var callback = arguments[_state - 1];\n asap(function () {\n return invokeCallback(_state, child, callback, parent._result);\n });\n } else {\n subscribe(parent, child, onFulfillment, onRejection);\n }\n\n return child;\n}\n\n/**\n `Promise.resolve` returns a promise that will become resolved with the\n passed `value`. It is shorthand for the following:\n\n ```javascript\n let promise = new Promise(function(resolve, reject){\n resolve(1);\n });\n\n promise.then(function(value){\n // value === 1\n });\n ```\n\n Instead of writing the above, your code now simply becomes the following:\n\n ```javascript\n let promise = Promise.resolve(1);\n\n promise.then(function(value){\n // value === 1\n });\n ```\n\n @method resolve\n @static\n @param {Any} value value that the returned promise will be resolved with\n Useful for tooling.\n @return {Promise} a promise that will become fulfilled with the given\n `value`\n*/\nfunction resolve$1(object) {\n /*jshint validthis:true */\n var Constructor = this;\n\n if (object && typeof object === 'object' && object.constructor === Constructor) {\n return object;\n }\n\n var promise = new Constructor(noop);\n resolve(promise, object);\n return promise;\n}\n\nvar PROMISE_ID = Math.random().toString(36).substring(2);\n\nfunction noop() {}\n\nvar PENDING = void 0;\nvar FULFILLED = 1;\nvar REJECTED = 2;\n\nfunction selfFulfillment() {\n return new TypeError(\"You cannot resolve a promise with itself\");\n}\n\nfunction cannotReturnOwn() {\n return new TypeError('A promises callback cannot return that same promise.');\n}\n\nfunction tryThen(then$$1, value, fulfillmentHandler, rejectionHandler) {\n try {\n then$$1.call(value, fulfillmentHandler, rejectionHandler);\n } catch (e) {\n return e;\n }\n}\n\nfunction handleForeignThenable(promise, thenable, then$$1) {\n asap(function (promise) {\n var sealed = false;\n var error = tryThen(then$$1, thenable, function (value) {\n if (sealed) {\n return;\n }\n sealed = true;\n if (thenable !== value) {\n resolve(promise, value);\n } else {\n fulfill(promise, value);\n }\n }, function (reason) {\n if (sealed) {\n return;\n }\n sealed = true;\n\n reject(promise, reason);\n }, 'Settle: ' + (promise._label || ' unknown promise'));\n\n if (!sealed && error) {\n sealed = true;\n reject(promise, error);\n }\n }, promise);\n}\n\nfunction handleOwnThenable(promise, thenable) {\n if (thenable._state === FULFILLED) {\n fulfill(promise, thenable._result);\n } else if (thenable._state === REJECTED) {\n reject(promise, thenable._result);\n } else {\n subscribe(thenable, undefined, function (value) {\n return resolve(promise, value);\n }, function (reason) {\n return reject(promise, reason);\n });\n }\n}\n\nfunction handleMaybeThenable(promise, maybeThenable, then$$1) {\n if (maybeThenable.constructor === promise.constructor && then$$1 === then && maybeThenable.constructor.resolve === resolve$1) {\n handleOwnThenable(promise, maybeThenable);\n } else {\n if (then$$1 === undefined) {\n fulfill(promise, maybeThenable);\n } else if (isFunction(then$$1)) {\n handleForeignThenable(promise, maybeThenable, then$$1);\n } else {\n fulfill(promise, maybeThenable);\n }\n }\n}\n\nfunction resolve(promise, value) {\n if (promise === value) {\n reject(promise, selfFulfillment());\n } else if (objectOrFunction(value)) {\n var then$$1 = void 0;\n try {\n then$$1 = value.then;\n } catch (error) {\n reject(promise, error);\n return;\n }\n handleMaybeThenable(promise, value, then$$1);\n } else {\n fulfill(promise, value);\n }\n}\n\nfunction publishRejection(promise) {\n if (promise._onerror) {\n promise._onerror(promise._result);\n }\n\n publish(promise);\n}\n\nfunction fulfill(promise, value) {\n if (promise._state !== PENDING) {\n return;\n }\n\n promise._result = value;\n promise._state = FULFILLED;\n\n if (promise._subscribers.length !== 0) {\n asap(publish, promise);\n }\n}\n\nfunction reject(promise, reason) {\n if (promise._state !== PENDING) {\n return;\n }\n promise._state = REJECTED;\n promise._result = reason;\n\n asap(publishRejection, promise);\n}\n\nfunction subscribe(parent, child, onFulfillment, onRejection) {\n var _subscribers = parent._subscribers;\n var length = _subscribers.length;\n\n\n parent._onerror = null;\n\n _subscribers[length] = child;\n _subscribers[length + FULFILLED] = onFulfillment;\n _subscribers[length + REJECTED] = onRejection;\n\n if (length === 0 && parent._state) {\n asap(publish, parent);\n }\n}\n\nfunction publish(promise) {\n var subscribers = promise._subscribers;\n var settled = promise._state;\n\n if (subscribers.length === 0) {\n return;\n }\n\n var child = void 0,\n callback = void 0,\n detail = promise._result;\n\n for (var i = 0; i < subscribers.length; i += 3) {\n child = subscribers[i];\n callback = subscribers[i + settled];\n\n if (child) {\n invokeCallback(settled, child, callback, detail);\n } else {\n callback(detail);\n }\n }\n\n promise._subscribers.length = 0;\n}\n\nfunction invokeCallback(settled, promise, callback, detail) {\n var hasCallback = isFunction(callback),\n value = void 0,\n error = void 0,\n succeeded = true;\n\n if (hasCallback) {\n try {\n value = callback(detail);\n } catch (e) {\n succeeded = false;\n error = e;\n }\n\n if (promise === value) {\n reject(promise, cannotReturnOwn());\n return;\n }\n } else {\n value = detail;\n }\n\n if (promise._state !== PENDING) {\n // noop\n } else if (hasCallback && succeeded) {\n resolve(promise, value);\n } else if (succeeded === false) {\n reject(promise, error);\n } else if (settled === FULFILLED) {\n fulfill(promise, value);\n } else if (settled === REJECTED) {\n reject(promise, value);\n }\n}\n\nfunction initializePromise(promise, resolver) {\n try {\n resolver(function resolvePromise(value) {\n resolve(promise, value);\n }, function rejectPromise(reason) {\n reject(promise, reason);\n });\n } catch (e) {\n reject(promise, e);\n }\n}\n\nvar id = 0;\nfunction nextId() {\n return id++;\n}\n\nfunction makePromise(promise) {\n promise[PROMISE_ID] = id++;\n promise._state = undefined;\n promise._result = undefined;\n promise._subscribers = [];\n}\n\nfunction validationError() {\n return new Error('Array Methods must be provided an Array');\n}\n\nvar Enumerator = function () {\n function Enumerator(Constructor, input) {\n this._instanceConstructor = Constructor;\n this.promise = new Constructor(noop);\n\n if (!this.promise[PROMISE_ID]) {\n makePromise(this.promise);\n }\n\n if (isArray(input)) {\n this.length = input.length;\n this._remaining = input.length;\n\n this._result = new Array(this.length);\n\n if (this.length === 0) {\n fulfill(this.promise, this._result);\n } else {\n this.length = this.length || 0;\n this._enumerate(input);\n if (this._remaining === 0) {\n fulfill(this.promise, this._result);\n }\n }\n } else {\n reject(this.promise, validationError());\n }\n }\n\n Enumerator.prototype._enumerate = function _enumerate(input) {\n for (var i = 0; this._state === PENDING && i < input.length; i++) {\n this._eachEntry(input[i], i);\n }\n };\n\n Enumerator.prototype._eachEntry = function _eachEntry(entry, i) {\n var c = this._instanceConstructor;\n var resolve$$1 = c.resolve;\n\n\n if (resolve$$1 === resolve$1) {\n var _then = void 0;\n var error = void 0;\n var didError = false;\n try {\n _then = entry.then;\n } catch (e) {\n didError = true;\n error = e;\n }\n\n if (_then === then && entry._state !== PENDING) {\n this._settledAt(entry._state, i, entry._result);\n } else if (typeof _then !== 'function') {\n this._remaining--;\n this._result[i] = entry;\n } else if (c === Promise$1) {\n var promise = new c(noop);\n if (didError) {\n reject(promise, error);\n } else {\n handleMaybeThenable(promise, entry, _then);\n }\n this._willSettleAt(promise, i);\n } else {\n this._willSettleAt(new c(function (resolve$$1) {\n return resolve$$1(entry);\n }), i);\n }\n } else {\n this._willSettleAt(resolve$$1(entry), i);\n }\n };\n\n Enumerator.prototype._settledAt = function _settledAt(state, i, value) {\n var promise = this.promise;\n\n\n if (promise._state === PENDING) {\n this._remaining--;\n\n if (state === REJECTED) {\n reject(promise, value);\n } else {\n this._result[i] = value;\n }\n }\n\n if (this._remaining === 0) {\n fulfill(promise, this._result);\n }\n };\n\n Enumerator.prototype._willSettleAt = function _willSettleAt(promise, i) {\n var enumerator = this;\n\n subscribe(promise, undefined, function (value) {\n return enumerator._settledAt(FULFILLED, i, value);\n }, function (reason) {\n return enumerator._settledAt(REJECTED, i, reason);\n });\n };\n\n return Enumerator;\n}();\n\n/**\n `Promise.all` accepts an array of promises, and returns a new promise which\n is fulfilled with an array of fulfillment values for the passed promises, or\n rejected with the reason of the first passed promise to be rejected. It casts all\n elements of the passed iterable to promises as it runs this algorithm.\n\n Example:\n\n ```javascript\n let promise1 = resolve(1);\n let promise2 = resolve(2);\n let promise3 = resolve(3);\n let promises = [ promise1, promise2, promise3 ];\n\n Promise.all(promises).then(function(array){\n // The array here would be [ 1, 2, 3 ];\n });\n ```\n\n If any of the `promises` given to `all` are rejected, the first promise\n that is rejected will be given as an argument to the returned promises's\n rejection handler. For example:\n\n Example:\n\n ```javascript\n let promise1 = resolve(1);\n let promise2 = reject(new Error(\"2\"));\n let promise3 = reject(new Error(\"3\"));\n let promises = [ promise1, promise2, promise3 ];\n\n Promise.all(promises).then(function(array){\n // Code here never runs because there are rejected promises!\n }, function(error) {\n // error.message === \"2\"\n });\n ```\n\n @method all\n @static\n @param {Array} entries array of promises\n @param {String} label optional string for labeling the promise.\n Useful for tooling.\n @return {Promise} promise that is fulfilled when all `promises` have been\n fulfilled, or rejected if any of them become rejected.\n @static\n*/\nfunction all(entries) {\n return new Enumerator(this, entries).promise;\n}\n\n/**\n `Promise.race` returns a new promise which is settled in the same way as the\n first passed promise to settle.\n\n Example:\n\n ```javascript\n let promise1 = new Promise(function(resolve, reject){\n setTimeout(function(){\n resolve('promise 1');\n }, 200);\n });\n\n let promise2 = new Promise(function(resolve, reject){\n setTimeout(function(){\n resolve('promise 2');\n }, 100);\n });\n\n Promise.race([promise1, promise2]).then(function(result){\n // result === 'promise 2' because it was resolved before promise1\n // was resolved.\n });\n ```\n\n `Promise.race` is deterministic in that only the state of the first\n settled promise matters. For example, even if other promises given to the\n `promises` array argument are resolved, but the first settled promise has\n become rejected before the other promises became fulfilled, the returned\n promise will become rejected:\n\n ```javascript\n let promise1 = new Promise(function(resolve, reject){\n setTimeout(function(){\n resolve('promise 1');\n }, 200);\n });\n\n let promise2 = new Promise(function(resolve, reject){\n setTimeout(function(){\n reject(new Error('promise 2'));\n }, 100);\n });\n\n Promise.race([promise1, promise2]).then(function(result){\n // Code here never runs\n }, function(reason){\n // reason.message === 'promise 2' because promise 2 became rejected before\n // promise 1 became fulfilled\n });\n ```\n\n An example real-world use case is implementing timeouts:\n\n ```javascript\n Promise.race([ajax('foo.json'), timeout(5000)])\n ```\n\n @method race\n @static\n @param {Array} promises array of promises to observe\n Useful for tooling.\n @return {Promise} a promise which settles in the same way as the first passed\n promise to settle.\n*/\nfunction race(entries) {\n /*jshint validthis:true */\n var Constructor = this;\n\n if (!isArray(entries)) {\n return new Constructor(function (_, reject) {\n return reject(new TypeError('You must pass an array to race.'));\n });\n } else {\n return new Constructor(function (resolve, reject) {\n var length = entries.length;\n for (var i = 0; i < length; i++) {\n Constructor.resolve(entries[i]).then(resolve, reject);\n }\n });\n }\n}\n\n/**\n `Promise.reject` returns a promise rejected with the passed `reason`.\n It is shorthand for the following:\n\n ```javascript\n let promise = new Promise(function(resolve, reject){\n reject(new Error('WHOOPS'));\n });\n\n promise.then(function(value){\n // Code here doesn't run because the promise is rejected!\n }, function(reason){\n // reason.message === 'WHOOPS'\n });\n ```\n\n Instead of writing the above, your code now simply becomes the following:\n\n ```javascript\n let promise = Promise.reject(new Error('WHOOPS'));\n\n promise.then(function(value){\n // Code here doesn't run because the promise is rejected!\n }, function(reason){\n // reason.message === 'WHOOPS'\n });\n ```\n\n @method reject\n @static\n @param {Any} reason value that the returned promise will be rejected with.\n Useful for tooling.\n @return {Promise} a promise rejected with the given `reason`.\n*/\nfunction reject$1(reason) {\n /*jshint validthis:true */\n var Constructor = this;\n var promise = new Constructor(noop);\n reject(promise, reason);\n return promise;\n}\n\nfunction needsResolver() {\n throw new TypeError('You must pass a resolver function as the first argument to the promise constructor');\n}\n\nfunction needsNew() {\n throw new TypeError(\"Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.\");\n}\n\n/**\n Promise objects represent the eventual result of an asynchronous operation. The\n primary way of interacting with a promise is through its `then` method, which\n registers callbacks to receive either a promise's eventual value or the reason\n why the promise cannot be fulfilled.\n\n Terminology\n -----------\n\n - `promise` is an object or function with a `then` method whose behavior conforms to this specification.\n - `thenable` is an object or function that defines a `then` method.\n - `value` is any legal JavaScript value (including undefined, a thenable, or a promise).\n - `exception` is a value that is thrown using the throw statement.\n - `reason` is a value that indicates why a promise was rejected.\n - `settled` the final resting state of a promise, fulfilled or rejected.\n\n A promise can be in one of three states: pending, fulfilled, or rejected.\n\n Promises that are fulfilled have a fulfillment value and are in the fulfilled\n state. Promises that are rejected have a rejection reason and are in the\n rejected state. A fulfillment value is never a thenable.\n\n Promises can also be said to *resolve* a value. If this value is also a\n promise, then the original promise's settled state will match the value's\n settled state. So a promise that *resolves* a promise that rejects will\n itself reject, and a promise that *resolves* a promise that fulfills will\n itself fulfill.\n\n\n Basic Usage:\n ------------\n\n ```js\n let promise = new Promise(function(resolve, reject) {\n // on success\n resolve(value);\n\n // on failure\n reject(reason);\n });\n\n promise.then(function(value) {\n // on fulfillment\n }, function(reason) {\n // on rejection\n });\n ```\n\n Advanced Usage:\n ---------------\n\n Promises shine when abstracting away asynchronous interactions such as\n `XMLHttpRequest`s.\n\n ```js\n function getJSON(url) {\n return new Promise(function(resolve, reject){\n let xhr = new XMLHttpRequest();\n\n xhr.open('GET', url);\n xhr.onreadystatechange = handler;\n xhr.responseType = 'json';\n xhr.setRequestHeader('Accept', 'application/json');\n xhr.send();\n\n function handler() {\n if (this.readyState === this.DONE) {\n if (this.status === 200) {\n resolve(this.response);\n } else {\n reject(new Error('getJSON: `' + url + '` failed with status: [' + this.status + ']'));\n }\n }\n };\n });\n }\n\n getJSON('/posts.json').then(function(json) {\n // on fulfillment\n }, function(reason) {\n // on rejection\n });\n ```\n\n Unlike callbacks, promises are great composable primitives.\n\n ```js\n Promise.all([\n getJSON('/posts'),\n getJSON('/comments')\n ]).then(function(values){\n values[0] // => postsJSON\n values[1] // => commentsJSON\n\n return values;\n });\n ```\n\n @class Promise\n @param {Function} resolver\n Useful for tooling.\n @constructor\n*/\n\nvar Promise$1 = function () {\n function Promise(resolver) {\n this[PROMISE_ID] = nextId();\n this._result = this._state = undefined;\n this._subscribers = [];\n\n if (noop !== resolver) {\n typeof resolver !== 'function' && needsResolver();\n this instanceof Promise ? initializePromise(this, resolver) : needsNew();\n }\n }\n\n /**\n The primary way of interacting with a promise is through its `then` method,\n which registers callbacks to receive either a promise's eventual value or the\n reason why the promise cannot be fulfilled.\n ```js\n findUser().then(function(user){\n // user is available\n }, function(reason){\n // user is unavailable, and you are given the reason why\n });\n ```\n Chaining\n --------\n The return value of `then` is itself a promise. This second, 'downstream'\n promise is resolved with the return value of the first promise's fulfillment\n or rejection handler, or rejected if the handler throws an exception.\n ```js\n findUser().then(function (user) {\n return user.name;\n }, function (reason) {\n return 'default name';\n }).then(function (userName) {\n // If `findUser` fulfilled, `userName` will be the user's name, otherwise it\n // will be `'default name'`\n });\n findUser().then(function (user) {\n throw new Error('Found user, but still unhappy');\n }, function (reason) {\n throw new Error('`findUser` rejected and we're unhappy');\n }).then(function (value) {\n // never reached\n }, function (reason) {\n // if `findUser` fulfilled, `reason` will be 'Found user, but still unhappy'.\n // If `findUser` rejected, `reason` will be '`findUser` rejected and we're unhappy'.\n });\n ```\n If the downstream promise does not specify a rejection handler, rejection reasons will be propagated further downstream.\n ```js\n findUser().then(function (user) {\n throw new PedagogicalException('Upstream error');\n }).then(function (value) {\n // never reached\n }).then(function (value) {\n // never reached\n }, function (reason) {\n // The `PedgagocialException` is propagated all the way down to here\n });\n ```\n Assimilation\n ------------\n Sometimes the value you want to propagate to a downstream promise can only be\n retrieved asynchronously. This can be achieved by returning a promise in the\n fulfillment or rejection handler. The downstream promise will then be pending\n until the returned promise is settled. This is called *assimilation*.\n ```js\n findUser().then(function (user) {\n return findCommentsByAuthor(user);\n }).then(function (comments) {\n // The user's comments are now available\n });\n ```\n If the assimliated promise rejects, then the downstream promise will also reject.\n ```js\n findUser().then(function (user) {\n return findCommentsByAuthor(user);\n }).then(function (comments) {\n // If `findCommentsByAuthor` fulfills, we'll have the value here\n }, function (reason) {\n // If `findCommentsByAuthor` rejects, we'll have the reason here\n });\n ```\n Simple Example\n --------------\n Synchronous Example\n ```javascript\n let result;\n try {\n result = findResult();\n // success\n } catch(reason) {\n // failure\n }\n ```\n Errback Example\n ```js\n findResult(function(result, err){\n if (err) {\n // failure\n } else {\n // success\n }\n });\n ```\n Promise Example;\n ```javascript\n findResult().then(function(result){\n // success\n }, function(reason){\n // failure\n });\n ```\n Advanced Example\n --------------\n Synchronous Example\n ```javascript\n let author, books;\n try {\n author = findAuthor();\n books = findBooksByAuthor(author);\n // success\n } catch(reason) {\n // failure\n }\n ```\n Errback Example\n ```js\n function foundBooks(books) {\n }\n function failure(reason) {\n }\n findAuthor(function(author, err){\n if (err) {\n failure(err);\n // failure\n } else {\n try {\n findBoooksByAuthor(author, function(books, err) {\n if (err) {\n failure(err);\n } else {\n try {\n foundBooks(books);\n } catch(reason) {\n failure(reason);\n }\n }\n });\n } catch(error) {\n failure(err);\n }\n // success\n }\n });\n ```\n Promise Example;\n ```javascript\n findAuthor().\n then(findBooksByAuthor).\n then(function(books){\n // found books\n }).catch(function(reason){\n // something went wrong\n });\n ```\n @method then\n @param {Function} onFulfilled\n @param {Function} onRejected\n Useful for tooling.\n @return {Promise}\n */\n\n /**\n `catch` is simply sugar for `then(undefined, onRejection)` which makes it the same\n as the catch block of a try/catch statement.\n ```js\n function findAuthor(){\n throw new Error('couldn't find that author');\n }\n // synchronous\n try {\n findAuthor();\n } catch(reason) {\n // something went wrong\n }\n // async with promises\n findAuthor().catch(function(reason){\n // something went wrong\n });\n ```\n @method catch\n @param {Function} onRejection\n Useful for tooling.\n @return {Promise}\n */\n\n\n Promise.prototype.catch = function _catch(onRejection) {\n return this.then(null, onRejection);\n };\n\n /**\n `finally` will be invoked regardless of the promise's fate just as native\n try/catch/finally behaves\n \n Synchronous example:\n \n ```js\n findAuthor() {\n if (Math.random() > 0.5) {\n throw new Error();\n }\n return new Author();\n }\n \n try {\n return findAuthor(); // succeed or fail\n } catch(error) {\n return findOtherAuther();\n } finally {\n // always runs\n // doesn't affect the return value\n }\n ```\n \n Asynchronous example:\n \n ```js\n findAuthor().catch(function(reason){\n return findOtherAuther();\n }).finally(function(){\n // author was either found, or not\n });\n ```\n \n @method finally\n @param {Function} callback\n @return {Promise}\n */\n\n\n Promise.prototype.finally = function _finally(callback) {\n var promise = this;\n var constructor = promise.constructor;\n\n if (isFunction(callback)) {\n return promise.then(function (value) {\n return constructor.resolve(callback()).then(function () {\n return value;\n });\n }, function (reason) {\n return constructor.resolve(callback()).then(function () {\n throw reason;\n });\n });\n }\n\n return promise.then(callback, callback);\n };\n\n return Promise;\n}();\n\nPromise$1.prototype.then = then;\nPromise$1.all = all;\nPromise$1.race = race;\nPromise$1.resolve = resolve$1;\nPromise$1.reject = reject$1;\nPromise$1._setScheduler = setScheduler;\nPromise$1._setAsap = setAsap;\nPromise$1._asap = asap;\n\n/*global self*/\nfunction polyfill() {\n var local = void 0;\n\n if (typeof global !== 'undefined') {\n local = global;\n } else if (typeof self !== 'undefined') {\n local = self;\n } else {\n try {\n local = Function('return this')();\n } catch (e) {\n throw new Error('polyfill failed because global object is unavailable in this environment');\n }\n }\n\n var P = local.Promise;\n\n if (P) {\n var promiseToString = null;\n try {\n promiseToString = Object.prototype.toString.call(P.resolve());\n } catch (e) {\n // silently ignored\n }\n\n if (promiseToString === '[object Promise]' && !P.cast) {\n return;\n }\n }\n\n local.Promise = Promise$1;\n}\n\n// Strange compat..\nPromise$1.polyfill = polyfill;\nPromise$1.Promise = Promise$1;\n\nreturn Promise$1;\n\n})));\n\n\n\n//# sourceMappingURL=es6-promise.map\n","module.exports = stringify\nstringify.default = stringify\nstringify.stable = deterministicStringify\nstringify.stableStringify = deterministicStringify\n\nvar LIMIT_REPLACE_NODE = '[...]'\nvar CIRCULAR_REPLACE_NODE = '[Circular]'\n\nvar arr = []\nvar replacerStack = []\n\nfunction defaultOptions () {\n return {\n depthLimit: Number.MAX_SAFE_INTEGER,\n edgesLimit: Number.MAX_SAFE_INTEGER\n }\n}\n\n// Regular stringify\nfunction stringify (obj, replacer, spacer, options) {\n if (typeof options === 'undefined') {\n options = defaultOptions()\n }\n\n decirc(obj, '', 0, [], undefined, 0, options)\n var res\n try {\n if (replacerStack.length === 0) {\n res = JSON.stringify(obj, replacer, spacer)\n } else {\n res = JSON.stringify(obj, replaceGetterValues(replacer), spacer)\n }\n } catch (_) {\n return JSON.stringify('[unable to serialize, circular reference is too complex to analyze]')\n } finally {\n while (arr.length !== 0) {\n var part = arr.pop()\n if (part.length === 4) {\n Object.defineProperty(part[0], part[1], part[3])\n } else {\n part[0][part[1]] = part[2]\n }\n }\n }\n return res\n}\n\nfunction setReplace (replace, val, k, parent) {\n var propertyDescriptor = Object.getOwnPropertyDescriptor(parent, k)\n if (propertyDescriptor.get !== undefined) {\n if (propertyDescriptor.configurable) {\n Object.defineProperty(parent, k, { value: replace })\n arr.push([parent, k, val, propertyDescriptor])\n } else {\n replacerStack.push([val, k, replace])\n }\n } else {\n parent[k] = replace\n arr.push([parent, k, val])\n }\n}\n\nfunction decirc (val, k, edgeIndex, stack, parent, depth, options) {\n depth += 1\n var i\n if (typeof val === 'object' && val !== null) {\n for (i = 0; i < stack.length; i++) {\n if (stack[i] === val) {\n setReplace(CIRCULAR_REPLACE_NODE, val, k, parent)\n return\n }\n }\n\n if (\n typeof options.depthLimit !== 'undefined' &&\n depth > options.depthLimit\n ) {\n setReplace(LIMIT_REPLACE_NODE, val, k, parent)\n return\n }\n\n if (\n typeof options.edgesLimit !== 'undefined' &&\n edgeIndex + 1 > options.edgesLimit\n ) {\n setReplace(LIMIT_REPLACE_NODE, val, k, parent)\n return\n }\n\n stack.push(val)\n // Optimize for Arrays. Big arrays could kill the performance otherwise!\n if (Array.isArray(val)) {\n for (i = 0; i < val.length; i++) {\n decirc(val[i], i, i, stack, val, depth, options)\n }\n } else {\n var keys = Object.keys(val)\n for (i = 0; i < keys.length; i++) {\n var key = keys[i]\n decirc(val[key], key, i, stack, val, depth, options)\n }\n }\n stack.pop()\n }\n}\n\n// Stable-stringify\nfunction compareFunction (a, b) {\n if (a < b) {\n return -1\n }\n if (a > b) {\n return 1\n }\n return 0\n}\n\nfunction deterministicStringify (obj, replacer, spacer, options) {\n if (typeof options === 'undefined') {\n options = defaultOptions()\n }\n\n var tmp = deterministicDecirc(obj, '', 0, [], undefined, 0, options) || obj\n var res\n try {\n if (replacerStack.length === 0) {\n res = JSON.stringify(tmp, replacer, spacer)\n } else {\n res = JSON.stringify(tmp, replaceGetterValues(replacer), spacer)\n }\n } catch (_) {\n return JSON.stringify('[unable to serialize, circular reference is too complex to analyze]')\n } finally {\n // Ensure that we restore the object as it was.\n while (arr.length !== 0) {\n var part = arr.pop()\n if (part.length === 4) {\n Object.defineProperty(part[0], part[1], part[3])\n } else {\n part[0][part[1]] = part[2]\n }\n }\n }\n return res\n}\n\nfunction deterministicDecirc (val, k, edgeIndex, stack, parent, depth, options) {\n depth += 1\n var i\n if (typeof val === 'object' && val !== null) {\n for (i = 0; i < stack.length; i++) {\n if (stack[i] === val) {\n setReplace(CIRCULAR_REPLACE_NODE, val, k, parent)\n return\n }\n }\n try {\n if (typeof val.toJSON === 'function') {\n return\n }\n } catch (_) {\n return\n }\n\n if (\n typeof options.depthLimit !== 'undefined' &&\n depth > options.depthLimit\n ) {\n setReplace(LIMIT_REPLACE_NODE, val, k, parent)\n return\n }\n\n if (\n typeof options.edgesLimit !== 'undefined' &&\n edgeIndex + 1 > options.edgesLimit\n ) {\n setReplace(LIMIT_REPLACE_NODE, val, k, parent)\n return\n }\n\n stack.push(val)\n // Optimize for Arrays. Big arrays could kill the performance otherwise!\n if (Array.isArray(val)) {\n for (i = 0; i < val.length; i++) {\n deterministicDecirc(val[i], i, i, stack, val, depth, options)\n }\n } else {\n // Create a temporary object in the required way\n var tmp = {}\n var keys = Object.keys(val).sort(compareFunction)\n for (i = 0; i < keys.length; i++) {\n var key = keys[i]\n deterministicDecirc(val[key], key, i, stack, val, depth, options)\n tmp[key] = val[key]\n }\n if (typeof parent !== 'undefined') {\n arr.push([parent, k, val])\n parent[k] = tmp\n } else {\n return tmp\n }\n }\n stack.pop()\n }\n}\n\n// wraps replacer function to handle values we couldn't replace\n// and mark them as replaced value\nfunction replaceGetterValues (replacer) {\n replacer =\n typeof replacer !== 'undefined'\n ? replacer\n : function (k, v) {\n return v\n }\n return function (key, val) {\n if (replacerStack.length > 0) {\n for (var i = 0; i < replacerStack.length; i++) {\n var part = replacerStack[i]\n if (part[1] === key && part[0] === val) {\n val = part[2]\n replacerStack.splice(i, 1)\n break\n }\n }\n }\n return replacer.call(this, key, val)\n }\n}\n","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */\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","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var overArg = require('./_overArg');\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\nmodule.exports = getPrototype;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nmodule.exports = overArg;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n","var baseGetTag = require('./_baseGetTag'),\n isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var baseGetTag = require('./_baseGetTag'),\n getPrototype = require('./_getPrototype'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n}\n\nmodule.exports = isPlainObject;\n","var baseGetTag = require('./_baseGetTag'),\n isArray = require('./isArray'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar stringTag = '[object String]';\n\n/**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\nfunction isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\n}\n\nmodule.exports = isString;\n","module.exports = Long;\r\n\r\n/**\r\n * wasm optimizations, to do native i64 multiplication and divide\r\n */\r\nvar wasm = null;\r\n\r\ntry {\r\n wasm = new WebAssembly.Instance(new WebAssembly.Module(new Uint8Array([\r\n 0, 97, 115, 109, 1, 0, 0, 0, 1, 13, 2, 96, 0, 1, 127, 96, 4, 127, 127, 127, 127, 1, 127, 3, 7, 6, 0, 1, 1, 1, 1, 1, 6, 6, 1, 127, 1, 65, 0, 11, 7, 50, 6, 3, 109, 117, 108, 0, 1, 5, 100, 105, 118, 95, 115, 0, 2, 5, 100, 105, 118, 95, 117, 0, 3, 5, 114, 101, 109, 95, 115, 0, 4, 5, 114, 101, 109, 95, 117, 0, 5, 8, 103, 101, 116, 95, 104, 105, 103, 104, 0, 0, 10, 191, 1, 6, 4, 0, 35, 0, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 126, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 127, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 128, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 129, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 130, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11\r\n ])), {}).exports;\r\n} catch (e) {\r\n // no wasm support :(\r\n}\r\n\r\n/**\r\n * Constructs a 64 bit two's-complement integer, given its low and high 32 bit values as *signed* integers.\r\n * See the from* functions below for more convenient ways of constructing Longs.\r\n * @exports Long\r\n * @class A Long class for representing a 64 bit two's-complement integer value.\r\n * @param {number} low The low (signed) 32 bits of the long\r\n * @param {number} high The high (signed) 32 bits of the long\r\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\r\n * @constructor\r\n */\r\nfunction Long(low, high, unsigned) {\r\n\r\n /**\r\n * The low 32 bits as a signed value.\r\n * @type {number}\r\n */\r\n this.low = low | 0;\r\n\r\n /**\r\n * The high 32 bits as a signed value.\r\n * @type {number}\r\n */\r\n this.high = high | 0;\r\n\r\n /**\r\n * Whether unsigned or not.\r\n * @type {boolean}\r\n */\r\n this.unsigned = !!unsigned;\r\n}\r\n\r\n// The internal representation of a long is the two given signed, 32-bit values.\r\n// We use 32-bit pieces because these are the size of integers on which\r\n// Javascript performs bit-operations. For operations like addition and\r\n// multiplication, we split each number into 16 bit pieces, which can easily be\r\n// multiplied within Javascript's floating-point representation without overflow\r\n// or change in sign.\r\n//\r\n// In the algorithms below, we frequently reduce the negative case to the\r\n// positive case by negating the input(s) and then post-processing the result.\r\n// Note that we must ALWAYS check specially whether those values are MIN_VALUE\r\n// (-2^63) because -MIN_VALUE == MIN_VALUE (since 2^63 cannot be represented as\r\n// a positive number, it overflows back into a negative). Not handling this\r\n// case would often result in infinite recursion.\r\n//\r\n// Common constant values ZERO, ONE, NEG_ONE, etc. are defined below the from*\r\n// methods on which they depend.\r\n\r\n/**\r\n * An indicator used to reliably determine if an object is a Long or not.\r\n * @type {boolean}\r\n * @const\r\n * @private\r\n */\r\nLong.prototype.__isLong__;\r\n\r\nObject.defineProperty(Long.prototype, \"__isLong__\", { value: true });\r\n\r\n/**\r\n * @function\r\n * @param {*} obj Object\r\n * @returns {boolean}\r\n * @inner\r\n */\r\nfunction isLong(obj) {\r\n return (obj && obj[\"__isLong__\"]) === true;\r\n}\r\n\r\n/**\r\n * Tests if the specified object is a Long.\r\n * @function\r\n * @param {*} obj Object\r\n * @returns {boolean}\r\n */\r\nLong.isLong = isLong;\r\n\r\n/**\r\n * A cache of the Long representations of small integer values.\r\n * @type {!Object}\r\n * @inner\r\n */\r\nvar INT_CACHE = {};\r\n\r\n/**\r\n * A cache of the Long representations of small unsigned integer values.\r\n * @type {!Object}\r\n * @inner\r\n */\r\nvar UINT_CACHE = {};\r\n\r\n/**\r\n * @param {number} value\r\n * @param {boolean=} unsigned\r\n * @returns {!Long}\r\n * @inner\r\n */\r\nfunction fromInt(value, unsigned) {\r\n var obj, cachedObj, cache;\r\n if (unsigned) {\r\n value >>>= 0;\r\n if (cache = (0 <= value && value < 256)) {\r\n cachedObj = UINT_CACHE[value];\r\n if (cachedObj)\r\n return cachedObj;\r\n }\r\n obj = fromBits(value, (value | 0) < 0 ? -1 : 0, true);\r\n if (cache)\r\n UINT_CACHE[value] = obj;\r\n return obj;\r\n } else {\r\n value |= 0;\r\n if (cache = (-128 <= value && value < 128)) {\r\n cachedObj = INT_CACHE[value];\r\n if (cachedObj)\r\n return cachedObj;\r\n }\r\n obj = fromBits(value, value < 0 ? -1 : 0, false);\r\n if (cache)\r\n INT_CACHE[value] = obj;\r\n return obj;\r\n }\r\n}\r\n\r\n/**\r\n * Returns a Long representing the given 32 bit integer value.\r\n * @function\r\n * @param {number} value The 32 bit integer in question\r\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\r\n * @returns {!Long} The corresponding Long value\r\n */\r\nLong.fromInt = fromInt;\r\n\r\n/**\r\n * @param {number} value\r\n * @param {boolean=} unsigned\r\n * @returns {!Long}\r\n * @inner\r\n */\r\nfunction fromNumber(value, unsigned) {\r\n if (isNaN(value))\r\n return unsigned ? UZERO : ZERO;\r\n if (unsigned) {\r\n if (value < 0)\r\n return UZERO;\r\n if (value >= TWO_PWR_64_DBL)\r\n return MAX_UNSIGNED_VALUE;\r\n } else {\r\n if (value <= -TWO_PWR_63_DBL)\r\n return MIN_VALUE;\r\n if (value + 1 >= TWO_PWR_63_DBL)\r\n return MAX_VALUE;\r\n }\r\n if (value < 0)\r\n return fromNumber(-value, unsigned).neg();\r\n return fromBits((value % TWO_PWR_32_DBL) | 0, (value / TWO_PWR_32_DBL) | 0, unsigned);\r\n}\r\n\r\n/**\r\n * Returns a Long representing the given value, provided that it is a finite number. Otherwise, zero is returned.\r\n * @function\r\n * @param {number} value The number in question\r\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\r\n * @returns {!Long} The corresponding Long value\r\n */\r\nLong.fromNumber = fromNumber;\r\n\r\n/**\r\n * @param {number} lowBits\r\n * @param {number} highBits\r\n * @param {boolean=} unsigned\r\n * @returns {!Long}\r\n * @inner\r\n */\r\nfunction fromBits(lowBits, highBits, unsigned) {\r\n return new Long(lowBits, highBits, unsigned);\r\n}\r\n\r\n/**\r\n * Returns a Long representing the 64 bit integer that comes by concatenating the given low and high bits. Each is\r\n * assumed to use 32 bits.\r\n * @function\r\n * @param {number} lowBits The low 32 bits\r\n * @param {number} highBits The high 32 bits\r\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\r\n * @returns {!Long} The corresponding Long value\r\n */\r\nLong.fromBits = fromBits;\r\n\r\n/**\r\n * @function\r\n * @param {number} base\r\n * @param {number} exponent\r\n * @returns {number}\r\n * @inner\r\n */\r\nvar pow_dbl = Math.pow; // Used 4 times (4*8 to 15+4)\r\n\r\n/**\r\n * @param {string} str\r\n * @param {(boolean|number)=} unsigned\r\n * @param {number=} radix\r\n * @returns {!Long}\r\n * @inner\r\n */\r\nfunction fromString(str, unsigned, radix) {\r\n if (str.length === 0)\r\n throw Error('empty string');\r\n if (str === \"NaN\" || str === \"Infinity\" || str === \"+Infinity\" || str === \"-Infinity\")\r\n return ZERO;\r\n if (typeof unsigned === 'number') {\r\n // For goog.math.long compatibility\r\n radix = unsigned,\r\n unsigned = false;\r\n } else {\r\n unsigned = !! unsigned;\r\n }\r\n radix = radix || 10;\r\n if (radix < 2 || 36 < radix)\r\n throw RangeError('radix');\r\n\r\n var p;\r\n if ((p = str.indexOf('-')) > 0)\r\n throw Error('interior hyphen');\r\n else if (p === 0) {\r\n return fromString(str.substring(1), unsigned, radix).neg();\r\n }\r\n\r\n // Do several (8) digits each time through the loop, so as to\r\n // minimize the calls to the very expensive emulated div.\r\n var radixToPower = fromNumber(pow_dbl(radix, 8));\r\n\r\n var result = ZERO;\r\n for (var i = 0; i < str.length; i += 8) {\r\n var size = Math.min(8, str.length - i),\r\n value = parseInt(str.substring(i, i + size), radix);\r\n if (size < 8) {\r\n var power = fromNumber(pow_dbl(radix, size));\r\n result = result.mul(power).add(fromNumber(value));\r\n } else {\r\n result = result.mul(radixToPower);\r\n result = result.add(fromNumber(value));\r\n }\r\n }\r\n result.unsigned = unsigned;\r\n return result;\r\n}\r\n\r\n/**\r\n * Returns a Long representation of the given string, written using the specified radix.\r\n * @function\r\n * @param {string} str The textual representation of the Long\r\n * @param {(boolean|number)=} unsigned Whether unsigned or not, defaults to signed\r\n * @param {number=} radix The radix in which the text is written (2-36), defaults to 10\r\n * @returns {!Long} The corresponding Long value\r\n */\r\nLong.fromString = fromString;\r\n\r\n/**\r\n * @function\r\n * @param {!Long|number|string|!{low: number, high: number, unsigned: boolean}} val\r\n * @param {boolean=} unsigned\r\n * @returns {!Long}\r\n * @inner\r\n */\r\nfunction fromValue(val, unsigned) {\r\n if (typeof val === 'number')\r\n return fromNumber(val, unsigned);\r\n if (typeof val === 'string')\r\n return fromString(val, unsigned);\r\n // Throws for non-objects, converts non-instanceof Long:\r\n return fromBits(val.low, val.high, typeof unsigned === 'boolean' ? unsigned : val.unsigned);\r\n}\r\n\r\n/**\r\n * Converts the specified value to a Long using the appropriate from* function for its type.\r\n * @function\r\n * @param {!Long|number|string|!{low: number, high: number, unsigned: boolean}} val Value\r\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\r\n * @returns {!Long}\r\n */\r\nLong.fromValue = fromValue;\r\n\r\n// NOTE: the compiler should inline these constant values below and then remove these variables, so there should be\r\n// no runtime penalty for these.\r\n\r\n/**\r\n * @type {number}\r\n * @const\r\n * @inner\r\n */\r\nvar TWO_PWR_16_DBL = 1 << 16;\r\n\r\n/**\r\n * @type {number}\r\n * @const\r\n * @inner\r\n */\r\nvar TWO_PWR_24_DBL = 1 << 24;\r\n\r\n/**\r\n * @type {number}\r\n * @const\r\n * @inner\r\n */\r\nvar TWO_PWR_32_DBL = TWO_PWR_16_DBL * TWO_PWR_16_DBL;\r\n\r\n/**\r\n * @type {number}\r\n * @const\r\n * @inner\r\n */\r\nvar TWO_PWR_64_DBL = TWO_PWR_32_DBL * TWO_PWR_32_DBL;\r\n\r\n/**\r\n * @type {number}\r\n * @const\r\n * @inner\r\n */\r\nvar TWO_PWR_63_DBL = TWO_PWR_64_DBL / 2;\r\n\r\n/**\r\n * @type {!Long}\r\n * @const\r\n * @inner\r\n */\r\nvar TWO_PWR_24 = fromInt(TWO_PWR_24_DBL);\r\n\r\n/**\r\n * @type {!Long}\r\n * @inner\r\n */\r\nvar ZERO = fromInt(0);\r\n\r\n/**\r\n * Signed zero.\r\n * @type {!Long}\r\n */\r\nLong.ZERO = ZERO;\r\n\r\n/**\r\n * @type {!Long}\r\n * @inner\r\n */\r\nvar UZERO = fromInt(0, true);\r\n\r\n/**\r\n * Unsigned zero.\r\n * @type {!Long}\r\n */\r\nLong.UZERO = UZERO;\r\n\r\n/**\r\n * @type {!Long}\r\n * @inner\r\n */\r\nvar ONE = fromInt(1);\r\n\r\n/**\r\n * Signed one.\r\n * @type {!Long}\r\n */\r\nLong.ONE = ONE;\r\n\r\n/**\r\n * @type {!Long}\r\n * @inner\r\n */\r\nvar UONE = fromInt(1, true);\r\n\r\n/**\r\n * Unsigned one.\r\n * @type {!Long}\r\n */\r\nLong.UONE = UONE;\r\n\r\n/**\r\n * @type {!Long}\r\n * @inner\r\n */\r\nvar NEG_ONE = fromInt(-1);\r\n\r\n/**\r\n * Signed negative one.\r\n * @type {!Long}\r\n */\r\nLong.NEG_ONE = NEG_ONE;\r\n\r\n/**\r\n * @type {!Long}\r\n * @inner\r\n */\r\nvar MAX_VALUE = fromBits(0xFFFFFFFF|0, 0x7FFFFFFF|0, false);\r\n\r\n/**\r\n * Maximum signed value.\r\n * @type {!Long}\r\n */\r\nLong.MAX_VALUE = MAX_VALUE;\r\n\r\n/**\r\n * @type {!Long}\r\n * @inner\r\n */\r\nvar MAX_UNSIGNED_VALUE = fromBits(0xFFFFFFFF|0, 0xFFFFFFFF|0, true);\r\n\r\n/**\r\n * Maximum unsigned value.\r\n * @type {!Long}\r\n */\r\nLong.MAX_UNSIGNED_VALUE = MAX_UNSIGNED_VALUE;\r\n\r\n/**\r\n * @type {!Long}\r\n * @inner\r\n */\r\nvar MIN_VALUE = fromBits(0, 0x80000000|0, false);\r\n\r\n/**\r\n * Minimum signed value.\r\n * @type {!Long}\r\n */\r\nLong.MIN_VALUE = MIN_VALUE;\r\n\r\n/**\r\n * @alias Long.prototype\r\n * @inner\r\n */\r\nvar LongPrototype = Long.prototype;\r\n\r\n/**\r\n * Converts the Long to a 32 bit integer, assuming it is a 32 bit integer.\r\n * @returns {number}\r\n */\r\nLongPrototype.toInt = function toInt() {\r\n return this.unsigned ? this.low >>> 0 : this.low;\r\n};\r\n\r\n/**\r\n * Converts the Long to a the nearest floating-point representation of this value (double, 53 bit mantissa).\r\n * @returns {number}\r\n */\r\nLongPrototype.toNumber = function toNumber() {\r\n if (this.unsigned)\r\n return ((this.high >>> 0) * TWO_PWR_32_DBL) + (this.low >>> 0);\r\n return this.high * TWO_PWR_32_DBL + (this.low >>> 0);\r\n};\r\n\r\n/**\r\n * Converts the Long to a string written in the specified radix.\r\n * @param {number=} radix Radix (2-36), defaults to 10\r\n * @returns {string}\r\n * @override\r\n * @throws {RangeError} If `radix` is out of range\r\n */\r\nLongPrototype.toString = function toString(radix) {\r\n radix = radix || 10;\r\n if (radix < 2 || 36 < radix)\r\n throw RangeError('radix');\r\n if (this.isZero())\r\n return '0';\r\n if (this.isNegative()) { // Unsigned Longs are never negative\r\n if (this.eq(MIN_VALUE)) {\r\n // We need to change the Long value before it can be negated, so we remove\r\n // the bottom-most digit in this base and then recurse to do the rest.\r\n var radixLong = fromNumber(radix),\r\n div = this.div(radixLong),\r\n rem1 = div.mul(radixLong).sub(this);\r\n return div.toString(radix) + rem1.toInt().toString(radix);\r\n } else\r\n return '-' + this.neg().toString(radix);\r\n }\r\n\r\n // Do several (6) digits each time through the loop, so as to\r\n // minimize the calls to the very expensive emulated div.\r\n var radixToPower = fromNumber(pow_dbl(radix, 6), this.unsigned),\r\n rem = this;\r\n var result = '';\r\n while (true) {\r\n var remDiv = rem.div(radixToPower),\r\n intval = rem.sub(remDiv.mul(radixToPower)).toInt() >>> 0,\r\n digits = intval.toString(radix);\r\n rem = remDiv;\r\n if (rem.isZero())\r\n return digits + result;\r\n else {\r\n while (digits.length < 6)\r\n digits = '0' + digits;\r\n result = '' + digits + result;\r\n }\r\n }\r\n};\r\n\r\n/**\r\n * Gets the high 32 bits as a signed integer.\r\n * @returns {number} Signed high bits\r\n */\r\nLongPrototype.getHighBits = function getHighBits() {\r\n return this.high;\r\n};\r\n\r\n/**\r\n * Gets the high 32 bits as an unsigned integer.\r\n * @returns {number} Unsigned high bits\r\n */\r\nLongPrototype.getHighBitsUnsigned = function getHighBitsUnsigned() {\r\n return this.high >>> 0;\r\n};\r\n\r\n/**\r\n * Gets the low 32 bits as a signed integer.\r\n * @returns {number} Signed low bits\r\n */\r\nLongPrototype.getLowBits = function getLowBits() {\r\n return this.low;\r\n};\r\n\r\n/**\r\n * Gets the low 32 bits as an unsigned integer.\r\n * @returns {number} Unsigned low bits\r\n */\r\nLongPrototype.getLowBitsUnsigned = function getLowBitsUnsigned() {\r\n return this.low >>> 0;\r\n};\r\n\r\n/**\r\n * Gets the number of bits needed to represent the absolute value of this Long.\r\n * @returns {number}\r\n */\r\nLongPrototype.getNumBitsAbs = function getNumBitsAbs() {\r\n if (this.isNegative()) // Unsigned Longs are never negative\r\n return this.eq(MIN_VALUE) ? 64 : this.neg().getNumBitsAbs();\r\n var val = this.high != 0 ? this.high : this.low;\r\n for (var bit = 31; bit > 0; bit--)\r\n if ((val & (1 << bit)) != 0)\r\n break;\r\n return this.high != 0 ? bit + 33 : bit + 1;\r\n};\r\n\r\n/**\r\n * Tests if this Long's value equals zero.\r\n * @returns {boolean}\r\n */\r\nLongPrototype.isZero = function isZero() {\r\n return this.high === 0 && this.low === 0;\r\n};\r\n\r\n/**\r\n * Tests if this Long's value equals zero. This is an alias of {@link Long#isZero}.\r\n * @returns {boolean}\r\n */\r\nLongPrototype.eqz = LongPrototype.isZero;\r\n\r\n/**\r\n * Tests if this Long's value is negative.\r\n * @returns {boolean}\r\n */\r\nLongPrototype.isNegative = function isNegative() {\r\n return !this.unsigned && this.high < 0;\r\n};\r\n\r\n/**\r\n * Tests if this Long's value is positive.\r\n * @returns {boolean}\r\n */\r\nLongPrototype.isPositive = function isPositive() {\r\n return this.unsigned || this.high >= 0;\r\n};\r\n\r\n/**\r\n * Tests if this Long's value is odd.\r\n * @returns {boolean}\r\n */\r\nLongPrototype.isOdd = function isOdd() {\r\n return (this.low & 1) === 1;\r\n};\r\n\r\n/**\r\n * Tests if this Long's value is even.\r\n * @returns {boolean}\r\n */\r\nLongPrototype.isEven = function isEven() {\r\n return (this.low & 1) === 0;\r\n};\r\n\r\n/**\r\n * Tests if this Long's value equals the specified's.\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.equals = function equals(other) {\r\n if (!isLong(other))\r\n other = fromValue(other);\r\n if (this.unsigned !== other.unsigned && (this.high >>> 31) === 1 && (other.high >>> 31) === 1)\r\n return false;\r\n return this.high === other.high && this.low === other.low;\r\n};\r\n\r\n/**\r\n * Tests if this Long's value equals the specified's. This is an alias of {@link Long#equals}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.eq = LongPrototype.equals;\r\n\r\n/**\r\n * Tests if this Long's value differs from the specified's.\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.notEquals = function notEquals(other) {\r\n return !this.eq(/* validates */ other);\r\n};\r\n\r\n/**\r\n * Tests if this Long's value differs from the specified's. This is an alias of {@link Long#notEquals}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.neq = LongPrototype.notEquals;\r\n\r\n/**\r\n * Tests if this Long's value differs from the specified's. This is an alias of {@link Long#notEquals}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.ne = LongPrototype.notEquals;\r\n\r\n/**\r\n * Tests if this Long's value is less than the specified's.\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.lessThan = function lessThan(other) {\r\n return this.comp(/* validates */ other) < 0;\r\n};\r\n\r\n/**\r\n * Tests if this Long's value is less than the specified's. This is an alias of {@link Long#lessThan}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.lt = LongPrototype.lessThan;\r\n\r\n/**\r\n * Tests if this Long's value is less than or equal the specified's.\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.lessThanOrEqual = function lessThanOrEqual(other) {\r\n return this.comp(/* validates */ other) <= 0;\r\n};\r\n\r\n/**\r\n * Tests if this Long's value is less than or equal the specified's. This is an alias of {@link Long#lessThanOrEqual}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.lte = LongPrototype.lessThanOrEqual;\r\n\r\n/**\r\n * Tests if this Long's value is less than or equal the specified's. This is an alias of {@link Long#lessThanOrEqual}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.le = LongPrototype.lessThanOrEqual;\r\n\r\n/**\r\n * Tests if this Long's value is greater than the specified's.\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.greaterThan = function greaterThan(other) {\r\n return this.comp(/* validates */ other) > 0;\r\n};\r\n\r\n/**\r\n * Tests if this Long's value is greater than the specified's. This is an alias of {@link Long#greaterThan}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.gt = LongPrototype.greaterThan;\r\n\r\n/**\r\n * Tests if this Long's value is greater than or equal the specified's.\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.greaterThanOrEqual = function greaterThanOrEqual(other) {\r\n return this.comp(/* validates */ other) >= 0;\r\n};\r\n\r\n/**\r\n * Tests if this Long's value is greater than or equal the specified's. This is an alias of {@link Long#greaterThanOrEqual}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.gte = LongPrototype.greaterThanOrEqual;\r\n\r\n/**\r\n * Tests if this Long's value is greater than or equal the specified's. This is an alias of {@link Long#greaterThanOrEqual}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.ge = LongPrototype.greaterThanOrEqual;\r\n\r\n/**\r\n * Compares this Long's value with the specified's.\r\n * @param {!Long|number|string} other Other value\r\n * @returns {number} 0 if they are the same, 1 if the this is greater and -1\r\n * if the given one is greater\r\n */\r\nLongPrototype.compare = function compare(other) {\r\n if (!isLong(other))\r\n other = fromValue(other);\r\n if (this.eq(other))\r\n return 0;\r\n var thisNeg = this.isNegative(),\r\n otherNeg = other.isNegative();\r\n if (thisNeg && !otherNeg)\r\n return -1;\r\n if (!thisNeg && otherNeg)\r\n return 1;\r\n // At this point the sign bits are the same\r\n if (!this.unsigned)\r\n return this.sub(other).isNegative() ? -1 : 1;\r\n // Both are positive if at least one is unsigned\r\n return (other.high >>> 0) > (this.high >>> 0) || (other.high === this.high && (other.low >>> 0) > (this.low >>> 0)) ? -1 : 1;\r\n};\r\n\r\n/**\r\n * Compares this Long's value with the specified's. This is an alias of {@link Long#compare}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {number} 0 if they are the same, 1 if the this is greater and -1\r\n * if the given one is greater\r\n */\r\nLongPrototype.comp = LongPrototype.compare;\r\n\r\n/**\r\n * Negates this Long's value.\r\n * @returns {!Long} Negated Long\r\n */\r\nLongPrototype.negate = function negate() {\r\n if (!this.unsigned && this.eq(MIN_VALUE))\r\n return MIN_VALUE;\r\n return this.not().add(ONE);\r\n};\r\n\r\n/**\r\n * Negates this Long's value. This is an alias of {@link Long#negate}.\r\n * @function\r\n * @returns {!Long} Negated Long\r\n */\r\nLongPrototype.neg = LongPrototype.negate;\r\n\r\n/**\r\n * Returns the sum of this and the specified Long.\r\n * @param {!Long|number|string} addend Addend\r\n * @returns {!Long} Sum\r\n */\r\nLongPrototype.add = function add(addend) {\r\n if (!isLong(addend))\r\n addend = fromValue(addend);\r\n\r\n // Divide each number into 4 chunks of 16 bits, and then sum the chunks.\r\n\r\n var a48 = this.high >>> 16;\r\n var a32 = this.high & 0xFFFF;\r\n var a16 = this.low >>> 16;\r\n var a00 = this.low & 0xFFFF;\r\n\r\n var b48 = addend.high >>> 16;\r\n var b32 = addend.high & 0xFFFF;\r\n var b16 = addend.low >>> 16;\r\n var b00 = addend.low & 0xFFFF;\r\n\r\n var c48 = 0, c32 = 0, c16 = 0, c00 = 0;\r\n c00 += a00 + b00;\r\n c16 += c00 >>> 16;\r\n c00 &= 0xFFFF;\r\n c16 += a16 + b16;\r\n c32 += c16 >>> 16;\r\n c16 &= 0xFFFF;\r\n c32 += a32 + b32;\r\n c48 += c32 >>> 16;\r\n c32 &= 0xFFFF;\r\n c48 += a48 + b48;\r\n c48 &= 0xFFFF;\r\n return fromBits((c16 << 16) | c00, (c48 << 16) | c32, this.unsigned);\r\n};\r\n\r\n/**\r\n * Returns the difference of this and the specified Long.\r\n * @param {!Long|number|string} subtrahend Subtrahend\r\n * @returns {!Long} Difference\r\n */\r\nLongPrototype.subtract = function subtract(subtrahend) {\r\n if (!isLong(subtrahend))\r\n subtrahend = fromValue(subtrahend);\r\n return this.add(subtrahend.neg());\r\n};\r\n\r\n/**\r\n * Returns the difference of this and the specified Long. This is an alias of {@link Long#subtract}.\r\n * @function\r\n * @param {!Long|number|string} subtrahend Subtrahend\r\n * @returns {!Long} Difference\r\n */\r\nLongPrototype.sub = LongPrototype.subtract;\r\n\r\n/**\r\n * Returns the product of this and the specified Long.\r\n * @param {!Long|number|string} multiplier Multiplier\r\n * @returns {!Long} Product\r\n */\r\nLongPrototype.multiply = function multiply(multiplier) {\r\n if (this.isZero())\r\n return ZERO;\r\n if (!isLong(multiplier))\r\n multiplier = fromValue(multiplier);\r\n\r\n // use wasm support if present\r\n if (wasm) {\r\n var low = wasm.mul(this.low,\r\n this.high,\r\n multiplier.low,\r\n multiplier.high);\r\n return fromBits(low, wasm.get_high(), this.unsigned);\r\n }\r\n\r\n if (multiplier.isZero())\r\n return ZERO;\r\n if (this.eq(MIN_VALUE))\r\n return multiplier.isOdd() ? MIN_VALUE : ZERO;\r\n if (multiplier.eq(MIN_VALUE))\r\n return this.isOdd() ? MIN_VALUE : ZERO;\r\n\r\n if (this.isNegative()) {\r\n if (multiplier.isNegative())\r\n return this.neg().mul(multiplier.neg());\r\n else\r\n return this.neg().mul(multiplier).neg();\r\n } else if (multiplier.isNegative())\r\n return this.mul(multiplier.neg()).neg();\r\n\r\n // If both longs are small, use float multiplication\r\n if (this.lt(TWO_PWR_24) && multiplier.lt(TWO_PWR_24))\r\n return fromNumber(this.toNumber() * multiplier.toNumber(), this.unsigned);\r\n\r\n // Divide each long into 4 chunks of 16 bits, and then add up 4x4 products.\r\n // We can skip products that would overflow.\r\n\r\n var a48 = this.high >>> 16;\r\n var a32 = this.high & 0xFFFF;\r\n var a16 = this.low >>> 16;\r\n var a00 = this.low & 0xFFFF;\r\n\r\n var b48 = multiplier.high >>> 16;\r\n var b32 = multiplier.high & 0xFFFF;\r\n var b16 = multiplier.low >>> 16;\r\n var b00 = multiplier.low & 0xFFFF;\r\n\r\n var c48 = 0, c32 = 0, c16 = 0, c00 = 0;\r\n c00 += a00 * b00;\r\n c16 += c00 >>> 16;\r\n c00 &= 0xFFFF;\r\n c16 += a16 * b00;\r\n c32 += c16 >>> 16;\r\n c16 &= 0xFFFF;\r\n c16 += a00 * b16;\r\n c32 += c16 >>> 16;\r\n c16 &= 0xFFFF;\r\n c32 += a32 * b00;\r\n c48 += c32 >>> 16;\r\n c32 &= 0xFFFF;\r\n c32 += a16 * b16;\r\n c48 += c32 >>> 16;\r\n c32 &= 0xFFFF;\r\n c32 += a00 * b32;\r\n c48 += c32 >>> 16;\r\n c32 &= 0xFFFF;\r\n c48 += a48 * b00 + a32 * b16 + a16 * b32 + a00 * b48;\r\n c48 &= 0xFFFF;\r\n return fromBits((c16 << 16) | c00, (c48 << 16) | c32, this.unsigned);\r\n};\r\n\r\n/**\r\n * Returns the product of this and the specified Long. This is an alias of {@link Long#multiply}.\r\n * @function\r\n * @param {!Long|number|string} multiplier Multiplier\r\n * @returns {!Long} Product\r\n */\r\nLongPrototype.mul = LongPrototype.multiply;\r\n\r\n/**\r\n * Returns this Long divided by the specified. The result is signed if this Long is signed or\r\n * unsigned if this Long is unsigned.\r\n * @param {!Long|number|string} divisor Divisor\r\n * @returns {!Long} Quotient\r\n */\r\nLongPrototype.divide = function divide(divisor) {\r\n if (!isLong(divisor))\r\n divisor = fromValue(divisor);\r\n if (divisor.isZero())\r\n throw Error('division by zero');\r\n\r\n // use wasm support if present\r\n if (wasm) {\r\n // guard against signed division overflow: the largest\r\n // negative number / -1 would be 1 larger than the largest\r\n // positive number, due to two's complement.\r\n if (!this.unsigned &&\r\n this.high === -0x80000000 &&\r\n divisor.low === -1 && divisor.high === -1) {\r\n // be consistent with non-wasm code path\r\n return this;\r\n }\r\n var low = (this.unsigned ? wasm.div_u : wasm.div_s)(\r\n this.low,\r\n this.high,\r\n divisor.low,\r\n divisor.high\r\n );\r\n return fromBits(low, wasm.get_high(), this.unsigned);\r\n }\r\n\r\n if (this.isZero())\r\n return this.unsigned ? UZERO : ZERO;\r\n var approx, rem, res;\r\n if (!this.unsigned) {\r\n // This section is only relevant for signed longs and is derived from the\r\n // closure library as a whole.\r\n if (this.eq(MIN_VALUE)) {\r\n if (divisor.eq(ONE) || divisor.eq(NEG_ONE))\r\n return MIN_VALUE; // recall that -MIN_VALUE == MIN_VALUE\r\n else if (divisor.eq(MIN_VALUE))\r\n return ONE;\r\n else {\r\n // At this point, we have |other| >= 2, so |this/other| < |MIN_VALUE|.\r\n var halfThis = this.shr(1);\r\n approx = halfThis.div(divisor).shl(1);\r\n if (approx.eq(ZERO)) {\r\n return divisor.isNegative() ? ONE : NEG_ONE;\r\n } else {\r\n rem = this.sub(divisor.mul(approx));\r\n res = approx.add(rem.div(divisor));\r\n return res;\r\n }\r\n }\r\n } else if (divisor.eq(MIN_VALUE))\r\n return this.unsigned ? UZERO : ZERO;\r\n if (this.isNegative()) {\r\n if (divisor.isNegative())\r\n return this.neg().div(divisor.neg());\r\n return this.neg().div(divisor).neg();\r\n } else if (divisor.isNegative())\r\n return this.div(divisor.neg()).neg();\r\n res = ZERO;\r\n } else {\r\n // The algorithm below has not been made for unsigned longs. It's therefore\r\n // required to take special care of the MSB prior to running it.\r\n if (!divisor.unsigned)\r\n divisor = divisor.toUnsigned();\r\n if (divisor.gt(this))\r\n return UZERO;\r\n if (divisor.gt(this.shru(1))) // 15 >>> 1 = 7 ; with divisor = 8 ; true\r\n return UONE;\r\n res = UZERO;\r\n }\r\n\r\n // Repeat the following until the remainder is less than other: find a\r\n // floating-point that approximates remainder / other *from below*, add this\r\n // into the result, and subtract it from the remainder. It is critical that\r\n // the approximate value is less than or equal to the real value so that the\r\n // remainder never becomes negative.\r\n rem = this;\r\n while (rem.gte(divisor)) {\r\n // Approximate the result of division. This may be a little greater or\r\n // smaller than the actual value.\r\n approx = Math.max(1, Math.floor(rem.toNumber() / divisor.toNumber()));\r\n\r\n // We will tweak the approximate result by changing it in the 48-th digit or\r\n // the smallest non-fractional digit, whichever is larger.\r\n var log2 = Math.ceil(Math.log(approx) / Math.LN2),\r\n delta = (log2 <= 48) ? 1 : pow_dbl(2, log2 - 48),\r\n\r\n // Decrease the approximation until it is smaller than the remainder. Note\r\n // that if it is too large, the product overflows and is negative.\r\n approxRes = fromNumber(approx),\r\n approxRem = approxRes.mul(divisor);\r\n while (approxRem.isNegative() || approxRem.gt(rem)) {\r\n approx -= delta;\r\n approxRes = fromNumber(approx, this.unsigned);\r\n approxRem = approxRes.mul(divisor);\r\n }\r\n\r\n // We know the answer can't be zero... and actually, zero would cause\r\n // infinite recursion since we would make no progress.\r\n if (approxRes.isZero())\r\n approxRes = ONE;\r\n\r\n res = res.add(approxRes);\r\n rem = rem.sub(approxRem);\r\n }\r\n return res;\r\n};\r\n\r\n/**\r\n * Returns this Long divided by the specified. This is an alias of {@link Long#divide}.\r\n * @function\r\n * @param {!Long|number|string} divisor Divisor\r\n * @returns {!Long} Quotient\r\n */\r\nLongPrototype.div = LongPrototype.divide;\r\n\r\n/**\r\n * Returns this Long modulo the specified.\r\n * @param {!Long|number|string} divisor Divisor\r\n * @returns {!Long} Remainder\r\n */\r\nLongPrototype.modulo = function modulo(divisor) {\r\n if (!isLong(divisor))\r\n divisor = fromValue(divisor);\r\n\r\n // use wasm support if present\r\n if (wasm) {\r\n var low = (this.unsigned ? wasm.rem_u : wasm.rem_s)(\r\n this.low,\r\n this.high,\r\n divisor.low,\r\n divisor.high\r\n );\r\n return fromBits(low, wasm.get_high(), this.unsigned);\r\n }\r\n\r\n return this.sub(this.div(divisor).mul(divisor));\r\n};\r\n\r\n/**\r\n * Returns this Long modulo the specified. This is an alias of {@link Long#modulo}.\r\n * @function\r\n * @param {!Long|number|string} divisor Divisor\r\n * @returns {!Long} Remainder\r\n */\r\nLongPrototype.mod = LongPrototype.modulo;\r\n\r\n/**\r\n * Returns this Long modulo the specified. This is an alias of {@link Long#modulo}.\r\n * @function\r\n * @param {!Long|number|string} divisor Divisor\r\n * @returns {!Long} Remainder\r\n */\r\nLongPrototype.rem = LongPrototype.modulo;\r\n\r\n/**\r\n * Returns the bitwise NOT of this Long.\r\n * @returns {!Long}\r\n */\r\nLongPrototype.not = function not() {\r\n return fromBits(~this.low, ~this.high, this.unsigned);\r\n};\r\n\r\n/**\r\n * Returns the bitwise AND of this Long and the specified.\r\n * @param {!Long|number|string} other Other Long\r\n * @returns {!Long}\r\n */\r\nLongPrototype.and = function and(other) {\r\n if (!isLong(other))\r\n other = fromValue(other);\r\n return fromBits(this.low & other.low, this.high & other.high, this.unsigned);\r\n};\r\n\r\n/**\r\n * Returns the bitwise OR of this Long and the specified.\r\n * @param {!Long|number|string} other Other Long\r\n * @returns {!Long}\r\n */\r\nLongPrototype.or = function or(other) {\r\n if (!isLong(other))\r\n other = fromValue(other);\r\n return fromBits(this.low | other.low, this.high | other.high, this.unsigned);\r\n};\r\n\r\n/**\r\n * Returns the bitwise XOR of this Long and the given one.\r\n * @param {!Long|number|string} other Other Long\r\n * @returns {!Long}\r\n */\r\nLongPrototype.xor = function xor(other) {\r\n if (!isLong(other))\r\n other = fromValue(other);\r\n return fromBits(this.low ^ other.low, this.high ^ other.high, this.unsigned);\r\n};\r\n\r\n/**\r\n * Returns this Long with bits shifted to the left by the given amount.\r\n * @param {number|!Long} numBits Number of bits\r\n * @returns {!Long} Shifted Long\r\n */\r\nLongPrototype.shiftLeft = function shiftLeft(numBits) {\r\n if (isLong(numBits))\r\n numBits = numBits.toInt();\r\n if ((numBits &= 63) === 0)\r\n return this;\r\n else if (numBits < 32)\r\n return fromBits(this.low << numBits, (this.high << numBits) | (this.low >>> (32 - numBits)), this.unsigned);\r\n else\r\n return fromBits(0, this.low << (numBits - 32), this.unsigned);\r\n};\r\n\r\n/**\r\n * Returns this Long with bits shifted to the left by the given amount. This is an alias of {@link Long#shiftLeft}.\r\n * @function\r\n * @param {number|!Long} numBits Number of bits\r\n * @returns {!Long} Shifted Long\r\n */\r\nLongPrototype.shl = LongPrototype.shiftLeft;\r\n\r\n/**\r\n * Returns this Long with bits arithmetically shifted to the right by the given amount.\r\n * @param {number|!Long} numBits Number of bits\r\n * @returns {!Long} Shifted Long\r\n */\r\nLongPrototype.shiftRight = function shiftRight(numBits) {\r\n if (isLong(numBits))\r\n numBits = numBits.toInt();\r\n if ((numBits &= 63) === 0)\r\n return this;\r\n else if (numBits < 32)\r\n return fromBits((this.low >>> numBits) | (this.high << (32 - numBits)), this.high >> numBits, this.unsigned);\r\n else\r\n return fromBits(this.high >> (numBits - 32), this.high >= 0 ? 0 : -1, this.unsigned);\r\n};\r\n\r\n/**\r\n * Returns this Long with bits arithmetically shifted to the right by the given amount. This is an alias of {@link Long#shiftRight}.\r\n * @function\r\n * @param {number|!Long} numBits Number of bits\r\n * @returns {!Long} Shifted Long\r\n */\r\nLongPrototype.shr = LongPrototype.shiftRight;\r\n\r\n/**\r\n * Returns this Long with bits logically shifted to the right by the given amount.\r\n * @param {number|!Long} numBits Number of bits\r\n * @returns {!Long} Shifted Long\r\n */\r\nLongPrototype.shiftRightUnsigned = function shiftRightUnsigned(numBits) {\r\n if (isLong(numBits))\r\n numBits = numBits.toInt();\r\n numBits &= 63;\r\n if (numBits === 0)\r\n return this;\r\n else {\r\n var high = this.high;\r\n if (numBits < 32) {\r\n var low = this.low;\r\n return fromBits((low >>> numBits) | (high << (32 - numBits)), high >>> numBits, this.unsigned);\r\n } else if (numBits === 32)\r\n return fromBits(high, 0, this.unsigned);\r\n else\r\n return fromBits(high >>> (numBits - 32), 0, this.unsigned);\r\n }\r\n};\r\n\r\n/**\r\n * Returns this Long with bits logically shifted to the right by the given amount. This is an alias of {@link Long#shiftRightUnsigned}.\r\n * @function\r\n * @param {number|!Long} numBits Number of bits\r\n * @returns {!Long} Shifted Long\r\n */\r\nLongPrototype.shru = LongPrototype.shiftRightUnsigned;\r\n\r\n/**\r\n * Returns this Long with bits logically shifted to the right by the given amount. This is an alias of {@link Long#shiftRightUnsigned}.\r\n * @function\r\n * @param {number|!Long} numBits Number of bits\r\n * @returns {!Long} Shifted Long\r\n */\r\nLongPrototype.shr_u = LongPrototype.shiftRightUnsigned;\r\n\r\n/**\r\n * Converts this Long to signed.\r\n * @returns {!Long} Signed long\r\n */\r\nLongPrototype.toSigned = function toSigned() {\r\n if (!this.unsigned)\r\n return this;\r\n return fromBits(this.low, this.high, false);\r\n};\r\n\r\n/**\r\n * Converts this Long to unsigned.\r\n * @returns {!Long} Unsigned long\r\n */\r\nLongPrototype.toUnsigned = function toUnsigned() {\r\n if (this.unsigned)\r\n return this;\r\n return fromBits(this.low, this.high, true);\r\n};\r\n\r\n/**\r\n * Converts this Long to its byte representation.\r\n * @param {boolean=} le Whether little or big endian, defaults to big endian\r\n * @returns {!Array.<number>} Byte representation\r\n */\r\nLongPrototype.toBytes = function toBytes(le) {\r\n return le ? this.toBytesLE() : this.toBytesBE();\r\n};\r\n\r\n/**\r\n * Converts this Long to its little endian byte representation.\r\n * @returns {!Array.<number>} Little endian byte representation\r\n */\r\nLongPrototype.toBytesLE = function toBytesLE() {\r\n var hi = this.high,\r\n lo = this.low;\r\n return [\r\n lo & 0xff,\r\n lo >>> 8 & 0xff,\r\n lo >>> 16 & 0xff,\r\n lo >>> 24 ,\r\n hi & 0xff,\r\n hi >>> 8 & 0xff,\r\n hi >>> 16 & 0xff,\r\n hi >>> 24\r\n ];\r\n};\r\n\r\n/**\r\n * Converts this Long to its big endian byte representation.\r\n * @returns {!Array.<number>} Big endian byte representation\r\n */\r\nLongPrototype.toBytesBE = function toBytesBE() {\r\n var hi = this.high,\r\n lo = this.low;\r\n return [\r\n hi >>> 24 ,\r\n hi >>> 16 & 0xff,\r\n hi >>> 8 & 0xff,\r\n hi & 0xff,\r\n lo >>> 24 ,\r\n lo >>> 16 & 0xff,\r\n lo >>> 8 & 0xff,\r\n lo & 0xff\r\n ];\r\n};\r\n\r\n/**\r\n * Creates a Long from its byte representation.\r\n * @param {!Array.<number>} bytes Byte representation\r\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\r\n * @param {boolean=} le Whether little or big endian, defaults to big endian\r\n * @returns {Long} The corresponding Long value\r\n */\r\nLong.fromBytes = function fromBytes(bytes, unsigned, le) {\r\n return le ? Long.fromBytesLE(bytes, unsigned) : Long.fromBytesBE(bytes, unsigned);\r\n};\r\n\r\n/**\r\n * Creates a Long from its little endian byte representation.\r\n * @param {!Array.<number>} bytes Little endian byte representation\r\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\r\n * @returns {Long} The corresponding Long value\r\n */\r\nLong.fromBytesLE = function fromBytesLE(bytes, unsigned) {\r\n return new Long(\r\n bytes[0] |\r\n bytes[1] << 8 |\r\n bytes[2] << 16 |\r\n bytes[3] << 24,\r\n bytes[4] |\r\n bytes[5] << 8 |\r\n bytes[6] << 16 |\r\n bytes[7] << 24,\r\n unsigned\r\n );\r\n};\r\n\r\n/**\r\n * Creates a Long from its big endian byte representation.\r\n * @param {!Array.<number>} bytes Big endian byte representation\r\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\r\n * @returns {Long} The corresponding Long value\r\n */\r\nLong.fromBytesBE = function fromBytesBE(bytes, unsigned) {\r\n return new Long(\r\n bytes[4] << 24 |\r\n bytes[5] << 16 |\r\n bytes[6] << 8 |\r\n bytes[7],\r\n bytes[0] << 24 |\r\n bytes[1] << 16 |\r\n bytes[2] << 8 |\r\n bytes[3],\r\n unsigned\r\n );\r\n};\r\n","'use strict'\n\n// A linked list to keep track of recently-used-ness\nconst Yallist = require('yallist')\n\nconst MAX = Symbol('max')\nconst LENGTH = Symbol('length')\nconst LENGTH_CALCULATOR = Symbol('lengthCalculator')\nconst ALLOW_STALE = Symbol('allowStale')\nconst MAX_AGE = Symbol('maxAge')\nconst DISPOSE = Symbol('dispose')\nconst NO_DISPOSE_ON_SET = Symbol('noDisposeOnSet')\nconst LRU_LIST = Symbol('lruList')\nconst CACHE = Symbol('cache')\nconst UPDATE_AGE_ON_GET = Symbol('updateAgeOnGet')\n\nconst naiveLength = () => 1\n\n// lruList is a yallist where the head is the youngest\n// item, and the tail is the oldest. the list contains the Hit\n// objects as the entries.\n// Each Hit object has a reference to its Yallist.Node. This\n// never changes.\n//\n// cache is a Map (or PseudoMap) that matches the keys to\n// the Yallist.Node object.\nclass LRUCache {\n constructor (options) {\n if (typeof options === 'number')\n options = { max: options }\n\n if (!options)\n options = {}\n\n if (options.max && (typeof options.max !== 'number' || options.max < 0))\n throw new TypeError('max must be a non-negative number')\n // Kind of weird to have a default max of Infinity, but oh well.\n const max = this[MAX] = options.max || Infinity\n\n const lc = options.length || naiveLength\n this[LENGTH_CALCULATOR] = (typeof lc !== 'function') ? naiveLength : lc\n this[ALLOW_STALE] = options.stale || false\n if (options.maxAge && typeof options.maxAge !== 'number')\n throw new TypeError('maxAge must be a number')\n this[MAX_AGE] = options.maxAge || 0\n this[DISPOSE] = options.dispose\n this[NO_DISPOSE_ON_SET] = options.noDisposeOnSet || false\n this[UPDATE_AGE_ON_GET] = options.updateAgeOnGet || false\n this.reset()\n }\n\n // resize the cache when the max changes.\n set max (mL) {\n if (typeof mL !== 'number' || mL < 0)\n throw new TypeError('max must be a non-negative number')\n\n this[MAX] = mL || Infinity\n trim(this)\n }\n get max () {\n return this[MAX]\n }\n\n set allowStale (allowStale) {\n this[ALLOW_STALE] = !!allowStale\n }\n get allowStale () {\n return this[ALLOW_STALE]\n }\n\n set maxAge (mA) {\n if (typeof mA !== 'number')\n throw new TypeError('maxAge must be a non-negative number')\n\n this[MAX_AGE] = mA\n trim(this)\n }\n get maxAge () {\n return this[MAX_AGE]\n }\n\n // resize the cache when the lengthCalculator changes.\n set lengthCalculator (lC) {\n if (typeof lC !== 'function')\n lC = naiveLength\n\n if (lC !== this[LENGTH_CALCULATOR]) {\n this[LENGTH_CALCULATOR] = lC\n this[LENGTH] = 0\n this[LRU_LIST].forEach(hit => {\n hit.length = this[LENGTH_CALCULATOR](hit.value, hit.key)\n this[LENGTH] += hit.length\n })\n }\n trim(this)\n }\n get lengthCalculator () { return this[LENGTH_CALCULATOR] }\n\n get length () { return this[LENGTH] }\n get itemCount () { return this[LRU_LIST].length }\n\n rforEach (fn, thisp) {\n thisp = thisp || this\n for (let walker = this[LRU_LIST].tail; walker !== null;) {\n const prev = walker.prev\n forEachStep(this, fn, walker, thisp)\n walker = prev\n }\n }\n\n forEach (fn, thisp) {\n thisp = thisp || this\n for (let walker = this[LRU_LIST].head; walker !== null;) {\n const next = walker.next\n forEachStep(this, fn, walker, thisp)\n walker = next\n }\n }\n\n keys () {\n return this[LRU_LIST].toArray().map(k => k.key)\n }\n\n values () {\n return this[LRU_LIST].toArray().map(k => k.value)\n }\n\n reset () {\n if (this[DISPOSE] &&\n this[LRU_LIST] &&\n this[LRU_LIST].length) {\n this[LRU_LIST].forEach(hit => this[DISPOSE](hit.key, hit.value))\n }\n\n this[CACHE] = new Map() // hash of items by key\n this[LRU_LIST] = new Yallist() // list of items in order of use recency\n this[LENGTH] = 0 // length of items in the list\n }\n\n dump () {\n return this[LRU_LIST].map(hit =>\n isStale(this, hit) ? false : {\n k: hit.key,\n v: hit.value,\n e: hit.now + (hit.maxAge || 0)\n }).toArray().filter(h => h)\n }\n\n dumpLru () {\n return this[LRU_LIST]\n }\n\n set (key, value, maxAge) {\n maxAge = maxAge || this[MAX_AGE]\n\n if (maxAge && typeof maxAge !== 'number')\n throw new TypeError('maxAge must be a number')\n\n const now = maxAge ? Date.now() : 0\n const len = this[LENGTH_CALCULATOR](value, key)\n\n if (this[CACHE].has(key)) {\n if (len > this[MAX]) {\n del(this, this[CACHE].get(key))\n return false\n }\n\n const node = this[CACHE].get(key)\n const item = node.value\n\n // dispose of the old one before overwriting\n // split out into 2 ifs for better coverage tracking\n if (this[DISPOSE]) {\n if (!this[NO_DISPOSE_ON_SET])\n this[DISPOSE](key, item.value)\n }\n\n item.now = now\n item.maxAge = maxAge\n item.value = value\n this[LENGTH] += len - item.length\n item.length = len\n this.get(key)\n trim(this)\n return true\n }\n\n const hit = new Entry(key, value, len, now, maxAge)\n\n // oversized objects fall out of cache automatically.\n if (hit.length > this[MAX]) {\n if (this[DISPOSE])\n this[DISPOSE](key, value)\n\n return false\n }\n\n this[LENGTH] += hit.length\n this[LRU_LIST].unshift(hit)\n this[CACHE].set(key, this[LRU_LIST].head)\n trim(this)\n return true\n }\n\n has (key) {\n if (!this[CACHE].has(key)) return false\n const hit = this[CACHE].get(key).value\n return !isStale(this, hit)\n }\n\n get (key) {\n return get(this, key, true)\n }\n\n peek (key) {\n return get(this, key, false)\n }\n\n pop () {\n const node = this[LRU_LIST].tail\n if (!node)\n return null\n\n del(this, node)\n return node.value\n }\n\n del (key) {\n del(this, this[CACHE].get(key))\n }\n\n load (arr) {\n // reset the cache\n this.reset()\n\n const now = Date.now()\n // A previous serialized cache has the most recent items first\n for (let l = arr.length - 1; l >= 0; l--) {\n const hit = arr[l]\n const expiresAt = hit.e || 0\n if (expiresAt === 0)\n // the item was created without expiration in a non aged cache\n this.set(hit.k, hit.v)\n else {\n const maxAge = expiresAt - now\n // dont add already expired items\n if (maxAge > 0) {\n this.set(hit.k, hit.v, maxAge)\n }\n }\n }\n }\n\n prune () {\n this[CACHE].forEach((value, key) => get(this, key, false))\n }\n}\n\nconst get = (self, key, doUse) => {\n const node = self[CACHE].get(key)\n if (node) {\n const hit = node.value\n if (isStale(self, hit)) {\n del(self, node)\n if (!self[ALLOW_STALE])\n return undefined\n } else {\n if (doUse) {\n if (self[UPDATE_AGE_ON_GET])\n node.value.now = Date.now()\n self[LRU_LIST].unshiftNode(node)\n }\n }\n return hit.value\n }\n}\n\nconst isStale = (self, hit) => {\n if (!hit || (!hit.maxAge && !self[MAX_AGE]))\n return false\n\n const diff = Date.now() - hit.now\n return hit.maxAge ? diff > hit.maxAge\n : self[MAX_AGE] && (diff > self[MAX_AGE])\n}\n\nconst trim = self => {\n if (self[LENGTH] > self[MAX]) {\n for (let walker = self[LRU_LIST].tail;\n self[LENGTH] > self[MAX] && walker !== null;) {\n // We know that we're about to delete this one, and also\n // what the next least recently used key will be, so just\n // go ahead and set it now.\n const prev = walker.prev\n del(self, walker)\n walker = prev\n }\n }\n}\n\nconst del = (self, node) => {\n if (node) {\n const hit = node.value\n if (self[DISPOSE])\n self[DISPOSE](hit.key, hit.value)\n\n self[LENGTH] -= hit.length\n self[CACHE].delete(hit.key)\n self[LRU_LIST].removeNode(node)\n }\n}\n\nclass Entry {\n constructor (key, value, length, now, maxAge) {\n this.key = key\n this.value = value\n this.length = length\n this.now = now\n this.maxAge = maxAge || 0\n }\n}\n\nconst forEachStep = (self, fn, node, thisp) => {\n let hit = node.value\n if (isStale(self, hit)) {\n del(self, node)\n if (!self[ALLOW_STALE])\n hit = undefined\n }\n if (hit)\n fn.call(thisp, hit.value, hit.key, self)\n}\n\nmodule.exports = LRUCache\n","/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar w = d * 7;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n * - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function (val, options) {\n options = options || {};\n var type = typeof val;\n if (type === 'string' && val.length > 0) {\n return parse(val);\n } else if (type === 'number' && isFinite(val)) {\n return options.long ? fmtLong(val) : fmtShort(val);\n }\n throw new Error(\n 'val is not a non-empty string or a valid number. val=' +\n JSON.stringify(val)\n );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n str = String(str);\n if (str.length > 100) {\n return;\n }\n var match = /^(-?(?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(\n str\n );\n if (!match) {\n return;\n }\n var n = parseFloat(match[1]);\n var type = (match[2] || 'ms').toLowerCase();\n switch (type) {\n case 'years':\n case 'year':\n case 'yrs':\n case 'yr':\n case 'y':\n return n * y;\n case 'weeks':\n case 'week':\n case 'w':\n return n * w;\n case 'days':\n case 'day':\n case 'd':\n return n * d;\n case 'hours':\n case 'hour':\n case 'hrs':\n case 'hr':\n case 'h':\n return n * h;\n case 'minutes':\n case 'minute':\n case 'mins':\n case 'min':\n case 'm':\n return n * m;\n case 'seconds':\n case 'second':\n case 'secs':\n case 'sec':\n case 's':\n return n * s;\n case 'milliseconds':\n case 'millisecond':\n case 'msecs':\n case 'msec':\n case 'ms':\n return n;\n default:\n return undefined;\n }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return Math.round(ms / d) + 'd';\n }\n if (msAbs >= h) {\n return Math.round(ms / h) + 'h';\n }\n if (msAbs >= m) {\n return Math.round(ms / m) + 'm';\n }\n if (msAbs >= s) {\n return Math.round(ms / s) + 's';\n }\n return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return plural(ms, msAbs, d, 'day');\n }\n if (msAbs >= h) {\n return plural(ms, msAbs, h, 'hour');\n }\n if (msAbs >= m) {\n return plural(ms, msAbs, m, 'minute');\n }\n if (msAbs >= s) {\n return plural(ms, msAbs, s, 'second');\n }\n return ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, msAbs, n, name) {\n var isPlural = msAbs >= n * 1.5;\n return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : '');\n}\n","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","// light library entry point.\n\n\"use strict\";\nmodule.exports = require(\"./src/index-light\");","\"use strict\";\n/**\n * Runtime message from/to plain object converters.\n * @namespace\n */\nvar converter = exports;\n\nvar Enum = require(\"./enum\"),\n util = require(\"./util\");\n\n/**\n * Generates a partial value fromObject conveter.\n * @param {Codegen} gen Codegen instance\n * @param {Field} field Reflected field\n * @param {number} fieldIndex Field index\n * @param {string} prop Property reference\n * @returns {Codegen} Codegen instance\n * @ignore\n */\nfunction genValuePartial_fromObject(gen, field, fieldIndex, prop) {\n /* eslint-disable no-unexpected-multiline, block-scoped-var, no-redeclare */\n if (field.resolvedType) {\n if (field.resolvedType instanceof Enum) { gen\n (\"switch(d%s){\", prop);\n for (var values = field.resolvedType.values, keys = Object.keys(values), i = 0; i < keys.length; ++i) {\n if (field.repeated && values[keys[i]] === field.typeDefault) gen\n (\"default:\");\n gen\n (\"case%j:\", keys[i])\n (\"case %i:\", values[keys[i]])\n (\"m%s=%j\", prop, values[keys[i]])\n (\"break\");\n } gen\n (\"}\");\n } else gen\n (\"if(typeof d%s!==\\\"object\\\")\", prop)\n (\"throw TypeError(%j)\", field.fullName + \": object expected\")\n (\"m%s=types[%i].fromObject(d%s)\", prop, fieldIndex, prop);\n } else {\n var isUnsigned = false;\n switch (field.type) {\n case \"double\":\n case \"float\": gen\n (\"m%s=Number(d%s)\", prop, prop); // also catches \"NaN\", \"Infinity\"\n break;\n case \"uint32\":\n case \"fixed32\": gen\n (\"m%s=d%s>>>0\", prop, prop);\n break;\n case \"int32\":\n case \"sint32\":\n case \"sfixed32\": gen\n (\"m%s=d%s|0\", prop, prop);\n break;\n case \"uint64\":\n isUnsigned = true;\n // eslint-disable-line no-fallthrough\n case \"int64\":\n case \"sint64\":\n case \"fixed64\":\n case \"sfixed64\": gen\n (\"if(util.Long)\")\n (\"(m%s=util.Long.fromValue(d%s)).unsigned=%j\", prop, prop, isUnsigned)\n (\"else if(typeof d%s===\\\"string\\\")\", prop)\n (\"m%s=parseInt(d%s,10)\", prop, prop)\n (\"else if(typeof d%s===\\\"number\\\")\", prop)\n (\"m%s=d%s\", prop, prop)\n (\"else if(typeof d%s===\\\"object\\\")\", prop)\n (\"m%s=new util.LongBits(d%s.low>>>0,d%s.high>>>0).toNumber(%s)\", prop, prop, prop, isUnsigned ? \"true\" : \"\");\n break;\n case \"bytes\": gen\n (\"if(typeof d%s===\\\"string\\\")\", prop)\n (\"util.base64.decode(d%s,m%s=util.newBuffer(util.base64.length(d%s)),0)\", prop, prop, prop)\n (\"else if(d%s.length)\", prop)\n (\"m%s=d%s\", prop, prop);\n break;\n case \"string\": gen\n (\"m%s=String(d%s)\", prop, prop);\n break;\n case \"bool\": gen\n (\"m%s=Boolean(d%s)\", prop, prop);\n break;\n /* default: gen\n (\"m%s=d%s\", prop, prop);\n break; */\n }\n }\n return gen;\n /* eslint-enable no-unexpected-multiline, block-scoped-var, no-redeclare */\n}\n\n/**\n * Generates a plain object to runtime message converter specific to the specified message type.\n * @param {Type} mtype Message type\n * @returns {Codegen} Codegen instance\n */\nconverter.fromObject = function fromObject(mtype) {\n /* eslint-disable no-unexpected-multiline, block-scoped-var, no-redeclare */\n var fields = mtype.fieldsArray;\n var gen = util.codegen([\"d\"], mtype.name + \"$fromObject\")\n (\"if(d instanceof this.ctor)\")\n (\"return d\");\n if (!fields.length) return gen\n (\"return new this.ctor\");\n gen\n (\"var m=new this.ctor\");\n for (var i = 0; i < fields.length; ++i) {\n var field = fields[i].resolve(),\n prop = util.safeProp(field.name);\n\n // Map fields\n if (field.map) { gen\n (\"if(d%s){\", prop)\n (\"if(typeof d%s!==\\\"object\\\")\", prop)\n (\"throw TypeError(%j)\", field.fullName + \": object expected\")\n (\"m%s={}\", prop)\n (\"for(var ks=Object.keys(d%s),i=0;i<ks.length;++i){\", prop);\n genValuePartial_fromObject(gen, field, /* not sorted */ i, prop + \"[ks[i]]\")\n (\"}\")\n (\"}\");\n\n // Repeated fields\n } else if (field.repeated) { gen\n (\"if(d%s){\", prop)\n (\"if(!Array.isArray(d%s))\", prop)\n (\"throw TypeError(%j)\", field.fullName + \": array expected\")\n (\"m%s=[]\", prop)\n (\"for(var i=0;i<d%s.length;++i){\", prop);\n genValuePartial_fromObject(gen, field, /* not sorted */ i, prop + \"[i]\")\n (\"}\")\n (\"}\");\n\n // Non-repeated fields\n } else {\n if (!(field.resolvedType instanceof Enum)) gen // no need to test for null/undefined if an enum (uses switch)\n (\"if(d%s!=null){\", prop); // !== undefined && !== null\n genValuePartial_fromObject(gen, field, /* not sorted */ i, prop);\n if (!(field.resolvedType instanceof Enum)) gen\n (\"}\");\n }\n } return gen\n (\"return m\");\n /* eslint-enable no-unexpected-multiline, block-scoped-var, no-redeclare */\n};\n\n/**\n * Generates a partial value toObject converter.\n * @param {Codegen} gen Codegen instance\n * @param {Field} field Reflected field\n * @param {number} fieldIndex Field index\n * @param {string} prop Property reference\n * @returns {Codegen} Codegen instance\n * @ignore\n */\nfunction genValuePartial_toObject(gen, field, fieldIndex, prop) {\n /* eslint-disable no-unexpected-multiline, block-scoped-var, no-redeclare */\n if (field.resolvedType) {\n if (field.resolvedType instanceof Enum) gen\n (\"d%s=o.enums===String?types[%i].values[m%s]:m%s\", prop, fieldIndex, prop, prop);\n else gen\n (\"d%s=types[%i].toObject(m%s,o)\", prop, fieldIndex, prop);\n } else {\n var isUnsigned = false;\n switch (field.type) {\n case \"double\":\n case \"float\": gen\n (\"d%s=o.json&&!isFinite(m%s)?String(m%s):m%s\", prop, prop, prop, prop);\n break;\n case \"uint64\":\n isUnsigned = true;\n // eslint-disable-line no-fallthrough\n case \"int64\":\n case \"sint64\":\n case \"fixed64\":\n case \"sfixed64\": gen\n (\"if(typeof m%s===\\\"number\\\")\", prop)\n (\"d%s=o.longs===String?String(m%s):m%s\", prop, prop, prop)\n (\"else\") // Long-like\n (\"d%s=o.longs===String?util.Long.prototype.toString.call(m%s):o.longs===Number?new util.LongBits(m%s.low>>>0,m%s.high>>>0).toNumber(%s):m%s\", prop, prop, prop, prop, isUnsigned ? \"true\": \"\", prop);\n break;\n case \"bytes\": gen\n (\"d%s=o.bytes===String?util.base64.encode(m%s,0,m%s.length):o.bytes===Array?Array.prototype.slice.call(m%s):m%s\", prop, prop, prop, prop, prop);\n break;\n default: gen\n (\"d%s=m%s\", prop, prop);\n break;\n }\n }\n return gen;\n /* eslint-enable no-unexpected-multiline, block-scoped-var, no-redeclare */\n}\n\n/**\n * Generates a runtime message to plain object converter specific to the specified message type.\n * @param {Type} mtype Message type\n * @returns {Codegen} Codegen instance\n */\nconverter.toObject = function toObject(mtype) {\n /* eslint-disable no-unexpected-multiline, block-scoped-var, no-redeclare */\n var fields = mtype.fieldsArray.slice().sort(util.compareFieldsById);\n if (!fields.length)\n return util.codegen()(\"return {}\");\n var gen = util.codegen([\"m\", \"o\"], mtype.name + \"$toObject\")\n (\"if(!o)\")\n (\"o={}\")\n (\"var d={}\");\n\n var repeatedFields = [],\n mapFields = [],\n normalFields = [],\n i = 0;\n for (; i < fields.length; ++i)\n if (!fields[i].partOf)\n ( fields[i].resolve().repeated ? repeatedFields\n : fields[i].map ? mapFields\n : normalFields).push(fields[i]);\n\n if (repeatedFields.length) { gen\n (\"if(o.arrays||o.defaults){\");\n for (i = 0; i < repeatedFields.length; ++i) gen\n (\"d%s=[]\", util.safeProp(repeatedFields[i].name));\n gen\n (\"}\");\n }\n\n if (mapFields.length) { gen\n (\"if(o.objects||o.defaults){\");\n for (i = 0; i < mapFields.length; ++i) gen\n (\"d%s={}\", util.safeProp(mapFields[i].name));\n gen\n (\"}\");\n }\n\n if (normalFields.length) { gen\n (\"if(o.defaults){\");\n for (i = 0; i < normalFields.length; ++i) {\n var field = normalFields[i],\n prop = util.safeProp(field.name);\n if (field.resolvedType instanceof Enum) gen\n (\"d%s=o.enums===String?%j:%j\", prop, field.resolvedType.valuesById[field.typeDefault], field.typeDefault);\n else if (field.long) gen\n (\"if(util.Long){\")\n (\"var n=new util.Long(%i,%i,%j)\", field.typeDefault.low, field.typeDefault.high, field.typeDefault.unsigned)\n (\"d%s=o.longs===String?n.toString():o.longs===Number?n.toNumber():n\", prop)\n (\"}else\")\n (\"d%s=o.longs===String?%j:%i\", prop, field.typeDefault.toString(), field.typeDefault.toNumber());\n else if (field.bytes) {\n var arrayDefault = \"[\" + Array.prototype.slice.call(field.typeDefault).join(\",\") + \"]\";\n gen\n (\"if(o.bytes===String)d%s=%j\", prop, String.fromCharCode.apply(String, field.typeDefault))\n (\"else{\")\n (\"d%s=%s\", prop, arrayDefault)\n (\"if(o.bytes!==Array)d%s=util.newBuffer(d%s)\", prop, prop)\n (\"}\");\n } else gen\n (\"d%s=%j\", prop, field.typeDefault); // also messages (=null)\n } gen\n (\"}\");\n }\n var hasKs2 = false;\n for (i = 0; i < fields.length; ++i) {\n var field = fields[i],\n index = mtype._fieldsArray.indexOf(field),\n prop = util.safeProp(field.name);\n if (field.map) {\n if (!hasKs2) { hasKs2 = true; gen\n (\"var ks2\");\n } gen\n (\"if(m%s&&(ks2=Object.keys(m%s)).length){\", prop, prop)\n (\"d%s={}\", prop)\n (\"for(var j=0;j<ks2.length;++j){\");\n genValuePartial_toObject(gen, field, /* sorted */ index, prop + \"[ks2[j]]\")\n (\"}\");\n } else if (field.repeated) { gen\n (\"if(m%s&&m%s.length){\", prop, prop)\n (\"d%s=[]\", prop)\n (\"for(var j=0;j<m%s.length;++j){\", prop);\n genValuePartial_toObject(gen, field, /* sorted */ index, prop + \"[j]\")\n (\"}\");\n } else { gen\n (\"if(m%s!=null&&m.hasOwnProperty(%j)){\", prop, field.name); // !== undefined && !== null\n genValuePartial_toObject(gen, field, /* sorted */ index, prop);\n if (field.partOf) gen\n (\"if(o.oneofs)\")\n (\"d%s=%j\", util.safeProp(field.partOf.name), field.name);\n }\n gen\n (\"}\");\n }\n return gen\n (\"return d\");\n /* eslint-enable no-unexpected-multiline, block-scoped-var, no-redeclare */\n};\n","\"use strict\";\nmodule.exports = decoder;\n\nvar Enum = require(\"./enum\"),\n types = require(\"./types\"),\n util = require(\"./util\");\n\nfunction missing(field) {\n return \"missing required '\" + field.name + \"'\";\n}\n\n/**\n * Generates a decoder specific to the specified message type.\n * @param {Type} mtype Message type\n * @returns {Codegen} Codegen instance\n */\nfunction decoder(mtype) {\n /* eslint-disable no-unexpected-multiline */\n var gen = util.codegen([\"r\", \"l\"], mtype.name + \"$decode\")\n (\"if(!(r instanceof Reader))\")\n (\"r=Reader.create(r)\")\n (\"var c=l===undefined?r.len:r.pos+l,m=new this.ctor\" + (mtype.fieldsArray.filter(function(field) { return field.map; }).length ? \",k,value\" : \"\"))\n (\"while(r.pos<c){\")\n (\"var t=r.uint32()\");\n if (mtype.group) gen\n (\"if((t&7)===4)\")\n (\"break\");\n gen\n (\"switch(t>>>3){\");\n\n var i = 0;\n for (; i < /* initializes */ mtype.fieldsArray.length; ++i) {\n var field = mtype._fieldsArray[i].resolve(),\n type = field.resolvedType instanceof Enum ? \"int32\" : field.type,\n ref = \"m\" + util.safeProp(field.name); gen\n (\"case %i:\", field.id);\n\n // Map fields\n if (field.map) { gen\n (\"if(%s===util.emptyObject)\", ref)\n (\"%s={}\", ref)\n (\"var c2 = r.uint32()+r.pos\");\n\n if (types.defaults[field.keyType] !== undefined) gen\n (\"k=%j\", types.defaults[field.keyType]);\n else gen\n (\"k=null\");\n\n if (types.defaults[type] !== undefined) gen\n (\"value=%j\", types.defaults[type]);\n else gen\n (\"value=null\");\n\n gen\n (\"while(r.pos<c2){\")\n (\"var tag2=r.uint32()\")\n (\"switch(tag2>>>3){\")\n (\"case 1: k=r.%s(); break\", field.keyType)\n (\"case 2:\");\n\n if (types.basic[type] === undefined) gen\n (\"value=types[%i].decode(r,r.uint32())\", i); // can't be groups\n else gen\n (\"value=r.%s()\", type);\n\n gen\n (\"break\")\n (\"default:\")\n (\"r.skipType(tag2&7)\")\n (\"break\")\n (\"}\")\n (\"}\");\n\n if (types.long[field.keyType] !== undefined) gen\n (\"%s[typeof k===\\\"object\\\"?util.longToHash(k):k]=value\", ref);\n else gen\n (\"%s[k]=value\", ref);\n\n // Repeated fields\n } else if (field.repeated) { gen\n\n (\"if(!(%s&&%s.length))\", ref, ref)\n (\"%s=[]\", ref);\n\n // Packable (always check for forward and backward compatiblity)\n if (types.packed[type] !== undefined) gen\n (\"if((t&7)===2){\")\n (\"var c2=r.uint32()+r.pos\")\n (\"while(r.pos<c2)\")\n (\"%s.push(r.%s())\", ref, type)\n (\"}else\");\n\n // Non-packed\n if (types.basic[type] === undefined) gen(field.resolvedType.group\n ? \"%s.push(types[%i].decode(r))\"\n : \"%s.push(types[%i].decode(r,r.uint32()))\", ref, i);\n else gen\n (\"%s.push(r.%s())\", ref, type);\n\n // Non-repeated\n } else if (types.basic[type] === undefined) gen(field.resolvedType.group\n ? \"%s=types[%i].decode(r)\"\n : \"%s=types[%i].decode(r,r.uint32())\", ref, i);\n else gen\n (\"%s=r.%s()\", ref, type);\n gen\n (\"break\");\n // Unknown fields\n } gen\n (\"default:\")\n (\"r.skipType(t&7)\")\n (\"break\")\n\n (\"}\")\n (\"}\");\n\n // Field presence\n for (i = 0; i < mtype._fieldsArray.length; ++i) {\n var rfield = mtype._fieldsArray[i];\n if (rfield.required) gen\n (\"if(!m.hasOwnProperty(%j))\", rfield.name)\n (\"throw util.ProtocolError(%j,{instance:m})\", missing(rfield));\n }\n\n return gen\n (\"return m\");\n /* eslint-enable no-unexpected-multiline */\n}\n","\"use strict\";\nmodule.exports = encoder;\n\nvar Enum = require(\"./enum\"),\n types = require(\"./types\"),\n util = require(\"./util\");\n\n/**\n * Generates a partial message type encoder.\n * @param {Codegen} gen Codegen instance\n * @param {Field} field Reflected field\n * @param {number} fieldIndex Field index\n * @param {string} ref Variable reference\n * @returns {Codegen} Codegen instance\n * @ignore\n */\nfunction genTypePartial(gen, field, fieldIndex, ref) {\n return field.resolvedType.group\n ? gen(\"types[%i].encode(%s,w.uint32(%i)).uint32(%i)\", fieldIndex, ref, (field.id << 3 | 3) >>> 0, (field.id << 3 | 4) >>> 0)\n : gen(\"types[%i].encode(%s,w.uint32(%i).fork()).ldelim()\", fieldIndex, ref, (field.id << 3 | 2) >>> 0);\n}\n\n/**\n * Generates an encoder specific to the specified message type.\n * @param {Type} mtype Message type\n * @returns {Codegen} Codegen instance\n */\nfunction encoder(mtype) {\n /* eslint-disable no-unexpected-multiline, block-scoped-var, no-redeclare */\n var gen = util.codegen([\"m\", \"w\"], mtype.name + \"$encode\")\n (\"if(!w)\")\n (\"w=Writer.create()\");\n\n var i, ref;\n\n // \"when a message is serialized its known fields should be written sequentially by field number\"\n var fields = /* initializes */ mtype.fieldsArray.slice().sort(util.compareFieldsById);\n\n for (var i = 0; i < fields.length; ++i) {\n var field = fields[i].resolve(),\n index = mtype._fieldsArray.indexOf(field),\n type = field.resolvedType instanceof Enum ? \"int32\" : field.type,\n wireType = types.basic[type];\n ref = \"m\" + util.safeProp(field.name);\n\n // Map fields\n if (field.map) {\n gen\n (\"if(%s!=null&&Object.hasOwnProperty.call(m,%j)){\", ref, field.name) // !== undefined && !== null\n (\"for(var ks=Object.keys(%s),i=0;i<ks.length;++i){\", ref)\n (\"w.uint32(%i).fork().uint32(%i).%s(ks[i])\", (field.id << 3 | 2) >>> 0, 8 | types.mapKey[field.keyType], field.keyType);\n if (wireType === undefined) gen\n (\"types[%i].encode(%s[ks[i]],w.uint32(18).fork()).ldelim().ldelim()\", index, ref); // can't be groups\n else gen\n (\".uint32(%i).%s(%s[ks[i]]).ldelim()\", 16 | wireType, type, ref);\n gen\n (\"}\")\n (\"}\");\n\n // Repeated fields\n } else if (field.repeated) { gen\n (\"if(%s!=null&&%s.length){\", ref, ref); // !== undefined && !== null\n\n // Packed repeated\n if (field.packed && types.packed[type] !== undefined) { gen\n\n (\"w.uint32(%i).fork()\", (field.id << 3 | 2) >>> 0)\n (\"for(var i=0;i<%s.length;++i)\", ref)\n (\"w.%s(%s[i])\", type, ref)\n (\"w.ldelim()\");\n\n // Non-packed\n } else { gen\n\n (\"for(var i=0;i<%s.length;++i)\", ref);\n if (wireType === undefined)\n genTypePartial(gen, field, index, ref + \"[i]\");\n else gen\n (\"w.uint32(%i).%s(%s[i])\", (field.id << 3 | wireType) >>> 0, type, ref);\n\n } gen\n (\"}\");\n\n // Non-repeated\n } else {\n if (field.optional) gen\n (\"if(%s!=null&&Object.hasOwnProperty.call(m,%j))\", ref, field.name); // !== undefined && !== null\n\n if (wireType === undefined)\n genTypePartial(gen, field, index, ref);\n else gen\n (\"w.uint32(%i).%s(%s)\", (field.id << 3 | wireType) >>> 0, type, ref);\n\n }\n }\n\n return gen\n (\"return w\");\n /* eslint-enable no-unexpected-multiline, block-scoped-var, no-redeclare */\n}\n","\"use strict\";\nmodule.exports = Enum;\n\n// extends ReflectionObject\nvar ReflectionObject = require(\"./object\");\n((Enum.prototype = Object.create(ReflectionObject.prototype)).constructor = Enum).className = \"Enum\";\n\nvar Namespace = require(\"./namespace\"),\n util = require(\"./util\");\n\n/**\n * Constructs a new enum instance.\n * @classdesc Reflected enum.\n * @extends ReflectionObject\n * @constructor\n * @param {string} name Unique name within its namespace\n * @param {Object.<string,number>} [values] Enum values as an object, by name\n * @param {Object.<string,*>} [options] Declared options\n * @param {string} [comment] The comment for this enum\n * @param {Object.<string,string>} [comments] The value comments for this enum\n */\nfunction Enum(name, values, options, comment, comments) {\n ReflectionObject.call(this, name, options);\n\n if (values && typeof values !== \"object\")\n throw TypeError(\"values must be an object\");\n\n /**\n * Enum values by id.\n * @type {Object.<number,string>}\n */\n this.valuesById = {};\n\n /**\n * Enum values by name.\n * @type {Object.<string,number>}\n */\n this.values = Object.create(this.valuesById); // toJSON, marker\n\n /**\n * Enum comment text.\n * @type {string|null}\n */\n this.comment = comment;\n\n /**\n * Value comment texts, if any.\n * @type {Object.<string,string>}\n */\n this.comments = comments || {};\n\n /**\n * Reserved ranges, if any.\n * @type {Array.<number[]|string>}\n */\n this.reserved = undefined; // toJSON\n\n // Note that values inherit valuesById on their prototype which makes them a TypeScript-\n // compatible enum. This is used by pbts to write actual enum definitions that work for\n // static and reflection code alike instead of emitting generic object definitions.\n\n if (values)\n for (var keys = Object.keys(values), i = 0; i < keys.length; ++i)\n if (typeof values[keys[i]] === \"number\") // use forward entries only\n this.valuesById[ this.values[keys[i]] = values[keys[i]] ] = keys[i];\n}\n\n/**\n * Enum descriptor.\n * @interface IEnum\n * @property {Object.<string,number>} values Enum values\n * @property {Object.<string,*>} [options] Enum options\n */\n\n/**\n * Constructs an enum from an enum descriptor.\n * @param {string} name Enum name\n * @param {IEnum} json Enum descriptor\n * @returns {Enum} Created enum\n * @throws {TypeError} If arguments are invalid\n */\nEnum.fromJSON = function fromJSON(name, json) {\n var enm = new Enum(name, json.values, json.options, json.comment, json.comments);\n enm.reserved = json.reserved;\n return enm;\n};\n\n/**\n * Converts this enum to an enum descriptor.\n * @param {IToJSONOptions} [toJSONOptions] JSON conversion options\n * @returns {IEnum} Enum descriptor\n */\nEnum.prototype.toJSON = function toJSON(toJSONOptions) {\n var keepComments = toJSONOptions ? Boolean(toJSONOptions.keepComments) : false;\n return util.toObject([\n \"options\" , this.options,\n \"values\" , this.values,\n \"reserved\" , this.reserved && this.reserved.length ? this.reserved : undefined,\n \"comment\" , keepComments ? this.comment : undefined,\n \"comments\" , keepComments ? this.comments : undefined\n ]);\n};\n\n/**\n * Adds a value to this enum.\n * @param {string} name Value name\n * @param {number} id Value id\n * @param {string} [comment] Comment, if any\n * @returns {Enum} `this`\n * @throws {TypeError} If arguments are invalid\n * @throws {Error} If there is already a value with this name or id\n */\nEnum.prototype.add = function add(name, id, comment) {\n // utilized by the parser but not by .fromJSON\n\n if (!util.isString(name))\n throw TypeError(\"name must be a string\");\n\n if (!util.isInteger(id))\n throw TypeError(\"id must be an integer\");\n\n if (this.values[name] !== undefined)\n throw Error(\"duplicate name '\" + name + \"' in \" + this);\n\n if (this.isReservedId(id))\n throw Error(\"id \" + id + \" is reserved in \" + this);\n\n if (this.isReservedName(name))\n throw Error(\"name '\" + name + \"' is reserved in \" + this);\n\n if (this.valuesById[id] !== undefined) {\n if (!(this.options && this.options.allow_alias))\n throw Error(\"duplicate id \" + id + \" in \" + this);\n this.values[name] = id;\n } else\n this.valuesById[this.values[name] = id] = name;\n\n this.comments[name] = comment || null;\n return this;\n};\n\n/**\n * Removes a value from this enum\n * @param {string} name Value name\n * @returns {Enum} `this`\n * @throws {TypeError} If arguments are invalid\n * @throws {Error} If `name` is not a name of this enum\n */\nEnum.prototype.remove = function remove(name) {\n\n if (!util.isString(name))\n throw TypeError(\"name must be a string\");\n\n var val = this.values[name];\n if (val == null)\n throw Error(\"name '\" + name + \"' does not exist in \" + this);\n\n delete this.valuesById[val];\n delete this.values[name];\n delete this.comments[name];\n\n return this;\n};\n\n/**\n * Tests if the specified id is reserved.\n * @param {number} id Id to test\n * @returns {boolean} `true` if reserved, otherwise `false`\n */\nEnum.prototype.isReservedId = function isReservedId(id) {\n return Namespace.isReservedId(this.reserved, id);\n};\n\n/**\n * Tests if the specified name is reserved.\n * @param {string} name Name to test\n * @returns {boolean} `true` if reserved, otherwise `false`\n */\nEnum.prototype.isReservedName = function isReservedName(name) {\n return Namespace.isReservedName(this.reserved, name);\n};\n","\"use strict\";\nmodule.exports = Field;\n\n// extends ReflectionObject\nvar ReflectionObject = require(\"./object\");\n((Field.prototype = Object.create(ReflectionObject.prototype)).constructor = Field).className = \"Field\";\n\nvar Enum = require(\"./enum\"),\n types = require(\"./types\"),\n util = require(\"./util\");\n\nvar Type; // cyclic\n\nvar ruleRe = /^required|optional|repeated$/;\n\n/**\n * Constructs a new message field instance. Note that {@link MapField|map fields} have their own class.\n * @name Field\n * @classdesc Reflected message field.\n * @extends FieldBase\n * @constructor\n * @param {string} name Unique name within its namespace\n * @param {number} id Unique id within its namespace\n * @param {string} type Value type\n * @param {string|Object.<string,*>} [rule=\"optional\"] Field rule\n * @param {string|Object.<string,*>} [extend] Extended type if different from parent\n * @param {Object.<string,*>} [options] Declared options\n */\n\n/**\n * Constructs a field from a field descriptor.\n * @param {string} name Field name\n * @param {IField} json Field descriptor\n * @returns {Field} Created field\n * @throws {TypeError} If arguments are invalid\n */\nField.fromJSON = function fromJSON(name, json) {\n return new Field(name, json.id, json.type, json.rule, json.extend, json.options, json.comment);\n};\n\n/**\n * Not an actual constructor. Use {@link Field} instead.\n * @classdesc Base class of all reflected message fields. This is not an actual class but here for the sake of having consistent type definitions.\n * @exports FieldBase\n * @extends ReflectionObject\n * @constructor\n * @param {string} name Unique name within its namespace\n * @param {number} id Unique id within its namespace\n * @param {string} type Value type\n * @param {string|Object.<string,*>} [rule=\"optional\"] Field rule\n * @param {string|Object.<string,*>} [extend] Extended type if different from parent\n * @param {Object.<string,*>} [options] Declared options\n * @param {string} [comment] Comment associated with this field\n */\nfunction Field(name, id, type, rule, extend, options, comment) {\n\n if (util.isObject(rule)) {\n comment = extend;\n options = rule;\n rule = extend = undefined;\n } else if (util.isObject(extend)) {\n comment = options;\n options = extend;\n extend = undefined;\n }\n\n ReflectionObject.call(this, name, options);\n\n if (!util.isInteger(id) || id < 0)\n throw TypeError(\"id must be a non-negative integer\");\n\n if (!util.isString(type))\n throw TypeError(\"type must be a string\");\n\n if (rule !== undefined && !ruleRe.test(rule = rule.toString().toLowerCase()))\n throw TypeError(\"rule must be a string rule\");\n\n if (extend !== undefined && !util.isString(extend))\n throw TypeError(\"extend must be a string\");\n\n if (rule === \"proto3_optional\") {\n rule = \"optional\";\n }\n /**\n * Field rule, if any.\n * @type {string|undefined}\n */\n this.rule = rule && rule !== \"optional\" ? rule : undefined; // toJSON\n\n /**\n * Field type.\n * @type {string}\n */\n this.type = type; // toJSON\n\n /**\n * Unique field id.\n * @type {number}\n */\n this.id = id; // toJSON, marker\n\n /**\n * Extended type if different from parent.\n * @type {string|undefined}\n */\n this.extend = extend || undefined; // toJSON\n\n /**\n * Whether this field is required.\n * @type {boolean}\n */\n this.required = rule === \"required\";\n\n /**\n * Whether this field is optional.\n * @type {boolean}\n */\n this.optional = !this.required;\n\n /**\n * Whether this field is repeated.\n * @type {boolean}\n */\n this.repeated = rule === \"repeated\";\n\n /**\n * Whether this field is a map or not.\n * @type {boolean}\n */\n this.map = false;\n\n /**\n * Message this field belongs to.\n * @type {Type|null}\n */\n this.message = null;\n\n /**\n * OneOf this field belongs to, if any,\n * @type {OneOf|null}\n */\n this.partOf = null;\n\n /**\n * The field type's default value.\n * @type {*}\n */\n this.typeDefault = null;\n\n /**\n * The field's default value on prototypes.\n * @type {*}\n */\n this.defaultValue = null;\n\n /**\n * Whether this field's value should be treated as a long.\n * @type {boolean}\n */\n this.long = util.Long ? types.long[type] !== undefined : /* istanbul ignore next */ false;\n\n /**\n * Whether this field's value is a buffer.\n * @type {boolean}\n */\n this.bytes = type === \"bytes\";\n\n /**\n * Resolved type if not a basic type.\n * @type {Type|Enum|null}\n */\n this.resolvedType = null;\n\n /**\n * Sister-field within the extended type if a declaring extension field.\n * @type {Field|null}\n */\n this.extensionField = null;\n\n /**\n * Sister-field within the declaring namespace if an extended field.\n * @type {Field|null}\n */\n this.declaringField = null;\n\n /**\n * Internally remembers whether this field is packed.\n * @type {boolean|null}\n * @private\n */\n this._packed = null;\n\n /**\n * Comment for this field.\n * @type {string|null}\n */\n this.comment = comment;\n}\n\n/**\n * Determines whether this field is packed. Only relevant when repeated and working with proto2.\n * @name Field#packed\n * @type {boolean}\n * @readonly\n */\nObject.defineProperty(Field.prototype, \"packed\", {\n get: function() {\n // defaults to packed=true if not explicity set to false\n if (this._packed === null)\n this._packed = this.getOption(\"packed\") !== false;\n return this._packed;\n }\n});\n\n/**\n * @override\n */\nField.prototype.setOption = function setOption(name, value, ifNotSet) {\n if (name === \"packed\") // clear cached before setting\n this._packed = null;\n return ReflectionObject.prototype.setOption.call(this, name, value, ifNotSet);\n};\n\n/**\n * Field descriptor.\n * @interface IField\n * @property {string} [rule=\"optional\"] Field rule\n * @property {string} type Field type\n * @property {number} id Field id\n * @property {Object.<string,*>} [options] Field options\n */\n\n/**\n * Extension field descriptor.\n * @interface IExtensionField\n * @extends IField\n * @property {string} extend Extended type\n */\n\n/**\n * Converts this field to a field descriptor.\n * @param {IToJSONOptions} [toJSONOptions] JSON conversion options\n * @returns {IField} Field descriptor\n */\nField.prototype.toJSON = function toJSON(toJSONOptions) {\n var keepComments = toJSONOptions ? Boolean(toJSONOptions.keepComments) : false;\n return util.toObject([\n \"rule\" , this.rule !== \"optional\" && this.rule || undefined,\n \"type\" , this.type,\n \"id\" , this.id,\n \"extend\" , this.extend,\n \"options\" , this.options,\n \"comment\" , keepComments ? this.comment : undefined\n ]);\n};\n\n/**\n * Resolves this field's type references.\n * @returns {Field} `this`\n * @throws {Error} If any reference cannot be resolved\n */\nField.prototype.resolve = function resolve() {\n\n if (this.resolved)\n return this;\n\n if ((this.typeDefault = types.defaults[this.type]) === undefined) { // if not a basic type, resolve it\n this.resolvedType = (this.declaringField ? this.declaringField.parent : this.parent).lookupTypeOrEnum(this.type);\n if (this.resolvedType instanceof Type)\n this.typeDefault = null;\n else // instanceof Enum\n this.typeDefault = this.resolvedType.values[Object.keys(this.resolvedType.values)[0]]; // first defined\n }\n\n // use explicitly set default value if present\n if (this.options && this.options[\"default\"] != null) {\n this.typeDefault = this.options[\"default\"];\n if (this.resolvedType instanceof Enum && typeof this.typeDefault === \"string\")\n this.typeDefault = this.resolvedType.values[this.typeDefault];\n }\n\n // remove unnecessary options\n if (this.options) {\n if (this.options.packed === true || this.options.packed !== undefined && this.resolvedType && !(this.resolvedType instanceof Enum))\n delete this.options.packed;\n if (!Object.keys(this.options).length)\n this.options = undefined;\n }\n\n // convert to internal data type if necesssary\n if (this.long) {\n this.typeDefault = util.Long.fromNumber(this.typeDefault, this.type.charAt(0) === \"u\");\n\n /* istanbul ignore else */\n if (Object.freeze)\n Object.freeze(this.typeDefault); // long instances are meant to be immutable anyway (i.e. use small int cache that even requires it)\n\n } else if (this.bytes && typeof this.typeDefault === \"string\") {\n var buf;\n if (util.base64.test(this.typeDefault))\n util.base64.decode(this.typeDefault, buf = util.newBuffer(util.base64.length(this.typeDefault)), 0);\n else\n util.utf8.write(this.typeDefault, buf = util.newBuffer(util.utf8.length(this.typeDefault)), 0);\n this.typeDefault = buf;\n }\n\n // take special care of maps and repeated fields\n if (this.map)\n this.defaultValue = util.emptyObject;\n else if (this.repeated)\n this.defaultValue = util.emptyArray;\n else\n this.defaultValue = this.typeDefault;\n\n // ensure proper value on prototype\n if (this.parent instanceof Type)\n this.parent.ctor.prototype[this.name] = this.defaultValue;\n\n return ReflectionObject.prototype.resolve.call(this);\n};\n\n/**\n * Decorator function as returned by {@link Field.d} and {@link MapField.d} (TypeScript).\n * @typedef FieldDecorator\n * @type {function}\n * @param {Object} prototype Target prototype\n * @param {string} fieldName Field name\n * @returns {undefined}\n */\n\n/**\n * Field decorator (TypeScript).\n * @name Field.d\n * @function\n * @param {number} fieldId Field id\n * @param {\"double\"|\"float\"|\"int32\"|\"uint32\"|\"sint32\"|\"fixed32\"|\"sfixed32\"|\"int64\"|\"uint64\"|\"sint64\"|\"fixed64\"|\"sfixed64\"|\"string\"|\"bool\"|\"bytes\"|Object} fieldType Field type\n * @param {\"optional\"|\"required\"|\"repeated\"} [fieldRule=\"optional\"] Field rule\n * @param {T} [defaultValue] Default value\n * @returns {FieldDecorator} Decorator function\n * @template T extends number | number[] | Long | Long[] | string | string[] | boolean | boolean[] | Uint8Array | Uint8Array[] | Buffer | Buffer[]\n */\nField.d = function decorateField(fieldId, fieldType, fieldRule, defaultValue) {\n\n // submessage: decorate the submessage and use its name as the type\n if (typeof fieldType === \"function\")\n fieldType = util.decorateType(fieldType).name;\n\n // enum reference: create a reflected copy of the enum and keep reuseing it\n else if (fieldType && typeof fieldType === \"object\")\n fieldType = util.decorateEnum(fieldType).name;\n\n return function fieldDecorator(prototype, fieldName) {\n util.decorateType(prototype.constructor)\n .add(new Field(fieldName, fieldId, fieldType, fieldRule, { \"default\": defaultValue }));\n };\n};\n\n/**\n * Field decorator (TypeScript).\n * @name Field.d\n * @function\n * @param {number} fieldId Field id\n * @param {Constructor<T>|string} fieldType Field type\n * @param {\"optional\"|\"required\"|\"repeated\"} [fieldRule=\"optional\"] Field rule\n * @returns {FieldDecorator} Decorator function\n * @template T extends Message<T>\n * @variation 2\n */\n// like Field.d but without a default value\n\n// Sets up cyclic dependencies (called in index-light)\nField._configure = function configure(Type_) {\n Type = Type_;\n};\n","\"use strict\";\nvar protobuf = module.exports = require(\"./index-minimal\");\n\nprotobuf.build = \"light\";\n\n/**\n * A node-style callback as used by {@link load} and {@link Root#load}.\n * @typedef LoadCallback\n * @type {function}\n * @param {Error|null} error Error, if any, otherwise `null`\n * @param {Root} [root] Root, if there hasn't been an error\n * @returns {undefined}\n */\n\n/**\n * Loads one or multiple .proto or preprocessed .json files into a common root namespace and calls the callback.\n * @param {string|string[]} filename One or multiple files to load\n * @param {Root} root Root namespace, defaults to create a new one if omitted.\n * @param {LoadCallback} callback Callback function\n * @returns {undefined}\n * @see {@link Root#load}\n */\nfunction load(filename, root, callback) {\n if (typeof root === \"function\") {\n callback = root;\n root = new protobuf.Root();\n } else if (!root)\n root = new protobuf.Root();\n return root.load(filename, callback);\n}\n\n/**\n * Loads one or multiple .proto or preprocessed .json files into a common root namespace and calls the callback.\n * @name load\n * @function\n * @param {string|string[]} filename One or multiple files to load\n * @param {LoadCallback} callback Callback function\n * @returns {undefined}\n * @see {@link Root#load}\n * @variation 2\n */\n// function load(filename:string, callback:LoadCallback):undefined\n\n/**\n * Loads one or multiple .proto or preprocessed .json files into a common root namespace and returns a promise.\n * @name load\n * @function\n * @param {string|string[]} filename One or multiple files to load\n * @param {Root} [root] Root namespace, defaults to create a new one if omitted.\n * @returns {Promise<Root>} Promise\n * @see {@link Root#load}\n * @variation 3\n */\n// function load(filename:string, [root:Root]):Promise<Root>\n\nprotobuf.load = load;\n\n/**\n * Synchronously loads one or multiple .proto or preprocessed .json files into a common root namespace (node only).\n * @param {string|string[]} filename One or multiple files to load\n * @param {Root} [root] Root namespace, defaults to create a new one if omitted.\n * @returns {Root} Root namespace\n * @throws {Error} If synchronous fetching is not supported (i.e. in browsers) or if a file's syntax is invalid\n * @see {@link Root#loadSync}\n */\nfunction loadSync(filename, root) {\n if (!root)\n root = new protobuf.Root();\n return root.loadSync(filename);\n}\n\nprotobuf.loadSync = loadSync;\n\n// Serialization\nprotobuf.encoder = require(\"./encoder\");\nprotobuf.decoder = require(\"./decoder\");\nprotobuf.verifier = require(\"./verifier\");\nprotobuf.converter = require(\"./converter\");\n\n// Reflection\nprotobuf.ReflectionObject = require(\"./object\");\nprotobuf.Namespace = require(\"./namespace\");\nprotobuf.Root = require(\"./root\");\nprotobuf.Enum = require(\"./enum\");\nprotobuf.Type = require(\"./type\");\nprotobuf.Field = require(\"./field\");\nprotobuf.OneOf = require(\"./oneof\");\nprotobuf.MapField = require(\"./mapfield\");\nprotobuf.Service = require(\"./service\");\nprotobuf.Method = require(\"./method\");\n\n// Runtime\nprotobuf.Message = require(\"./message\");\nprotobuf.wrappers = require(\"./wrappers\");\n\n// Utility\nprotobuf.types = require(\"./types\");\nprotobuf.util = require(\"./util\");\n\n// Set up possibly cyclic reflection dependencies\nprotobuf.ReflectionObject._configure(protobuf.Root);\nprotobuf.Namespace._configure(protobuf.Type, protobuf.Service, protobuf.Enum);\nprotobuf.Root._configure(protobuf.Type);\nprotobuf.Field._configure(protobuf.Type);\n","\"use strict\";\nvar protobuf = exports;\n\n/**\n * Build type, one of `\"full\"`, `\"light\"` or `\"minimal\"`.\n * @name build\n * @type {string}\n * @const\n */\nprotobuf.build = \"minimal\";\n\n// Serialization\nprotobuf.Writer = require(\"./writer\");\nprotobuf.BufferWriter = require(\"./writer_buffer\");\nprotobuf.Reader = require(\"./reader\");\nprotobuf.BufferReader = require(\"./reader_buffer\");\n\n// Utility\nprotobuf.util = require(\"./util/minimal\");\nprotobuf.rpc = require(\"./rpc\");\nprotobuf.roots = require(\"./roots\");\nprotobuf.configure = configure;\n\n/* istanbul ignore next */\n/**\n * Reconfigures the library according to the environment.\n * @returns {undefined}\n */\nfunction configure() {\n protobuf.util._configure();\n protobuf.Writer._configure(protobuf.BufferWriter);\n protobuf.Reader._configure(protobuf.BufferReader);\n}\n\n// Set up buffer utility according to the environment\nconfigure();\n","\"use strict\";\nmodule.exports = MapField;\n\n// extends Field\nvar Field = require(\"./field\");\n((MapField.prototype = Object.create(Field.prototype)).constructor = MapField).className = \"MapField\";\n\nvar types = require(\"./types\"),\n util = require(\"./util\");\n\n/**\n * Constructs a new map field instance.\n * @classdesc Reflected map field.\n * @extends FieldBase\n * @constructor\n * @param {string} name Unique name within its namespace\n * @param {number} id Unique id within its namespace\n * @param {string} keyType Key type\n * @param {string} type Value type\n * @param {Object.<string,*>} [options] Declared options\n * @param {string} [comment] Comment associated with this field\n */\nfunction MapField(name, id, keyType, type, options, comment) {\n Field.call(this, name, id, type, undefined, undefined, options, comment);\n\n /* istanbul ignore if */\n if (!util.isString(keyType))\n throw TypeError(\"keyType must be a string\");\n\n /**\n * Key type.\n * @type {string}\n */\n this.keyType = keyType; // toJSON, marker\n\n /**\n * Resolved key type if not a basic type.\n * @type {ReflectionObject|null}\n */\n this.resolvedKeyType = null;\n\n // Overrides Field#map\n this.map = true;\n}\n\n/**\n * Map field descriptor.\n * @interface IMapField\n * @extends {IField}\n * @property {string} keyType Key type\n */\n\n/**\n * Extension map field descriptor.\n * @interface IExtensionMapField\n * @extends IMapField\n * @property {string} extend Extended type\n */\n\n/**\n * Constructs a map field from a map field descriptor.\n * @param {string} name Field name\n * @param {IMapField} json Map field descriptor\n * @returns {MapField} Created map field\n * @throws {TypeError} If arguments are invalid\n */\nMapField.fromJSON = function fromJSON(name, json) {\n return new MapField(name, json.id, json.keyType, json.type, json.options, json.comment);\n};\n\n/**\n * Converts this map field to a map field descriptor.\n * @param {IToJSONOptions} [toJSONOptions] JSON conversion options\n * @returns {IMapField} Map field descriptor\n */\nMapField.prototype.toJSON = function toJSON(toJSONOptions) {\n var keepComments = toJSONOptions ? Boolean(toJSONOptions.keepComments) : false;\n return util.toObject([\n \"keyType\" , this.keyType,\n \"type\" , this.type,\n \"id\" , this.id,\n \"extend\" , this.extend,\n \"options\" , this.options,\n \"comment\" , keepComments ? this.comment : undefined\n ]);\n};\n\n/**\n * @override\n */\nMapField.prototype.resolve = function resolve() {\n if (this.resolved)\n return this;\n\n // Besides a value type, map fields have a key type that may be \"any scalar type except for floating point types and bytes\"\n if (types.mapKey[this.keyType] === undefined)\n throw Error(\"invalid key type: \" + this.keyType);\n\n return Field.prototype.resolve.call(this);\n};\n\n/**\n * Map field decorator (TypeScript).\n * @name MapField.d\n * @function\n * @param {number} fieldId Field id\n * @param {\"int32\"|\"uint32\"|\"sint32\"|\"fixed32\"|\"sfixed32\"|\"int64\"|\"uint64\"|\"sint64\"|\"fixed64\"|\"sfixed64\"|\"bool\"|\"string\"} fieldKeyType Field key type\n * @param {\"double\"|\"float\"|\"int32\"|\"uint32\"|\"sint32\"|\"fixed32\"|\"sfixed32\"|\"int64\"|\"uint64\"|\"sint64\"|\"fixed64\"|\"sfixed64\"|\"bool\"|\"string\"|\"bytes\"|Object|Constructor<{}>} fieldValueType Field value type\n * @returns {FieldDecorator} Decorator function\n * @template T extends { [key: string]: number | Long | string | boolean | Uint8Array | Buffer | number[] | Message<{}> }\n */\nMapField.d = function decorateMapField(fieldId, fieldKeyType, fieldValueType) {\n\n // submessage value: decorate the submessage and use its name as the type\n if (typeof fieldValueType === \"function\")\n fieldValueType = util.decorateType(fieldValueType).name;\n\n // enum reference value: create a reflected copy of the enum and keep reuseing it\n else if (fieldValueType && typeof fieldValueType === \"object\")\n fieldValueType = util.decorateEnum(fieldValueType).name;\n\n return function mapFieldDecorator(prototype, fieldName) {\n util.decorateType(prototype.constructor)\n .add(new MapField(fieldName, fieldId, fieldKeyType, fieldValueType));\n };\n};\n","\"use strict\";\nmodule.exports = Message;\n\nvar util = require(\"./util/minimal\");\n\n/**\n * Constructs a new message instance.\n * @classdesc Abstract runtime message.\n * @constructor\n * @param {Properties<T>} [properties] Properties to set\n * @template T extends object = object\n */\nfunction Message(properties) {\n // not used internally\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n this[keys[i]] = properties[keys[i]];\n}\n\n/**\n * Reference to the reflected type.\n * @name Message.$type\n * @type {Type}\n * @readonly\n */\n\n/**\n * Reference to the reflected type.\n * @name Message#$type\n * @type {Type}\n * @readonly\n */\n\n/*eslint-disable valid-jsdoc*/\n\n/**\n * Creates a new message of this type using the specified properties.\n * @param {Object.<string,*>} [properties] Properties to set\n * @returns {Message<T>} Message instance\n * @template T extends Message<T>\n * @this Constructor<T>\n */\nMessage.create = function create(properties) {\n return this.$type.create(properties);\n};\n\n/**\n * Encodes a message of this type.\n * @param {T|Object.<string,*>} message Message to encode\n * @param {Writer} [writer] Writer to use\n * @returns {Writer} Writer\n * @template T extends Message<T>\n * @this Constructor<T>\n */\nMessage.encode = function encode(message, writer) {\n return this.$type.encode(message, writer);\n};\n\n/**\n * Encodes a message of this type preceeded by its length as a varint.\n * @param {T|Object.<string,*>} message Message to encode\n * @param {Writer} [writer] Writer to use\n * @returns {Writer} Writer\n * @template T extends Message<T>\n * @this Constructor<T>\n */\nMessage.encodeDelimited = function encodeDelimited(message, writer) {\n return this.$type.encodeDelimited(message, writer);\n};\n\n/**\n * Decodes a message of this type.\n * @name Message.decode\n * @function\n * @param {Reader|Uint8Array} reader Reader or buffer to decode\n * @returns {T} Decoded message\n * @template T extends Message<T>\n * @this Constructor<T>\n */\nMessage.decode = function decode(reader) {\n return this.$type.decode(reader);\n};\n\n/**\n * Decodes a message of this type preceeded by its length as a varint.\n * @name Message.decodeDelimited\n * @function\n * @param {Reader|Uint8Array} reader Reader or buffer to decode\n * @returns {T} Decoded message\n * @template T extends Message<T>\n * @this Constructor<T>\n */\nMessage.decodeDelimited = function decodeDelimited(reader) {\n return this.$type.decodeDelimited(reader);\n};\n\n/**\n * Verifies a message of this type.\n * @name Message.verify\n * @function\n * @param {Object.<string,*>} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\nMessage.verify = function verify(message) {\n return this.$type.verify(message);\n};\n\n/**\n * Creates a new message of this type from a plain object. Also converts values to their respective internal types.\n * @param {Object.<string,*>} object Plain object\n * @returns {T} Message instance\n * @template T extends Message<T>\n * @this Constructor<T>\n */\nMessage.fromObject = function fromObject(object) {\n return this.$type.fromObject(object);\n};\n\n/**\n * Creates a plain object from a message of this type. Also converts values to other types if specified.\n * @param {T} message Message instance\n * @param {IConversionOptions} [options] Conversion options\n * @returns {Object.<string,*>} Plain object\n * @template T extends Message<T>\n * @this Constructor<T>\n */\nMessage.toObject = function toObject(message, options) {\n return this.$type.toObject(message, options);\n};\n\n/**\n * Converts this message to JSON.\n * @returns {Object.<string,*>} JSON object\n */\nMessage.prototype.toJSON = function toJSON() {\n return this.$type.toObject(this, util.toJSONOptions);\n};\n\n/*eslint-enable valid-jsdoc*/","\"use strict\";\nmodule.exports = Method;\n\n// extends ReflectionObject\nvar ReflectionObject = require(\"./object\");\n((Method.prototype = Object.create(ReflectionObject.prototype)).constructor = Method).className = \"Method\";\n\nvar util = require(\"./util\");\n\n/**\n * Constructs a new service method instance.\n * @classdesc Reflected service method.\n * @extends ReflectionObject\n * @constructor\n * @param {string} name Method name\n * @param {string|undefined} type Method type, usually `\"rpc\"`\n * @param {string} requestType Request message type\n * @param {string} responseType Response message type\n * @param {boolean|Object.<string,*>} [requestStream] Whether the request is streamed\n * @param {boolean|Object.<string,*>} [responseStream] Whether the response is streamed\n * @param {Object.<string,*>} [options] Declared options\n * @param {string} [comment] The comment for this method\n * @param {Object.<string,*>} [parsedOptions] Declared options, properly parsed into an object\n */\nfunction Method(name, type, requestType, responseType, requestStream, responseStream, options, comment, parsedOptions) {\n\n /* istanbul ignore next */\n if (util.isObject(requestStream)) {\n options = requestStream;\n requestStream = responseStream = undefined;\n } else if (util.isObject(responseStream)) {\n options = responseStream;\n responseStream = undefined;\n }\n\n /* istanbul ignore if */\n if (!(type === undefined || util.isString(type)))\n throw TypeError(\"type must be a string\");\n\n /* istanbul ignore if */\n if (!util.isString(requestType))\n throw TypeError(\"requestType must be a string\");\n\n /* istanbul ignore if */\n if (!util.isString(responseType))\n throw TypeError(\"responseType must be a string\");\n\n ReflectionObject.call(this, name, options);\n\n /**\n * Method type.\n * @type {string}\n */\n this.type = type || \"rpc\"; // toJSON\n\n /**\n * Request type.\n * @type {string}\n */\n this.requestType = requestType; // toJSON, marker\n\n /**\n * Whether requests are streamed or not.\n * @type {boolean|undefined}\n */\n this.requestStream = requestStream ? true : undefined; // toJSON\n\n /**\n * Response type.\n * @type {string}\n */\n this.responseType = responseType; // toJSON\n\n /**\n * Whether responses are streamed or not.\n * @type {boolean|undefined}\n */\n this.responseStream = responseStream ? true : undefined; // toJSON\n\n /**\n * Resolved request type.\n * @type {Type|null}\n */\n this.resolvedRequestType = null;\n\n /**\n * Resolved response type.\n * @type {Type|null}\n */\n this.resolvedResponseType = null;\n\n /**\n * Comment for this method\n * @type {string|null}\n */\n this.comment = comment;\n\n /**\n * Options properly parsed into an object\n */\n this.parsedOptions = parsedOptions;\n}\n\n/**\n * Method descriptor.\n * @interface IMethod\n * @property {string} [type=\"rpc\"] Method type\n * @property {string} requestType Request type\n * @property {string} responseType Response type\n * @property {boolean} [requestStream=false] Whether requests are streamed\n * @property {boolean} [responseStream=false] Whether responses are streamed\n * @property {Object.<string,*>} [options] Method options\n * @property {string} comment Method comments\n * @property {Object.<string,*>} [parsedOptions] Method options properly parsed into an object\n */\n\n/**\n * Constructs a method from a method descriptor.\n * @param {string} name Method name\n * @param {IMethod} json Method descriptor\n * @returns {Method} Created method\n * @throws {TypeError} If arguments are invalid\n */\nMethod.fromJSON = function fromJSON(name, json) {\n return new Method(name, json.type, json.requestType, json.responseType, json.requestStream, json.responseStream, json.options, json.comment, json.parsedOptions);\n};\n\n/**\n * Converts this method to a method descriptor.\n * @param {IToJSONOptions} [toJSONOptions] JSON conversion options\n * @returns {IMethod} Method descriptor\n */\nMethod.prototype.toJSON = function toJSON(toJSONOptions) {\n var keepComments = toJSONOptions ? Boolean(toJSONOptions.keepComments) : false;\n return util.toObject([\n \"type\" , this.type !== \"rpc\" && /* istanbul ignore next */ this.type || undefined,\n \"requestType\" , this.requestType,\n \"requestStream\" , this.requestStream,\n \"responseType\" , this.responseType,\n \"responseStream\" , this.responseStream,\n \"options\" , this.options,\n \"comment\" , keepComments ? this.comment : undefined,\n \"parsedOptions\" , this.parsedOptions,\n ]);\n};\n\n/**\n * @override\n */\nMethod.prototype.resolve = function resolve() {\n\n /* istanbul ignore if */\n if (this.resolved)\n return this;\n\n this.resolvedRequestType = this.parent.lookupType(this.requestType);\n this.resolvedResponseType = this.parent.lookupType(this.responseType);\n\n return ReflectionObject.prototype.resolve.call(this);\n};\n","\"use strict\";\nmodule.exports = Namespace;\n\n// extends ReflectionObject\nvar ReflectionObject = require(\"./object\");\n((Namespace.prototype = Object.create(ReflectionObject.prototype)).constructor = Namespace).className = \"Namespace\";\n\nvar Field = require(\"./field\"),\n OneOf = require(\"./oneof\"),\n util = require(\"./util\");\n\nvar Type, // cyclic\n Service,\n Enum;\n\n/**\n * Constructs a new namespace instance.\n * @name Namespace\n * @classdesc Reflected namespace.\n * @extends NamespaceBase\n * @constructor\n * @param {string} name Namespace name\n * @param {Object.<string,*>} [options] Declared options\n */\n\n/**\n * Constructs a namespace from JSON.\n * @memberof Namespace\n * @function\n * @param {string} name Namespace name\n * @param {Object.<string,*>} json JSON object\n * @returns {Namespace} Created namespace\n * @throws {TypeError} If arguments are invalid\n */\nNamespace.fromJSON = function fromJSON(name, json) {\n return new Namespace(name, json.options).addJSON(json.nested);\n};\n\n/**\n * Converts an array of reflection objects to JSON.\n * @memberof Namespace\n * @param {ReflectionObject[]} array Object array\n * @param {IToJSONOptions} [toJSONOptions] JSON conversion options\n * @returns {Object.<string,*>|undefined} JSON object or `undefined` when array is empty\n */\nfunction arrayToJSON(array, toJSONOptions) {\n if (!(array && array.length))\n return undefined;\n var obj = {};\n for (var i = 0; i < array.length; ++i)\n obj[array[i].name] = array[i].toJSON(toJSONOptions);\n return obj;\n}\n\nNamespace.arrayToJSON = arrayToJSON;\n\n/**\n * Tests if the specified id is reserved.\n * @param {Array.<number[]|string>|undefined} reserved Array of reserved ranges and names\n * @param {number} id Id to test\n * @returns {boolean} `true` if reserved, otherwise `false`\n */\nNamespace.isReservedId = function isReservedId(reserved, id) {\n if (reserved)\n for (var i = 0; i < reserved.length; ++i)\n if (typeof reserved[i] !== \"string\" && reserved[i][0] <= id && reserved[i][1] > id)\n return true;\n return false;\n};\n\n/**\n * Tests if the specified name is reserved.\n * @param {Array.<number[]|string>|undefined} reserved Array of reserved ranges and names\n * @param {string} name Name to test\n * @returns {boolean} `true` if reserved, otherwise `false`\n */\nNamespace.isReservedName = function isReservedName(reserved, name) {\n if (reserved)\n for (var i = 0; i < reserved.length; ++i)\n if (reserved[i] === name)\n return true;\n return false;\n};\n\n/**\n * Not an actual constructor. Use {@link Namespace} instead.\n * @classdesc Base class of all reflection objects containing nested objects. This is not an actual class but here for the sake of having consistent type definitions.\n * @exports NamespaceBase\n * @extends ReflectionObject\n * @abstract\n * @constructor\n * @param {string} name Namespace name\n * @param {Object.<string,*>} [options] Declared options\n * @see {@link Namespace}\n */\nfunction Namespace(name, options) {\n ReflectionObject.call(this, name, options);\n\n /**\n * Nested objects by name.\n * @type {Object.<string,ReflectionObject>|undefined}\n */\n this.nested = undefined; // toJSON\n\n /**\n * Cached nested objects as an array.\n * @type {ReflectionObject[]|null}\n * @private\n */\n this._nestedArray = null;\n}\n\nfunction clearCache(namespace) {\n namespace._nestedArray = null;\n return namespace;\n}\n\n/**\n * Nested objects of this namespace as an array for iteration.\n * @name NamespaceBase#nestedArray\n * @type {ReflectionObject[]}\n * @readonly\n */\nObject.defineProperty(Namespace.prototype, \"nestedArray\", {\n get: function() {\n return this._nestedArray || (this._nestedArray = util.toArray(this.nested));\n }\n});\n\n/**\n * Namespace descriptor.\n * @interface INamespace\n * @property {Object.<string,*>} [options] Namespace options\n * @property {Object.<string,AnyNestedObject>} [nested] Nested object descriptors\n */\n\n/**\n * Any extension field descriptor.\n * @typedef AnyExtensionField\n * @type {IExtensionField|IExtensionMapField}\n */\n\n/**\n * Any nested object descriptor.\n * @typedef AnyNestedObject\n * @type {IEnum|IType|IService|AnyExtensionField|INamespace}\n */\n// ^ BEWARE: VSCode hangs forever when using more than 5 types (that's why AnyExtensionField exists in the first place)\n\n/**\n * Converts this namespace to a namespace descriptor.\n * @param {IToJSONOptions} [toJSONOptions] JSON conversion options\n * @returns {INamespace} Namespace descriptor\n */\nNamespace.prototype.toJSON = function toJSON(toJSONOptions) {\n return util.toObject([\n \"options\" , this.options,\n \"nested\" , arrayToJSON(this.nestedArray, toJSONOptions)\n ]);\n};\n\n/**\n * Adds nested objects to this namespace from nested object descriptors.\n * @param {Object.<string,AnyNestedObject>} nestedJson Any nested object descriptors\n * @returns {Namespace} `this`\n */\nNamespace.prototype.addJSON = function addJSON(nestedJson) {\n var ns = this;\n /* istanbul ignore else */\n if (nestedJson) {\n for (var names = Object.keys(nestedJson), i = 0, nested; i < names.length; ++i) {\n nested = nestedJson[names[i]];\n ns.add( // most to least likely\n ( nested.fields !== undefined\n ? Type.fromJSON\n : nested.values !== undefined\n ? Enum.fromJSON\n : nested.methods !== undefined\n ? Service.fromJSON\n : nested.id !== undefined\n ? Field.fromJSON\n : Namespace.fromJSON )(names[i], nested)\n );\n }\n }\n return this;\n};\n\n/**\n * Gets the nested object of the specified name.\n * @param {string} name Nested object name\n * @returns {ReflectionObject|null} The reflection object or `null` if it doesn't exist\n */\nNamespace.prototype.get = function get(name) {\n return this.nested && this.nested[name]\n || null;\n};\n\n/**\n * Gets the values of the nested {@link Enum|enum} of the specified name.\n * This methods differs from {@link Namespace#get|get} in that it returns an enum's values directly and throws instead of returning `null`.\n * @param {string} name Nested enum name\n * @returns {Object.<string,number>} Enum values\n * @throws {Error} If there is no such enum\n */\nNamespace.prototype.getEnum = function getEnum(name) {\n if (this.nested && this.nested[name] instanceof Enum)\n return this.nested[name].values;\n throw Error(\"no such enum: \" + name);\n};\n\n/**\n * Adds a nested object to this namespace.\n * @param {ReflectionObject} object Nested object to add\n * @returns {Namespace} `this`\n * @throws {TypeError} If arguments are invalid\n * @throws {Error} If there is already a nested object with this name\n */\nNamespace.prototype.add = function add(object) {\n\n if (!(object instanceof Field && object.extend !== undefined || object instanceof Type || object instanceof Enum || object instanceof Service || object instanceof Namespace || object instanceof OneOf))\n throw TypeError(\"object must be a valid nested object\");\n\n if (!this.nested)\n this.nested = {};\n else {\n var prev = this.get(object.name);\n if (prev) {\n if (prev instanceof Namespace && object instanceof Namespace && !(prev instanceof Type || prev instanceof Service)) {\n // replace plain namespace but keep existing nested elements and options\n var nested = prev.nestedArray;\n for (var i = 0; i < nested.length; ++i)\n object.add(nested[i]);\n this.remove(prev);\n if (!this.nested)\n this.nested = {};\n object.setOptions(prev.options, true);\n\n } else\n throw Error(\"duplicate name '\" + object.name + \"' in \" + this);\n }\n }\n this.nested[object.name] = object;\n object.onAdd(this);\n return clearCache(this);\n};\n\n/**\n * Removes a nested object from this namespace.\n * @param {ReflectionObject} object Nested object to remove\n * @returns {Namespace} `this`\n * @throws {TypeError} If arguments are invalid\n * @throws {Error} If `object` is not a member of this namespace\n */\nNamespace.prototype.remove = function remove(object) {\n\n if (!(object instanceof ReflectionObject))\n throw TypeError(\"object must be a ReflectionObject\");\n if (object.parent !== this)\n throw Error(object + \" is not a member of \" + this);\n\n delete this.nested[object.name];\n if (!Object.keys(this.nested).length)\n this.nested = undefined;\n\n object.onRemove(this);\n return clearCache(this);\n};\n\n/**\n * Defines additial namespaces within this one if not yet existing.\n * @param {string|string[]} path Path to create\n * @param {*} [json] Nested types to create from JSON\n * @returns {Namespace} Pointer to the last namespace created or `this` if path is empty\n */\nNamespace.prototype.define = function define(path, json) {\n\n if (util.isString(path))\n path = path.split(\".\");\n else if (!Array.isArray(path))\n throw TypeError(\"illegal path\");\n if (path && path.length && path[0] === \"\")\n throw Error(\"path must be relative\");\n\n var ptr = this;\n while (path.length > 0) {\n var part = path.shift();\n if (ptr.nested && ptr.nested[part]) {\n ptr = ptr.nested[part];\n if (!(ptr instanceof Namespace))\n throw Error(\"path conflicts with non-namespace objects\");\n } else\n ptr.add(ptr = new Namespace(part));\n }\n if (json)\n ptr.addJSON(json);\n return ptr;\n};\n\n/**\n * Resolves this namespace's and all its nested objects' type references. Useful to validate a reflection tree, but comes at a cost.\n * @returns {Namespace} `this`\n */\nNamespace.prototype.resolveAll = function resolveAll() {\n var nested = this.nestedArray, i = 0;\n while (i < nested.length)\n if (nested[i] instanceof Namespace)\n nested[i++].resolveAll();\n else\n nested[i++].resolve();\n return this.resolve();\n};\n\n/**\n * Recursively looks up the reflection object matching the specified path in the scope of this namespace.\n * @param {string|string[]} path Path to look up\n * @param {*|Array.<*>} filterTypes Filter types, any combination of the constructors of `protobuf.Type`, `protobuf.Enum`, `protobuf.Service` etc.\n * @param {boolean} [parentAlreadyChecked=false] If known, whether the parent has already been checked\n * @returns {ReflectionObject|null} Looked up object or `null` if none could be found\n */\nNamespace.prototype.lookup = function lookup(path, filterTypes, parentAlreadyChecked) {\n\n /* istanbul ignore next */\n if (typeof filterTypes === \"boolean\") {\n parentAlreadyChecked = filterTypes;\n filterTypes = undefined;\n } else if (filterTypes && !Array.isArray(filterTypes))\n filterTypes = [ filterTypes ];\n\n if (util.isString(path) && path.length) {\n if (path === \".\")\n return this.root;\n path = path.split(\".\");\n } else if (!path.length)\n return this;\n\n // Start at root if path is absolute\n if (path[0] === \"\")\n return this.root.lookup(path.slice(1), filterTypes);\n\n // Test if the first part matches any nested object, and if so, traverse if path contains more\n var found = this.get(path[0]);\n if (found) {\n if (path.length === 1) {\n if (!filterTypes || filterTypes.indexOf(found.constructor) > -1)\n return found;\n } else if (found instanceof Namespace && (found = found.lookup(path.slice(1), filterTypes, true)))\n return found;\n\n // Otherwise try each nested namespace\n } else\n for (var i = 0; i < this.nestedArray.length; ++i)\n if (this._nestedArray[i] instanceof Namespace && (found = this._nestedArray[i].lookup(path, filterTypes, true)))\n return found;\n\n // If there hasn't been a match, try again at the parent\n if (this.parent === null || parentAlreadyChecked)\n return null;\n return this.parent.lookup(path, filterTypes);\n};\n\n/**\n * Looks up the reflection object at the specified path, relative to this namespace.\n * @name NamespaceBase#lookup\n * @function\n * @param {string|string[]} path Path to look up\n * @param {boolean} [parentAlreadyChecked=false] Whether the parent has already been checked\n * @returns {ReflectionObject|null} Looked up object or `null` if none could be found\n * @variation 2\n */\n// lookup(path: string, [parentAlreadyChecked: boolean])\n\n/**\n * Looks up the {@link Type|type} at the specified path, relative to this namespace.\n * Besides its signature, this methods differs from {@link Namespace#lookup|lookup} in that it throws instead of returning `null`.\n * @param {string|string[]} path Path to look up\n * @returns {Type} Looked up type\n * @throws {Error} If `path` does not point to a type\n */\nNamespace.prototype.lookupType = function lookupType(path) {\n var found = this.lookup(path, [ Type ]);\n if (!found)\n throw Error(\"no such type: \" + path);\n return found;\n};\n\n/**\n * Looks up the values of the {@link Enum|enum} at the specified path, relative to this namespace.\n * Besides its signature, this methods differs from {@link Namespace#lookup|lookup} in that it throws instead of returning `null`.\n * @param {string|string[]} path Path to look up\n * @returns {Enum} Looked up enum\n * @throws {Error} If `path` does not point to an enum\n */\nNamespace.prototype.lookupEnum = function lookupEnum(path) {\n var found = this.lookup(path, [ Enum ]);\n if (!found)\n throw Error(\"no such Enum '\" + path + \"' in \" + this);\n return found;\n};\n\n/**\n * Looks up the {@link Type|type} or {@link Enum|enum} at the specified path, relative to this namespace.\n * Besides its signature, this methods differs from {@link Namespace#lookup|lookup} in that it throws instead of returning `null`.\n * @param {string|string[]} path Path to look up\n * @returns {Type} Looked up type or enum\n * @throws {Error} If `path` does not point to a type or enum\n */\nNamespace.prototype.lookupTypeOrEnum = function lookupTypeOrEnum(path) {\n var found = this.lookup(path, [ Type, Enum ]);\n if (!found)\n throw Error(\"no such Type or Enum '\" + path + \"' in \" + this);\n return found;\n};\n\n/**\n * Looks up the {@link Service|service} at the specified path, relative to this namespace.\n * Besides its signature, this methods differs from {@link Namespace#lookup|lookup} in that it throws instead of returning `null`.\n * @param {string|string[]} path Path to look up\n * @returns {Service} Looked up service\n * @throws {Error} If `path` does not point to a service\n */\nNamespace.prototype.lookupService = function lookupService(path) {\n var found = this.lookup(path, [ Service ]);\n if (!found)\n throw Error(\"no such Service '\" + path + \"' in \" + this);\n return found;\n};\n\n// Sets up cyclic dependencies (called in index-light)\nNamespace._configure = function(Type_, Service_, Enum_) {\n Type = Type_;\n Service = Service_;\n Enum = Enum_;\n};\n","\"use strict\";\nmodule.exports = ReflectionObject;\n\nReflectionObject.className = \"ReflectionObject\";\n\nvar util = require(\"./util\");\n\nvar Root; // cyclic\n\n/**\n * Constructs a new reflection object instance.\n * @classdesc Base class of all reflection objects.\n * @constructor\n * @param {string} name Object name\n * @param {Object.<string,*>} [options] Declared options\n * @abstract\n */\nfunction ReflectionObject(name, options) {\n\n if (!util.isString(name))\n throw TypeError(\"name must be a string\");\n\n if (options && !util.isObject(options))\n throw TypeError(\"options must be an object\");\n\n /**\n * Options.\n * @type {Object.<string,*>|undefined}\n */\n this.options = options; // toJSON\n\n /**\n * Parsed Options.\n * @type {Array.<Object.<string,*>>|undefined}\n */\n this.parsedOptions = null;\n\n /**\n * Unique name within its namespace.\n * @type {string}\n */\n this.name = name;\n\n /**\n * Parent namespace.\n * @type {Namespace|null}\n */\n this.parent = null;\n\n /**\n * Whether already resolved or not.\n * @type {boolean}\n */\n this.resolved = false;\n\n /**\n * Comment text, if any.\n * @type {string|null}\n */\n this.comment = null;\n\n /**\n * Defining file name.\n * @type {string|null}\n */\n this.filename = null;\n}\n\nObject.defineProperties(ReflectionObject.prototype, {\n\n /**\n * Reference to the root namespace.\n * @name ReflectionObject#root\n * @type {Root}\n * @readonly\n */\n root: {\n get: function() {\n var ptr = this;\n while (ptr.parent !== null)\n ptr = ptr.parent;\n return ptr;\n }\n },\n\n /**\n * Full name including leading dot.\n * @name ReflectionObject#fullName\n * @type {string}\n * @readonly\n */\n fullName: {\n get: function() {\n var path = [ this.name ],\n ptr = this.parent;\n while (ptr) {\n path.unshift(ptr.name);\n ptr = ptr.parent;\n }\n return path.join(\".\");\n }\n }\n});\n\n/**\n * Converts this reflection object to its descriptor representation.\n * @returns {Object.<string,*>} Descriptor\n * @abstract\n */\nReflectionObject.prototype.toJSON = /* istanbul ignore next */ function toJSON() {\n throw Error(); // not implemented, shouldn't happen\n};\n\n/**\n * Called when this object is added to a parent.\n * @param {ReflectionObject} parent Parent added to\n * @returns {undefined}\n */\nReflectionObject.prototype.onAdd = function onAdd(parent) {\n if (this.parent && this.parent !== parent)\n this.parent.remove(this);\n this.parent = parent;\n this.resolved = false;\n var root = parent.root;\n if (root instanceof Root)\n root._handleAdd(this);\n};\n\n/**\n * Called when this object is removed from a parent.\n * @param {ReflectionObject} parent Parent removed from\n * @returns {undefined}\n */\nReflectionObject.prototype.onRemove = function onRemove(parent) {\n var root = parent.root;\n if (root instanceof Root)\n root._handleRemove(this);\n this.parent = null;\n this.resolved = false;\n};\n\n/**\n * Resolves this objects type references.\n * @returns {ReflectionObject} `this`\n */\nReflectionObject.prototype.resolve = function resolve() {\n if (this.resolved)\n return this;\n if (this.root instanceof Root)\n this.resolved = true; // only if part of a root\n return this;\n};\n\n/**\n * Gets an option value.\n * @param {string} name Option name\n * @returns {*} Option value or `undefined` if not set\n */\nReflectionObject.prototype.getOption = function getOption(name) {\n if (this.options)\n return this.options[name];\n return undefined;\n};\n\n/**\n * Sets an option.\n * @param {string} name Option name\n * @param {*} value Option value\n * @param {boolean} [ifNotSet] Sets the option only if it isn't currently set\n * @returns {ReflectionObject} `this`\n */\nReflectionObject.prototype.setOption = function setOption(name, value, ifNotSet) {\n if (!ifNotSet || !this.options || this.options[name] === undefined)\n (this.options || (this.options = {}))[name] = value;\n return this;\n};\n\n/**\n * Sets a parsed option.\n * @param {string} name parsed Option name\n * @param {*} value Option value\n * @param {string} propName dot '.' delimited full path of property within the option to set. if undefined\\empty, will add a new option with that value\n * @returns {ReflectionObject} `this`\n */\nReflectionObject.prototype.setParsedOption = function setParsedOption(name, value, propName) {\n if (!this.parsedOptions) {\n this.parsedOptions = [];\n }\n var parsedOptions = this.parsedOptions;\n if (propName) {\n // If setting a sub property of an option then try to merge it\n // with an existing option\n var opt = parsedOptions.find(function (opt) {\n return Object.prototype.hasOwnProperty.call(opt, name);\n });\n if (opt) {\n // If we found an existing option - just merge the property value\n var newValue = opt[name];\n util.setProperty(newValue, propName, value);\n } else {\n // otherwise, create a new option, set it's property and add it to the list\n opt = {};\n opt[name] = util.setProperty({}, propName, value);\n parsedOptions.push(opt);\n }\n } else {\n // Always create a new option when setting the value of the option itself\n var newOpt = {};\n newOpt[name] = value;\n parsedOptions.push(newOpt);\n }\n return this;\n};\n\n/**\n * Sets multiple options.\n * @param {Object.<string,*>} options Options to set\n * @param {boolean} [ifNotSet] Sets an option only if it isn't currently set\n * @returns {ReflectionObject} `this`\n */\nReflectionObject.prototype.setOptions = function setOptions(options, ifNotSet) {\n if (options)\n for (var keys = Object.keys(options), i = 0; i < keys.length; ++i)\n this.setOption(keys[i], options[keys[i]], ifNotSet);\n return this;\n};\n\n/**\n * Converts this instance to its string representation.\n * @returns {string} Class name[, space, full name]\n */\nReflectionObject.prototype.toString = function toString() {\n var className = this.constructor.className,\n fullName = this.fullName;\n if (fullName.length)\n return className + \" \" + fullName;\n return className;\n};\n\n// Sets up cyclic dependencies (called in index-light)\nReflectionObject._configure = function(Root_) {\n Root = Root_;\n};\n","\"use strict\";\nmodule.exports = OneOf;\n\n// extends ReflectionObject\nvar ReflectionObject = require(\"./object\");\n((OneOf.prototype = Object.create(ReflectionObject.prototype)).constructor = OneOf).className = \"OneOf\";\n\nvar Field = require(\"./field\"),\n util = require(\"./util\");\n\n/**\n * Constructs a new oneof instance.\n * @classdesc Reflected oneof.\n * @extends ReflectionObject\n * @constructor\n * @param {string} name Oneof name\n * @param {string[]|Object.<string,*>} [fieldNames] Field names\n * @param {Object.<string,*>} [options] Declared options\n * @param {string} [comment] Comment associated with this field\n */\nfunction OneOf(name, fieldNames, options, comment) {\n if (!Array.isArray(fieldNames)) {\n options = fieldNames;\n fieldNames = undefined;\n }\n ReflectionObject.call(this, name, options);\n\n /* istanbul ignore if */\n if (!(fieldNames === undefined || Array.isArray(fieldNames)))\n throw TypeError(\"fieldNames must be an Array\");\n\n /**\n * Field names that belong to this oneof.\n * @type {string[]}\n */\n this.oneof = fieldNames || []; // toJSON, marker\n\n /**\n * Fields that belong to this oneof as an array for iteration.\n * @type {Field[]}\n * @readonly\n */\n this.fieldsArray = []; // declared readonly for conformance, possibly not yet added to parent\n\n /**\n * Comment for this field.\n * @type {string|null}\n */\n this.comment = comment;\n}\n\n/**\n * Oneof descriptor.\n * @interface IOneOf\n * @property {Array.<string>} oneof Oneof field names\n * @property {Object.<string,*>} [options] Oneof options\n */\n\n/**\n * Constructs a oneof from a oneof descriptor.\n * @param {string} name Oneof name\n * @param {IOneOf} json Oneof descriptor\n * @returns {OneOf} Created oneof\n * @throws {TypeError} If arguments are invalid\n */\nOneOf.fromJSON = function fromJSON(name, json) {\n return new OneOf(name, json.oneof, json.options, json.comment);\n};\n\n/**\n * Converts this oneof to a oneof descriptor.\n * @param {IToJSONOptions} [toJSONOptions] JSON conversion options\n * @returns {IOneOf} Oneof descriptor\n */\nOneOf.prototype.toJSON = function toJSON(toJSONOptions) {\n var keepComments = toJSONOptions ? Boolean(toJSONOptions.keepComments) : false;\n return util.toObject([\n \"options\" , this.options,\n \"oneof\" , this.oneof,\n \"comment\" , keepComments ? this.comment : undefined\n ]);\n};\n\n/**\n * Adds the fields of the specified oneof to the parent if not already done so.\n * @param {OneOf} oneof The oneof\n * @returns {undefined}\n * @inner\n * @ignore\n */\nfunction addFieldsToParent(oneof) {\n if (oneof.parent)\n for (var i = 0; i < oneof.fieldsArray.length; ++i)\n if (!oneof.fieldsArray[i].parent)\n oneof.parent.add(oneof.fieldsArray[i]);\n}\n\n/**\n * Adds a field to this oneof and removes it from its current parent, if any.\n * @param {Field} field Field to add\n * @returns {OneOf} `this`\n */\nOneOf.prototype.add = function add(field) {\n\n /* istanbul ignore if */\n if (!(field instanceof Field))\n throw TypeError(\"field must be a Field\");\n\n if (field.parent && field.parent !== this.parent)\n field.parent.remove(field);\n this.oneof.push(field.name);\n this.fieldsArray.push(field);\n field.partOf = this; // field.parent remains null\n addFieldsToParent(this);\n return this;\n};\n\n/**\n * Removes a field from this oneof and puts it back to the oneof's parent.\n * @param {Field} field Field to remove\n * @returns {OneOf} `this`\n */\nOneOf.prototype.remove = function remove(field) {\n\n /* istanbul ignore if */\n if (!(field instanceof Field))\n throw TypeError(\"field must be a Field\");\n\n var index = this.fieldsArray.indexOf(field);\n\n /* istanbul ignore if */\n if (index < 0)\n throw Error(field + \" is not a member of \" + this);\n\n this.fieldsArray.splice(index, 1);\n index = this.oneof.indexOf(field.name);\n\n /* istanbul ignore else */\n if (index > -1) // theoretical\n this.oneof.splice(index, 1);\n\n field.partOf = null;\n return this;\n};\n\n/**\n * @override\n */\nOneOf.prototype.onAdd = function onAdd(parent) {\n ReflectionObject.prototype.onAdd.call(this, parent);\n var self = this;\n // Collect present fields\n for (var i = 0; i < this.oneof.length; ++i) {\n var field = parent.get(this.oneof[i]);\n if (field && !field.partOf) {\n field.partOf = self;\n self.fieldsArray.push(field);\n }\n }\n // Add not yet present fields\n addFieldsToParent(this);\n};\n\n/**\n * @override\n */\nOneOf.prototype.onRemove = function onRemove(parent) {\n for (var i = 0, field; i < this.fieldsArray.length; ++i)\n if ((field = this.fieldsArray[i]).parent)\n field.parent.remove(field);\n ReflectionObject.prototype.onRemove.call(this, parent);\n};\n\n/**\n * Decorator function as returned by {@link OneOf.d} (TypeScript).\n * @typedef OneOfDecorator\n * @type {function}\n * @param {Object} prototype Target prototype\n * @param {string} oneofName OneOf name\n * @returns {undefined}\n */\n\n/**\n * OneOf decorator (TypeScript).\n * @function\n * @param {...string} fieldNames Field names\n * @returns {OneOfDecorator} Decorator function\n * @template T extends string\n */\nOneOf.d = function decorateOneOf() {\n var fieldNames = new Array(arguments.length),\n index = 0;\n while (index < arguments.length)\n fieldNames[index] = arguments[index++];\n return function oneOfDecorator(prototype, oneofName) {\n util.decorateType(prototype.constructor)\n .add(new OneOf(oneofName, fieldNames));\n Object.defineProperty(prototype, oneofName, {\n get: util.oneOfGetter(fieldNames),\n set: util.oneOfSetter(fieldNames)\n });\n };\n};\n","\"use strict\";\nmodule.exports = Reader;\n\nvar util = require(\"./util/minimal\");\n\nvar BufferReader; // cyclic\n\nvar LongBits = util.LongBits,\n utf8 = util.utf8;\n\n/* istanbul ignore next */\nfunction indexOutOfRange(reader, writeLength) {\n return RangeError(\"index out of range: \" + reader.pos + \" + \" + (writeLength || 1) + \" > \" + reader.len);\n}\n\n/**\n * Constructs a new reader instance using the specified buffer.\n * @classdesc Wire format reader using `Uint8Array` if available, otherwise `Array`.\n * @constructor\n * @param {Uint8Array} buffer Buffer to read from\n */\nfunction Reader(buffer) {\n\n /**\n * Read buffer.\n * @type {Uint8Array}\n */\n this.buf = buffer;\n\n /**\n * Read buffer position.\n * @type {number}\n */\n this.pos = 0;\n\n /**\n * Read buffer length.\n * @type {number}\n */\n this.len = buffer.length;\n}\n\nvar create_array = typeof Uint8Array !== \"undefined\"\n ? function create_typed_array(buffer) {\n if (buffer instanceof Uint8Array || Array.isArray(buffer))\n return new Reader(buffer);\n throw Error(\"illegal buffer\");\n }\n /* istanbul ignore next */\n : function create_array(buffer) {\n if (Array.isArray(buffer))\n return new Reader(buffer);\n throw Error(\"illegal buffer\");\n };\n\nvar create = function create() {\n return util.Buffer\n ? function create_buffer_setup(buffer) {\n return (Reader.create = function create_buffer(buffer) {\n return util.Buffer.isBuffer(buffer)\n ? new BufferReader(buffer)\n /* istanbul ignore next */\n : create_array(buffer);\n })(buffer);\n }\n /* istanbul ignore next */\n : create_array;\n};\n\n/**\n * Creates a new reader using the specified buffer.\n * @function\n * @param {Uint8Array|Buffer} buffer Buffer to read from\n * @returns {Reader|BufferReader} A {@link BufferReader} if `buffer` is a Buffer, otherwise a {@link Reader}\n * @throws {Error} If `buffer` is not a valid buffer\n */\nReader.create = create();\n\nReader.prototype._slice = util.Array.prototype.subarray || /* istanbul ignore next */ util.Array.prototype.slice;\n\n/**\n * Reads a varint as an unsigned 32 bit value.\n * @function\n * @returns {number} Value read\n */\nReader.prototype.uint32 = (function read_uint32_setup() {\n var value = 4294967295; // optimizer type-hint, tends to deopt otherwise (?!)\n return function read_uint32() {\n value = ( this.buf[this.pos] & 127 ) >>> 0; if (this.buf[this.pos++] < 128) return value;\n value = (value | (this.buf[this.pos] & 127) << 7) >>> 0; if (this.buf[this.pos++] < 128) return value;\n value = (value | (this.buf[this.pos] & 127) << 14) >>> 0; if (this.buf[this.pos++] < 128) return value;\n value = (value | (this.buf[this.pos] & 127) << 21) >>> 0; if (this.buf[this.pos++] < 128) return value;\n value = (value | (this.buf[this.pos] & 15) << 28) >>> 0; if (this.buf[this.pos++] < 128) return value;\n\n /* istanbul ignore if */\n if ((this.pos += 5) > this.len) {\n this.pos = this.len;\n throw indexOutOfRange(this, 10);\n }\n return value;\n };\n})();\n\n/**\n * Reads a varint as a signed 32 bit value.\n * @returns {number} Value read\n */\nReader.prototype.int32 = function read_int32() {\n return this.uint32() | 0;\n};\n\n/**\n * Reads a zig-zag encoded varint as a signed 32 bit value.\n * @returns {number} Value read\n */\nReader.prototype.sint32 = function read_sint32() {\n var value = this.uint32();\n return value >>> 1 ^ -(value & 1) | 0;\n};\n\n/* eslint-disable no-invalid-this */\n\nfunction readLongVarint() {\n // tends to deopt with local vars for octet etc.\n var bits = new LongBits(0, 0);\n var i = 0;\n if (this.len - this.pos > 4) { // fast route (lo)\n for (; i < 4; ++i) {\n // 1st..4th\n bits.lo = (bits.lo | (this.buf[this.pos] & 127) << i * 7) >>> 0;\n if (this.buf[this.pos++] < 128)\n return bits;\n }\n // 5th\n bits.lo = (bits.lo | (this.buf[this.pos] & 127) << 28) >>> 0;\n bits.hi = (bits.hi | (this.buf[this.pos] & 127) >> 4) >>> 0;\n if (this.buf[this.pos++] < 128)\n return bits;\n i = 0;\n } else {\n for (; i < 3; ++i) {\n /* istanbul ignore if */\n if (this.pos >= this.len)\n throw indexOutOfRange(this);\n // 1st..3th\n bits.lo = (bits.lo | (this.buf[this.pos] & 127) << i * 7) >>> 0;\n if (this.buf[this.pos++] < 128)\n return bits;\n }\n // 4th\n bits.lo = (bits.lo | (this.buf[this.pos++] & 127) << i * 7) >>> 0;\n return bits;\n }\n if (this.len - this.pos > 4) { // fast route (hi)\n for (; i < 5; ++i) {\n // 6th..10th\n bits.hi = (bits.hi | (this.buf[this.pos] & 127) << i * 7 + 3) >>> 0;\n if (this.buf[this.pos++] < 128)\n return bits;\n }\n } else {\n for (; i < 5; ++i) {\n /* istanbul ignore if */\n if (this.pos >= this.len)\n throw indexOutOfRange(this);\n // 6th..10th\n bits.hi = (bits.hi | (this.buf[this.pos] & 127) << i * 7 + 3) >>> 0;\n if (this.buf[this.pos++] < 128)\n return bits;\n }\n }\n /* istanbul ignore next */\n throw Error(\"invalid varint encoding\");\n}\n\n/* eslint-enable no-invalid-this */\n\n/**\n * Reads a varint as a signed 64 bit value.\n * @name Reader#int64\n * @function\n * @returns {Long} Value read\n */\n\n/**\n * Reads a varint as an unsigned 64 bit value.\n * @name Reader#uint64\n * @function\n * @returns {Long} Value read\n */\n\n/**\n * Reads a zig-zag encoded varint as a signed 64 bit value.\n * @name Reader#sint64\n * @function\n * @returns {Long} Value read\n */\n\n/**\n * Reads a varint as a boolean.\n * @returns {boolean} Value read\n */\nReader.prototype.bool = function read_bool() {\n return this.uint32() !== 0;\n};\n\nfunction readFixed32_end(buf, end) { // note that this uses `end`, not `pos`\n return (buf[end - 4]\n | buf[end - 3] << 8\n | buf[end - 2] << 16\n | buf[end - 1] << 24) >>> 0;\n}\n\n/**\n * Reads fixed 32 bits as an unsigned 32 bit integer.\n * @returns {number} Value read\n */\nReader.prototype.fixed32 = function read_fixed32() {\n\n /* istanbul ignore if */\n if (this.pos + 4 > this.len)\n throw indexOutOfRange(this, 4);\n\n return readFixed32_end(this.buf, this.pos += 4);\n};\n\n/**\n * Reads fixed 32 bits as a signed 32 bit integer.\n * @returns {number} Value read\n */\nReader.prototype.sfixed32 = function read_sfixed32() {\n\n /* istanbul ignore if */\n if (this.pos + 4 > this.len)\n throw indexOutOfRange(this, 4);\n\n return readFixed32_end(this.buf, this.pos += 4) | 0;\n};\n\n/* eslint-disable no-invalid-this */\n\nfunction readFixed64(/* this: Reader */) {\n\n /* istanbul ignore if */\n if (this.pos + 8 > this.len)\n throw indexOutOfRange(this, 8);\n\n return new LongBits(readFixed32_end(this.buf, this.pos += 4), readFixed32_end(this.buf, this.pos += 4));\n}\n\n/* eslint-enable no-invalid-this */\n\n/**\n * Reads fixed 64 bits.\n * @name Reader#fixed64\n * @function\n * @returns {Long} Value read\n */\n\n/**\n * Reads zig-zag encoded fixed 64 bits.\n * @name Reader#sfixed64\n * @function\n * @returns {Long} Value read\n */\n\n/**\n * Reads a float (32 bit) as a number.\n * @function\n * @returns {number} Value read\n */\nReader.prototype.float = function read_float() {\n\n /* istanbul ignore if */\n if (this.pos + 4 > this.len)\n throw indexOutOfRange(this, 4);\n\n var value = util.float.readFloatLE(this.buf, this.pos);\n this.pos += 4;\n return value;\n};\n\n/**\n * Reads a double (64 bit float) as a number.\n * @function\n * @returns {number} Value read\n */\nReader.prototype.double = function read_double() {\n\n /* istanbul ignore if */\n if (this.pos + 8 > this.len)\n throw indexOutOfRange(this, 4);\n\n var value = util.float.readDoubleLE(this.buf, this.pos);\n this.pos += 8;\n return value;\n};\n\n/**\n * Reads a sequence of bytes preceeded by its length as a varint.\n * @returns {Uint8Array} Value read\n */\nReader.prototype.bytes = function read_bytes() {\n var length = this.uint32(),\n start = this.pos,\n end = this.pos + length;\n\n /* istanbul ignore if */\n if (end > this.len)\n throw indexOutOfRange(this, length);\n\n this.pos += length;\n if (Array.isArray(this.buf)) // plain array\n return this.buf.slice(start, end);\n return start === end // fix for IE 10/Win8 and others' subarray returning array of size 1\n ? new this.buf.constructor(0)\n : this._slice.call(this.buf, start, end);\n};\n\n/**\n * Reads a string preceeded by its byte length as a varint.\n * @returns {string} Value read\n */\nReader.prototype.string = function read_string() {\n var bytes = this.bytes();\n return utf8.read(bytes, 0, bytes.length);\n};\n\n/**\n * Skips the specified number of bytes if specified, otherwise skips a varint.\n * @param {number} [length] Length if known, otherwise a varint is assumed\n * @returns {Reader} `this`\n */\nReader.prototype.skip = function skip(length) {\n if (typeof length === \"number\") {\n /* istanbul ignore if */\n if (this.pos + length > this.len)\n throw indexOutOfRange(this, length);\n this.pos += length;\n } else {\n do {\n /* istanbul ignore if */\n if (this.pos >= this.len)\n throw indexOutOfRange(this);\n } while (this.buf[this.pos++] & 128);\n }\n return this;\n};\n\n/**\n * Skips the next element of the specified wire type.\n * @param {number} wireType Wire type received\n * @returns {Reader} `this`\n */\nReader.prototype.skipType = function(wireType) {\n switch (wireType) {\n case 0:\n this.skip();\n break;\n case 1:\n this.skip(8);\n break;\n case 2:\n this.skip(this.uint32());\n break;\n case 3:\n while ((wireType = this.uint32() & 7) !== 4) {\n this.skipType(wireType);\n }\n break;\n case 5:\n this.skip(4);\n break;\n\n /* istanbul ignore next */\n default:\n throw Error(\"invalid wire type \" + wireType + \" at offset \" + this.pos);\n }\n return this;\n};\n\nReader._configure = function(BufferReader_) {\n BufferReader = BufferReader_;\n Reader.create = create();\n BufferReader._configure();\n\n var fn = util.Long ? \"toLong\" : /* istanbul ignore next */ \"toNumber\";\n util.merge(Reader.prototype, {\n\n int64: function read_int64() {\n return readLongVarint.call(this)[fn](false);\n },\n\n uint64: function read_uint64() {\n return readLongVarint.call(this)[fn](true);\n },\n\n sint64: function read_sint64() {\n return readLongVarint.call(this).zzDecode()[fn](false);\n },\n\n fixed64: function read_fixed64() {\n return readFixed64.call(this)[fn](true);\n },\n\n sfixed64: function read_sfixed64() {\n return readFixed64.call(this)[fn](false);\n }\n\n });\n};\n","\"use strict\";\nmodule.exports = BufferReader;\n\n// extends Reader\nvar Reader = require(\"./reader\");\n(BufferReader.prototype = Object.create(Reader.prototype)).constructor = BufferReader;\n\nvar util = require(\"./util/minimal\");\n\n/**\n * Constructs a new buffer reader instance.\n * @classdesc Wire format reader using node buffers.\n * @extends Reader\n * @constructor\n * @param {Buffer} buffer Buffer to read from\n */\nfunction BufferReader(buffer) {\n Reader.call(this, buffer);\n\n /**\n * Read buffer.\n * @name BufferReader#buf\n * @type {Buffer}\n */\n}\n\nBufferReader._configure = function () {\n /* istanbul ignore else */\n if (util.Buffer)\n BufferReader.prototype._slice = util.Buffer.prototype.slice;\n};\n\n\n/**\n * @override\n */\nBufferReader.prototype.string = function read_string_buffer() {\n var len = this.uint32(); // modifies pos\n return this.buf.utf8Slice\n ? this.buf.utf8Slice(this.pos, this.pos = Math.min(this.pos + len, this.len))\n : this.buf.toString(\"utf-8\", this.pos, this.pos = Math.min(this.pos + len, this.len));\n};\n\n/**\n * Reads a sequence of bytes preceeded by its length as a varint.\n * @name BufferReader#bytes\n * @function\n * @returns {Buffer} Value read\n */\n\nBufferReader._configure();\n","\"use strict\";\nmodule.exports = Root;\n\n// extends Namespace\nvar Namespace = require(\"./namespace\");\n((Root.prototype = Object.create(Namespace.prototype)).constructor = Root).className = \"Root\";\n\nvar Field = require(\"./field\"),\n Enum = require(\"./enum\"),\n OneOf = require(\"./oneof\"),\n util = require(\"./util\");\n\nvar Type, // cyclic\n parse, // might be excluded\n common; // \"\n\n/**\n * Constructs a new root namespace instance.\n * @classdesc Root namespace wrapping all types, enums, services, sub-namespaces etc. that belong together.\n * @extends NamespaceBase\n * @constructor\n * @param {Object.<string,*>} [options] Top level options\n */\nfunction Root(options) {\n Namespace.call(this, \"\", options);\n\n /**\n * Deferred extension fields.\n * @type {Field[]}\n */\n this.deferred = [];\n\n /**\n * Resolved file names of loaded files.\n * @type {string[]}\n */\n this.files = [];\n}\n\n/**\n * Loads a namespace descriptor into a root namespace.\n * @param {INamespace} json Nameespace descriptor\n * @param {Root} [root] Root namespace, defaults to create a new one if omitted\n * @returns {Root} Root namespace\n */\nRoot.fromJSON = function fromJSON(json, root) {\n if (!root)\n root = new Root();\n if (json.options)\n root.setOptions(json.options);\n return root.addJSON(json.nested);\n};\n\n/**\n * Resolves the path of an imported file, relative to the importing origin.\n * This method exists so you can override it with your own logic in case your imports are scattered over multiple directories.\n * @function\n * @param {string} origin The file name of the importing file\n * @param {string} target The file name being imported\n * @returns {string|null} Resolved path to `target` or `null` to skip the file\n */\nRoot.prototype.resolvePath = util.path.resolve;\n\n/**\n * Fetch content from file path or url\n * This method exists so you can override it with your own logic.\n * @function\n * @param {string} path File path or url\n * @param {FetchCallback} callback Callback function\n * @returns {undefined}\n */\nRoot.prototype.fetch = util.fetch;\n\n// A symbol-like function to safely signal synchronous loading\n/* istanbul ignore next */\nfunction SYNC() {} // eslint-disable-line no-empty-function\n\n/**\n * Loads one or multiple .proto or preprocessed .json files into this root namespace and calls the callback.\n * @param {string|string[]} filename Names of one or multiple files to load\n * @param {IParseOptions} options Parse options\n * @param {LoadCallback} callback Callback function\n * @returns {undefined}\n */\nRoot.prototype.load = function load(filename, options, callback) {\n if (typeof options === \"function\") {\n callback = options;\n options = undefined;\n }\n var self = this;\n if (!callback)\n return util.asPromise(load, self, filename, options);\n\n var sync = callback === SYNC; // undocumented\n\n // Finishes loading by calling the callback (exactly once)\n function finish(err, root) {\n /* istanbul ignore if */\n if (!callback)\n return;\n var cb = callback;\n callback = null;\n if (sync)\n throw err;\n cb(err, root);\n }\n\n // Bundled definition existence checking\n function getBundledFileName(filename) {\n var idx = filename.lastIndexOf(\"google/protobuf/\");\n if (idx > -1) {\n var altname = filename.substring(idx);\n if (altname in common) return altname;\n }\n return null;\n }\n\n // Processes a single file\n function process(filename, source) {\n try {\n if (util.isString(source) && source.charAt(0) === \"{\")\n source = JSON.parse(source);\n if (!util.isString(source))\n self.setOptions(source.options).addJSON(source.nested);\n else {\n parse.filename = filename;\n var parsed = parse(source, self, options),\n resolved,\n i = 0;\n if (parsed.imports)\n for (; i < parsed.imports.length; ++i)\n if (resolved = getBundledFileName(parsed.imports[i]) || self.resolvePath(filename, parsed.imports[i]))\n fetch(resolved);\n if (parsed.weakImports)\n for (i = 0; i < parsed.weakImports.length; ++i)\n if (resolved = getBundledFileName(parsed.weakImports[i]) || self.resolvePath(filename, parsed.weakImports[i]))\n fetch(resolved, true);\n }\n } catch (err) {\n finish(err);\n }\n if (!sync && !queued)\n finish(null, self); // only once anyway\n }\n\n // Fetches a single file\n function fetch(filename, weak) {\n\n // Skip if already loaded / attempted\n if (self.files.indexOf(filename) > -1)\n return;\n self.files.push(filename);\n\n // Shortcut bundled definitions\n if (filename in common) {\n if (sync)\n process(filename, common[filename]);\n else {\n ++queued;\n setTimeout(function() {\n --queued;\n process(filename, common[filename]);\n });\n }\n return;\n }\n\n // Otherwise fetch from disk or network\n if (sync) {\n var source;\n try {\n source = util.fs.readFileSync(filename).toString(\"utf8\");\n } catch (err) {\n if (!weak)\n finish(err);\n return;\n }\n process(filename, source);\n } else {\n ++queued;\n self.fetch(filename, function(err, source) {\n --queued;\n /* istanbul ignore if */\n if (!callback)\n return; // terminated meanwhile\n if (err) {\n /* istanbul ignore else */\n if (!weak)\n finish(err);\n else if (!queued) // can't be covered reliably\n finish(null, self);\n return;\n }\n process(filename, source);\n });\n }\n }\n var queued = 0;\n\n // Assembling the root namespace doesn't require working type\n // references anymore, so we can load everything in parallel\n if (util.isString(filename))\n filename = [ filename ];\n for (var i = 0, resolved; i < filename.length; ++i)\n if (resolved = self.resolvePath(\"\", filename[i]))\n fetch(resolved);\n\n if (sync)\n return self;\n if (!queued)\n finish(null, self);\n return undefined;\n};\n// function load(filename:string, options:IParseOptions, callback:LoadCallback):undefined\n\n/**\n * Loads one or multiple .proto or preprocessed .json files into this root namespace and calls the callback.\n * @function Root#load\n * @param {string|string[]} filename Names of one or multiple files to load\n * @param {LoadCallback} callback Callback function\n * @returns {undefined}\n * @variation 2\n */\n// function load(filename:string, callback:LoadCallback):undefined\n\n/**\n * Loads one or multiple .proto or preprocessed .json files into this root namespace and returns a promise.\n * @function Root#load\n * @param {string|string[]} filename Names of one or multiple files to load\n * @param {IParseOptions} [options] Parse options. Defaults to {@link parse.defaults} when omitted.\n * @returns {Promise<Root>} Promise\n * @variation 3\n */\n// function load(filename:string, [options:IParseOptions]):Promise<Root>\n\n/**\n * Synchronously loads one or multiple .proto or preprocessed .json files into this root namespace (node only).\n * @function Root#loadSync\n * @param {string|string[]} filename Names of one or multiple files to load\n * @param {IParseOptions} [options] Parse options. Defaults to {@link parse.defaults} when omitted.\n * @returns {Root} Root namespace\n * @throws {Error} If synchronous fetching is not supported (i.e. in browsers) or if a file's syntax is invalid\n */\nRoot.prototype.loadSync = function loadSync(filename, options) {\n if (!util.isNode)\n throw Error(\"not supported\");\n return this.load(filename, options, SYNC);\n};\n\n/**\n * @override\n */\nRoot.prototype.resolveAll = function resolveAll() {\n if (this.deferred.length)\n throw Error(\"unresolvable extensions: \" + this.deferred.map(function(field) {\n return \"'extend \" + field.extend + \"' in \" + field.parent.fullName;\n }).join(\", \"));\n return Namespace.prototype.resolveAll.call(this);\n};\n\n// only uppercased (and thus conflict-free) children are exposed, see below\nvar exposeRe = /^[A-Z]/;\n\n/**\n * Handles a deferred declaring extension field by creating a sister field to represent it within its extended type.\n * @param {Root} root Root instance\n * @param {Field} field Declaring extension field witin the declaring type\n * @returns {boolean} `true` if successfully added to the extended type, `false` otherwise\n * @inner\n * @ignore\n */\nfunction tryHandleExtension(root, field) {\n var extendedType = field.parent.lookup(field.extend);\n if (extendedType) {\n var sisterField = new Field(field.fullName, field.id, field.type, field.rule, undefined, field.options);\n sisterField.declaringField = field;\n field.extensionField = sisterField;\n extendedType.add(sisterField);\n return true;\n }\n return false;\n}\n\n/**\n * Called when any object is added to this root or its sub-namespaces.\n * @param {ReflectionObject} object Object added\n * @returns {undefined}\n * @private\n */\nRoot.prototype._handleAdd = function _handleAdd(object) {\n if (object instanceof Field) {\n\n if (/* an extension field (implies not part of a oneof) */ object.extend !== undefined && /* not already handled */ !object.extensionField)\n if (!tryHandleExtension(this, object))\n this.deferred.push(object);\n\n } else if (object instanceof Enum) {\n\n if (exposeRe.test(object.name))\n object.parent[object.name] = object.values; // expose enum values as property of its parent\n\n } else if (!(object instanceof OneOf)) /* everything else is a namespace */ {\n\n if (object instanceof Type) // Try to handle any deferred extensions\n for (var i = 0; i < this.deferred.length;)\n if (tryHandleExtension(this, this.deferred[i]))\n this.deferred.splice(i, 1);\n else\n ++i;\n for (var j = 0; j < /* initializes */ object.nestedArray.length; ++j) // recurse into the namespace\n this._handleAdd(object._nestedArray[j]);\n if (exposeRe.test(object.name))\n object.parent[object.name] = object; // expose namespace as property of its parent\n }\n\n // The above also adds uppercased (and thus conflict-free) nested types, services and enums as\n // properties of namespaces just like static code does. This allows using a .d.ts generated for\n // a static module with reflection-based solutions where the condition is met.\n};\n\n/**\n * Called when any object is removed from this root or its sub-namespaces.\n * @param {ReflectionObject} object Object removed\n * @returns {undefined}\n * @private\n */\nRoot.prototype._handleRemove = function _handleRemove(object) {\n if (object instanceof Field) {\n\n if (/* an extension field */ object.extend !== undefined) {\n if (/* already handled */ object.extensionField) { // remove its sister field\n object.extensionField.parent.remove(object.extensionField);\n object.extensionField = null;\n } else { // cancel the extension\n var index = this.deferred.indexOf(object);\n /* istanbul ignore else */\n if (index > -1)\n this.deferred.splice(index, 1);\n }\n }\n\n } else if (object instanceof Enum) {\n\n if (exposeRe.test(object.name))\n delete object.parent[object.name]; // unexpose enum values\n\n } else if (object instanceof Namespace) {\n\n for (var i = 0; i < /* initializes */ object.nestedArray.length; ++i) // recurse into the namespace\n this._handleRemove(object._nestedArray[i]);\n\n if (exposeRe.test(object.name))\n delete object.parent[object.name]; // unexpose namespaces\n\n }\n};\n\n// Sets up cyclic dependencies (called in index-light)\nRoot._configure = function(Type_, parse_, common_) {\n Type = Type_;\n parse = parse_;\n common = common_;\n};\n","\"use strict\";\nmodule.exports = {};\n\n/**\n * Named roots.\n * This is where pbjs stores generated structures (the option `-r, --root` specifies a name).\n * Can also be used manually to make roots available accross modules.\n * @name roots\n * @type {Object.<string,Root>}\n * @example\n * // pbjs -r myroot -o compiled.js ...\n *\n * // in another module:\n * require(\"./compiled.js\");\n *\n * // in any subsequent module:\n * var root = protobuf.roots[\"myroot\"];\n */\n","\"use strict\";\n\n/**\n * Streaming RPC helpers.\n * @namespace\n */\nvar rpc = exports;\n\n/**\n * RPC implementation passed to {@link Service#create} performing a service request on network level, i.e. by utilizing http requests or websockets.\n * @typedef RPCImpl\n * @type {function}\n * @param {Method|rpc.ServiceMethod<Message<{}>,Message<{}>>} method Reflected or static method being called\n * @param {Uint8Array} requestData Request data\n * @param {RPCImplCallback} callback Callback function\n * @returns {undefined}\n * @example\n * function rpcImpl(method, requestData, callback) {\n * if (protobuf.util.lcFirst(method.name) !== \"myMethod\") // compatible with static code\n * throw Error(\"no such method\");\n * asynchronouslyObtainAResponse(requestData, function(err, responseData) {\n * callback(err, responseData);\n * });\n * }\n */\n\n/**\n * Node-style callback as used by {@link RPCImpl}.\n * @typedef RPCImplCallback\n * @type {function}\n * @param {Error|null} error Error, if any, otherwise `null`\n * @param {Uint8Array|null} [response] Response data or `null` to signal end of stream, if there hasn't been an error\n * @returns {undefined}\n */\n\nrpc.Service = require(\"./rpc/service\");\n","\"use strict\";\nmodule.exports = Service;\n\nvar util = require(\"../util/minimal\");\n\n// Extends EventEmitter\n(Service.prototype = Object.create(util.EventEmitter.prototype)).constructor = Service;\n\n/**\n * A service method callback as used by {@link rpc.ServiceMethod|ServiceMethod}.\n *\n * Differs from {@link RPCImplCallback} in that it is an actual callback of a service method which may not return `response = null`.\n * @typedef rpc.ServiceMethodCallback\n * @template TRes extends Message<TRes>\n * @type {function}\n * @param {Error|null} error Error, if any\n * @param {TRes} [response] Response message\n * @returns {undefined}\n */\n\n/**\n * A service method part of a {@link rpc.Service} as created by {@link Service.create}.\n * @typedef rpc.ServiceMethod\n * @template TReq extends Message<TReq>\n * @template TRes extends Message<TRes>\n * @type {function}\n * @param {TReq|Properties<TReq>} request Request message or plain object\n * @param {rpc.ServiceMethodCallback<TRes>} [callback] Node-style callback called with the error, if any, and the response message\n * @returns {Promise<Message<TRes>>} Promise if `callback` has been omitted, otherwise `undefined`\n */\n\n/**\n * Constructs a new RPC service instance.\n * @classdesc An RPC service as returned by {@link Service#create}.\n * @exports rpc.Service\n * @extends util.EventEmitter\n * @constructor\n * @param {RPCImpl} rpcImpl RPC implementation\n * @param {boolean} [requestDelimited=false] Whether requests are length-delimited\n * @param {boolean} [responseDelimited=false] Whether responses are length-delimited\n */\nfunction Service(rpcImpl, requestDelimited, responseDelimited) {\n\n if (typeof rpcImpl !== \"function\")\n throw TypeError(\"rpcImpl must be a function\");\n\n util.EventEmitter.call(this);\n\n /**\n * RPC implementation. Becomes `null` once the service is ended.\n * @type {RPCImpl|null}\n */\n this.rpcImpl = rpcImpl;\n\n /**\n * Whether requests are length-delimited.\n * @type {boolean}\n */\n this.requestDelimited = Boolean(requestDelimited);\n\n /**\n * Whether responses are length-delimited.\n * @type {boolean}\n */\n this.responseDelimited = Boolean(responseDelimited);\n}\n\n/**\n * Calls a service method through {@link rpc.Service#rpcImpl|rpcImpl}.\n * @param {Method|rpc.ServiceMethod<TReq,TRes>} method Reflected or static method\n * @param {Constructor<TReq>} requestCtor Request constructor\n * @param {Constructor<TRes>} responseCtor Response constructor\n * @param {TReq|Properties<TReq>} request Request message or plain object\n * @param {rpc.ServiceMethodCallback<TRes>} callback Service callback\n * @returns {undefined}\n * @template TReq extends Message<TReq>\n * @template TRes extends Message<TRes>\n */\nService.prototype.rpcCall = function rpcCall(method, requestCtor, responseCtor, request, callback) {\n\n if (!request)\n throw TypeError(\"request must be specified\");\n\n var self = this;\n if (!callback)\n return util.asPromise(rpcCall, self, method, requestCtor, responseCtor, request);\n\n if (!self.rpcImpl) {\n setTimeout(function() { callback(Error(\"already ended\")); }, 0);\n return undefined;\n }\n\n try {\n return self.rpcImpl(\n method,\n requestCtor[self.requestDelimited ? \"encodeDelimited\" : \"encode\"](request).finish(),\n function rpcCallback(err, response) {\n\n if (err) {\n self.emit(\"error\", err, method);\n return callback(err);\n }\n\n if (response === null) {\n self.end(/* endedByRPC */ true);\n return undefined;\n }\n\n if (!(response instanceof responseCtor)) {\n try {\n response = responseCtor[self.responseDelimited ? \"decodeDelimited\" : \"decode\"](response);\n } catch (err) {\n self.emit(\"error\", err, method);\n return callback(err);\n }\n }\n\n self.emit(\"data\", response, method);\n return callback(null, response);\n }\n );\n } catch (err) {\n self.emit(\"error\", err, method);\n setTimeout(function() { callback(err); }, 0);\n return undefined;\n }\n};\n\n/**\n * Ends this service and emits the `end` event.\n * @param {boolean} [endedByRPC=false] Whether the service has been ended by the RPC implementation.\n * @returns {rpc.Service} `this`\n */\nService.prototype.end = function end(endedByRPC) {\n if (this.rpcImpl) {\n if (!endedByRPC) // signal end to rpcImpl\n this.rpcImpl(null, null, null);\n this.rpcImpl = null;\n this.emit(\"end\").off();\n }\n return this;\n};\n","\"use strict\";\nmodule.exports = Service;\n\n// extends Namespace\nvar Namespace = require(\"./namespace\");\n((Service.prototype = Object.create(Namespace.prototype)).constructor = Service).className = \"Service\";\n\nvar Method = require(\"./method\"),\n util = require(\"./util\"),\n rpc = require(\"./rpc\");\n\n/**\n * Constructs a new service instance.\n * @classdesc Reflected service.\n * @extends NamespaceBase\n * @constructor\n * @param {string} name Service name\n * @param {Object.<string,*>} [options] Service options\n * @throws {TypeError} If arguments are invalid\n */\nfunction Service(name, options) {\n Namespace.call(this, name, options);\n\n /**\n * Service methods.\n * @type {Object.<string,Method>}\n */\n this.methods = {}; // toJSON, marker\n\n /**\n * Cached methods as an array.\n * @type {Method[]|null}\n * @private\n */\n this._methodsArray = null;\n}\n\n/**\n * Service descriptor.\n * @interface IService\n * @extends INamespace\n * @property {Object.<string,IMethod>} methods Method descriptors\n */\n\n/**\n * Constructs a service from a service descriptor.\n * @param {string} name Service name\n * @param {IService} json Service descriptor\n * @returns {Service} Created service\n * @throws {TypeError} If arguments are invalid\n */\nService.fromJSON = function fromJSON(name, json) {\n var service = new Service(name, json.options);\n /* istanbul ignore else */\n if (json.methods)\n for (var names = Object.keys(json.methods), i = 0; i < names.length; ++i)\n service.add(Method.fromJSON(names[i], json.methods[names[i]]));\n if (json.nested)\n service.addJSON(json.nested);\n service.comment = json.comment;\n return service;\n};\n\n/**\n * Converts this service to a service descriptor.\n * @param {IToJSONOptions} [toJSONOptions] JSON conversion options\n * @returns {IService} Service descriptor\n */\nService.prototype.toJSON = function toJSON(toJSONOptions) {\n var inherited = Namespace.prototype.toJSON.call(this, toJSONOptions);\n var keepComments = toJSONOptions ? Boolean(toJSONOptions.keepComments) : false;\n return util.toObject([\n \"options\" , inherited && inherited.options || undefined,\n \"methods\" , Namespace.arrayToJSON(this.methodsArray, toJSONOptions) || /* istanbul ignore next */ {},\n \"nested\" , inherited && inherited.nested || undefined,\n \"comment\" , keepComments ? this.comment : undefined\n ]);\n};\n\n/**\n * Methods of this service as an array for iteration.\n * @name Service#methodsArray\n * @type {Method[]}\n * @readonly\n */\nObject.defineProperty(Service.prototype, \"methodsArray\", {\n get: function() {\n return this._methodsArray || (this._methodsArray = util.toArray(this.methods));\n }\n});\n\nfunction clearCache(service) {\n service._methodsArray = null;\n return service;\n}\n\n/**\n * @override\n */\nService.prototype.get = function get(name) {\n return this.methods[name]\n || Namespace.prototype.get.call(this, name);\n};\n\n/**\n * @override\n */\nService.prototype.resolveAll = function resolveAll() {\n var methods = this.methodsArray;\n for (var i = 0; i < methods.length; ++i)\n methods[i].resolve();\n return Namespace.prototype.resolve.call(this);\n};\n\n/**\n * @override\n */\nService.prototype.add = function add(object) {\n\n /* istanbul ignore if */\n if (this.get(object.name))\n throw Error(\"duplicate name '\" + object.name + \"' in \" + this);\n\n if (object instanceof Method) {\n this.methods[object.name] = object;\n object.parent = this;\n return clearCache(this);\n }\n return Namespace.prototype.add.call(this, object);\n};\n\n/**\n * @override\n */\nService.prototype.remove = function remove(object) {\n if (object instanceof Method) {\n\n /* istanbul ignore if */\n if (this.methods[object.name] !== object)\n throw Error(object + \" is not a member of \" + this);\n\n delete this.methods[object.name];\n object.parent = null;\n return clearCache(this);\n }\n return Namespace.prototype.remove.call(this, object);\n};\n\n/**\n * Creates a runtime service using the specified rpc implementation.\n * @param {RPCImpl} rpcImpl RPC implementation\n * @param {boolean} [requestDelimited=false] Whether requests are length-delimited\n * @param {boolean} [responseDelimited=false] Whether responses are length-delimited\n * @returns {rpc.Service} RPC service. Useful where requests and/or responses are streamed.\n */\nService.prototype.create = function create(rpcImpl, requestDelimited, responseDelimited) {\n var rpcService = new rpc.Service(rpcImpl, requestDelimited, responseDelimited);\n for (var i = 0, method; i < /* initializes */ this.methodsArray.length; ++i) {\n var methodName = util.lcFirst((method = this._methodsArray[i]).resolve().name).replace(/[^$\\w_]/g, \"\");\n rpcService[methodName] = util.codegen([\"r\",\"c\"], util.isReserved(methodName) ? methodName + \"_\" : methodName)(\"return this.rpcCall(m,q,s,r,c)\")({\n m: method,\n q: method.resolvedRequestType.ctor,\n s: method.resolvedResponseType.ctor\n });\n }\n return rpcService;\n};\n","\"use strict\";\nmodule.exports = Type;\n\n// extends Namespace\nvar Namespace = require(\"./namespace\");\n((Type.prototype = Object.create(Namespace.prototype)).constructor = Type).className = \"Type\";\n\nvar Enum = require(\"./enum\"),\n OneOf = require(\"./oneof\"),\n Field = require(\"./field\"),\n MapField = require(\"./mapfield\"),\n Service = require(\"./service\"),\n Message = require(\"./message\"),\n Reader = require(\"./reader\"),\n Writer = require(\"./writer\"),\n util = require(\"./util\"),\n encoder = require(\"./encoder\"),\n decoder = require(\"./decoder\"),\n verifier = require(\"./verifier\"),\n converter = require(\"./converter\"),\n wrappers = require(\"./wrappers\");\n\n/**\n * Constructs a new reflected message type instance.\n * @classdesc Reflected message type.\n * @extends NamespaceBase\n * @constructor\n * @param {string} name Message name\n * @param {Object.<string,*>} [options] Declared options\n */\nfunction Type(name, options) {\n Namespace.call(this, name, options);\n\n /**\n * Message fields.\n * @type {Object.<string,Field>}\n */\n this.fields = {}; // toJSON, marker\n\n /**\n * Oneofs declared within this namespace, if any.\n * @type {Object.<string,OneOf>}\n */\n this.oneofs = undefined; // toJSON\n\n /**\n * Extension ranges, if any.\n * @type {number[][]}\n */\n this.extensions = undefined; // toJSON\n\n /**\n * Reserved ranges, if any.\n * @type {Array.<number[]|string>}\n */\n this.reserved = undefined; // toJSON\n\n /*?\n * Whether this type is a legacy group.\n * @type {boolean|undefined}\n */\n this.group = undefined; // toJSON\n\n /**\n * Cached fields by id.\n * @type {Object.<number,Field>|null}\n * @private\n */\n this._fieldsById = null;\n\n /**\n * Cached fields as an array.\n * @type {Field[]|null}\n * @private\n */\n this._fieldsArray = null;\n\n /**\n * Cached oneofs as an array.\n * @type {OneOf[]|null}\n * @private\n */\n this._oneofsArray = null;\n\n /**\n * Cached constructor.\n * @type {Constructor<{}>}\n * @private\n */\n this._ctor = null;\n}\n\nObject.defineProperties(Type.prototype, {\n\n /**\n * Message fields by id.\n * @name Type#fieldsById\n * @type {Object.<number,Field>}\n * @readonly\n */\n fieldsById: {\n get: function() {\n\n /* istanbul ignore if */\n if (this._fieldsById)\n return this._fieldsById;\n\n this._fieldsById = {};\n for (var names = Object.keys(this.fields), i = 0; i < names.length; ++i) {\n var field = this.fields[names[i]],\n id = field.id;\n\n /* istanbul ignore if */\n if (this._fieldsById[id])\n throw Error(\"duplicate id \" + id + \" in \" + this);\n\n this._fieldsById[id] = field;\n }\n return this._fieldsById;\n }\n },\n\n /**\n * Fields of this message as an array for iteration.\n * @name Type#fieldsArray\n * @type {Field[]}\n * @readonly\n */\n fieldsArray: {\n get: function() {\n return this._fieldsArray || (this._fieldsArray = util.toArray(this.fields));\n }\n },\n\n /**\n * Oneofs of this message as an array for iteration.\n * @name Type#oneofsArray\n * @type {OneOf[]}\n * @readonly\n */\n oneofsArray: {\n get: function() {\n return this._oneofsArray || (this._oneofsArray = util.toArray(this.oneofs));\n }\n },\n\n /**\n * The registered constructor, if any registered, otherwise a generic constructor.\n * Assigning a function replaces the internal constructor. If the function does not extend {@link Message} yet, its prototype will be setup accordingly and static methods will be populated. If it already extends {@link Message}, it will just replace the internal constructor.\n * @name Type#ctor\n * @type {Constructor<{}>}\n */\n ctor: {\n get: function() {\n return this._ctor || (this.ctor = Type.generateConstructor(this)());\n },\n set: function(ctor) {\n\n // Ensure proper prototype\n var prototype = ctor.prototype;\n if (!(prototype instanceof Message)) {\n (ctor.prototype = new Message()).constructor = ctor;\n util.merge(ctor.prototype, prototype);\n }\n\n // Classes and messages reference their reflected type\n ctor.$type = ctor.prototype.$type = this;\n\n // Mix in static methods\n util.merge(ctor, Message, true);\n\n this._ctor = ctor;\n\n // Messages have non-enumerable default values on their prototype\n var i = 0;\n for (; i < /* initializes */ this.fieldsArray.length; ++i)\n this._fieldsArray[i].resolve(); // ensures a proper value\n\n // Messages have non-enumerable getters and setters for each virtual oneof field\n var ctorProperties = {};\n for (i = 0; i < /* initializes */ this.oneofsArray.length; ++i)\n ctorProperties[this._oneofsArray[i].resolve().name] = {\n get: util.oneOfGetter(this._oneofsArray[i].oneof),\n set: util.oneOfSetter(this._oneofsArray[i].oneof)\n };\n if (i)\n Object.defineProperties(ctor.prototype, ctorProperties);\n }\n }\n});\n\n/**\n * Generates a constructor function for the specified type.\n * @param {Type} mtype Message type\n * @returns {Codegen} Codegen instance\n */\nType.generateConstructor = function generateConstructor(mtype) {\n /* eslint-disable no-unexpected-multiline */\n var gen = util.codegen([\"p\"], mtype.name);\n // explicitly initialize mutable object/array fields so that these aren't just inherited from the prototype\n for (var i = 0, field; i < mtype.fieldsArray.length; ++i)\n if ((field = mtype._fieldsArray[i]).map) gen\n (\"this%s={}\", util.safeProp(field.name));\n else if (field.repeated) gen\n (\"this%s=[]\", util.safeProp(field.name));\n return gen\n (\"if(p)for(var ks=Object.keys(p),i=0;i<ks.length;++i)if(p[ks[i]]!=null)\") // omit undefined or null\n (\"this[ks[i]]=p[ks[i]]\");\n /* eslint-enable no-unexpected-multiline */\n};\n\nfunction clearCache(type) {\n type._fieldsById = type._fieldsArray = type._oneofsArray = null;\n delete type.encode;\n delete type.decode;\n delete type.verify;\n return type;\n}\n\n/**\n * Message type descriptor.\n * @interface IType\n * @extends INamespace\n * @property {Object.<string,IOneOf>} [oneofs] Oneof descriptors\n * @property {Object.<string,IField>} fields Field descriptors\n * @property {number[][]} [extensions] Extension ranges\n * @property {number[][]} [reserved] Reserved ranges\n * @property {boolean} [group=false] Whether a legacy group or not\n */\n\n/**\n * Creates a message type from a message type descriptor.\n * @param {string} name Message name\n * @param {IType} json Message type descriptor\n * @returns {Type} Created message type\n */\nType.fromJSON = function fromJSON(name, json) {\n var type = new Type(name, json.options);\n type.extensions = json.extensions;\n type.reserved = json.reserved;\n var names = Object.keys(json.fields),\n i = 0;\n for (; i < names.length; ++i)\n type.add(\n ( typeof json.fields[names[i]].keyType !== \"undefined\"\n ? MapField.fromJSON\n : Field.fromJSON )(names[i], json.fields[names[i]])\n );\n if (json.oneofs)\n for (names = Object.keys(json.oneofs), i = 0; i < names.length; ++i)\n type.add(OneOf.fromJSON(names[i], json.oneofs[names[i]]));\n if (json.nested)\n for (names = Object.keys(json.nested), i = 0; i < names.length; ++i) {\n var nested = json.nested[names[i]];\n type.add( // most to least likely\n ( nested.id !== undefined\n ? Field.fromJSON\n : nested.fields !== undefined\n ? Type.fromJSON\n : nested.values !== undefined\n ? Enum.fromJSON\n : nested.methods !== undefined\n ? Service.fromJSON\n : Namespace.fromJSON )(names[i], nested)\n );\n }\n if (json.extensions && json.extensions.length)\n type.extensions = json.extensions;\n if (json.reserved && json.reserved.length)\n type.reserved = json.reserved;\n if (json.group)\n type.group = true;\n if (json.comment)\n type.comment = json.comment;\n return type;\n};\n\n/**\n * Converts this message type to a message type descriptor.\n * @param {IToJSONOptions} [toJSONOptions] JSON conversion options\n * @returns {IType} Message type descriptor\n */\nType.prototype.toJSON = function toJSON(toJSONOptions) {\n var inherited = Namespace.prototype.toJSON.call(this, toJSONOptions);\n var keepComments = toJSONOptions ? Boolean(toJSONOptions.keepComments) : false;\n return util.toObject([\n \"options\" , inherited && inherited.options || undefined,\n \"oneofs\" , Namespace.arrayToJSON(this.oneofsArray, toJSONOptions),\n \"fields\" , Namespace.arrayToJSON(this.fieldsArray.filter(function(obj) { return !obj.declaringField; }), toJSONOptions) || {},\n \"extensions\" , this.extensions && this.extensions.length ? this.extensions : undefined,\n \"reserved\" , this.reserved && this.reserved.length ? this.reserved : undefined,\n \"group\" , this.group || undefined,\n \"nested\" , inherited && inherited.nested || undefined,\n \"comment\" , keepComments ? this.comment : undefined\n ]);\n};\n\n/**\n * @override\n */\nType.prototype.resolveAll = function resolveAll() {\n var fields = this.fieldsArray, i = 0;\n while (i < fields.length)\n fields[i++].resolve();\n var oneofs = this.oneofsArray; i = 0;\n while (i < oneofs.length)\n oneofs[i++].resolve();\n return Namespace.prototype.resolveAll.call(this);\n};\n\n/**\n * @override\n */\nType.prototype.get = function get(name) {\n return this.fields[name]\n || this.oneofs && this.oneofs[name]\n || this.nested && this.nested[name]\n || null;\n};\n\n/**\n * Adds a nested object to this type.\n * @param {ReflectionObject} object Nested object to add\n * @returns {Type} `this`\n * @throws {TypeError} If arguments are invalid\n * @throws {Error} If there is already a nested object with this name or, if a field, when there is already a field with this id\n */\nType.prototype.add = function add(object) {\n\n if (this.get(object.name))\n throw Error(\"duplicate name '\" + object.name + \"' in \" + this);\n\n if (object instanceof Field && object.extend === undefined) {\n // NOTE: Extension fields aren't actual fields on the declaring type, but nested objects.\n // The root object takes care of adding distinct sister-fields to the respective extended\n // type instead.\n\n // avoids calling the getter if not absolutely necessary because it's called quite frequently\n if (this._fieldsById ? /* istanbul ignore next */ this._fieldsById[object.id] : this.fieldsById[object.id])\n throw Error(\"duplicate id \" + object.id + \" in \" + this);\n if (this.isReservedId(object.id))\n throw Error(\"id \" + object.id + \" is reserved in \" + this);\n if (this.isReservedName(object.name))\n throw Error(\"name '\" + object.name + \"' is reserved in \" + this);\n\n if (object.parent)\n object.parent.remove(object);\n this.fields[object.name] = object;\n object.message = this;\n object.onAdd(this);\n return clearCache(this);\n }\n if (object instanceof OneOf) {\n if (!this.oneofs)\n this.oneofs = {};\n this.oneofs[object.name] = object;\n object.onAdd(this);\n return clearCache(this);\n }\n return Namespace.prototype.add.call(this, object);\n};\n\n/**\n * Removes a nested object from this type.\n * @param {ReflectionObject} object Nested object to remove\n * @returns {Type} `this`\n * @throws {TypeError} If arguments are invalid\n * @throws {Error} If `object` is not a member of this type\n */\nType.prototype.remove = function remove(object) {\n if (object instanceof Field && object.extend === undefined) {\n // See Type#add for the reason why extension fields are excluded here.\n\n /* istanbul ignore if */\n if (!this.fields || this.fields[object.name] !== object)\n throw Error(object + \" is not a member of \" + this);\n\n delete this.fields[object.name];\n object.parent = null;\n object.onRemove(this);\n return clearCache(this);\n }\n if (object instanceof OneOf) {\n\n /* istanbul ignore if */\n if (!this.oneofs || this.oneofs[object.name] !== object)\n throw Error(object + \" is not a member of \" + this);\n\n delete this.oneofs[object.name];\n object.parent = null;\n object.onRemove(this);\n return clearCache(this);\n }\n return Namespace.prototype.remove.call(this, object);\n};\n\n/**\n * Tests if the specified id is reserved.\n * @param {number} id Id to test\n * @returns {boolean} `true` if reserved, otherwise `false`\n */\nType.prototype.isReservedId = function isReservedId(id) {\n return Namespace.isReservedId(this.reserved, id);\n};\n\n/**\n * Tests if the specified name is reserved.\n * @param {string} name Name to test\n * @returns {boolean} `true` if reserved, otherwise `false`\n */\nType.prototype.isReservedName = function isReservedName(name) {\n return Namespace.isReservedName(this.reserved, name);\n};\n\n/**\n * Creates a new message of this type using the specified properties.\n * @param {Object.<string,*>} [properties] Properties to set\n * @returns {Message<{}>} Message instance\n */\nType.prototype.create = function create(properties) {\n return new this.ctor(properties);\n};\n\n/**\n * Sets up {@link Type#encode|encode}, {@link Type#decode|decode} and {@link Type#verify|verify}.\n * @returns {Type} `this`\n */\nType.prototype.setup = function setup() {\n // Sets up everything at once so that the prototype chain does not have to be re-evaluated\n // multiple times (V8, soft-deopt prototype-check).\n\n var fullName = this.fullName,\n types = [];\n for (var i = 0; i < /* initializes */ this.fieldsArray.length; ++i)\n types.push(this._fieldsArray[i].resolve().resolvedType);\n\n // Replace setup methods with type-specific generated functions\n this.encode = encoder(this)({\n Writer : Writer,\n types : types,\n util : util\n });\n this.decode = decoder(this)({\n Reader : Reader,\n types : types,\n util : util\n });\n this.verify = verifier(this)({\n types : types,\n util : util\n });\n this.fromObject = converter.fromObject(this)({\n types : types,\n util : util\n });\n this.toObject = converter.toObject(this)({\n types : types,\n util : util\n });\n\n // Inject custom wrappers for common types\n var wrapper = wrappers[fullName];\n if (wrapper) {\n var originalThis = Object.create(this);\n // if (wrapper.fromObject) {\n originalThis.fromObject = this.fromObject;\n this.fromObject = wrapper.fromObject.bind(originalThis);\n // }\n // if (wrapper.toObject) {\n originalThis.toObject = this.toObject;\n this.toObject = wrapper.toObject.bind(originalThis);\n // }\n }\n\n return this;\n};\n\n/**\n * Encodes a message of this type. Does not implicitly {@link Type#verify|verify} messages.\n * @param {Message<{}>|Object.<string,*>} message Message instance or plain object\n * @param {Writer} [writer] Writer to encode to\n * @returns {Writer} writer\n */\nType.prototype.encode = function encode_setup(message, writer) {\n return this.setup().encode(message, writer); // overrides this method\n};\n\n/**\n * Encodes a message of this type preceeded by its byte length as a varint. Does not implicitly {@link Type#verify|verify} messages.\n * @param {Message<{}>|Object.<string,*>} message Message instance or plain object\n * @param {Writer} [writer] Writer to encode to\n * @returns {Writer} writer\n */\nType.prototype.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim();\n};\n\n/**\n * Decodes a message of this type.\n * @param {Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Length of the message, if known beforehand\n * @returns {Message<{}>} Decoded message\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {util.ProtocolError<{}>} If required fields are missing\n */\nType.prototype.decode = function decode_setup(reader, length) {\n return this.setup().decode(reader, length); // overrides this method\n};\n\n/**\n * Decodes a message of this type preceeded by its byte length as a varint.\n * @param {Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {Message<{}>} Decoded message\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {util.ProtocolError} If required fields are missing\n */\nType.prototype.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof Reader))\n reader = Reader.create(reader);\n return this.decode(reader, reader.uint32());\n};\n\n/**\n * Verifies that field values are valid and that required fields are present.\n * @param {Object.<string,*>} message Plain object to verify\n * @returns {null|string} `null` if valid, otherwise the reason why it is not\n */\nType.prototype.verify = function verify_setup(message) {\n return this.setup().verify(message); // overrides this method\n};\n\n/**\n * Creates a new message of this type from a plain object. Also converts values to their respective internal types.\n * @param {Object.<string,*>} object Plain object to convert\n * @returns {Message<{}>} Message instance\n */\nType.prototype.fromObject = function fromObject(object) {\n return this.setup().fromObject(object);\n};\n\n/**\n * Conversion options as used by {@link Type#toObject} and {@link Message.toObject}.\n * @interface IConversionOptions\n * @property {Function} [longs] Long conversion type.\n * Valid values are `String` and `Number` (the global types).\n * Defaults to copy the present value, which is a possibly unsafe number without and a {@link Long} with a long library.\n * @property {Function} [enums] Enum value conversion type.\n * Only valid value is `String` (the global type).\n * Defaults to copy the present value, which is the numeric id.\n * @property {Function} [bytes] Bytes value conversion type.\n * Valid values are `Array` and (a base64 encoded) `String` (the global types).\n * Defaults to copy the present value, which usually is a Buffer under node and an Uint8Array in the browser.\n * @property {boolean} [defaults=false] Also sets default values on the resulting object\n * @property {boolean} [arrays=false] Sets empty arrays for missing repeated fields even if `defaults=false`\n * @property {boolean} [objects=false] Sets empty objects for missing map fields even if `defaults=false`\n * @property {boolean} [oneofs=false] Includes virtual oneof properties set to the present field's name, if any\n * @property {boolean} [json=false] Performs additional JSON compatibility conversions, i.e. NaN and Infinity to strings\n */\n\n/**\n * Creates a plain object from a message of this type. Also converts values to other types if specified.\n * @param {Message<{}>} message Message instance\n * @param {IConversionOptions} [options] Conversion options\n * @returns {Object.<string,*>} Plain object\n */\nType.prototype.toObject = function toObject(message, options) {\n return this.setup().toObject(message, options);\n};\n\n/**\n * Decorator function as returned by {@link Type.d} (TypeScript).\n * @typedef TypeDecorator\n * @type {function}\n * @param {Constructor<T>} target Target constructor\n * @returns {undefined}\n * @template T extends Message<T>\n */\n\n/**\n * Type decorator (TypeScript).\n * @param {string} [typeName] Type name, defaults to the constructor's name\n * @returns {TypeDecorator<T>} Decorator function\n * @template T extends Message<T>\n */\nType.d = function decorateType(typeName) {\n return function typeDecorator(target) {\n util.decorateType(target, typeName);\n };\n};\n","\"use strict\";\n\n/**\n * Common type constants.\n * @namespace\n */\nvar types = exports;\n\nvar util = require(\"./util\");\n\nvar s = [\n \"double\", // 0\n \"float\", // 1\n \"int32\", // 2\n \"uint32\", // 3\n \"sint32\", // 4\n \"fixed32\", // 5\n \"sfixed32\", // 6\n \"int64\", // 7\n \"uint64\", // 8\n \"sint64\", // 9\n \"fixed64\", // 10\n \"sfixed64\", // 11\n \"bool\", // 12\n \"string\", // 13\n \"bytes\" // 14\n];\n\nfunction bake(values, offset) {\n var i = 0, o = {};\n offset |= 0;\n while (i < values.length) o[s[i + offset]] = values[i++];\n return o;\n}\n\n/**\n * Basic type wire types.\n * @type {Object.<string,number>}\n * @const\n * @property {number} double=1 Fixed64 wire type\n * @property {number} float=5 Fixed32 wire type\n * @property {number} int32=0 Varint wire type\n * @property {number} uint32=0 Varint wire type\n * @property {number} sint32=0 Varint wire type\n * @property {number} fixed32=5 Fixed32 wire type\n * @property {number} sfixed32=5 Fixed32 wire type\n * @property {number} int64=0 Varint wire type\n * @property {number} uint64=0 Varint wire type\n * @property {number} sint64=0 Varint wire type\n * @property {number} fixed64=1 Fixed64 wire type\n * @property {number} sfixed64=1 Fixed64 wire type\n * @property {number} bool=0 Varint wire type\n * @property {number} string=2 Ldelim wire type\n * @property {number} bytes=2 Ldelim wire type\n */\ntypes.basic = bake([\n /* double */ 1,\n /* float */ 5,\n /* int32 */ 0,\n /* uint32 */ 0,\n /* sint32 */ 0,\n /* fixed32 */ 5,\n /* sfixed32 */ 5,\n /* int64 */ 0,\n /* uint64 */ 0,\n /* sint64 */ 0,\n /* fixed64 */ 1,\n /* sfixed64 */ 1,\n /* bool */ 0,\n /* string */ 2,\n /* bytes */ 2\n]);\n\n/**\n * Basic type defaults.\n * @type {Object.<string,*>}\n * @const\n * @property {number} double=0 Double default\n * @property {number} float=0 Float default\n * @property {number} int32=0 Int32 default\n * @property {number} uint32=0 Uint32 default\n * @property {number} sint32=0 Sint32 default\n * @property {number} fixed32=0 Fixed32 default\n * @property {number} sfixed32=0 Sfixed32 default\n * @property {number} int64=0 Int64 default\n * @property {number} uint64=0 Uint64 default\n * @property {number} sint64=0 Sint32 default\n * @property {number} fixed64=0 Fixed64 default\n * @property {number} sfixed64=0 Sfixed64 default\n * @property {boolean} bool=false Bool default\n * @property {string} string=\"\" String default\n * @property {Array.<number>} bytes=Array(0) Bytes default\n * @property {null} message=null Message default\n */\ntypes.defaults = bake([\n /* double */ 0,\n /* float */ 0,\n /* int32 */ 0,\n /* uint32 */ 0,\n /* sint32 */ 0,\n /* fixed32 */ 0,\n /* sfixed32 */ 0,\n /* int64 */ 0,\n /* uint64 */ 0,\n /* sint64 */ 0,\n /* fixed64 */ 0,\n /* sfixed64 */ 0,\n /* bool */ false,\n /* string */ \"\",\n /* bytes */ util.emptyArray,\n /* message */ null\n]);\n\n/**\n * Basic long type wire types.\n * @type {Object.<string,number>}\n * @const\n * @property {number} int64=0 Varint wire type\n * @property {number} uint64=0 Varint wire type\n * @property {number} sint64=0 Varint wire type\n * @property {number} fixed64=1 Fixed64 wire type\n * @property {number} sfixed64=1 Fixed64 wire type\n */\ntypes.long = bake([\n /* int64 */ 0,\n /* uint64 */ 0,\n /* sint64 */ 0,\n /* fixed64 */ 1,\n /* sfixed64 */ 1\n], 7);\n\n/**\n * Allowed types for map keys with their associated wire type.\n * @type {Object.<string,number>}\n * @const\n * @property {number} int32=0 Varint wire type\n * @property {number} uint32=0 Varint wire type\n * @property {number} sint32=0 Varint wire type\n * @property {number} fixed32=5 Fixed32 wire type\n * @property {number} sfixed32=5 Fixed32 wire type\n * @property {number} int64=0 Varint wire type\n * @property {number} uint64=0 Varint wire type\n * @property {number} sint64=0 Varint wire type\n * @property {number} fixed64=1 Fixed64 wire type\n * @property {number} sfixed64=1 Fixed64 wire type\n * @property {number} bool=0 Varint wire type\n * @property {number} string=2 Ldelim wire type\n */\ntypes.mapKey = bake([\n /* int32 */ 0,\n /* uint32 */ 0,\n /* sint32 */ 0,\n /* fixed32 */ 5,\n /* sfixed32 */ 5,\n /* int64 */ 0,\n /* uint64 */ 0,\n /* sint64 */ 0,\n /* fixed64 */ 1,\n /* sfixed64 */ 1,\n /* bool */ 0,\n /* string */ 2\n], 2);\n\n/**\n * Allowed types for packed repeated fields with their associated wire type.\n * @type {Object.<string,number>}\n * @const\n * @property {number} double=1 Fixed64 wire type\n * @property {number} float=5 Fixed32 wire type\n * @property {number} int32=0 Varint wire type\n * @property {number} uint32=0 Varint wire type\n * @property {number} sint32=0 Varint wire type\n * @property {number} fixed32=5 Fixed32 wire type\n * @property {number} sfixed32=5 Fixed32 wire type\n * @property {number} int64=0 Varint wire type\n * @property {number} uint64=0 Varint wire type\n * @property {number} sint64=0 Varint wire type\n * @property {number} fixed64=1 Fixed64 wire type\n * @property {number} sfixed64=1 Fixed64 wire type\n * @property {number} bool=0 Varint wire type\n */\ntypes.packed = bake([\n /* double */ 1,\n /* float */ 5,\n /* int32 */ 0,\n /* uint32 */ 0,\n /* sint32 */ 0,\n /* fixed32 */ 5,\n /* sfixed32 */ 5,\n /* int64 */ 0,\n /* uint64 */ 0,\n /* sint64 */ 0,\n /* fixed64 */ 1,\n /* sfixed64 */ 1,\n /* bool */ 0\n]);\n","\"use strict\";\n\n/**\n * Various utility functions.\n * @namespace\n */\nvar util = module.exports = require(\"./util/minimal\");\n\nvar roots = require(\"./roots\");\n\nvar Type, // cyclic\n Enum;\n\nutil.codegen = require(\"@protobufjs/codegen\");\nutil.fetch = require(\"@protobufjs/fetch\");\nutil.path = require(\"@protobufjs/path\");\n\n/**\n * Node's fs module if available.\n * @type {Object.<string,*>}\n */\nutil.fs = util.inquire(\"fs\");\n\n/**\n * Converts an object's values to an array.\n * @param {Object.<string,*>} object Object to convert\n * @returns {Array.<*>} Converted array\n */\nutil.toArray = function toArray(object) {\n if (object) {\n var keys = Object.keys(object),\n array = new Array(keys.length),\n index = 0;\n while (index < keys.length)\n array[index] = object[keys[index++]];\n return array;\n }\n return [];\n};\n\n/**\n * Converts an array of keys immediately followed by their respective value to an object, omitting undefined values.\n * @param {Array.<*>} array Array to convert\n * @returns {Object.<string,*>} Converted object\n */\nutil.toObject = function toObject(array) {\n var object = {},\n index = 0;\n while (index < array.length) {\n var key = array[index++],\n val = array[index++];\n if (val !== undefined)\n object[key] = val;\n }\n return object;\n};\n\nvar safePropBackslashRe = /\\\\/g,\n safePropQuoteRe = /\"/g;\n\n/**\n * Tests whether the specified name is a reserved word in JS.\n * @param {string} name Name to test\n * @returns {boolean} `true` if reserved, otherwise `false`\n */\nutil.isReserved = function isReserved(name) {\n return /^(?:do|if|in|for|let|new|try|var|case|else|enum|eval|false|null|this|true|void|with|break|catch|class|const|super|throw|while|yield|delete|export|import|public|return|static|switch|typeof|default|extends|finally|package|private|continue|debugger|function|arguments|interface|protected|implements|instanceof)$/.test(name);\n};\n\n/**\n * Returns a safe property accessor for the specified property name.\n * @param {string} prop Property name\n * @returns {string} Safe accessor\n */\nutil.safeProp = function safeProp(prop) {\n if (!/^[$\\w_]+$/.test(prop) || util.isReserved(prop))\n return \"[\\\"\" + prop.replace(safePropBackslashRe, \"\\\\\\\\\").replace(safePropQuoteRe, \"\\\\\\\"\") + \"\\\"]\";\n return \".\" + prop;\n};\n\n/**\n * Converts the first character of a string to upper case.\n * @param {string} str String to convert\n * @returns {string} Converted string\n */\nutil.ucFirst = function ucFirst(str) {\n return str.charAt(0).toUpperCase() + str.substring(1);\n};\n\nvar camelCaseRe = /_([a-z])/g;\n\n/**\n * Converts a string to camel case.\n * @param {string} str String to convert\n * @returns {string} Converted string\n */\nutil.camelCase = function camelCase(str) {\n return str.substring(0, 1)\n + str.substring(1)\n .replace(camelCaseRe, function($0, $1) { return $1.toUpperCase(); });\n};\n\n/**\n * Compares reflected fields by id.\n * @param {Field} a First field\n * @param {Field} b Second field\n * @returns {number} Comparison value\n */\nutil.compareFieldsById = function compareFieldsById(a, b) {\n return a.id - b.id;\n};\n\n/**\n * Decorator helper for types (TypeScript).\n * @param {Constructor<T>} ctor Constructor function\n * @param {string} [typeName] Type name, defaults to the constructor's name\n * @returns {Type} Reflected type\n * @template T extends Message<T>\n * @property {Root} root Decorators root\n */\nutil.decorateType = function decorateType(ctor, typeName) {\n\n /* istanbul ignore if */\n if (ctor.$type) {\n if (typeName && ctor.$type.name !== typeName) {\n util.decorateRoot.remove(ctor.$type);\n ctor.$type.name = typeName;\n util.decorateRoot.add(ctor.$type);\n }\n return ctor.$type;\n }\n\n /* istanbul ignore next */\n if (!Type)\n Type = require(\"./type\");\n\n var type = new Type(typeName || ctor.name);\n util.decorateRoot.add(type);\n type.ctor = ctor; // sets up .encode, .decode etc.\n Object.defineProperty(ctor, \"$type\", { value: type, enumerable: false });\n Object.defineProperty(ctor.prototype, \"$type\", { value: type, enumerable: false });\n return type;\n};\n\nvar decorateEnumIndex = 0;\n\n/**\n * Decorator helper for enums (TypeScript).\n * @param {Object} object Enum object\n * @returns {Enum} Reflected enum\n */\nutil.decorateEnum = function decorateEnum(object) {\n\n /* istanbul ignore if */\n if (object.$type)\n return object.$type;\n\n /* istanbul ignore next */\n if (!Enum)\n Enum = require(\"./enum\");\n\n var enm = new Enum(\"Enum\" + decorateEnumIndex++, object);\n util.decorateRoot.add(enm);\n Object.defineProperty(object, \"$type\", { value: enm, enumerable: false });\n return enm;\n};\n\n\n/**\n * Sets the value of a property by property path. If a value already exists, it is turned to an array\n * @param {Object.<string,*>} dst Destination object\n * @param {string} path dot '.' delimited path of the property to set\n * @param {Object} value the value to set\n * @returns {Object.<string,*>} Destination object\n */\nutil.setProperty = function setProperty(dst, path, value) {\n function setProp(dst, path, value) {\n var part = path.shift();\n if (part === \"__proto__\") {\n return dst;\n }\n if (path.length > 0) {\n dst[part] = setProp(dst[part] || {}, path, value);\n } else {\n var prevValue = dst[part];\n if (prevValue)\n value = [].concat(prevValue).concat(value);\n dst[part] = value;\n }\n return dst;\n }\n\n if (typeof dst !== \"object\")\n throw TypeError(\"dst must be an object\");\n if (!path)\n throw TypeError(\"path must be specified\");\n\n path = path.split(\".\");\n return setProp(dst, path, value);\n};\n\n/**\n * Decorator root (TypeScript).\n * @name util.decorateRoot\n * @type {Root}\n * @readonly\n */\nObject.defineProperty(util, \"decorateRoot\", {\n get: function() {\n return roots[\"decorated\"] || (roots[\"decorated\"] = new (require(\"./root\"))());\n }\n});\n","\"use strict\";\nmodule.exports = LongBits;\n\nvar util = require(\"../util/minimal\");\n\n/**\n * Constructs new long bits.\n * @classdesc Helper class for working with the low and high bits of a 64 bit value.\n * @memberof util\n * @constructor\n * @param {number} lo Low 32 bits, unsigned\n * @param {number} hi High 32 bits, unsigned\n */\nfunction LongBits(lo, hi) {\n\n // note that the casts below are theoretically unnecessary as of today, but older statically\n // generated converter code might still call the ctor with signed 32bits. kept for compat.\n\n /**\n * Low bits.\n * @type {number}\n */\n this.lo = lo >>> 0;\n\n /**\n * High bits.\n * @type {number}\n */\n this.hi = hi >>> 0;\n}\n\n/**\n * Zero bits.\n * @memberof util.LongBits\n * @type {util.LongBits}\n */\nvar zero = LongBits.zero = new LongBits(0, 0);\n\nzero.toNumber = function() { return 0; };\nzero.zzEncode = zero.zzDecode = function() { return this; };\nzero.length = function() { return 1; };\n\n/**\n * Zero hash.\n * @memberof util.LongBits\n * @type {string}\n */\nvar zeroHash = LongBits.zeroHash = \"\\0\\0\\0\\0\\0\\0\\0\\0\";\n\n/**\n * Constructs new long bits from the specified number.\n * @param {number} value Value\n * @returns {util.LongBits} Instance\n */\nLongBits.fromNumber = function fromNumber(value) {\n if (value === 0)\n return zero;\n var sign = value < 0;\n if (sign)\n value = -value;\n var lo = value >>> 0,\n hi = (value - lo) / 4294967296 >>> 0;\n if (sign) {\n hi = ~hi >>> 0;\n lo = ~lo >>> 0;\n if (++lo > 4294967295) {\n lo = 0;\n if (++hi > 4294967295)\n hi = 0;\n }\n }\n return new LongBits(lo, hi);\n};\n\n/**\n * Constructs new long bits from a number, long or string.\n * @param {Long|number|string} value Value\n * @returns {util.LongBits} Instance\n */\nLongBits.from = function from(value) {\n if (typeof value === \"number\")\n return LongBits.fromNumber(value);\n if (util.isString(value)) {\n /* istanbul ignore else */\n if (util.Long)\n value = util.Long.fromString(value);\n else\n return LongBits.fromNumber(parseInt(value, 10));\n }\n return value.low || value.high ? new LongBits(value.low >>> 0, value.high >>> 0) : zero;\n};\n\n/**\n * Converts this long bits to a possibly unsafe JavaScript number.\n * @param {boolean} [unsigned=false] Whether unsigned or not\n * @returns {number} Possibly unsafe number\n */\nLongBits.prototype.toNumber = function toNumber(unsigned) {\n if (!unsigned && this.hi >>> 31) {\n var lo = ~this.lo + 1 >>> 0,\n hi = ~this.hi >>> 0;\n if (!lo)\n hi = hi + 1 >>> 0;\n return -(lo + hi * 4294967296);\n }\n return this.lo + this.hi * 4294967296;\n};\n\n/**\n * Converts this long bits to a long.\n * @param {boolean} [unsigned=false] Whether unsigned or not\n * @returns {Long} Long\n */\nLongBits.prototype.toLong = function toLong(unsigned) {\n return util.Long\n ? new util.Long(this.lo | 0, this.hi | 0, Boolean(unsigned))\n /* istanbul ignore next */\n : { low: this.lo | 0, high: this.hi | 0, unsigned: Boolean(unsigned) };\n};\n\nvar charCodeAt = String.prototype.charCodeAt;\n\n/**\n * Constructs new long bits from the specified 8 characters long hash.\n * @param {string} hash Hash\n * @returns {util.LongBits} Bits\n */\nLongBits.fromHash = function fromHash(hash) {\n if (hash === zeroHash)\n return zero;\n return new LongBits(\n ( charCodeAt.call(hash, 0)\n | charCodeAt.call(hash, 1) << 8\n | charCodeAt.call(hash, 2) << 16\n | charCodeAt.call(hash, 3) << 24) >>> 0\n ,\n ( charCodeAt.call(hash, 4)\n | charCodeAt.call(hash, 5) << 8\n | charCodeAt.call(hash, 6) << 16\n | charCodeAt.call(hash, 7) << 24) >>> 0\n );\n};\n\n/**\n * Converts this long bits to a 8 characters long hash.\n * @returns {string} Hash\n */\nLongBits.prototype.toHash = function toHash() {\n return String.fromCharCode(\n this.lo & 255,\n this.lo >>> 8 & 255,\n this.lo >>> 16 & 255,\n this.lo >>> 24 ,\n this.hi & 255,\n this.hi >>> 8 & 255,\n this.hi >>> 16 & 255,\n this.hi >>> 24\n );\n};\n\n/**\n * Zig-zag encodes this long bits.\n * @returns {util.LongBits} `this`\n */\nLongBits.prototype.zzEncode = function zzEncode() {\n var mask = this.hi >> 31;\n this.hi = ((this.hi << 1 | this.lo >>> 31) ^ mask) >>> 0;\n this.lo = ( this.lo << 1 ^ mask) >>> 0;\n return this;\n};\n\n/**\n * Zig-zag decodes this long bits.\n * @returns {util.LongBits} `this`\n */\nLongBits.prototype.zzDecode = function zzDecode() {\n var mask = -(this.lo & 1);\n this.lo = ((this.lo >>> 1 | this.hi << 31) ^ mask) >>> 0;\n this.hi = ( this.hi >>> 1 ^ mask) >>> 0;\n return this;\n};\n\n/**\n * Calculates the length of this longbits when encoded as a varint.\n * @returns {number} Length\n */\nLongBits.prototype.length = function length() {\n var part0 = this.lo,\n part1 = (this.lo >>> 28 | this.hi << 4) >>> 0,\n part2 = this.hi >>> 24;\n return part2 === 0\n ? part1 === 0\n ? part0 < 16384\n ? part0 < 128 ? 1 : 2\n : part0 < 2097152 ? 3 : 4\n : part1 < 16384\n ? part1 < 128 ? 5 : 6\n : part1 < 2097152 ? 7 : 8\n : part2 < 128 ? 9 : 10;\n};\n","\"use strict\";\nvar util = exports;\n\n// used to return a Promise where callback is omitted\nutil.asPromise = require(\"@protobufjs/aspromise\");\n\n// converts to / from base64 encoded strings\nutil.base64 = require(\"@protobufjs/base64\");\n\n// base class of rpc.Service\nutil.EventEmitter = require(\"@protobufjs/eventemitter\");\n\n// float handling accross browsers\nutil.float = require(\"@protobufjs/float\");\n\n// requires modules optionally and hides the call from bundlers\nutil.inquire = require(\"@protobufjs/inquire\");\n\n// converts to / from utf8 encoded strings\nutil.utf8 = require(\"@protobufjs/utf8\");\n\n// provides a node-like buffer pool in the browser\nutil.pool = require(\"@protobufjs/pool\");\n\n// utility to work with the low and high bits of a 64 bit value\nutil.LongBits = require(\"./longbits\");\n\n/**\n * Whether running within node or not.\n * @memberof util\n * @type {boolean}\n */\nutil.isNode = Boolean(typeof global !== \"undefined\"\n && global\n && global.process\n && global.process.versions\n && global.process.versions.node);\n\n/**\n * Global object reference.\n * @memberof util\n * @type {Object}\n */\nutil.global = util.isNode && global\n || typeof window !== \"undefined\" && window\n || typeof self !== \"undefined\" && self\n || this; // eslint-disable-line no-invalid-this\n\n/**\n * An immuable empty array.\n * @memberof util\n * @type {Array.<*>}\n * @const\n */\nutil.emptyArray = Object.freeze ? Object.freeze([]) : /* istanbul ignore next */ []; // used on prototypes\n\n/**\n * An immutable empty object.\n * @type {Object}\n * @const\n */\nutil.emptyObject = Object.freeze ? Object.freeze({}) : /* istanbul ignore next */ {}; // used on prototypes\n\n/**\n * Tests if the specified value is an integer.\n * @function\n * @param {*} value Value to test\n * @returns {boolean} `true` if the value is an integer\n */\nutil.isInteger = Number.isInteger || /* istanbul ignore next */ function isInteger(value) {\n return typeof value === \"number\" && isFinite(value) && Math.floor(value) === value;\n};\n\n/**\n * Tests if the specified value is a string.\n * @param {*} value Value to test\n * @returns {boolean} `true` if the value is a string\n */\nutil.isString = function isString(value) {\n return typeof value === \"string\" || value instanceof String;\n};\n\n/**\n * Tests if the specified value is a non-null object.\n * @param {*} value Value to test\n * @returns {boolean} `true` if the value is a non-null object\n */\nutil.isObject = function isObject(value) {\n return value && typeof value === \"object\";\n};\n\n/**\n * Checks if a property on a message is considered to be present.\n * This is an alias of {@link util.isSet}.\n * @function\n * @param {Object} obj Plain object or message instance\n * @param {string} prop Property name\n * @returns {boolean} `true` if considered to be present, otherwise `false`\n */\nutil.isset =\n\n/**\n * Checks if a property on a message is considered to be present.\n * @param {Object} obj Plain object or message instance\n * @param {string} prop Property name\n * @returns {boolean} `true` if considered to be present, otherwise `false`\n */\nutil.isSet = function isSet(obj, prop) {\n var value = obj[prop];\n if (value != null && obj.hasOwnProperty(prop)) // eslint-disable-line eqeqeq, no-prototype-builtins\n return typeof value !== \"object\" || (Array.isArray(value) ? value.length : Object.keys(value).length) > 0;\n return false;\n};\n\n/**\n * Any compatible Buffer instance.\n * This is a minimal stand-alone definition of a Buffer instance. The actual type is that exported by node's typings.\n * @interface Buffer\n * @extends Uint8Array\n */\n\n/**\n * Node's Buffer class if available.\n * @type {Constructor<Buffer>}\n */\nutil.Buffer = (function() {\n try {\n var Buffer = util.inquire(\"buffer\").Buffer;\n // refuse to use non-node buffers if not explicitly assigned (perf reasons):\n return Buffer.prototype.utf8Write ? Buffer : /* istanbul ignore next */ null;\n } catch (e) {\n /* istanbul ignore next */\n return null;\n }\n})();\n\n// Internal alias of or polyfull for Buffer.from.\nutil._Buffer_from = null;\n\n// Internal alias of or polyfill for Buffer.allocUnsafe.\nutil._Buffer_allocUnsafe = null;\n\n/**\n * Creates a new buffer of whatever type supported by the environment.\n * @param {number|number[]} [sizeOrArray=0] Buffer size or number array\n * @returns {Uint8Array|Buffer} Buffer\n */\nutil.newBuffer = function newBuffer(sizeOrArray) {\n /* istanbul ignore next */\n return typeof sizeOrArray === \"number\"\n ? util.Buffer\n ? util._Buffer_allocUnsafe(sizeOrArray)\n : new util.Array(sizeOrArray)\n : util.Buffer\n ? util._Buffer_from(sizeOrArray)\n : typeof Uint8Array === \"undefined\"\n ? sizeOrArray\n : new Uint8Array(sizeOrArray);\n};\n\n/**\n * Array implementation used in the browser. `Uint8Array` if supported, otherwise `Array`.\n * @type {Constructor<Uint8Array>}\n */\nutil.Array = typeof Uint8Array !== \"undefined\" ? Uint8Array /* istanbul ignore next */ : Array;\n\n/**\n * Any compatible Long instance.\n * This is a minimal stand-alone definition of a Long instance. The actual type is that exported by long.js.\n * @interface Long\n * @property {number} low Low bits\n * @property {number} high High bits\n * @property {boolean} unsigned Whether unsigned or not\n */\n\n/**\n * Long.js's Long class if available.\n * @type {Constructor<Long>}\n */\nutil.Long = /* istanbul ignore next */ util.global.dcodeIO && /* istanbul ignore next */ util.global.dcodeIO.Long\n || /* istanbul ignore next */ util.global.Long\n || util.inquire(\"long\");\n\n/**\n * Regular expression used to verify 2 bit (`bool`) map keys.\n * @type {RegExp}\n * @const\n */\nutil.key2Re = /^true|false|0|1$/;\n\n/**\n * Regular expression used to verify 32 bit (`int32` etc.) map keys.\n * @type {RegExp}\n * @const\n */\nutil.key32Re = /^-?(?:0|[1-9][0-9]*)$/;\n\n/**\n * Regular expression used to verify 64 bit (`int64` etc.) map keys.\n * @type {RegExp}\n * @const\n */\nutil.key64Re = /^(?:[\\\\x00-\\\\xff]{8}|-?(?:0|[1-9][0-9]*))$/;\n\n/**\n * Converts a number or long to an 8 characters long hash string.\n * @param {Long|number} value Value to convert\n * @returns {string} Hash\n */\nutil.longToHash = function longToHash(value) {\n return value\n ? util.LongBits.from(value).toHash()\n : util.LongBits.zeroHash;\n};\n\n/**\n * Converts an 8 characters long hash string to a long or number.\n * @param {string} hash Hash\n * @param {boolean} [unsigned=false] Whether unsigned or not\n * @returns {Long|number} Original value\n */\nutil.longFromHash = function longFromHash(hash, unsigned) {\n var bits = util.LongBits.fromHash(hash);\n if (util.Long)\n return util.Long.fromBits(bits.lo, bits.hi, unsigned);\n return bits.toNumber(Boolean(unsigned));\n};\n\n/**\n * Merges the properties of the source object into the destination object.\n * @memberof util\n * @param {Object.<string,*>} dst Destination object\n * @param {Object.<string,*>} src Source object\n * @param {boolean} [ifNotSet=false] Merges only if the key is not already set\n * @returns {Object.<string,*>} Destination object\n */\nfunction merge(dst, src, ifNotSet) { // used by converters\n for (var keys = Object.keys(src), i = 0; i < keys.length; ++i)\n if (dst[keys[i]] === undefined || !ifNotSet)\n dst[keys[i]] = src[keys[i]];\n return dst;\n}\n\nutil.merge = merge;\n\n/**\n * Converts the first character of a string to lower case.\n * @param {string} str String to convert\n * @returns {string} Converted string\n */\nutil.lcFirst = function lcFirst(str) {\n return str.charAt(0).toLowerCase() + str.substring(1);\n};\n\n/**\n * Creates a custom error constructor.\n * @memberof util\n * @param {string} name Error name\n * @returns {Constructor<Error>} Custom error constructor\n */\nfunction newError(name) {\n\n function CustomError(message, properties) {\n\n if (!(this instanceof CustomError))\n return new CustomError(message, properties);\n\n // Error.call(this, message);\n // ^ just returns a new error instance because the ctor can be called as a function\n\n Object.defineProperty(this, \"message\", { get: function() { return message; } });\n\n /* istanbul ignore next */\n if (Error.captureStackTrace) // node\n Error.captureStackTrace(this, CustomError);\n else\n Object.defineProperty(this, \"stack\", { value: new Error().stack || \"\" });\n\n if (properties)\n merge(this, properties);\n }\n\n (CustomError.prototype = Object.create(Error.prototype)).constructor = CustomError;\n\n Object.defineProperty(CustomError.prototype, \"name\", { get: function() { return name; } });\n\n CustomError.prototype.toString = function toString() {\n return this.name + \": \" + this.message;\n };\n\n return CustomError;\n}\n\nutil.newError = newError;\n\n/**\n * Constructs a new protocol error.\n * @classdesc Error subclass indicating a protocol specifc error.\n * @memberof util\n * @extends Error\n * @template T extends Message<T>\n * @constructor\n * @param {string} message Error message\n * @param {Object.<string,*>} [properties] Additional properties\n * @example\n * try {\n * MyMessage.decode(someBuffer); // throws if required fields are missing\n * } catch (e) {\n * if (e instanceof ProtocolError && e.instance)\n * console.log(\"decoded so far: \" + JSON.stringify(e.instance));\n * }\n */\nutil.ProtocolError = newError(\"ProtocolError\");\n\n/**\n * So far decoded message instance.\n * @name util.ProtocolError#instance\n * @type {Message<T>}\n */\n\n/**\n * A OneOf getter as returned by {@link util.oneOfGetter}.\n * @typedef OneOfGetter\n * @type {function}\n * @returns {string|undefined} Set field name, if any\n */\n\n/**\n * Builds a getter for a oneof's present field name.\n * @param {string[]} fieldNames Field names\n * @returns {OneOfGetter} Unbound getter\n */\nutil.oneOfGetter = function getOneOf(fieldNames) {\n var fieldMap = {};\n for (var i = 0; i < fieldNames.length; ++i)\n fieldMap[fieldNames[i]] = 1;\n\n /**\n * @returns {string|undefined} Set field name, if any\n * @this Object\n * @ignore\n */\n return function() { // eslint-disable-line consistent-return\n for (var keys = Object.keys(this), i = keys.length - 1; i > -1; --i)\n if (fieldMap[keys[i]] === 1 && this[keys[i]] !== undefined && this[keys[i]] !== null)\n return keys[i];\n };\n};\n\n/**\n * A OneOf setter as returned by {@link util.oneOfSetter}.\n * @typedef OneOfSetter\n * @type {function}\n * @param {string|undefined} value Field name\n * @returns {undefined}\n */\n\n/**\n * Builds a setter for a oneof's present field name.\n * @param {string[]} fieldNames Field names\n * @returns {OneOfSetter} Unbound setter\n */\nutil.oneOfSetter = function setOneOf(fieldNames) {\n\n /**\n * @param {string} name Field name\n * @returns {undefined}\n * @this Object\n * @ignore\n */\n return function(name) {\n for (var i = 0; i < fieldNames.length; ++i)\n if (fieldNames[i] !== name)\n delete this[fieldNames[i]];\n };\n};\n\n/**\n * Default conversion options used for {@link Message#toJSON} implementations.\n *\n * These options are close to proto3's JSON mapping with the exception that internal types like Any are handled just like messages. More precisely:\n *\n * - Longs become strings\n * - Enums become string keys\n * - Bytes become base64 encoded strings\n * - (Sub-)Messages become plain objects\n * - Maps become plain objects with all string keys\n * - Repeated fields become arrays\n * - NaN and Infinity for float and double fields become strings\n *\n * @type {IConversionOptions}\n * @see https://developers.google.com/protocol-buffers/docs/proto3?hl=en#json\n */\nutil.toJSONOptions = {\n longs: String,\n enums: String,\n bytes: String,\n json: true\n};\n\n// Sets up buffer utility according to the environment (called in index-minimal)\nutil._configure = function() {\n var Buffer = util.Buffer;\n /* istanbul ignore if */\n if (!Buffer) {\n util._Buffer_from = util._Buffer_allocUnsafe = null;\n return;\n }\n // because node 4.x buffers are incompatible & immutable\n // see: https://github.com/dcodeIO/protobuf.js/pull/665\n util._Buffer_from = Buffer.from !== Uint8Array.from && Buffer.from ||\n /* istanbul ignore next */\n function Buffer_from(value, encoding) {\n return new Buffer(value, encoding);\n };\n util._Buffer_allocUnsafe = Buffer.allocUnsafe ||\n /* istanbul ignore next */\n function Buffer_allocUnsafe(size) {\n return new Buffer(size);\n };\n};\n","\"use strict\";\nmodule.exports = verifier;\n\nvar Enum = require(\"./enum\"),\n util = require(\"./util\");\n\nfunction invalid(field, expected) {\n return field.name + \": \" + expected + (field.repeated && expected !== \"array\" ? \"[]\" : field.map && expected !== \"object\" ? \"{k:\"+field.keyType+\"}\" : \"\") + \" expected\";\n}\n\n/**\n * Generates a partial value verifier.\n * @param {Codegen} gen Codegen instance\n * @param {Field} field Reflected field\n * @param {number} fieldIndex Field index\n * @param {string} ref Variable reference\n * @returns {Codegen} Codegen instance\n * @ignore\n */\nfunction genVerifyValue(gen, field, fieldIndex, ref) {\n /* eslint-disable no-unexpected-multiline */\n if (field.resolvedType) {\n if (field.resolvedType instanceof Enum) { gen\n (\"switch(%s){\", ref)\n (\"default:\")\n (\"return%j\", invalid(field, \"enum value\"));\n for (var keys = Object.keys(field.resolvedType.values), j = 0; j < keys.length; ++j) gen\n (\"case %i:\", field.resolvedType.values[keys[j]]);\n gen\n (\"break\")\n (\"}\");\n } else {\n gen\n (\"{\")\n (\"var e=types[%i].verify(%s);\", fieldIndex, ref)\n (\"if(e)\")\n (\"return%j+e\", field.name + \".\")\n (\"}\");\n }\n } else {\n switch (field.type) {\n case \"int32\":\n case \"uint32\":\n case \"sint32\":\n case \"fixed32\":\n case \"sfixed32\": gen\n (\"if(!util.isInteger(%s))\", ref)\n (\"return%j\", invalid(field, \"integer\"));\n break;\n case \"int64\":\n case \"uint64\":\n case \"sint64\":\n case \"fixed64\":\n case \"sfixed64\": gen\n (\"if(!util.isInteger(%s)&&!(%s&&util.isInteger(%s.low)&&util.isInteger(%s.high)))\", ref, ref, ref, ref)\n (\"return%j\", invalid(field, \"integer|Long\"));\n break;\n case \"float\":\n case \"double\": gen\n (\"if(typeof %s!==\\\"number\\\")\", ref)\n (\"return%j\", invalid(field, \"number\"));\n break;\n case \"bool\": gen\n (\"if(typeof %s!==\\\"boolean\\\")\", ref)\n (\"return%j\", invalid(field, \"boolean\"));\n break;\n case \"string\": gen\n (\"if(!util.isString(%s))\", ref)\n (\"return%j\", invalid(field, \"string\"));\n break;\n case \"bytes\": gen\n (\"if(!(%s&&typeof %s.length===\\\"number\\\"||util.isString(%s)))\", ref, ref, ref)\n (\"return%j\", invalid(field, \"buffer\"));\n break;\n }\n }\n return gen;\n /* eslint-enable no-unexpected-multiline */\n}\n\n/**\n * Generates a partial key verifier.\n * @param {Codegen} gen Codegen instance\n * @param {Field} field Reflected field\n * @param {string} ref Variable reference\n * @returns {Codegen} Codegen instance\n * @ignore\n */\nfunction genVerifyKey(gen, field, ref) {\n /* eslint-disable no-unexpected-multiline */\n switch (field.keyType) {\n case \"int32\":\n case \"uint32\":\n case \"sint32\":\n case \"fixed32\":\n case \"sfixed32\": gen\n (\"if(!util.key32Re.test(%s))\", ref)\n (\"return%j\", invalid(field, \"integer key\"));\n break;\n case \"int64\":\n case \"uint64\":\n case \"sint64\":\n case \"fixed64\":\n case \"sfixed64\": gen\n (\"if(!util.key64Re.test(%s))\", ref) // see comment above: x is ok, d is not\n (\"return%j\", invalid(field, \"integer|Long key\"));\n break;\n case \"bool\": gen\n (\"if(!util.key2Re.test(%s))\", ref)\n (\"return%j\", invalid(field, \"boolean key\"));\n break;\n }\n return gen;\n /* eslint-enable no-unexpected-multiline */\n}\n\n/**\n * Generates a verifier specific to the specified message type.\n * @param {Type} mtype Message type\n * @returns {Codegen} Codegen instance\n */\nfunction verifier(mtype) {\n /* eslint-disable no-unexpected-multiline */\n\n var gen = util.codegen([\"m\"], mtype.name + \"$verify\")\n (\"if(typeof m!==\\\"object\\\"||m===null)\")\n (\"return%j\", \"object expected\");\n var oneofs = mtype.oneofsArray,\n seenFirstField = {};\n if (oneofs.length) gen\n (\"var p={}\");\n\n for (var i = 0; i < /* initializes */ mtype.fieldsArray.length; ++i) {\n var field = mtype._fieldsArray[i].resolve(),\n ref = \"m\" + util.safeProp(field.name);\n\n if (field.optional) gen\n (\"if(%s!=null&&m.hasOwnProperty(%j)){\", ref, field.name); // !== undefined && !== null\n\n // map fields\n if (field.map) { gen\n (\"if(!util.isObject(%s))\", ref)\n (\"return%j\", invalid(field, \"object\"))\n (\"var k=Object.keys(%s)\", ref)\n (\"for(var i=0;i<k.length;++i){\");\n genVerifyKey(gen, field, \"k[i]\");\n genVerifyValue(gen, field, i, ref + \"[k[i]]\")\n (\"}\");\n\n // repeated fields\n } else if (field.repeated) { gen\n (\"if(!Array.isArray(%s))\", ref)\n (\"return%j\", invalid(field, \"array\"))\n (\"for(var i=0;i<%s.length;++i){\", ref);\n genVerifyValue(gen, field, i, ref + \"[i]\")\n (\"}\");\n\n // required or present fields\n } else {\n if (field.partOf) {\n var oneofProp = util.safeProp(field.partOf.name);\n if (seenFirstField[field.partOf.name] === 1) gen\n (\"if(p%s===1)\", oneofProp)\n (\"return%j\", field.partOf.name + \": multiple values\");\n seenFirstField[field.partOf.name] = 1;\n gen\n (\"p%s=1\", oneofProp);\n }\n genVerifyValue(gen, field, i, ref);\n }\n if (field.optional) gen\n (\"}\");\n }\n return gen\n (\"return null\");\n /* eslint-enable no-unexpected-multiline */\n}","\"use strict\";\n\n/**\n * Wrappers for common types.\n * @type {Object.<string,IWrapper>}\n * @const\n */\nvar wrappers = exports;\n\nvar Message = require(\"./message\");\n\n/**\n * From object converter part of an {@link IWrapper}.\n * @typedef WrapperFromObjectConverter\n * @type {function}\n * @param {Object.<string,*>} object Plain object\n * @returns {Message<{}>} Message instance\n * @this Type\n */\n\n/**\n * To object converter part of an {@link IWrapper}.\n * @typedef WrapperToObjectConverter\n * @type {function}\n * @param {Message<{}>} message Message instance\n * @param {IConversionOptions} [options] Conversion options\n * @returns {Object.<string,*>} Plain object\n * @this Type\n */\n\n/**\n * Common type wrapper part of {@link wrappers}.\n * @interface IWrapper\n * @property {WrapperFromObjectConverter} [fromObject] From object converter\n * @property {WrapperToObjectConverter} [toObject] To object converter\n */\n\n// Custom wrapper for Any\nwrappers[\".google.protobuf.Any\"] = {\n\n fromObject: function(object) {\n\n // unwrap value type if mapped\n if (object && object[\"@type\"]) {\n // Only use fully qualified type name after the last '/'\n var name = object[\"@type\"].substring(object[\"@type\"].lastIndexOf(\"/\") + 1);\n var type = this.lookup(name);\n /* istanbul ignore else */\n if (type) {\n // type_url does not accept leading \".\"\n var type_url = object[\"@type\"].charAt(0) === \".\" ?\n object[\"@type\"].substr(1) : object[\"@type\"];\n // type_url prefix is optional, but path seperator is required\n if (type_url.indexOf(\"/\") === -1) {\n type_url = \"/\" + type_url;\n }\n return this.create({\n type_url: type_url,\n value: type.encode(type.fromObject(object)).finish()\n });\n }\n }\n\n return this.fromObject(object);\n },\n\n toObject: function(message, options) {\n\n // Default prefix\n var googleApi = \"type.googleapis.com/\";\n var prefix = \"\";\n var name = \"\";\n\n // decode value if requested and unmapped\n if (options && options.json && message.type_url && message.value) {\n // Only use fully qualified type name after the last '/'\n name = message.type_url.substring(message.type_url.lastIndexOf(\"/\") + 1);\n // Separate the prefix used\n prefix = message.type_url.substring(0, message.type_url.lastIndexOf(\"/\") + 1);\n var type = this.lookup(name);\n /* istanbul ignore else */\n if (type)\n message = type.decode(message.value);\n }\n\n // wrap value if unmapped\n if (!(message instanceof this.ctor) && message instanceof Message) {\n var object = message.$type.toObject(message, options);\n var messageName = message.$type.fullName[0] === \".\" ?\n message.$type.fullName.substr(1) : message.$type.fullName;\n // Default to type.googleapis.com prefix if no prefix is used\n if (prefix === \"\") {\n prefix = googleApi;\n }\n name = prefix + messageName;\n object[\"@type\"] = name;\n return object;\n }\n\n return this.toObject(message, options);\n }\n};\n","\"use strict\";\nmodule.exports = Writer;\n\nvar util = require(\"./util/minimal\");\n\nvar BufferWriter; // cyclic\n\nvar LongBits = util.LongBits,\n base64 = util.base64,\n utf8 = util.utf8;\n\n/**\n * Constructs a new writer operation instance.\n * @classdesc Scheduled writer operation.\n * @constructor\n * @param {function(*, Uint8Array, number)} fn Function to call\n * @param {number} len Value byte length\n * @param {*} val Value to write\n * @ignore\n */\nfunction Op(fn, len, val) {\n\n /**\n * Function to call.\n * @type {function(Uint8Array, number, *)}\n */\n this.fn = fn;\n\n /**\n * Value byte length.\n * @type {number}\n */\n this.len = len;\n\n /**\n * Next operation.\n * @type {Writer.Op|undefined}\n */\n this.next = undefined;\n\n /**\n * Value to write.\n * @type {*}\n */\n this.val = val; // type varies\n}\n\n/* istanbul ignore next */\nfunction noop() {} // eslint-disable-line no-empty-function\n\n/**\n * Constructs a new writer state instance.\n * @classdesc Copied writer state.\n * @memberof Writer\n * @constructor\n * @param {Writer} writer Writer to copy state from\n * @ignore\n */\nfunction State(writer) {\n\n /**\n * Current head.\n * @type {Writer.Op}\n */\n this.head = writer.head;\n\n /**\n * Current tail.\n * @type {Writer.Op}\n */\n this.tail = writer.tail;\n\n /**\n * Current buffer length.\n * @type {number}\n */\n this.len = writer.len;\n\n /**\n * Next state.\n * @type {State|null}\n */\n this.next = writer.states;\n}\n\n/**\n * Constructs a new writer instance.\n * @classdesc Wire format writer using `Uint8Array` if available, otherwise `Array`.\n * @constructor\n */\nfunction Writer() {\n\n /**\n * Current length.\n * @type {number}\n */\n this.len = 0;\n\n /**\n * Operations head.\n * @type {Object}\n */\n this.head = new Op(noop, 0, 0);\n\n /**\n * Operations tail\n * @type {Object}\n */\n this.tail = this.head;\n\n /**\n * Linked forked states.\n * @type {Object|null}\n */\n this.states = null;\n\n // When a value is written, the writer calculates its byte length and puts it into a linked\n // list of operations to perform when finish() is called. This both allows us to allocate\n // buffers of the exact required size and reduces the amount of work we have to do compared\n // to first calculating over objects and then encoding over objects. In our case, the encoding\n // part is just a linked list walk calling operations with already prepared values.\n}\n\nvar create = function create() {\n return util.Buffer\n ? function create_buffer_setup() {\n return (Writer.create = function create_buffer() {\n return new BufferWriter();\n })();\n }\n /* istanbul ignore next */\n : function create_array() {\n return new Writer();\n };\n};\n\n/**\n * Creates a new writer.\n * @function\n * @returns {BufferWriter|Writer} A {@link BufferWriter} when Buffers are supported, otherwise a {@link Writer}\n */\nWriter.create = create();\n\n/**\n * Allocates a buffer of the specified size.\n * @param {number} size Buffer size\n * @returns {Uint8Array} Buffer\n */\nWriter.alloc = function alloc(size) {\n return new util.Array(size);\n};\n\n// Use Uint8Array buffer pool in the browser, just like node does with buffers\n/* istanbul ignore else */\nif (util.Array !== Array)\n Writer.alloc = util.pool(Writer.alloc, util.Array.prototype.subarray);\n\n/**\n * Pushes a new operation to the queue.\n * @param {function(Uint8Array, number, *)} fn Function to call\n * @param {number} len Value byte length\n * @param {number} val Value to write\n * @returns {Writer} `this`\n * @private\n */\nWriter.prototype._push = function push(fn, len, val) {\n this.tail = this.tail.next = new Op(fn, len, val);\n this.len += len;\n return this;\n};\n\nfunction writeByte(val, buf, pos) {\n buf[pos] = val & 255;\n}\n\nfunction writeVarint32(val, buf, pos) {\n while (val > 127) {\n buf[pos++] = val & 127 | 128;\n val >>>= 7;\n }\n buf[pos] = val;\n}\n\n/**\n * Constructs a new varint writer operation instance.\n * @classdesc Scheduled varint writer operation.\n * @extends Op\n * @constructor\n * @param {number} len Value byte length\n * @param {number} val Value to write\n * @ignore\n */\nfunction VarintOp(len, val) {\n this.len = len;\n this.next = undefined;\n this.val = val;\n}\n\nVarintOp.prototype = Object.create(Op.prototype);\nVarintOp.prototype.fn = writeVarint32;\n\n/**\n * Writes an unsigned 32 bit value as a varint.\n * @param {number} value Value to write\n * @returns {Writer} `this`\n */\nWriter.prototype.uint32 = function write_uint32(value) {\n // here, the call to this.push has been inlined and a varint specific Op subclass is used.\n // uint32 is by far the most frequently used operation and benefits significantly from this.\n this.len += (this.tail = this.tail.next = new VarintOp(\n (value = value >>> 0)\n < 128 ? 1\n : value < 16384 ? 2\n : value < 2097152 ? 3\n : value < 268435456 ? 4\n : 5,\n value)).len;\n return this;\n};\n\n/**\n * Writes a signed 32 bit value as a varint.\n * @function\n * @param {number} value Value to write\n * @returns {Writer} `this`\n */\nWriter.prototype.int32 = function write_int32(value) {\n return value < 0\n ? this._push(writeVarint64, 10, LongBits.fromNumber(value)) // 10 bytes per spec\n : this.uint32(value);\n};\n\n/**\n * Writes a 32 bit value as a varint, zig-zag encoded.\n * @param {number} value Value to write\n * @returns {Writer} `this`\n */\nWriter.prototype.sint32 = function write_sint32(value) {\n return this.uint32((value << 1 ^ value >> 31) >>> 0);\n};\n\nfunction writeVarint64(val, buf, pos) {\n while (val.hi) {\n buf[pos++] = val.lo & 127 | 128;\n val.lo = (val.lo >>> 7 | val.hi << 25) >>> 0;\n val.hi >>>= 7;\n }\n while (val.lo > 127) {\n buf[pos++] = val.lo & 127 | 128;\n val.lo = val.lo >>> 7;\n }\n buf[pos++] = val.lo;\n}\n\n/**\n * Writes an unsigned 64 bit value as a varint.\n * @param {Long|number|string} value Value to write\n * @returns {Writer} `this`\n * @throws {TypeError} If `value` is a string and no long library is present.\n */\nWriter.prototype.uint64 = function write_uint64(value) {\n var bits = LongBits.from(value);\n return this._push(writeVarint64, bits.length(), bits);\n};\n\n/**\n * Writes a signed 64 bit value as a varint.\n * @function\n * @param {Long|number|string} value Value to write\n * @returns {Writer} `this`\n * @throws {TypeError} If `value` is a string and no long library is present.\n */\nWriter.prototype.int64 = Writer.prototype.uint64;\n\n/**\n * Writes a signed 64 bit value as a varint, zig-zag encoded.\n * @param {Long|number|string} value Value to write\n * @returns {Writer} `this`\n * @throws {TypeError} If `value` is a string and no long library is present.\n */\nWriter.prototype.sint64 = function write_sint64(value) {\n var bits = LongBits.from(value).zzEncode();\n return this._push(writeVarint64, bits.length(), bits);\n};\n\n/**\n * Writes a boolish value as a varint.\n * @param {boolean} value Value to write\n * @returns {Writer} `this`\n */\nWriter.prototype.bool = function write_bool(value) {\n return this._push(writeByte, 1, value ? 1 : 0);\n};\n\nfunction writeFixed32(val, buf, pos) {\n buf[pos ] = val & 255;\n buf[pos + 1] = val >>> 8 & 255;\n buf[pos + 2] = val >>> 16 & 255;\n buf[pos + 3] = val >>> 24;\n}\n\n/**\n * Writes an unsigned 32 bit value as fixed 32 bits.\n * @param {number} value Value to write\n * @returns {Writer} `this`\n */\nWriter.prototype.fixed32 = function write_fixed32(value) {\n return this._push(writeFixed32, 4, value >>> 0);\n};\n\n/**\n * Writes a signed 32 bit value as fixed 32 bits.\n * @function\n * @param {number} value Value to write\n * @returns {Writer} `this`\n */\nWriter.prototype.sfixed32 = Writer.prototype.fixed32;\n\n/**\n * Writes an unsigned 64 bit value as fixed 64 bits.\n * @param {Long|number|string} value Value to write\n * @returns {Writer} `this`\n * @throws {TypeError} If `value` is a string and no long library is present.\n */\nWriter.prototype.fixed64 = function write_fixed64(value) {\n var bits = LongBits.from(value);\n return this._push(writeFixed32, 4, bits.lo)._push(writeFixed32, 4, bits.hi);\n};\n\n/**\n * Writes a signed 64 bit value as fixed 64 bits.\n * @function\n * @param {Long|number|string} value Value to write\n * @returns {Writer} `this`\n * @throws {TypeError} If `value` is a string and no long library is present.\n */\nWriter.prototype.sfixed64 = Writer.prototype.fixed64;\n\n/**\n * Writes a float (32 bit).\n * @function\n * @param {number} value Value to write\n * @returns {Writer} `this`\n */\nWriter.prototype.float = function write_float(value) {\n return this._push(util.float.writeFloatLE, 4, value);\n};\n\n/**\n * Writes a double (64 bit float).\n * @function\n * @param {number} value Value to write\n * @returns {Writer} `this`\n */\nWriter.prototype.double = function write_double(value) {\n return this._push(util.float.writeDoubleLE, 8, value);\n};\n\nvar writeBytes = util.Array.prototype.set\n ? function writeBytes_set(val, buf, pos) {\n buf.set(val, pos); // also works for plain array values\n }\n /* istanbul ignore next */\n : function writeBytes_for(val, buf, pos) {\n for (var i = 0; i < val.length; ++i)\n buf[pos + i] = val[i];\n };\n\n/**\n * Writes a sequence of bytes.\n * @param {Uint8Array|string} value Buffer or base64 encoded string to write\n * @returns {Writer} `this`\n */\nWriter.prototype.bytes = function write_bytes(value) {\n var len = value.length >>> 0;\n if (!len)\n return this._push(writeByte, 1, 0);\n if (util.isString(value)) {\n var buf = Writer.alloc(len = base64.length(value));\n base64.decode(value, buf, 0);\n value = buf;\n }\n return this.uint32(len)._push(writeBytes, len, value);\n};\n\n/**\n * Writes a string.\n * @param {string} value Value to write\n * @returns {Writer} `this`\n */\nWriter.prototype.string = function write_string(value) {\n var len = utf8.length(value);\n return len\n ? this.uint32(len)._push(utf8.write, len, value)\n : this._push(writeByte, 1, 0);\n};\n\n/**\n * Forks this writer's state by pushing it to a stack.\n * Calling {@link Writer#reset|reset} or {@link Writer#ldelim|ldelim} resets the writer to the previous state.\n * @returns {Writer} `this`\n */\nWriter.prototype.fork = function fork() {\n this.states = new State(this);\n this.head = this.tail = new Op(noop, 0, 0);\n this.len = 0;\n return this;\n};\n\n/**\n * Resets this instance to the last state.\n * @returns {Writer} `this`\n */\nWriter.prototype.reset = function reset() {\n if (this.states) {\n this.head = this.states.head;\n this.tail = this.states.tail;\n this.len = this.states.len;\n this.states = this.states.next;\n } else {\n this.head = this.tail = new Op(noop, 0, 0);\n this.len = 0;\n }\n return this;\n};\n\n/**\n * Resets to the last state and appends the fork state's current write length as a varint followed by its operations.\n * @returns {Writer} `this`\n */\nWriter.prototype.ldelim = function ldelim() {\n var head = this.head,\n tail = this.tail,\n len = this.len;\n this.reset().uint32(len);\n if (len) {\n this.tail.next = head.next; // skip noop\n this.tail = tail;\n this.len += len;\n }\n return this;\n};\n\n/**\n * Finishes the write operation.\n * @returns {Uint8Array} Finished buffer\n */\nWriter.prototype.finish = function finish() {\n var head = this.head.next, // skip noop\n buf = this.constructor.alloc(this.len),\n pos = 0;\n while (head) {\n head.fn(head.val, buf, pos);\n pos += head.len;\n head = head.next;\n }\n // this.head = this.tail = null;\n return buf;\n};\n\nWriter._configure = function(BufferWriter_) {\n BufferWriter = BufferWriter_;\n Writer.create = create();\n BufferWriter._configure();\n};\n","\"use strict\";\nmodule.exports = BufferWriter;\n\n// extends Writer\nvar Writer = require(\"./writer\");\n(BufferWriter.prototype = Object.create(Writer.prototype)).constructor = BufferWriter;\n\nvar util = require(\"./util/minimal\");\n\n/**\n * Constructs a new buffer writer instance.\n * @classdesc Wire format writer using node buffers.\n * @extends Writer\n * @constructor\n */\nfunction BufferWriter() {\n Writer.call(this);\n}\n\nBufferWriter._configure = function () {\n /**\n * Allocates a buffer of the specified size.\n * @function\n * @param {number} size Buffer size\n * @returns {Buffer} Buffer\n */\n BufferWriter.alloc = util._Buffer_allocUnsafe;\n\n BufferWriter.writeBytesBuffer = util.Buffer && util.Buffer.prototype instanceof Uint8Array && util.Buffer.prototype.set.name === \"set\"\n ? function writeBytesBuffer_set(val, buf, pos) {\n buf.set(val, pos); // faster than copy (requires node >= 4 where Buffers extend Uint8Array and set is properly inherited)\n // also works for plain array values\n }\n /* istanbul ignore next */\n : function writeBytesBuffer_copy(val, buf, pos) {\n if (val.copy) // Buffer values\n val.copy(buf, pos, 0, val.length);\n else for (var i = 0; i < val.length;) // plain array values\n buf[pos++] = val[i++];\n };\n};\n\n\n/**\n * @override\n */\nBufferWriter.prototype.bytes = function write_bytes_buffer(value) {\n if (util.isString(value))\n value = util._Buffer_from(value, \"base64\");\n var len = value.length >>> 0;\n this.uint32(len);\n if (len)\n this._push(BufferWriter.writeBytesBuffer, len, value);\n return this;\n};\n\nfunction writeStringBuffer(val, buf, pos) {\n if (val.length < 40) // plain js is faster for short strings (probably due to redundant assertions)\n util.utf8.write(val, buf, pos);\n else if (buf.utf8Write)\n buf.utf8Write(val, pos);\n else\n buf.write(val, pos);\n}\n\n/**\n * @override\n */\nBufferWriter.prototype.string = function write_string_buffer(value) {\n var len = util.Buffer.byteLength(value);\n this.uint32(len);\n if (len)\n this._push(writeStringBuffer, len, value);\n return this;\n};\n\n\n/**\n * Finishes the write operation.\n * @name BufferWriter#finish\n * @function\n * @returns {Buffer} Finished buffer\n */\n\nBufferWriter._configure();\n","const ANY = Symbol('SemVer ANY')\n// hoisted class for cyclic dependency\nclass Comparator {\n static get ANY () {\n return ANY\n }\n\n constructor (comp, options) {\n options = parseOptions(options)\n\n if (comp instanceof Comparator) {\n if (comp.loose === !!options.loose) {\n return comp\n } else {\n comp = comp.value\n }\n }\n\n debug('comparator', comp, options)\n this.options = options\n this.loose = !!options.loose\n this.parse(comp)\n\n if (this.semver === ANY) {\n this.value = ''\n } else {\n this.value = this.operator + this.semver.version\n }\n\n debug('comp', this)\n }\n\n parse (comp) {\n const r = this.options.loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR]\n const m = comp.match(r)\n\n if (!m) {\n throw new TypeError(`Invalid comparator: ${comp}`)\n }\n\n this.operator = m[1] !== undefined ? m[1] : ''\n if (this.operator === '=') {\n this.operator = ''\n }\n\n // if it literally is just '>' or '' then allow anything.\n if (!m[2]) {\n this.semver = ANY\n } else {\n this.semver = new SemVer(m[2], this.options.loose)\n }\n }\n\n toString () {\n return this.value\n }\n\n test (version) {\n debug('Comparator.test', version, this.options.loose)\n\n if (this.semver === ANY || version === ANY) {\n return true\n }\n\n if (typeof version === 'string') {\n try {\n version = new SemVer(version, this.options)\n } catch (er) {\n return false\n }\n }\n\n return cmp(version, this.operator, this.semver, this.options)\n }\n\n intersects (comp, options) {\n if (!(comp instanceof Comparator)) {\n throw new TypeError('a Comparator is required')\n }\n\n if (!options || typeof options !== 'object') {\n options = {\n loose: !!options,\n includePrerelease: false,\n }\n }\n\n if (this.operator === '') {\n if (this.value === '') {\n return true\n }\n return new Range(comp.value, options).test(this.value)\n } else if (comp.operator === '') {\n if (comp.value === '') {\n return true\n }\n return new Range(this.value, options).test(comp.semver)\n }\n\n const sameDirectionIncreasing =\n (this.operator === '>=' || this.operator === '>') &&\n (comp.operator === '>=' || comp.operator === '>')\n const sameDirectionDecreasing =\n (this.operator === '<=' || this.operator === '<') &&\n (comp.operator === '<=' || comp.operator === '<')\n const sameSemVer = this.semver.version === comp.semver.version\n const differentDirectionsInclusive =\n (this.operator === '>=' || this.operator === '<=') &&\n (comp.operator === '>=' || comp.operator === '<=')\n const oppositeDirectionsLessThan =\n cmp(this.semver, '<', comp.semver, options) &&\n (this.operator === '>=' || this.operator === '>') &&\n (comp.operator === '<=' || comp.operator === '<')\n const oppositeDirectionsGreaterThan =\n cmp(this.semver, '>', comp.semver, options) &&\n (this.operator === '<=' || this.operator === '<') &&\n (comp.operator === '>=' || comp.operator === '>')\n\n return (\n sameDirectionIncreasing ||\n sameDirectionDecreasing ||\n (sameSemVer && differentDirectionsInclusive) ||\n oppositeDirectionsLessThan ||\n oppositeDirectionsGreaterThan\n )\n }\n}\n\nmodule.exports = Comparator\n\nconst parseOptions = require('../internal/parse-options')\nconst { re, t } = require('../internal/re')\nconst cmp = require('../functions/cmp')\nconst debug = require('../internal/debug')\nconst SemVer = require('./semver')\nconst Range = require('./range')\n","// hoisted class for cyclic dependency\nclass Range {\n constructor (range, options) {\n options = parseOptions(options)\n\n if (range instanceof Range) {\n if (\n range.loose === !!options.loose &&\n range.includePrerelease === !!options.includePrerelease\n ) {\n return range\n } else {\n return new Range(range.raw, options)\n }\n }\n\n if (range instanceof Comparator) {\n // just put it in the set and return\n this.raw = range.value\n this.set = [[range]]\n this.format()\n return this\n }\n\n this.options = options\n this.loose = !!options.loose\n this.includePrerelease = !!options.includePrerelease\n\n // First, split based on boolean or ||\n this.raw = range\n this.set = range\n .split('||')\n // map the range to a 2d array of comparators\n .map(r => this.parseRange(r.trim()))\n // throw out any comparator lists that are empty\n // this generally means that it was not a valid range, which is allowed\n // in loose mode, but will still throw if the WHOLE range is invalid.\n .filter(c => c.length)\n\n if (!this.set.length) {\n throw new TypeError(`Invalid SemVer Range: ${range}`)\n }\n\n // if we have any that are not the null set, throw out null sets.\n if (this.set.length > 1) {\n // keep the first one, in case they're all null sets\n const first = this.set[0]\n this.set = this.set.filter(c => !isNullSet(c[0]))\n if (this.set.length === 0) {\n this.set = [first]\n } else if (this.set.length > 1) {\n // if we have any that are *, then the range is just *\n for (const c of this.set) {\n if (c.length === 1 && isAny(c[0])) {\n this.set = [c]\n break\n }\n }\n }\n }\n\n this.format()\n }\n\n format () {\n this.range = this.set\n .map((comps) => {\n return comps.join(' ').trim()\n })\n .join('||')\n .trim()\n return this.range\n }\n\n toString () {\n return this.range\n }\n\n parseRange (range) {\n range = range.trim()\n\n // memoize range parsing for performance.\n // this is a very hot path, and fully deterministic.\n const memoOpts = Object.keys(this.options).join(',')\n const memoKey = `parseRange:${memoOpts}:${range}`\n const cached = cache.get(memoKey)\n if (cached) {\n return cached\n }\n\n const loose = this.options.loose\n // `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4`\n const hr = loose ? re[t.HYPHENRANGELOOSE] : re[t.HYPHENRANGE]\n range = range.replace(hr, hyphenReplace(this.options.includePrerelease))\n debug('hyphen replace', range)\n // `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5`\n range = range.replace(re[t.COMPARATORTRIM], comparatorTrimReplace)\n debug('comparator trim', range)\n\n // `~ 1.2.3` => `~1.2.3`\n range = range.replace(re[t.TILDETRIM], tildeTrimReplace)\n\n // `^ 1.2.3` => `^1.2.3`\n range = range.replace(re[t.CARETTRIM], caretTrimReplace)\n\n // normalize spaces\n range = range.split(/\\s+/).join(' ')\n\n // At this point, the range is completely trimmed and\n // ready to be split into comparators.\n\n let rangeList = range\n .split(' ')\n .map(comp => parseComparator(comp, this.options))\n .join(' ')\n .split(/\\s+/)\n // >=0.0.0 is equivalent to *\n .map(comp => replaceGTE0(comp, this.options))\n\n if (loose) {\n // in loose mode, throw out any that are not valid comparators\n rangeList = rangeList.filter(comp => {\n debug('loose invalid filter', comp, this.options)\n return !!comp.match(re[t.COMPARATORLOOSE])\n })\n }\n debug('range list', rangeList)\n\n // if any comparators are the null set, then replace with JUST null set\n // if more than one comparator, remove any * comparators\n // also, don't include the same comparator more than once\n const rangeMap = new Map()\n const comparators = rangeList.map(comp => new Comparator(comp, this.options))\n for (const comp of comparators) {\n if (isNullSet(comp)) {\n return [comp]\n }\n rangeMap.set(comp.value, comp)\n }\n if (rangeMap.size > 1 && rangeMap.has('')) {\n rangeMap.delete('')\n }\n\n const result = [...rangeMap.values()]\n cache.set(memoKey, result)\n return result\n }\n\n intersects (range, options) {\n if (!(range instanceof Range)) {\n throw new TypeError('a Range is required')\n }\n\n return this.set.some((thisComparators) => {\n return (\n isSatisfiable(thisComparators, options) &&\n range.set.some((rangeComparators) => {\n return (\n isSatisfiable(rangeComparators, options) &&\n thisComparators.every((thisComparator) => {\n return rangeComparators.every((rangeComparator) => {\n return thisComparator.intersects(rangeComparator, options)\n })\n })\n )\n })\n )\n })\n }\n\n // if ANY of the sets match ALL of its comparators, then pass\n test (version) {\n if (!version) {\n return false\n }\n\n if (typeof version === 'string') {\n try {\n version = new SemVer(version, this.options)\n } catch (er) {\n return false\n }\n }\n\n for (let i = 0; i < this.set.length; i++) {\n if (testSet(this.set[i], version, this.options)) {\n return true\n }\n }\n return false\n }\n}\nmodule.exports = Range\n\nconst LRU = require('lru-cache')\nconst cache = new LRU({ max: 1000 })\n\nconst parseOptions = require('../internal/parse-options')\nconst Comparator = require('./comparator')\nconst debug = require('../internal/debug')\nconst SemVer = require('./semver')\nconst {\n re,\n t,\n comparatorTrimReplace,\n tildeTrimReplace,\n caretTrimReplace,\n} = require('../internal/re')\n\nconst isNullSet = c => c.value === '<0.0.0-0'\nconst isAny = c => c.value === ''\n\n// take a set of comparators and determine whether there\n// exists a version which can satisfy it\nconst isSatisfiable = (comparators, options) => {\n let result = true\n const remainingComparators = comparators.slice()\n let testComparator = remainingComparators.pop()\n\n while (result && remainingComparators.length) {\n result = remainingComparators.every((otherComparator) => {\n return testComparator.intersects(otherComparator, options)\n })\n\n testComparator = remainingComparators.pop()\n }\n\n return result\n}\n\n// comprised of xranges, tildes, stars, and gtlt's at this point.\n// already replaced the hyphen ranges\n// turn into a set of JUST comparators.\nconst parseComparator = (comp, options) => {\n debug('comp', comp, options)\n comp = replaceCarets(comp, options)\n debug('caret', comp)\n comp = replaceTildes(comp, options)\n debug('tildes', comp)\n comp = replaceXRanges(comp, options)\n debug('xrange', comp)\n comp = replaceStars(comp, options)\n debug('stars', comp)\n return comp\n}\n\nconst isX = id => !id || id.toLowerCase() === 'x' || id === '*'\n\n// ~, ~> --> * (any, kinda silly)\n// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0-0\n// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0-0\n// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0-0\n// ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0-0\n// ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0-0\nconst replaceTildes = (comp, options) =>\n comp.trim().split(/\\s+/).map((c) => {\n return replaceTilde(c, options)\n }).join(' ')\n\nconst replaceTilde = (comp, options) => {\n const r = options.loose ? re[t.TILDELOOSE] : re[t.TILDE]\n return comp.replace(r, (_, M, m, p, pr) => {\n debug('tilde', comp, _, M, m, p, pr)\n let ret\n\n if (isX(M)) {\n ret = ''\n } else if (isX(m)) {\n ret = `>=${M}.0.0 <${+M + 1}.0.0-0`\n } else if (isX(p)) {\n // ~1.2 == >=1.2.0 <1.3.0-0\n ret = `>=${M}.${m}.0 <${M}.${+m + 1}.0-0`\n } else if (pr) {\n debug('replaceTilde pr', pr)\n ret = `>=${M}.${m}.${p}-${pr\n } <${M}.${+m + 1}.0-0`\n } else {\n // ~1.2.3 == >=1.2.3 <1.3.0-0\n ret = `>=${M}.${m}.${p\n } <${M}.${+m + 1}.0-0`\n }\n\n debug('tilde return', ret)\n return ret\n })\n}\n\n// ^ --> * (any, kinda silly)\n// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0-0\n// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0-0\n// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0-0\n// ^1.2.3 --> >=1.2.3 <2.0.0-0\n// ^1.2.0 --> >=1.2.0 <2.0.0-0\nconst replaceCarets = (comp, options) =>\n comp.trim().split(/\\s+/).map((c) => {\n return replaceCaret(c, options)\n }).join(' ')\n\nconst replaceCaret = (comp, options) => {\n debug('caret', comp, options)\n const r = options.loose ? re[t.CARETLOOSE] : re[t.CARET]\n const z = options.includePrerelease ? '-0' : ''\n return comp.replace(r, (_, M, m, p, pr) => {\n debug('caret', comp, _, M, m, p, pr)\n let ret\n\n if (isX(M)) {\n ret = ''\n } else if (isX(m)) {\n ret = `>=${M}.0.0${z} <${+M + 1}.0.0-0`\n } else if (isX(p)) {\n if (M === '0') {\n ret = `>=${M}.${m}.0${z} <${M}.${+m + 1}.0-0`\n } else {\n ret = `>=${M}.${m}.0${z} <${+M + 1}.0.0-0`\n }\n } else if (pr) {\n debug('replaceCaret pr', pr)\n if (M === '0') {\n if (m === '0') {\n ret = `>=${M}.${m}.${p}-${pr\n } <${M}.${m}.${+p + 1}-0`\n } else {\n ret = `>=${M}.${m}.${p}-${pr\n } <${M}.${+m + 1}.0-0`\n }\n } else {\n ret = `>=${M}.${m}.${p}-${pr\n } <${+M + 1}.0.0-0`\n }\n } else {\n debug('no pr')\n if (M === '0') {\n if (m === '0') {\n ret = `>=${M}.${m}.${p\n }${z} <${M}.${m}.${+p + 1}-0`\n } else {\n ret = `>=${M}.${m}.${p\n }${z} <${M}.${+m + 1}.0-0`\n }\n } else {\n ret = `>=${M}.${m}.${p\n } <${+M + 1}.0.0-0`\n }\n }\n\n debug('caret return', ret)\n return ret\n })\n}\n\nconst replaceXRanges = (comp, options) => {\n debug('replaceXRanges', comp, options)\n return comp.split(/\\s+/).map((c) => {\n return replaceXRange(c, options)\n }).join(' ')\n}\n\nconst replaceXRange = (comp, options) => {\n comp = comp.trim()\n const r = options.loose ? re[t.XRANGELOOSE] : re[t.XRANGE]\n return comp.replace(r, (ret, gtlt, M, m, p, pr) => {\n debug('xRange', comp, ret, gtlt, M, m, p, pr)\n const xM = isX(M)\n const xm = xM || isX(m)\n const xp = xm || isX(p)\n const anyX = xp\n\n if (gtlt === '=' && anyX) {\n gtlt = ''\n }\n\n // if we're including prereleases in the match, then we need\n // to fix this to -0, the lowest possible prerelease value\n pr = options.includePrerelease ? '-0' : ''\n\n if (xM) {\n if (gtlt === '>' || gtlt === '<') {\n // nothing is allowed\n ret = '<0.0.0-0'\n } else {\n // nothing is forbidden\n ret = '*'\n }\n } else if (gtlt && anyX) {\n // we know patch is an x, because we have any x at all.\n // replace X with 0\n if (xm) {\n m = 0\n }\n p = 0\n\n if (gtlt === '>') {\n // >1 => >=2.0.0\n // >1.2 => >=1.3.0\n gtlt = '>='\n if (xm) {\n M = +M + 1\n m = 0\n p = 0\n } else {\n m = +m + 1\n p = 0\n }\n } else if (gtlt === '<=') {\n // <=0.7.x is actually <0.8.0, since any 0.7.x should\n // pass. Similarly, <=7.x is actually <8.0.0, etc.\n gtlt = '<'\n if (xm) {\n M = +M + 1\n } else {\n m = +m + 1\n }\n }\n\n if (gtlt === '<') {\n pr = '-0'\n }\n\n ret = `${gtlt + M}.${m}.${p}${pr}`\n } else if (xm) {\n ret = `>=${M}.0.0${pr} <${+M + 1}.0.0-0`\n } else if (xp) {\n ret = `>=${M}.${m}.0${pr\n } <${M}.${+m + 1}.0-0`\n }\n\n debug('xRange return', ret)\n\n return ret\n })\n}\n\n// Because * is AND-ed with everything else in the comparator,\n// and '' means \"any version\", just remove the *s entirely.\nconst replaceStars = (comp, options) => {\n debug('replaceStars', comp, options)\n // Looseness is ignored here. star is always as loose as it gets!\n return comp.trim().replace(re[t.STAR], '')\n}\n\nconst replaceGTE0 = (comp, options) => {\n debug('replaceGTE0', comp, options)\n return comp.trim()\n .replace(re[options.includePrerelease ? t.GTE0PRE : t.GTE0], '')\n}\n\n// This function is passed to string.replace(re[t.HYPHENRANGE])\n// M, m, patch, prerelease, build\n// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5\n// 1.2.3 - 3.4 => >=1.2.0 <3.5.0-0 Any 3.4.x will do\n// 1.2 - 3.4 => >=1.2.0 <3.5.0-0\nconst hyphenReplace = incPr => ($0,\n from, fM, fm, fp, fpr, fb,\n to, tM, tm, tp, tpr, tb) => {\n if (isX(fM)) {\n from = ''\n } else if (isX(fm)) {\n from = `>=${fM}.0.0${incPr ? '-0' : ''}`\n } else if (isX(fp)) {\n from = `>=${fM}.${fm}.0${incPr ? '-0' : ''}`\n } else if (fpr) {\n from = `>=${from}`\n } else {\n from = `>=${from}${incPr ? '-0' : ''}`\n }\n\n if (isX(tM)) {\n to = ''\n } else if (isX(tm)) {\n to = `<${+tM + 1}.0.0-0`\n } else if (isX(tp)) {\n to = `<${tM}.${+tm + 1}.0-0`\n } else if (tpr) {\n to = `<=${tM}.${tm}.${tp}-${tpr}`\n } else if (incPr) {\n to = `<${tM}.${tm}.${+tp + 1}-0`\n } else {\n to = `<=${to}`\n }\n\n return (`${from} ${to}`).trim()\n}\n\nconst testSet = (set, version, options) => {\n for (let i = 0; i < set.length; i++) {\n if (!set[i].test(version)) {\n return false\n }\n }\n\n if (version.prerelease.length && !options.includePrerelease) {\n // Find the set of versions that are allowed to have prereleases\n // For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0\n // That should allow `1.2.3-pr.2` to pass.\n // However, `1.2.4-alpha.notready` should NOT be allowed,\n // even though it's within the range set by the comparators.\n for (let i = 0; i < set.length; i++) {\n debug(set[i].semver)\n if (set[i].semver === Comparator.ANY) {\n continue\n }\n\n if (set[i].semver.prerelease.length > 0) {\n const allowed = set[i].semver\n if (allowed.major === version.major &&\n allowed.minor === version.minor &&\n allowed.patch === version.patch) {\n return true\n }\n }\n }\n\n // Version has a -pre, but it's not one of the ones we like.\n return false\n }\n\n return true\n}\n","const debug = require('../internal/debug')\nconst { MAX_LENGTH, MAX_SAFE_INTEGER } = require('../internal/constants')\nconst { re, t } = require('../internal/re')\n\nconst parseOptions = require('../internal/parse-options')\nconst { compareIdentifiers } = require('../internal/identifiers')\nclass SemVer {\n constructor (version, options) {\n options = parseOptions(options)\n\n if (version instanceof SemVer) {\n if (version.loose === !!options.loose &&\n version.includePrerelease === !!options.includePrerelease) {\n return version\n } else {\n version = version.version\n }\n } else if (typeof version !== 'string') {\n throw new TypeError(`Invalid Version: ${version}`)\n }\n\n if (version.length > MAX_LENGTH) {\n throw new TypeError(\n `version is longer than ${MAX_LENGTH} characters`\n )\n }\n\n debug('SemVer', version, options)\n this.options = options\n this.loose = !!options.loose\n // this isn't actually relevant for versions, but keep it so that we\n // don't run into trouble passing this.options around.\n this.includePrerelease = !!options.includePrerelease\n\n const m = version.trim().match(options.loose ? re[t.LOOSE] : re[t.FULL])\n\n if (!m) {\n throw new TypeError(`Invalid Version: ${version}`)\n }\n\n this.raw = version\n\n // these are actually numbers\n this.major = +m[1]\n this.minor = +m[2]\n this.patch = +m[3]\n\n if (this.major > MAX_SAFE_INTEGER || this.major < 0) {\n throw new TypeError('Invalid major version')\n }\n\n if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {\n throw new TypeError('Invalid minor version')\n }\n\n if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {\n throw new TypeError('Invalid patch version')\n }\n\n // numberify any prerelease numeric ids\n if (!m[4]) {\n this.prerelease = []\n } else {\n this.prerelease = m[4].split('.').map((id) => {\n if (/^[0-9]+$/.test(id)) {\n const num = +id\n if (num >= 0 && num < MAX_SAFE_INTEGER) {\n return num\n }\n }\n return id\n })\n }\n\n this.build = m[5] ? m[5].split('.') : []\n this.format()\n }\n\n format () {\n this.version = `${this.major}.${this.minor}.${this.patch}`\n if (this.prerelease.length) {\n this.version += `-${this.prerelease.join('.')}`\n }\n return this.version\n }\n\n toString () {\n return this.version\n }\n\n compare (other) {\n debug('SemVer.compare', this.version, this.options, other)\n if (!(other instanceof SemVer)) {\n if (typeof other === 'string' && other === this.version) {\n return 0\n }\n other = new SemVer(other, this.options)\n }\n\n if (other.version === this.version) {\n return 0\n }\n\n return this.compareMain(other) || this.comparePre(other)\n }\n\n compareMain (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n return (\n compareIdentifiers(this.major, other.major) ||\n compareIdentifiers(this.minor, other.minor) ||\n compareIdentifiers(this.patch, other.patch)\n )\n }\n\n comparePre (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n // NOT having a prerelease is > having one\n if (this.prerelease.length && !other.prerelease.length) {\n return -1\n } else if (!this.prerelease.length && other.prerelease.length) {\n return 1\n } else if (!this.prerelease.length && !other.prerelease.length) {\n return 0\n }\n\n let i = 0\n do {\n const a = this.prerelease[i]\n const b = other.prerelease[i]\n debug('prerelease compare', i, a, b)\n if (a === undefined && b === undefined) {\n return 0\n } else if (b === undefined) {\n return 1\n } else if (a === undefined) {\n return -1\n } else if (a === b) {\n continue\n } else {\n return compareIdentifiers(a, b)\n }\n } while (++i)\n }\n\n compareBuild (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n let i = 0\n do {\n const a = this.build[i]\n const b = other.build[i]\n debug('prerelease compare', i, a, b)\n if (a === undefined && b === undefined) {\n return 0\n } else if (b === undefined) {\n return 1\n } else if (a === undefined) {\n return -1\n } else if (a === b) {\n continue\n } else {\n return compareIdentifiers(a, b)\n }\n } while (++i)\n }\n\n // preminor will bump the version up to the next minor release, and immediately\n // down to pre-release. premajor and prepatch work the same way.\n inc (release, identifier) {\n switch (release) {\n case 'premajor':\n this.prerelease.length = 0\n this.patch = 0\n this.minor = 0\n this.major++\n this.inc('pre', identifier)\n break\n case 'preminor':\n this.prerelease.length = 0\n this.patch = 0\n this.minor++\n this.inc('pre', identifier)\n break\n case 'prepatch':\n // If this is already a prerelease, it will bump to the next version\n // drop any prereleases that might already exist, since they are not\n // relevant at this point.\n this.prerelease.length = 0\n this.inc('patch', identifier)\n this.inc('pre', identifier)\n break\n // If the input is a non-prerelease version, this acts the same as\n // prepatch.\n case 'prerelease':\n if (this.prerelease.length === 0) {\n this.inc('patch', identifier)\n }\n this.inc('pre', identifier)\n break\n\n case 'major':\n // If this is a pre-major version, bump up to the same major version.\n // Otherwise increment major.\n // 1.0.0-5 bumps to 1.0.0\n // 1.1.0 bumps to 2.0.0\n if (\n this.minor !== 0 ||\n this.patch !== 0 ||\n this.prerelease.length === 0\n ) {\n this.major++\n }\n this.minor = 0\n this.patch = 0\n this.prerelease = []\n break\n case 'minor':\n // If this is a pre-minor version, bump up to the same minor version.\n // Otherwise increment minor.\n // 1.2.0-5 bumps to 1.2.0\n // 1.2.1 bumps to 1.3.0\n if (this.patch !== 0 || this.prerelease.length === 0) {\n this.minor++\n }\n this.patch = 0\n this.prerelease = []\n break\n case 'patch':\n // If this is not a pre-release version, it will increment the patch.\n // If it is a pre-release it will bump up to the same patch version.\n // 1.2.0-5 patches to 1.2.0\n // 1.2.0 patches to 1.2.1\n if (this.prerelease.length === 0) {\n this.patch++\n }\n this.prerelease = []\n break\n // This probably shouldn't be used publicly.\n // 1.0.0 'pre' would become 1.0.0-0 which is the wrong direction.\n case 'pre':\n if (this.prerelease.length === 0) {\n this.prerelease = [0]\n } else {\n let i = this.prerelease.length\n while (--i >= 0) {\n if (typeof this.prerelease[i] === 'number') {\n this.prerelease[i]++\n i = -2\n }\n }\n if (i === -1) {\n // didn't increment anything\n this.prerelease.push(0)\n }\n }\n if (identifier) {\n // 1.2.0-beta.1 bumps to 1.2.0-beta.2,\n // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0\n if (compareIdentifiers(this.prerelease[0], identifier) === 0) {\n if (isNaN(this.prerelease[1])) {\n this.prerelease = [identifier, 0]\n }\n } else {\n this.prerelease = [identifier, 0]\n }\n }\n break\n\n default:\n throw new Error(`invalid increment argument: ${release}`)\n }\n this.format()\n this.raw = this.version\n return this\n }\n}\n\nmodule.exports = SemVer\n","const parse = require('./parse')\nconst clean = (version, options) => {\n const s = parse(version.trim().replace(/^[=v]+/, ''), options)\n return s ? s.version : null\n}\nmodule.exports = clean\n","const eq = require('./eq')\nconst neq = require('./neq')\nconst gt = require('./gt')\nconst gte = require('./gte')\nconst lt = require('./lt')\nconst lte = require('./lte')\n\nconst cmp = (a, op, b, loose) => {\n switch (op) {\n case '===':\n if (typeof a === 'object') {\n a = a.version\n }\n if (typeof b === 'object') {\n b = b.version\n }\n return a === b\n\n case '!==':\n if (typeof a === 'object') {\n a = a.version\n }\n if (typeof b === 'object') {\n b = b.version\n }\n return a !== b\n\n case '':\n case '=':\n case '==':\n return eq(a, b, loose)\n\n case '!=':\n return neq(a, b, loose)\n\n case '>':\n return gt(a, b, loose)\n\n case '>=':\n return gte(a, b, loose)\n\n case '<':\n return lt(a, b, loose)\n\n case '<=':\n return lte(a, b, loose)\n\n default:\n throw new TypeError(`Invalid operator: ${op}`)\n }\n}\nmodule.exports = cmp\n","const SemVer = require('../classes/semver')\nconst parse = require('./parse')\nconst { re, t } = require('../internal/re')\n\nconst coerce = (version, options) => {\n if (version instanceof SemVer) {\n return version\n }\n\n if (typeof version === 'number') {\n version = String(version)\n }\n\n if (typeof version !== 'string') {\n return null\n }\n\n options = options || {}\n\n let match = null\n if (!options.rtl) {\n match = version.match(re[t.COERCE])\n } else {\n // Find the right-most coercible string that does not share\n // a terminus with a more left-ward coercible string.\n // Eg, '1.2.3.4' wants to coerce '2.3.4', not '3.4' or '4'\n //\n // Walk through the string checking with a /g regexp\n // Manually set the index so as to pick up overlapping matches.\n // Stop when we get a match that ends at the string end, since no\n // coercible string can be more right-ward without the same terminus.\n let next\n while ((next = re[t.COERCERTL].exec(version)) &&\n (!match || match.index + match[0].length !== version.length)\n ) {\n if (!match ||\n next.index + next[0].length !== match.index + match[0].length) {\n match = next\n }\n re[t.COERCERTL].lastIndex = next.index + next[1].length + next[2].length\n }\n // leave it in a clean state\n re[t.COERCERTL].lastIndex = -1\n }\n\n if (match === null) {\n return null\n }\n\n return parse(`${match[2]}.${match[3] || '0'}.${match[4] || '0'}`, options)\n}\nmodule.exports = coerce\n","const SemVer = require('../classes/semver')\nconst compareBuild = (a, b, loose) => {\n const versionA = new SemVer(a, loose)\n const versionB = new SemVer(b, loose)\n return versionA.compare(versionB) || versionA.compareBuild(versionB)\n}\nmodule.exports = compareBuild\n","const compare = require('./compare')\nconst compareLoose = (a, b) => compare(a, b, true)\nmodule.exports = compareLoose\n","const SemVer = require('../classes/semver')\nconst compare = (a, b, loose) =>\n new SemVer(a, loose).compare(new SemVer(b, loose))\n\nmodule.exports = compare\n","const parse = require('./parse')\nconst eq = require('./eq')\n\nconst diff = (version1, version2) => {\n if (eq(version1, version2)) {\n return null\n } else {\n const v1 = parse(version1)\n const v2 = parse(version2)\n const hasPre = v1.prerelease.length || v2.prerelease.length\n const prefix = hasPre ? 'pre' : ''\n const defaultResult = hasPre ? 'prerelease' : ''\n for (const key in v1) {\n if (key === 'major' || key === 'minor' || key === 'patch') {\n if (v1[key] !== v2[key]) {\n return prefix + key\n }\n }\n }\n return defaultResult // may be undefined\n }\n}\nmodule.exports = diff\n","const compare = require('./compare')\nconst eq = (a, b, loose) => compare(a, b, loose) === 0\nmodule.exports = eq\n","const compare = require('./compare')\nconst gt = (a, b, loose) => compare(a, b, loose) > 0\nmodule.exports = gt\n","const compare = require('./compare')\nconst gte = (a, b, loose) => compare(a, b, loose) >= 0\nmodule.exports = gte\n","const SemVer = require('../classes/semver')\n\nconst inc = (version, release, options, identifier) => {\n if (typeof (options) === 'string') {\n identifier = options\n options = undefined\n }\n\n try {\n return new SemVer(\n version instanceof SemVer ? version.version : version,\n options\n ).inc(release, identifier).version\n } catch (er) {\n return null\n }\n}\nmodule.exports = inc\n","const compare = require('./compare')\nconst lt = (a, b, loose) => compare(a, b, loose) < 0\nmodule.exports = lt\n","const compare = require('./compare')\nconst lte = (a, b, loose) => compare(a, b, loose) <= 0\nmodule.exports = lte\n","const SemVer = require('../classes/semver')\nconst major = (a, loose) => new SemVer(a, loose).major\nmodule.exports = major\n","const SemVer = require('../classes/semver')\nconst minor = (a, loose) => new SemVer(a, loose).minor\nmodule.exports = minor\n","const compare = require('./compare')\nconst neq = (a, b, loose) => compare(a, b, loose) !== 0\nmodule.exports = neq\n","const { MAX_LENGTH } = require('../internal/constants')\nconst { re, t } = require('../internal/re')\nconst SemVer = require('../classes/semver')\n\nconst parseOptions = require('../internal/parse-options')\nconst parse = (version, options) => {\n options = parseOptions(options)\n\n if (version instanceof SemVer) {\n return version\n }\n\n if (typeof version !== 'string') {\n return null\n }\n\n if (version.length > MAX_LENGTH) {\n return null\n }\n\n const r = options.loose ? re[t.LOOSE] : re[t.FULL]\n if (!r.test(version)) {\n return null\n }\n\n try {\n return new SemVer(version, options)\n } catch (er) {\n return null\n }\n}\n\nmodule.exports = parse\n","const SemVer = require('../classes/semver')\nconst patch = (a, loose) => new SemVer(a, loose).patch\nmodule.exports = patch\n","const parse = require('./parse')\nconst prerelease = (version, options) => {\n const parsed = parse(version, options)\n return (parsed && parsed.prerelease.length) ? parsed.prerelease : null\n}\nmodule.exports = prerelease\n","const compare = require('./compare')\nconst rcompare = (a, b, loose) => compare(b, a, loose)\nmodule.exports = rcompare\n","const compareBuild = require('./compare-build')\nconst rsort = (list, loose) => list.sort((a, b) => compareBuild(b, a, loose))\nmodule.exports = rsort\n","const Range = require('../classes/range')\nconst satisfies = (version, range, options) => {\n try {\n range = new Range(range, options)\n } catch (er) {\n return false\n }\n return range.test(version)\n}\nmodule.exports = satisfies\n","const compareBuild = require('./compare-build')\nconst sort = (list, loose) => list.sort((a, b) => compareBuild(a, b, loose))\nmodule.exports = sort\n","const parse = require('./parse')\nconst valid = (version, options) => {\n const v = parse(version, options)\n return v ? v.version : null\n}\nmodule.exports = valid\n","// just pre-load all the stuff that index.js lazily exports\nconst internalRe = require('./internal/re')\nmodule.exports = {\n re: internalRe.re,\n src: internalRe.src,\n tokens: internalRe.t,\n SEMVER_SPEC_VERSION: require('./internal/constants').SEMVER_SPEC_VERSION,\n SemVer: require('./classes/semver'),\n compareIdentifiers: require('./internal/identifiers').compareIdentifiers,\n rcompareIdentifiers: require('./internal/identifiers').rcompareIdentifiers,\n parse: require('./functions/parse'),\n valid: require('./functions/valid'),\n clean: require('./functions/clean'),\n inc: require('./functions/inc'),\n diff: require('./functions/diff'),\n major: require('./functions/major'),\n minor: require('./functions/minor'),\n patch: require('./functions/patch'),\n prerelease: require('./functions/prerelease'),\n compare: require('./functions/compare'),\n rcompare: require('./functions/rcompare'),\n compareLoose: require('./functions/compare-loose'),\n compareBuild: require('./functions/compare-build'),\n sort: require('./functions/sort'),\n rsort: require('./functions/rsort'),\n gt: require('./functions/gt'),\n lt: require('./functions/lt'),\n eq: require('./functions/eq'),\n neq: require('./functions/neq'),\n gte: require('./functions/gte'),\n lte: require('./functions/lte'),\n cmp: require('./functions/cmp'),\n coerce: require('./functions/coerce'),\n Comparator: require('./classes/comparator'),\n Range: require('./classes/range'),\n satisfies: require('./functions/satisfies'),\n toComparators: require('./ranges/to-comparators'),\n maxSatisfying: require('./ranges/max-satisfying'),\n minSatisfying: require('./ranges/min-satisfying'),\n minVersion: require('./ranges/min-version'),\n validRange: require('./ranges/valid'),\n outside: require('./ranges/outside'),\n gtr: require('./ranges/gtr'),\n ltr: require('./ranges/ltr'),\n intersects: require('./ranges/intersects'),\n simplifyRange: require('./ranges/simplify'),\n subset: require('./ranges/subset'),\n}\n","// Note: this is the semver.org version of the spec that it implements\n// Not necessarily the package version of this code.\nconst SEMVER_SPEC_VERSION = '2.0.0'\n\nconst MAX_LENGTH = 256\nconst MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER ||\n/* istanbul ignore next */ 9007199254740991\n\n// Max safe segment length for coercion.\nconst MAX_SAFE_COMPONENT_LENGTH = 16\n\nmodule.exports = {\n SEMVER_SPEC_VERSION,\n MAX_LENGTH,\n MAX_SAFE_INTEGER,\n MAX_SAFE_COMPONENT_LENGTH,\n}\n","const debug = (\n typeof process === 'object' &&\n process.env &&\n process.env.NODE_DEBUG &&\n /\\bsemver\\b/i.test(process.env.NODE_DEBUG)\n) ? (...args) => console.error('SEMVER', ...args)\n : () => {}\n\nmodule.exports = debug\n","const numeric = /^[0-9]+$/\nconst compareIdentifiers = (a, b) => {\n const anum = numeric.test(a)\n const bnum = numeric.test(b)\n\n if (anum && bnum) {\n a = +a\n b = +b\n }\n\n return a === b ? 0\n : (anum && !bnum) ? -1\n : (bnum && !anum) ? 1\n : a < b ? -1\n : 1\n}\n\nconst rcompareIdentifiers = (a, b) => compareIdentifiers(b, a)\n\nmodule.exports = {\n compareIdentifiers,\n rcompareIdentifiers,\n}\n","// parse out just the options we care about so we always get a consistent\n// obj with keys in a consistent order.\nconst opts = ['includePrerelease', 'loose', 'rtl']\nconst parseOptions = options =>\n !options ? {}\n : typeof options !== 'object' ? { loose: true }\n : opts.filter(k => options[k]).reduce((o, k) => {\n o[k] = true\n return o\n }, {})\nmodule.exports = parseOptions\n","const { MAX_SAFE_COMPONENT_LENGTH } = require('./constants')\nconst debug = require('./debug')\nexports = module.exports = {}\n\n// The actual regexps go on exports.re\nconst re = exports.re = []\nconst src = exports.src = []\nconst t = exports.t = {}\nlet R = 0\n\nconst createToken = (name, value, isGlobal) => {\n const index = R++\n debug(name, index, value)\n t[name] = index\n src[index] = value\n re[index] = new RegExp(value, isGlobal ? 'g' : undefined)\n}\n\n// The following Regular Expressions can be used for tokenizing,\n// validating, and parsing SemVer version strings.\n\n// ## Numeric Identifier\n// A single `0`, or a non-zero digit followed by zero or more digits.\n\ncreateToken('NUMERICIDENTIFIER', '0|[1-9]\\\\d*')\ncreateToken('NUMERICIDENTIFIERLOOSE', '[0-9]+')\n\n// ## Non-numeric Identifier\n// Zero or more digits, followed by a letter or hyphen, and then zero or\n// more letters, digits, or hyphens.\n\ncreateToken('NONNUMERICIDENTIFIER', '\\\\d*[a-zA-Z-][a-zA-Z0-9-]*')\n\n// ## Main Version\n// Three dot-separated numeric identifiers.\n\ncreateToken('MAINVERSION', `(${src[t.NUMERICIDENTIFIER]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIER]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIER]})`)\n\ncreateToken('MAINVERSIONLOOSE', `(${src[t.NUMERICIDENTIFIERLOOSE]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIERLOOSE]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIERLOOSE]})`)\n\n// ## Pre-release Version Identifier\n// A numeric identifier, or a non-numeric identifier.\n\ncreateToken('PRERELEASEIDENTIFIER', `(?:${src[t.NUMERICIDENTIFIER]\n}|${src[t.NONNUMERICIDENTIFIER]})`)\n\ncreateToken('PRERELEASEIDENTIFIERLOOSE', `(?:${src[t.NUMERICIDENTIFIERLOOSE]\n}|${src[t.NONNUMERICIDENTIFIER]})`)\n\n// ## Pre-release Version\n// Hyphen, followed by one or more dot-separated pre-release version\n// identifiers.\n\ncreateToken('PRERELEASE', `(?:-(${src[t.PRERELEASEIDENTIFIER]\n}(?:\\\\.${src[t.PRERELEASEIDENTIFIER]})*))`)\n\ncreateToken('PRERELEASELOOSE', `(?:-?(${src[t.PRERELEASEIDENTIFIERLOOSE]\n}(?:\\\\.${src[t.PRERELEASEIDENTIFIERLOOSE]})*))`)\n\n// ## Build Metadata Identifier\n// Any combination of digits, letters, or hyphens.\n\ncreateToken('BUILDIDENTIFIER', '[0-9A-Za-z-]+')\n\n// ## Build Metadata\n// Plus sign, followed by one or more period-separated build metadata\n// identifiers.\n\ncreateToken('BUILD', `(?:\\\\+(${src[t.BUILDIDENTIFIER]\n}(?:\\\\.${src[t.BUILDIDENTIFIER]})*))`)\n\n// ## Full Version String\n// A main version, followed optionally by a pre-release version and\n// build metadata.\n\n// Note that the only major, minor, patch, and pre-release sections of\n// the version string are capturing groups. The build metadata is not a\n// capturing group, because it should not ever be used in version\n// comparison.\n\ncreateToken('FULLPLAIN', `v?${src[t.MAINVERSION]\n}${src[t.PRERELEASE]}?${\n src[t.BUILD]}?`)\n\ncreateToken('FULL', `^${src[t.FULLPLAIN]}$`)\n\n// like full, but allows v1.2.3 and =1.2.3, which people do sometimes.\n// also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty\n// common in the npm registry.\ncreateToken('LOOSEPLAIN', `[v=\\\\s]*${src[t.MAINVERSIONLOOSE]\n}${src[t.PRERELEASELOOSE]}?${\n src[t.BUILD]}?`)\n\ncreateToken('LOOSE', `^${src[t.LOOSEPLAIN]}$`)\n\ncreateToken('GTLT', '((?:<|>)?=?)')\n\n// Something like \"2.*\" or \"1.2.x\".\n// Note that \"x.x\" is a valid xRange identifer, meaning \"any version\"\n// Only the first item is strictly required.\ncreateToken('XRANGEIDENTIFIERLOOSE', `${src[t.NUMERICIDENTIFIERLOOSE]}|x|X|\\\\*`)\ncreateToken('XRANGEIDENTIFIER', `${src[t.NUMERICIDENTIFIER]}|x|X|\\\\*`)\n\ncreateToken('XRANGEPLAIN', `[v=\\\\s]*(${src[t.XRANGEIDENTIFIER]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIER]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIER]})` +\n `(?:${src[t.PRERELEASE]})?${\n src[t.BUILD]}?` +\n `)?)?`)\n\ncreateToken('XRANGEPLAINLOOSE', `[v=\\\\s]*(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n `(?:${src[t.PRERELEASELOOSE]})?${\n src[t.BUILD]}?` +\n `)?)?`)\n\ncreateToken('XRANGE', `^${src[t.GTLT]}\\\\s*${src[t.XRANGEPLAIN]}$`)\ncreateToken('XRANGELOOSE', `^${src[t.GTLT]}\\\\s*${src[t.XRANGEPLAINLOOSE]}$`)\n\n// Coercion.\n// Extract anything that could conceivably be a part of a valid semver\ncreateToken('COERCE', `${'(^|[^\\\\d])' +\n '(\\\\d{1,'}${MAX_SAFE_COMPONENT_LENGTH}})` +\n `(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?` +\n `(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?` +\n `(?:$|[^\\\\d])`)\ncreateToken('COERCERTL', src[t.COERCE], true)\n\n// Tilde ranges.\n// Meaning is \"reasonably at or greater than\"\ncreateToken('LONETILDE', '(?:~>?)')\n\ncreateToken('TILDETRIM', `(\\\\s*)${src[t.LONETILDE]}\\\\s+`, true)\nexports.tildeTrimReplace = '$1~'\n\ncreateToken('TILDE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAIN]}$`)\ncreateToken('TILDELOOSE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAINLOOSE]}$`)\n\n// Caret ranges.\n// Meaning is \"at least and backwards compatible with\"\ncreateToken('LONECARET', '(?:\\\\^)')\n\ncreateToken('CARETTRIM', `(\\\\s*)${src[t.LONECARET]}\\\\s+`, true)\nexports.caretTrimReplace = '$1^'\n\ncreateToken('CARET', `^${src[t.LONECARET]}${src[t.XRANGEPLAIN]}$`)\ncreateToken('CARETLOOSE', `^${src[t.LONECARET]}${src[t.XRANGEPLAINLOOSE]}$`)\n\n// A simple gt/lt/eq thing, or just \"\" to indicate \"any version\"\ncreateToken('COMPARATORLOOSE', `^${src[t.GTLT]}\\\\s*(${src[t.LOOSEPLAIN]})$|^$`)\ncreateToken('COMPARATOR', `^${src[t.GTLT]}\\\\s*(${src[t.FULLPLAIN]})$|^$`)\n\n// An expression to strip any whitespace between the gtlt and the thing\n// it modifies, so that `> 1.2.3` ==> `>1.2.3`\ncreateToken('COMPARATORTRIM', `(\\\\s*)${src[t.GTLT]\n}\\\\s*(${src[t.LOOSEPLAIN]}|${src[t.XRANGEPLAIN]})`, true)\nexports.comparatorTrimReplace = '$1$2$3'\n\n// Something like `1.2.3 - 1.2.4`\n// Note that these all use the loose form, because they'll be\n// checked against either the strict or loose comparator form\n// later.\ncreateToken('HYPHENRANGE', `^\\\\s*(${src[t.XRANGEPLAIN]})` +\n `\\\\s+-\\\\s+` +\n `(${src[t.XRANGEPLAIN]})` +\n `\\\\s*$`)\n\ncreateToken('HYPHENRANGELOOSE', `^\\\\s*(${src[t.XRANGEPLAINLOOSE]})` +\n `\\\\s+-\\\\s+` +\n `(${src[t.XRANGEPLAINLOOSE]})` +\n `\\\\s*$`)\n\n// Star ranges basically just allow anything at all.\ncreateToken('STAR', '(<|>)?=?\\\\s*\\\\*')\n// >=0.0.0 is like a star\ncreateToken('GTE0', '^\\\\s*>=\\\\s*0\\\\.0\\\\.0\\\\s*$')\ncreateToken('GTE0PRE', '^\\\\s*>=\\\\s*0\\\\.0\\\\.0-0\\\\s*$')\n","// Determine if version is greater than all the versions possible in the range.\nconst outside = require('./outside')\nconst gtr = (version, range, options) => outside(version, range, '>', options)\nmodule.exports = gtr\n","const Range = require('../classes/range')\nconst intersects = (r1, r2, options) => {\n r1 = new Range(r1, options)\n r2 = new Range(r2, options)\n return r1.intersects(r2)\n}\nmodule.exports = intersects\n","const outside = require('./outside')\n// Determine if version is less than all the versions possible in the range\nconst ltr = (version, range, options) => outside(version, range, '<', options)\nmodule.exports = ltr\n","const SemVer = require('../classes/semver')\nconst Range = require('../classes/range')\n\nconst maxSatisfying = (versions, range, options) => {\n let max = null\n let maxSV = null\n let rangeObj = null\n try {\n rangeObj = new Range(range, options)\n } catch (er) {\n return null\n }\n versions.forEach((v) => {\n if (rangeObj.test(v)) {\n // satisfies(v, range, options)\n if (!max || maxSV.compare(v) === -1) {\n // compare(max, v, true)\n max = v\n maxSV = new SemVer(max, options)\n }\n }\n })\n return max\n}\nmodule.exports = maxSatisfying\n","const SemVer = require('../classes/semver')\nconst Range = require('../classes/range')\nconst minSatisfying = (versions, range, options) => {\n let min = null\n let minSV = null\n let rangeObj = null\n try {\n rangeObj = new Range(range, options)\n } catch (er) {\n return null\n }\n versions.forEach((v) => {\n if (rangeObj.test(v)) {\n // satisfies(v, range, options)\n if (!min || minSV.compare(v) === 1) {\n // compare(min, v, true)\n min = v\n minSV = new SemVer(min, options)\n }\n }\n })\n return min\n}\nmodule.exports = minSatisfying\n","const SemVer = require('../classes/semver')\nconst Range = require('../classes/range')\nconst gt = require('../functions/gt')\n\nconst minVersion = (range, loose) => {\n range = new Range(range, loose)\n\n let minver = new SemVer('0.0.0')\n if (range.test(minver)) {\n return minver\n }\n\n minver = new SemVer('0.0.0-0')\n if (range.test(minver)) {\n return minver\n }\n\n minver = null\n for (let i = 0; i < range.set.length; ++i) {\n const comparators = range.set[i]\n\n let setMin = null\n comparators.forEach((comparator) => {\n // Clone to avoid manipulating the comparator's semver object.\n const compver = new SemVer(comparator.semver.version)\n switch (comparator.operator) {\n case '>':\n if (compver.prerelease.length === 0) {\n compver.patch++\n } else {\n compver.prerelease.push(0)\n }\n compver.raw = compver.format()\n /* fallthrough */\n case '':\n case '>=':\n if (!setMin || gt(compver, setMin)) {\n setMin = compver\n }\n break\n case '<':\n case '<=':\n /* Ignore maximum versions */\n break\n /* istanbul ignore next */\n default:\n throw new Error(`Unexpected operation: ${comparator.operator}`)\n }\n })\n if (setMin && (!minver || gt(minver, setMin))) {\n minver = setMin\n }\n }\n\n if (minver && range.test(minver)) {\n return minver\n }\n\n return null\n}\nmodule.exports = minVersion\n","const SemVer = require('../classes/semver')\nconst Comparator = require('../classes/comparator')\nconst { ANY } = Comparator\nconst Range = require('../classes/range')\nconst satisfies = require('../functions/satisfies')\nconst gt = require('../functions/gt')\nconst lt = require('../functions/lt')\nconst lte = require('../functions/lte')\nconst gte = require('../functions/gte')\n\nconst outside = (version, range, hilo, options) => {\n version = new SemVer(version, options)\n range = new Range(range, options)\n\n let gtfn, ltefn, ltfn, comp, ecomp\n switch (hilo) {\n case '>':\n gtfn = gt\n ltefn = lte\n ltfn = lt\n comp = '>'\n ecomp = '>='\n break\n case '<':\n gtfn = lt\n ltefn = gte\n ltfn = gt\n comp = '<'\n ecomp = '<='\n break\n default:\n throw new TypeError('Must provide a hilo val of \"<\" or \">\"')\n }\n\n // If it satisfies the range it is not outside\n if (satisfies(version, range, options)) {\n return false\n }\n\n // From now on, variable terms are as if we're in \"gtr\" mode.\n // but note that everything is flipped for the \"ltr\" function.\n\n for (let i = 0; i < range.set.length; ++i) {\n const comparators = range.set[i]\n\n let high = null\n let low = null\n\n comparators.forEach((comparator) => {\n if (comparator.semver === ANY) {\n comparator = new Comparator('>=0.0.0')\n }\n high = high || comparator\n low = low || comparator\n if (gtfn(comparator.semver, high.semver, options)) {\n high = comparator\n } else if (ltfn(comparator.semver, low.semver, options)) {\n low = comparator\n }\n })\n\n // If the edge version comparator has a operator then our version\n // isn't outside it\n if (high.operator === comp || high.operator === ecomp) {\n return false\n }\n\n // If the lowest version comparator has an operator and our version\n // is less than it then it isn't higher than the range\n if ((!low.operator || low.operator === comp) &&\n ltefn(version, low.semver)) {\n return false\n } else if (low.operator === ecomp && ltfn(version, low.semver)) {\n return false\n }\n }\n return true\n}\n\nmodule.exports = outside\n","// given a set of versions and a range, create a \"simplified\" range\n// that includes the same versions that the original range does\n// If the original range is shorter than the simplified one, return that.\nconst satisfies = require('../functions/satisfies.js')\nconst compare = require('../functions/compare.js')\nmodule.exports = (versions, range, options) => {\n const set = []\n let first = null\n let prev = null\n const v = versions.sort((a, b) => compare(a, b, options))\n for (const version of v) {\n const included = satisfies(version, range, options)\n if (included) {\n prev = version\n if (!first) {\n first = version\n }\n } else {\n if (prev) {\n set.push([first, prev])\n }\n prev = null\n first = null\n }\n }\n if (first) {\n set.push([first, null])\n }\n\n const ranges = []\n for (const [min, max] of set) {\n if (min === max) {\n ranges.push(min)\n } else if (!max && min === v[0]) {\n ranges.push('*')\n } else if (!max) {\n ranges.push(`>=${min}`)\n } else if (min === v[0]) {\n ranges.push(`<=${max}`)\n } else {\n ranges.push(`${min} - ${max}`)\n }\n }\n const simplified = ranges.join(' || ')\n const original = typeof range.raw === 'string' ? range.raw : String(range)\n return simplified.length < original.length ? simplified : range\n}\n","const Range = require('../classes/range.js')\nconst Comparator = require('../classes/comparator.js')\nconst { ANY } = Comparator\nconst satisfies = require('../functions/satisfies.js')\nconst compare = require('../functions/compare.js')\n\n// Complex range `r1 || r2 || ...` is a subset of `R1 || R2 || ...` iff:\n// - Every simple range `r1, r2, ...` is a null set, OR\n// - Every simple range `r1, r2, ...` which is not a null set is a subset of\n// some `R1, R2, ...`\n//\n// Simple range `c1 c2 ...` is a subset of simple range `C1 C2 ...` iff:\n// - If c is only the ANY comparator\n// - If C is only the ANY comparator, return true\n// - Else if in prerelease mode, return false\n// - else replace c with `[>=0.0.0]`\n// - If C is only the ANY comparator\n// - if in prerelease mode, return true\n// - else replace C with `[>=0.0.0]`\n// - Let EQ be the set of = comparators in c\n// - If EQ is more than one, return true (null set)\n// - Let GT be the highest > or >= comparator in c\n// - Let LT be the lowest < or <= comparator in c\n// - If GT and LT, and GT.semver > LT.semver, return true (null set)\n// - If any C is a = range, and GT or LT are set, return false\n// - If EQ\n// - If GT, and EQ does not satisfy GT, return true (null set)\n// - If LT, and EQ does not satisfy LT, return true (null set)\n// - If EQ satisfies every C, return true\n// - Else return false\n// - If GT\n// - If GT.semver is lower than any > or >= comp in C, return false\n// - If GT is >=, and GT.semver does not satisfy every C, return false\n// - If GT.semver has a prerelease, and not in prerelease mode\n// - If no C has a prerelease and the GT.semver tuple, return false\n// - If LT\n// - If LT.semver is greater than any < or <= comp in C, return false\n// - If LT is <=, and LT.semver does not satisfy every C, return false\n// - If GT.semver has a prerelease, and not in prerelease mode\n// - If no C has a prerelease and the LT.semver tuple, return false\n// - Else return true\n\nconst subset = (sub, dom, options = {}) => {\n if (sub === dom) {\n return true\n }\n\n sub = new Range(sub, options)\n dom = new Range(dom, options)\n let sawNonNull = false\n\n OUTER: for (const simpleSub of sub.set) {\n for (const simpleDom of dom.set) {\n const isSub = simpleSubset(simpleSub, simpleDom, options)\n sawNonNull = sawNonNull || isSub !== null\n if (isSub) {\n continue OUTER\n }\n }\n // the null set is a subset of everything, but null simple ranges in\n // a complex range should be ignored. so if we saw a non-null range,\n // then we know this isn't a subset, but if EVERY simple range was null,\n // then it is a subset.\n if (sawNonNull) {\n return false\n }\n }\n return true\n}\n\nconst simpleSubset = (sub, dom, options) => {\n if (sub === dom) {\n return true\n }\n\n if (sub.length === 1 && sub[0].semver === ANY) {\n if (dom.length === 1 && dom[0].semver === ANY) {\n return true\n } else if (options.includePrerelease) {\n sub = [new Comparator('>=0.0.0-0')]\n } else {\n sub = [new Comparator('>=0.0.0')]\n }\n }\n\n if (dom.length === 1 && dom[0].semver === ANY) {\n if (options.includePrerelease) {\n return true\n } else {\n dom = [new Comparator('>=0.0.0')]\n }\n }\n\n const eqSet = new Set()\n let gt, lt\n for (const c of sub) {\n if (c.operator === '>' || c.operator === '>=') {\n gt = higherGT(gt, c, options)\n } else if (c.operator === '<' || c.operator === '<=') {\n lt = lowerLT(lt, c, options)\n } else {\n eqSet.add(c.semver)\n }\n }\n\n if (eqSet.size > 1) {\n return null\n }\n\n let gtltComp\n if (gt && lt) {\n gtltComp = compare(gt.semver, lt.semver, options)\n if (gtltComp > 0) {\n return null\n } else if (gtltComp === 0 && (gt.operator !== '>=' || lt.operator !== '<=')) {\n return null\n }\n }\n\n // will iterate one or zero times\n for (const eq of eqSet) {\n if (gt && !satisfies(eq, String(gt), options)) {\n return null\n }\n\n if (lt && !satisfies(eq, String(lt), options)) {\n return null\n }\n\n for (const c of dom) {\n if (!satisfies(eq, String(c), options)) {\n return false\n }\n }\n\n return true\n }\n\n let higher, lower\n let hasDomLT, hasDomGT\n // if the subset has a prerelease, we need a comparator in the superset\n // with the same tuple and a prerelease, or it's not a subset\n let needDomLTPre = lt &&\n !options.includePrerelease &&\n lt.semver.prerelease.length ? lt.semver : false\n let needDomGTPre = gt &&\n !options.includePrerelease &&\n gt.semver.prerelease.length ? gt.semver : false\n // exception: <1.2.3-0 is the same as <1.2.3\n if (needDomLTPre && needDomLTPre.prerelease.length === 1 &&\n lt.operator === '<' && needDomLTPre.prerelease[0] === 0) {\n needDomLTPre = false\n }\n\n for (const c of dom) {\n hasDomGT = hasDomGT || c.operator === '>' || c.operator === '>='\n hasDomLT = hasDomLT || c.operator === '<' || c.operator === '<='\n if (gt) {\n if (needDomGTPre) {\n if (c.semver.prerelease && c.semver.prerelease.length &&\n c.semver.major === needDomGTPre.major &&\n c.semver.minor === needDomGTPre.minor &&\n c.semver.patch === needDomGTPre.patch) {\n needDomGTPre = false\n }\n }\n if (c.operator === '>' || c.operator === '>=') {\n higher = higherGT(gt, c, options)\n if (higher === c && higher !== gt) {\n return false\n }\n } else if (gt.operator === '>=' && !satisfies(gt.semver, String(c), options)) {\n return false\n }\n }\n if (lt) {\n if (needDomLTPre) {\n if (c.semver.prerelease && c.semver.prerelease.length &&\n c.semver.major === needDomLTPre.major &&\n c.semver.minor === needDomLTPre.minor &&\n c.semver.patch === needDomLTPre.patch) {\n needDomLTPre = false\n }\n }\n if (c.operator === '<' || c.operator === '<=') {\n lower = lowerLT(lt, c, options)\n if (lower === c && lower !== lt) {\n return false\n }\n } else if (lt.operator === '<=' && !satisfies(lt.semver, String(c), options)) {\n return false\n }\n }\n if (!c.operator && (lt || gt) && gtltComp !== 0) {\n return false\n }\n }\n\n // if there was a < or >, and nothing in the dom, then must be false\n // UNLESS it was limited by another range in the other direction.\n // Eg, >1.0.0 <1.0.1 is still a subset of <2.0.0\n if (gt && hasDomLT && !lt && gtltComp !== 0) {\n return false\n }\n\n if (lt && hasDomGT && !gt && gtltComp !== 0) {\n return false\n }\n\n // we needed a prerelease range in a specific tuple, but didn't get one\n // then this isn't a subset. eg >=1.2.3-pre is not a subset of >=1.0.0,\n // because it includes prereleases in the 1.2.3 tuple\n if (needDomGTPre || needDomLTPre) {\n return false\n }\n\n return true\n}\n\n// >=1.2.3 is lower than >1.2.3\nconst higherGT = (a, b, options) => {\n if (!a) {\n return b\n }\n const comp = compare(a.semver, b.semver, options)\n return comp > 0 ? a\n : comp < 0 ? b\n : b.operator === '>' && a.operator === '>=' ? b\n : a\n}\n\n// <=1.2.3 is higher than <1.2.3\nconst lowerLT = (a, b, options) => {\n if (!a) {\n return b\n }\n const comp = compare(a.semver, b.semver, options)\n return comp < 0 ? a\n : comp > 0 ? b\n : b.operator === '<' && a.operator === '<=' ? b\n : a\n}\n\nmodule.exports = subset\n","const Range = require('../classes/range')\n\n// Mostly just for testing and legacy API reasons\nconst toComparators = (range, options) =>\n new Range(range, options).set\n .map(comp => comp.map(c => c.value).join(' ').trim().split(' '))\n\nmodule.exports = toComparators\n","const Range = require('../classes/range')\nconst validRange = (range, options) => {\n try {\n // Return '*' instead of '' so that truthiness works.\n // This will throw if it's invalid anyway\n return new Range(range, options).range || '*'\n } catch (er) {\n return null\n }\n}\nmodule.exports = validRange\n","'use strict'\nmodule.exports = function (Yallist) {\n Yallist.prototype[Symbol.iterator] = function* () {\n for (let walker = this.head; walker; walker = walker.next) {\n yield walker.value\n }\n }\n}\n","'use strict'\nmodule.exports = Yallist\n\nYallist.Node = Node\nYallist.create = Yallist\n\nfunction Yallist (list) {\n var self = this\n if (!(self instanceof Yallist)) {\n self = new Yallist()\n }\n\n self.tail = null\n self.head = null\n self.length = 0\n\n if (list && typeof list.forEach === 'function') {\n list.forEach(function (item) {\n self.push(item)\n })\n } else if (arguments.length > 0) {\n for (var i = 0, l = arguments.length; i < l; i++) {\n self.push(arguments[i])\n }\n }\n\n return self\n}\n\nYallist.prototype.removeNode = function (node) {\n if (node.list !== this) {\n throw new Error('removing node which does not belong to this list')\n }\n\n var next = node.next\n var prev = node.prev\n\n if (next) {\n next.prev = prev\n }\n\n if (prev) {\n prev.next = next\n }\n\n if (node === this.head) {\n this.head = next\n }\n if (node === this.tail) {\n this.tail = prev\n }\n\n node.list.length--\n node.next = null\n node.prev = null\n node.list = null\n\n return next\n}\n\nYallist.prototype.unshiftNode = function (node) {\n if (node === this.head) {\n return\n }\n\n if (node.list) {\n node.list.removeNode(node)\n }\n\n var head = this.head\n node.list = this\n node.next = head\n if (head) {\n head.prev = node\n }\n\n this.head = node\n if (!this.tail) {\n this.tail = node\n }\n this.length++\n}\n\nYallist.prototype.pushNode = function (node) {\n if (node === this.tail) {\n return\n }\n\n if (node.list) {\n node.list.removeNode(node)\n }\n\n var tail = this.tail\n node.list = this\n node.prev = tail\n if (tail) {\n tail.next = node\n }\n\n this.tail = node\n if (!this.head) {\n this.head = node\n }\n this.length++\n}\n\nYallist.prototype.push = function () {\n for (var i = 0, l = arguments.length; i < l; i++) {\n push(this, arguments[i])\n }\n return this.length\n}\n\nYallist.prototype.unshift = function () {\n for (var i = 0, l = arguments.length; i < l; i++) {\n unshift(this, arguments[i])\n }\n return this.length\n}\n\nYallist.prototype.pop = function () {\n if (!this.tail) {\n return undefined\n }\n\n var res = this.tail.value\n this.tail = this.tail.prev\n if (this.tail) {\n this.tail.next = null\n } else {\n this.head = null\n }\n this.length--\n return res\n}\n\nYallist.prototype.shift = function () {\n if (!this.head) {\n return undefined\n }\n\n var res = this.head.value\n this.head = this.head.next\n if (this.head) {\n this.head.prev = null\n } else {\n this.tail = null\n }\n this.length--\n return res\n}\n\nYallist.prototype.forEach = function (fn, thisp) {\n thisp = thisp || this\n for (var walker = this.head, i = 0; walker !== null; i++) {\n fn.call(thisp, walker.value, i, this)\n walker = walker.next\n }\n}\n\nYallist.prototype.forEachReverse = function (fn, thisp) {\n thisp = thisp || this\n for (var walker = this.tail, i = this.length - 1; walker !== null; i--) {\n fn.call(thisp, walker.value, i, this)\n walker = walker.prev\n }\n}\n\nYallist.prototype.get = function (n) {\n for (var i = 0, walker = this.head; walker !== null && i < n; i++) {\n // abort out of the list early if we hit a cycle\n walker = walker.next\n }\n if (i === n && walker !== null) {\n return walker.value\n }\n}\n\nYallist.prototype.getReverse = function (n) {\n for (var i = 0, walker = this.tail; walker !== null && i < n; i++) {\n // abort out of the list early if we hit a cycle\n walker = walker.prev\n }\n if (i === n && walker !== null) {\n return walker.value\n }\n}\n\nYallist.prototype.map = function (fn, thisp) {\n thisp = thisp || this\n var res = new Yallist()\n for (var walker = this.head; walker !== null;) {\n res.push(fn.call(thisp, walker.value, this))\n walker = walker.next\n }\n return res\n}\n\nYallist.prototype.mapReverse = function (fn, thisp) {\n thisp = thisp || this\n var res = new Yallist()\n for (var walker = this.tail; walker !== null;) {\n res.push(fn.call(thisp, walker.value, this))\n walker = walker.prev\n }\n return res\n}\n\nYallist.prototype.reduce = function (fn, initial) {\n var acc\n var walker = this.head\n if (arguments.length > 1) {\n acc = initial\n } else if (this.head) {\n walker = this.head.next\n acc = this.head.value\n } else {\n throw new TypeError('Reduce of empty list with no initial value')\n }\n\n for (var i = 0; walker !== null; i++) {\n acc = fn(acc, walker.value, i)\n walker = walker.next\n }\n\n return acc\n}\n\nYallist.prototype.reduceReverse = function (fn, initial) {\n var acc\n var walker = this.tail\n if (arguments.length > 1) {\n acc = initial\n } else if (this.tail) {\n walker = this.tail.prev\n acc = this.tail.value\n } else {\n throw new TypeError('Reduce of empty list with no initial value')\n }\n\n for (var i = this.length - 1; walker !== null; i--) {\n acc = fn(acc, walker.value, i)\n walker = walker.prev\n }\n\n return acc\n}\n\nYallist.prototype.toArray = function () {\n var arr = new Array(this.length)\n for (var i = 0, walker = this.head; walker !== null; i++) {\n arr[i] = walker.value\n walker = walker.next\n }\n return arr\n}\n\nYallist.prototype.toArrayReverse = function () {\n var arr = new Array(this.length)\n for (var i = 0, walker = this.tail; walker !== null; i++) {\n arr[i] = walker.value\n walker = walker.prev\n }\n return arr\n}\n\nYallist.prototype.slice = function (from, to) {\n to = to || this.length\n if (to < 0) {\n to += this.length\n }\n from = from || 0\n if (from < 0) {\n from += this.length\n }\n var ret = new Yallist()\n if (to < from || to < 0) {\n return ret\n }\n if (from < 0) {\n from = 0\n }\n if (to > this.length) {\n to = this.length\n }\n for (var i = 0, walker = this.head; walker !== null && i < from; i++) {\n walker = walker.next\n }\n for (; walker !== null && i < to; i++, walker = walker.next) {\n ret.push(walker.value)\n }\n return ret\n}\n\nYallist.prototype.sliceReverse = function (from, to) {\n to = to || this.length\n if (to < 0) {\n to += this.length\n }\n from = from || 0\n if (from < 0) {\n from += this.length\n }\n var ret = new Yallist()\n if (to < from || to < 0) {\n return ret\n }\n if (from < 0) {\n from = 0\n }\n if (to > this.length) {\n to = this.length\n }\n for (var i = this.length, walker = this.tail; walker !== null && i > to; i--) {\n walker = walker.prev\n }\n for (; walker !== null && i > from; i--, walker = walker.prev) {\n ret.push(walker.value)\n }\n return ret\n}\n\nYallist.prototype.splice = function (start, deleteCount, ...nodes) {\n if (start > this.length) {\n start = this.length - 1\n }\n if (start < 0) {\n start = this.length + start;\n }\n\n for (var i = 0, walker = this.head; walker !== null && i < start; i++) {\n walker = walker.next\n }\n\n var ret = []\n for (var i = 0; walker && i < deleteCount; i++) {\n ret.push(walker.value)\n walker = this.removeNode(walker)\n }\n if (walker === null) {\n walker = this.tail\n }\n\n if (walker !== this.head && walker !== this.tail) {\n walker = walker.prev\n }\n\n for (var i = 0; i < nodes.length; i++) {\n walker = insert(this, walker, nodes[i])\n }\n return ret;\n}\n\nYallist.prototype.reverse = function () {\n var head = this.head\n var tail = this.tail\n for (var walker = head; walker !== null; walker = walker.prev) {\n var p = walker.prev\n walker.prev = walker.next\n walker.next = p\n }\n this.head = tail\n this.tail = head\n return this\n}\n\nfunction insert (self, node, value) {\n var inserted = node === self.head ?\n new Node(value, null, node, self) :\n new Node(value, node, node.next, self)\n\n if (inserted.next === null) {\n self.tail = inserted\n }\n if (inserted.prev === null) {\n self.head = inserted\n }\n\n self.length++\n\n return inserted\n}\n\nfunction push (self, item) {\n self.tail = new Node(item, self.tail, null, self)\n if (!self.head) {\n self.head = self.tail\n }\n self.length++\n}\n\nfunction unshift (self, item) {\n self.head = new Node(item, null, self.head, self)\n if (!self.tail) {\n self.tail = self.head\n }\n self.length++\n}\n\nfunction Node (value, prev, next, list) {\n if (!(this instanceof Node)) {\n return new Node(value, prev, next, list)\n }\n\n this.list = list\n this.value = value\n\n if (prev) {\n prev.next = this\n this.prev = prev\n } else {\n this.prev = null\n }\n\n if (next) {\n next.prev = this\n this.next = next\n } else {\n this.next = null\n }\n}\n\ntry {\n // add if support for Symbol.iterator is present\n require('./iterator.js')(Yallist)\n} catch (er) {}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","export const getOrigin = (url: string) => {\n if (typeof url !== 'string') return 'unknown';\n if (url.indexOf('file://') === 0) return 'file://';\n // eslint-disable-next-line no-useless-escape\n const parts = url.match(/^.+\\:\\/\\/[^\\/]+/);\n return Array.isArray(parts) && parts.length > 0 ? parts[0] : 'unknown';\n};\n","/* eslint-disable @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-member-access,@typescript-eslint/ban-ts-comment, @typescript-eslint/no-unsafe-call, @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-argument\n */\n// @ts-ignore\nimport EventEmitterBase from '@onekeyfe/cross-inpage-provider-events';\nfunction safeApply(handler, context, args) {\n try {\n Reflect.apply(handler, context, args);\n }\n catch (err) {\n // Throw error after timeout so as not to interrupt the stack\n setTimeout(() => {\n throw err;\n });\n }\n}\nfunction arrayClone(arr) {\n const n = arr.length;\n const copy = new Array(n);\n for (let i = 0; i < n; i += 1) {\n copy[i] = arr[i];\n }\n return copy;\n}\nclass EventEmitterProxy extends EventEmitterBase {\n emit(eventName, ...args) {\n return super.emit(eventName, ...args);\n }\n addListener(eventName, listener) {\n super.addListener(eventName, listener);\n return this;\n }\n on(eventName, listener) {\n super.on(eventName, listener);\n return this;\n }\n once(eventName, listener) {\n super.once(eventName, listener);\n return this;\n }\n removeListener(eventName, listener) {\n super.removeListener(eventName, listener);\n return this;\n }\n off(eventName, listener) {\n super.off(eventName, listener);\n return this;\n }\n removeAllListeners(event) {\n super.removeAllListeners(event);\n return this;\n }\n setMaxListeners(n) {\n super.setMaxListeners(n);\n return this;\n }\n getMaxListeners() {\n return super.getMaxListeners();\n }\n // eslint-disable-next-line @typescript-eslint/ban-types\n listeners(eventName) {\n return super.listeners(eventName);\n }\n // eslint-disable-next-line @typescript-eslint/ban-types\n rawListeners(eventName) {\n return super.rawListeners(eventName);\n }\n listenerCount(eventName) {\n return super.listenerCount(eventName);\n }\n prependListener(eventName, listener) {\n super.prependListener(eventName, listener);\n return this;\n }\n prependOnceListener(eventName, listener) {\n super.prependOnceListener(eventName, listener);\n return this;\n }\n eventNames() {\n return super.eventNames();\n }\n}\nclass CrossEventEmitter extends EventEmitterProxy {\n emit(type, ...args) {\n let doError = type === 'error';\n const events = this._events;\n if (events !== undefined) {\n doError = doError && events.error === undefined;\n }\n else if (!doError) {\n return false;\n }\n // If there is no 'error' event listener then throw.\n if (doError) {\n let er;\n if (args.length > 0) {\n [er] = args;\n }\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 const err = new Error(`Unhandled error.${er ? ` (${er.message})` : ''}`);\n err.context = er;\n throw err; // Unhandled 'error' event\n }\n const handler = events[type];\n if (handler === undefined) {\n return false;\n }\n if (typeof handler === 'function') {\n safeApply(handler, this, args);\n }\n else {\n const len = handler.length;\n const listeners = arrayClone(handler);\n for (let i = 0; i < len; i += 1) {\n safeApply(listeners[i], this, args);\n }\n }\n return true;\n }\n}\nexport { CrossEventEmitter };\n","var __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};\n/* eslint-disable */\n// @ts-nocheck\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n */\nimport humanize from 'ms';\nfunction setup(env) {\n return __awaiter(this, void 0, void 0, function* () {\n createDebug.debug = createDebug;\n createDebug.default = createDebug;\n createDebug.coerce = coerce;\n createDebug.disable = disable;\n createDebug.enable = enable;\n createDebug.enabled = enabled;\n createDebug.humanize = humanize;\n createDebug.destroy = destroy;\n Object.keys(env).forEach((key) => {\n createDebug[key] = env[key];\n });\n /**\n * The currently active debug mode names, and names to skip.\n */\n createDebug.names = [];\n createDebug.skips = [];\n /**\n * Map of special \"%n\" handling functions, for the debug \"format\" argument.\n *\n * Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n */\n createDebug.formatters = {\n /**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n j(v) {\n try {\n return JSON.stringify(v);\n }\n catch (error) {\n return `[UnexpectedJSONParseError]: ${error.message}`;\n }\n },\n };\n /**\n * Selects a color for a debug namespace\n * @param {String} namespace The namespace string for the debug instance to be colored\n * @return {Number|String} An ANSI color code for the given namespace\n * @api private\n */\n function selectColor(namespace) {\n let hash = 0;\n for (let i = 0; i < namespace.length; i++) {\n hash = (hash << 5) - hash + namespace.charCodeAt(i);\n hash |= 0; // Convert to 32bit integer\n }\n return createDebug.colors[Math.abs(hash) % createDebug.colors.length];\n }\n createDebug.selectColor = selectColor;\n /**\n * Create a debugger with the given `namespace`.\n *\n * @param {String} namespace\n * @return {Function}\n * @api public\n */\n function createDebug(namespace) {\n let prevTime;\n let enableOverride = null;\n let namespacesCache;\n let enabledCache;\n function debug(...args) {\n // Disabled?\n if (!debug.enabled) {\n return;\n }\n const self = debug;\n // Set `diff` timestamp\n const curr = Number(new Date());\n const ms = curr - (prevTime || curr);\n self.diff = ms;\n self.prev = prevTime;\n self.curr = curr;\n prevTime = curr;\n args[0] = createDebug.coerce(args[0]);\n if (typeof args[0] !== 'string') {\n // Anything else let's inspect with %O\n args.unshift('%O');\n }\n // Apply any `formatters` transformations\n let index = 0;\n args[0] = args[0].replace(/%([a-zA-Z%])/g, (match, format) => {\n // If we encounter an escaped % then don't increase the array index\n if (match === '%%') {\n return '%';\n }\n index++;\n const formatter = createDebug.formatters[format];\n if (typeof formatter === 'function') {\n const val = args[index];\n match = formatter.call(self, val);\n // Now we need to remove `args[index]` since it's inlined in the `format`\n args.splice(index, 1);\n index--;\n }\n return match;\n });\n // Apply env-specific formatting (colors, etc.)\n createDebug.formatArgs.call(self, args);\n const logFn = self.log || createDebug.log;\n logFn.apply(self, args);\n }\n debug.namespace = namespace;\n debug.useColors = createDebug.useColors();\n debug.color = createDebug.selectColor(namespace);\n debug.extend = extend;\n debug.destroy = createDebug.destroy; // XXX Temporary. Will be removed in the next major release.\n Object.defineProperty(debug, 'enabled', {\n enumerable: true,\n configurable: false,\n get: () => {\n if (enableOverride !== null) {\n return enableOverride;\n }\n if (namespacesCache !== createDebug.namespaces) {\n namespacesCache = createDebug.namespaces;\n enabledCache = createDebug.enabled(namespace);\n }\n return enabledCache;\n },\n set: (v) => {\n enableOverride = v;\n },\n });\n // Env-specific initialization logic for debug instances\n if (typeof createDebug.init === 'function') {\n createDebug.init(debug);\n }\n return debug;\n }\n function extend(namespace, delimiter) {\n const newDebug = createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace);\n newDebug.log = this.log;\n return newDebug;\n }\n /**\n * Enables a debug mode by namespaces. This can include modes\n * separated by a colon and wildcards.\n *\n * @param {String} namespaces\n * @api public\n */\n function enable(namespaces) {\n return __awaiter(this, void 0, void 0, function* () {\n yield createDebug.save(namespaces);\n createDebug.namespaces = namespaces;\n createDebug.names = [];\n createDebug.skips = [];\n let i;\n const split = (typeof namespaces === 'string' ? namespaces : '').split(/[\\s,]+/);\n const len = split.length;\n for (i = 0; i < len; i++) {\n if (!split[i]) {\n // ignore empty strings\n continue;\n }\n namespaces = split[i].replace(/\\*/g, '.*?');\n if (namespaces[0] === '-') {\n createDebug.skips.push(new RegExp(`^${namespaces.substr(1)}$`));\n }\n else {\n createDebug.names.push(new RegExp(`^${namespaces}$`));\n }\n }\n });\n }\n /**\n * Disable debug output.\n *\n * @return {String} namespaces\n * @api public\n */\n function disable() {\n const namespaces = [\n ...createDebug.names.map(toNamespace),\n ...createDebug.skips.map(toNamespace).map((namespace) => `-${namespace}`),\n ].join(',');\n createDebug.enable('');\n return namespaces;\n }\n /**\n * Returns true if the given mode name is enabled, false otherwise.\n *\n * @param {String} name\n * @return {Boolean}\n * @api public\n */\n function enabled(name) {\n if (name[name.length - 1] === '*') {\n return true;\n }\n let i;\n let len;\n for (i = 0, len = createDebug.skips.length; i < len; i++) {\n if (createDebug.skips[i].test(name)) {\n return false;\n }\n }\n for (i = 0, len = createDebug.names.length; i < len; i++) {\n if (createDebug.names[i].test(name)) {\n return true;\n }\n }\n return false;\n }\n /**\n * Convert regexp to namespace\n *\n * @param {RegExp} regxep\n * @return {String} namespace\n * @api private\n */\n function toNamespace(regexp) {\n return regexp\n .toString()\n .substring(2, regexp.toString().length - 2)\n .replace(/\\.\\*\\?$/, '*');\n }\n /**\n * Coerce `val`.\n *\n * @param {Mixed} val\n * @return {Mixed}\n * @api private\n */\n function coerce(val) {\n if (val instanceof Error) {\n return val.stack || val.message;\n }\n return val;\n }\n /**\n * XXX DO NOT USE. This is a temporary stub function.\n * XXX It WILL be removed in the next major release.\n */\n function destroy() {\n console.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n }\n const config = yield createDebug.load();\n yield createDebug.enable(config);\n return createDebug;\n });\n}\nexport default setup;\n","export const JS_BRIDGE_MESSAGE_IPC_CHANNEL = 'onekey@JS_BRIDGE_MESSAGE_IPC_CHANNEL';\nexport const JS_BRIDGE_MESSAGE_EXT_CHANNEL = 'onekey@JS_BRIDGE_MESSAGE_EXT_CHANNEL';\nexport const JS_BRIDGE_MESSAGE_EXT_PING = 'onekey@JS_BRIDGE_MESSAGE_EXT_PING';\nexport const JS_BRIDGE_MESSAGE_DIRECTION = {\n 'HOST_TO_INPAGE': 'onekey@JS_BRIDGE_MESSAGE_DIRECTION-HOST_TO_INPAGE',\n 'INPAGE_TO_HOST': 'onekey@JS_BRIDGE_MESSAGE_DIRECTION-INPAGE_TO_HOST',\n};\nexport const EXT_PORT_CS_TO_BG = 'onekey@EXT_PORT_CS_TO_BG';\nexport const EXT_PORT_UI_TO_BG = 'onekey@EXT_PORT_UI_TO_BG';\nexport const DEBUG_LOGGER_STORAGE_KEY = '$$ONEKEY_DEBUG_LOGGER';\n","/* eslint-disable */\n// @ts-nocheck\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};\n/**\n * This is the web browser implementation of `debug()`.\n */\nimport { DEBUG_LOGGER_STORAGE_KEY } from '../consts';\nimport humanize from 'ms';\nconst storageKey = DEBUG_LOGGER_STORAGE_KEY;\nconst exportsBrowser = {};\nexportsBrowser.formatArgs = formatArgs;\nexportsBrowser.save = save;\nexportsBrowser.load = load;\nexportsBrowser.useColors = useColors;\nexportsBrowser.storage = customLocalStorage();\nexportsBrowser.humanize = humanize;\nexportsBrowser.destroy = (() => {\n let warned = false;\n return () => {\n if (!warned) {\n warned = true;\n console.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n }\n };\n})();\n/**\n * Colors.\n */\nexportsBrowser.colors = [\n '#0000CC',\n '#0000FF',\n '#0033CC',\n '#0033FF',\n '#0066CC',\n '#0066FF',\n '#0099CC',\n '#0099FF',\n '#00CC00',\n '#00CC33',\n '#00CC66',\n '#00CC99',\n '#00CCCC',\n '#00CCFF',\n '#3300CC',\n '#3300FF',\n '#3333CC',\n '#3333FF',\n '#3366CC',\n '#3366FF',\n '#3399CC',\n '#3399FF',\n '#33CC00',\n '#33CC33',\n '#33CC66',\n '#33CC99',\n '#33CCCC',\n '#33CCFF',\n '#6600CC',\n '#6600FF',\n '#6633CC',\n '#6633FF',\n '#66CC00',\n '#66CC33',\n '#9900CC',\n '#9900FF',\n '#9933CC',\n '#9933FF',\n '#99CC00',\n '#99CC33',\n '#CC0000',\n '#CC0033',\n '#CC0066',\n '#CC0099',\n '#CC00CC',\n '#CC00FF',\n '#CC3300',\n '#CC3333',\n '#CC3366',\n '#CC3399',\n '#CC33CC',\n '#CC33FF',\n '#CC6600',\n '#CC6633',\n '#CC9900',\n '#CC9933',\n '#CCCC00',\n '#CCCC33',\n '#FF0000',\n '#FF0033',\n '#FF0066',\n '#FF0099',\n '#FF00CC',\n '#FF00FF',\n '#FF3300',\n '#FF3333',\n '#FF3366',\n '#FF3399',\n '#FF33CC',\n '#FF33FF',\n '#FF6600',\n '#FF6633',\n '#FF9900',\n '#FF9933',\n '#FFCC00',\n '#FFCC33',\n];\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n */\nfunction useColors() {\n // NB: In an Electron preload script, document will be defined but not fully\n // initialized. Since we know we're in Chrome, we'll just detect this case\n // explicitly\n if (typeof window !== 'undefined' &&\n window.process &&\n (window.process.type === 'renderer' || window.process.__nwjs)) {\n return true;\n }\n // Internet Explorer and Edge do not support colors.\n if (typeof navigator !== 'undefined' &&\n navigator.userAgent &&\n navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)) {\n return false;\n }\n // Is webkit? http://stackoverflow.com/a/16459606/376773\n // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n return ((typeof document !== 'undefined' &&\n document.documentElement &&\n document.documentElement.style &&\n document.documentElement.style.WebkitAppearance) ||\n // Is firebug? http://stackoverflow.com/a/398120/376773\n (typeof window !== 'undefined' &&\n window.console &&\n (window.console.firebug || (window.console.exception && window.console.table))) ||\n // Is firefox >= v31?\n // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n (typeof navigator !== 'undefined' &&\n navigator.userAgent &&\n navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/) &&\n parseInt(RegExp.$1, 10) >= 31) ||\n // Double check webkit in userAgent just in case we are in a worker\n (typeof navigator !== 'undefined' &&\n navigator.userAgent &&\n navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/)));\n}\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\nfunction formatArgs(args) {\n args[0] = `${(this.useColors ? '%c' : '') +\n this.namespace +\n (this.useColors ? ' %c' : ' ') +\n args[0] +\n (this.useColors ? '%c ' : ' ')}+${exportsBrowser.humanize(this.diff)}`;\n if (!this.useColors) {\n return;\n }\n const c = `color: ${this.color}`;\n args.splice(1, 0, c, 'color: inherit');\n // The final \"%c\" is somewhat tricky, because there could be other\n // arguments passed either before or after the %c, so we need to\n // figure out the correct index to insert the CSS into\n let index = 0;\n let lastC = 0;\n args[0].replace(/%[a-zA-Z%]/g, (match) => {\n if (match === '%%') {\n return;\n }\n index += 1;\n if (match === '%c') {\n // We only are interested in the *last* %c\n // (the user may have provided their own)\n lastC = index;\n }\n });\n args.splice(lastC, 0, c);\n}\n/**\n * Invokes `console.debug()` when available.\n * No-op when `console.debug` is not a \"function\".\n * If `console.debug` is not available, falls back\n * to `console.log`.\n *\n * @api public\n */\nexportsBrowser.log = (...args) => {\n if (console.debug) {\n console.debug(...args);\n }\n else if (console.log) {\n console.log(...args);\n }\n};\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\nfunction save(namespaces) {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n if (namespaces) {\n yield exportsBrowser.storage.setItem(storageKey, namespaces);\n }\n else {\n yield exportsBrowser.storage.removeItem(storageKey);\n }\n }\n catch (error) {\n // Swallow\n // XXX (@Qix-) should we be logging these?\n console.error('debug logger storage error', error);\n }\n });\n}\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\nfunction load() {\n return __awaiter(this, void 0, void 0, function* () {\n let r;\n try {\n r = yield exportsBrowser.storage.getItem(storageKey);\n }\n catch (error) {\n // Swallow\n // XXX (@Qix-) should we be logging these?\n console.error('debug logger storage error', error);\n }\n // If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n if (!r && typeof process !== 'undefined' && 'env' in process) {\n r = process.env.DEBUG;\n }\n return r;\n });\n}\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\nfunction customLocalStorage() {\n try {\n if (typeof global !== 'undefined' && global.$$onekeyAppStorage) {\n return global.$$onekeyAppStorage;\n }\n // TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context\n // The Browser also has localStorage in the global context.\n if (typeof window !== 'undefined' && window.localStorage) {\n return window.localStorage;\n }\n console.warn('debugLogger init warning, neither `global.$$onekeyAppStorage` nor `window.localStorage` found.');\n return {\n getItem() {\n return __awaiter(this, void 0, void 0, function* () {\n return '';\n });\n },\n setItem() {\n return __awaiter(this, void 0, void 0, function* () {\n // noop\n });\n },\n removeItem() {\n return __awaiter(this, void 0, void 0, function* () {\n // noop\n });\n },\n };\n }\n catch (error) {\n // Swallow\n // XXX (@Qix-) should we be logging these?\n console.error('debug logger storage error', error);\n }\n}\nexport default exportsBrowser;\n","var __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};\nimport setup from './common';\nimport browser from './browser';\nfunction createDebugAsync() {\n return __awaiter(this, void 0, void 0, function* () {\n return setup(browser);\n });\n}\nexport default createDebugAsync;\n","// @ts-ignore\nimport createDebugAsync from './debug';\nimport { DEBUG_LOGGER_STORAGE_KEY } from './consts';\nimport { CrossEventEmitter } from './CrossEventEmitter';\n// enable debugLogger:\n// localStorage.setItem('$$ONEKEY_DEBUG_LOGGER', '*');\nfunction consoleErrorInDev(...args) {\n const loggerConfig = typeof localStorage !== 'undefined' && localStorage.getItem(DEBUG_LOGGER_STORAGE_KEY);\n if (process.env.NODE_ENV !== 'production' || loggerConfig) {\n console.error(...args);\n }\n}\nconst fakeLogger = {\n // @ts-ignore\n _isFakeLogger: true,\n log: (...args) => undefined,\n warn: (...args) => undefined,\n error: (...args) => undefined,\n debug: (...args) => undefined,\n info: (...args) => undefined,\n trace: (...args) => undefined,\n};\nvar loggerNames;\n(function (loggerNames) {\n loggerNames[\"jsBridge\"] = \"jsBridge\";\n loggerNames[\"providerBase\"] = \"providerBase\";\n loggerNames[\"extInjected\"] = \"extInjected\";\n loggerNames[\"extContentScripts\"] = \"extContentScripts\";\n loggerNames[\"webview\"] = \"webview\";\n loggerNames[\"desktopInjected\"] = \"desktopInjected\";\n loggerNames[\"ethereum\"] = \"ethereum\";\n})(loggerNames || (loggerNames = {}));\nclass FakeDebugLogger extends CrossEventEmitter {\n constructor() {\n super();\n this.jsBridge = (...args) => null;\n this.providerBase = (...args) => null;\n this.extInjected = (...args) => null;\n this.extContentScripts = (...args) => null;\n this.webview = (...args) => null;\n this.desktopInjected = (...args) => null;\n this.ethereum = (...args) => null;\n this._debug = {\n enable(config) {\n //noop\n },\n };\n this._externalLogger = fakeLogger;\n this._createExternalLog = (name) => (...args) => {\n var _a, _b;\n this.once('debugReady', () => {\n var _a;\n // @ts-ignore\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n (_a = this[name]) === null || _a === void 0 ? void 0 : _a.call(this, ...args);\n });\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n return (_b = (_a = this._externalLogger) === null || _a === void 0 ? void 0 : _a.log) === null || _b === void 0 ? void 0 : _b.call(_a, `${name} >>> `, ...args);\n };\n this.initExternalLogInstances();\n }\n initExternalLogInstances() {\n Object.keys(loggerNames).forEach((name) => {\n // @ts-ignore\n this[name] = this._createExternalLog(name);\n });\n }\n isDebugReady() {\n return this._debug && typeof this._debug === 'function';\n }\n _attachExternalLogger(logger) {\n if (logger) {\n this._externalLogger = logger;\n }\n }\n _createDebugInstance(name) {\n // noop\n }\n}\nclass AppDebugLogger extends FakeDebugLogger {\n constructor() {\n super();\n this._debugInstanceCreatedMap = {};\n // TODO createDebugSync\n void createDebugAsync().then((debug) => {\n this._debug = debug;\n this.initDebugInstances();\n this.emit('debugReady');\n });\n }\n initDebugInstances() {\n if (this.isDebugReady()) {\n Object.keys(loggerNames).forEach((name) => {\n // @ts-ignore\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call,@typescript-eslint/no-unsafe-assignment\n this[name] = this._debug(name);\n });\n }\n }\n _createDebugInstance(name) {\n if (this._debugInstanceCreatedMap[name]) {\n return;\n }\n this._debugInstanceCreatedMap[name] = true;\n if (name && this._debug && typeof this._debug === 'function') {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call,@typescript-eslint/no-unsafe-assignment\n const _debugLog = this._debug(name);\n // @ts-ignore\n const _originLog = this[name];\n // @ts-ignore\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment,@typescript-eslint/no-unsafe-call,@typescript-eslint/no-unsafe-assignment\n this[name] = (...args) => {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n _debugLog(...args);\n if (_originLog && typeof _originLog === 'function') {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n _originLog(...args);\n }\n };\n }\n }\n}\n// TODO merge FakeDebugLogger and AppDebugLogger to single class\nconst fakeDebugLogger = new FakeDebugLogger();\nconst appDebugLogger = new AppDebugLogger();\nexport { fakeDebugLogger, appDebugLogger, fakeLogger, consoleErrorInDev };\n","export var IJsBridgeMessageTypes;\n(function (IJsBridgeMessageTypes) {\n IJsBridgeMessageTypes[\"RESPONSE\"] = \"RESPONSE\";\n IJsBridgeMessageTypes[\"REQUEST\"] = \"REQUEST\";\n})(IJsBridgeMessageTypes || (IJsBridgeMessageTypes = {}));\nexport var IInjectedProviderNames;\n(function (IInjectedProviderNames) {\n IInjectedProviderNames[\"ethereum\"] = \"ethereum\";\n IInjectedProviderNames[\"conflux\"] = \"conflux\";\n IInjectedProviderNames[\"solana\"] = \"solana\";\n IInjectedProviderNames[\"sollet\"] = \"sollet\";\n IInjectedProviderNames[\"near\"] = \"near\";\n IInjectedProviderNames[\"$private\"] = \"$private\";\n IInjectedProviderNames[\"$hardware_sdk\"] = \"$hardware_sdk\";\n})(IInjectedProviderNames || (IInjectedProviderNames = {}));\n","import safeStringify from 'fast-safe-stringify';\n/**\n * Error subclass implementing JSON RPC 2.0 errors and Web3 RPC errors\n * per EIP-1474.\n * Permits any integer error code.\n */\nexport class Web3RpcError extends Error {\n constructor(code, message, data) {\n if (!Number.isInteger(code)) {\n throw new Error('\"code\" must be an integer.');\n }\n if (!message || typeof message !== 'string') {\n throw new Error('\"message\" must be a nonempty string.');\n }\n super(message);\n this.code = code;\n if (data !== undefined) {\n this.data = data;\n }\n }\n /**\n * Returns a plain object with all public class properties.\n */\n serialize() {\n const serialized = {\n code: this.code,\n message: this.message,\n };\n if (this.data !== undefined) {\n serialized.data = this.data;\n }\n if (this.stack) {\n serialized.stack = this.stack;\n }\n return serialized;\n }\n /**\n * Return a string representation of the serialized error, omitting\n * any circular references.\n */\n toString() {\n return safeStringify(this.serialize(), stringifyReplacer, 2);\n }\n}\n/**\n * Error subclass implementing Web3 Provider errors per EIP-1193.\n * Permits integer error codes in the [ 1000 <= 4999 ] range.\n */\nexport class Web3ProviderError extends Web3RpcError {\n /**\n * Create an Web3 Provider JSON-RPC error.\n * `code` must be an integer in the 1000 <= 4999 range.\n */\n constructor(code, message, data) {\n if (!isValidWeb3ProviderCode(code)) {\n throw new Error('\"code\" must be an integer such that: 1000 <= code <= 4999');\n }\n super(code, message, data);\n }\n}\n// Internal\nfunction isValidWeb3ProviderCode(code) {\n return Number.isInteger(code) && code >= 1000 && code <= 4999;\n}\nfunction stringifyReplacer(_, value) {\n if (value === '[Circular]') {\n return undefined;\n }\n return value;\n}\n","export const errorCodes = {\n rpc: {\n invalidInput: -32000,\n resourceNotFound: -32001,\n resourceUnavailable: -32002,\n transactionRejected: -32003,\n methodNotSupported: -32004,\n limitExceeded: -32005,\n parse: -32700,\n invalidRequest: -32600,\n methodNotFound: -32601,\n invalidParams: -32602,\n internal: -32603,\n },\n provider: {\n userRejectedRequest: 4001,\n unauthorized: 4100,\n unsupportedMethod: 4200,\n disconnected: 4900,\n chainDisconnected: 4901,\n requestTimeout: 4500,\n },\n};\nexport const errorValues = {\n '-32700': {\n standard: 'JSON RPC 2.0',\n message: 'Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.',\n },\n '-32600': {\n standard: 'JSON RPC 2.0',\n message: 'The JSON sent is not a valid Request object.',\n },\n '-32601': {\n standard: 'JSON RPC 2.0',\n message: 'The method does not exist / is not available.',\n },\n '-32602': {\n standard: 'JSON RPC 2.0',\n message: 'Invalid method parameter(s).',\n },\n '-32603': {\n standard: 'JSON RPC 2.0',\n message: 'Internal JSON-RPC error.',\n },\n '-32000': {\n standard: 'EIP-1474',\n message: 'Invalid input.',\n },\n '-32001': {\n standard: 'EIP-1474',\n message: 'Resource not found.',\n },\n '-32002': {\n standard: 'EIP-1474',\n message: 'Resource unavailable.',\n },\n '-32003': {\n standard: 'EIP-1474',\n message: 'Transaction rejected.',\n },\n '-32004': {\n standard: 'EIP-1474',\n message: 'Method not supported.',\n },\n '-32005': {\n standard: 'EIP-1474',\n message: 'Request limit exceeded.',\n },\n '4001': {\n standard: 'EIP-1193',\n message: 'User rejected the request.',\n },\n '4100': {\n standard: 'EIP-1193',\n message: 'The requested account and/or method has not been authorized by the user.',\n },\n '4200': {\n standard: 'EIP-1193',\n message: 'The requested method is not supported by this Web3 provider.',\n },\n '4900': {\n standard: 'EIP-1193',\n message: 'The provider is disconnected from all chains.',\n },\n '4901': {\n standard: 'EIP-1193',\n message: 'The provider is disconnected from the specified chain.',\n },\n '4500': {\n standard: '',\n message: 'The request by this Web3 provider is timeout.',\n },\n};\n// https://eips.ethereum.org/EIPS/eip-1474#error-codes\n// https://eips.ethereum.org/EIPS/eip-1193#provider-errors\n","import { errorCodes, errorValues } from './error-constants';\nimport { Web3RpcError } from './classes';\nconst FALLBACK_ERROR_CODE = errorCodes.rpc.internal;\nconst FALLBACK_MESSAGE = 'Unspecified error message. This is a bug, please report it.';\nconst FALLBACK_ERROR = {\n code: FALLBACK_ERROR_CODE,\n message: getMessageFromCode(FALLBACK_ERROR_CODE),\n};\nexport const JSON_RPC_SERVER_ERROR_MESSAGE = 'Unspecified server error.';\n/**\n * Gets the message for a given code, or a fallback message if the code has\n * no corresponding message.\n */\nexport function getMessageFromCode(code, fallbackMessage = FALLBACK_MESSAGE) {\n if (Number.isInteger(code)) {\n const codeString = code.toString();\n if (hasKey(errorValues, codeString)) {\n return errorValues[codeString].message;\n }\n if (isJsonRpcServerError(code)) {\n return JSON_RPC_SERVER_ERROR_MESSAGE;\n }\n }\n return fallbackMessage;\n}\n/**\n * Returns whether the given code is valid.\n * A code is only valid if it has a message.\n */\nexport function isValidCode(code) {\n if (!Number.isInteger(code)) {\n return false;\n }\n const codeString = code.toString();\n if (errorValues[codeString]) {\n return true;\n }\n if (isJsonRpcServerError(code)) {\n return true;\n }\n return false;\n}\n/**\n * Serializes the given error to an Web3 JSON RPC-compatible error object.\n * Merely copies the given error's values if it is already compatible.\n * If the given error is not fully compatible, it will be preserved on the\n * returned object's data.originalError property.\n */\nexport function serializeError(error, { fallbackError = FALLBACK_ERROR, shouldIncludeStack = false, } = {}) {\n var _a, _b;\n if (!fallbackError ||\n !Number.isInteger(fallbackError.code) ||\n typeof fallbackError.message !== 'string') {\n throw new Error('Must provide fallback error with integer number code and string message.');\n }\n if (error instanceof Web3RpcError) {\n return error.serialize();\n }\n const serialized = {};\n if (error &&\n typeof error === 'object' &&\n !Array.isArray(error) &&\n hasKey(error, 'code') &&\n isValidCode(error.code)) {\n const _error = error;\n serialized.code = _error.code;\n if (_error.message && typeof _error.message === 'string') {\n serialized.message = _error.message;\n if (hasKey(_error, 'data')) {\n serialized.data = _error.data;\n }\n }\n else {\n serialized.message = getMessageFromCode(serialized.code);\n serialized.data = { originalError: assignOriginalError(error) };\n }\n }\n else {\n serialized.code = fallbackError.code;\n const message = (_a = error) === null || _a === void 0 ? void 0 : _a.message;\n serialized.message = (message && typeof message === 'string'\n ? message\n : fallbackError.message);\n serialized.data = { originalError: assignOriginalError(error) };\n }\n const stack = (_b = error) === null || _b === void 0 ? void 0 : _b.stack;\n if (shouldIncludeStack && error && stack && typeof stack === 'string') {\n serialized.stack = stack;\n }\n return serialized;\n}\n// Internal\nfunction isJsonRpcServerError(code) {\n return code >= -32099 && code <= -32000;\n}\nfunction assignOriginalError(error) {\n if (error && typeof error === 'object' && !Array.isArray(error)) {\n return Object.assign({}, error);\n }\n return error;\n}\nfunction hasKey(obj, key) {\n return Object.prototype.hasOwnProperty.call(obj, key);\n}\n","import { Web3RpcError, Web3ProviderError } from './classes';\nimport { getMessageFromCode } from './utils';\nimport { errorCodes } from './error-constants';\nexport const web3Errors = {\n rpc: {\n /**\n * Get a JSON RPC 2.0 Parse (-32700) error.\n */\n parse: (arg) => getWeb3JsonRpcError(errorCodes.rpc.parse, arg),\n /**\n * Get a JSON RPC 2.0 Invalid Request (-32600) error.\n */\n invalidRequest: (arg) => getWeb3JsonRpcError(errorCodes.rpc.invalidRequest, arg),\n /**\n * Get a JSON RPC 2.0 Invalid Params (-32602) error.\n */\n invalidParams: (arg) => getWeb3JsonRpcError(errorCodes.rpc.invalidParams, arg),\n /**\n * Get a JSON RPC 2.0 Method Not Found (-32601) error.\n */\n methodNotFound: (arg) => getWeb3JsonRpcError(errorCodes.rpc.methodNotFound, arg),\n /**\n * Get a JSON RPC 2.0 Internal (-32603) error.\n */\n internal: (arg) => getWeb3JsonRpcError(errorCodes.rpc.internal, arg),\n /**\n * Get a JSON RPC 2.0 Server error.\n * Permits integer error codes in the [ -32099 <= -32005 ] range.\n * Codes -32000 through -32004 are reserved by EIP-1474.\n */\n server: (opts) => {\n if (!opts || typeof opts !== 'object' || Array.isArray(opts)) {\n throw new Error('Web3 RPC Server errors must provide single object argument.');\n }\n const { code } = opts;\n if (!Number.isInteger(code) || code > -32005 || code < -32099) {\n throw new Error('\"code\" must be an integer such that: -32099 <= code <= -32005');\n }\n return getWeb3JsonRpcError(code, opts);\n },\n /**\n * Get an Web3 JSON RPC Invalid Input (-32000) error.\n */\n invalidInput: (arg) => getWeb3JsonRpcError(errorCodes.rpc.invalidInput, arg),\n /**\n * Get an Web3 JSON RPC Resource Not Found (-32001) error.\n */\n resourceNotFound: (arg) => getWeb3JsonRpcError(errorCodes.rpc.resourceNotFound, arg),\n /**\n * Get an Web3 JSON RPC Resource Unavailable (-32002) error.\n */\n resourceUnavailable: (arg) => getWeb3JsonRpcError(errorCodes.rpc.resourceUnavailable, arg),\n /**\n * Get an Web3 JSON RPC Transaction Rejected (-32003) error.\n */\n transactionRejected: (arg) => getWeb3JsonRpcError(errorCodes.rpc.transactionRejected, arg),\n /**\n * Get an Web3 JSON RPC Method Not Supported (-32004) error.\n */\n methodNotSupported: (arg) => getWeb3JsonRpcError(errorCodes.rpc.methodNotSupported, arg),\n /**\n * Get an Web3 JSON RPC Limit Exceeded (-32005) error.\n */\n limitExceeded: (arg) => getWeb3JsonRpcError(errorCodes.rpc.limitExceeded, arg),\n },\n provider: {\n /**\n * Get an Web3 Provider User Rejected Request (4001) error.\n */\n userRejectedRequest: (arg) => {\n return getWeb3ProviderError(errorCodes.provider.userRejectedRequest, arg);\n },\n /**\n * Get an Web3 Provider Unauthorized (4100) error.\n */\n unauthorized: (arg) => {\n return getWeb3ProviderError(errorCodes.provider.unauthorized, arg);\n },\n /**\n * Get an Web3 Provider Unsupported Method (4200) error.\n */\n unsupportedMethod: (arg) => {\n return getWeb3ProviderError(errorCodes.provider.unsupportedMethod, arg);\n },\n /**\n * Get an Web3 Provider Not Connected (4900) error.\n */\n disconnected: (arg) => {\n return getWeb3ProviderError(errorCodes.provider.disconnected, arg);\n },\n /**\n * Get an Web3 Provider Chain Not Connected (4901) error.\n */\n chainDisconnected: (arg) => {\n return getWeb3ProviderError(errorCodes.provider.chainDisconnected, arg);\n },\n requestTimeout: (arg) => {\n return getWeb3ProviderError(errorCodes.provider.requestTimeout, arg);\n },\n /**\n * Get a custom Web3 Provider error.\n */\n custom: (opts) => {\n if (!opts || typeof opts !== 'object' || Array.isArray(opts)) {\n throw new Error('Web3 Provider custom errors must provide single object argument.');\n }\n const { code, message, data } = opts;\n if (!message || typeof message !== 'string') {\n throw new Error('\"message\" must be a nonempty string');\n }\n return new Web3ProviderError(code, message, data);\n },\n },\n};\n// Internal\nfunction getWeb3JsonRpcError(code, arg) {\n const [message, data] = parseOpts(arg);\n return new Web3RpcError(code, message || getMessageFromCode(code), data);\n}\nfunction getWeb3ProviderError(code, arg) {\n const [message, data] = parseOpts(arg);\n return new Web3ProviderError(code, message || getMessageFromCode(code), data);\n}\nfunction parseOpts(arg) {\n if (arg) {\n if (typeof arg === 'string') {\n return [arg];\n }\n else if (typeof arg === 'object' && !Array.isArray(arg)) {\n const { message, data } = arg;\n if (message && typeof message !== 'string') {\n throw new Error('Must specify string message.');\n }\n return [message || undefined, data];\n }\n }\n return [];\n}\n","var __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};\n/* eslint-disable @typescript-eslint/ban-ts-comment */\nimport { CrossEventEmitter } from './CrossEventEmitter';\nimport isPlainObject from 'lodash/isPlainObject';\nimport isString from 'lodash/isString';\nimport { appDebugLogger, consoleErrorInDev } from './loggers';\nimport { IJsBridgeMessageTypes, } from '@onekeyfe/cross-inpage-provider-types';\nimport { web3Errors } from '@onekeyfe/cross-inpage-provider-errors';\nimport versionInfo from './versionInfo';\nfunction toPlainError(errorInfo) {\n return {\n name: errorInfo.name,\n message: errorInfo.message,\n stack: errorInfo.stack,\n code: errorInfo.code,\n data: errorInfo.data,\n key: errorInfo.key,\n info: errorInfo.info,\n className: errorInfo.className,\n };\n}\nfunction isLegacyExtMessage(payload) {\n const payloadObj = payload;\n return (Boolean(payloadObj.name) &&\n ['onekey-provider-eth', 'onekey-provider-cfx', 'publicConfig'].includes(payloadObj.name));\n}\nconst globalWindow = typeof window !== 'undefined' ? window : global;\nconst BRIDGE_EVENTS = {\n message: 'message',\n error: 'error',\n};\nclass JsBridgeBase extends CrossEventEmitter {\n constructor(config = {}) {\n var _a, _b;\n super();\n this._requestPayloadCache = {};\n this.isExtUi = false;\n this.isInjected = false;\n this.sendAsString = true;\n this.globalOnMessageEnabled = true;\n this.providersHub = {\n // name: []\n };\n // Only handle type=REQUEST messages, type=RESPONSE message will be ignored\n this.globalOnMessage = (message) => __awaiter(this, void 0, void 0, function* () {\n try {\n if (this.config.receiveHandler && this.globalOnMessageEnabled) {\n const returnValue = yield this.config.receiveHandler(message, this);\n if (message.id) {\n this.response({\n id: message.id,\n scope: message.scope,\n remoteId: message.remoteId,\n data: returnValue,\n });\n }\n }\n }\n catch (error) {\n if (message.id && message.type === IJsBridgeMessageTypes.REQUEST) {\n this.responseError({\n id: message.id,\n scope: message.scope,\n remoteId: message.remoteId,\n error,\n });\n }\n this.emit(BRIDGE_EVENTS.error, error);\n }\n finally {\n // noop\n }\n });\n this.version = versionInfo.version;\n this.remoteInfo = {\n origin: '',\n remoteId: '',\n };\n // TODO increase timeout as hardware sign transaction may take a long time\n // can set timeout for each callback\n this.callbacksExpireTimeout = 10 * 60 * 1000;\n this.debugLogger = appDebugLogger;\n this.callbacks = [];\n this.callbackId = 1;\n this.config = config;\n this.callbacksExpireTimeout = (_a = config.timeout) !== null && _a !== void 0 ? _a : this.callbacksExpireTimeout;\n this.debugLogger = config.debugLogger || appDebugLogger;\n this.sendAsString = (_b = config.sendAsString) !== null && _b !== void 0 ? _b : this.sendAsString;\n if (this.config.receiveHandler) {\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n this.on(BRIDGE_EVENTS.message, this.globalOnMessage);\n }\n this.on(BRIDGE_EVENTS.error, (error) => {\n var _a;\n consoleErrorInDev('JsBridge ERROR: ', error, {\n code: (_a = error) === null || _a === void 0 ? void 0 : _a.code,\n });\n });\n this.rejectExpiredCallbacks();\n }\n attachProviderInstance(provider) {\n var _a;\n const name = provider.providerName;\n if (name) {\n this.providersHub[name] = (_a = this.providersHub[name]) !== null && _a !== void 0 ? _a : [];\n this.providersHub[name].push(provider);\n }\n }\n createCallbackId() {\n this.callbackId += 1;\n return this.callbackId;\n }\n createPayload(payload, { resolve, reject, }) {\n const { id, type } = payload;\n if (resolve && reject && id && type === IJsBridgeMessageTypes.REQUEST) {\n if (this.callbacks[id]) {\n // TODO custom error\n throw new Error(`JsBridge ERROR: callback exists, id=${id}`);\n }\n this.callbacks[id] = { id, resolve, reject, created: Date.now() };\n }\n // convert to plain error object which can be stringify\n if (payload.error) {\n const errorInfo = payload.error;\n payload.error = toPlainError(errorInfo);\n }\n // delete resolve, reject function which can not be send as string\n payload === null || payload === void 0 ? true : delete payload.resolve;\n payload === null || payload === void 0 ? true : delete payload.reject;\n return payload;\n }\n send({ type, data, error, id, remoteId, sync = false, scope }) {\n const executor = (resolve, reject) => {\n var _a, _b, _c;\n // TODO check resolve when calling without await\n // eslint-disable-next-line @typescript-eslint/naming-convention\n let _id = id;\n // sendSync without Promise cache\n if (!sync && type === IJsBridgeMessageTypes.REQUEST) {\n _id = this.createCallbackId();\n }\n try {\n const payload = this.createPayload({\n id: _id,\n data,\n error,\n type,\n origin: ((_a = globalWindow === null || globalWindow === void 0 ? void 0 : globalWindow.location) === null || _a === void 0 ? void 0 : _a.origin) || '',\n remoteId,\n scope,\n }, { resolve, reject });\n let payloadToSend = payload;\n if (this.sendAsString) {\n payloadToSend = JSON.stringify(payload);\n }\n // @ts-ignore\n if ((_b = this.debugLogger.jsBridge) === null || _b === void 0 ? void 0 : _b.enabled) {\n if (payload && payload.id && payload.type === IJsBridgeMessageTypes.REQUEST) {\n this._requestPayloadCache[payload.id] = payload;\n if (payload.id % 100 === 0) {\n this._requestPayloadCache = {};\n }\n }\n }\n this.debugLogger.jsBridge('send', payload, '\\r\\n ------> ', payload.data, '\\r\\n ------> ', \n // @ts-ignore\n (_c = payload.data) === null || _c === void 0 ? void 0 : _c.result);\n this.sendPayload(payloadToSend);\n }\n catch (error) {\n if (_id) {\n this.rejectCallback(_id, error);\n }\n else {\n this.emit(BRIDGE_EVENTS.error, error);\n }\n }\n };\n if (sync) {\n executor();\n void 0;\n }\n else {\n return new Promise(executor);\n }\n }\n rejectCallback(id, error) {\n this.processCallback({\n method: 'reject',\n id,\n error,\n });\n }\n resolveCallback(id, data) {\n this.processCallback({\n method: 'resolve',\n id,\n data,\n });\n }\n processCallback({ method, id, data, error, }) {\n const callbackInfo = this.callbacks[id];\n if (callbackInfo) {\n if (method === 'reject') {\n if (callbackInfo.reject) {\n callbackInfo.reject(error);\n }\n this.emit(BRIDGE_EVENTS.error, error);\n }\n if (method === 'resolve') {\n if (callbackInfo.resolve) {\n callbackInfo.resolve(data);\n }\n }\n this.clearCallbackCache(id);\n }\n }\n rejectExpiredCallbacks() {\n if (!this.callbacksExpireTimeout) {\n return;\n }\n const now = Date.now();\n // eslint-disable-next-line @typescript-eslint/no-for-in-array\n for (const id in this.callbacks) {\n const callbackInfo = this.callbacks[id];\n if (callbackInfo && callbackInfo.created) {\n if (now - callbackInfo.created > this.callbacksExpireTimeout) {\n const error = web3Errors.provider.requestTimeout();\n this.rejectCallback(id, error);\n }\n }\n }\n setTimeout(() => {\n this.rejectExpiredCallbacks();\n }, this.callbacksExpireTimeout);\n }\n clearCallbackCache(id) {\n delete this.callbacks[id];\n }\n receive(payloadReceived = '', sender) {\n var _a, _b, _c, _d, _e;\n let payload = {\n data: null,\n };\n if (isPlainObject(payloadReceived)) {\n payload = payloadReceived;\n }\n if (isString(payloadReceived)) {\n try {\n payload = JSON.parse(payloadReceived);\n }\n catch (error) {\n this.emit(BRIDGE_EVENTS.error, error);\n throw new Error('JsBridge ERROR: JSON.parse payloadReceived failed');\n }\n }\n // !IMPORTANT: force overwrite origin and internal field\n // DO NOT trust dapp params\n payload.origin = sender === null || sender === void 0 ? void 0 : sender.origin;\n payload.internal = Boolean(sender === null || sender === void 0 ? void 0 : sender.internal);\n // ignore legacy Ext publicConfig message\n if ((sender === null || sender === void 0 ? void 0 : sender.internal) && this.isExtUi && isLegacyExtMessage(payload)) {\n return;\n }\n if (!payload.origin && !this.isInjected) {\n consoleErrorInDev((_a = this === null || this === void 0 ? void 0 : this.constructor) === null || _a === void 0 ? void 0 : _a.name, '[payload.origin] is missing.', this);\n throw new Error('JsBridge ERROR: receive message [payload.origin] is required.');\n }\n if (!payload.internal && !payload.scope) {\n throw new Error('JsBridge ERROR: receive message [payload.scope] is required for non-internal method call.');\n }\n const relatedSendPayload = (_c = this._requestPayloadCache[(_b = payload === null || payload === void 0 ? void 0 : payload.id) !== null && _b !== void 0 ? _b : '']) !== null && _c !== void 0 ? _c : null;\n this.debugLogger.jsBridge('receive', payload, { sender }, '\\r\\n -----> ', (_e = (_d = payload.data) === null || _d === void 0 ? void 0 : _d.result) !== null && _e !== void 0 ? _e : payload.data, '\\r\\n <----- ', relatedSendPayload === null || relatedSendPayload === void 0 ? void 0 : relatedSendPayload.data);\n const { type, id, data, error, origin, remoteId } = payload;\n this.remoteInfo = {\n origin,\n remoteId,\n };\n if (type === IJsBridgeMessageTypes.RESPONSE) {\n if (id === undefined || id === null) {\n throw new Error('JsBridge ERROR: parameter [id] is required in JsBridge.receive() when REQUEST type message');\n }\n const callbackInfo = this.callbacks[id];\n if (callbackInfo) {\n try {\n if (error) {\n this.rejectCallback(id, error);\n }\n else {\n this.resolveCallback(id, data);\n }\n }\n catch (error0) {\n this.emit(BRIDGE_EVENTS.error, error0);\n }\n finally {\n // noop\n }\n }\n }\n else if (type === IJsBridgeMessageTypes.REQUEST) {\n const eventMessagePayload = Object.assign(Object.assign({}, payload), { created: Date.now() });\n // https://nodejs.org/api/events.html#capture-rejections-of-promises\n // only type=REQUEST message will be handled by globalOnMessage\n this.emit(BRIDGE_EVENTS.message, eventMessagePayload);\n }\n else {\n throw new Error(`JsBridge ERROR: payload type not support yet (type=${type || 'undefined'})`);\n }\n }\n requestSync({ data, scope, remoteId, }) {\n void this.send({\n id: undefined,\n type: IJsBridgeMessageTypes.REQUEST,\n scope,\n data,\n remoteId,\n sync: true,\n });\n }\n request(info) {\n const { data, remoteId, scope } = info;\n if (data === undefined) {\n console.warn('JsBridge ERROR: data required. Call like `bridge.request({ data: {...} });`');\n }\n return this.send({\n type: IJsBridgeMessageTypes.REQUEST,\n data,\n remoteId,\n sync: false,\n scope,\n });\n }\n // send response DATA to remote\n response({ id, data, remoteId, scope, }) {\n void this.send({\n type: IJsBridgeMessageTypes.RESPONSE,\n data,\n id,\n remoteId,\n scope,\n sync: true,\n });\n }\n // send response ERROR to remote\n responseError({ id, error, scope, remoteId, }) {\n void this.send({\n type: IJsBridgeMessageTypes.RESPONSE,\n error,\n id,\n remoteId,\n scope,\n sync: true,\n });\n }\n}\nexport { JsBridgeBase, isLegacyExtMessage };\n","const version = '0.0.14';\nconst versionBuild = '2020-0101-1';\nexport default {\n version,\n versionBuild,\n};\n","/* eslint-disable @typescript-eslint/no-unsafe-call */\n/* eslint-disable @typescript-eslint/no-unsafe-member-access */\nimport { JsBridgeBase } from './JsBridgeBase';\nlet postMessageListenerAdded = false;\nfunction setupPostMessageListener(options = {}) {\n if (postMessageListenerAdded) {\n return;\n }\n postMessageListenerAdded = true;\n // - receive\n window.addEventListener('message', (event) => {\n // TODO source whitelist\n /**\n * This origin is not guaranteed to be the current or future origin of the window\n * temporarily comment this line\n */\n // if (event.origin !== options.origin) {\n // return;\n // }\n var _a, _b, _c;\n const eventData = event.data;\n const config = (_a = options.bridge) === null || _a === void 0 ? void 0 : _a.bridgeConfig;\n if (config &&\n eventData.channel === config.channel &&\n eventData.frameName === config.remoteFrameName) {\n const payload = eventData.payload;\n const jsBridge = (_b = options.bridge) !== null && _b !== void 0 ? _b : (_c = window === null || window === void 0 ? void 0 : window.$onekey) === null || _c === void 0 ? void 0 : _c.jsBridge;\n if (jsBridge) {\n jsBridge.receive(payload);\n }\n }\n }, false);\n}\nclass JsBridgeIframe extends JsBridgeBase {\n constructor(config) {\n var _a;\n super(config);\n this.sendAsString = false;\n this.isInjected = true;\n this.bridgeConfig = config;\n this.targetOrigin = (_a = config.targetOrigin) !== null && _a !== void 0 ? _a : window.location.origin;\n // receive message\n setupPostMessageListener({\n debugLogger: this.debugLogger,\n bridge: this,\n origin: this.targetOrigin,\n });\n }\n // send message\n sendPayload(payloadObj) {\n const eventData = {\n channel: this.bridgeConfig.channel,\n frameName: this.bridgeConfig.selfFrameName,\n payload: payloadObj,\n direction: '',\n };\n this.bridgeConfig.remoteFrame.postMessage(eventData, this.targetOrigin);\n }\n}\nexport { JsBridgeIframe };\n","/* eslint-disable @typescript-eslint/ban-ts-comment */\nfunction createCodeWithScriptTag({ code }) {\n // script id check, only inject once.\n return `\n (function(){\n const s = document.createElement('script');\n s.setAttribute('async', 'false');\n s.setAttribute('data-onekey-injected', 'true');\n s.textContent=${JSON.stringify(code)};\n (document.head || document.documentElement).appendChild(s);\n s.remove();\n })();\n `;\n}\nfunction injectCodeWithScriptTag({ code, file, remove = true, }) {\n (function () {\n const s = document.createElement('script');\n s.removeAttribute('async');\n s.removeAttribute('defer');\n s.setAttribute('data-onekey-injected', 'yes');\n if (code) {\n s.textContent = code;\n }\n if (file) {\n s.src = file;\n }\n s.onload = function () {\n if (remove && file) {\n s.remove();\n }\n };\n (document.head || document.documentElement).appendChild(s);\n if (remove && code) {\n s.remove();\n }\n })();\n}\nfunction createCodeJsBridgeReceive(payloadStr) {\n return `\n if(window.$onekey && window.$onekey.jsBridge){\n window.$onekey.jsBridge.receive(${JSON.stringify(payloadStr)});\n }\n void 0;\n `;\n}\nexport default {\n injectCodeWithScriptTag,\n createCodeWithScriptTag,\n createCodeJsBridgeReceive,\n};\n","const config: {\n iframeName: string;\n hostName: string;\n channel: string;\n scope: '$hardware_sdk';\n} = {\n iframeName: 'onekey-iframe',\n hostName: 'onekey-host',\n channel: 'onekey-js-sdk',\n scope: '$hardware_sdk',\n};\n\nexport default config;\n","import { IJsBridgeIframeConfig, JsBridgeIframe } from '@onekeyfe/cross-inpage-provider-core';\nimport { CoreMessage, initLog } from '@onekeyfe/hd-core';\nimport JSBridgeConfig from '../iframe/bridge-config';\n\n// eslint-disable-next-line import/no-mutable-exports\nlet frameBridge: JsBridgeIframe;\n// eslint-disable-next-line import/no-mutable-exports\nlet hostBridge: JsBridgeIframe;\n\nconst Log = initLog('[SendMessage]');\n\nexport const createJsBridge = (params: IJsBridgeIframeConfig & { isHost: boolean }) => {\n const bridge = new JsBridgeIframe(params);\n if (params.isHost) {\n hostBridge = bridge;\n } else {\n frameBridge = bridge;\n }\n};\n\nexport const sendMessage = async (messages: CoreMessage, isHost = true): Promise<any> => {\n const bridge = isHost ? hostBridge : frameBridge;\n\n try {\n Log.debug('request: ', messages);\n const result = await bridge?.request({\n scope: JSBridgeConfig.scope,\n data: { ...messages },\n });\n Log.debug('response: ', result);\n return result;\n } catch (error) {\n Log.error(error);\n throw error;\n }\n};\n\nexport { frameBridge, hostBridge };\n","import HttpTransport from '@onekeyfe/hd-transport-http';\nimport {\n PostMessageEvent,\n IFRAME,\n initLog,\n parseMessage,\n DataManager,\n parseConnectSettings,\n IFrameInit,\n createIFrameMessage,\n createErrorMessage,\n initCore,\n Core,\n CORE_EVENT,\n} from '@onekeyfe/hd-core';\nimport { getOrigin } from '../utils/urlUtils';\nimport { sendMessage, createJsBridge } from '../utils/bridgeUtils';\n\nimport JSBridgeConfig from './bridge-config';\n\nlet _core: Core | undefined;\nconst Log = initLog('IFrame');\n\nconst handleMessage = (event: PostMessageEvent) => {\n if (event.source === window || !event.data) return;\n\n const message = parseMessage(event);\n\n if (message.type === IFRAME.INIT) {\n init(message.payload ?? {});\n }\n};\n\nexport async function init(payload: IFrameInit['payload']) {\n if (DataManager.getSettings('origin')) return;\n\n const settings = parseConnectSettings({\n ...(payload.settings ?? {}),\n isFrame: true,\n });\n // set origin manually\n settings.origin = !origin || origin === 'null' ? payload.settings.origin : origin;\n\n Log.enabled = !!settings.debug;\n\n try {\n _core = await initCore(settings, HttpTransport);\n _core?.on(CORE_EVENT, messages => sendMessage(messages, false));\n } catch (error) {\n return createErrorMessage(error);\n }\n\n createJsBridge({\n isHost: false,\n remoteFrame: window.parent,\n remoteFrameName: JSBridgeConfig.hostName,\n selfFrameName: JSBridgeConfig.iframeName,\n channel: JSBridgeConfig.channel,\n targetOrigin: getOrigin(settings.parentOrigin as string),\n receiveHandler: async messageEvent => {\n const message = parseMessage(messageEvent);\n Log.debug('Frame Bridge Receive message: ', message);\n\n const response = await _core?.handleMessage(message);\n Log.debug('Frame Bridge response data: ', response);\n return response;\n },\n });\n\n await sendMessage(createIFrameMessage(IFRAME.INIT_BRIDGE, {}), false);\n}\n\nwindow.addEventListener('message', handleMessage, false);\n"],"names":["ReflectOwnKeys","R","Reflect","ReflectApply","apply","target","receiver","args","Function","prototype","call","ownKeys","Object","getOwnPropertySymbols","getOwnPropertyNames","concat","NumberIsNaN","Number","isNaN","value","EventEmitter","init","this","module","exports","once","emitter","name","Promise","resolve","reject","errorListener","err","removeListener","resolver","slice","arguments","eventTargetAgnosticAddListener","handler","flags","on","addErrorHandlerIfEventEmitter","_events","undefined","_eventsCount","_maxListeners","defaultMaxListeners","checkListener","listener","TypeError","_getMaxListeners","that","_addListener","type","prepend","m","events","existing","warning","create","newListener","emit","unshift","push","length","warned","w","Error","String","count","console","warn","onceWrapper","fired","wrapFn","_onceWrap","state","wrapped","bind","_listeners","unwrap","evlistener","arr","ret","Array","i","unwrapListeners","arrayClone","listenerCount","n","copy","addEventListener","wrapListener","arg","removeEventListener","defineProperty","enumerable","get","set","RangeError","getPrototypeOf","setMaxListeners","getMaxListeners","doError","error","er","message","context","len","listeners","addListener","prependListener","prependOnceListener","list","position","originalListener","shift","index","pop","spliceOne","off","removeAllListeners","key","keys","rawListeners","eventNames","fn","ctx","params","offset","pending","base64","string","p","charAt","Math","ceil","b64","s64","encode","buffer","start","end","t","parts","chunk","j","b","fromCharCode","join","invalidEncoding","decode","c","charCodeAt","test","codegen","functionParams","functionName","body","Codegen","formatStringOrScope","source","toString","verbose","log","scopeKeys","scopeParams","scopeValues","scopeOffset","formatParams","formatOffset","replace","$0","$1","floor","JSON","stringify","functionNameOverride","evt","splice","fetch","asPromise","fs","inquire","filename","options","callback","xhr","readFile","contents","XMLHttpRequest","binary","onreadystatechange","readyState","status","response","responseText","Uint8Array","overrideMimeType","responseType","open","send","factory","Float32Array","f32","f8b","le","writeFloat_f32_cpy","val","buf","pos","writeFloat_f32_rev","readFloat_f32_cpy","readFloat_f32_rev","writeFloatLE","writeFloatBE","readFloatLE","readFloatBE","writeFloat_ieee754","writeUint","sign","round","exponent","LN2","pow","readFloat_ieee754","readUint","uint","mantissa","NaN","Infinity","writeUintLE","writeUintBE","readUintLE","readUintBE","Float64Array","f64","writeDouble_f64_cpy","writeDouble_f64_rev","readDouble_f64_cpy","readDouble_f64_rev","writeDoubleLE","writeDoubleBE","readDoubleLE","readDoubleBE","writeDouble_ieee754","off0","off1","readDouble_ieee754","lo","hi","moduleName","mod","eval","e","path","isAbsolute","normalize","split","absolute","prefix","originPath","includePath","alreadyNormalized","alloc","size","SIZE","MAX","slab","utf8","read","write","c1","c2","utils","settle","cookies","buildURL","buildFullPath","parseHeaders","isURLSameOrigin","transitionalDefaults","AxiosError","CanceledError","parseProtocol","config","onCanceled","requestData","data","requestHeaders","headers","done","cancelToken","unsubscribe","signal","isFormData","isStandardBrowserEnv","request","auth","username","password","unescape","encodeURIComponent","Authorization","btoa","fullPath","baseURL","url","onloadend","responseHeaders","getAllResponseHeaders","statusText","method","toUpperCase","paramsSerializer","timeout","responseURL","indexOf","setTimeout","onabort","ECONNABORTED","onerror","ERR_NETWORK","ontimeout","timeoutErrorMessage","transitional","clarifyTimeoutError","ETIMEDOUT","xsrfValue","withCredentials","xsrfCookieName","xsrfHeaderName","forEach","toLowerCase","setRequestHeader","isUndefined","onDownloadProgress","onUploadProgress","upload","cancel","abort","subscribe","aborted","protocol","ERR_BAD_REQUEST","Axios","mergeConfig","axios","createInstance","defaultConfig","instance","extend","instanceConfig","CancelToken","isCancel","VERSION","toFormData","Cancel","all","promises","spread","isAxiosError","executor","resolvePromise","promise","token","then","l","onfulfilled","_resolve","reason","throwIfRequested","ERR_CANCELED","inherits","__CANCEL__","InterceptorManager","dispatchRequest","validator","validators","defaults","interceptors","configOrUrl","assertOptions","silentJSONParsing","boolean","forcedJSONParsing","requestInterceptorChain","synchronousRequestInterceptors","interceptor","runWhen","synchronous","fulfilled","rejected","responseInterceptorChain","chain","newConfig","onFulfilled","onRejected","getUri","generateHTTPMethod","isForm","code","toJSON","description","number","fileName","lineNumber","columnNumber","stack","descriptors","defineProperties","from","customProps","axiosError","toFlatObject","obj","assign","handlers","use","eject","id","h","isAbsoluteURL","combineURLs","requestedURL","transformData","throwIfCancellationRequested","transformRequest","merge","common","adapter","transformResponse","config1","config2","getMergedValue","isPlainObject","isArray","mergeDeepProperties","prop","valueFromConfig2","defaultToConfig2","mergeDirectKeys","mergeMap","configValue","validateStatus","ERR_BAD_RESPONSE","fns","normalizeHeaderName","DEFAULT_CONTENT_TYPE","setContentTypeIfUnset","process","isArrayBuffer","isBuffer","isStream","isFile","isBlob","isArrayBufferView","isURLSearchParams","isFileList","isObjectPayload","isObject","contentType","_FormData","env","FormData","rawValue","parser","encoder","isString","parse","trim","stringifySafely","strictJSONParsing","maxContentLength","maxBodyLength","thisArg","serializedParams","v","isDate","toISOString","hashmarkIndex","relativeURL","expires","domain","secure","cookie","isNumber","Date","toGMTString","document","match","RegExp","decodeURIComponent","remove","now","payload","originURL","msie","navigator","userAgent","urlParsingNode","createElement","resolveURL","href","setAttribute","host","search","hash","hostname","port","pathname","window","location","requestURL","parsed","normalizedName","ignoreDuplicateOf","line","substr","exec","formData","convertValue","isTypedArray","Blob","Buffer","build","parentKey","fullKey","endsWith","toArray","el","append","thing","deprecatedWarnings","version","formatMessage","opt","desc","opts","ERR_DEPRECATED","schema","allowUnknown","ERR_BAD_OPTION_VALUE","result","ERR_BAD_OPTION","cache","kindOf","str","kindOfTest","isFunction","hasOwnProperty","TypedArray","constructor","pattern","ArrayBuffer","isView","pipe","product","assignValue","a","stripBOM","content","superConstructor","props","sourceObj","destObj","filter","merged","searchString","lastIndex","require","semver","BigNumber","_interopDefaultLegacy","axios__default","semver__default","BigNumber__default","__awaiter","_arguments","P","generator","step","next","__asyncValues","o","Symbol","asyncIterator","s","iterator","__values","verb","d","ERROR_CODES","Method_InvalidParameter","Call_API","Call_NotResponse","Transport_InvalidProtobuf","Device_FwException","Device_UnexpectedMode","Device_CallInProgress","Device_InitializeFailed","Not_Use_Onekey_Device","Runtime","Init_NotInitialized","Init_IframeBlocked","Init_IframeTimeout","Init_AlreadyInitialized","Init_IframeLoadFail","OnekeyError","super","TypedError","serializeError","colors","IFrame","Core","DescriptorStream","DeviceList","Device","DeviceCommands","DeviceConnector","Transport","Log$5","enabled","messages","css","addMessage","level","timestamp","getTime","debug","_logs","initLog","localResolve","_t","localReject","_e","getDeviceType","features","serial_no","miniFlag","getDeviceUUID","onekey_serial","getDeviceLabel","deviceType","label","getDeviceFirmwareVersion","onekey_version","major_version","minor_version","patch_version","getDeviceBLEFirmwareVersion","ble_ver","HD_HARDENED","toHardened","fromHardened","PATH_NOT_VALID","PATH_NEGATIVE_VALUES","getScriptType","serializedPath","map","validatePath","base","valid","hardened","parseInt","getHDPath","_a","DataManager","settings","deviceMap","classic","mini","touch","pro","assets","bridge","default","firmware","ble","nested","BinanceGetAddress","fields","address_n","rule","packed","show_display","BinanceAddress","address","BinanceGetPublicKey","BinancePublicKey","public_key","BinanceSignTx","msg_count","account_number","chain_id","memo","sequence","BinanceTxRequest","BinanceTransferMsg","inputs","outputs","BinanceInputOutput","coins","BinanceCoin","amount","denom","BinanceOrderMsg","ordertype","price","quantity","sender","side","symbol","timeinforce","BinanceOrderType","values","OT_UNKNOWN","MARKET","LIMIT","OT_RESERVED","BinanceOrderSide","SIDE_UNKNOWN","BUY","SELL","BinanceTimeInForce","TIF_UNKNOWN","GTE","TIF_RESERVED","IOC","BinanceCancelMsg","refid","BinanceSignedTx","signature","InputScriptType","SPENDADDRESS","SPENDMULTISIG","EXTERNAL","SPENDWITNESS","SPENDP2SHWITNESS","SPENDTAPROOT","OutputScriptType","PAYTOADDRESS","PAYTOSCRIPTHASH","PAYTOMULTISIG","PAYTOOPRETURN","PAYTOWITNESS","PAYTOP2SHWITNESS","PAYTOTAPROOT","DecredStakingSpendType","SSGen","SSRTX","AmountUnit","BITCOIN","MILLIBITCOIN","MICROBITCOIN","SATOSHI","MultisigRedeemScriptType","pubkeys","signatures","nodes","HDNodePathType","node","GetPublicKey","ecdsa_curve_name","coin_name","script_type","ignore_xpub_magic","PublicKey","xpub","root_fingerprint","GetAddress","multisig","Address","GetOwnershipId","OwnershipId","ownership_id","SignMessage","no_script_type","MessageSignature","VerifyMessage","SignTx","outputs_count","inputs_count","lock_time","expiry","overwintered","deprecated","version_group_id","branch_id","amount_unit","decred_staking_ticket","TxRequest","request_type","details","serialized","RequestType","TXINPUT","TXOUTPUT","TXMETA","TXFINISHED","TXEXTRADATA","TXORIGINPUT","TXORIGOUTPUT","TxRequestDetailsType","request_index","tx_hash","extra_data_len","extra_data_offset","TxRequestSerializedType","signature_index","serialized_tx","TxAck","tx","TransactionType","bin_outputs","inputs_cnt","outputs_cnt","extra_data","TxInputType","prev_hash","prev_index","script_sig","decred_tree","witness","ownership_proof","commitment_data","orig_hash","orig_index","decred_staking_spend","script_pubkey","TxOutputBinType","decred_script_version","TxOutputType","op_return_data","TxInput","TxOutput","PrevTx","PrevInput","PrevOutput","TxAckInput","TxAckInputWrapper","input","TxAckOutput","TxAckOutputWrapper","output","TxAckPrevMeta","TxAckPrevInput","TxAckPrevInputWrapper","TxAckPrevOutput","TxAckPrevOutputWrapper","TxAckPrevExtraData","TxAckPrevExtraDataWrapper","extra_data_chunk","GetOwnershipProof","user_confirmation","ownership_ids","OwnershipProof","AuthorizeCoinJoin","coordinator","max_total_fee","fee_per_anonymity","GetPublicKeyMultiple","addresses","BIP32Address","PublicKeyMultiple","xpubs","FirmwareErase","FirmwareRequest","FirmwareUpload","SelfTest","FirmwareErase_ex","CardanoDerivationType","LEDGER","ICARUS","ICARUS_TREZOR","CardanoAddressType","BASE","BASE_SCRIPT_KEY","BASE_KEY_SCRIPT","BASE_SCRIPT_SCRIPT","POINTER","POINTER_SCRIPT","ENTERPRISE","ENTERPRISE_SCRIPT","BYRON","REWARD","REWARD_SCRIPT","CardanoNativeScriptType","PUB_KEY","ALL","ANY","N_OF_K","INVALID_BEFORE","INVALID_HEREAFTER","CardanoNativeScriptHashDisplayFormat","HIDE","BECH32","POLICY_ID","CardanoCertificateType","STAKE_REGISTRATION","STAKE_DEREGISTRATION","STAKE_DELEGATION","STAKE_POOL_REGISTRATION","CardanoPoolRelayType","SINGLE_HOST_IP","SINGLE_HOST_NAME","MULTIPLE_HOST_NAME","CardanoTxAuxiliaryDataSupplementType","NONE","CATALYST_REGISTRATION_SIGNATURE","CardanoTxSigningMode","ORDINARY_TRANSACTION","POOL_REGISTRATION_AS_OWNER","MULTISIG_TRANSACTION","CardanoTxWitnessType","BYRON_WITNESS","SHELLEY_WITNESS","CardanoBlockchainPointerType","block_index","tx_index","certificate_index","CardanoNativeScript","scripts","key_hash","key_path","required_signatures_count","invalid_before","invalid_hereafter","CardanoGetNativeScriptHash","script","display_format","derivation_type","CardanoNativeScriptHash","script_hash","CardanoAddressParametersType","address_type","address_n_staking","staking_key_hash","certificate_pointer","script_payment_hash","script_staking_hash","CardanoGetAddress","protocol_magic","network_id","address_parameters","CardanoAddress","CardanoGetPublicKey","CardanoPublicKey","CardanoSignTxInit","signing_mode","fee","ttl","certificates_count","withdrawals_count","has_auxiliary_data","validity_interval_start","witness_requests_count","minting_asset_groups_count","CardanoTxInput","CardanoTxOutput","asset_groups_count","CardanoAssetGroup","policy_id","tokens_count","CardanoToken","asset_name_bytes","mint_amount","CardanoPoolOwner","staking_key_path","CardanoPoolRelayParameters","ipv4_address","ipv6_address","host_name","CardanoPoolMetadataType","CardanoPoolParametersType","pool_id","vrf_key_hash","pledge","cost","margin_numerator","margin_denominator","reward_account","owners","relays","metadata","owners_count","relays_count","CardanoTxCertificate","pool","pool_parameters","CardanoTxWithdrawal","CardanoCatalystRegistrationParametersType","voting_public_key","staking_path","reward_address_parameters","nonce","CardanoTxAuxiliaryData","catalyst_registration_parameters","CardanoTxMint","CardanoTxItemAck","CardanoTxAuxiliaryDataSupplement","auxiliary_data_hash","catalyst_signature","CardanoTxWitnessRequest","CardanoTxWitnessResponse","pub_key","chain_code","CardanoTxHostAck","CardanoTxBodyHash","CardanoSignTxFinished","CardanoSignTx","certificates","withdrawals","auxiliary_data","CardanoTxInputType","CardanoTxOutputType","token_bundle","CardanoAssetGroupType","tokens","CardanoTokenType","CardanoPoolOwnerType","CardanoPoolRelayParametersType","CardanoTxCertificateType","CardanoTxWithdrawalType","CardanoTxAuxiliaryDataType","blob","CardanoSignedTxChunk","signed_tx_chunk","CardanoSignedTxChunkAck","CardanoSignedTx","Success","Failure","FailureType","Failure_UnexpectedMessage","Failure_ButtonExpected","Failure_DataError","Failure_ActionCancelled","Failure_PinExpected","Failure_PinCancelled","Failure_PinInvalid","Failure_InvalidSignature","Failure_ProcessError","Failure_NotEnoughFunds","Failure_NotInitialized","Failure_PinMismatch","Failure_WipeCodeMismatch","Failure_InvalidSession","Failure_FirmwareError","ButtonRequest","pages","ButtonRequestType","ButtonRequest_Other","ButtonRequest_FeeOverThreshold","ButtonRequest_ConfirmOutput","ButtonRequest_ResetDevice","ButtonRequest_ConfirmWord","ButtonRequest_WipeDevice","ButtonRequest_ProtectCall","ButtonRequest_SignTx","ButtonRequest_FirmwareCheck","ButtonRequest_Address","ButtonRequest_PublicKey","ButtonRequest_MnemonicWordCount","ButtonRequest_MnemonicInput","_Deprecated_ButtonRequest_PassphraseType","ButtonRequest_UnknownDerivationPath","ButtonRequest_RecoveryHomepage","ButtonRequest_Success","ButtonRequest_Warning","ButtonRequest_PassphraseEntry","ButtonRequest_PinEntry","ButtonAck","PinMatrixRequest","PinMatrixRequestType","PinMatrixRequestType_Current","PinMatrixRequestType_NewFirst","PinMatrixRequestType_NewSecond","PinMatrixRequestType_WipeCodeFirst","PinMatrixRequestType_WipeCodeSecond","PinMatrixRequestType_BackupFirst","PinMatrixRequestType_BackupSecond","PinMatrixAck","pin","new_pin","PassphraseRequest","_on_device","PassphraseAck","passphrase","_state","on_device","Deprecated_PassphraseStateRequest","Deprecated_PassphraseStateAck","HDNodeType","depth","fingerprint","child_num","private_key","BixinPinInputOnDevice","CipherKeyValue","encrypt","ask_on_encrypt","ask_on_decrypt","iv","CipheredKeyValue","IdentityType","proto","user","SignIdentity","identity","challenge_hidden","challenge_visual","SignedIdentity","GetECDHSessionKey","peer_public_key","ECDHSessionKey","session_key","CosiCommit","CosiCommitment","commitment","pubkey","CosiSign","global_commitment","global_pubkey","CosiSignature","DebugLinkDecision","yes_no","swipe","x","y","wait","hold_ms","DebugSwipeDirection","UP","DOWN","LEFT","RIGHT","DebugLinkLayout","lines","DebugLinkReseedRandom","DebugLinkRecordScreen","target_directory","DebugLinkGetState","wait_word_list","wait_word_pos","wait_layout","DebugLinkState","layout","matrix","mnemonic_secret","passphrase_protection","reset_word","reset_entropy","recovery_fake_word","recovery_word_pos","reset_word_pos","mnemonic_type","layout_lines","DebugLinkStop","DebugLinkLog","bucket","text","DebugLinkMemoryRead","DebugLinkMemory","memory","DebugLinkMemoryWrite","flash","DebugLinkFlashErase","sector","DebugLinkEraseSdCard","format","DebugLinkWatchLayout","watch","EosGetPublicKey","EosPublicKey","wif_public_key","raw_public_key","EosSignTx","header","num_actions","EosTxHeader","expiration","ref_block_num","ref_block_prefix","max_net_usage_words","max_cpu_usage_ms","delay_sec","EosTxActionRequest","data_size","EosTxActionAck","transfer","delegate","undelegate","refund","buy_ram","buy_ram_bytes","sell_ram","vote_producer","update_auth","delete_auth","link_auth","unlink_auth","new_account","unknown","EosAsset","EosPermissionLevel","actor","permission","EosAuthorizationKey","weight","EosAuthorizationAccount","account","EosAuthorizationWait","wait_sec","EosAuthorization","threshold","accounts","waits","EosActionCommon","authorization","EosActionTransfer","EosActionDelegate","net_quantity","cpu_quantity","EosActionUndelegate","EosActionRefund","owner","EosActionBuyRam","payer","EosActionBuyRamBytes","bytes","EosActionSellRam","EosActionVoteProducer","voter","proxy","producers","EosActionUpdateAuth","parent","EosActionDeleteAuth","EosActionLinkAuth","requirement","EosActionUnlinkAuth","EosActionNewAccount","creator","active","EosActionUnknown","data_chunk","EosSignedTx","EthereumSignTypedData","primary_type","metamask_v4_compat","EthereumTypedDataStructRequest","EthereumTypedDataStructAck","members","EthereumStructMember","EthereumFieldType","data_type","entry_type","struct_name","EthereumDataType","UINT","INT","BYTES","STRING","BOOL","ADDRESS","ARRAY","STRUCT","EthereumTypedDataValueRequest","member_path","EthereumTypedDataValueAck","EthereumGetPublicKey","EthereumPublicKey","EthereumGetAddress","EthereumAddress","_old_address","EthereumSignTx","gas_price","gas_limit","to","data_initial_chunk","data_length","tx_type","EthereumSignTxEIP1559","max_gas_fee","max_priority_fee","access_list","EthereumAccessList","storage_keys","EthereumTxRequest","signature_v","signature_r","signature_s","EthereumTxAck","EthereumSignMessage","EthereumMessageSignature","EthereumVerifyMessage","EthereumSignMessageEIP712","domain_hash","message_hash","EthereumSignTypedHash","domain_separator_hash","EthereumTypedDataSignature","BackupType","Bip39","Slip39_Basic","Slip39_Advanced","SafetyCheckLevel","Strict","PromptAlways","PromptTemporarily","Initialize","session_id","_skip_passphrase","derive_cardano","GetFeatures","Features","vendor","bootloader_mode","device_id","pin_protection","language","initialized","revision","bootloader_hash","imported","unlocked","_passphrase_cached","firmware_present","needs_backup","model","fw_major","fw_minor","fw_patch","fw_vendor","fw_vendor_keys","unfinished_backup","no_backup","recovery_mode","capabilities","backup_type","sd_card_present","sd_protection","wipe_code_protection","passphrase_always_on_device","safety_checks","auto_lock_delay_ms","display_rotation","experimental_features","ble_name","ble_enable","se_enable","se_ver","backup_only","bootloader_version","spi_flash","initstates","NFT_voucher","cpu_info","pre_firmware","coin_switch","Capability","Capability_Bitcoin","Capability_Bitcoin_like","Capability_Binance","Capability_Cardano","Capability_Crypto","Capability_EOS","Capability_Ethereum","Capability_Lisk","Capability_Monero","Capability_NEM","Capability_Ripple","Capability_Stellar","Capability_Tezos","Capability_U2F","Capability_Shamir","Capability_ShamirGroups","Capability_PassphraseEntry","LockDevice","EndSession","ApplySettings","use_passphrase","homescreen","_passphrase_source","use_ble","use_se","is_bixinapp","fastpay_pin","fastpay_confirm","fastpay_money_limit","fastpay_times","ExportType","SeedEncExportType_NO","SeedEncExportType_YES","MnemonicPlainExportType_YES","ApplyFlags","ChangePin","ChangeWipeCode","SdProtect","operation","SdProtectOperationType","DISABLE","ENABLE","REFRESH","Ping","button_protection","GetEntropy","Entropy","entropy","WipeDevice","LoadDevice","mnemonics","skip_checksum","u2f_counter","ResetDevice","display_random","strength","skip_backup","BackupDevice","EntropyRequest","EntropyAck","RecoveryDevice","word_count","enforce_wordlist","dry_run","RecoveryDeviceType","RecoveryDeviceType_ScrambledWords","RecoveryDeviceType_Matrix","WordRequest","WordRequestType","WordRequestType_Plain","WordRequestType_Matrix9","WordRequestType_Matrix6","WordAck","word","SetU2FCounter","GetNextU2FCounter","NextU2FCounter","DoPreauthorized","PreauthorizedRequest","CancelAuthorization","BixinSeedOperate","seed_importData","SeedRequestType","SeedRequestType_Gen","SeedRequestType_EncExport","SeedRequestType_EncImport","BixinMessageSE","inputmessage","BixinOutMessageSE","outmessage","BixinReboot","BixinBackupRequest","BixinBackupAck","BixinRestoreRequest","BixinRestoreAck","BixinVerifyDeviceRequest","BixinVerifyDeviceAck","cert","BixinWhiteListRequest","addr_in","WL_OperationType","WL_OperationType_Add","WL_OperationType_Delete","WL_OperationType_Inquire","BixinWhiteListAck","BixinLoadDevice","BixinBackupDevice","BixinBackupDeviceAck","DeviceInfoSettings","GetDeviceInfo","DeviceInfo","spiFlash_info","SE_info","ReadSEPublicKey","SEPublicKey","WriteSEPublicCert","public_cert","ReadSEPublicCert","SEPublicCert","SpiFlashWrite","SpiFlashRead","SpiFlashData","SESignMessage","SEMessageSignature","NFTWriteInfo","width","height","name_zh","name_en","NFTWriteData","RebootToBootloader","MoneroTransactionSourceEntry","real_output","real_out_tx_key","real_out_additional_tx_keys","real_output_in_tx_index","rct","mask","multisig_kLRki","subaddr_minor","MoneroOutputEntry","idx","MoneroRctKeyPublic","dest","MoneroMultisigKLRki","K","L","ki","MoneroTransactionDestinationEntry","addr","is_subaddress","original","is_integrated","MoneroAccountPublicAddress","spend_public_key","view_public_key","MoneroTransactionRsigData","rsig_type","offload_type","grouping","rsig","rsig_parts","bp_version","MoneroGetAddress","network_type","minor","payment_id","MoneroAddress","MoneroGetWatchKey","MoneroWatchKey","watch_key","MoneroTransactionInitRequest","tsx_data","MoneroTransactionData","unlock_time","change_dts","num_inputs","mixin","minor_indices","rsig_data","integrated_indices","client_version","hard_fork","monero_version","MoneroTransactionInitAck","hmacs","MoneroTransactionSetInputRequest","src_entr","MoneroTransactionSetInputAck","vini","vini_hmac","pseudo_out","pseudo_out_hmac","pseudo_out_alpha","spend_key","MoneroTransactionInputsPermutationRequest","perm","MoneroTransactionInputsPermutationAck","MoneroTransactionInputViniRequest","orig_idx","MoneroTransactionInputViniAck","MoneroTransactionAllInputsSetRequest","MoneroTransactionAllInputsSetAck","MoneroTransactionSetOutputRequest","dst_entr","dst_entr_hmac","is_offloaded_bp","MoneroTransactionSetOutputAck","tx_out","vouti_hmac","out_pk","ecdh_info","MoneroTransactionAllOutSetRequest","MoneroTransactionAllOutSetAck","extra","tx_prefix_hash","rv","full_message_hash","MoneroRingCtSig","txn_fee","rv_type","MoneroTransactionSignInputRequest","MoneroTransactionSignInputAck","MoneroTransactionFinalRequest","MoneroTransactionFinalAck","cout_key","salt","rand_mult","tx_enc_keys","opening_key","MoneroKeyImageExportInitRequest","num","subs","MoneroSubAddressIndicesList","MoneroKeyImageExportInitAck","MoneroKeyImageSyncStepRequest","tdis","MoneroTransferDetails","out_key","tx_pub_key","additional_tx_pub_keys","internal_output_index","sub_addr_major","sub_addr_minor","MoneroKeyImageSyncStepAck","kis","MoneroExportedKeyImage","MoneroKeyImageSyncFinalRequest","MoneroKeyImageSyncFinalAck","enc_key","MoneroGetTxKeyRequest","salt1","salt2","MoneroGetTxKeyAck","tx_keys","tx_derivations","MoneroLiveRefreshStartRequest","MoneroLiveRefreshStartAck","MoneroLiveRefreshStepRequest","recv_deriv","real_out_idx","MoneroLiveRefreshStepAck","key_image","MoneroLiveRefreshFinalRequest","MoneroLiveRefreshFinalAck","DebugMoneroDiagRequest","ins","p1","p2","pd","data1","data2","DebugMoneroDiagAck","NEMGetAddress","network","NEMAddress","NEMSignTx","transaction","cosigning","provision_namespace","mosaic_creation","supply_change","aggregate_modification","importance_transfer","NEMTransactionCommon","deadline","signer","NEMTransfer","recipient","mosaics","NEMMosaic","namespace","mosaic","NEMProvisionNamespace","sink","NEMMosaicCreation","definition","NEMMosaicDefinition","ticker","divisibility","levy","levy_address","levy_namespace","levy_mosaic","supply","mutable_supply","transferable","networks","NEMMosaicLevy","MosaicLevy_Absolute","MosaicLevy_Percentile","NEMMosaicSupplyChange","delta","NEMSupplyChangeType","SupplyChange_Increase","SupplyChange_Decrease","NEMAggregateModification","modifications","relative_change","NEMCosignatoryModification","NEMModificationType","CosignatoryModification_Add","CosignatoryModification_Delete","NEMImportanceTransfer","mode","NEMImportanceTransferMode","ImportanceTransfer_Activate","ImportanceTransfer_Deactivate","NEMSignedTx","NEMDecryptMessage","NEMDecryptedMessage","RippleGetAddress","RippleAddress","RippleSignTx","last_ledger_sequence","payment","RipplePayment","destination","destination_tag","RippleSignedTx","SolanaGetAddress","SolanaAddress","SolanaSignTx","raw_tx","SolanaSignedTx","StarcoinGetAddress","StarcoinAddress","StarcoinGetPublicKey","StarcoinPublicKey","StarcoinSignTx","StarcoinSignedTx","StarcoinSignMessage","StarcoinMessageSignature","StarcoinVerifyMessage","StellarAssetType","NATIVE","ALPHANUM4","ALPHANUM12","StellarAsset","issuer","StellarGetAddress","StellarAddress","StellarSignTx","network_passphrase","source_account","sequence_number","timebounds_start","timebounds_end","memo_type","memo_text","memo_id","memo_hash","num_operations","StellarMemoType","TEXT","ID","HASH","RETURN","StellarTxOpRequest","StellarPaymentOp","destination_account","asset","StellarCreateAccountOp","starting_balance","StellarPathPaymentStrictReceiveOp","send_asset","send_max","destination_asset","destination_amount","paths","StellarPathPaymentStrictSendOp","send_amount","destination_min","StellarManageSellOfferOp","selling_asset","buying_asset","price_n","price_d","offer_id","StellarManageBuyOfferOp","StellarCreatePassiveSellOfferOp","StellarSetOptionsOp","inflation_destination_account","clear_flags","set_flags","master_weight","low_threshold","medium_threshold","high_threshold","home_domain","signer_type","signer_key","signer_weight","StellarSignerType","ACCOUNT","PRE_AUTH","StellarChangeTrustOp","limit","StellarAllowTrustOp","trusted_account","asset_type","asset_code","is_authorized","StellarAccountMergeOp","StellarManageDataOp","StellarBumpSequenceOp","bump_to","StellarSignedTx","TezosGetAddress","TezosAddress","TezosGetPublicKey","TezosPublicKey","TezosSignTx","branch","reveal","origination","delegation","proposal","ballot","TezosContractID","tag","TezosContractType","Implicit","Originated","TezosRevealOp","counter","storage_limit","TezosTransactionOp","parameters","parameters_manager","TezosParametersManager","set_delegate","cancel_delegate","TezosManagerTransfer","TezosOriginationOp","manager_pubkey","balance","spendable","delegatable","TezosDelegationOp","TezosProposalOp","period","proposals","TezosBallotOp","TezosBallotType","Yay","Nay","Pass","TezosSignedTx","sig_op_contents","operation_hash","WebAuthnListResidentCredentials","WebAuthnAddResidentCredential","credential_id","WebAuthnRemoveResidentCredential","WebAuthnCredentials","credentials","WebAuthnCredential","rp_id","rp_name","user_id","user_name","user_display_name","creation_time","hmac_secret","use_sign_count","algorithm","curve","wire_in","wire_out","wire_debug_in","wire_debug_out","wire_tiny","wire_bootloader","wire_no_fsm","facotry","bitcoin_only","has_bitcoin_only_values","unstable","wire_type","experimental","include_in_bitcoin_only","CommandFlags","Default","Factory_Only","MessageType","MessageType_Initialize","MessageType_Ping","MessageType_Success","MessageType_Failure","MessageType_ChangePin","MessageType_WipeDevice","MessageType_GetEntropy","MessageType_Entropy","MessageType_LoadDevice","MessageType_ResetDevice","MessageType_Features","MessageType_PinMatrixRequest","MessageType_PinMatrixAck","MessageType_Cancel","MessageType_LockDevice","MessageType_ApplySettings","MessageType_ButtonRequest","MessageType_ButtonAck","MessageType_ApplyFlags","MessageType_BackupDevice","MessageType_EntropyRequest","MessageType_EntropyAck","MessageType_PassphraseRequest","MessageType_PassphraseAck","MessageType_RecoveryDevice","MessageType_WordRequest","MessageType_WordAck","MessageType_GetFeatures","MessageType_SdProtect","MessageType_ChangeWipeCode","MessageType_EndSession","MessageType_DoPreauthorized","MessageType_PreauthorizedRequest","MessageType_CancelAuthorization","MessageType_RebootToBootloader","MessageType_SetU2FCounter","MessageType_GetNextU2FCounter","MessageType_NextU2FCounter","MessageType_Deprecated_PassphraseStateRequest","MessageType_Deprecated_PassphraseStateAck","MessageType_FirmwareErase","MessageType_FirmwareErase_ex","MessageType_FirmwareUpload","MessageType_FirmwareRequest","MessageType_SelfTest","MessageType_GetPublicKey","MessageType_PublicKey","MessageType_SignTx","MessageType_TxRequest","MessageType_TxAck","MessageType_GetAddress","MessageType_Address","MessageType_SignMessage","MessageType_VerifyMessage","MessageType_MessageSignature","MessageType_GetOwnershipId","MessageType_OwnershipId","MessageType_GetOwnershipProof","MessageType_OwnershipProof","MessageType_AuthorizeCoinJoin","MessageType_CipherKeyValue","MessageType_CipheredKeyValue","MessageType_SignIdentity","MessageType_SignedIdentity","MessageType_GetECDHSessionKey","MessageType_ECDHSessionKey","MessageType_CosiCommit","MessageType_CosiCommitment","MessageType_CosiSign","MessageType_CosiSignature","MessageType_DebugLinkDecision","MessageType_DebugLinkGetState","MessageType_DebugLinkState","MessageType_DebugLinkStop","MessageType_DebugLinkLog","MessageType_DebugLinkMemoryRead","MessageType_DebugLinkMemory","MessageType_DebugLinkMemoryWrite","MessageType_DebugLinkFlashErase","MessageType_DebugLinkLayout","MessageType_DebugLinkReseedRandom","MessageType_DebugLinkRecordScreen","MessageType_DebugLinkEraseSdCard","MessageType_DebugLinkWatchLayout","MessageType_EthereumGetPublicKey","MessageType_EthereumPublicKey","MessageType_EthereumGetAddress","MessageType_EthereumAddress","MessageType_EthereumSignTx","MessageType_EthereumSignTxEIP1559","MessageType_EthereumTxRequest","MessageType_EthereumTxAck","MessageType_EthereumSignMessage","MessageType_EthereumVerifyMessage","MessageType_EthereumMessageSignature","MessageType_EthereumSignTypedData","MessageType_EthereumTypedDataStructRequest","MessageType_EthereumTypedDataStructAck","MessageType_EthereumTypedDataValueRequest","MessageType_EthereumTypedDataValueAck","MessageType_EthereumTypedDataSignature","MessageType_EthereumSignTypedHash","MessageType_NEMGetAddress","MessageType_NEMAddress","MessageType_NEMSignTx","MessageType_NEMSignedTx","MessageType_NEMDecryptMessage","MessageType_NEMDecryptedMessage","MessageType_TezosGetAddress","MessageType_TezosAddress","MessageType_TezosSignTx","MessageType_TezosSignedTx","MessageType_TezosGetPublicKey","MessageType_TezosPublicKey","MessageType_StellarSignTx","MessageType_StellarTxOpRequest","MessageType_StellarGetAddress","MessageType_StellarAddress","MessageType_StellarCreateAccountOp","MessageType_StellarPaymentOp","MessageType_StellarPathPaymentStrictReceiveOp","MessageType_StellarManageSellOfferOp","MessageType_StellarCreatePassiveSellOfferOp","MessageType_StellarSetOptionsOp","MessageType_StellarChangeTrustOp","MessageType_StellarAllowTrustOp","MessageType_StellarAccountMergeOp","MessageType_StellarManageDataOp","MessageType_StellarBumpSequenceOp","MessageType_StellarManageBuyOfferOp","MessageType_StellarPathPaymentStrictSendOp","MessageType_StellarSignedTx","MessageType_CardanoSignTx","MessageType_CardanoGetPublicKey","MessageType_CardanoPublicKey","MessageType_CardanoGetAddress","MessageType_CardanoAddress","MessageType_CardanoSignedTx","MessageType_CardanoSignedTxChunk","MessageType_CardanoSignedTxChunkAck","MessageType_CardanoTxItemAck","MessageType_CardanoTxAuxiliaryDataSupplement","MessageType_CardanoTxWitnessRequest","MessageType_CardanoTxWitnessResponse","MessageType_CardanoTxHostAck","MessageType_CardanoTxBodyHash","MessageType_CardanoSignTxFinished","MessageType_CardanoSignTxInit","MessageType_CardanoTxInput","MessageType_CardanoTxOutput","MessageType_CardanoAssetGroup","MessageType_CardanoToken","MessageType_CardanoTxCertificate","MessageType_CardanoTxWithdrawal","MessageType_CardanoTxAuxiliaryData","MessageType_CardanoPoolOwner","MessageType_CardanoPoolRelayParameters","MessageType_CardanoGetNativeScriptHash","MessageType_CardanoNativeScriptHash","MessageType_CardanoTxMint","MessageType_RippleGetAddress","MessageType_RippleAddress","MessageType_RippleSignTx","MessageType_RippleSignedTx","MessageType_MoneroTransactionInitRequest","MessageType_MoneroTransactionInitAck","MessageType_MoneroTransactionSetInputRequest","MessageType_MoneroTransactionSetInputAck","MessageType_MoneroTransactionInputsPermutationRequest","MessageType_MoneroTransactionInputsPermutationAck","MessageType_MoneroTransactionInputViniRequest","MessageType_MoneroTransactionInputViniAck","MessageType_MoneroTransactionAllInputsSetRequest","MessageType_MoneroTransactionAllInputsSetAck","MessageType_MoneroTransactionSetOutputRequest","MessageType_MoneroTransactionSetOutputAck","MessageType_MoneroTransactionAllOutSetRequest","MessageType_MoneroTransactionAllOutSetAck","MessageType_MoneroTransactionSignInputRequest","MessageType_MoneroTransactionSignInputAck","MessageType_MoneroTransactionFinalRequest","MessageType_MoneroTransactionFinalAck","MessageType_MoneroKeyImageExportInitRequest","MessageType_MoneroKeyImageExportInitAck","MessageType_MoneroKeyImageSyncStepRequest","MessageType_MoneroKeyImageSyncStepAck","MessageType_MoneroKeyImageSyncFinalRequest","MessageType_MoneroKeyImageSyncFinalAck","MessageType_MoneroGetAddress","MessageType_MoneroAddress","MessageType_MoneroGetWatchKey","MessageType_MoneroWatchKey","MessageType_DebugMoneroDiagRequest","MessageType_DebugMoneroDiagAck","MessageType_MoneroGetTxKeyRequest","MessageType_MoneroGetTxKeyAck","MessageType_MoneroLiveRefreshStartRequest","MessageType_MoneroLiveRefreshStartAck","MessageType_MoneroLiveRefreshStepRequest","MessageType_MoneroLiveRefreshStepAck","MessageType_MoneroLiveRefreshFinalRequest","MessageType_MoneroLiveRefreshFinalAck","MessageType_EosGetPublicKey","MessageType_EosPublicKey","MessageType_EosSignTx","MessageType_EosTxActionRequest","MessageType_EosTxActionAck","MessageType_EosSignedTx","MessageType_BinanceGetAddress","MessageType_BinanceAddress","MessageType_BinanceGetPublicKey","MessageType_BinancePublicKey","MessageType_BinanceSignTx","MessageType_BinanceTxRequest","MessageType_BinanceTransferMsg","MessageType_BinanceOrderMsg","MessageType_BinanceCancelMsg","MessageType_BinanceSignedTx","MessageType_SolanaGetAddress","MessageType_SolanaAddress","MessageType_SolanaSignTx","MessageType_SolanaSignedTx","MessageType_StarcoinGetAddress","MessageType_StarcoinAddress","MessageType_StarcoinGetPublicKey","MessageType_StarcoinPublicKey","MessageType_StarcoinSignTx","MessageType_StarcoinSignedTx","MessageType_StarcoinSignMessage","MessageType_StarcoinMessageSignature","MessageType_StarcoinVerifyMessage","MessageType_WebAuthnListResidentCredentials","MessageType_WebAuthnCredentials","MessageType_WebAuthnAddResidentCredential","MessageType_WebAuthnRemoveResidentCredential","MessageType_BixinSeedOperate","MessageType_BixinMessageSE","MessageType_BixinReboot","MessageType_BixinOutMessageSE","MessageType_BixinBackupRequest","MessageType_BixinBackupAck","MessageType_BixinRestoreRequest","MessageType_BixinRestoreAck","MessageType_BixinVerifyDeviceRequest","MessageType_BixinVerifyDeviceAck","MessageType_BixinWhiteListRequest","MessageType_BixinWhiteListAck","MessageType_BixinLoadDevice","MessageType_BixinBackupDevice","MessageType_BixinBackupDeviceAck","MessageType_BixinPinInputOnDevice","MessageType_EthereumSignMessageEIP712","MessageType_GetPublicKeyMultiple","MessageType_PublicKeyMultiple","MessageType_DeviceInfoSettings","MessageType_GetDeviceInfo","MessageType_DeviceInfo","MessageType_ReadSEPublicKey","MessageType_SEPublicKey","MessageType_WriteSEPublicCert","MessageType_ReadSEPublicCert","MessageType_SEPublicCert","MessageType_SpiFlashWrite","MessageType_SpiFlashRead","MessageType_SpiFlashData","MessageType_SESignMessage","MessageType_SEMessageSignature","MessageType_NFTWriteInfo","MessageType_NFTWriteData","google","protobuf","FileDescriptorSet","file","FileDescriptorProto","dependency","public_dependency","weak_dependency","message_type","enum_type","service","extension","source_code_info","syntax","DescriptorProto","field","nested_type","extension_range","oneof_decl","reserved_range","reserved_name","ExtensionRange","ReservedRange","FieldDescriptorProto","type_name","extendee","default_value","oneof_index","json_name","Type","TYPE_DOUBLE","TYPE_FLOAT","TYPE_INT64","TYPE_UINT64","TYPE_INT32","TYPE_FIXED64","TYPE_FIXED32","TYPE_BOOL","TYPE_STRING","TYPE_GROUP","TYPE_MESSAGE","TYPE_BYTES","TYPE_UINT32","TYPE_ENUM","TYPE_SFIXED32","TYPE_SFIXED64","TYPE_SINT32","TYPE_SINT64","Label","LABEL_OPTIONAL","LABEL_REQUIRED","LABEL_REPEATED","OneofDescriptorProto","EnumDescriptorProto","EnumValueDescriptorProto","ServiceDescriptorProto","MethodDescriptorProto","input_type","output_type","client_streaming","server_streaming","FileOptions","java_package","java_outer_classname","java_multiple_files","java_generate_equals_and_hash","java_string_check_utf8","optimize_for","go_package","cc_generic_services","java_generic_services","py_generic_services","cc_enable_arenas","objc_class_prefix","csharp_namespace","uninterpreted_option","extensions","reserved","OptimizeMode","SPEED","CODE_SIZE","LITE_RUNTIME","MessageOptions","message_set_wire_format","no_standard_descriptor_accessor","map_entry","FieldOptions","ctype","jstype","lazy","weak","CType","CORD","STRING_PIECE","JSType","JS_NORMAL","JS_STRING","JS_NUMBER","OneofOptions","EnumOptions","allow_alias","EnumValueOptions","ServiceOptions","MethodOptions","UninterpretedOption","identifier_value","positive_int_value","negative_int_value","double_value","string_value","aggregate_value","NamePart","name_part","is_extension","SourceCodeInfo","Location","span","leading_comments","trailing_comments","leading_detached_comments","GeneratedCodeInfo","annotation","Annotation","source_file","begin","getFirmwareStatus","_b","_c","deviceFirmwareVersion","targetDeviceConfigList","latestFirmware","latestVersion","currentVersion","gt","required","getBLEFirmwareStatus","deviceBLEFirmwareVersion","latestBLEFirmware","getTransportStatus","localVersion","latestTransportVersion","gte","Log$4","TransportManager","defaultMessages","getProtobufMessages","currentMessages","getSettings","reactNativeInit","transport","configure","TransportConstructor","scanTimeout","CORE_EVENT","UI_EVENT","UI_REQUEST$1","createUiMessage","event","IFRAME","INIT","INIT_BRIDGE","CALL","RESPONSE_EVENT","createResponseMessage","success","UI_RESPONSE","DEVICE","Log$3","device","mainId","getTransport","disposed","dispose","_cancelableRequest","msg","callPromise","res","typedCall","resType","_commonCall","includes","assertType","resp","_filterCommonTypes","_promptPin","UI_REQUEST","DEFAULT_DOMAIN","initialSettings","configSrc","priority","trustedHost","connectSrc","iframeSrc","parentOrigin","origin","supportedBrowser","lazyLoad","Log$2","descriptor","deviceConnector","featuresNeedsReload","externalState","unavailableCapabilities","internalState","loaded","needReloadDevice","keepSession","originalDescriptor","toMessageObject","isUnacquired","connectId","uuid","deviceId","getMode","firmwareVersion","getFirmwareVersion","bleFirmwareVersion","getBLEFirmwareVersion","connect","isUsedHere","acquire","_d","mainIdKey","session","updateDescriptor","commands","runPromise","release","getInternalState","initialize","_updateFeatures","getFeatures","feat","originalSession","upcomingSession","run","parseRunOptions","_runInner","isUsed","isUsedElsewhere","isBootloader","isInitialized","isSeedless","hasUnexpectedMode","allow","devices","getDeviceLists","e_1","deviceDiff","connector","enumerate","descriptorList","deviceList","descriptorList_1_1","descriptorList_1","fromDescriptor","e_1_1","return","allDevices","getDevice","BaseMethod","responseID","useDevice","allowDeviceMode","requireDeviceMode","setDevice","hasHexPrefix","stripHexStartZeroes","formatAnyHex","stripped","object","transformer","fromEntries","entries","invalidParameter","validateParams","allowEmpty","toFixed","isHexString","bitcoin","slip44","getCoinInfo","coin","coinInfo","coinName","find","processTxRequest$1","txRequest","refTxs","serializedTx","saveTxSignatures$1","dataLen","dataOffset","substring","requestPrevTxInfo$1","requestSignedTxInfo$1","requestTxAck$1","signtx","refTxsArray","processTxRequest","saveTxSignatures","txAck","meta","requestPrevTxInfo","requestSignedTxInfo","requestTxAck","signtxLegacy","cutString","cutLen","ApiMethods","freeze","__proto__","searchDevices","devicesDescriptor","startsWith","devicesDescriptor_1_1","devicesDescriptor_1","btcGetAddress","hasBundle","bundle","batch","addressN","showOnOneKey","scriptType","responses","param","btcGetPublicKey","btcSignMessage","messageHex","isMultisig","isMultisigPath","getCoinAndScriptType","btcSignTransaction","useAmount","getOutputScriptType","locktime","versionGroupId","branchId","useLegacySignProcess","replaceTransaction","signTxMethod","btcVerifyMessage","checkFirmwareRelease","firmwareStatus","checkBLEFirmwareRelease","checkTransportRelease","deviceBackup","deviceChangePin","deviceFlags","deviceRebootToBootloader","deviceRecovery","wordCount","passphraseProtection","pinProtection","enforceWordlist","u2fCounter","dryRun","deviceReset","displayRandom","skipBackup","noBackup","backupType","deviceSettings","usePassphrase","passphraseSource","autoLockDelayMs","displayRotation","passphraseAlwaysOnDevice","safetyChecks","experimentalFeatures","deviceUpdateReboot","deviceWipe","evmGetAddress","evmGetPublicKey","evmSignMessage","evmSignMessageEIP712","domainHash","messageHash","evmSignTransaction","isEIP1559","r","first","rest","evmSignTx","gasPrice","gasLimit","chainId","txType","evmSignTxEip1559","maxFeePerGas","maxPriorityFeePerGas","accessList","storageKeys","formattedTx","signedTx","evmSignTypedData","metamaskV4Compat","primaryType","evmVerifyMessage","starcoinGetAddress","starcoinGetPublicKey","starcoinSignMessage","starcoinSignTransaction","rawTx","starcoinVerifyMessage","publicKey","Log$1","listenTimestamp","current","upcoming","listening","load","diff","_reportDevicesChange","listen","waitForEvent","time","stop","previous","onclose","connected","disconnected","changedSessions","currentDescriptor","acquired","released","changedDebugSessions","debugSession","debugAcquired","debugReleased","didUpdate","getDiff","Log","_core","_deviceList","_connector","_callPromise","_uiPromises","callAPI","messageResponse","MethodConstructor","findMethod","initDeviceList","initDevice","initDeviceForBle","onDevicePinHandler","onDeviceButtonHandler","inner","unexpectedMode","reconfigure","closePopup","cleanup","postMessage","uiPromise","createUiPromise","uiResp","promiseEvent","handleMessage","setTransport","initTransport","globalSrc","isFrame","ONEKEY_CONNECT_SRC","global","corsValidator","src","transportReconnect","chrome","runtime","onConnect","getEnv","messageData","transport__default","parseResult","fetchOptions","resJson","check","buildOne","receiveOne","parseConfigure","configured","stopped","_post","_silentInit","infoS","info","signedData","_messages","old","devicesS","_acquireMixed","previousStr","acquireS","outData","resData","jsonData","post","requestDevice","Long","ByteBuffer","_interopNamespace","__esModule","k","getOwnPropertyDescriptor","protobuf__namespace","Long__namespace","ByteBuffer__default","primitiveTypes","isPrimitiveField","transform$1","optional","wrap","long","isSafeInteger","toNumber","messageToJSON","Message","propertyIsEnumerable","__rest","repeated","resolvedType","valuesById","transform","fieldType","patch","patched","RefMessage","lookupTypeOrEnum","lookupType","lookupEnum","encode$1","fromObject","finish","bytebuffer","byteLength","reset","createMessageFromName","messageType","addTrezorHeaders","chunked","fullSize","HEADER_SIZE","encodedByteBuffer","writeByte","writeUint16","writeUint32","min","compact","ERROR","convertSession","Enum_InputScriptType","Enum_OutputScriptType","Enum_RequestType","Enum_ButtonRequestType","Enum_PinMatrixRequestType","DebugButton","Enum_BackupType","Enum_SafetyCheckLevel","Enum_Capability","Enum_WordRequestType","util","buildBuffers","encodeBuffers","outBuffers","chunkBuffer","BUFFER_SIZE","typeId","byteBuffer","readUint16","readUint32","readHeader","messageName","createMessageFromType","buff","toBuffer","decoded","$type","decode$1","Root","fromJSON","COMMON_HEADER_SIZE","MESSAGE_HEADER_BYTE","MESSAGE_TOP_CHAR","Messages","lens","getLens","validLen","placeHoldersLen","toByteArray","tmp","Arr","_byteLength","curByte","revLookup","fromByteArray","uint8","extraBytes","maxChunkLength","len2","encodeChunk","lookup","globalObject","isNumeric","mathceil","mathfloor","bignumberError","tooManyDigits","LOG_BASE","MAX_SAFE_INTEGER","POWS_TEN","SQRT_BASE","bitFloor","coeffToString","z","compare","xc","yc","intCheck","max","isOdd","toExponential","toFixedPoint","zs","clone","configObject","div","convertBase","parseNumeric","pow2_53","random53bitInt","basePrefix","dotAfter","dotBefore","isInfinityOrNaN","whitespaceOrPlus","valueOf","ONE","DECIMAL_PLACES","ROUNDING_MODE","TO_EXP_NEG","TO_EXP_POS","MIN_EXP","MAX_EXP","CRYPTO","MODULO_MODE","POW_PRECISION","FORMAT","groupSize","secondaryGroupSize","groupSeparator","decimalSeparator","fractionGroupSize","fractionGroupSeparator","suffix","ALPHABET","alphabetHasNormalDecimalDigits","alphabet","caseChanged","isNum","_isBigNumber","DEBUG","rm","c0","ne","maxOrMin","normalise","sd","ni","rd","pows10","out","ROUND_UP","ROUND_DOWN","ROUND_CEIL","ROUND_FLOOR","ROUND_HALF_UP","ROUND_HALF_DOWN","ROUND_HALF_EVEN","ROUND_HALF_CEIL","ROUND_HALF_FLOOR","EUCLID","crypto","getRandomValues","randomBytes","EXPONENTIAL_AT","RANGE","isBigNumber","maximum","lt","minimum","random","dp","rand","Uint32Array","sum","plus","decimal","toBaseOut","baseIn","baseOut","arrL","reverse","callerIsToString","multiply","temp","xlo","xhi","carry","klo","khi","aL","bL","cmp","subtract","more","prod","prodL","q","qc","rem","remL","rem0","xi","xL","yc0","yL","yz","absoluteValue","abs","comparedTo","decimalPlaces","dividedBy","dividedToIntegerBy","idiv","exponentiatedBy","half","isModExp","nIsBig","nIsNeg","nIsOdd","isInteger","times","integerValue","isEqualTo","eq","isFinite","isGreaterThan","isGreaterThanOrEqualTo","isLessThan","isLessThanOrEqualTo","lte","isNegative","isPositive","isZero","minus","xLTy","xe","ye","modulo","multipliedBy","xcL","ycL","ylo","yhi","zc","sqrtBase","negated","precision","shiftedBy","squareRoot","sqrt","rep","toFormat","g1","g2","intPart","fractionPart","isNeg","intDigits","toFraction","md","d0","d1","d2","exp","n0","n1","toPrecision","ieee754","customInspectSymbol","SlowBuffer","INSPECT_MAX_BYTES","K_MAX_LENGTH","createBuffer","setPrototypeOf","encodingOrOffset","allocUnsafe","encoding","isEncoding","actual","fromString","arrayView","isInstance","fromArrayBuffer","byteOffset","fromArrayLike","fromArrayView","SharedArrayBuffer","checked","numberIsNaN","toPrimitive","assertSize","array","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","byteArray","asciiToBytes","base64Write","ucs2Write","units","utf16leToBytes","secondByte","thirdByte","fourthByte","tempCodePoint","firstByte","codePoint","bytesPerSequence","codePoints","MAX_ARGUMENTS_LENGTH","decodeCodePointsArray","kMaxLength","TYPED_ARRAY_SUPPORT","foo","typedArraySupport","poolSize","fill","allocUnsafeSlow","_isBuffer","swap16","swap32","swap64","toLocaleString","equals","inspect","thisStart","thisEnd","thisCopy","targetCopy","_arr","hexSliceLookupTable","checkOffset","ext","checkInt","checkIEEE754","writeFloat","littleEndian","noAssert","writeDouble","newBuf","subarray","readUIntLE","mul","readUIntBE","readUint8","readUInt8","readUint16LE","readUInt16LE","readUint16BE","readUint32LE","readUInt32LE","readUint32BE","readUInt32BE","readIntLE","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","writeUIntLE","writeUIntBE","writeUint8","writeUInt8","writeUint16LE","writeUInt16LE","writeUint16BE","writeUInt16BE","writeUint32LE","writeUInt32LE","writeUint32BE","writeUInt32BE","writeIntLE","sub","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","targetStart","copyWithin","INVALID_BASE64_RE","leadSurrogate","base64clean","dst","table","i16","capacity","DEFAULT_CAPACITY","DEFAULT_ENDIAN","DEFAULT_NOASSERT","EMPTY_BUFFER","view","markedOffset","LITTLE_ENDIAN","BIG_ENDIAN","ByteBufferPrototype","__isByteBuffer__","configurable","stringFromCharCode","stringSource","stringDestination","cs","ps","ieee754_read","isLE","mLen","nBytes","eLen","eMax","eBias","nBits","ieee754_write","rt","accessor","allocate","buffers","isByteBuffer","bi","bb","fromBase64","fromHex","fromBinary","fromUTF8","fromDebug","writeBitSet","relative","bits","bit","writeVarint32","readBitSet","readVarint32","readByte","readBytes","writeBytes","capacity0","resize","capacity1","writeInt16","capacity2","writeShort","readInt16","readShort","capacity3","writeUInt16","readUInt16","writeInt32","capacity4","writeInt","readInt32","readInt","capacity5","writeUInt32","readUInt32","writeInt64","fromNumber","capacity6","low","high","writeLong","readInt64","readLong","writeUint64","capacity7","writeUInt64","readUint64","readUInt64","writeFloat32","capacity8","readFloat32","readFloat","writeFloat64","capacity9","readFloat64","readDouble","MAX_VARINT32_BYTES","calculateVarint32","zigZagEncode32","zigZagDecode32","capacity10","writeVarint32ZigZag","readVarint32ZigZag","MAX_VARINT64_BYTES","calculateVarint64","part0","toInt","part1","shiftRightUnsigned","part2","zigZagEncode64","unsigned","toSigned","shiftLeft","xor","shiftRight","toUnsigned","zigZagDecode64","and","negate","writeVarint64","capacity11","writeVarint64ZigZag","readVarint64","fromBits","readVarint64ZigZag","writeCString","utfx","calculateUTF16asUTF8","capacity12","encodeUTF16toUTF8","readCString","decodeUTF8toUTF16","writeIString","capacity13","readIString","readUTF8String","METRICS_BYTES","METRICS_CHARS","writeUTF8String","capacity14","writeString","calculateUTF8Chars","calculateUTF8Bytes","calculateString","metrics","decodeUTF8","cp","UTF8toUTF16","readString","writeVString","capacity15","readVString","capacity16","appendTo","assert","clear","copyTo","targetOffset","sourceOffset","sourceLimit","targetRelative","ensureCapacity","flip","mark","order","LE","BE","bigEndian","prependTo","printDebug","toDebug","skip","forceCopy","toArrayBuffer","toUTF8","toBase64","toHex","toBinary","toColumns","lxiv","aout","ain","t1","t2","fail","atob","chars","charCode","columns","hex","asc","ch","rs","ho","hm","hl","UTF16toUTF8","encodeUTF8","isLong","__isLong__","INT_CACHE","UINT_CACHE","fromInt","cachedObj","UZERO","ZERO","TWO_PWR_64_DBL","MAX_UNSIGNED_VALUE","TWO_PWR_63_DBL","MIN_VALUE","MAX_VALUE","neg","TWO_PWR_32_DBL","lowBits","highBits","pow_dbl","radix","radixToPower","power","add","fromValue","TWO_PWR_16_DBL","TWO_PWR_24","UONE","NEG_ONE","LongPrototype","radixLong","rem1","remDiv","digits","getHighBits","getHighBitsUnsigned","getLowBits","getLowBitsUnsigned","getNumBitsAbs","isEven","other","notEquals","neq","lessThan","comp","lessThanOrEqual","greaterThan","greaterThanOrEqual","thisNeg","otherNeg","not","addend","a48","a32","a16","a00","b48","b32","b16","c48","c32","c16","c00","subtrahend","multiplier","b00","divide","divisor","approx","shru","shr","shl","log2","approxRes","approxRem","or","numBits","toBytes","toBytesLE","toBytesBE","vertxNext","customSchedulerFn","asap","queue","flush","scheduleFlush","browserWindow","browserGlobal","BrowserMutationObserver","MutationObserver","WebKitMutationObserver","isNode","self","isWorker","Uint8ClampedArray","importScripts","MessageChannel","useSetTimeout","globalSetTimeout","channel","iterations","observer","onFulfillment","onRejection","child","noop","PROMISE_ID","makePromise","invokeCallback","_result","resolve$1","nextTick","createTextNode","observe","characterData","port1","onmessage","port2","vertx","runOnLoop","runOnContext","attemptVertx","PENDING","handleMaybeThenable","maybeThenable","then$$1","thenable","fulfill","handleOwnThenable","sealed","fulfillmentHandler","rejectionHandler","tryThen","_label","handleForeignThenable","publishRejection","_onerror","publish","_subscribers","subscribers","settled","detail","hasCallback","succeeded","Enumerator","Constructor","_instanceConstructor","_remaining","_enumerate","_eachEntry","entry","resolve$$1","_then","didError","_settledAt","Promise$1","_willSettleAt","enumerator","needsResolver","initializePromise","needsNew","catch","finally","race","_","_setScheduler","scheduleFn","_setAsap","asapFn","_asap","polyfill","local","g","promiseToString","cast","stable","deterministicStringify","stableStringify","LIMIT_REPLACE_NODE","CIRCULAR_REPLACE_NODE","replacerStack","defaultOptions","depthLimit","edgesLimit","replacer","spacer","decirc","replaceGetterValues","part","setReplace","propertyDescriptor","edgeIndex","compareFunction","deterministicDecirc","sort","getRawTag","objectToString","symToStringTag","toStringTag","freeGlobal","getPrototype","overArg","objectProto","nativeObjectToString","isOwn","unmasked","func","freeSelf","root","baseGetTag","isObjectLike","funcProto","funcToString","objectCtorString","Ctor","wasm","WebAssembly","Instance","Module","eqz","ge","get_high","div_u","div_s","rem_u","rem_s","shr_u","fromBytes","fromBytesLE","fromBytesBE","Yallist","LENGTH","LENGTH_CALCULATOR","ALLOW_STALE","MAX_AGE","DISPOSE","NO_DISPOSE_ON_SET","LRU_LIST","CACHE","UPDATE_AGE_ON_GET","naiveLength","doUse","hit","isStale","del","unshiftNode","maxAge","walker","tail","prev","delete","removeNode","Entry","forEachStep","thisp","lc","stale","noDisposeOnSet","updateAgeOnGet","mL","allowStale","mA","lengthCalculator","lC","itemCount","rforEach","head","Map","dump","dumpLru","has","item","peek","expiresAt","prune","plural","ms","msAbs","isPlural","parseFloat","fmtShort","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","runTimeout","fun","clearTimeout","currentQueue","draining","queueIndex","cleanUpNextTick","drainQueue","marker","runClearTimeout","Item","title","browser","argv","versions","binding","cwd","chdir","umask","converter","Enum","genValuePartial_fromObject","gen","fieldIndex","typeDefault","fullName","isUnsigned","genValuePartial_toObject","mtype","fieldsArray","safeProp","toObject","compareFieldsById","repeatedFields","mapFields","normalFields","partOf","arrayDefault","hasKs2","_fieldsArray","group","ref","types","keyType","basic","rfield","missing","wireType","mapKey","genTypePartial","ReflectionObject","className","Namespace","comment","comments","json","enm","toJSONOptions","keepComments","Boolean","isReservedId","isReservedName","Field","ruleRe","defaultValue","extensionField","declaringField","_packed","getOption","setOption","ifNotSet","resolved","newBuffer","emptyObject","emptyArray","ctor","fieldId","fieldRule","decorateType","decorateEnum","fieldName","_configure","Type_","loadSync","decoder","verifier","OneOf","MapField","Service","Method","wrappers","Writer","BufferWriter","Reader","BufferReader","rpc","roots","resolvedKeyType","fieldKeyType","fieldValueType","properties","writer","encodeDelimited","reader","decodeDelimited","verify","requestType","requestStream","responseStream","parsedOptions","resolvedRequestType","resolvedResponseType","arrayToJSON","_nestedArray","clearCache","addJSON","nestedArray","nestedJson","names","methods","getEnum","setOptions","onAdd","onRemove","define","ptr","resolveAll","filterTypes","parentAlreadyChecked","lookupService","Service_","Enum_","_handleAdd","_handleRemove","setParsedOption","propName","newValue","setProperty","newOpt","Root_","fieldNames","oneof","addFieldsToParent","oneofName","oneOfGetter","oneOfSetter","LongBits","indexOutOfRange","writeLength","create_array","readLongVarint","readFixed32_end","readFixed64","_slice","uint32","int32","sint32","bool","fixed32","sfixed32","float","double","skipType","BufferReader_","int64","uint64","sint64","zzDecode","fixed64","sfixed64","deferred","files","SYNC","resolvePath","sync","cb","getBundledFileName","altname","imports","weakImports","queued","readFileSync","exposeRe","tryHandleExtension","extendedType","sisterField","parse_","common_","rpcImpl","requestDelimited","responseDelimited","rpcCall","requestCtor","responseCtor","endedByRPC","_methodsArray","inherited","methodsArray","rpcService","methodName","lcFirst","isReserved","oneofs","_fieldsById","_oneofsArray","_ctor","fieldsById","oneofsArray","generateConstructor","ctorProperties","setup","wrapper","originalThis","fork","ldelim","typeName","bake","safePropBackslashRe","safePropQuoteRe","ucFirst","camelCaseRe","camelCase","decorateRoot","decorateEnumIndex","setProp","prevValue","zero","zzEncode","zeroHash","toLong","fromHash","toHash","newError","CustomError","captureStackTrace","isset","isSet","_Buffer_from","_Buffer_allocUnsafe","sizeOrArray","dcodeIO","key2Re","key32Re","key64Re","longToHash","longFromHash","ProtocolError","fieldMap","longs","enums","seenFirstField","invalid","genVerifyKey","genVerifyValue","oneofProp","expected","type_url","Op","State","states","VarintOp","writeFixed32","_push","BufferWriter_","writeStringBuffer","writeBytesBuffer","Comparator","parseOptions","loose","operator","re","COMPARATORLOOSE","COMPARATOR","SemVer","intersects","includePrerelease","Range","sameDirectionIncreasing","sameDirectionDecreasing","sameSemVer","differentDirectionsInclusive","oppositeDirectionsLessThan","oppositeDirectionsGreaterThan","range","raw","parseRange","isNullSet","isAny","comps","memoKey","cached","hr","HYPHENRANGELOOSE","HYPHENRANGE","hyphenReplace","COMPARATORTRIM","comparatorTrimReplace","rangeList","TILDETRIM","tildeTrimReplace","CARETTRIM","caretTrimReplace","parseComparator","replaceGTE0","rangeMap","comparators","some","thisComparators","isSatisfiable","rangeComparators","every","thisComparator","rangeComparator","testSet","remainingComparators","testComparator","otherComparator","replaceCarets","replaceTildes","replaceXRanges","replaceStars","isX","replaceTilde","TILDELOOSE","TILDE","M","pr","replaceCaret","CARETLOOSE","CARET","replaceXRange","XRANGELOOSE","XRANGE","gtlt","xM","xm","xp","anyX","STAR","GTE0PRE","GTE0","incPr","fM","fm","fp","fpr","fb","tM","tm","tp","tpr","tb","prerelease","allowed","major","MAX_LENGTH","compareIdentifiers","LOOSE","FULL","compareMain","comparePre","compareBuild","inc","identifier","op","rtl","COERCERTL","COERCE","versionA","versionB","version1","version2","v1","v2","hasPre","defaultResult","internalRe","SEMVER_SPEC_VERSION","rcompareIdentifiers","clean","rcompare","compareLoose","rsort","coerce","satisfies","toComparators","maxSatisfying","minSatisfying","minVersion","validRange","outside","gtr","ltr","simplifyRange","subset","MAX_SAFE_COMPONENT_LENGTH","NODE_DEBUG","numeric","anum","bnum","reduce","createToken","isGlobal","NUMERICIDENTIFIER","NUMERICIDENTIFIERLOOSE","NONNUMERICIDENTIFIER","PRERELEASEIDENTIFIER","PRERELEASEIDENTIFIERLOOSE","BUILDIDENTIFIER","MAINVERSION","PRERELEASE","BUILD","FULLPLAIN","MAINVERSIONLOOSE","PRERELEASELOOSE","LOOSEPLAIN","XRANGEIDENTIFIER","XRANGEIDENTIFIERLOOSE","GTLT","XRANGEPLAIN","XRANGEPLAINLOOSE","LONETILDE","LONECARET","r1","r2","maxSV","rangeObj","minSV","minver","setMin","comparator","compver","hilo","gtfn","ltefn","ltfn","ecomp","ranges","simplified","simpleSubset","dom","eqSet","Set","gtltComp","higher","lower","hasDomLT","hasDomGT","higherGT","lowerLT","needDomLTPre","needDomGTPre","sawNonNull","OUTER","simpleSub","simpleDom","isSub","insert","inserted","Node","pushNode","forEachReverse","getReverse","mapReverse","initial","acc","reduceReverse","toArrayReverse","sliceReverse","deleteCount","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","getter","globalThis","getOrigin","safeApply","EventEmitterProxy","eventName","storageKey","exportsBrowser","useColors","humanize","color","lastC","namespaces","storage","setItem","removeItem","getItem","__nwjs","documentElement","style","WebkitAppearance","firebug","exception","$$onekeyAppStorage","localStorage","customLocalStorage","destroy","createDebug","prevTime","namespacesCache","enabledCache","enableOverride","curr","formatter","formatters","formatArgs","selectColor","delimiter","newDebug","toNamespace","regexp","disable","skips","enable","save","_isFakeLogger","trace","loggerNames","FakeDebugLogger","jsBridge","providerBase","extInjected","extContentScripts","webview","desktopInjected","ethereum","_debug","_externalLogger","_createExternalLog","initExternalLogInstances","isDebugReady","_attachExternalLogger","logger","_createDebugInstance","appDebugLogger","_debugInstanceCreatedMap","initDebugInstances","_debugLog","_originLog","IJsBridgeMessageTypes","IInjectedProviderNames","serialize","stringifyReplacer","Web3ProviderError","isValidWeb3ProviderCode","errorCodes","standard","getMessageFromCode","fallbackMessage","codeString","isJsonRpcServerError","web3Errors","getWeb3ProviderError","parseOpts","globalWindow","BRIDGE_EVENTS","_requestPayloadCache","isExtUi","isInjected","sendAsString","globalOnMessageEnabled","providersHub","globalOnMessage","receiveHandler","returnValue","scope","remoteId","REQUEST","responseError","remoteInfo","callbacksExpireTimeout","debugLogger","callbacks","callbackId","rejectExpiredCallbacks","attachProviderInstance","provider","providerName","createCallbackId","createPayload","created","errorInfo","toPlainError","_id","payloadToSend","sendPayload","rejectCallback","processCallback","resolveCallback","callbackInfo","clearCallbackCache","receive","payloadReceived","internal","payloadObj","isLegacyExtMessage","relatedSendPayload","RESPONSE","error0","eventMessagePayload","requestSync","postMessageListenerAdded","JsBridgeIframe","bridgeConfig","targetOrigin","eventData","frameName","remoteFrameName","$onekey","setupPostMessageListener","selfFrameName","direction","remoteFrame","frameBridge","hostBridge","sendMessage","async","isHost","JSBridgeConfig","parseMessage","parseConnectSettings","initCore","HttpTransport","createErrorMessage","createJsBridge","messageEvent","createIFrameMessage"],"sourceRoot":""}
|