{"version":3,"file":"index.cjs","sources":["../../src/utils/enums.ts","../../src/utils/validateArgs.ts","../../src/utils/getGas.ts","../../src/utils/constants/sessionStorageNames.ts","../../src/utils/constants/tokens.ts","../../src/utils/constants/chains.ts","../../src/utils/constants/index.ts","../../src/utils/constants/blockchain.ts","../../src/utils/configs/mainnet.ts","../../src/utils/configs/gnosis.ts","../../src/utils/configs/chiado.ts","../../src/utils/configs/hoodi.ts","../../src/utils/configs/index.ts","../../src/utils/apiUrls.ts","../node_modules/bignumber.js/bignumber.mjs","../../src/utils/BigDecimal.ts","../../src/utils/getTimestamp.ts","../../src/utils/createProvider.ts","../../src/utils/getVaultVersion.ts","../../src/utils/getNetworkTypes.ts","../../src/utils/mergeRewardsFiat.ts","../../src/utils/calculateUserStats.ts","../../src/contracts/createContract.ts","../../src/contracts/multicall/commonMulticall.ts","../../src/contracts/vault/createVaultContract.ts","../../src/contracts/createContracts.ts","../../src/modules/gql-module/abortCallback.ts","../../src/modules/gql-module/abortPromise.ts","../../src/modules/gql-module/abortRequest.ts","../../src/modules/local-storage/MemoryStorage.ts","../../src/modules/local-storage/LocalStorage.ts","../../src/modules/local-storage/index.ts","../../src/modules/gql-module/utils/getRequestUrl.ts","../../src/modules/gql-module/utils/saveErrorUrlToSessionStorage.ts","../../src/modules/gql-module/graphqlFetch.ts","../../src/modules/gql-module/wrapAbortPromise.ts","../../src/graphql/backend/vault/validatorsQuery.graphql.ts","../../src/graphql/backend/vault/uploadMetadataMutation.graphql.ts","../../src/graphql/subgraph/boost/aavePositionsQuery.graphql.ts","../../src/graphql/subgraph/boost/boostMainDataQuery.graphql.ts","../../src/graphql/subgraph/boost/boostQueuePositionsQuery.graphql.ts","../../src/graphql/subgraph/stats/fiatByDayQuery.graphql.ts","../../src/graphql/subgraph/stats/fiatRatesQuery.graphql.ts","../../src/graphql/subgraph/stats/statsQuery.graphql.ts","../../src/graphql/subgraph/vault/blocklistAccountsQuery.graphql.ts","../../src/graphql/subgraph/vault/harvestParamsQuery.graphql.ts","../../src/graphql/subgraph/vault/periodicDistributionsQuery.graphql.ts","../../src/graphql/subgraph/vault/userApyQuery.graphql.ts","../../src/graphql/subgraph/vault/userRewardsQuery.graphql.ts","../../src/graphql/subgraph/vault/vaultQuery.graphql.ts","../../src/graphql/subgraph/vault/vaultStatsQuery.graphql.ts","../../src/graphql/subgraph/vault/whitelistAccountsQuery.graphql.ts","../../src/graphql/subgraph/osToken/osTokenApyQuery.graphql.ts","../../src/graphql/subgraph/osToken/osTokenStatsQuery.graphql.ts","../../src/graphql/subgraph/allocator/allocatorsQuery.graphql.ts","../../src/graphql/subgraph/exitQueue/exitQueueQuery.graphql.ts","../../src/graphql/subgraph/transactions/transactionsQuery.graphql.ts","../../src/graphql/subgraph/rewardSplitters/rewardSplittersQuery.graphql.ts","../../src/graphql/subgraph/rewardSplitters/rewardSplitterShareHoldersQuery.graphql.ts","../../src/graphql/subgraph/allocatorActions/allocatorActionsQuery.graphql.ts","../../src/graphql/subgraph/allocatorActions/myAllocatorActionsQuery.graphql.ts","../../src/graphql/index.ts","../../src/methods/vault/requests/getHarvestParams/index.ts","../../src/contracts/multicall/util/getHarvestArgs.ts","../../src/contracts/multicall/util/getMulticallCalls.ts","../../src/contracts/multicall/util/handleMulticall.ts","../../src/contracts/multicall/util/handleCallStatic.ts","../../src/contracts/multicall/util/handleEstimateGas.ts","../../src/contracts/multicall/util/getSignedContract.ts","../../src/contracts/multicall/util/handleTransactionData.ts","../../src/contracts/multicall/vaultMulticall.ts","../../src/contracts/multicall/util/testMulticallParams.ts","../../src/contracts/multicall/rewardSplitterMulticall.ts","../../src/contracts/multicall/boostMulticall.ts","../../src/methods/vault/requests/getWhitelist/modifyWhitelist.ts","../../src/methods/utils/getListVariables.ts","../../src/methods/utils/getFiatRatesByDay/index.ts","../../src/methods/utils/getPermitSignature/index.ts","../../src/methods/utils/getVaultMulticallGas.ts","../../src/methods/utils/getVaultMulticallEncode.ts","../../src/methods/utils/getFiatRates/index.ts","../../src/methods/utils/getStakewiseStats/index.ts","../../src/methods/utils/getTransactions/index.ts","../../src/methods/vault/requests/getWhitelist/index.ts","../../src/methods/vault/requests/getBlocklist/modifyBlocklist.ts","../../src/methods/vault/requests/getVaultStats/modifyVaultStats.ts","../../src/methods/vault/requests/getUserRewards/index.ts","../../src/methods/vault/requests/getMaxWithdraw/index.ts","../../src/methods/vault/requests/getStakeBalance/index.ts","../../src/methods/vault/requests/getRewardSplitters/modifyRewardSplitters.ts","../../src/methods/vault/requests/getExitQueuePositions/modifyExitRequests.ts","../../src/methods/vault/transactions/create/validateCreateVaultArgs.ts","../../src/methods/vault/transactions/create/common.ts","../../src/methods/vault/transactions/util/check/checkAdminAccess.ts","../../src/methods/vault/transactions/util/params/validateList.ts","../../src/methods/vault/transactions/util/metadata/uploadMetadata/index.ts","../../src/methods/vault/transactions/util/metadata/getMetadataHashMock/index.ts","../../src/methods/vault/transactions/create/index.ts","../../src/methods/vault/transactions/create/createVaultEncode.ts","../../src/methods/vault/transactions/create/createVaultGas.ts","../../src/methods/vault/transactions/deposit/validate.ts","../../src/methods/vault/transactions/deposit/nativeToken/common.ts","../../src/methods/vault/transactions/deposit/nativeToken/deposit.ts","../../src/methods/vault/transactions/deposit/nativeToken/depositEncode.ts","../../src/methods/vault/transactions/deposit/nativeToken/depositGas.ts","../../src/methods/vault/transactions/deposit/otherToken/common.ts","../../src/methods/vault/transactions/deposit/otherToken/deposit.ts","../../src/methods/vault/transactions/deposit/otherToken/depositEncode.ts","../../src/methods/vault/transactions/deposit/otherToken/depositGas.ts","../../src/methods/vault/transactions/deposit/depositEncode.ts","../../src/methods/vault/transactions/deposit/index.ts","../../src/methods/vault/transactions/deposit/depositGas.ts","../../src/methods/vault/transactions/operate/common.ts","../../src/methods/vault/transactions/util/params/getBlocklistParams.ts","../../src/methods/vault/transactions/util/params/getWhitelistParams.ts","../../src/methods/vault/transactions/util/params/getWhitelisterParams.ts","../../src/methods/vault/transactions/util/params/getFeeRecipientParams.ts","../../src/methods/vault/transactions/util/params/getMetadataParams.ts","../../src/methods/vault/transactions/util/params/getBlocklistManagerParams.ts","../../src/methods/vault/transactions/util/params/getValidatorsManagerParams.ts","../../src/methods/vault/transactions/operate/checkAccess.ts","../../src/methods/vault/transactions/util/check/checkWhitelisterAccess.ts","../../src/methods/vault/transactions/util/check/checkBlocklistManagerAccess.ts","../../src/methods/vault/transactions/operate/index.ts","../../src/methods/vault/transactions/operate/multicallEncode.ts","../../src/methods/vault/transactions/operate/multicallGas.ts","../../src/methods/vault/transactions/withdraw/common.ts","../../src/methods/vault/transactions/withdraw/index.ts","../../src/methods/vault/transactions/withdraw/withdrawEncode.ts","../../src/methods/vault/transactions/withdraw/withdrawGas.ts","../../src/methods/vault/transactions/claimExitQueue/common.ts","../../src/methods/vault/transactions/claimExitQueue/index.ts","../../src/methods/vault/transactions/claimExitQueue/claimExitQueueEncode.ts","../../src/methods/vault/transactions/claimExitQueue/claimExitQueueGas.ts","../../src/methods/vault/transactions/setDepositDataRoot/common.ts","../../src/methods/vault/transactions/setDepositDataRoot/checkAccess.ts","../../src/methods/vault/transactions/util/check/checkDepositDataManagerAccess.ts","../../src/methods/vault/transactions/setDepositDataRoot/index.ts","../../src/methods/vault/transactions/setDepositDataRoot/setDepositDataRootEncode.ts","../../src/methods/vault/transactions/setDepositDataRoot/setDepositDataRootGas.ts","../../src/methods/vault/transactions/setDepositDataManager/common.ts","../../src/methods/vault/transactions/setDepositDataManager/checkAccess.ts","../../src/methods/vault/transactions/setDepositDataManager/index.ts","../../src/methods/vault/transactions/setDepositDataManager/setDepositDataManagerEncode.ts","../../src/methods/vault/transactions/setDepositDataManager/setDepositDataManagerGas.ts","../../src/methods/vault/index.ts","../../src/methods/vault/requests/getExitQueuePositions/index.ts","../../src/methods/vault/requests/getRewardSplitters/index.ts","../../src/methods/vault/requests/getStakerActions/index.ts","../../src/methods/vault/requests/getStakerActions/modifyStakerActions.ts","../../src/methods/vault/requests/getValidators/index.ts","../../src/methods/vault/requests/getValidators/modifyValidators.ts","../../src/methods/vault/requests/getBlocklist/index.ts","../../src/methods/vault/requests/getVault/index.ts","../../src/methods/vault/requests/getVault/modifyVault.ts","../../src/methods/vault/requests/getVaultStats/index.ts","../../src/methods/vault/requests/getUserStats/index.ts","../../src/methods/vault/requests/getUserApy/index.ts","../../src/methods/vault/requests/getPeriodicDistributions/index.ts","../../src/methods/boost/requests/getData/index.ts","../../src/methods/boost/requests/getQueuePosition/modifyQueuePosition.ts","../../src/methods/boost/requests/getLeverageStrategyProxy/index.ts","../../src/methods/boost/transactions/lock/common.ts","../../src/methods/boost/transactions/lock/index.ts","../../src/methods/boost/transactions/lock/lockEncode.ts","../../src/methods/boost/transactions/lock/lockGas.ts","../../src/methods/boost/transactions/unlock/common.ts","../../src/methods/boost/transactions/unlock/index.ts","../../src/methods/boost/transactions/unlock/unlockEncode.ts","../../src/methods/boost/transactions/unlock/unlockGas.ts","../../src/methods/boost/transactions/claimQueue/common.ts","../../src/methods/boost/transactions/claimQueue/index.ts","../../src/methods/boost/transactions/claimQueue/claimQueueEncode.ts","../../src/methods/boost/transactions/claimQueue/claimQueueGas.ts","../../src/methods/boost/index.ts","../../src/methods/boost/requests/getQueuePosition/index.tsx","../../src/methods/osToken/requests/getStats/modifyStats.ts","../../src/methods/osToken/requests/getMaxMint/index.ts","../../src/methods/osToken/requests/getOsTokenRate/index.ts","../../src/methods/osToken/helpers/getHealthFactor/index.ts","../../src/methods/osToken/requests/getPosition/index.ts","../../src/methods/osToken/helpers/getBurnAmount/index.ts","../../src/methods/osToken/requests/getSharesFromAssets/index.ts","../../src/methods/osToken/requests/getAssetsFromShares/index.ts","../../src/methods/osToken/transactions/mint/common.ts","../../src/methods/osToken/transactions/mint/index.ts","../../src/methods/osToken/transactions/mint/mintEncode.ts","../../src/methods/osToken/transactions/mint/mintGas.ts","../../src/methods/osToken/transactions/burn/common.ts","../../src/methods/osToken/transactions/burn/index.ts","../../src/methods/osToken/transactions/burn/burnEncode.ts","../../src/methods/osToken/transactions/burn/burnGas.ts","../../src/methods/osToken/index.ts","../../src/methods/osToken/requests/getOsTokenAPY/index.ts","../../src/methods/osToken/requests/getStats/index.ts","../../src/methods/rewardSplitter/requests/getClaimAmount.ts","../../src/methods/rewardSplitter/transactions/claimRewards/common.ts","../../src/methods/rewardSplitter/transactions/claimRewards/getSharesFromAssets.ts","../../src/methods/rewardSplitter/transactions/claimRewards/index.ts","../../src/methods/rewardSplitter/transactions/claimRewards/claimRewardsEncode.ts","../../src/methods/rewardSplitter/transactions/claimRewards/claimRewardsGas.ts","../../src/methods/rewardSplitter/transactions/createRewardSplitter/common.ts","../../src/methods/rewardSplitter/transactions/createRewardSplitter/index.ts","../../src/methods/rewardSplitter/transactions/createRewardSplitter/createRewardSplitterEncode.ts","../../src/methods/rewardSplitter/transactions/createRewardSplitter/createRewardSplitterGas.ts","../../src/methods/rewardSplitter/transactions/updateFeeRecipients/common.ts","../../src/methods/rewardSplitter/transactions/updateFeeRecipients/index.ts","../../src/methods/rewardSplitter/transactions/updateFeeRecipients/updateFeeRecipientsEncode.ts","../../src/methods/rewardSplitter/transactions/updateFeeRecipients/updateFeeRecipientsGas.ts","../../src/methods/rewardSplitter/index.ts","../../src/methods/index.ts","../../src/index.ts","../../src/StakeWiseSDK.ts","../../src/utils/getVaultFactory.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,"/*\r\n *      bignumber.js v9.3.0\r\n *      A JavaScript library for arbitrary-precision arithmetic.\r\n *      https://github.com/MikeMcl/bignumber.js\r\n *      Copyright (c) 2025 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\nvar\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\nfunction 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, -1);\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, 1);\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  // If any number is NaN, return NaN.\r\n  function maxOrMin(args, n) {\r\n    var k, y,\r\n      i = 1,\r\n      x = new BigNumber(args[0]);\r\n\r\n    for (; i < args.length; i++) {\r\n      y = new BigNumber(args[i]);\r\n      if (!y.s || (k = compare(x, y)) === n || k === 0 && x.s === n) {\r\n        x = y;\r\n      }\r\n    }\r\n\r\n    return x;\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 = mathfloor(n / pows10[d - j - 1] % 10);\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 : mathfloor(n / pows10[d - j - 1] % 10);\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 ? n.s * (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) {\r\n      t = xc;\r\n      xc = yc;\r\n      yc = t;\r\n      y.s = -y.s;\r\n    }\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) {\r\n      zc = xc;\r\n      xc = yc;\r\n      yc = zc;\r\n      i = xcL;\r\n      xcL = ycL;\r\n      ycL = i;\r\n    }\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) {\r\n      t = yc;\r\n      yc = xc;\r\n      xc = t;\r\n      b = a;\r\n    }\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) {\r\n        i = g1;\r\n        g1 = g2;\r\n        g2 = i;\r\n        len -= i;\r\n      }\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  P[Symbol.toStringTag] = 'BigNumber';\r\n\r\n  // Node.js v10.12.0+\r\n  P[Symbol.for('nodejs.util.inspect.custom')] = P.valueOf;\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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nexport var BigNumber = clone();\r\n\r\nexport default BigNumber;\r\n",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":["Network","VaultType","AllocatorActionType","OsTokenPositionHealth","BorrowStatus","validateArgs","value","decode","substring","indexOf","sizeMB","atob","length","currentSize","toFixed","Error","values","withEmptyCheck","Object","keys","forEach","key","Array","isArray","isAddress","getGas","async","provider","estimatedGas","feeData","latestBlock","Promise","all","getFeeData","getBlock","gasPrice","maxFeePerGas","maxPriorityFeePerGas","baseFeePerGas","Boolean","tokens","eth","swise","osETH","gno","xdai","osGNO","sGNO","rGNO","rETH2","sETH2","ssv","obol","mainnet","id","name","chainId","Mainnet","hexadecimalChainId","blockExplorerUrl","nativeCurrency","symbol","decimals","isTestnet","hoodi","Hoodi","constants","sessionStorageNames","moduleErrorUrl","blockchain","gwei","amount1","amount32","maxUint256","Chiado","Gnosis","network","chains","api","backend","subgraph","pages","beaconchain","addresses","mintToken","depositToken","ZeroAddress","v2RewardToken","v2StakedToken","base","keeper","multicall","priceOracle","vaultsRegistry","sharedMevEscrow","mintTokenConfigV1","mintTokenConfigV2","depositDataRegistry","mintTokenController","rewardSplitterFactory","factories","vault","erc20Vault","privateVault","erc20PrivateVault","blocklistVault","erc20BlocklistVault","special","stakeCalculator","leverageStrategy","nativeToken","gnosis","chiado","configs","apiUrls","options","endpoints","isNumeric","mathceil","Math","ceil","mathfloor","floor","bignumberError","tooManyDigits","BASE","LOG_BASE","MAX_SAFE_INTEGER","POWS_TEN","SQRT_BASE","MAX","bitFloor","n","i","coeffToString","a","s","z","j","r","charCodeAt","slice","compare","x","y","b","xc","c","yc","k","e","l","intCheck","min","max","String","isOdd","toExponential","str","charAt","toFixedPoint","len","zs","BigNumber","clone","configObject","div","convertBase","parseNumeric","pow2_53","random53bitInt","basePrefix","dotAfter","dotBefore","isInfinityOrNaN","whitespaceOrPlus","P","prototype","constructor","toString","valueOf","ONE","DECIMAL_PLACES","ROUNDING_MODE","TO_EXP_NEG","TO_EXP_POS","MIN_EXP","MAX_EXP","CRYPTO","MODULO_MODE","POW_PRECISION","FORMAT","prefix","groupSize","secondaryGroupSize","groupSeparator","decimalSeparator","fractionGroupSize","fractionGroupSeparator","suffix","ALPHABET","alphabetHasNormalDecimalDigits","v","alphabet","caseChanged","isNum","this","_isBigNumber","test","replace","search","round","DEBUG","toUpperCase","toLowerCase","push","format","rm","c0","ne","maxOrMin","args","normalise","pop","sd","d","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","config","set","obj","p","hasOwnProperty","crypto","getRandomValues","randomBytes","EXPONENTIAL_AT","RANGE","isBigNumber","call","maximum","arguments","minimum","random","dp","rand","Uint32Array","copy","splice","sum","plus","decimal","toBaseOut","baseIn","baseOut","arrL","arr","reverse","sign","callerIsToString","pow","concat","multiply","m","temp","xlo","xhi","carry","klo","khi","aL","bL","cmp","subtract","more","prod","prodL","q","qc","rem","remL","rem0","xi","xL","yc0","yL","yz","NaN","isNaN","p1","p2","absoluteValue","abs","comparedTo","decimalPlaces","dividedBy","dividedToIntegerBy","idiv","exponentiatedBy","half","isModExp","nIsBig","nIsNeg","nIsOdd","isInteger","mod","times","integerValue","isEqualTo","eq","isFinite","isGreaterThan","gt","isGreaterThanOrEqualTo","gte","isLessThan","lt","isLessThanOrEqualTo","lte","isNegative","isPositive","isZero","minus","t","xLTy","xe","ye","modulo","multipliedBy","xcL","ycL","ylo","yhi","zc","sqrtBase","negated","precision","shiftedBy","squareRoot","sqrt","rep","toFormat","split","g1","g2","intPart","fractionPart","isNeg","intDigits","substr","RegExp","toFraction","md","d0","d1","d2","exp","n0","n1","toNumber","toPrecision","toJSON","Symbol","toStringTag","for","BigDecimal","decimalsCount","toBigDecimal","BigDecimals","divide","formattedValue","count","getTimestamp","days","currentDate","Date","pastDate","setDate","getDate","setHours","getTime","getFetchRequest","_url","url","headers","fetchRequest","FetchRequest","setHeader","setThrottleParams","slotInterval","maxAttempts","processFunc","_","response","statusCode","FetchResponse","retryFunc","createProvider","urls","web3","arrayUrls","JsonRpcProvider","providers","map","index","priority","weight","FallbackProvider","getSigner","send","getVaultVersion","contracts","vaultAddress","vaultContract","helpers","createVault","version","isV1Version","isV2Version","isMoreV1","isMoreV2","Number","getNetworkTypes","isEthereum","isGnosis","mergeRewardsFiat","fiatRates","rewards","mergedStats","reduce","acc","item","timestamp","earnedAssets","BigInt","result","entries","reward","milliseconds","assets","formatEther","date","dailyRewardsUsd","dailyRewardsEur","dailyRewardsGbp","dailyRewardsCny","dailyRewardsJpy","dailyRewardsKrw","dailyRewardsAud","dailyRewards","assetsUsdRate","usdToEurRate","usdToGbpRate","usdToCnyRate","usdToJpyRate","usdToKrwRate","usdToAudRate","usdResult","sort","calculateUserStats","data","apy","balance","stats","totalAssets","timeInSeconds","time","createContract","address","abi","library","Contract","commonMulticall","multicallContract","params","calls","items","undefined","mock","contract","methodName","target","callData","interface","encodeFunctionData","realIndex","aggregate","then","noContractValue","returnName","returnData","decodeData","decodeFunctionResult","getSwiseToken","Erc20Abi","getVaultFactory","VaultFactoryAbi","getVaultsRegistry","VaultsRegistryAbi","getRewardSplitterFactory","RewardSplitterFactoryAbi","getKeeper","KeeperAbi","getMintToken","getMintTokenConfigV1","MintTokenConfigV1Abi","getMintTokenConfigV2","MintTokenConfigV2Abi","getMintTokenController","MintTokenControllerAbi","getPriceOracle","PriceOracleAbi","getV2RewardToken","V2RewardTokenAbi","getDepositDataRegistry","DepositDataRegistryAbi","getStakeCalculator","StakeCalculatorAbi","getLeverageStrategy","LeverageStrategyAbi","createContracts","input","baseAbi","includes","DefaultVaultAbi","GnosisVaultDiffAbi","MainnetVaultDiffAbi","isBlocklist","BlocklistVaultDiffAbi","isPrivate","PrivateVaultDiffAbi","isDepositWithMint","DepositWithMintDiffAbi","createVaultContract","MulticallAbi","getMulticall","createMulticall","createErc20","createEigenPodOwner","EigenPodOwnerAbi","createRewardSplitter","RewardSplitterAbi","createVestingEscrowDirect","VestingEscrowAbi","createUsdRate","_provider","UsdRateAbi","createVestingEscrowFactory","VestingEscrowFactoryAbi","mintTokenConfig","v1","v2","swiseToken","V2RewardToken","dummyPromise","AbortCallback","isAborted","callback","onAbort","onSuccess","onError","catch","onFinally","finally","abort","AbortPromise","promise","error","reject","bind","promises","allPromises","race","requestsQueue","AbortRequest","controller","AbortController","request","body","requestId","abortRequestInit","init","pendingRequest","fetch","signal","ok","json","errors","message","_meta","hasIndexingErrors","resolve","MemoryStorage","storage","Map","size","from","getItem","has","get","setItem","removeItem","delete","clear","ffErrors","LocalStorage","memoryLocalStorage","memorySessionStorage","isSupported","localStorage","sessionStorage","getStorage","testKey","getLocalStorage","getSessionStorage","JSON","parse","remove","stringify","console","corruptedAlertWasShowed","alert","getKeys","clearAll","getSessionItem","setSessionItem","removeSessionItem","getSessionKeys","clearAllSession","localStorage$1","sessionErrorUrl","graphqlFetch","query","variables","withTime","retryCount","modifyResult","operationName","trim","currentUrl","primaryUrl","backupUrl","getRequestUrl","opName","method","setTimeout","saveErrorUrlToSessionStorage","wrapAbortPromise","action","props","res","fetchRewardSplittersQuery","graphql","getHarvestParams","fetchHarvestParamsQuery","canHarvest","harvestParams","getHarvestArgs","getMulticallCalls","multicallParams","handleMulticall","gasLimit","estimateGas","deleteResultFromMethods","handleCallStatic","userAddress","staticCall","indexesToDeleteResult","formattedResult","filter","handleEstimateGas","getSignedContract","callStatic","transactionData","signer","VoidSigner","connect","handleTransactionData","populateTransaction","harvestCheckMethods","vaultMulticall","some","harvestArgs","needSwap","updateStateParams","swapParams","fallbackParams","testMulticallParams","commonInput","rewardSplitterMulticall","rewardSplitterContract","boostMulticall","leverageStrategyContract","modifyAddress","createdAt","getAddress","getListVariables","orderDirection","limit","skip","addressIn","isValid","every","validateList","where","address_in","address_contains","calculateLimit","dateTo","dateFrom","getPermitSignature","amount","ownerAddress","spenderAddress","deadline","now","tokenName","mintTokenAddress","tokenNonce","nonces","primaryType","types","EIP712Domain","type","Permit","domain","verifyingContract","owner","nonce","spender","signature","Signature","getVaultMulticallGas","getVaultMulticallEncode","fetchFiatRatesQuery","osTokenAssetsRate","swiseUsdRate","obolUsdRate","ssvUsdRate","exchangeRates","assetUsd","fetchFiatByDayQuery","exchangeRate","fetchStatsQuery","usersCount","networks","totalEarnedAssets","hash","transactions","fetchTransactionsQuery","modifyVaultStats","vaultStats","stat","getUserRewards$1","subgraphUrl","ratesUrl","rawDays","timestampTo","timestampFrom","networkFiatRates","gnosisFiatRates","fetchUserRewardsQuery","timestamp_lte","timestamp_gte","allocator_","allocator","parseEther","getMaxWithdraw$1","mintedAssets","stakedAssets","ltvPercent","maxWithdrawAssets","avgRewardPerSecond","getPercent","total","percent","modifyRewardSplitters","rewardSplitters","modifiedRewardSplitters","totalShares","shareHolders","totalSharesBI","feeRecipients","shares","sharesBI","modifyExitRequests","exitRequests","duration","requests","positions","withdrawable","exitRequest","isClaimable","exitedAssets","exitQueueIndex","positionTicket","totalAssetsBN","exitedAssetsBN","withdrawalTimestamp","validateCreateVaultArgs","MaxUint256","vaultTypes","join","vaultToken","missingParams","emptyParams","commonLogic","Default","capacity","keysManagerFee","isOwnMevEscrow","metadataIpfsHash","vaultFactory","Private","Blocklist","defaultAbiCoder","AbiCoder","formattedParams","feePercent","encodedParams","encode","checkAdminAccess","admin","listItem","isNew","uploadMetadata","image","displayName","description","submitUploadMetadataMutation","payload","ipfsHash","errorCode","extensions","code","getMetadataHashMock","create","rest","signedContract","validate","referrerAddress","overrides","baseParams","deposit","updateStateAndDeposit","multicallArgs","nativeTokenDeposit","otherTokenDeposit","blocklistManager","blocklist","whitelist","whitelistManager","feeRecipient","validatorsManager","baseMulticall","blocklistParams","getBlocklistParams","whitelistParams","getWhitelistParams","whitelisterParams","getWhitelisterParams","feeRecipientParams","getFeeRecipientParams","metadataParams","getMetadataParams","blocklistManagerParams","getBlocklistManagerParams","validatorsManagerParams","getValidatorsManagerParams","checkAccess","actionError","isAdmin","isWhitelistManager","isBlocklistManager","checkPromises","whitelister","checkWhitelisterAccess","checkBlocklistManagerAccess","operate","multicallCommonArgs","baseMulticallArgs","isCollateralized","exitQueueShares","withdraw","validatePositions","position","claimExitQueue","depositDataRoot","keysManager","getDepositDataManager","checkDepositDataManagerAccess","setDepositDataRoot","signedVaultContract","setValidatorsRoot","signedDepositDataRegistryContract","managerAddress","setDepositDataManager","setKeysManager","setDepositDataManager$1","getExitQueuePositions","isClaimed","exitQueue","fetchExitQueueQuery","receiver","getRewardSplitters","getStakerActions","allocatorActions","fetchAllocatorActionsQuery","first","actionType_in","vault_","link","modifyStakerActions","getStakeBalance","fetchAllocatorsQuery","allocators","getUserRewards","getMaxWithdraw","getValidators","fetchValidatorsQuery","vaultValidators","validator","earned","publicKey","modifyValidators","getWhitelist","fetchWhitelistAccountsQuery","privateVaultAccounts","modifyWhitelist","getBlocklist","fetchBlocklistAccountsQuery","vaultBlockedAccounts","modifyBlocklist","getVault","fetchVaultQuery","baseApy","mevEscrow","performance","osTokenConfig","blocklistCount","whitelistCount","depositDataManager","allocatorMaxBoostApy","osTokenHolderMaxBoostApy","isSmoothingPool","vaultAdmin","mevRecipient","liqThresholdPercent","modifyVault","getVaultStats","daysCount","fetchVaultStatsQuery","getUserStats","getUserApy","fetchUserApyQuery","getPeriodicDistributions","startTimestamp","endTimestamp","fetchPeriodicDistributionsQuery","periodicDistributions","getData$1","boost","vaultApy","borrowStatus","Healthy","rewardAssets","exitingPercent","maxMintShares","borrowedAssets","boostMainData","fetchBoostMainDataQuery","leverageStrategyPositions","vaults","leverageStrategyPosition","aaveData","fetchAavePositionsQuery","proxyAddress","proxy","borrowLtv","osTokenShares","boostRewardAssets","aavePositions","maxMintAssets","convertToShares","rewardShares","Moderate","Risky","modifyQueuePosition","exitingShares","exitingAssets","exitingOsTokenShares","output","getLeverageStrategyProxy$1","getStrategyProxy","mockPermitSignature","isMultiSig","getCode","multiSigData","permitParams","strategyProxy","getLeverageStrategyProxy","allowance","approveArgs","lock","approve","waitForTransaction","lockTxData","approveTxData","estimatedGasMulticall","estimatedGasApprove","ethers","unlock","claimQueue","getData","getQueuePosition","fetchBoostQueuePositionsQuery","modifyStats","osTokenStats","getMaxMint$1","maxMintedAssets","canMintAssets","getRate","mintTokenRate","latestAnswer","getHealthFactor","health","healthFactor","Unhealthy","getPosition$1","mintedShares","osTokenPositions","convertToAssets","protocolFeePercent","minted","getBurnAmount$1","newStakedAssets","assetsToBurn","assetsResult","getSharesFromAssets$2","getAssetsFromShares$1","mint","burn","burnOsToken","osToken","fetchOsTokenApyQuery","osTokens","getMaxMint","getPosition","getBurnAmount","getSharesFromAssets","getAssetsFromShares","getStats","fetchOsTokenStatsQuery","rewardSplitterAddress","claimRewards","list","isListValid","oldFeeRecipients","increaseList","decreaseList","oldFeeRecipientAddresses","lowerCasedAddress","find","diff","updateFeeRecipients","rewardSplitter","getClaimAmount","fetchRewardSplitterShareHoldersQuery","rewardSplitterShareHolders","earnedVaultAssets","createMethods","methods","fn","wrapper","submethod","generateSubMethods","utils","originalGetSigner","argsForMethods","vaultType","isErc20"],"mappings":"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","x_google_ignoreList":[14]}