diff --git a/.env.example b/.env.example index a0f88eb..0d0c2f4 100644 --- a/.env.example +++ b/.env.example @@ -1,8 +1,16 @@ SUBGRAPH_ENDPOINT = https://api.thegraph.com/subgraphs/name/rrridges-crypto/yearn-vault-roi-dev +POLYGON_SUBGRAPH_ENDPOINT = WEB3_ENDPOINT = https://mainnet.infura.io/v3/4f8bf400ab354820998e6dfdea0a1b78 ARCHIVENODE_ENDPOINT = https://api.archivenode.io/93mwpmy684fb0dc3c0q93mwpmwlssf6a +POLYGON_ARCHIVENODE_ENDPOINT = ETHERSCAN_API_KEY = GEQXZDY67RZ4QHNU1A57QVPNDV3RP1RYH4 +SLACK_HOOK_URL = -AWS_ACCESS_KEY_ID = AKIA2FCIA3THEGVNNLSN -AWS_SECRET_ACCESS_KEY = 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 -AWS_DEFAULT_REGION = us-east-1 +MONGO_USERNAME= +MONGO_PASSWORD= +MONGO_HOSTNAME= +MONGO_PORT= +MONGO_DB= +PRODUCTION= +AUTH_MECHANISM= +MONGO_AUTH= diff --git a/Dockerfile b/Dockerfile index 7182a0b..c42827c 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,16 +1,13 @@ -FROM node:14-buster +FROM node:14 -RUN npm install -g serverless && \ - npm install -g serverless-offline +WORKDIR /api -WORKDIR /opt/app - -COPY package*.json ./ +COPY package*.json /api/ RUN npm install -COPY . . +COPY ./ /api/ -EXPOSE 3000 +EXPOSE 8080 -CMD [ "sls", "offline", "--host", "0.0.0.0" ] +CMD ["npm", "start"] diff --git a/README.md b/README.md index 1d6b9a4..91ac371 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,7 @@ Yearn API intentions are as follows: ## Interact -https://yearn.tools +[https://test.daoventures.co/api/api-docs/] ## Setup Instructions @@ -20,8 +20,8 @@ https://yearn.tools - Install docker - Execute terminal commands -``` -git clone https://github.com/yearn-integrations/yearn-api.git +```cmd +git clone [https://github.com/daoventures/yearn-api.git] cd yearn-api cp .env.example .env docker-compose up @@ -48,15 +48,13 @@ docker-compose up ## Stages - Currently three stages are available -- `prod` is used for production deployments. Production endpoint is https://api.yearn.tools -- `dev` is used for development purposes. Development endpoint is https://dev-api.yearn.tools -- `staging` is used for APIs pending production deployment. Staging endpoint is https://staging-api.yearn.tools - -### Reset a stage +- `beta` is used for beta deployments. Beta endpoint is [https://beta.daoventures.co/api/] +- `test` is used for development purposes. Development endpoint is [https://test.daoventures.co/api/] -- Use the command `sls remove --stage dev` to remove all functions and custom domains associated with a stage +## Testing Locally -### API deployment +Comment out the following line in docker-compose.yml -- Use the command `sls deploy --stage dev` to deploy -- You can also deploy a single function using `sls deploy function -f functionName --stage dev` +```yml +command: [--auth] +``` diff --git a/app.js b/app.js new file mode 100644 index 0000000..9fc617b --- /dev/null +++ b/app.js @@ -0,0 +1,158 @@ +require("dotenv").config(); +const express = require("express"); +const db = require("./config/db"); +const vaultsApy = require("./services/vaults/apy/handler"); +const userStatistics = require("./services/user/vaults/statistics/handler"); +const userTransactions = require("./services/user/vaults/transactions/handler"); +const vaultsPrice = require("./services/vaults/price/handler"); +const vaultsTvl = require("./services/vaults/tvl/handler"); +const vaultHistoricalAPYSave = require("./services/vaults/apy/save/historical-handle"); +const vaultCategory = require("./services/vaults/category/handler"); +const vaultPerformance = require("./services/vaults/performance/handler"); +const stakeVIP = require("./services/staking/xdvg/handler"); +const stakePool = require("./services/staking/handler"); +const stakeXDvg = require("./services/staking/vipdvg/handler"); +const reimbursementAddresses = require("./services/reimbursement/handler"); +const stakeDaoStakes = require("./services/staking/dao-stake/handler"); +const specialEvent = require("./services/user/special-event/handler"); +const reimburse = require("./services/user/reimburse/handler"); +const referral = require("./services/referral/handler"); +const deposit = require("./services/referral/deposit/handler"); +const withdraw = require("./services/referral/withdraw/handler"); +const app = express(); +const cors = require("cors"); +const port = process.env.PORT || 8080; +const jobs = require("./jobs/task"); +const swaggerUi = require("swagger-ui-express"); +const swaggerDocument = require("./swagger.json"); +const bodyParser = require("body-parser"); + +async function init() { + // Improve debugging + process.on("unhandledRejection", (reason, p) => { + console.log("Unhandled Rejection at:", p, "reason:", reason); + }); + + db.connectDB(async (err) => { + if (err) throw err; + jobs.saveVault(); + jobs.saveVaultAPY(); + jobs.savePolygonVaultAPY(); + jobs.savePricePerFullShare(); + jobs.saveHistoricalAPY(); + jobs.savePolygonHistoricalAPY(); + jobs.saveHistoricalTVL(); + jobs.saveHistoricalPools(); + jobs.saveABIPools(); + jobs.saveVipApr(); + jobs.savePerformance(); + jobs.saveTransaction(); + }); + + app.use(cors()); + app.use( + bodyParser.urlencoded({ + extended: true, + }) + ); + app.use(bodyParser.json()); + + app.get("/vaults/apy", (req, res) => vaultsApy.handler(res)); + app.get("/user/:userAddress/vaults/statistics", (req, res) => + userStatistics.handler(req, res) + ); + app.get("/user/:userAddress/vaults/transactions", (req, res) => + userTransactions.handler(req, res) + ); + app.get("/vaults/price/:farmer/:days", (req, res) => + vaultsPrice.handleHistoricialPrice(req, res) + ); + app.get("/vaults/historical-apy/:contractAddress/:days", (req, res) => + vaultHistoricalAPYSave.handleHistoricialAPY(req, res) + ); + app.get("/vaults/tvl/total", (req, res) => vaultsTvl.totalHandle(req, res)); + app.get("/vaults/tvl/:farmer", (req, res) => vaultsTvl.tvlHandle(req, res)); + app.get("/vaults/category", (req, res) => + vaultCategory.getVaultCategory(req, res) + ); + app.get("/staking/get-vip-tokens", (req, res) => + stakeVIP.getVipDVGToken(req, res) + ); + app.get("/staking/get-pools", (req, res) => stakePool.getPools(req, res)); + app.get("/staking/get-xdvg-stake", (req, res) => + stakeXDvg.getxDVGStake(req, res) + ); + app.get("/staking/get-xdvd-stake", (req, res) => { + stakeXDvg.getxDVDStake(req, res); + }); + app.get("/event/verify", (req, res) => + specialEvent.handleVerifyEvent(req, res) + ); + app.get("/event/verify/:amount", (req, res) => + specialEvent.handler(req, res) + ); + + app.get("/vaults/performance/:farmer/:days", (req, res) => + vaultPerformance.performanceHandle(req, res) + ); + app.get("/vaults/performance/:farmer", (req, res) => + vaultPerformance.performanceHandle(req, res) + ); + + app.get("/reimbursement-addresses/dvg", (req, res) => + reimbursementAddresses.handler(req, res) + ); + + app.get("/reimbursement-addresses/dvg/:address", (req, res) => + reimbursementAddresses.handler(req, res) + ); + + app.get("/vaults/pnl/:farmer/:days", (req, res) => + vaultPerformance.pnlHandle(req, res) + ); + app.get("/vaults/pnl/:farmer", (req, res) => + vaultPerformance.pnlHandle(req, res) + ); + + app.post("/staking/emergency-withdraw-snapshot", (req, res) => + stakePool.snapshotEmergency(req, res) + ); + + app.get("/user/reimburse-address/:address", (req, res) => + reimburse.getReimburseAddress(req, res) + ); + + app.get("/user/getreferrals", (req, res) => { + referral.seeAllReferrals(req, res); + }); + + app.post("/user/addreferral", (req, res) => { + referral.addNewReferral(req, res); + }); + + app.post("/user/adddeposit", (req, res) => { + deposit.addDepositAmount(req, res); + }); + + app.get("/user/deposits", (req, res) => { + deposit.getAll(req, res); + }); + + app.post("/user/addwithdrawal", (req, res) => { + withdraw.addWithdrawalAmount(req, res); + }); + + app.get("/user/withdrawals", (req, res) => { + withdraw.getAll(req, res); + }); + + app.post("/user/reimburse-address/update", (req, res) => { + reimburse.updateReimburseAddressClaimAmount(req, res); + }); + + app.use("/api-docs", swaggerUi.serve, swaggerUi.setup(swaggerDocument)); + + app.listen(port, () => console.log(`Listening on ${port}`)); +} + +init(); diff --git a/config/abi.js b/config/abi.js new file mode 100644 index 0000000..747947c --- /dev/null +++ b/config/abi.js @@ -0,0 +1,21635 @@ +const earnABIContract = [ + { + inputs: [], + payable: false, + stateMutability: "nonpayable", + type: "constructor", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "owner", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "spender", + type: "address", + }, + { + indexed: false, + internalType: "uint256", + name: "value", + type: "uint256", + }, + ], + name: "Approval", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "previousOwner", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "newOwner", + type: "address", + }, + ], + name: "OwnershipTransferred", + type: "event", + }, + { + anonymous: false, + inputs: [ + { indexed: true, internalType: "address", name: "from", type: "address" }, + { indexed: true, internalType: "address", name: "to", type: "address" }, + { + indexed: false, + internalType: "uint256", + name: "value", + type: "uint256", + }, + ], + name: "Transfer", + type: "event", + }, + { + constant: true, + inputs: [], + name: "aave", + outputs: [{ internalType: "address", name: "", type: "address" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "aavePool", + outputs: [{ internalType: "address", name: "", type: "address" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "aaveToken", + outputs: [{ internalType: "address", name: "", type: "address" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [ + { internalType: "address", name: "owner", type: "address" }, + { internalType: "address", name: "spender", type: "address" }, + ], + name: "allowance", + outputs: [{ internalType: "uint256", name: "", type: "uint256" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: false, + inputs: [ + { internalType: "address", name: "spender", type: "address" }, + { internalType: "uint256", name: "amount", type: "uint256" }, + ], + name: "approve", + outputs: [{ internalType: "bool", name: "", type: "bool" }], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: false, + inputs: [], + name: "approveToken", + outputs: [], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: true, + inputs: [], + name: "apr", + outputs: [{ internalType: "address", name: "", type: "address" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "balance", + outputs: [{ internalType: "uint256", name: "", type: "uint256" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "balanceAave", + outputs: [{ internalType: "uint256", name: "", type: "uint256" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "balanceAaveAvailable", + outputs: [{ internalType: "uint256", name: "", type: "uint256" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "balanceCompound", + outputs: [{ internalType: "uint256", name: "", type: "uint256" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "balanceCompoundInToken", + outputs: [{ internalType: "uint256", name: "", type: "uint256" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "balanceDydx", + outputs: [{ internalType: "uint256", name: "", type: "uint256" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "balanceDydxAvailable", + outputs: [{ internalType: "uint256", name: "", type: "uint256" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "balanceFulcrum", + outputs: [{ internalType: "uint256", name: "", type: "uint256" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "balanceFulcrumAvailable", + outputs: [{ internalType: "uint256", name: "", type: "uint256" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "balanceFulcrumInToken", + outputs: [{ internalType: "uint256", name: "", type: "uint256" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [{ internalType: "address", name: "account", type: "address" }], + name: "balanceOf", + outputs: [{ internalType: "uint256", name: "", type: "uint256" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "calcPoolValueInToken", + outputs: [{ internalType: "uint256", name: "", type: "uint256" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "compound", + outputs: [{ internalType: "address", name: "", type: "address" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "dToken", + outputs: [{ internalType: "uint256", name: "", type: "uint256" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "decimals", + outputs: [{ internalType: "uint8", name: "", type: "uint8" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: false, + inputs: [ + { internalType: "address", name: "spender", type: "address" }, + { internalType: "uint256", name: "subtractedValue", type: "uint256" }, + ], + name: "decreaseAllowance", + outputs: [{ internalType: "bool", name: "", type: "bool" }], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: false, + inputs: [{ internalType: "uint256", name: "_amount", type: "uint256" }], + name: "deposit", + outputs: [], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: true, + inputs: [], + name: "dydx", + outputs: [{ internalType: "address", name: "", type: "address" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "fulcrum", + outputs: [{ internalType: "address", name: "", type: "address" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "getAave", + outputs: [{ internalType: "address", name: "", type: "address" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "getAaveCore", + outputs: [{ internalType: "address", name: "", type: "address" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "getPricePerFullShare", + outputs: [{ internalType: "uint256", name: "", type: "uint256" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: false, + inputs: [ + { internalType: "address", name: "spender", type: "address" }, + { internalType: "uint256", name: "addedValue", type: "uint256" }, + ], + name: "increaseAllowance", + outputs: [{ internalType: "bool", name: "", type: "bool" }], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: true, + inputs: [], + name: "isOwner", + outputs: [{ internalType: "bool", name: "", type: "bool" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "name", + outputs: [{ internalType: "string", name: "", type: "string" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "owner", + outputs: [{ internalType: "address", name: "", type: "address" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "pool", + outputs: [{ internalType: "uint256", name: "", type: "uint256" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "provider", + outputs: [{ internalType: "enum yUSDT.Lender", name: "", type: "uint8" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: false, + inputs: [], + name: "rebalance", + outputs: [], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: true, + inputs: [], + name: "recommend", + outputs: [{ internalType: "enum yUSDT.Lender", name: "", type: "uint8" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: false, + inputs: [], + name: "renounceOwnership", + outputs: [], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: false, + inputs: [{ internalType: "address", name: "_new_AAVE", type: "address" }], + name: "set_new_AAVE", + outputs: [], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: false, + inputs: [{ internalType: "address", name: "_new_APR", type: "address" }], + name: "set_new_APR", + outputs: [], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: false, + inputs: [{ internalType: "address", name: "_new_ATOKEN", type: "address" }], + name: "set_new_ATOKEN", + outputs: [], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: false, + inputs: [ + { internalType: "address", name: "_new_COMPOUND", type: "address" }, + ], + name: "set_new_COMPOUND", + outputs: [], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: false, + inputs: [{ internalType: "uint256", name: "_new_DTOKEN", type: "uint256" }], + name: "set_new_DTOKEN", + outputs: [], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: false, + inputs: [ + { internalType: "address", name: "_new_FULCRUM", type: "address" }, + ], + name: "set_new_FULCRUM", + outputs: [], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: false, + inputs: [{ internalType: "uint256", name: "amount", type: "uint256" }], + name: "supplyAave", + outputs: [], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: false, + inputs: [{ internalType: "uint256", name: "amount", type: "uint256" }], + name: "supplyCompound", + outputs: [], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: false, + inputs: [{ internalType: "uint256", name: "amount", type: "uint256" }], + name: "supplyDydx", + outputs: [], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: false, + inputs: [{ internalType: "uint256", name: "amount", type: "uint256" }], + name: "supplyFulcrum", + outputs: [], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: true, + inputs: [], + name: "symbol", + outputs: [{ internalType: "string", name: "", type: "string" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "token", + outputs: [{ internalType: "address", name: "", type: "address" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "totalSupply", + outputs: [{ internalType: "uint256", name: "", type: "uint256" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: false, + inputs: [ + { internalType: "address", name: "recipient", type: "address" }, + { internalType: "uint256", name: "amount", type: "uint256" }, + ], + name: "transfer", + outputs: [{ internalType: "bool", name: "", type: "bool" }], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: false, + inputs: [ + { internalType: "address", name: "sender", type: "address" }, + { internalType: "address", name: "recipient", type: "address" }, + { internalType: "uint256", name: "amount", type: "uint256" }, + ], + name: "transferFrom", + outputs: [{ internalType: "bool", name: "", type: "bool" }], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: false, + inputs: [{ internalType: "address", name: "newOwner", type: "address" }], + name: "transferOwnership", + outputs: [], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: false, + inputs: [{ internalType: "uint256", name: "_shares", type: "uint256" }], + name: "withdraw", + outputs: [], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: false, + inputs: [{ internalType: "uint256", name: "amount", type: "uint256" }], + name: "withdrawAave", + outputs: [], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: false, + inputs: [{ internalType: "uint256", name: "amount", type: "uint256" }], + name: "withdrawDydx", + outputs: [], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: false, + inputs: [{ internalType: "uint256", name: "_amount", type: "uint256" }], + name: "withdrawSomeCompound", + outputs: [], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: false, + inputs: [{ internalType: "uint256", name: "_amount", type: "uint256" }], + name: "withdrawSomeFulcrum", + outputs: [], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, +]; + +const vaultABIContract = [ + { + inputs: [ + { internalType: "address", name: "_token", type: "address" }, + { internalType: "address", name: "_controller", type: "address" }, + ], + payable: false, + stateMutability: "nonpayable", + type: "constructor", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "owner", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "spender", + type: "address", + }, + { + indexed: false, + internalType: "uint256", + name: "value", + type: "uint256", + }, + ], + name: "Approval", + type: "event", + }, + { + anonymous: false, + inputs: [ + { indexed: true, internalType: "address", name: "from", type: "address" }, + { indexed: true, internalType: "address", name: "to", type: "address" }, + { + indexed: false, + internalType: "uint256", + name: "value", + type: "uint256", + }, + ], + name: "Transfer", + type: "event", + }, + { + constant: true, + inputs: [ + { internalType: "address", name: "owner", type: "address" }, + { internalType: "address", name: "spender", type: "address" }, + ], + name: "allowance", + outputs: [{ internalType: "uint256", name: "", type: "uint256" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: false, + inputs: [ + { internalType: "address", name: "spender", type: "address" }, + { internalType: "uint256", name: "amount", type: "uint256" }, + ], + name: "approve", + outputs: [{ internalType: "bool", name: "", type: "bool" }], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: true, + inputs: [], + name: "available", + outputs: [{ internalType: "uint256", name: "", type: "uint256" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "balance", + outputs: [{ internalType: "uint256", name: "", type: "uint256" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [{ internalType: "address", name: "account", type: "address" }], + name: "balanceOf", + outputs: [{ internalType: "uint256", name: "", type: "uint256" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "controller", + outputs: [{ internalType: "address", name: "", type: "address" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "decimals", + outputs: [{ internalType: "uint8", name: "", type: "uint8" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: false, + inputs: [ + { internalType: "address", name: "spender", type: "address" }, + { internalType: "uint256", name: "subtractedValue", type: "uint256" }, + ], + name: "decreaseAllowance", + outputs: [{ internalType: "bool", name: "", type: "bool" }], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: false, + inputs: [{ internalType: "uint256", name: "_amount", type: "uint256" }], + name: "deposit", + outputs: [], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: false, + inputs: [], + name: "depositAll", + outputs: [], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: false, + inputs: [], + name: "earn", + outputs: [], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: true, + inputs: [], + name: "getPricePerFullShare", + outputs: [{ internalType: "uint256", name: "", type: "uint256" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "governance", + outputs: [{ internalType: "address", name: "", type: "address" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: false, + inputs: [ + { internalType: "address", name: "reserve", type: "address" }, + { internalType: "uint256", name: "amount", type: "uint256" }, + ], + name: "harvest", + outputs: [], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: false, + inputs: [ + { internalType: "address", name: "spender", type: "address" }, + { internalType: "uint256", name: "addedValue", type: "uint256" }, + ], + name: "increaseAllowance", + outputs: [{ internalType: "bool", name: "", type: "bool" }], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: true, + inputs: [], + name: "max", + outputs: [{ internalType: "uint256", name: "", type: "uint256" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "min", + outputs: [{ internalType: "uint256", name: "", type: "uint256" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "name", + outputs: [{ internalType: "string", name: "", type: "string" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: false, + inputs: [{ internalType: "address", name: "_controller", type: "address" }], + name: "setController", + outputs: [], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: false, + inputs: [{ internalType: "address", name: "_governance", type: "address" }], + name: "setGovernance", + outputs: [], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: false, + inputs: [{ internalType: "uint256", name: "_min", type: "uint256" }], + name: "setMin", + outputs: [], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: true, + inputs: [], + name: "symbol", + outputs: [{ internalType: "string", name: "", type: "string" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "token", + outputs: [{ internalType: "contract IERC20", name: "", type: "address" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "totalSupply", + outputs: [{ internalType: "uint256", name: "", type: "uint256" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: false, + inputs: [ + { internalType: "address", name: "recipient", type: "address" }, + { internalType: "uint256", name: "amount", type: "uint256" }, + ], + name: "transfer", + outputs: [{ internalType: "bool", name: "", type: "bool" }], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: false, + inputs: [ + { internalType: "address", name: "sender", type: "address" }, + { internalType: "address", name: "recipient", type: "address" }, + { internalType: "uint256", name: "amount", type: "uint256" }, + ], + name: "transferFrom", + outputs: [{ internalType: "bool", name: "", type: "bool" }], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: false, + inputs: [{ internalType: "uint256", name: "_shares", type: "uint256" }], + name: "withdraw", + outputs: [], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: false, + inputs: [], + name: "withdrawAll", + outputs: [], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, +]; + +const yfUSDTABIContract = [ + { + inputs: [ + { internalType: "address", name: "_token", type: "address" }, + { internalType: "address", name: "_earn", type: "address" }, + { internalType: "address", name: "_vault", type: "address" }, + ], + stateMutability: "nonpayable", + type: "constructor", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "owner", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "spender", + type: "address", + }, + { + indexed: false, + internalType: "uint256", + name: "value", + type: "uint256", + }, + ], + name: "Approval", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "previousOwner", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "newOwner", + type: "address", + }, + ], + name: "OwnershipTransferred", + type: "event", + }, + { + anonymous: false, + inputs: [ + { indexed: true, internalType: "address", name: "from", type: "address" }, + { indexed: true, internalType: "address", name: "to", type: "address" }, + { + indexed: false, + internalType: "uint256", + name: "value", + type: "uint256", + }, + ], + name: "Transfer", + type: "event", + }, + { + inputs: [], + name: "MAX_UINT", + outputs: [{ internalType: "uint256", name: "", type: "uint256" }], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { internalType: "address", name: "owner", type: "address" }, + { internalType: "address", name: "spender", type: "address" }, + ], + name: "allowance", + outputs: [{ internalType: "uint256", name: "", type: "uint256" }], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { internalType: "address", name: "spender", type: "address" }, + { internalType: "uint256", name: "amount", type: "uint256" }, + ], + name: "approve", + outputs: [{ internalType: "bool", name: "", type: "bool" }], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "approvePooling", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [{ internalType: "address", name: "account", type: "address" }], + name: "balanceOf", + outputs: [{ internalType: "uint256", name: "", type: "uint256" }], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "decimals", + outputs: [{ internalType: "uint8", name: "", type: "uint8" }], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { internalType: "address", name: "spender", type: "address" }, + { internalType: "uint256", name: "subtractedValue", type: "uint256" }, + ], + name: "decreaseAllowance", + outputs: [{ internalType: "bool", name: "", type: "bool" }], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { internalType: "uint256", name: "earnAmount", type: "uint256" }, + { internalType: "uint256", name: "vaultAmount", type: "uint256" }, + ], + name: "deposit", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "earn", + outputs: [{ internalType: "contract IYearn", name: "", type: "address" }], + stateMutability: "view", + type: "function", + }, + { + inputs: [{ internalType: "address", name: "_address", type: "address" }], + name: "earnBalanceOf", + outputs: [{ internalType: "uint256", name: "", type: "uint256" }], + stateMutability: "view", + type: "function", + }, + { + inputs: [{ internalType: "address", name: "_address", type: "address" }], + name: "earnDepositBalanceOf", + outputs: [{ internalType: "uint256", name: "", type: "uint256" }], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "earnPool", + outputs: [{ internalType: "uint256", name: "", type: "uint256" }], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "earnPrice", + outputs: [{ internalType: "uint256", name: "", type: "uint256" }], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "feePercentages", + outputs: [{ internalType: "uint256", name: "", type: "uint256" }], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { internalType: "address", name: "spender", type: "address" }, + { internalType: "uint256", name: "addedValue", type: "uint256" }, + ], + name: "increaseAllowance", + outputs: [{ internalType: "bool", name: "", type: "bool" }], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "isVesting", + outputs: [{ internalType: "bool", name: "", type: "bool" }], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "name", + outputs: [{ internalType: "string", name: "", type: "string" }], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "owner", + outputs: [{ internalType: "address", name: "", type: "address" }], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "refundEarn", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "refundVault", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "renounceOwnership", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "revertContract", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [{ internalType: "address", name: "_contract", type: "address" }], + name: "setEarn", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [{ internalType: "uint256", name: "_percentage", type: "uint256" }], + name: "setFeePercentages", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [{ internalType: "address", name: "_contract", type: "address" }], + name: "setVault", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "symbol", + outputs: [{ internalType: "string", name: "", type: "string" }], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "token", + outputs: [{ internalType: "contract IERC20", name: "", type: "address" }], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "totalSupply", + outputs: [{ internalType: "uint256", name: "", type: "uint256" }], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { internalType: "address", name: "recipient", type: "address" }, + { internalType: "uint256", name: "amount", type: "uint256" }, + ], + name: "transfer", + outputs: [{ internalType: "bool", name: "", type: "bool" }], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { internalType: "address", name: "sender", type: "address" }, + { internalType: "address", name: "recipient", type: "address" }, + { internalType: "uint256", name: "amount", type: "uint256" }, + ], + name: "transferFrom", + outputs: [{ internalType: "bool", name: "", type: "bool" }], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [{ internalType: "address", name: "newOwner", type: "address" }], + name: "transferOwnership", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "unlockDate", + outputs: [{ internalType: "uint256", name: "", type: "uint256" }], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "vault", + outputs: [{ internalType: "contract IYvault", name: "", type: "address" }], + stateMutability: "view", + type: "function", + }, + { + inputs: [{ internalType: "address", name: "_address", type: "address" }], + name: "vaultBalanceOf", + outputs: [{ internalType: "uint256", name: "", type: "uint256" }], + stateMutability: "view", + type: "function", + }, + { + inputs: [{ internalType: "address", name: "_address", type: "address" }], + name: "vaultDepositBalanceOf", + outputs: [{ internalType: "uint256", name: "", type: "uint256" }], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "vaultPool", + outputs: [{ internalType: "uint256", name: "", type: "uint256" }], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "vaultPrice", + outputs: [{ internalType: "uint256", name: "", type: "uint256" }], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "vesting", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [{ internalType: "uint256", name: "_shares", type: "uint256" }], + name: "withdrawEarn", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "withdrawToken", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [{ internalType: "uint256", name: "_shares", type: "uint256" }], + name: "withdrawVault", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, +]; + +const aggregatedContractABI = [ + { + inputs: [], + payable: false, + stateMutability: "nonpayable", + type: "constructor", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "previousOwner", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "newOwner", + type: "address", + }, + ], + name: "OwnershipTransferred", + type: "event", + }, + { + constant: true, + inputs: [], + name: "APR", + outputs: [{ internalType: "address", name: "", type: "address" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "UNI", + outputs: [{ internalType: "address", name: "", type: "address" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "UNIAPR", + outputs: [{ internalType: "address", name: "", type: "address" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "UNIROI", + outputs: [{ internalType: "address", name: "", type: "address" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [{ internalType: "address", name: "", type: "address" }], + name: "aave", + outputs: [{ internalType: "address", name: "", type: "address" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [{ internalType: "address", name: "", type: "address" }], + name: "aaveUni", + outputs: [{ internalType: "address", name: "", type: "address" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: false, + inputs: [ + { internalType: "address", name: "token", type: "address" }, + { internalType: "address", name: "aToken", type: "address" }, + ], + name: "addAToken", + outputs: [], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: false, + inputs: [ + { internalType: "address", name: "token", type: "address" }, + { internalType: "address", name: "aToken", type: "address" }, + ], + name: "addAUniToken", + outputs: [], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: false, + inputs: [ + { internalType: "address", name: "token", type: "address" }, + { internalType: "address", name: "cToken", type: "address" }, + ], + name: "addCToken", + outputs: [], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: false, + inputs: [ + { internalType: "address", name: "token", type: "address" }, + { internalType: "uint256", name: "dToken", type: "uint256" }, + ], + name: "addDToken", + outputs: [], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: false, + inputs: [ + { internalType: "address", name: "token", type: "address" }, + { internalType: "address", name: "iToken", type: "address" }, + ], + name: "addIToken", + outputs: [], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: false, + inputs: [ + { internalType: "address", name: "token", type: "address" }, + { internalType: "uint256", name: "created", type: "uint256" }, + ], + name: "addPool", + outputs: [], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: true, + inputs: [{ internalType: "address", name: "", type: "address" }], + name: "compound", + outputs: [{ internalType: "address", name: "", type: "address" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [{ internalType: "address", name: "", type: "address" }], + name: "dydx", + outputs: [{ internalType: "uint256", name: "", type: "uint256" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [{ internalType: "address", name: "", type: "address" }], + name: "fulcrum", + outputs: [{ internalType: "address", name: "", type: "address" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [{ internalType: "address", name: "_token", type: "address" }], + name: "getAPROptions", + outputs: [ + { internalType: "uint256", name: "uniapr", type: "uint256" }, + { internalType: "uint256", name: "capr", type: "uint256" }, + { internalType: "uint256", name: "unicapr", type: "uint256" }, + { internalType: "uint256", name: "iapr", type: "uint256" }, + { internalType: "uint256", name: "uniiapr", type: "uint256" }, + { internalType: "uint256", name: "aapr", type: "uint256" }, + { internalType: "uint256", name: "uniaapr", type: "uint256" }, + { internalType: "uint256", name: "dapr", type: "uint256" }, + ], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "getBAT", + outputs: [ + { internalType: "uint256", name: "uniapr", type: "uint256" }, + { internalType: "uint256", name: "capr", type: "uint256" }, + { internalType: "uint256", name: "unicapr", type: "uint256" }, + { internalType: "uint256", name: "iapr", type: "uint256" }, + { internalType: "uint256", name: "uniiapr", type: "uint256" }, + { internalType: "uint256", name: "aapr", type: "uint256" }, + { internalType: "uint256", name: "uniaapr", type: "uint256" }, + { internalType: "uint256", name: "dapr", type: "uint256" }, + ], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "getDAI", + outputs: [ + { internalType: "uint256", name: "uniapr", type: "uint256" }, + { internalType: "uint256", name: "capr", type: "uint256" }, + { internalType: "uint256", name: "unicapr", type: "uint256" }, + { internalType: "uint256", name: "iapr", type: "uint256" }, + { internalType: "uint256", name: "uniiapr", type: "uint256" }, + { internalType: "uint256", name: "aapr", type: "uint256" }, + { internalType: "uint256", name: "uniaapr", type: "uint256" }, + { internalType: "uint256", name: "dapr", type: "uint256" }, + ], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "getETH", + outputs: [ + { internalType: "uint256", name: "uniapr", type: "uint256" }, + { internalType: "uint256", name: "capr", type: "uint256" }, + { internalType: "uint256", name: "unicapr", type: "uint256" }, + { internalType: "uint256", name: "iapr", type: "uint256" }, + { internalType: "uint256", name: "uniiapr", type: "uint256" }, + { internalType: "uint256", name: "aapr", type: "uint256" }, + { internalType: "uint256", name: "uniaapr", type: "uint256" }, + { internalType: "uint256", name: "dapr", type: "uint256" }, + ], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "getKNC", + outputs: [ + { internalType: "uint256", name: "uniapr", type: "uint256" }, + { internalType: "uint256", name: "capr", type: "uint256" }, + { internalType: "uint256", name: "unicapr", type: "uint256" }, + { internalType: "uint256", name: "iapr", type: "uint256" }, + { internalType: "uint256", name: "uniiapr", type: "uint256" }, + { internalType: "uint256", name: "aapr", type: "uint256" }, + { internalType: "uint256", name: "uniaapr", type: "uint256" }, + { internalType: "uint256", name: "dapr", type: "uint256" }, + ], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "getLINK", + outputs: [ + { internalType: "uint256", name: "uniapr", type: "uint256" }, + { internalType: "uint256", name: "capr", type: "uint256" }, + { internalType: "uint256", name: "unicapr", type: "uint256" }, + { internalType: "uint256", name: "iapr", type: "uint256" }, + { internalType: "uint256", name: "uniiapr", type: "uint256" }, + { internalType: "uint256", name: "aapr", type: "uint256" }, + { internalType: "uint256", name: "uniaapr", type: "uint256" }, + { internalType: "uint256", name: "dapr", type: "uint256" }, + ], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "getMKR", + outputs: [ + { internalType: "uint256", name: "uniapr", type: "uint256" }, + { internalType: "uint256", name: "capr", type: "uint256" }, + { internalType: "uint256", name: "unicapr", type: "uint256" }, + { internalType: "uint256", name: "iapr", type: "uint256" }, + { internalType: "uint256", name: "uniiapr", type: "uint256" }, + { internalType: "uint256", name: "aapr", type: "uint256" }, + { internalType: "uint256", name: "uniaapr", type: "uint256" }, + { internalType: "uint256", name: "dapr", type: "uint256" }, + ], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "getREP", + outputs: [ + { internalType: "uint256", name: "uniapr", type: "uint256" }, + { internalType: "uint256", name: "capr", type: "uint256" }, + { internalType: "uint256", name: "unicapr", type: "uint256" }, + { internalType: "uint256", name: "iapr", type: "uint256" }, + { internalType: "uint256", name: "uniiapr", type: "uint256" }, + { internalType: "uint256", name: "aapr", type: "uint256" }, + { internalType: "uint256", name: "uniaapr", type: "uint256" }, + { internalType: "uint256", name: "dapr", type: "uint256" }, + ], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "getSNX", + outputs: [ + { internalType: "uint256", name: "uniapr", type: "uint256" }, + { internalType: "uint256", name: "capr", type: "uint256" }, + { internalType: "uint256", name: "unicapr", type: "uint256" }, + { internalType: "uint256", name: "iapr", type: "uint256" }, + { internalType: "uint256", name: "uniiapr", type: "uint256" }, + { internalType: "uint256", name: "aapr", type: "uint256" }, + { internalType: "uint256", name: "uniaapr", type: "uint256" }, + { internalType: "uint256", name: "dapr", type: "uint256" }, + ], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "getSUSD", + outputs: [ + { internalType: "uint256", name: "uniapr", type: "uint256" }, + { internalType: "uint256", name: "capr", type: "uint256" }, + { internalType: "uint256", name: "unicapr", type: "uint256" }, + { internalType: "uint256", name: "iapr", type: "uint256" }, + { internalType: "uint256", name: "uniiapr", type: "uint256" }, + { internalType: "uint256", name: "aapr", type: "uint256" }, + { internalType: "uint256", name: "uniaapr", type: "uint256" }, + { internalType: "uint256", name: "dapr", type: "uint256" }, + ], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "getUSDC", + outputs: [ + { internalType: "uint256", name: "uniapr", type: "uint256" }, + { internalType: "uint256", name: "capr", type: "uint256" }, + { internalType: "uint256", name: "unicapr", type: "uint256" }, + { internalType: "uint256", name: "iapr", type: "uint256" }, + { internalType: "uint256", name: "uniiapr", type: "uint256" }, + { internalType: "uint256", name: "aapr", type: "uint256" }, + { internalType: "uint256", name: "uniaapr", type: "uint256" }, + { internalType: "uint256", name: "dapr", type: "uint256" }, + ], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "getUSDT", + outputs: [ + { internalType: "uint256", name: "uniapr", type: "uint256" }, + { internalType: "uint256", name: "capr", type: "uint256" }, + { internalType: "uint256", name: "unicapr", type: "uint256" }, + { internalType: "uint256", name: "iapr", type: "uint256" }, + { internalType: "uint256", name: "uniiapr", type: "uint256" }, + { internalType: "uint256", name: "aapr", type: "uint256" }, + { internalType: "uint256", name: "uniaapr", type: "uint256" }, + { internalType: "uint256", name: "dapr", type: "uint256" }, + ], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "getWBTC", + outputs: [ + { internalType: "uint256", name: "uniapr", type: "uint256" }, + { internalType: "uint256", name: "capr", type: "uint256" }, + { internalType: "uint256", name: "unicapr", type: "uint256" }, + { internalType: "uint256", name: "iapr", type: "uint256" }, + { internalType: "uint256", name: "uniiapr", type: "uint256" }, + { internalType: "uint256", name: "aapr", type: "uint256" }, + { internalType: "uint256", name: "uniaapr", type: "uint256" }, + { internalType: "uint256", name: "dapr", type: "uint256" }, + ], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "getZRX", + outputs: [ + { internalType: "uint256", name: "uniapr", type: "uint256" }, + { internalType: "uint256", name: "capr", type: "uint256" }, + { internalType: "uint256", name: "unicapr", type: "uint256" }, + { internalType: "uint256", name: "iapr", type: "uint256" }, + { internalType: "uint256", name: "uniiapr", type: "uint256" }, + { internalType: "uint256", name: "aapr", type: "uint256" }, + { internalType: "uint256", name: "uniaapr", type: "uint256" }, + { internalType: "uint256", name: "dapr", type: "uint256" }, + ], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: false, + inputs: [], + name: "inCaseETHGetsStuck", + outputs: [], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: false, + inputs: [ + { + internalType: "contract IERC20", + name: "_TokenAddress", + type: "address", + }, + ], + name: "inCaseTokenGetsStuck", + outputs: [], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: true, + inputs: [], + name: "isOwner", + outputs: [{ internalType: "bool", name: "", type: "bool" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "owner", + outputs: [{ internalType: "address", name: "", type: "address" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [{ internalType: "address", name: "", type: "address" }], + name: "pools", + outputs: [{ internalType: "uint256", name: "", type: "uint256" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: false, + inputs: [], + name: "renounceOwnership", + outputs: [], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: false, + inputs: [{ internalType: "address", name: "_new_APR", type: "address" }], + name: "set_new_APR", + outputs: [], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: false, + inputs: [{ internalType: "address", name: "_new_UNI", type: "address" }], + name: "set_new_UNI", + outputs: [], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: false, + inputs: [{ internalType: "address", name: "_new_UNIAPR", type: "address" }], + name: "set_new_UNIAPR", + outputs: [], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: false, + inputs: [{ internalType: "address", name: "_new_UNIROI", type: "address" }], + name: "set_new_UNIROI", + outputs: [], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: false, + inputs: [{ internalType: "address", name: "newOwner", type: "address" }], + name: "transferOwnership", + outputs: [], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: true, + inputs: [{ internalType: "address", name: "_token", type: "address" }], + name: "viewPool", + outputs: [ + { internalType: "address", name: "token", type: "address" }, + { internalType: "address", name: "unipool", type: "address" }, + { internalType: "uint256", name: "created", type: "uint256" }, + { internalType: "string", name: "name", type: "string" }, + { internalType: "string", name: "symbol", type: "string" }, + ], + payable: false, + stateMutability: "view", + type: "function", + }, +]; + +const earnUSDTABIContract = [ + { + constant: false, + inputs: [{ name: "amount", type: "uint256" }], + name: "supplyDydx", + outputs: [], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: true, + inputs: [], + name: "aaveToken", + outputs: [{ name: "", type: "address" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "name", + outputs: [{ name: "", type: "string" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "provider", + outputs: [{ name: "", type: "uint8" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: false, + inputs: [ + { name: "spender", type: "address" }, + { name: "amount", type: "uint256" }, + ], + name: "approve", + outputs: [{ name: "", type: "bool" }], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: true, + inputs: [], + name: "balanceFulcrum", + outputs: [{ name: "", type: "uint256" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "pool", + outputs: [{ name: "", type: "uint256" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "totalSupply", + outputs: [{ name: "", type: "uint256" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: false, + inputs: [ + { name: "sender", type: "address" }, + { name: "recipient", type: "address" }, + { name: "amount", type: "uint256" }, + ], + name: "transferFrom", + outputs: [{ name: "", type: "bool" }], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: false, + inputs: [{ name: "_shares", type: "uint256" }], + name: "withdraw", + outputs: [], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: true, + inputs: [], + name: "decimals", + outputs: [{ name: "", type: "uint8" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: false, + inputs: [ + { name: "spender", type: "address" }, + { name: "addedValue", type: "uint256" }, + ], + name: "increaseAllowance", + outputs: [{ name: "", type: "bool" }], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: true, + inputs: [], + name: "balanceDydx", + outputs: [{ name: "", type: "uint256" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: false, + inputs: [{ name: "amount", type: "uint256" }], + name: "withdrawDydx", + outputs: [], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: false, + inputs: [{ name: "_new_APR", type: "address" }], + name: "set_new_APR", + outputs: [], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: false, + inputs: [{ name: "amount", type: "uint256" }], + name: "withdrawAave", + outputs: [], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: true, + inputs: [], + name: "apr", + outputs: [{ name: "", type: "address" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "fulcrum", + outputs: [{ name: "", type: "address" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "balanceCompound", + outputs: [{ name: "", type: "uint256" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: false, + inputs: [{ name: "amount", type: "uint256" }], + name: "supplyAave", + outputs: [], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: false, + inputs: [{ name: "_amount", type: "uint256" }], + name: "withdrawSomeFulcrum", + outputs: [], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: true, + inputs: [{ name: "account", type: "address" }], + name: "balanceOf", + outputs: [{ name: "", type: "uint256" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "calcPoolValueInToken", + outputs: [{ name: "", type: "uint256" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: false, + inputs: [], + name: "renounceOwnership", + outputs: [], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: true, + inputs: [], + name: "getPricePerFullShare", + outputs: [{ name: "", type: "uint256" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: false, + inputs: [], + name: "rebalance", + outputs: [], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: false, + inputs: [{ name: "amount", type: "uint256" }], + name: "supplyFulcrum", + outputs: [], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: false, + inputs: [{ name: "_new_AAVE", type: "address" }], + name: "set_new_AAVE", + outputs: [], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: true, + inputs: [], + name: "aave", + outputs: [{ name: "", type: "address" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "owner", + outputs: [{ name: "", type: "address" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "dydx", + outputs: [{ name: "", type: "address" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "isOwner", + outputs: [{ name: "", type: "bool" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "balanceFulcrumAvailable", + outputs: [{ name: "", type: "uint256" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "symbol", + outputs: [{ name: "", type: "string" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: false, + inputs: [], + name: "approveToken", + outputs: [], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: false, + inputs: [{ name: "_new_DTOKEN", type: "uint256" }], + name: "set_new_DTOKEN", + outputs: [], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: true, + inputs: [], + name: "aavePool", + outputs: [{ name: "", type: "address" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "recommend", + outputs: [{ name: "", type: "uint8" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: false, + inputs: [ + { name: "spender", type: "address" }, + { name: "subtractedValue", type: "uint256" }, + ], + name: "decreaseAllowance", + outputs: [{ name: "", type: "bool" }], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: true, + inputs: [], + name: "balanceCompoundInToken", + outputs: [{ name: "", type: "uint256" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: false, + inputs: [ + { name: "recipient", type: "address" }, + { name: "amount", type: "uint256" }, + ], + name: "transfer", + outputs: [{ name: "", type: "bool" }], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: false, + inputs: [{ name: "_new_ATOKEN", type: "address" }], + name: "set_new_ATOKEN", + outputs: [], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: true, + inputs: [], + name: "balanceAaveAvailable", + outputs: [{ name: "", type: "uint256" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: false, + inputs: [{ name: "_amount", type: "uint256" }], + name: "withdrawSomeCompound", + outputs: [], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: true, + inputs: [], + name: "balance", + outputs: [{ name: "", type: "uint256" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: false, + inputs: [{ name: "_amount", type: "uint256" }], + name: "deposit", + outputs: [], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: false, + inputs: [{ name: "_new_FULCRUM", type: "address" }], + name: "set_new_FULCRUM", + outputs: [], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: true, + inputs: [], + name: "balanceAave", + outputs: [{ name: "", type: "uint256" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "balanceDydxAvailable", + outputs: [{ name: "", type: "uint256" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "dToken", + outputs: [{ name: "", type: "uint256" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [ + { name: "owner", type: "address" }, + { name: "spender", type: "address" }, + ], + name: "allowance", + outputs: [{ name: "", type: "uint256" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: false, + inputs: [{ name: "amount", type: "uint256" }], + name: "supplyCompound", + outputs: [], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: false, + inputs: [{ name: "newOwner", type: "address" }], + name: "transferOwnership", + outputs: [], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: true, + inputs: [], + name: "balanceFulcrumInToken", + outputs: [{ name: "", type: "uint256" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: false, + inputs: [{ name: "_new_COMPOUND", type: "address" }], + name: "set_new_COMPOUND", + outputs: [], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: true, + inputs: [], + name: "compound", + outputs: [{ name: "", type: "address" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "getAave", + outputs: [{ name: "", type: "address" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "getAaveCore", + outputs: [{ name: "", type: "address" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "token", + outputs: [{ name: "", type: "address" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + inputs: [], + payable: false, + stateMutability: "nonpayable", + type: "constructor", + }, + { + anonymous: false, + inputs: [ + { indexed: true, name: "previousOwner", type: "address" }, + { indexed: true, name: "newOwner", type: "address" }, + ], + name: "OwnershipTransferred", + type: "event", + }, + { + anonymous: false, + inputs: [ + { indexed: true, name: "from", type: "address" }, + { indexed: true, name: "to", type: "address" }, + { indexed: false, name: "value", type: "uint256" }, + ], + name: "Transfer", + type: "event", + }, + { + anonymous: false, + inputs: [ + { indexed: true, name: "owner", type: "address" }, + { indexed: true, name: "spender", type: "address" }, + { indexed: false, name: "value", type: "uint256" }, + ], + name: "Approval", + type: "event", + }, +]; + +const earnUSDCABIContract = [ + { + constant: false, + inputs: [{ name: "amount", type: "uint256" }], + name: "supplyDydx", + outputs: [], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: true, + inputs: [], + name: "aaveToken", + outputs: [{ name: "", type: "address" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "name", + outputs: [{ name: "", type: "string" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "provider", + outputs: [{ name: "", type: "uint8" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: false, + inputs: [ + { name: "spender", type: "address" }, + { name: "amount", type: "uint256" }, + ], + name: "approve", + outputs: [{ name: "", type: "bool" }], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: true, + inputs: [], + name: "balanceFulcrum", + outputs: [{ name: "", type: "uint256" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "pool", + outputs: [{ name: "", type: "uint256" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "totalSupply", + outputs: [{ name: "", type: "uint256" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: false, + inputs: [{ name: "_new_APOOL", type: "address" }], + name: "set_new_APOOL", + outputs: [], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: false, + inputs: [ + { name: "sender", type: "address" }, + { name: "recipient", type: "address" }, + { name: "amount", type: "uint256" }, + ], + name: "transferFrom", + outputs: [{ name: "", type: "bool" }], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: false, + inputs: [{ name: "_shares", type: "uint256" }], + name: "withdraw", + outputs: [], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: true, + inputs: [], + name: "decimals", + outputs: [{ name: "", type: "uint8" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: false, + inputs: [ + { name: "spender", type: "address" }, + { name: "addedValue", type: "uint256" }, + ], + name: "increaseAllowance", + outputs: [{ name: "", type: "bool" }], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: true, + inputs: [], + name: "balanceDydx", + outputs: [{ name: "", type: "uint256" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: false, + inputs: [{ name: "amount", type: "uint256" }], + name: "withdrawDydx", + outputs: [], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: false, + inputs: [{ name: "_new_APR", type: "address" }], + name: "set_new_APR", + outputs: [], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: false, + inputs: [{ name: "amount", type: "uint256" }], + name: "withdrawAave", + outputs: [], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: true, + inputs: [], + name: "apr", + outputs: [{ name: "", type: "address" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "fulcrum", + outputs: [{ name: "", type: "address" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "balanceCompound", + outputs: [{ name: "", type: "uint256" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: false, + inputs: [{ name: "amount", type: "uint256" }], + name: "supplyAave", + outputs: [], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: false, + inputs: [{ name: "_amount", type: "uint256" }], + name: "withdrawSomeFulcrum", + outputs: [], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: true, + inputs: [{ name: "account", type: "address" }], + name: "balanceOf", + outputs: [{ name: "", type: "uint256" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "calcPoolValueInToken", + outputs: [{ name: "", type: "uint256" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: false, + inputs: [], + name: "renounceOwnership", + outputs: [], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: true, + inputs: [], + name: "getPricePerFullShare", + outputs: [{ name: "", type: "uint256" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: false, + inputs: [], + name: "rebalance", + outputs: [], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: false, + inputs: [{ name: "amount", type: "uint256" }], + name: "supplyFulcrum", + outputs: [], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: false, + inputs: [{ name: "_new_AAVE", type: "address" }], + name: "set_new_AAVE", + outputs: [], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: true, + inputs: [], + name: "aave", + outputs: [{ name: "", type: "address" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "owner", + outputs: [{ name: "", type: "address" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "dydx", + outputs: [{ name: "", type: "address" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "isOwner", + outputs: [{ name: "", type: "bool" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "balanceFulcrumAvailable", + outputs: [{ name: "", type: "uint256" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "symbol", + outputs: [{ name: "", type: "string" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: false, + inputs: [], + name: "approveToken", + outputs: [], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: false, + inputs: [{ name: "_new_DTOKEN", type: "uint256" }], + name: "set_new_DTOKEN", + outputs: [], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: true, + inputs: [], + name: "aavePool", + outputs: [{ name: "", type: "address" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "recommend", + outputs: [{ name: "", type: "uint8" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: false, + inputs: [ + { name: "spender", type: "address" }, + { name: "subtractedValue", type: "uint256" }, + ], + name: "decreaseAllowance", + outputs: [{ name: "", type: "bool" }], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: true, + inputs: [], + name: "balanceCompoundInToken", + outputs: [{ name: "", type: "uint256" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: false, + inputs: [ + { name: "recipient", type: "address" }, + { name: "amount", type: "uint256" }, + ], + name: "transfer", + outputs: [{ name: "", type: "bool" }], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: false, + inputs: [{ name: "_new_ATOKEN", type: "address" }], + name: "set_new_ATOKEN", + outputs: [], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: true, + inputs: [], + name: "balanceAaveAvailable", + outputs: [{ name: "", type: "uint256" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: false, + inputs: [{ name: "_amount", type: "uint256" }], + name: "withdrawSomeCompound", + outputs: [], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: true, + inputs: [], + name: "balance", + outputs: [{ name: "", type: "uint256" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: false, + inputs: [{ name: "_amount", type: "uint256" }], + name: "deposit", + outputs: [], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: false, + inputs: [{ name: "_new_FULCRUM", type: "address" }], + name: "set_new_FULCRUM", + outputs: [], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: true, + inputs: [], + name: "balanceAave", + outputs: [{ name: "", type: "uint256" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "balanceDydxAvailable", + outputs: [{ name: "", type: "uint256" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "dToken", + outputs: [{ name: "", type: "uint256" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [ + { name: "owner", type: "address" }, + { name: "spender", type: "address" }, + ], + name: "allowance", + outputs: [{ name: "", type: "uint256" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: false, + inputs: [{ name: "amount", type: "uint256" }], + name: "supplyCompound", + outputs: [], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: false, + inputs: [{ name: "newOwner", type: "address" }], + name: "transferOwnership", + outputs: [], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: true, + inputs: [], + name: "balanceFulcrumInToken", + outputs: [{ name: "", type: "uint256" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: false, + inputs: [{ name: "_new_COMPOUND", type: "address" }], + name: "set_new_COMPOUND", + outputs: [], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: true, + inputs: [], + name: "compound", + outputs: [{ name: "", type: "address" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "getAave", + outputs: [{ name: "", type: "address" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "getAaveCore", + outputs: [{ name: "", type: "address" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "token", + outputs: [{ name: "", type: "address" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + inputs: [], + payable: false, + stateMutability: "nonpayable", + type: "constructor", + }, + { + anonymous: false, + inputs: [ + { indexed: true, name: "previousOwner", type: "address" }, + { indexed: true, name: "newOwner", type: "address" }, + ], + name: "OwnershipTransferred", + type: "event", + }, + { + anonymous: false, + inputs: [ + { indexed: true, name: "from", type: "address" }, + { indexed: true, name: "to", type: "address" }, + { indexed: false, name: "value", type: "uint256" }, + ], + name: "Transfer", + type: "event", + }, + { + anonymous: false, + inputs: [ + { indexed: true, name: "owner", type: "address" }, + { indexed: true, name: "spender", type: "address" }, + { indexed: false, name: "value", type: "uint256" }, + ], + name: "Approval", + type: "event", + }, +]; + +const earnDAIABIContract = [ + { + constant: true, + inputs: [], + name: "aaveToken", + outputs: [{ name: "", type: "address" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "name", + outputs: [{ name: "", type: "string" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "provider", + outputs: [{ name: "", type: "uint8" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: false, + inputs: [ + { name: "spender", type: "address" }, + { name: "amount", type: "uint256" }, + ], + name: "approve", + outputs: [{ name: "", type: "bool" }], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: true, + inputs: [], + name: "balanceFulcrum", + outputs: [{ name: "", type: "uint256" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "pool", + outputs: [{ name: "", type: "uint256" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "totalSupply", + outputs: [{ name: "", type: "uint256" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: false, + inputs: [ + { name: "sender", type: "address" }, + { name: "recipient", type: "address" }, + { name: "amount", type: "uint256" }, + ], + name: "transferFrom", + outputs: [{ name: "", type: "bool" }], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: false, + inputs: [{ name: "_shares", type: "uint256" }], + name: "withdraw", + outputs: [], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: true, + inputs: [], + name: "decimals", + outputs: [{ name: "", type: "uint8" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: false, + inputs: [ + { name: "spender", type: "address" }, + { name: "addedValue", type: "uint256" }, + ], + name: "increaseAllowance", + outputs: [{ name: "", type: "bool" }], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: true, + inputs: [], + name: "balanceDydx", + outputs: [{ name: "", type: "uint256" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "apr", + outputs: [{ name: "", type: "address" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "fulcrum", + outputs: [{ name: "", type: "address" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "balanceCompound", + outputs: [{ name: "", type: "uint256" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [{ name: "account", type: "address" }], + name: "balanceOf", + outputs: [{ name: "", type: "uint256" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "calcPoolValueInToken", + outputs: [{ name: "", type: "uint256" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: false, + inputs: [], + name: "renounceOwnership", + outputs: [], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: true, + inputs: [], + name: "getPricePerFullShare", + outputs: [{ name: "", type: "uint256" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: false, + inputs: [], + name: "rebalance", + outputs: [], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: true, + inputs: [], + name: "aave", + outputs: [{ name: "", type: "address" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "owner", + outputs: [{ name: "", type: "address" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "dydx", + outputs: [{ name: "", type: "address" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "isOwner", + outputs: [{ name: "", type: "bool" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "balanceFulcrumAvailable", + outputs: [{ name: "", type: "uint256" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "symbol", + outputs: [{ name: "", type: "string" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: false, + inputs: [], + name: "approveToken", + outputs: [], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: true, + inputs: [], + name: "aavePool", + outputs: [{ name: "", type: "address" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "recommend", + outputs: [{ name: "", type: "uint8" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: false, + inputs: [ + { name: "spender", type: "address" }, + { name: "subtractedValue", type: "uint256" }, + ], + name: "decreaseAllowance", + outputs: [{ name: "", type: "bool" }], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: true, + inputs: [], + name: "balanceCompoundInToken", + outputs: [{ name: "", type: "uint256" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: false, + inputs: [ + { name: "recipient", type: "address" }, + { name: "amount", type: "uint256" }, + ], + name: "transfer", + outputs: [{ name: "", type: "bool" }], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: true, + inputs: [], + name: "balanceAaveAvailable", + outputs: [{ name: "", type: "uint256" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "chai", + outputs: [{ name: "", type: "address" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "balance", + outputs: [{ name: "", type: "uint256" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: false, + inputs: [{ name: "_amount", type: "uint256" }], + name: "deposit", + outputs: [], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: true, + inputs: [], + name: "balanceAave", + outputs: [{ name: "", type: "uint256" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "balanceDydxAvailable", + outputs: [{ name: "", type: "uint256" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "dToken", + outputs: [{ name: "", type: "uint256" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [ + { name: "owner", type: "address" }, + { name: "spender", type: "address" }, + ], + name: "allowance", + outputs: [{ name: "", type: "uint256" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: false, + inputs: [{ name: "newOwner", type: "address" }], + name: "transferOwnership", + outputs: [], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: true, + inputs: [], + name: "balanceFulcrumInToken", + outputs: [{ name: "", type: "uint256" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "compound", + outputs: [{ name: "", type: "address" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "getAave", + outputs: [{ name: "", type: "address" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "getAaveCore", + outputs: [{ name: "", type: "address" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "token", + outputs: [{ name: "", type: "address" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + inputs: [], + payable: false, + stateMutability: "nonpayable", + type: "constructor", + }, + { + anonymous: false, + inputs: [ + { indexed: true, name: "previousOwner", type: "address" }, + { indexed: true, name: "newOwner", type: "address" }, + ], + name: "OwnershipTransferred", + type: "event", + }, + { + anonymous: false, + inputs: [ + { indexed: true, name: "from", type: "address" }, + { indexed: true, name: "to", type: "address" }, + { indexed: false, name: "value", type: "uint256" }, + ], + name: "Transfer", + type: "event", + }, + { + anonymous: false, + inputs: [ + { indexed: true, name: "owner", type: "address" }, + { indexed: true, name: "spender", type: "address" }, + { indexed: false, name: "value", type: "uint256" }, + ], + name: "Approval", + type: "event", + }, +]; + +const earnTUSDABIContract = [ + { + constant: false, + inputs: [{ name: "amount", type: "uint256" }], + name: "supplyDydx", + outputs: [{ name: "", type: "uint256" }], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: true, + inputs: [], + name: "aaveToken", + outputs: [{ name: "", type: "address" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "name", + outputs: [{ name: "", type: "string" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "provider", + outputs: [{ name: "", type: "uint8" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: false, + inputs: [ + { name: "spender", type: "address" }, + { name: "amount", type: "uint256" }, + ], + name: "approve", + outputs: [{ name: "", type: "bool" }], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: true, + inputs: [], + name: "balanceFulcrum", + outputs: [{ name: "", type: "uint256" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "pool", + outputs: [{ name: "", type: "uint256" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "totalSupply", + outputs: [{ name: "", type: "uint256" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: false, + inputs: [ + { name: "sender", type: "address" }, + { name: "recipient", type: "address" }, + { name: "amount", type: "uint256" }, + ], + name: "transferFrom", + outputs: [{ name: "", type: "bool" }], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: false, + inputs: [{ name: "_shares", type: "uint256" }], + name: "withdraw", + outputs: [], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: true, + inputs: [], + name: "decimals", + outputs: [{ name: "", type: "uint8" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: false, + inputs: [ + { name: "spender", type: "address" }, + { name: "addedValue", type: "uint256" }, + ], + name: "increaseAllowance", + outputs: [{ name: "", type: "bool" }], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: true, + inputs: [], + name: "balanceDydx", + outputs: [{ name: "", type: "uint256" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: false, + inputs: [{ name: "_new_APR", type: "address" }], + name: "set_new_APR", + outputs: [], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: true, + inputs: [], + name: "apr", + outputs: [{ name: "", type: "address" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "fulcrum", + outputs: [{ name: "", type: "address" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "balanceCompound", + outputs: [{ name: "", type: "uint256" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: false, + inputs: [{ name: "amount", type: "uint256" }], + name: "supplyAave", + outputs: [], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: true, + inputs: [{ name: "account", type: "address" }], + name: "balanceOf", + outputs: [{ name: "", type: "uint256" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "calcPoolValueInToken", + outputs: [{ name: "", type: "uint256" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: false, + inputs: [], + name: "renounceOwnership", + outputs: [], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: true, + inputs: [], + name: "getPricePerFullShare", + outputs: [{ name: "", type: "uint256" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: false, + inputs: [], + name: "rebalance", + outputs: [], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: false, + inputs: [{ name: "amount", type: "uint256" }], + name: "supplyFulcrum", + outputs: [], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: true, + inputs: [], + name: "aave", + outputs: [{ name: "", type: "address" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "owner", + outputs: [{ name: "", type: "address" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "dydx", + outputs: [{ name: "", type: "address" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "isOwner", + outputs: [{ name: "", type: "bool" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "symbol", + outputs: [{ name: "", type: "string" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: false, + inputs: [], + name: "approveToken", + outputs: [], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: false, + inputs: [{ name: "_new_DTOKEN", type: "uint256" }], + name: "set_new_DTOKEN", + outputs: [], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: true, + inputs: [], + name: "recommend", + outputs: [{ name: "", type: "uint8" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: false, + inputs: [ + { name: "spender", type: "address" }, + { name: "subtractedValue", type: "uint256" }, + ], + name: "decreaseAllowance", + outputs: [{ name: "", type: "bool" }], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: true, + inputs: [], + name: "balanceCompoundInToken", + outputs: [{ name: "", type: "uint256" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: false, + inputs: [ + { name: "recipient", type: "address" }, + { name: "amount", type: "uint256" }, + ], + name: "transfer", + outputs: [{ name: "", type: "bool" }], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: true, + inputs: [], + name: "balance", + outputs: [{ name: "", type: "uint256" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: false, + inputs: [{ name: "_amount", type: "uint256" }], + name: "deposit", + outputs: [], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: true, + inputs: [], + name: "balanceAave", + outputs: [{ name: "", type: "uint256" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "dToken", + outputs: [{ name: "", type: "uint256" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [ + { name: "owner", type: "address" }, + { name: "spender", type: "address" }, + ], + name: "allowance", + outputs: [{ name: "", type: "uint256" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: false, + inputs: [{ name: "amount", type: "uint256" }], + name: "supplyCompound", + outputs: [], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: false, + inputs: [{ name: "newOwner", type: "address" }], + name: "transferOwnership", + outputs: [], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: true, + inputs: [], + name: "balanceFulcrumInToken", + outputs: [{ name: "", type: "uint256" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: false, + inputs: [{ name: "_new_COMPOUND", type: "address" }], + name: "set_new_COMPOUND", + outputs: [], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: true, + inputs: [], + name: "compound", + outputs: [{ name: "", type: "address" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "getAave", + outputs: [{ name: "", type: "address" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "getAaveCore", + outputs: [{ name: "", type: "address" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "token", + outputs: [{ name: "", type: "address" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + inputs: [], + payable: false, + stateMutability: "nonpayable", + type: "constructor", + }, + { payable: true, stateMutability: "payable", type: "fallback" }, + { + anonymous: false, + inputs: [ + { indexed: true, name: "previousOwner", type: "address" }, + { indexed: true, name: "newOwner", type: "address" }, + ], + name: "OwnershipTransferred", + type: "event", + }, + { + anonymous: false, + inputs: [ + { indexed: true, name: "from", type: "address" }, + { indexed: true, name: "to", type: "address" }, + { indexed: false, name: "value", type: "uint256" }, + ], + name: "Transfer", + type: "event", + }, + { + anonymous: false, + inputs: [ + { indexed: true, name: "owner", type: "address" }, + { indexed: true, name: "spender", type: "address" }, + { indexed: false, name: "value", type: "uint256" }, + ], + name: "Approval", + type: "event", + }, +]; + +const vaultUSDTABIContract = [ + { + inputs: [ + { internalType: "address", name: "_token", type: "address" }, + { internalType: "address", name: "_controller", type: "address" }, + ], + payable: false, + stateMutability: "nonpayable", + type: "constructor", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "owner", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "spender", + type: "address", + }, + { + indexed: false, + internalType: "uint256", + name: "value", + type: "uint256", + }, + ], + name: "Approval", + type: "event", + }, + { + anonymous: false, + inputs: [ + { indexed: true, internalType: "address", name: "from", type: "address" }, + { indexed: true, internalType: "address", name: "to", type: "address" }, + { + indexed: false, + internalType: "uint256", + name: "value", + type: "uint256", + }, + ], + name: "Transfer", + type: "event", + }, + { + constant: true, + inputs: [ + { internalType: "address", name: "owner", type: "address" }, + { internalType: "address", name: "spender", type: "address" }, + ], + name: "allowance", + outputs: [{ internalType: "uint256", name: "", type: "uint256" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: false, + inputs: [ + { internalType: "address", name: "spender", type: "address" }, + { internalType: "uint256", name: "amount", type: "uint256" }, + ], + name: "approve", + outputs: [{ internalType: "bool", name: "", type: "bool" }], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: true, + inputs: [], + name: "available", + outputs: [{ internalType: "uint256", name: "", type: "uint256" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "balance", + outputs: [{ internalType: "uint256", name: "", type: "uint256" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [{ internalType: "address", name: "account", type: "address" }], + name: "balanceOf", + outputs: [{ internalType: "uint256", name: "", type: "uint256" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "controller", + outputs: [{ internalType: "address", name: "", type: "address" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "decimals", + outputs: [{ internalType: "uint8", name: "", type: "uint8" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: false, + inputs: [ + { internalType: "address", name: "spender", type: "address" }, + { internalType: "uint256", name: "subtractedValue", type: "uint256" }, + ], + name: "decreaseAllowance", + outputs: [{ internalType: "bool", name: "", type: "bool" }], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: false, + inputs: [{ internalType: "uint256", name: "_amount", type: "uint256" }], + name: "deposit", + outputs: [], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: false, + inputs: [], + name: "depositAll", + outputs: [], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: false, + inputs: [], + name: "earn", + outputs: [], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: true, + inputs: [], + name: "getPricePerFullShare", + outputs: [{ internalType: "uint256", name: "", type: "uint256" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "governance", + outputs: [{ internalType: "address", name: "", type: "address" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: false, + inputs: [ + { internalType: "address", name: "reserve", type: "address" }, + { internalType: "uint256", name: "amount", type: "uint256" }, + ], + name: "harvest", + outputs: [], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: false, + inputs: [ + { internalType: "address", name: "spender", type: "address" }, + { internalType: "uint256", name: "addedValue", type: "uint256" }, + ], + name: "increaseAllowance", + outputs: [{ internalType: "bool", name: "", type: "bool" }], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: true, + inputs: [], + name: "max", + outputs: [{ internalType: "uint256", name: "", type: "uint256" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "min", + outputs: [{ internalType: "uint256", name: "", type: "uint256" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "name", + outputs: [{ internalType: "string", name: "", type: "string" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: false, + inputs: [{ internalType: "address", name: "_controller", type: "address" }], + name: "setController", + outputs: [], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: false, + inputs: [{ internalType: "address", name: "_governance", type: "address" }], + name: "setGovernance", + outputs: [], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: false, + inputs: [{ internalType: "uint256", name: "_min", type: "uint256" }], + name: "setMin", + outputs: [], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: true, + inputs: [], + name: "symbol", + outputs: [{ internalType: "string", name: "", type: "string" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "token", + outputs: [{ internalType: "contract IERC20", name: "", type: "address" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "totalSupply", + outputs: [{ internalType: "uint256", name: "", type: "uint256" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: false, + inputs: [ + { internalType: "address", name: "recipient", type: "address" }, + { internalType: "uint256", name: "amount", type: "uint256" }, + ], + name: "transfer", + outputs: [{ internalType: "bool", name: "", type: "bool" }], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: false, + inputs: [ + { internalType: "address", name: "sender", type: "address" }, + { internalType: "address", name: "recipient", type: "address" }, + { internalType: "uint256", name: "amount", type: "uint256" }, + ], + name: "transferFrom", + outputs: [{ internalType: "bool", name: "", type: "bool" }], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: false, + inputs: [{ internalType: "uint256", name: "_shares", type: "uint256" }], + name: "withdraw", + outputs: [], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: false, + inputs: [], + name: "withdrawAll", + outputs: [], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, +]; + +const vaultUSDCABIContract = [ + { + inputs: [ + { internalType: "address", name: "_token", type: "address" }, + { internalType: "address", name: "_controller", type: "address" }, + ], + payable: false, + stateMutability: "nonpayable", + type: "constructor", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "owner", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "spender", + type: "address", + }, + { + indexed: false, + internalType: "uint256", + name: "value", + type: "uint256", + }, + ], + name: "Approval", + type: "event", + }, + { + anonymous: false, + inputs: [ + { indexed: true, internalType: "address", name: "from", type: "address" }, + { indexed: true, internalType: "address", name: "to", type: "address" }, + { + indexed: false, + internalType: "uint256", + name: "value", + type: "uint256", + }, + ], + name: "Transfer", + type: "event", + }, + { + constant: true, + inputs: [ + { internalType: "address", name: "owner", type: "address" }, + { internalType: "address", name: "spender", type: "address" }, + ], + name: "allowance", + outputs: [{ internalType: "uint256", name: "", type: "uint256" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: false, + inputs: [ + { internalType: "address", name: "spender", type: "address" }, + { internalType: "uint256", name: "amount", type: "uint256" }, + ], + name: "approve", + outputs: [{ internalType: "bool", name: "", type: "bool" }], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: true, + inputs: [], + name: "available", + outputs: [{ internalType: "uint256", name: "", type: "uint256" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "balance", + outputs: [{ internalType: "uint256", name: "", type: "uint256" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [{ internalType: "address", name: "account", type: "address" }], + name: "balanceOf", + outputs: [{ internalType: "uint256", name: "", type: "uint256" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "controller", + outputs: [{ internalType: "address", name: "", type: "address" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "decimals", + outputs: [{ internalType: "uint8", name: "", type: "uint8" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: false, + inputs: [ + { internalType: "address", name: "spender", type: "address" }, + { internalType: "uint256", name: "subtractedValue", type: "uint256" }, + ], + name: "decreaseAllowance", + outputs: [{ internalType: "bool", name: "", type: "bool" }], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: false, + inputs: [{ internalType: "uint256", name: "_amount", type: "uint256" }], + name: "deposit", + outputs: [], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: false, + inputs: [], + name: "depositAll", + outputs: [], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: false, + inputs: [], + name: "earn", + outputs: [], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: true, + inputs: [], + name: "getPricePerFullShare", + outputs: [{ internalType: "uint256", name: "", type: "uint256" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "governance", + outputs: [{ internalType: "address", name: "", type: "address" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: false, + inputs: [ + { internalType: "address", name: "reserve", type: "address" }, + { internalType: "uint256", name: "amount", type: "uint256" }, + ], + name: "harvest", + outputs: [], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: false, + inputs: [ + { internalType: "address", name: "spender", type: "address" }, + { internalType: "uint256", name: "addedValue", type: "uint256" }, + ], + name: "increaseAllowance", + outputs: [{ internalType: "bool", name: "", type: "bool" }], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: true, + inputs: [], + name: "max", + outputs: [{ internalType: "uint256", name: "", type: "uint256" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "min", + outputs: [{ internalType: "uint256", name: "", type: "uint256" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "name", + outputs: [{ internalType: "string", name: "", type: "string" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: false, + inputs: [{ internalType: "address", name: "_controller", type: "address" }], + name: "setController", + outputs: [], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: false, + inputs: [{ internalType: "address", name: "_governance", type: "address" }], + name: "setGovernance", + outputs: [], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: false, + inputs: [{ internalType: "uint256", name: "_min", type: "uint256" }], + name: "setMin", + outputs: [], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: true, + inputs: [], + name: "symbol", + outputs: [{ internalType: "string", name: "", type: "string" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "token", + outputs: [{ internalType: "contract IERC20", name: "", type: "address" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "totalSupply", + outputs: [{ internalType: "uint256", name: "", type: "uint256" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: false, + inputs: [ + { internalType: "address", name: "recipient", type: "address" }, + { internalType: "uint256", name: "amount", type: "uint256" }, + ], + name: "transfer", + outputs: [{ internalType: "bool", name: "", type: "bool" }], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: false, + inputs: [ + { internalType: "address", name: "sender", type: "address" }, + { internalType: "address", name: "recipient", type: "address" }, + { internalType: "uint256", name: "amount", type: "uint256" }, + ], + name: "transferFrom", + outputs: [{ internalType: "bool", name: "", type: "bool" }], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: false, + inputs: [{ internalType: "uint256", name: "_shares", type: "uint256" }], + name: "withdraw", + outputs: [], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: false, + inputs: [], + name: "withdrawAll", + outputs: [], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, +]; + +const vaultDAIABIContract = [ + { + inputs: [ + { internalType: "address", name: "_token", type: "address" }, + { internalType: "address", name: "_controller", type: "address" }, + ], + payable: false, + stateMutability: "nonpayable", + type: "constructor", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "owner", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "spender", + type: "address", + }, + { + indexed: false, + internalType: "uint256", + name: "value", + type: "uint256", + }, + ], + name: "Approval", + type: "event", + }, + { + anonymous: false, + inputs: [ + { indexed: true, internalType: "address", name: "from", type: "address" }, + { indexed: true, internalType: "address", name: "to", type: "address" }, + { + indexed: false, + internalType: "uint256", + name: "value", + type: "uint256", + }, + ], + name: "Transfer", + type: "event", + }, + { + constant: true, + inputs: [ + { internalType: "address", name: "owner", type: "address" }, + { internalType: "address", name: "spender", type: "address" }, + ], + name: "allowance", + outputs: [{ internalType: "uint256", name: "", type: "uint256" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: false, + inputs: [ + { internalType: "address", name: "spender", type: "address" }, + { internalType: "uint256", name: "amount", type: "uint256" }, + ], + name: "approve", + outputs: [{ internalType: "bool", name: "", type: "bool" }], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: true, + inputs: [], + name: "available", + outputs: [{ internalType: "uint256", name: "", type: "uint256" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "balance", + outputs: [{ internalType: "uint256", name: "", type: "uint256" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [{ internalType: "address", name: "account", type: "address" }], + name: "balanceOf", + outputs: [{ internalType: "uint256", name: "", type: "uint256" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "controller", + outputs: [{ internalType: "address", name: "", type: "address" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "decimals", + outputs: [{ internalType: "uint8", name: "", type: "uint8" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: false, + inputs: [ + { internalType: "address", name: "spender", type: "address" }, + { internalType: "uint256", name: "subtractedValue", type: "uint256" }, + ], + name: "decreaseAllowance", + outputs: [{ internalType: "bool", name: "", type: "bool" }], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: false, + inputs: [{ internalType: "uint256", name: "_amount", type: "uint256" }], + name: "deposit", + outputs: [], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: false, + inputs: [], + name: "depositAll", + outputs: [], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: false, + inputs: [], + name: "earn", + outputs: [], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: true, + inputs: [], + name: "getPricePerFullShare", + outputs: [{ internalType: "uint256", name: "", type: "uint256" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "governance", + outputs: [{ internalType: "address", name: "", type: "address" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: false, + inputs: [ + { internalType: "address", name: "reserve", type: "address" }, + { internalType: "uint256", name: "amount", type: "uint256" }, + ], + name: "harvest", + outputs: [], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: false, + inputs: [ + { internalType: "address", name: "spender", type: "address" }, + { internalType: "uint256", name: "addedValue", type: "uint256" }, + ], + name: "increaseAllowance", + outputs: [{ internalType: "bool", name: "", type: "bool" }], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: true, + inputs: [], + name: "max", + outputs: [{ internalType: "uint256", name: "", type: "uint256" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "min", + outputs: [{ internalType: "uint256", name: "", type: "uint256" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "name", + outputs: [{ internalType: "string", name: "", type: "string" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: false, + inputs: [{ internalType: "address", name: "_controller", type: "address" }], + name: "setController", + outputs: [], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: false, + inputs: [{ internalType: "address", name: "_governance", type: "address" }], + name: "setGovernance", + outputs: [], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: false, + inputs: [{ internalType: "uint256", name: "_min", type: "uint256" }], + name: "setMin", + outputs: [], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: true, + inputs: [], + name: "symbol", + outputs: [{ internalType: "string", name: "", type: "string" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "token", + outputs: [{ internalType: "contract IERC20", name: "", type: "address" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "totalSupply", + outputs: [{ internalType: "uint256", name: "", type: "uint256" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: false, + inputs: [ + { internalType: "address", name: "recipient", type: "address" }, + { internalType: "uint256", name: "amount", type: "uint256" }, + ], + name: "transfer", + outputs: [{ internalType: "bool", name: "", type: "bool" }], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: false, + inputs: [ + { internalType: "address", name: "sender", type: "address" }, + { internalType: "address", name: "recipient", type: "address" }, + { internalType: "uint256", name: "amount", type: "uint256" }, + ], + name: "transferFrom", + outputs: [{ internalType: "bool", name: "", type: "bool" }], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: false, + inputs: [{ internalType: "uint256", name: "_shares", type: "uint256" }], + name: "withdraw", + outputs: [], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: false, + inputs: [], + name: "withdrawAll", + outputs: [], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, +]; + +const vaultTUSDABIContract = [ + { + inputs: [ + { internalType: "address", name: "_token", type: "address" }, + { internalType: "address", name: "_controller", type: "address" }, + ], + payable: false, + stateMutability: "nonpayable", + type: "constructor", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "owner", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "spender", + type: "address", + }, + { + indexed: false, + internalType: "uint256", + name: "value", + type: "uint256", + }, + ], + name: "Approval", + type: "event", + }, + { + anonymous: false, + inputs: [ + { indexed: true, internalType: "address", name: "from", type: "address" }, + { indexed: true, internalType: "address", name: "to", type: "address" }, + { + indexed: false, + internalType: "uint256", + name: "value", + type: "uint256", + }, + ], + name: "Transfer", + type: "event", + }, + { + constant: true, + inputs: [ + { internalType: "address", name: "owner", type: "address" }, + { internalType: "address", name: "spender", type: "address" }, + ], + name: "allowance", + outputs: [{ internalType: "uint256", name: "", type: "uint256" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: false, + inputs: [ + { internalType: "address", name: "spender", type: "address" }, + { internalType: "uint256", name: "amount", type: "uint256" }, + ], + name: "approve", + outputs: [{ internalType: "bool", name: "", type: "bool" }], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: true, + inputs: [], + name: "available", + outputs: [{ internalType: "uint256", name: "", type: "uint256" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "balance", + outputs: [{ internalType: "uint256", name: "", type: "uint256" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [{ internalType: "address", name: "account", type: "address" }], + name: "balanceOf", + outputs: [{ internalType: "uint256", name: "", type: "uint256" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "controller", + outputs: [{ internalType: "address", name: "", type: "address" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "decimals", + outputs: [{ internalType: "uint8", name: "", type: "uint8" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: false, + inputs: [ + { internalType: "address", name: "spender", type: "address" }, + { internalType: "uint256", name: "subtractedValue", type: "uint256" }, + ], + name: "decreaseAllowance", + outputs: [{ internalType: "bool", name: "", type: "bool" }], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: false, + inputs: [{ internalType: "uint256", name: "_amount", type: "uint256" }], + name: "deposit", + outputs: [], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: false, + inputs: [], + name: "depositAll", + outputs: [], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: false, + inputs: [], + name: "earn", + outputs: [], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: true, + inputs: [], + name: "getPricePerFullShare", + outputs: [{ internalType: "uint256", name: "", type: "uint256" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "governance", + outputs: [{ internalType: "address", name: "", type: "address" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: false, + inputs: [ + { internalType: "address", name: "reserve", type: "address" }, + { internalType: "uint256", name: "amount", type: "uint256" }, + ], + name: "harvest", + outputs: [], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: false, + inputs: [ + { internalType: "address", name: "spender", type: "address" }, + { internalType: "uint256", name: "addedValue", type: "uint256" }, + ], + name: "increaseAllowance", + outputs: [{ internalType: "bool", name: "", type: "bool" }], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: true, + inputs: [], + name: "max", + outputs: [{ internalType: "uint256", name: "", type: "uint256" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "min", + outputs: [{ internalType: "uint256", name: "", type: "uint256" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "name", + outputs: [{ internalType: "string", name: "", type: "string" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: false, + inputs: [{ internalType: "address", name: "_controller", type: "address" }], + name: "setController", + outputs: [], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: false, + inputs: [{ internalType: "address", name: "_governance", type: "address" }], + name: "setGovernance", + outputs: [], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: false, + inputs: [{ internalType: "uint256", name: "_min", type: "uint256" }], + name: "setMin", + outputs: [], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: true, + inputs: [], + name: "symbol", + outputs: [{ internalType: "string", name: "", type: "string" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "token", + outputs: [{ internalType: "contract IERC20", name: "", type: "address" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "totalSupply", + outputs: [{ internalType: "uint256", name: "", type: "uint256" }], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: false, + inputs: [ + { internalType: "address", name: "recipient", type: "address" }, + { internalType: "uint256", name: "amount", type: "uint256" }, + ], + name: "transfer", + outputs: [{ internalType: "bool", name: "", type: "bool" }], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: false, + inputs: [ + { internalType: "address", name: "sender", type: "address" }, + { internalType: "address", name: "recipient", type: "address" }, + { internalType: "uint256", name: "amount", type: "uint256" }, + ], + name: "transferFrom", + outputs: [{ internalType: "bool", name: "", type: "bool" }], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: false, + inputs: [{ internalType: "uint256", name: "_shares", type: "uint256" }], + name: "withdraw", + outputs: [], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: false, + inputs: [], + name: "withdrawAll", + outputs: [], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, +]; + +const yearnDAIABIContract = [ + { + inputs: [ + { + internalType: "address", + name: "_token", + type: "address", + }, + { + internalType: "address", + name: "_earn", + type: "address", + }, + { + internalType: "address", + name: "_vault", + type: "address", + }, + ], + stateMutability: "nonpayable", + type: "constructor", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "owner", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "spender", + type: "address", + }, + { + indexed: false, + internalType: "uint256", + name: "value", + type: "uint256", + }, + ], + name: "Approval", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "previousOwner", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "newOwner", + type: "address", + }, + ], + name: "OwnershipTransferred", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "oldCommunityWallet", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "newCommunityWallet", + type: "address", + }, + ], + name: "SetCommunityWallet", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "uint256", + name: "oldCustomNetworkFeePercentage", + type: "uint256", + }, + { + indexed: true, + internalType: "uint256", + name: "newCustomNetworkFeePercentage", + type: "uint256", + }, + ], + name: "SetCustomNetworkFeePercentage", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "uint256", + name: "oldCustomNetworkFeeTier", + type: "uint256", + }, + { + indexed: true, + internalType: "uint256", + name: "newCustomNetworkFeeTier", + type: "uint256", + }, + ], + name: "SetCustomNetworkFeeTier", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "uint256[]", + name: "oldNetworkFeePercentage", + type: "uint256[]", + }, + { + indexed: false, + internalType: "uint256[]", + name: "newNetworkFeePercentage", + type: "uint256[]", + }, + ], + name: "SetNetworkFeePercentage", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "uint256[]", + name: "oldNetworkFeeTier2", + type: "uint256[]", + }, + { + indexed: false, + internalType: "uint256[]", + name: "newNetworkFeeTier2", + type: "uint256[]", + }, + ], + name: "SetNetworkFeeTier2", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "uint256", + name: "oldProfileSharingFeePercentage", + type: "uint256", + }, + { + indexed: true, + internalType: "uint256", + name: "newProfileSharingFeePercentage", + type: "uint256", + }, + ], + name: "SetProfileSharingFeePercentage", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "oldTreasuryWallet", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "newTreasuryWallet", + type: "address", + }, + ], + name: "SetTreasuryWallet", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "from", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "to", + type: "address", + }, + { + indexed: false, + internalType: "uint256", + name: "value", + type: "uint256", + }, + ], + name: "Transfer", + type: "event", + }, + { + inputs: [], + name: "DENOMINATOR", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "owner", + type: "address", + }, + { + internalType: "address", + name: "spender", + type: "address", + }, + ], + name: "allowance", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "spender", + type: "address", + }, + { + internalType: "uint256", + name: "amount", + type: "uint256", + }, + ], + name: "approve", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "approveMigrate", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "account", + type: "address", + }, + ], + name: "balanceOf", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "communityFee", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "communityWallet", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "customNetworkFeePercentage", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "customNetworkFeeTier", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "daoVault", + outputs: [ + { + internalType: "contract IDaoVault", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "decimals", + outputs: [ + { + internalType: "uint8", + name: "", + type: "uint8", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "spender", + type: "address", + }, + { + internalType: "uint256", + name: "subtractedValue", + type: "uint256", + }, + ], + name: "decreaseAllowance", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256[]", + name: "_amounts", + type: "uint256[]", + }, + ], + name: "deposit", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "earn", + outputs: [ + { + internalType: "contract IYearn", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_address", + type: "address", + }, + ], + name: "getEarnDepositBalance", + outputs: [ + { + internalType: "uint256", + name: "result", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_address", + type: "address", + }, + ], + name: "getSharesValue", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_address", + type: "address", + }, + ], + name: "getVaultDepositBalance", + outputs: [ + { + internalType: "uint256", + name: "result", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "spender", + type: "address", + }, + { + internalType: "uint256", + name: "addedValue", + type: "uint256", + }, + ], + name: "increaseAllowance", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "isVesting", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "name", + outputs: [ + { + internalType: "string", + name: "", + type: "string", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + name: "networkFeePercentage", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + name: "networkFeeTier2", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "owner", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "pool", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "profileSharingFeePercentage", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_shares", + type: "uint256", + }, + ], + name: "refund", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "renounceOwnership", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_communityWallet", + type: "address", + }, + ], + name: "setCommunityWallet", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_percentage", + type: "uint256", + }, + ], + name: "setCustomNetworkFeePercentage", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_customNetworkFeeTier", + type: "uint256", + }, + ], + name: "setCustomNetworkFeeTier", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256[]", + name: "_networkFeePercentage", + type: "uint256[]", + }, + ], + name: "setNetworkFeePercentage", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256[]", + name: "_networkFeeTier2", + type: "uint256[]", + }, + ], + name: "setNetworkFeeTier2", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_percentage", + type: "uint256", + }, + ], + name: "setProfileSharingFeePercentage", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_treasuryWallet", + type: "address", + }, + ], + name: "setTreasuryWallet", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_address", + type: "address", + }, + ], + name: "setVault", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "symbol", + outputs: [ + { + internalType: "string", + name: "", + type: "string", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "token", + outputs: [ + { + internalType: "contract IERC20", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "totalSupply", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "recipient", + type: "address", + }, + { + internalType: "uint256", + name: "amount", + type: "uint256", + }, + ], + name: "transfer", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "sender", + type: "address", + }, + { + internalType: "address", + name: "recipient", + type: "address", + }, + { + internalType: "uint256", + name: "amount", + type: "uint256", + }, + ], + name: "transferFrom", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "newOwner", + type: "address", + }, + ], + name: "transferOwnership", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "treasuryFee", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "treasuryWallet", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "vault", + outputs: [ + { + internalType: "contract IYvault", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "vesting", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256[]", + name: "_shares", + type: "uint256[]", + }, + ], + name: "withdraw", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, +]; + +const yearnTUSDABIContract = [ + { + inputs: [ + { + internalType: "address", + name: "_token", + type: "address", + }, + { + internalType: "address", + name: "_earn", + type: "address", + }, + { + internalType: "address", + name: "_vault", + type: "address", + }, + ], + stateMutability: "nonpayable", + type: "constructor", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "owner", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "spender", + type: "address", + }, + { + indexed: false, + internalType: "uint256", + name: "value", + type: "uint256", + }, + ], + name: "Approval", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "previousOwner", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "newOwner", + type: "address", + }, + ], + name: "OwnershipTransferred", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "oldCommunityWallet", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "newCommunityWallet", + type: "address", + }, + ], + name: "SetCommunityWallet", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "uint256", + name: "oldCustomNetworkFeePercentage", + type: "uint256", + }, + { + indexed: true, + internalType: "uint256", + name: "newCustomNetworkFeePercentage", + type: "uint256", + }, + ], + name: "SetCustomNetworkFeePercentage", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "uint256", + name: "oldCustomNetworkFeeTier", + type: "uint256", + }, + { + indexed: true, + internalType: "uint256", + name: "newCustomNetworkFeeTier", + type: "uint256", + }, + ], + name: "SetCustomNetworkFeeTier", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "uint256[]", + name: "oldNetworkFeePercentage", + type: "uint256[]", + }, + { + indexed: false, + internalType: "uint256[]", + name: "newNetworkFeePercentage", + type: "uint256[]", + }, + ], + name: "SetNetworkFeePercentage", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "uint256[]", + name: "oldNetworkFeeTier2", + type: "uint256[]", + }, + { + indexed: false, + internalType: "uint256[]", + name: "newNetworkFeeTier2", + type: "uint256[]", + }, + ], + name: "SetNetworkFeeTier2", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "uint256", + name: "oldProfileSharingFeePercentage", + type: "uint256", + }, + { + indexed: true, + internalType: "uint256", + name: "newProfileSharingFeePercentage", + type: "uint256", + }, + ], + name: "SetProfileSharingFeePercentage", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "oldTreasuryWallet", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "newTreasuryWallet", + type: "address", + }, + ], + name: "SetTreasuryWallet", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "from", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "to", + type: "address", + }, + { + indexed: false, + internalType: "uint256", + name: "value", + type: "uint256", + }, + ], + name: "Transfer", + type: "event", + }, + { + inputs: [], + name: "DENOMINATOR", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "owner", + type: "address", + }, + { + internalType: "address", + name: "spender", + type: "address", + }, + ], + name: "allowance", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "spender", + type: "address", + }, + { + internalType: "uint256", + name: "amount", + type: "uint256", + }, + ], + name: "approve", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "approveMigrate", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "account", + type: "address", + }, + ], + name: "balanceOf", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "communityFee", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "communityWallet", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "customNetworkFeePercentage", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "customNetworkFeeTier", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "daoVault", + outputs: [ + { + internalType: "contract IDaoVault", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "decimals", + outputs: [ + { + internalType: "uint8", + name: "", + type: "uint8", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "spender", + type: "address", + }, + { + internalType: "uint256", + name: "subtractedValue", + type: "uint256", + }, + ], + name: "decreaseAllowance", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256[]", + name: "_amounts", + type: "uint256[]", + }, + ], + name: "deposit", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "earn", + outputs: [ + { + internalType: "contract IYearn", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_address", + type: "address", + }, + ], + name: "getEarnDepositBalance", + outputs: [ + { + internalType: "uint256", + name: "result", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_address", + type: "address", + }, + ], + name: "getSharesValue", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_address", + type: "address", + }, + ], + name: "getVaultDepositBalance", + outputs: [ + { + internalType: "uint256", + name: "result", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "spender", + type: "address", + }, + { + internalType: "uint256", + name: "addedValue", + type: "uint256", + }, + ], + name: "increaseAllowance", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "isVesting", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "name", + outputs: [ + { + internalType: "string", + name: "", + type: "string", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + name: "networkFeePercentage", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + name: "networkFeeTier2", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "owner", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "pool", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "profileSharingFeePercentage", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_shares", + type: "uint256", + }, + ], + name: "refund", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "renounceOwnership", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_communityWallet", + type: "address", + }, + ], + name: "setCommunityWallet", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_percentage", + type: "uint256", + }, + ], + name: "setCustomNetworkFeePercentage", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_customNetworkFeeTier", + type: "uint256", + }, + ], + name: "setCustomNetworkFeeTier", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256[]", + name: "_networkFeePercentage", + type: "uint256[]", + }, + ], + name: "setNetworkFeePercentage", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256[]", + name: "_networkFeeTier2", + type: "uint256[]", + }, + ], + name: "setNetworkFeeTier2", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_percentage", + type: "uint256", + }, + ], + name: "setProfileSharingFeePercentage", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_treasuryWallet", + type: "address", + }, + ], + name: "setTreasuryWallet", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_address", + type: "address", + }, + ], + name: "setVault", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "symbol", + outputs: [ + { + internalType: "string", + name: "", + type: "string", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "token", + outputs: [ + { + internalType: "contract IERC20", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "totalSupply", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "recipient", + type: "address", + }, + { + internalType: "uint256", + name: "amount", + type: "uint256", + }, + ], + name: "transfer", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "sender", + type: "address", + }, + { + internalType: "address", + name: "recipient", + type: "address", + }, + { + internalType: "uint256", + name: "amount", + type: "uint256", + }, + ], + name: "transferFrom", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "newOwner", + type: "address", + }, + ], + name: "transferOwnership", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "treasuryFee", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "treasuryWallet", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "vault", + outputs: [ + { + internalType: "contract IYvault", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "vesting", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256[]", + name: "_shares", + type: "uint256[]", + }, + ], + name: "withdraw", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, +]; + +const yearnUSDCABIContract = [ + { + inputs: [ + { + internalType: "address", + name: "_token", + type: "address", + }, + { + internalType: "address", + name: "_earn", + type: "address", + }, + { + internalType: "address", + name: "_vault", + type: "address", + }, + ], + stateMutability: "nonpayable", + type: "constructor", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "owner", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "spender", + type: "address", + }, + { + indexed: false, + internalType: "uint256", + name: "value", + type: "uint256", + }, + ], + name: "Approval", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "previousOwner", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "newOwner", + type: "address", + }, + ], + name: "OwnershipTransferred", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "oldCommunityWallet", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "newCommunityWallet", + type: "address", + }, + ], + name: "SetCommunityWallet", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "uint256", + name: "oldCustomNetworkFeePercentage", + type: "uint256", + }, + { + indexed: true, + internalType: "uint256", + name: "newCustomNetworkFeePercentage", + type: "uint256", + }, + ], + name: "SetCustomNetworkFeePercentage", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "uint256", + name: "oldCustomNetworkFeeTier", + type: "uint256", + }, + { + indexed: true, + internalType: "uint256", + name: "newCustomNetworkFeeTier", + type: "uint256", + }, + ], + name: "SetCustomNetworkFeeTier", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "uint256[]", + name: "oldNetworkFeePercentage", + type: "uint256[]", + }, + { + indexed: false, + internalType: "uint256[]", + name: "newNetworkFeePercentage", + type: "uint256[]", + }, + ], + name: "SetNetworkFeePercentage", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "uint256[]", + name: "oldNetworkFeeTier2", + type: "uint256[]", + }, + { + indexed: false, + internalType: "uint256[]", + name: "newNetworkFeeTier2", + type: "uint256[]", + }, + ], + name: "SetNetworkFeeTier2", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "uint256", + name: "oldProfileSharingFeePercentage", + type: "uint256", + }, + { + indexed: true, + internalType: "uint256", + name: "newProfileSharingFeePercentage", + type: "uint256", + }, + ], + name: "SetProfileSharingFeePercentage", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "oldTreasuryWallet", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "newTreasuryWallet", + type: "address", + }, + ], + name: "SetTreasuryWallet", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "from", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "to", + type: "address", + }, + { + indexed: false, + internalType: "uint256", + name: "value", + type: "uint256", + }, + ], + name: "Transfer", + type: "event", + }, + { + inputs: [], + name: "DENOMINATOR", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "owner", + type: "address", + }, + { + internalType: "address", + name: "spender", + type: "address", + }, + ], + name: "allowance", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "spender", + type: "address", + }, + { + internalType: "uint256", + name: "amount", + type: "uint256", + }, + ], + name: "approve", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "approveMigrate", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "account", + type: "address", + }, + ], + name: "balanceOf", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "communityFee", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "communityWallet", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "customNetworkFeePercentage", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "customNetworkFeeTier", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "daoVault", + outputs: [ + { + internalType: "contract IDaoVault", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "decimals", + outputs: [ + { + internalType: "uint8", + name: "", + type: "uint8", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "spender", + type: "address", + }, + { + internalType: "uint256", + name: "subtractedValue", + type: "uint256", + }, + ], + name: "decreaseAllowance", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256[]", + name: "_amounts", + type: "uint256[]", + }, + ], + name: "deposit", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "earn", + outputs: [ + { + internalType: "contract IYearn", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_address", + type: "address", + }, + ], + name: "getEarnDepositBalance", + outputs: [ + { + internalType: "uint256", + name: "result", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_address", + type: "address", + }, + ], + name: "getSharesValue", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_address", + type: "address", + }, + ], + name: "getVaultDepositBalance", + outputs: [ + { + internalType: "uint256", + name: "result", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "spender", + type: "address", + }, + { + internalType: "uint256", + name: "addedValue", + type: "uint256", + }, + ], + name: "increaseAllowance", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "isVesting", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "name", + outputs: [ + { + internalType: "string", + name: "", + type: "string", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + name: "networkFeePercentage", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + name: "networkFeeTier2", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "owner", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "pool", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "profileSharingFeePercentage", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_shares", + type: "uint256", + }, + ], + name: "refund", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "renounceOwnership", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_communityWallet", + type: "address", + }, + ], + name: "setCommunityWallet", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_percentage", + type: "uint256", + }, + ], + name: "setCustomNetworkFeePercentage", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_customNetworkFeeTier", + type: "uint256", + }, + ], + name: "setCustomNetworkFeeTier", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256[]", + name: "_networkFeePercentage", + type: "uint256[]", + }, + ], + name: "setNetworkFeePercentage", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256[]", + name: "_networkFeeTier2", + type: "uint256[]", + }, + ], + name: "setNetworkFeeTier2", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_percentage", + type: "uint256", + }, + ], + name: "setProfileSharingFeePercentage", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_treasuryWallet", + type: "address", + }, + ], + name: "setTreasuryWallet", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_address", + type: "address", + }, + ], + name: "setVault", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "symbol", + outputs: [ + { + internalType: "string", + name: "", + type: "string", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "token", + outputs: [ + { + internalType: "contract IERC20", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "totalSupply", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "recipient", + type: "address", + }, + { + internalType: "uint256", + name: "amount", + type: "uint256", + }, + ], + name: "transfer", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "sender", + type: "address", + }, + { + internalType: "address", + name: "recipient", + type: "address", + }, + { + internalType: "uint256", + name: "amount", + type: "uint256", + }, + ], + name: "transferFrom", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "newOwner", + type: "address", + }, + ], + name: "transferOwnership", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "treasuryFee", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "treasuryWallet", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "vault", + outputs: [ + { + internalType: "contract IYvault", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "vesting", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256[]", + name: "_shares", + type: "uint256[]", + }, + ], + name: "withdraw", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, +]; + +const yearnUSDTABIContract = [ + { + inputs: [ + { + internalType: "address", + name: "_token", + type: "address", + }, + { + internalType: "address", + name: "_earn", + type: "address", + }, + { + internalType: "address", + name: "_vault", + type: "address", + }, + ], + stateMutability: "nonpayable", + type: "constructor", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "owner", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "spender", + type: "address", + }, + { + indexed: false, + internalType: "uint256", + name: "value", + type: "uint256", + }, + ], + name: "Approval", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "previousOwner", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "newOwner", + type: "address", + }, + ], + name: "OwnershipTransferred", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "oldCommunityWallet", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "newCommunityWallet", + type: "address", + }, + ], + name: "SetCommunityWallet", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "uint256", + name: "oldCustomNetworkFeePercentage", + type: "uint256", + }, + { + indexed: true, + internalType: "uint256", + name: "newCustomNetworkFeePercentage", + type: "uint256", + }, + ], + name: "SetCustomNetworkFeePercentage", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "uint256", + name: "oldCustomNetworkFeeTier", + type: "uint256", + }, + { + indexed: true, + internalType: "uint256", + name: "newCustomNetworkFeeTier", + type: "uint256", + }, + ], + name: "SetCustomNetworkFeeTier", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "uint256[]", + name: "oldNetworkFeePercentage", + type: "uint256[]", + }, + { + indexed: false, + internalType: "uint256[]", + name: "newNetworkFeePercentage", + type: "uint256[]", + }, + ], + name: "SetNetworkFeePercentage", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "uint256[]", + name: "oldNetworkFeeTier2", + type: "uint256[]", + }, + { + indexed: false, + internalType: "uint256[]", + name: "newNetworkFeeTier2", + type: "uint256[]", + }, + ], + name: "SetNetworkFeeTier2", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "uint256", + name: "oldProfileSharingFeePercentage", + type: "uint256", + }, + { + indexed: true, + internalType: "uint256", + name: "newProfileSharingFeePercentage", + type: "uint256", + }, + ], + name: "SetProfileSharingFeePercentage", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "oldTreasuryWallet", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "newTreasuryWallet", + type: "address", + }, + ], + name: "SetTreasuryWallet", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "from", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "to", + type: "address", + }, + { + indexed: false, + internalType: "uint256", + name: "value", + type: "uint256", + }, + ], + name: "Transfer", + type: "event", + }, + { + inputs: [], + name: "DENOMINATOR", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "owner", + type: "address", + }, + { + internalType: "address", + name: "spender", + type: "address", + }, + ], + name: "allowance", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "spender", + type: "address", + }, + { + internalType: "uint256", + name: "amount", + type: "uint256", + }, + ], + name: "approve", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "approveMigrate", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "account", + type: "address", + }, + ], + name: "balanceOf", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "communityFee", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "communityWallet", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "customNetworkFeePercentage", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "customNetworkFeeTier", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "daoVault", + outputs: [ + { + internalType: "contract IDaoVault", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "decimals", + outputs: [ + { + internalType: "uint8", + name: "", + type: "uint8", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "spender", + type: "address", + }, + { + internalType: "uint256", + name: "subtractedValue", + type: "uint256", + }, + ], + name: "decreaseAllowance", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256[]", + name: "_amounts", + type: "uint256[]", + }, + ], + name: "deposit", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "earn", + outputs: [ + { + internalType: "contract IYearn", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_address", + type: "address", + }, + ], + name: "getEarnDepositBalance", + outputs: [ + { + internalType: "uint256", + name: "result", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_address", + type: "address", + }, + ], + name: "getSharesValue", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_address", + type: "address", + }, + ], + name: "getVaultDepositBalance", + outputs: [ + { + internalType: "uint256", + name: "result", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "spender", + type: "address", + }, + { + internalType: "uint256", + name: "addedValue", + type: "uint256", + }, + ], + name: "increaseAllowance", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "isVesting", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "name", + outputs: [ + { + internalType: "string", + name: "", + type: "string", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + name: "networkFeePercentage", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + name: "networkFeeTier2", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "owner", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "pool", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "profileSharingFeePercentage", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_shares", + type: "uint256", + }, + ], + name: "refund", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "renounceOwnership", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_communityWallet", + type: "address", + }, + ], + name: "setCommunityWallet", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_percentage", + type: "uint256", + }, + ], + name: "setCustomNetworkFeePercentage", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_customNetworkFeeTier", + type: "uint256", + }, + ], + name: "setCustomNetworkFeeTier", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256[]", + name: "_networkFeePercentage", + type: "uint256[]", + }, + ], + name: "setNetworkFeePercentage", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256[]", + name: "_networkFeeTier2", + type: "uint256[]", + }, + ], + name: "setNetworkFeeTier2", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_percentage", + type: "uint256", + }, + ], + name: "setProfileSharingFeePercentage", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_treasuryWallet", + type: "address", + }, + ], + name: "setTreasuryWallet", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_address", + type: "address", + }, + ], + name: "setVault", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "symbol", + outputs: [ + { + internalType: "string", + name: "", + type: "string", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "token", + outputs: [ + { + internalType: "contract IERC20", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "totalSupply", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "recipient", + type: "address", + }, + { + internalType: "uint256", + name: "amount", + type: "uint256", + }, + ], + name: "transfer", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "sender", + type: "address", + }, + { + internalType: "address", + name: "recipient", + type: "address", + }, + { + internalType: "uint256", + name: "amount", + type: "uint256", + }, + ], + name: "transferFrom", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "newOwner", + type: "address", + }, + ], + name: "transferOwnership", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "treasuryFee", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "treasuryWallet", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "vault", + outputs: [ + { + internalType: "contract IYvault", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "vesting", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256[]", + name: "_shares", + type: "uint256[]", + }, + ], + name: "withdraw", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, +]; + +const compoundStrategyContract = [ + { + inputs: [ + { + internalType: "address", + name: "_token", + type: "address", + }, + { + internalType: "address", + name: "_cToken", + type: "address", + }, + { + internalType: "address", + name: "_compToken", + type: "address", + }, + { + internalType: "address", + name: "_comptroller", + type: "address", + }, + { + internalType: "address", + name: "_uniswapRouter", + type: "address", + }, + { + internalType: "address", + name: "_WETH", + type: "address", + }, + ], + stateMutability: "nonpayable", + type: "constructor", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "owner", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "spender", + type: "address", + }, + { + indexed: false, + internalType: "uint256", + name: "value", + type: "uint256", + }, + ], + name: "Approval", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "previousOwner", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "newOwner", + type: "address", + }, + ], + name: "OwnershipTransferred", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "oldCommunityWallet", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "newCommunityWallet", + type: "address", + }, + ], + name: "SetCommunityWallet", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "uint256", + name: "oldCustomNetworkFeePercentage", + type: "uint256", + }, + { + indexed: false, + internalType: "uint256", + name: "newCustomNetworkFeePercentage", + type: "uint256", + }, + ], + name: "SetCustomNetworkFeePercentage", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "uint256", + name: "oldCustomNetworkFeeTier", + type: "uint256", + }, + { + indexed: true, + internalType: "uint256", + name: "newCustomNetworkFeeTier", + type: "uint256", + }, + ], + name: "SetCustomNetworkFeeTier", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "uint256[]", + name: "oldNetworkFeePercentage", + type: "uint256[]", + }, + { + indexed: false, + internalType: "uint256[]", + name: "newNetworkFeePercentage", + type: "uint256[]", + }, + ], + name: "SetNetworkFeePercentage", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "uint256[]", + name: "oldNetworkFeeTier2", + type: "uint256[]", + }, + { + indexed: false, + internalType: "uint256[]", + name: "newNetworkFeeTier2", + type: "uint256[]", + }, + ], + name: "SetNetworkFeeTier2", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "uint256", + name: "oldProfileSharingFeePercentage", + type: "uint256", + }, + { + indexed: true, + internalType: "uint256", + name: "newProfileSharingFeePercentage", + type: "uint256", + }, + ], + name: "SetProfileSharingFeePercentage", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "oldTreasuryWallet", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "newTreasuryWallet", + type: "address", + }, + ], + name: "SetTreasuryWallet", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "from", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "to", + type: "address", + }, + { + indexed: false, + internalType: "uint256", + name: "value", + type: "uint256", + }, + ], + name: "Transfer", + type: "event", + }, + { + inputs: [], + name: "DAOVault", + outputs: [ + { + internalType: "contract IDAOVault", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "DENOMINATOR", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "WETH", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "owner", + type: "address", + }, + { + internalType: "address", + name: "spender", + type: "address", + }, + ], + name: "allowance", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "amountOutMinPerc", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "spender", + type: "address", + }, + { + internalType: "uint256", + name: "amount", + type: "uint256", + }, + ], + name: "approve", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "approveMigrate", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "account", + type: "address", + }, + ], + name: "balanceOf", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "cToken", + outputs: [ + { + internalType: "contract ICERC20", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "communityFee", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "communityWallet", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "compToken", + outputs: [ + { + internalType: "contract ICOMPERC20", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "comptroller", + outputs: [ + { + internalType: "contract IComptroller", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "customNetworkFeePercentage", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "customNetworkFeeTier", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "deadline", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "decimals", + outputs: [ + { + internalType: "uint8", + name: "", + type: "uint8", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "spender", + type: "address", + }, + { + internalType: "uint256", + name: "subtractedValue", + type: "uint256", + }, + ], + name: "decreaseAllowance", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_amount", + type: "uint256", + }, + ], + name: "deposit", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_address", + type: "address", + }, + ], + name: "getCurrentBalance", + outputs: [ + { + internalType: "uint256", + name: "result", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "spender", + type: "address", + }, + { + internalType: "uint256", + name: "addedValue", + type: "uint256", + }, + ], + name: "increaseAllowance", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "isVesting", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "name", + outputs: [ + { + internalType: "string", + name: "", + type: "string", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + name: "networkFeePercentage", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + name: "networkFeeTier2", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "owner", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "pool", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "profileSharingFeePercentage", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_shares", + type: "uint256", + }, + ], + name: "refund", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "renounceOwnership", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "revertVesting", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_percentage", + type: "uint256", + }, + ], + name: "setAmountOutMinPerc", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_communityWallet", + type: "address", + }, + ], + name: "setCommunityWallet", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_percentage", + type: "uint256", + }, + ], + name: "setCustomNetworkFeePercentage", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_customNetworkFeeTier", + type: "uint256", + }, + ], + name: "setCustomNetworkFeeTier", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_seconds", + type: "uint256", + }, + ], + name: "setDeadline", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256[]", + name: "_networkFeePercentage", + type: "uint256[]", + }, + ], + name: "setNetworkFeePercentage", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256[]", + name: "_networkFeeTier2", + type: "uint256[]", + }, + ], + name: "setNetworkFeeTier2", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_percentage", + type: "uint256", + }, + ], + name: "setProfileSharingFeePercentage", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_treasuryWallet", + type: "address", + }, + ], + name: "setTreasuryWallet", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_address", + type: "address", + }, + ], + name: "setVault", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "symbol", + outputs: [ + { + internalType: "string", + name: "", + type: "string", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "token", + outputs: [ + { + internalType: "contract IERC20", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "totalSupply", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "recipient", + type: "address", + }, + { + internalType: "uint256", + name: "amount", + type: "uint256", + }, + ], + name: "transfer", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "sender", + type: "address", + }, + { + internalType: "address", + name: "recipient", + type: "address", + }, + { + internalType: "uint256", + name: "amount", + type: "uint256", + }, + ], + name: "transferFrom", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "newOwner", + type: "address", + }, + ], + name: "transferOwnership", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "treasuryFee", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "treasuryWallet", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "uniswapRouter", + outputs: [ + { + internalType: "contract IUniswapV2Router02", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "vesting", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_amount", + type: "uint256", + }, + ], + name: "withdraw", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, +]; + +const compoundVaultContract = [ + { + inputs: [ + { + internalType: "address", + name: "_token", + type: "address", + }, + { + internalType: "address", + name: "_strategy", + type: "address", + }, + ], + stateMutability: "nonpayable", + type: "constructor", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "owner", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "spender", + type: "address", + }, + { + indexed: false, + internalType: "uint256", + name: "value", + type: "uint256", + }, + ], + name: "Approval", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "fromStrategy", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "toStrategy", + type: "address", + }, + { + indexed: false, + internalType: "uint256", + name: "amount", + type: "uint256", + }, + ], + name: "MigrateFunds", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "previousOwner", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "newOwner", + type: "address", + }, + ], + name: "OwnershipTransferred", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "from", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "to", + type: "address", + }, + { + indexed: false, + internalType: "uint256", + name: "value", + type: "uint256", + }, + ], + name: "Transfer", + type: "event", + }, + { + inputs: [], + name: "LOCKTIME", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "owner", + type: "address", + }, + { + internalType: "address", + name: "spender", + type: "address", + }, + ], + name: "allowance", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "spender", + type: "address", + }, + { + internalType: "uint256", + name: "amount", + type: "uint256", + }, + ], + name: "approve", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "account", + type: "address", + }, + ], + name: "balanceOf", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "canSetPendingStrategy", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "decimals", + outputs: [ + { + internalType: "uint8", + name: "", + type: "uint8", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "spender", + type: "address", + }, + { + internalType: "uint256", + name: "subtractedValue", + type: "uint256", + }, + ], + name: "decreaseAllowance", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_amount", + type: "uint256", + }, + ], + name: "deposit", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "spender", + type: "address", + }, + { + internalType: "uint256", + name: "addedValue", + type: "uint256", + }, + ], + name: "increaseAllowance", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "migrateFunds", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "name", + outputs: [ + { + internalType: "string", + name: "", + type: "string", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "owner", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "pendingStrategy", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "refund", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "renounceOwnership", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_pendingStrategy", + type: "address", + }, + ], + name: "setPendingStrategy", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "strategy", + outputs: [ + { + internalType: "contract IStrategy", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "symbol", + outputs: [ + { + internalType: "string", + name: "", + type: "string", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "token", + outputs: [ + { + internalType: "contract IERC20", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "totalSupply", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "recipient", + type: "address", + }, + { + internalType: "uint256", + name: "amount", + type: "uint256", + }, + ], + name: "transfer", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "sender", + type: "address", + }, + { + internalType: "address", + name: "recipient", + type: "address", + }, + { + internalType: "uint256", + name: "amount", + type: "uint256", + }, + ], + name: "transferFrom", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "newOwner", + type: "address", + }, + ], + name: "transferOwnership", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "unlockMigrateFunds", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "unlockTime", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_amount", + type: "uint256", + }, + ], + name: "withdraw", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, +]; + +const cUSDTContract = [ + { + inputs: [ + { + internalType: "address", + name: "underlying_", + type: "address", + }, + { + internalType: "contract ComptrollerInterface", + name: "comptroller_", + type: "address", + }, + { + internalType: "contract InterestRateModel", + name: "interestRateModel_", + type: "address", + }, + { + internalType: "uint256", + name: "initialExchangeRateMantissa_", + type: "uint256", + }, + { + internalType: "string", + name: "name_", + type: "string", + }, + { + internalType: "string", + name: "symbol_", + type: "string", + }, + { + internalType: "uint8", + name: "decimals_", + type: "uint8", + }, + { + internalType: "address payable", + name: "admin_", + type: "address", + }, + { + internalType: "address", + name: "implementation_", + type: "address", + }, + { + internalType: "bytes", + name: "becomeImplementationData", + type: "bytes", + }, + ], + payable: false, + stateMutability: "nonpayable", + type: "constructor", + signature: "constructor", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "uint256", + name: "cashPrior", + type: "uint256", + }, + { + indexed: false, + internalType: "uint256", + name: "interestAccumulated", + type: "uint256", + }, + { + indexed: false, + internalType: "uint256", + name: "borrowIndex", + type: "uint256", + }, + { + indexed: false, + internalType: "uint256", + name: "totalBorrows", + type: "uint256", + }, + ], + name: "AccrueInterest", + type: "event", + signature: + "0x4dec04e750ca11537cabcd8a9eab06494de08da3735bc8871cd41250e190bc04", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "owner", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "spender", + type: "address", + }, + { + indexed: false, + internalType: "uint256", + name: "amount", + type: "uint256", + }, + ], + name: "Approval", + type: "event", + signature: + "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "address", + name: "borrower", + type: "address", + }, + { + indexed: false, + internalType: "uint256", + name: "borrowAmount", + type: "uint256", + }, + { + indexed: false, + internalType: "uint256", + name: "accountBorrows", + type: "uint256", + }, + { + indexed: false, + internalType: "uint256", + name: "totalBorrows", + type: "uint256", + }, + ], + name: "Borrow", + type: "event", + signature: + "0x13ed6866d4e1ee6da46f845c46d7e54120883d75c5ea9a2dacc1c4ca8984ab80", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "uint256", + name: "error", + type: "uint256", + }, + { + indexed: false, + internalType: "uint256", + name: "info", + type: "uint256", + }, + { + indexed: false, + internalType: "uint256", + name: "detail", + type: "uint256", + }, + ], + name: "Failure", + type: "event", + signature: + "0x45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa0", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "address", + name: "liquidator", + type: "address", + }, + { + indexed: false, + internalType: "address", + name: "borrower", + type: "address", + }, + { + indexed: false, + internalType: "uint256", + name: "repayAmount", + type: "uint256", + }, + { + indexed: false, + internalType: "address", + name: "cTokenCollateral", + type: "address", + }, + { + indexed: false, + internalType: "uint256", + name: "seizeTokens", + type: "uint256", + }, + ], + name: "LiquidateBorrow", + type: "event", + signature: + "0x298637f684da70674f26509b10f07ec2fbc77a335ab1e7d6215a4b2484d8bb52", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "address", + name: "minter", + type: "address", + }, + { + indexed: false, + internalType: "uint256", + name: "mintAmount", + type: "uint256", + }, + { + indexed: false, + internalType: "uint256", + name: "mintTokens", + type: "uint256", + }, + ], + name: "Mint", + type: "event", + signature: + "0x4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "address", + name: "oldAdmin", + type: "address", + }, + { + indexed: false, + internalType: "address", + name: "newAdmin", + type: "address", + }, + ], + name: "NewAdmin", + type: "event", + signature: + "0xf9ffabca9c8276e99321725bcb43fb076a6c66a54b7f21c4e8146d8519b417dc", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "contract ComptrollerInterface", + name: "oldComptroller", + type: "address", + }, + { + indexed: false, + internalType: "contract ComptrollerInterface", + name: "newComptroller", + type: "address", + }, + ], + name: "NewComptroller", + type: "event", + signature: + "0x7ac369dbd14fa5ea3f473ed67cc9d598964a77501540ba6751eb0b3decf5870d", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "address", + name: "oldImplementation", + type: "address", + }, + { + indexed: false, + internalType: "address", + name: "newImplementation", + type: "address", + }, + ], + name: "NewImplementation", + type: "event", + signature: + "0xd604de94d45953f9138079ec1b82d533cb2160c906d1076d1f7ed54befbca97a", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "contract InterestRateModel", + name: "oldInterestRateModel", + type: "address", + }, + { + indexed: false, + internalType: "contract InterestRateModel", + name: "newInterestRateModel", + type: "address", + }, + ], + name: "NewMarketInterestRateModel", + type: "event", + signature: + "0xedffc32e068c7c95dfd4bdfd5c4d939a084d6b11c4199eac8436ed234d72f926", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "address", + name: "oldPendingAdmin", + type: "address", + }, + { + indexed: false, + internalType: "address", + name: "newPendingAdmin", + type: "address", + }, + ], + name: "NewPendingAdmin", + type: "event", + signature: + "0xca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a9", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "uint256", + name: "oldReserveFactorMantissa", + type: "uint256", + }, + { + indexed: false, + internalType: "uint256", + name: "newReserveFactorMantissa", + type: "uint256", + }, + ], + name: "NewReserveFactor", + type: "event", + signature: + "0xaaa68312e2ea9d50e16af5068410ab56e1a1fd06037b1a35664812c30f821460", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "address", + name: "redeemer", + type: "address", + }, + { + indexed: false, + internalType: "uint256", + name: "redeemAmount", + type: "uint256", + }, + { + indexed: false, + internalType: "uint256", + name: "redeemTokens", + type: "uint256", + }, + ], + name: "Redeem", + type: "event", + signature: + "0xe5b754fb1abb7f01b499791d0b820ae3b6af3424ac1c59768edb53f4ec31a929", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "address", + name: "payer", + type: "address", + }, + { + indexed: false, + internalType: "address", + name: "borrower", + type: "address", + }, + { + indexed: false, + internalType: "uint256", + name: "repayAmount", + type: "uint256", + }, + { + indexed: false, + internalType: "uint256", + name: "accountBorrows", + type: "uint256", + }, + { + indexed: false, + internalType: "uint256", + name: "totalBorrows", + type: "uint256", + }, + ], + name: "RepayBorrow", + type: "event", + signature: + "0x1a2a22cb034d26d1854bdc6666a5b91fe25efbbb5dcad3b0355478d6f5c362a1", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "address", + name: "benefactor", + type: "address", + }, + { + indexed: false, + internalType: "uint256", + name: "addAmount", + type: "uint256", + }, + { + indexed: false, + internalType: "uint256", + name: "newTotalReserves", + type: "uint256", + }, + ], + name: "ReservesAdded", + type: "event", + signature: + "0xa91e67c5ea634cd43a12c5a482724b03de01e85ca68702a53d0c2f45cb7c1dc5", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "address", + name: "admin", + type: "address", + }, + { + indexed: false, + internalType: "uint256", + name: "reduceAmount", + type: "uint256", + }, + { + indexed: false, + internalType: "uint256", + name: "newTotalReserves", + type: "uint256", + }, + ], + name: "ReservesReduced", + type: "event", + signature: + "0x3bad0c59cf2f06e7314077049f48a93578cd16f5ef92329f1dab1420a99c177e", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "from", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "to", + type: "address", + }, + { + indexed: false, + internalType: "uint256", + name: "amount", + type: "uint256", + }, + ], + name: "Transfer", + type: "event", + signature: + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + }, + { + payable: true, + stateMutability: "payable", + type: "fallback", + }, + { + constant: false, + inputs: [], + name: "_acceptAdmin", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + payable: false, + stateMutability: "nonpayable", + type: "function", + signature: "0xe9c714f2", + }, + { + constant: false, + inputs: [ + { + internalType: "uint256", + name: "addAmount", + type: "uint256", + }, + ], + name: "_addReserves", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + payable: false, + stateMutability: "nonpayable", + type: "function", + signature: "0x3e941010", + }, + { + constant: false, + inputs: [ + { + internalType: "uint256", + name: "reduceAmount", + type: "uint256", + }, + ], + name: "_reduceReserves", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + payable: false, + stateMutability: "nonpayable", + type: "function", + signature: "0x601a0bf1", + }, + { + constant: false, + inputs: [ + { + internalType: "contract ComptrollerInterface", + name: "newComptroller", + type: "address", + }, + ], + name: "_setComptroller", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + payable: false, + stateMutability: "nonpayable", + type: "function", + signature: "0x4576b5db", + }, + { + constant: false, + inputs: [ + { + internalType: "address", + name: "implementation_", + type: "address", + }, + { + internalType: "bool", + name: "allowResign", + type: "bool", + }, + { + internalType: "bytes", + name: "becomeImplementationData", + type: "bytes", + }, + ], + name: "_setImplementation", + outputs: [], + payable: false, + stateMutability: "nonpayable", + type: "function", + signature: "0x555bcc40", + }, + { + constant: false, + inputs: [ + { + internalType: "contract InterestRateModel", + name: "newInterestRateModel", + type: "address", + }, + ], + name: "_setInterestRateModel", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + payable: false, + stateMutability: "nonpayable", + type: "function", + signature: "0xf2b3abbd", + }, + { + constant: false, + inputs: [ + { + internalType: "address payable", + name: "newPendingAdmin", + type: "address", + }, + ], + name: "_setPendingAdmin", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + payable: false, + stateMutability: "nonpayable", + type: "function", + signature: "0xb71d1a0c", + }, + { + constant: false, + inputs: [ + { + internalType: "uint256", + name: "newReserveFactorMantissa", + type: "uint256", + }, + ], + name: "_setReserveFactor", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + payable: false, + stateMutability: "nonpayable", + type: "function", + signature: "0xfca7820b", + }, + { + constant: true, + inputs: [], + name: "accrualBlockNumber", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + payable: false, + stateMutability: "view", + type: "function", + signature: "0x6c540baf", + }, + { + constant: false, + inputs: [], + name: "accrueInterest", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + payable: false, + stateMutability: "nonpayable", + type: "function", + signature: "0xa6afed95", + }, + { + constant: true, + inputs: [], + name: "admin", + outputs: [ + { + internalType: "address payable", + name: "", + type: "address", + }, + ], + payable: false, + stateMutability: "view", + type: "function", + signature: "0xf851a440", + }, + { + constant: true, + inputs: [ + { + internalType: "address", + name: "owner", + type: "address", + }, + { + internalType: "address", + name: "spender", + type: "address", + }, + ], + name: "allowance", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + payable: false, + stateMutability: "view", + type: "function", + signature: "0xdd62ed3e", + }, + { + constant: false, + inputs: [ + { + internalType: "address", + name: "spender", + type: "address", + }, + { + internalType: "uint256", + name: "amount", + type: "uint256", + }, + ], + name: "approve", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + payable: false, + stateMutability: "nonpayable", + type: "function", + signature: "0x095ea7b3", + }, + { + constant: true, + inputs: [ + { + internalType: "address", + name: "owner", + type: "address", + }, + ], + name: "balanceOf", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + payable: false, + stateMutability: "view", + type: "function", + signature: "0x70a08231", + }, + { + constant: false, + inputs: [ + { + internalType: "address", + name: "owner", + type: "address", + }, + ], + name: "balanceOfUnderlying", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + payable: false, + stateMutability: "nonpayable", + type: "function", + signature: "0x3af9e669", + }, + { + constant: false, + inputs: [ + { + internalType: "uint256", + name: "borrowAmount", + type: "uint256", + }, + ], + name: "borrow", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + payable: false, + stateMutability: "nonpayable", + type: "function", + signature: "0xc5ebeaec", + }, + { + constant: false, + inputs: [ + { + internalType: "address", + name: "account", + type: "address", + }, + ], + name: "borrowBalanceCurrent", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + payable: false, + stateMutability: "nonpayable", + type: "function", + signature: "0x17bfdfbc", + }, + { + constant: true, + inputs: [ + { + internalType: "address", + name: "account", + type: "address", + }, + ], + name: "borrowBalanceStored", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + payable: false, + stateMutability: "view", + type: "function", + signature: "0x95dd9193", + }, + { + constant: true, + inputs: [], + name: "borrowIndex", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + payable: false, + stateMutability: "view", + type: "function", + signature: "0xaa5af0fd", + }, + { + constant: true, + inputs: [], + name: "borrowRatePerBlock", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + payable: false, + stateMutability: "view", + type: "function", + signature: "0xf8f9da28", + }, + { + constant: true, + inputs: [], + name: "comptroller", + outputs: [ + { + internalType: "contract ComptrollerInterface", + name: "", + type: "address", + }, + ], + payable: false, + stateMutability: "view", + type: "function", + signature: "0x5fe3b567", + }, + { + constant: true, + inputs: [], + name: "decimals", + outputs: [ + { + internalType: "uint8", + name: "", + type: "uint8", + }, + ], + payable: false, + stateMutability: "view", + type: "function", + signature: "0x313ce567", + }, + { + constant: false, + inputs: [ + { + internalType: "bytes", + name: "data", + type: "bytes", + }, + ], + name: "delegateToImplementation", + outputs: [ + { + internalType: "bytes", + name: "", + type: "bytes", + }, + ], + payable: false, + stateMutability: "nonpayable", + type: "function", + signature: "0x0933c1ed", + }, + { + constant: true, + inputs: [ + { + internalType: "bytes", + name: "data", + type: "bytes", + }, + ], + name: "delegateToViewImplementation", + outputs: [ + { + internalType: "bytes", + name: "", + type: "bytes", + }, + ], + payable: false, + stateMutability: "view", + type: "function", + signature: "0x4487152f", + }, + { + constant: false, + inputs: [], + name: "exchangeRateCurrent", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + payable: false, + stateMutability: "nonpayable", + type: "function", + signature: "0xbd6d894d", + }, + { + constant: true, + inputs: [], + name: "exchangeRateStored", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + payable: false, + stateMutability: "view", + type: "function", + signature: "0x182df0f5", + }, + { + constant: true, + inputs: [ + { + internalType: "address", + name: "account", + type: "address", + }, + ], + name: "getAccountSnapshot", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + { + internalType: "uint256", + name: "", + type: "uint256", + }, + { + internalType: "uint256", + name: "", + type: "uint256", + }, + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + payable: false, + stateMutability: "view", + type: "function", + signature: "0xc37f68e2", + }, + { + constant: true, + inputs: [], + name: "getCash", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + payable: false, + stateMutability: "view", + type: "function", + signature: "0x3b1d21a2", + }, + { + constant: true, + inputs: [], + name: "implementation", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + payable: false, + stateMutability: "view", + type: "function", + signature: "0x5c60da1b", + }, + { + constant: true, + inputs: [], + name: "interestRateModel", + outputs: [ + { + internalType: "contract InterestRateModel", + name: "", + type: "address", + }, + ], + payable: false, + stateMutability: "view", + type: "function", + signature: "0xf3fdb15a", + }, + { + constant: true, + inputs: [], + name: "isCToken", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + payable: false, + stateMutability: "view", + type: "function", + signature: "0xfe9c44ae", + }, + { + constant: false, + inputs: [ + { + internalType: "address", + name: "borrower", + type: "address", + }, + { + internalType: "uint256", + name: "repayAmount", + type: "uint256", + }, + { + internalType: "contract CTokenInterface", + name: "cTokenCollateral", + type: "address", + }, + ], + name: "liquidateBorrow", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + payable: false, + stateMutability: "nonpayable", + type: "function", + signature: "0xf5e3c462", + }, + { + constant: false, + inputs: [ + { + internalType: "uint256", + name: "mintAmount", + type: "uint256", + }, + ], + name: "mint", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + payable: false, + stateMutability: "nonpayable", + type: "function", + signature: "0xa0712d68", + }, + { + constant: true, + inputs: [], + name: "name", + outputs: [ + { + internalType: "string", + name: "", + type: "string", + }, + ], + payable: false, + stateMutability: "view", + type: "function", + signature: "0x06fdde03", + }, + { + constant: true, + inputs: [], + name: "pendingAdmin", + outputs: [ + { + internalType: "address payable", + name: "", + type: "address", + }, + ], + payable: false, + stateMutability: "view", + type: "function", + signature: "0x26782247", + }, + { + constant: false, + inputs: [ + { + internalType: "uint256", + name: "redeemTokens", + type: "uint256", + }, + ], + name: "redeem", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + payable: false, + stateMutability: "nonpayable", + type: "function", + signature: "0xdb006a75", + }, + { + constant: false, + inputs: [ + { + internalType: "uint256", + name: "redeemAmount", + type: "uint256", + }, + ], + name: "redeemUnderlying", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + payable: false, + stateMutability: "nonpayable", + type: "function", + signature: "0x852a12e3", + }, + { + constant: false, + inputs: [ + { + internalType: "uint256", + name: "repayAmount", + type: "uint256", + }, + ], + name: "repayBorrow", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + payable: false, + stateMutability: "nonpayable", + type: "function", + signature: "0x0e752702", + }, + { + constant: false, + inputs: [ + { + internalType: "address", + name: "borrower", + type: "address", + }, + { + internalType: "uint256", + name: "repayAmount", + type: "uint256", + }, + ], + name: "repayBorrowBehalf", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + payable: false, + stateMutability: "nonpayable", + type: "function", + signature: "0x2608f818", + }, + { + constant: true, + inputs: [], + name: "reserveFactorMantissa", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + payable: false, + stateMutability: "view", + type: "function", + signature: "0x173b9904", + }, + { + constant: false, + inputs: [ + { + internalType: "address", + name: "liquidator", + type: "address", + }, + { + internalType: "address", + name: "borrower", + type: "address", + }, + { + internalType: "uint256", + name: "seizeTokens", + type: "uint256", + }, + ], + name: "seize", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + payable: false, + stateMutability: "nonpayable", + type: "function", + signature: "0xb2a02ff1", + }, + { + constant: true, + inputs: [], + name: "supplyRatePerBlock", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + payable: false, + stateMutability: "view", + type: "function", + signature: "0xae9d70b0", + }, + { + constant: true, + inputs: [], + name: "symbol", + outputs: [ + { + internalType: "string", + name: "", + type: "string", + }, + ], + payable: false, + stateMutability: "view", + type: "function", + signature: "0x95d89b41", + }, + { + constant: true, + inputs: [], + name: "totalBorrows", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + payable: false, + stateMutability: "view", + type: "function", + signature: "0x47bd3718", + }, + { + constant: false, + inputs: [], + name: "totalBorrowsCurrent", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + payable: false, + stateMutability: "nonpayable", + type: "function", + signature: "0x73acee98", + }, + { + constant: true, + inputs: [], + name: "totalReserves", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + payable: false, + stateMutability: "view", + type: "function", + signature: "0x8f840ddd", + }, + { + constant: true, + inputs: [], + name: "totalSupply", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + payable: false, + stateMutability: "view", + type: "function", + signature: "0x18160ddd", + }, + { + constant: false, + inputs: [ + { + internalType: "address", + name: "dst", + type: "address", + }, + { + internalType: "uint256", + name: "amount", + type: "uint256", + }, + ], + name: "transfer", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + payable: false, + stateMutability: "nonpayable", + type: "function", + signature: "0xa9059cbb", + }, + { + constant: false, + inputs: [ + { + internalType: "address", + name: "src", + type: "address", + }, + { + internalType: "address", + name: "dst", + type: "address", + }, + { + internalType: "uint256", + name: "amount", + type: "uint256", + }, + ], + name: "transferFrom", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + payable: false, + stateMutability: "nonpayable", + type: "function", + signature: "0x23b872dd", + }, + { + constant: true, + inputs: [], + name: "underlying", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + payable: false, + stateMutability: "view", + type: "function", + signature: "0x6f307dc3", + }, +]; + +const cDAIContract = [ + { + inputs: [ + { + internalType: "address", + name: "underlying_", + type: "address", + }, + { + internalType: "contract ComptrollerInterface", + name: "comptroller_", + type: "address", + }, + { + internalType: "contract InterestRateModel", + name: "interestRateModel_", + type: "address", + }, + { + internalType: "uint256", + name: "initialExchangeRateMantissa_", + type: "uint256", + }, + { + internalType: "string", + name: "name_", + type: "string", + }, + { + internalType: "string", + name: "symbol_", + type: "string", + }, + { + internalType: "uint8", + name: "decimals_", + type: "uint8", + }, + { + internalType: "address payable", + name: "admin_", + type: "address", + }, + { + internalType: "address", + name: "implementation_", + type: "address", + }, + { + internalType: "bytes", + name: "becomeImplementationData", + type: "bytes", + }, + ], + payable: false, + stateMutability: "nonpayable", + type: "constructor", + signature: "constructor", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "uint256", + name: "cashPrior", + type: "uint256", + }, + { + indexed: false, + internalType: "uint256", + name: "interestAccumulated", + type: "uint256", + }, + { + indexed: false, + internalType: "uint256", + name: "borrowIndex", + type: "uint256", + }, + { + indexed: false, + internalType: "uint256", + name: "totalBorrows", + type: "uint256", + }, + ], + name: "AccrueInterest", + type: "event", + signature: + "0x4dec04e750ca11537cabcd8a9eab06494de08da3735bc8871cd41250e190bc04", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "owner", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "spender", + type: "address", + }, + { + indexed: false, + internalType: "uint256", + name: "amount", + type: "uint256", + }, + ], + name: "Approval", + type: "event", + signature: + "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "address", + name: "borrower", + type: "address", + }, + { + indexed: false, + internalType: "uint256", + name: "borrowAmount", + type: "uint256", + }, + { + indexed: false, + internalType: "uint256", + name: "accountBorrows", + type: "uint256", + }, + { + indexed: false, + internalType: "uint256", + name: "totalBorrows", + type: "uint256", + }, + ], + name: "Borrow", + type: "event", + signature: + "0x13ed6866d4e1ee6da46f845c46d7e54120883d75c5ea9a2dacc1c4ca8984ab80", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "uint256", + name: "error", + type: "uint256", + }, + { + indexed: false, + internalType: "uint256", + name: "info", + type: "uint256", + }, + { + indexed: false, + internalType: "uint256", + name: "detail", + type: "uint256", + }, + ], + name: "Failure", + type: "event", + signature: + "0x45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa0", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "address", + name: "liquidator", + type: "address", + }, + { + indexed: false, + internalType: "address", + name: "borrower", + type: "address", + }, + { + indexed: false, + internalType: "uint256", + name: "repayAmount", + type: "uint256", + }, + { + indexed: false, + internalType: "address", + name: "cTokenCollateral", + type: "address", + }, + { + indexed: false, + internalType: "uint256", + name: "seizeTokens", + type: "uint256", + }, + ], + name: "LiquidateBorrow", + type: "event", + signature: + "0x298637f684da70674f26509b10f07ec2fbc77a335ab1e7d6215a4b2484d8bb52", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "address", + name: "minter", + type: "address", + }, + { + indexed: false, + internalType: "uint256", + name: "mintAmount", + type: "uint256", + }, + { + indexed: false, + internalType: "uint256", + name: "mintTokens", + type: "uint256", + }, + ], + name: "Mint", + type: "event", + signature: + "0x4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "address", + name: "oldAdmin", + type: "address", + }, + { + indexed: false, + internalType: "address", + name: "newAdmin", + type: "address", + }, + ], + name: "NewAdmin", + type: "event", + signature: + "0xf9ffabca9c8276e99321725bcb43fb076a6c66a54b7f21c4e8146d8519b417dc", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "contract ComptrollerInterface", + name: "oldComptroller", + type: "address", + }, + { + indexed: false, + internalType: "contract ComptrollerInterface", + name: "newComptroller", + type: "address", + }, + ], + name: "NewComptroller", + type: "event", + signature: + "0x7ac369dbd14fa5ea3f473ed67cc9d598964a77501540ba6751eb0b3decf5870d", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "address", + name: "oldImplementation", + type: "address", + }, + { + indexed: false, + internalType: "address", + name: "newImplementation", + type: "address", + }, + ], + name: "NewImplementation", + type: "event", + signature: + "0xd604de94d45953f9138079ec1b82d533cb2160c906d1076d1f7ed54befbca97a", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "contract InterestRateModel", + name: "oldInterestRateModel", + type: "address", + }, + { + indexed: false, + internalType: "contract InterestRateModel", + name: "newInterestRateModel", + type: "address", + }, + ], + name: "NewMarketInterestRateModel", + type: "event", + signature: + "0xedffc32e068c7c95dfd4bdfd5c4d939a084d6b11c4199eac8436ed234d72f926", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "address", + name: "oldPendingAdmin", + type: "address", + }, + { + indexed: false, + internalType: "address", + name: "newPendingAdmin", + type: "address", + }, + ], + name: "NewPendingAdmin", + type: "event", + signature: + "0xca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a9", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "uint256", + name: "oldReserveFactorMantissa", + type: "uint256", + }, + { + indexed: false, + internalType: "uint256", + name: "newReserveFactorMantissa", + type: "uint256", + }, + ], + name: "NewReserveFactor", + type: "event", + signature: + "0xaaa68312e2ea9d50e16af5068410ab56e1a1fd06037b1a35664812c30f821460", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "address", + name: "redeemer", + type: "address", + }, + { + indexed: false, + internalType: "uint256", + name: "redeemAmount", + type: "uint256", + }, + { + indexed: false, + internalType: "uint256", + name: "redeemTokens", + type: "uint256", + }, + ], + name: "Redeem", + type: "event", + signature: + "0xe5b754fb1abb7f01b499791d0b820ae3b6af3424ac1c59768edb53f4ec31a929", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "address", + name: "payer", + type: "address", + }, + { + indexed: false, + internalType: "address", + name: "borrower", + type: "address", + }, + { + indexed: false, + internalType: "uint256", + name: "repayAmount", + type: "uint256", + }, + { + indexed: false, + internalType: "uint256", + name: "accountBorrows", + type: "uint256", + }, + { + indexed: false, + internalType: "uint256", + name: "totalBorrows", + type: "uint256", + }, + ], + name: "RepayBorrow", + type: "event", + signature: + "0x1a2a22cb034d26d1854bdc6666a5b91fe25efbbb5dcad3b0355478d6f5c362a1", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "address", + name: "benefactor", + type: "address", + }, + { + indexed: false, + internalType: "uint256", + name: "addAmount", + type: "uint256", + }, + { + indexed: false, + internalType: "uint256", + name: "newTotalReserves", + type: "uint256", + }, + ], + name: "ReservesAdded", + type: "event", + signature: + "0xa91e67c5ea634cd43a12c5a482724b03de01e85ca68702a53d0c2f45cb7c1dc5", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "address", + name: "admin", + type: "address", + }, + { + indexed: false, + internalType: "uint256", + name: "reduceAmount", + type: "uint256", + }, + { + indexed: false, + internalType: "uint256", + name: "newTotalReserves", + type: "uint256", + }, + ], + name: "ReservesReduced", + type: "event", + signature: + "0x3bad0c59cf2f06e7314077049f48a93578cd16f5ef92329f1dab1420a99c177e", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "from", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "to", + type: "address", + }, + { + indexed: false, + internalType: "uint256", + name: "amount", + type: "uint256", + }, + ], + name: "Transfer", + type: "event", + signature: + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + }, + { + payable: true, + stateMutability: "payable", + type: "fallback", + }, + { + constant: false, + inputs: [], + name: "_acceptAdmin", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + payable: false, + stateMutability: "nonpayable", + type: "function", + signature: "0xe9c714f2", + }, + { + constant: false, + inputs: [ + { + internalType: "uint256", + name: "addAmount", + type: "uint256", + }, + ], + name: "_addReserves", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + payable: false, + stateMutability: "nonpayable", + type: "function", + signature: "0x3e941010", + }, + { + constant: false, + inputs: [ + { + internalType: "uint256", + name: "reduceAmount", + type: "uint256", + }, + ], + name: "_reduceReserves", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + payable: false, + stateMutability: "nonpayable", + type: "function", + signature: "0x601a0bf1", + }, + { + constant: false, + inputs: [ + { + internalType: "contract ComptrollerInterface", + name: "newComptroller", + type: "address", + }, + ], + name: "_setComptroller", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + payable: false, + stateMutability: "nonpayable", + type: "function", + signature: "0x4576b5db", + }, + { + constant: false, + inputs: [ + { + internalType: "address", + name: "implementation_", + type: "address", + }, + { + internalType: "bool", + name: "allowResign", + type: "bool", + }, + { + internalType: "bytes", + name: "becomeImplementationData", + type: "bytes", + }, + ], + name: "_setImplementation", + outputs: [], + payable: false, + stateMutability: "nonpayable", + type: "function", + signature: "0x555bcc40", + }, + { + constant: false, + inputs: [ + { + internalType: "contract InterestRateModel", + name: "newInterestRateModel", + type: "address", + }, + ], + name: "_setInterestRateModel", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + payable: false, + stateMutability: "nonpayable", + type: "function", + signature: "0xf2b3abbd", + }, + { + constant: false, + inputs: [ + { + internalType: "address payable", + name: "newPendingAdmin", + type: "address", + }, + ], + name: "_setPendingAdmin", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + payable: false, + stateMutability: "nonpayable", + type: "function", + signature: "0xb71d1a0c", + }, + { + constant: false, + inputs: [ + { + internalType: "uint256", + name: "newReserveFactorMantissa", + type: "uint256", + }, + ], + name: "_setReserveFactor", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + payable: false, + stateMutability: "nonpayable", + type: "function", + signature: "0xfca7820b", + }, + { + constant: true, + inputs: [], + name: "accrualBlockNumber", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + payable: false, + stateMutability: "view", + type: "function", + signature: "0x6c540baf", + }, + { + constant: false, + inputs: [], + name: "accrueInterest", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + payable: false, + stateMutability: "nonpayable", + type: "function", + signature: "0xa6afed95", + }, + { + constant: true, + inputs: [], + name: "admin", + outputs: [ + { + internalType: "address payable", + name: "", + type: "address", + }, + ], + payable: false, + stateMutability: "view", + type: "function", + signature: "0xf851a440", + }, + { + constant: true, + inputs: [ + { + internalType: "address", + name: "owner", + type: "address", + }, + { + internalType: "address", + name: "spender", + type: "address", + }, + ], + name: "allowance", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + payable: false, + stateMutability: "view", + type: "function", + signature: "0xdd62ed3e", + }, + { + constant: false, + inputs: [ + { + internalType: "address", + name: "spender", + type: "address", + }, + { + internalType: "uint256", + name: "amount", + type: "uint256", + }, + ], + name: "approve", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + payable: false, + stateMutability: "nonpayable", + type: "function", + signature: "0x095ea7b3", + }, + { + constant: true, + inputs: [ + { + internalType: "address", + name: "owner", + type: "address", + }, + ], + name: "balanceOf", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + payable: false, + stateMutability: "view", + type: "function", + signature: "0x70a08231", + }, + { + constant: false, + inputs: [ + { + internalType: "address", + name: "owner", + type: "address", + }, + ], + name: "balanceOfUnderlying", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + payable: false, + stateMutability: "nonpayable", + type: "function", + signature: "0x3af9e669", + }, + { + constant: false, + inputs: [ + { + internalType: "uint256", + name: "borrowAmount", + type: "uint256", + }, + ], + name: "borrow", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + payable: false, + stateMutability: "nonpayable", + type: "function", + signature: "0xc5ebeaec", + }, + { + constant: false, + inputs: [ + { + internalType: "address", + name: "account", + type: "address", + }, + ], + name: "borrowBalanceCurrent", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + payable: false, + stateMutability: "nonpayable", + type: "function", + signature: "0x17bfdfbc", + }, + { + constant: true, + inputs: [ + { + internalType: "address", + name: "account", + type: "address", + }, + ], + name: "borrowBalanceStored", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + payable: false, + stateMutability: "view", + type: "function", + signature: "0x95dd9193", + }, + { + constant: true, + inputs: [], + name: "borrowIndex", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + payable: false, + stateMutability: "view", + type: "function", + signature: "0xaa5af0fd", + }, + { + constant: true, + inputs: [], + name: "borrowRatePerBlock", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + payable: false, + stateMutability: "view", + type: "function", + signature: "0xf8f9da28", + }, + { + constant: true, + inputs: [], + name: "comptroller", + outputs: [ + { + internalType: "contract ComptrollerInterface", + name: "", + type: "address", + }, + ], + payable: false, + stateMutability: "view", + type: "function", + signature: "0x5fe3b567", + }, + { + constant: true, + inputs: [], + name: "decimals", + outputs: [ + { + internalType: "uint8", + name: "", + type: "uint8", + }, + ], + payable: false, + stateMutability: "view", + type: "function", + signature: "0x313ce567", + }, + { + constant: false, + inputs: [ + { + internalType: "bytes", + name: "data", + type: "bytes", + }, + ], + name: "delegateToImplementation", + outputs: [ + { + internalType: "bytes", + name: "", + type: "bytes", + }, + ], + payable: false, + stateMutability: "nonpayable", + type: "function", + signature: "0x0933c1ed", + }, + { + constant: true, + inputs: [ + { + internalType: "bytes", + name: "data", + type: "bytes", + }, + ], + name: "delegateToViewImplementation", + outputs: [ + { + internalType: "bytes", + name: "", + type: "bytes", + }, + ], + payable: false, + stateMutability: "view", + type: "function", + signature: "0x4487152f", + }, + { + constant: false, + inputs: [], + name: "exchangeRateCurrent", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + payable: false, + stateMutability: "nonpayable", + type: "function", + signature: "0xbd6d894d", + }, + { + constant: true, + inputs: [], + name: "exchangeRateStored", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + payable: false, + stateMutability: "view", + type: "function", + signature: "0x182df0f5", + }, + { + constant: true, + inputs: [ + { + internalType: "address", + name: "account", + type: "address", + }, + ], + name: "getAccountSnapshot", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + { + internalType: "uint256", + name: "", + type: "uint256", + }, + { + internalType: "uint256", + name: "", + type: "uint256", + }, + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + payable: false, + stateMutability: "view", + type: "function", + signature: "0xc37f68e2", + }, + { + constant: true, + inputs: [], + name: "getCash", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + payable: false, + stateMutability: "view", + type: "function", + signature: "0x3b1d21a2", + }, + { + constant: true, + inputs: [], + name: "implementation", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + payable: false, + stateMutability: "view", + type: "function", + signature: "0x5c60da1b", + }, + { + constant: true, + inputs: [], + name: "interestRateModel", + outputs: [ + { + internalType: "contract InterestRateModel", + name: "", + type: "address", + }, + ], + payable: false, + stateMutability: "view", + type: "function", + signature: "0xf3fdb15a", + }, + { + constant: true, + inputs: [], + name: "isCToken", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + payable: false, + stateMutability: "view", + type: "function", + signature: "0xfe9c44ae", + }, + { + constant: false, + inputs: [ + { + internalType: "address", + name: "borrower", + type: "address", + }, + { + internalType: "uint256", + name: "repayAmount", + type: "uint256", + }, + { + internalType: "contract CTokenInterface", + name: "cTokenCollateral", + type: "address", + }, + ], + name: "liquidateBorrow", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + payable: false, + stateMutability: "nonpayable", + type: "function", + signature: "0xf5e3c462", + }, + { + constant: false, + inputs: [ + { + internalType: "uint256", + name: "mintAmount", + type: "uint256", + }, + ], + name: "mint", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + payable: false, + stateMutability: "nonpayable", + type: "function", + signature: "0xa0712d68", + }, + { + constant: true, + inputs: [], + name: "name", + outputs: [ + { + internalType: "string", + name: "", + type: "string", + }, + ], + payable: false, + stateMutability: "view", + type: "function", + signature: "0x06fdde03", + }, + { + constant: true, + inputs: [], + name: "pendingAdmin", + outputs: [ + { + internalType: "address payable", + name: "", + type: "address", + }, + ], + payable: false, + stateMutability: "view", + type: "function", + signature: "0x26782247", + }, + { + constant: false, + inputs: [ + { + internalType: "uint256", + name: "redeemTokens", + type: "uint256", + }, + ], + name: "redeem", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + payable: false, + stateMutability: "nonpayable", + type: "function", + signature: "0xdb006a75", + }, + { + constant: false, + inputs: [ + { + internalType: "uint256", + name: "redeemAmount", + type: "uint256", + }, + ], + name: "redeemUnderlying", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + payable: false, + stateMutability: "nonpayable", + type: "function", + signature: "0x852a12e3", + }, + { + constant: false, + inputs: [ + { + internalType: "uint256", + name: "repayAmount", + type: "uint256", + }, + ], + name: "repayBorrow", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + payable: false, + stateMutability: "nonpayable", + type: "function", + signature: "0x0e752702", + }, + { + constant: false, + inputs: [ + { + internalType: "address", + name: "borrower", + type: "address", + }, + { + internalType: "uint256", + name: "repayAmount", + type: "uint256", + }, + ], + name: "repayBorrowBehalf", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + payable: false, + stateMutability: "nonpayable", + type: "function", + signature: "0x2608f818", + }, + { + constant: true, + inputs: [], + name: "reserveFactorMantissa", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + payable: false, + stateMutability: "view", + type: "function", + signature: "0x173b9904", + }, + { + constant: false, + inputs: [ + { + internalType: "address", + name: "liquidator", + type: "address", + }, + { + internalType: "address", + name: "borrower", + type: "address", + }, + { + internalType: "uint256", + name: "seizeTokens", + type: "uint256", + }, + ], + name: "seize", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + payable: false, + stateMutability: "nonpayable", + type: "function", + signature: "0xb2a02ff1", + }, + { + constant: true, + inputs: [], + name: "supplyRatePerBlock", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + payable: false, + stateMutability: "view", + type: "function", + signature: "0xae9d70b0", + }, + { + constant: true, + inputs: [], + name: "symbol", + outputs: [ + { + internalType: "string", + name: "", + type: "string", + }, + ], + payable: false, + stateMutability: "view", + type: "function", + signature: "0x95d89b41", + }, + { + constant: true, + inputs: [], + name: "totalBorrows", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + payable: false, + stateMutability: "view", + type: "function", + signature: "0x47bd3718", + }, + { + constant: false, + inputs: [], + name: "totalBorrowsCurrent", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + payable: false, + stateMutability: "nonpayable", + type: "function", + signature: "0x73acee98", + }, + { + constant: true, + inputs: [], + name: "totalReserves", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + payable: false, + stateMutability: "view", + type: "function", + signature: "0x8f840ddd", + }, + { + constant: true, + inputs: [], + name: "totalSupply", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + payable: false, + stateMutability: "view", + type: "function", + signature: "0x18160ddd", + }, + { + constant: false, + inputs: [ + { + internalType: "address", + name: "dst", + type: "address", + }, + { + internalType: "uint256", + name: "amount", + type: "uint256", + }, + ], + name: "transfer", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + payable: false, + stateMutability: "nonpayable", + type: "function", + signature: "0xa9059cbb", + }, + { + constant: false, + inputs: [ + { + internalType: "address", + name: "src", + type: "address", + }, + { + internalType: "address", + name: "dst", + type: "address", + }, + { + internalType: "uint256", + name: "amount", + type: "uint256", + }, + ], + name: "transferFrom", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + payable: false, + stateMutability: "nonpayable", + type: "function", + signature: "0x23b872dd", + }, + { + constant: true, + inputs: [], + name: "underlying", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + payable: false, + stateMutability: "view", + type: "function", + signature: "0x6f307dc3", + }, +]; + +const cUSDCContract = [ + { + constant: true, + inputs: [], + name: "name", + outputs: [ + { + name: "", + type: "string", + }, + ], + payable: false, + stateMutability: "view", + type: "function", + signature: "0x06fdde03", + }, + { + constant: false, + inputs: [ + { + name: "spender", + type: "address", + }, + { + name: "amount", + type: "uint256", + }, + ], + name: "approve", + outputs: [ + { + name: "", + type: "bool", + }, + ], + payable: false, + stateMutability: "nonpayable", + type: "function", + signature: "0x095ea7b3", + }, + { + constant: false, + inputs: [ + { + name: "repayAmount", + type: "uint256", + }, + ], + name: "repayBorrow", + outputs: [ + { + name: "", + type: "uint256", + }, + ], + payable: false, + stateMutability: "nonpayable", + type: "function", + signature: "0x0e752702", + }, + { + constant: true, + inputs: [], + name: "reserveFactorMantissa", + outputs: [ + { + name: "", + type: "uint256", + }, + ], + payable: false, + stateMutability: "view", + type: "function", + signature: "0x173b9904", + }, + { + constant: false, + inputs: [ + { + name: "account", + type: "address", + }, + ], + name: "borrowBalanceCurrent", + outputs: [ + { + name: "", + type: "uint256", + }, + ], + payable: false, + stateMutability: "nonpayable", + type: "function", + signature: "0x17bfdfbc", + }, + { + constant: true, + inputs: [], + name: "totalSupply", + outputs: [ + { + name: "", + type: "uint256", + }, + ], + payable: false, + stateMutability: "view", + type: "function", + signature: "0x18160ddd", + }, + { + constant: true, + inputs: [], + name: "exchangeRateStored", + outputs: [ + { + name: "", + type: "uint256", + }, + ], + payable: false, + stateMutability: "view", + type: "function", + signature: "0x182df0f5", + }, + { + constant: false, + inputs: [ + { + name: "src", + type: "address", + }, + { + name: "dst", + type: "address", + }, + { + name: "amount", + type: "uint256", + }, + ], + name: "transferFrom", + outputs: [ + { + name: "", + type: "bool", + }, + ], + payable: false, + stateMutability: "nonpayable", + type: "function", + signature: "0x23b872dd", + }, + { + constant: false, + inputs: [ + { + name: "borrower", + type: "address", + }, + { + name: "repayAmount", + type: "uint256", + }, + ], + name: "repayBorrowBehalf", + outputs: [ + { + name: "", + type: "uint256", + }, + ], + payable: false, + stateMutability: "nonpayable", + type: "function", + signature: "0x2608f818", + }, + { + constant: true, + inputs: [], + name: "pendingAdmin", + outputs: [ + { + name: "", + type: "address", + }, + ], + payable: false, + stateMutability: "view", + type: "function", + signature: "0x26782247", + }, + { + constant: true, + inputs: [], + name: "decimals", + outputs: [ + { + name: "", + type: "uint256", + }, + ], + payable: false, + stateMutability: "view", + type: "function", + signature: "0x313ce567", + }, + { + constant: false, + inputs: [ + { + name: "owner", + type: "address", + }, + ], + name: "balanceOfUnderlying", + outputs: [ + { + name: "", + type: "uint256", + }, + ], + payable: false, + stateMutability: "nonpayable", + type: "function", + signature: "0x3af9e669", + }, + { + constant: true, + inputs: [], + name: "getCash", + outputs: [ + { + name: "", + type: "uint256", + }, + ], + payable: false, + stateMutability: "view", + type: "function", + signature: "0x3b1d21a2", + }, + { + constant: false, + inputs: [ + { + name: "newComptroller", + type: "address", + }, + ], + name: "_setComptroller", + outputs: [ + { + name: "", + type: "uint256", + }, + ], + payable: false, + stateMutability: "nonpayable", + type: "function", + signature: "0x4576b5db", + }, + { + constant: true, + inputs: [], + name: "totalBorrows", + outputs: [ + { + name: "", + type: "uint256", + }, + ], + payable: false, + stateMutability: "view", + type: "function", + signature: "0x47bd3718", + }, + { + constant: true, + inputs: [], + name: "comptroller", + outputs: [ + { + name: "", + type: "address", + }, + ], + payable: false, + stateMutability: "view", + type: "function", + signature: "0x5fe3b567", + }, + { + constant: false, + inputs: [ + { + name: "reduceAmount", + type: "uint256", + }, + ], + name: "_reduceReserves", + outputs: [ + { + name: "", + type: "uint256", + }, + ], + payable: false, + stateMutability: "nonpayable", + type: "function", + signature: "0x601a0bf1", + }, + { + constant: true, + inputs: [], + name: "initialExchangeRateMantissa", + outputs: [ + { + name: "", + type: "uint256", + }, + ], + payable: false, + stateMutability: "view", + type: "function", + signature: "0x675d972c", + }, + { + constant: true, + inputs: [], + name: "accrualBlockNumber", + outputs: [ + { + name: "", + type: "uint256", + }, + ], + payable: false, + stateMutability: "view", + type: "function", + signature: "0x6c540baf", + }, + { + constant: true, + inputs: [], + name: "underlying", + outputs: [ + { + name: "", + type: "address", + }, + ], + payable: false, + stateMutability: "view", + type: "function", + signature: "0x6f307dc3", + }, + { + constant: true, + inputs: [ + { + name: "owner", + type: "address", + }, + ], + name: "balanceOf", + outputs: [ + { + name: "", + type: "uint256", + }, + ], + payable: false, + stateMutability: "view", + type: "function", + signature: "0x70a08231", + }, + { + constant: false, + inputs: [], + name: "totalBorrowsCurrent", + outputs: [ + { + name: "", + type: "uint256", + }, + ], + payable: false, + stateMutability: "nonpayable", + type: "function", + signature: "0x73acee98", + }, + { + constant: false, + inputs: [ + { + name: "redeemAmount", + type: "uint256", + }, + ], + name: "redeemUnderlying", + outputs: [ + { + name: "", + type: "uint256", + }, + ], + payable: false, + stateMutability: "nonpayable", + type: "function", + signature: "0x852a12e3", + }, + { + constant: true, + inputs: [], + name: "totalReserves", + outputs: [ + { + name: "", + type: "uint256", + }, + ], + payable: false, + stateMutability: "view", + type: "function", + signature: "0x8f840ddd", + }, + { + constant: true, + inputs: [], + name: "symbol", + outputs: [ + { + name: "", + type: "string", + }, + ], + payable: false, + stateMutability: "view", + type: "function", + signature: "0x95d89b41", + }, + { + constant: true, + inputs: [ + { + name: "account", + type: "address", + }, + ], + name: "borrowBalanceStored", + outputs: [ + { + name: "", + type: "uint256", + }, + ], + payable: false, + stateMutability: "view", + type: "function", + signature: "0x95dd9193", + }, + { + constant: false, + inputs: [ + { + name: "mintAmount", + type: "uint256", + }, + ], + name: "mint", + outputs: [ + { + name: "", + type: "uint256", + }, + ], + payable: false, + stateMutability: "nonpayable", + type: "function", + signature: "0xa0712d68", + }, + { + constant: false, + inputs: [], + name: "accrueInterest", + outputs: [ + { + name: "", + type: "uint256", + }, + ], + payable: false, + stateMutability: "nonpayable", + type: "function", + signature: "0xa6afed95", + }, + { + constant: false, + inputs: [ + { + name: "dst", + type: "address", + }, + { + name: "amount", + type: "uint256", + }, + ], + name: "transfer", + outputs: [ + { + name: "", + type: "bool", + }, + ], + payable: false, + stateMutability: "nonpayable", + type: "function", + signature: "0xa9059cbb", + }, + { + constant: true, + inputs: [], + name: "borrowIndex", + outputs: [ + { + name: "", + type: "uint256", + }, + ], + payable: false, + stateMutability: "view", + type: "function", + signature: "0xaa5af0fd", + }, + { + constant: true, + inputs: [], + name: "supplyRatePerBlock", + outputs: [ + { + name: "", + type: "uint256", + }, + ], + payable: false, + stateMutability: "view", + type: "function", + signature: "0xae9d70b0", + }, + { + constant: false, + inputs: [ + { + name: "liquidator", + type: "address", + }, + { + name: "borrower", + type: "address", + }, + { + name: "seizeTokens", + type: "uint256", + }, + ], + name: "seize", + outputs: [ + { + name: "", + type: "uint256", + }, + ], + payable: false, + stateMutability: "nonpayable", + type: "function", + signature: "0xb2a02ff1", + }, + { + constant: false, + inputs: [ + { + name: "newPendingAdmin", + type: "address", + }, + ], + name: "_setPendingAdmin", + outputs: [ + { + name: "", + type: "uint256", + }, + ], + payable: false, + stateMutability: "nonpayable", + type: "function", + signature: "0xb71d1a0c", + }, + { + constant: false, + inputs: [], + name: "exchangeRateCurrent", + outputs: [ + { + name: "", + type: "uint256", + }, + ], + payable: false, + stateMutability: "nonpayable", + type: "function", + signature: "0xbd6d894d", + }, + { + constant: true, + inputs: [ + { + name: "account", + type: "address", + }, + ], + name: "getAccountSnapshot", + outputs: [ + { + name: "", + type: "uint256", + }, + { + name: "", + type: "uint256", + }, + { + name: "", + type: "uint256", + }, + { + name: "", + type: "uint256", + }, + ], + payable: false, + stateMutability: "view", + type: "function", + signature: "0xc37f68e2", + }, + { + constant: false, + inputs: [ + { + name: "borrowAmount", + type: "uint256", + }, + ], + name: "borrow", + outputs: [ + { + name: "", + type: "uint256", + }, + ], + payable: false, + stateMutability: "nonpayable", + type: "function", + signature: "0xc5ebeaec", + }, + { + constant: false, + inputs: [ + { + name: "redeemTokens", + type: "uint256", + }, + ], + name: "redeem", + outputs: [ + { + name: "", + type: "uint256", + }, + ], + payable: false, + stateMutability: "nonpayable", + type: "function", + signature: "0xdb006a75", + }, + { + constant: true, + inputs: [ + { + name: "owner", + type: "address", + }, + { + name: "spender", + type: "address", + }, + ], + name: "allowance", + outputs: [ + { + name: "", + type: "uint256", + }, + ], + payable: false, + stateMutability: "view", + type: "function", + signature: "0xdd62ed3e", + }, + { + constant: false, + inputs: [], + name: "_acceptAdmin", + outputs: [ + { + name: "", + type: "uint256", + }, + ], + payable: false, + stateMutability: "nonpayable", + type: "function", + signature: "0xe9c714f2", + }, + { + constant: false, + inputs: [ + { + name: "newInterestRateModel", + type: "address", + }, + ], + name: "_setInterestRateModel", + outputs: [ + { + name: "", + type: "uint256", + }, + ], + payable: false, + stateMutability: "nonpayable", + type: "function", + signature: "0xf2b3abbd", + }, + { + constant: true, + inputs: [], + name: "interestRateModel", + outputs: [ + { + name: "", + type: "address", + }, + ], + payable: false, + stateMutability: "view", + type: "function", + signature: "0xf3fdb15a", + }, + { + constant: false, + inputs: [ + { + name: "borrower", + type: "address", + }, + { + name: "repayAmount", + type: "uint256", + }, + { + name: "cTokenCollateral", + type: "address", + }, + ], + name: "liquidateBorrow", + outputs: [ + { + name: "", + type: "uint256", + }, + ], + payable: false, + stateMutability: "nonpayable", + type: "function", + signature: "0xf5e3c462", + }, + { + constant: true, + inputs: [], + name: "admin", + outputs: [ + { + name: "", + type: "address", + }, + ], + payable: false, + stateMutability: "view", + type: "function", + signature: "0xf851a440", + }, + { + constant: true, + inputs: [], + name: "borrowRatePerBlock", + outputs: [ + { + name: "", + type: "uint256", + }, + ], + payable: false, + stateMutability: "view", + type: "function", + signature: "0xf8f9da28", + }, + { + constant: false, + inputs: [ + { + name: "newReserveFactorMantissa", + type: "uint256", + }, + ], + name: "_setReserveFactor", + outputs: [ + { + name: "", + type: "uint256", + }, + ], + payable: false, + stateMutability: "nonpayable", + type: "function", + signature: "0xfca7820b", + }, + { + constant: true, + inputs: [], + name: "isCToken", + outputs: [ + { + name: "", + type: "bool", + }, + ], + payable: false, + stateMutability: "view", + type: "function", + signature: "0xfe9c44ae", + }, + { + inputs: [ + { + name: "underlying_", + type: "address", + }, + { + name: "comptroller_", + type: "address", + }, + { + name: "interestRateModel_", + type: "address", + }, + { + name: "initialExchangeRateMantissa_", + type: "uint256", + }, + { + name: "name_", + type: "string", + }, + { + name: "symbol_", + type: "string", + }, + { + name: "decimals_", + type: "uint256", + }, + ], + payable: false, + stateMutability: "nonpayable", + type: "constructor", + signature: "constructor", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + name: "interestAccumulated", + type: "uint256", + }, + { + indexed: false, + name: "borrowIndex", + type: "uint256", + }, + { + indexed: false, + name: "totalBorrows", + type: "uint256", + }, + ], + name: "AccrueInterest", + type: "event", + signature: + "0x875352fb3fadeb8c0be7cbbe8ff761b308fa7033470cd0287f02f3436fd76cb9", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + name: "minter", + type: "address", + }, + { + indexed: false, + name: "mintAmount", + type: "uint256", + }, + { + indexed: false, + name: "mintTokens", + type: "uint256", + }, + ], + name: "Mint", + type: "event", + signature: + "0x4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + name: "redeemer", + type: "address", + }, + { + indexed: false, + name: "redeemAmount", + type: "uint256", + }, + { + indexed: false, + name: "redeemTokens", + type: "uint256", + }, + ], + name: "Redeem", + type: "event", + signature: + "0xe5b754fb1abb7f01b499791d0b820ae3b6af3424ac1c59768edb53f4ec31a929", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + name: "borrower", + type: "address", + }, + { + indexed: false, + name: "borrowAmount", + type: "uint256", + }, + { + indexed: false, + name: "accountBorrows", + type: "uint256", + }, + { + indexed: false, + name: "totalBorrows", + type: "uint256", + }, + ], + name: "Borrow", + type: "event", + signature: + "0x13ed6866d4e1ee6da46f845c46d7e54120883d75c5ea9a2dacc1c4ca8984ab80", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + name: "payer", + type: "address", + }, + { + indexed: false, + name: "borrower", + type: "address", + }, + { + indexed: false, + name: "repayAmount", + type: "uint256", + }, + { + indexed: false, + name: "accountBorrows", + type: "uint256", + }, + { + indexed: false, + name: "totalBorrows", + type: "uint256", + }, + ], + name: "RepayBorrow", + type: "event", + signature: + "0x1a2a22cb034d26d1854bdc6666a5b91fe25efbbb5dcad3b0355478d6f5c362a1", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + name: "liquidator", + type: "address", + }, + { + indexed: false, + name: "borrower", + type: "address", + }, + { + indexed: false, + name: "repayAmount", + type: "uint256", + }, + { + indexed: false, + name: "cTokenCollateral", + type: "address", + }, + { + indexed: false, + name: "seizeTokens", + type: "uint256", + }, + ], + name: "LiquidateBorrow", + type: "event", + signature: + "0x298637f684da70674f26509b10f07ec2fbc77a335ab1e7d6215a4b2484d8bb52", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + name: "oldPendingAdmin", + type: "address", + }, + { + indexed: false, + name: "newPendingAdmin", + type: "address", + }, + ], + name: "NewPendingAdmin", + type: "event", + signature: + "0xca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a9", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + name: "oldAdmin", + type: "address", + }, + { + indexed: false, + name: "newAdmin", + type: "address", + }, + ], + name: "NewAdmin", + type: "event", + signature: + "0xf9ffabca9c8276e99321725bcb43fb076a6c66a54b7f21c4e8146d8519b417dc", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + name: "oldComptroller", + type: "address", + }, + { + indexed: false, + name: "newComptroller", + type: "address", + }, + ], + name: "NewComptroller", + type: "event", + signature: + "0x7ac369dbd14fa5ea3f473ed67cc9d598964a77501540ba6751eb0b3decf5870d", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + name: "oldInterestRateModel", + type: "address", + }, + { + indexed: false, + name: "newInterestRateModel", + type: "address", + }, + ], + name: "NewMarketInterestRateModel", + type: "event", + signature: + "0xedffc32e068c7c95dfd4bdfd5c4d939a084d6b11c4199eac8436ed234d72f926", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + name: "oldReserveFactorMantissa", + type: "uint256", + }, + { + indexed: false, + name: "newReserveFactorMantissa", + type: "uint256", + }, + ], + name: "NewReserveFactor", + type: "event", + signature: + "0xaaa68312e2ea9d50e16af5068410ab56e1a1fd06037b1a35664812c30f821460", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + name: "admin", + type: "address", + }, + { + indexed: false, + name: "reduceAmount", + type: "uint256", + }, + { + indexed: false, + name: "newTotalReserves", + type: "uint256", + }, + ], + name: "ReservesReduced", + type: "event", + signature: + "0x3bad0c59cf2f06e7314077049f48a93578cd16f5ef92329f1dab1420a99c177e", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + name: "error", + type: "uint256", + }, + { + indexed: false, + name: "info", + type: "uint256", + }, + { + indexed: false, + name: "detail", + type: "uint256", + }, + ], + name: "Failure", + type: "event", + signature: + "0x45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa0", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + name: "from", + type: "address", + }, + { + indexed: true, + name: "to", + type: "address", + }, + { + indexed: false, + name: "amount", + type: "uint256", + }, + ], + name: "Transfer", + type: "event", + signature: + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + name: "owner", + type: "address", + }, + { + indexed: true, + name: "spender", + type: "address", + }, + { + indexed: false, + name: "amount", + type: "uint256", + }, + ], + name: "Approval", + type: "event", + signature: + "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", + }, +]; + +const xDVGABIContract = [ + { + "inputs": [ + { + "internalType": "contract IERC20", + "name": "_dvg", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "dvgAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "xDVGAmount", + "type": "uint256" + } + ], + "name": "Deposit", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "dvgAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "xDVGAmount", + "type": "uint256" + } + ], + "name": "Withdraw", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "subtractedValue", + "type": "uint256" + } + ], + "name": "decreaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "deposit", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "dvg", + "outputs": [ + { + "internalType": "contract IERC20", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "addedValue", + "type": "uint256" + } + ], + "name": "increaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_share", + "type": "uint256" + } + ], + "name": "withdraw", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } +]; + +const DVGABIContract = [ + { + "inputs": [ + { + "internalType": "address", + "name": "_treasuryWalletAddr", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_dvgInAdvance", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "delegator", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "fromDelegate", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "toDelegate", + "type": "address" + } + ], + "name": "DelegateChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "delegate", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "previousBalance", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "newBalance", + "type": "uint256" + } + ], + "name": "DelegateVotesChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [], + "name": "DELEGATION_TYPEHASH", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "DOMAIN_TYPEHASH", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "uint32", + "name": "", + "type": "uint32" + } + ], + "name": "checkpoints", + "outputs": [ + { + "internalType": "uint32", + "name": "fromBlock", + "type": "uint32" + }, + { + "internalType": "uint256", + "name": "votes", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "subtractedValue", + "type": "uint256" + } + ], + "name": "decreaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "delegatee", + "type": "address" + } + ], + "name": "delegate", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "delegatee", + "type": "address" + }, + { + "internalType": "uint256", + "name": "nonce", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expiry", + "type": "uint256" + }, + { + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "name": "delegateBySig", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "delegator", + "type": "address" + } + ], + "name": "delegates", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "dvgInAdvance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "getCurrentVotes", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "blockNumber", + "type": "uint256" + } + ], + "name": "getPriorVotes", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "addedValue", + "type": "uint256" + } + ], + "name": "increaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "mint", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "nonces", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "numCheckpoints", + "outputs": [ + { + "internalType": "uint32", + "name": "", + "type": "uint32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "treasuryWalletAddr", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + } +]; + +const xDVDABIContract = [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "DVDAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "xDVDAmount", + "type": "uint256" + } + ], + "name": "Deposit", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "DVDAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "xDVDAmount", + "type": "uint256" + } + ], + "name": "Withdraw", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "subtractedValue", + "type": "uint256" + } + ], + "name": "decreaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "deposit", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "dvd", + "outputs": [ + { + "internalType": "contract IERC20Upgradeable", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_addr", + "type": "address" + } + ], + "name": "getTier", + "outputs": [ + { + "internalType": "uint256", + "name": "_tier", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_depositedAmount", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "addedValue", + "type": "uint256" + } + ], + "name": "increaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_dvd", + "type": "address" + }, + { + "internalType": "string", + "name": "_name", + "type": "string" + }, + { + "internalType": "string", + "name": "_symbol", + "type": "string" + }, + { + "internalType": "uint256[]", + "name": "_tierAmounts", + "type": "uint256[]" + } + ], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "tierAmount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_share", + "type": "uint256" + } + ], + "name": "withdraw", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } +]; + +const DVDABIContract = [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "delegator", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "fromDelegate", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "toDelegate", + "type": "address" + } + ], + "name": "DelegateChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "delegate", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "previousBalance", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "newBalance", + "type": "uint256" + } + ], + "name": "DelegateVotesChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "Paused", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "id", + "type": "uint256" + } + ], + "name": "Snapshot", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "Unpaused", + "type": "event" + }, + { + "inputs": [], + "name": "DELEGATION_TYPEHASH", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "DOMAIN_TYPEHASH", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "snapshotId", + "type": "uint256" + } + ], + "name": "balanceOfAt", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "burn", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "burnFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "uint32", + "name": "", + "type": "uint32" + } + ], + "name": "checkpoints", + "outputs": [ + { + "internalType": "uint32", + "name": "fromBlock", + "type": "uint32" + }, + { + "internalType": "uint256", + "name": "votes", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "subtractedValue", + "type": "uint256" + } + ], + "name": "decreaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "delegatee", + "type": "address" + } + ], + "name": "delegate", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "delegatee", + "type": "address" + }, + { + "internalType": "uint256", + "name": "nonce", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expiry", + "type": "uint256" + }, + { + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "name": "delegateBySig", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "delegator", + "type": "address" + } + ], + "name": "delegates", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "getCurrentVotes", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "blockNumber", + "type": "uint256" + } + ], + "name": "getPriorVotes", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "addedValue", + "type": "uint256" + } + ], + "name": "increaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "_name", + "type": "string" + }, + { + "internalType": "string", + "name": "_symbol", + "type": "string" + }, + { + "internalType": "address", + "name": "_addr", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_initialSupply", + "type": "uint256" + } + ], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "mint", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "nonces", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "numCheckpoints", + "outputs": [ + { + "internalType": "uint32", + "name": "", + "type": "uint32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "pause", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "paused", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "snapshot", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "snapshotId", + "type": "uint256" + } + ], + "name": "totalSupplyAt", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "unpause", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } +]; + +const daoStakeContract = [ + { + "inputs": [ + { + "internalType": "address", + "name": "_treasuryWalletAddr", + "type": "address" + }, + { + "internalType": "address", + "name": "_communityWalletAddr", + "type": "address" + }, + { + "internalType": "contract DVGToken", + "name": "_dvg", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "lpTokenAddress", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "poolWeight", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "lastRewardBlock", + "type": "uint256" + } + ], + "name": "AddPool", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "poolId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "Deposit", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "poolId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "EmergencyWithdraw", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "contract DVGToken", + "name": "dvg", + "type": "address" + } + ], + "name": "SetDVG", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "poolId", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "poolWeight", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "totalPoolWeight", + "type": "uint256" + } + ], + "name": "SetPoolWeight", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "treasuryWalletAddr", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "communityWalletAddr", + "type": "address" + } + ], + "name": "SetWalletAddress", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "TransferDVGOwnership", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "poolId", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "lastRewardBlock", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "totalDVG", + "type": "uint256" + } + ], + "name": "UpdatePool", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "poolId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "Withdraw", + "type": "event" + }, + { + "inputs": [], + "name": "BLOCK_PER_PERIOD", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "COMMUNITY_WALLET_PERCENT", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "END_BLOCK", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "PERIOD_AMOUNT", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "POOL_PERCENT", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "START_BLOCK", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "TREASURY_WALLET_PERCENT", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_lpTokenAddress", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_poolWeight", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "_withUpdate", + "type": "bool" + } + ], + "name": "addPool", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "communityWalletAddr", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_pid", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "deposit", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "dvg", + "outputs": [ + { + "internalType": "contract DVGToken", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_pid", + "type": "uint256" + } + ], + "name": "emergencyWithdraw", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_from", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_to", + "type": "uint256" + } + ], + "name": "getMultiplier", + "outputs": [ + { + "internalType": "uint256", + "name": "multiplier", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "massUpdatePools", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_pid", + "type": "uint256" + }, + { + "internalType": "address", + "name": "_user", + "type": "address" + } + ], + "name": "pendingDVG", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "periodDVGPerBlock", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "pool", + "outputs": [ + { + "internalType": "address", + "name": "lpTokenAddress", + "type": "address" + }, + { + "internalType": "uint256", + "name": "poolWeight", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "lastRewardBlock", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "accDVGPerLP", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "poolLength", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract DVGToken", + "name": "_dvg", + "type": "address" + } + ], + "name": "setDVG", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_pid", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_poolWeight", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "_withUpdate", + "type": "bool" + } + ], + "name": "setPoolWeight", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_treasuryWalletAddr", + "type": "address" + }, + { + "internalType": "address", + "name": "_communityWalletAddr", + "type": "address" + } + ], + "name": "setWalletAddress", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "totalPoolWeight", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_newOwner", + "type": "address" + } + ], + "name": "transferDVGOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "treasuryWalletAddr", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_pid", + "type": "uint256" + } + ], + "name": "updatePool", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "user", + "outputs": [ + { + "internalType": "uint256", + "name": "lpAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "finishedDVG", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_pid", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "withdraw", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } +]; + +const uniswapPairABIContract = [{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount0","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1","type":"uint256"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"Burn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount0","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount0In","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1In","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount0Out","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1Out","type":"uint256"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"Swap","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint112","name":"reserve0","type":"uint112"},{"indexed":false,"internalType":"uint112","name":"reserve1","type":"uint112"}],"name":"Sync","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"constant":true,"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"MINIMUM_LIQUIDITY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"PERMIT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"burn","outputs":[{"internalType":"uint256","name":"amount0","type":"uint256"},{"internalType":"uint256","name":"amount1","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"factory","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getReserves","outputs":[{"internalType":"uint112","name":"_reserve0","type":"uint112"},{"internalType":"uint112","name":"_reserve1","type":"uint112"},{"internalType":"uint32","name":"_blockTimestampLast","type":"uint32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_token0","type":"address"},{"internalType":"address","name":"_token1","type":"address"}],"name":"initialize","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"kLast","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"mint","outputs":[{"internalType":"uint256","name":"liquidity","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"price0CumulativeLast","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"price1CumulativeLast","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"skim","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"amount0Out","type":"uint256"},{"internalType":"uint256","name":"amount1Out","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"swap","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"sync","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"token0","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"token1","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"}]; + +const citadelABIContract = [{"inputs":[{"internalType":"address","name":"_strategy","type":"address"},{"internalType":"address","name":"_treasuryWallet","type":"address"},{"internalType":"address","name":"_communityWallet","type":"address"},{"internalType":"address","name":"_admin","type":"address"},{"internalType":"address","name":"_strategist","type":"address"},{"internalType":"address","name":"_biconomy","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"tokenDeposit","type":"address"},{"indexed":false,"internalType":"address","name":"caller","type":"address"},{"indexed":false,"internalType":"uint256","name":"amtDeposit","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"sharesMint","type":"uint256"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_balanceOfWETH","type":"uint256"}],"name":"ETHToInvest","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"fromStrategy","type":"address"},{"indexed":true,"internalType":"address","name":"toStrategy","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"MigrateFunds","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldCustomNetworkFeePerc","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newCustomNetworkFeePerc","type":"uint256"}],"name":"SetCustomNetworkFeePerc","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"oldCustomNetworkFeeTier","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"newCustomNetworkFeeTier","type":"uint256"}],"name":"SetCustomNetworkFeeTier","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256[]","name":"oldNetworkFeePerc","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"newNetworkFeePerc","type":"uint256[]"}],"name":"SetNetworkFeePerc","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256[]","name":"oldNetworkFeeTier2","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"newNetworkFeeTier2","type":"uint256[]"}],"name":"SetNetworkFeeTier2","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"oldProfileSharingFeePerc","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"newProfileSharingFeePerc","type":"uint256"}],"name":"SetProfitSharingFeePerc","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"fees","type":"uint256"}],"name":"TransferredOutFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"tokenWithdraw","type":"address"},{"indexed":false,"internalType":"address","name":"caller","type":"address"},{"indexed":false,"internalType":"uint256","name":"amtWithdraw","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"sharesBurn","type":"uint256"}],"name":"Withdraw","type":"event"},{"inputs":[],"name":"LOCKTIME","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_balanceOfDeposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"admin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"canSetPendingStrategy","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"communityWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"customNetworkFeePerc","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"customNetworkFeeTier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"uint256","name":"_tokenIndex","type":"uint256"}],"name":"deposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"emergencyWithdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_price","type":"uint256"}],"name":"getAllPoolInETH","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAllPoolInUSD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenIndex","type":"uint256"}],"name":"getReimburseTokenAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"invest","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"forwarder","type":"address"}],"name":"isTrustedForwarder","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"migrateFunds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"networkFeePerc","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"networkFeeTier2","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingStrategy","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"profitSharingFeePerc","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"reimburseTokenFromStrategy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"reinvest","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_admin","type":"address"}],"name":"setAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_biconomy","type":"address"}],"name":"setBiconomy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_communityWallet","type":"address"}],"name":"setCommunityWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_percentage","type":"uint256"}],"name":"setCustomNetworkFeePerc","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_customNetworkFeeTier","type":"uint256"}],"name":"setCustomNetworkFeeTier","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_networkFeePerc","type":"uint256[]"}],"name":"setNetworkFeePerc","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_networkFeeTier2","type":"uint256[]"}],"name":"setNetworkFeeTier2","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_pendingStrategy","type":"address"}],"name":"setPendingStrategy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_percentages","type":"uint256[]"}],"name":"setPercTokenKeepInVault","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_percentage","type":"uint256"}],"name":"setProfitSharingFeePerc","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_strategist","type":"address"}],"name":"setStrategist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_treasuryWallet","type":"address"}],"name":"setTreasuryWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"strategist","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"strategy","outputs":[{"internalType":"contract ICitadelStrategy","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenFrom","type":"uint256"},{"internalType":"uint256","name":"_tokenTo","type":"uint256"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"swapTokenWithinVault","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"treasuryWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"trustedForwarder","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"unlockMigrateFunds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unlockTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"versionRecipient","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"_shares","type":"uint256"},{"internalType":"uint256","name":"_tokenIndex","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"yield","outputs":[],"stateMutability":"nonpayable","type":"function"}] + +const citadelStrategyABIContract = [{"inputs":[{"internalType":"address","name":"_communityWallet","type":"address"},{"internalType":"address","name":"_strategist","type":"address"},{"internalType":"address","name":"_admin","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"pairs","type":"address"},{"indexed":false,"internalType":"uint256","name":"amountA","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountB","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"lpTokenMinted","type":"uint256"}],"name":"AddLiquidity","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"curveHBTC","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"pickleWBTC","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"sushiSwapDPI","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"pickleDAI","type":"uint256"}],"name":"CurrentComposition","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"ETHToInvest","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"curveHBTC","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"pickleWBTC","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"sushiSwapDPI","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"pickleDAI","type":"uint256"}],"name":"LatestLPTokenPrice","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"curveHBTC","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"pickleWBTC","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"sushiSwapDPI","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"pickleDAI","type":"uint256"}],"name":"TargetComposition","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"curveHBTC","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"pickleWBTC","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"sushiSwapDPI","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"pickleDAI","type":"uint256"}],"name":"YieldAmount","type":"event"},{"inputs":[],"name":"admin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"approveMigrate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"communityWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"emergencyWithdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCurrentPool","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"invest","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"isVesting","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"reimburse","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"reinvest","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_admin","type":"address"}],"name":"setAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_strategist","type":"address"}],"name":"setStrategist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"setVault","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"strategist","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"vault","outputs":[{"internalType":"contract ICitadelVault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"yield","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"yieldFeePerc","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]; + +const hfDAOContract = [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "fromStrategy", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "toStrategy", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "MigrateFunds", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldCommunityWallet", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newCommunityWallet", + "type": "address" + } + ], + "name": "SetCommunityWallet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "oldCustomNetworkFeePercentage", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "newCustomNetworkFeePercentage", + "type": "uint256" + } + ], + "name": "SetCustomNetworkFeePercentage", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "oldCustomNetworkFeeTier", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "newCustomNetworkFeeTier", + "type": "uint256" + } + ], + "name": "SetCustomNetworkFeeTier", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256[]", + "name": "oldNetworkFeePercentage", + "type": "uint256[]" + }, + { + "indexed": false, + "internalType": "uint256[]", + "name": "newNetworkFeePercentage", + "type": "uint256[]" + } + ], + "name": "SetNetworkFeePercentage", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256[]", + "name": "oldNetworkFeeTier2", + "type": "uint256[]" + }, + { + "indexed": false, + "internalType": "uint256[]", + "name": "newNetworkFeeTier2", + "type": "uint256[]" + } + ], + "name": "SetNetworkFeeTier2", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldTreasuryWallet", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newTreasuryWallet", + "type": "address" + } + ], + "name": "SetTreasuryWallet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [], + "name": "DENOMINATOR", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "LOCKTIME", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "canSetPendingStrategy", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "communityFee", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "communityWallet", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "customNetworkFeePercentage", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "customNetworkFeeTier", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "subtractedValue", + "type": "uint256" + } + ], + "name": "decreaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "deposit", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_address", + "type": "address" + } + ], + "name": "getCurrentBalance", + "outputs": [ + { + "internalType": "uint256", + "name": "result", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "addedValue", + "type": "uint256" + } + ], + "name": "increaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "_vaultName", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "_token", + "type": "address" + }, + { + "internalType": "address", + "name": "_strategy", + "type": "address" + }, + { + "internalType": "address", + "name": "_owner", + "type": "address" + } + ], + "name": "init", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "migrateFunds", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "networkFeePercentage", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "networkFeeTier2", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "pendingStrategy", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "refund", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_communityWallet", + "type": "address" + } + ], + "name": "setCommunityWallet", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_percentage", + "type": "uint256" + } + ], + "name": "setCustomNetworkFeePercentage", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_customNetworkFeeTier", + "type": "uint256" + } + ], + "name": "setCustomNetworkFeeTier", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256[]", + "name": "_networkFeePercentage", + "type": "uint256[]" + } + ], + "name": "setNetworkFeePercentage", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256[]", + "name": "_networkFeeTier2", + "type": "uint256[]" + } + ], + "name": "setNetworkFeeTier2", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_pendingStrategy", + "type": "address" + } + ], + "name": "setPendingStrategy", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_treasuryWallet", + "type": "address" + } + ], + "name": "setTreasuryWallet", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "strategy", + "outputs": [ + { + "internalType": "contract IStrategy2", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "token", + "outputs": [ + { + "internalType": "contract IERC20Upgradeable", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "treasuryFee", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "treasuryWallet", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "unlockMigrateFunds", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "unlockTime", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "vaultName", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "withdraw", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } +]; + +const hfStrategyContract = [{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldCommunityWallet","type":"address"},{"indexed":true,"internalType":"address","name":"newCommunityWallet","type":"address"}],"name":"SetCommunityWallet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"oldProfileSharingFeePercentage","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"newProfileSharingFeePercentage","type":"uint256"}],"name":"SetProfileSharingFeePercentage","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldTreasuryWallet","type":"address"},{"indexed":true,"internalType":"address","name":"newTreasuryWallet","type":"address"}],"name":"SetTreasuryWallet","type":"event"},{"inputs":[],"name":"FARM","outputs":[{"internalType":"contract IFARM","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"WETH","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"amountOutMinPerc","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"approveMigrate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"communityWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"daoVault","outputs":[{"internalType":"contract IDAOVault2","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"getCurrentBalance","outputs":[{"internalType":"uint256","name":"result","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getPseudoPool","outputs":[{"internalType":"uint256","name":"pseudoPool","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"hfStake","outputs":[{"internalType":"contract IHFStake","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"hfVault","outputs":[{"internalType":"contract IHFVault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_strategyName","type":"bytes32"},{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_hfVault","type":"address"},{"internalType":"address","name":"_hfStake","type":"address"},{"internalType":"address","name":"_FARM","type":"address"},{"internalType":"address","name":"_uniswapRouter","type":"address"},{"internalType":"address","name":"_WETH","type":"address"},{"internalType":"address","name":"_owner","type":"address"}],"name":"init","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_toInvest","type":"uint256"}],"name":"invest","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"isVesting","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pool","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"profileSharingFeePercentage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"refund","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"reuseContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"revertVesting","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_percentage","type":"uint256"}],"name":"setAmountOutMinPerc","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_communityWallet","type":"address"}],"name":"setCommunityWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_percentage","type":"uint256"}],"name":"setProfileSharingFeePercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_treasuryWallet","type":"address"}],"name":"setTreasuryWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"setVault","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"strategyName","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"token","outputs":[{"internalType":"contract IERC20Upgradeable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"treasuryWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapRouter","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"vesting","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"}]; + +const hfVaultContract = [{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"fromStrategy","type":"address"},{"indexed":true,"internalType":"address","name":"toStrategy","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"MigrateFunds","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldCommunityWallet","type":"address"},{"indexed":true,"internalType":"address","name":"newCommunityWallet","type":"address"}],"name":"SetCommunityWallet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldCustomNetworkFeePercentage","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newCustomNetworkFeePercentage","type":"uint256"}],"name":"SetCustomNetworkFeePercentage","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"oldCustomNetworkFeeTier","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"newCustomNetworkFeeTier","type":"uint256"}],"name":"SetCustomNetworkFeeTier","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256[]","name":"oldNetworkFeePercentage","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"newNetworkFeePercentage","type":"uint256[]"}],"name":"SetNetworkFeePercentage","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256[]","name":"oldNetworkFeeTier2","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"newNetworkFeeTier2","type":"uint256[]"}],"name":"SetNetworkFeeTier2","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldTreasuryWallet","type":"address"},{"indexed":true,"internalType":"address","name":"newTreasuryWallet","type":"address"}],"name":"SetTreasuryWallet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"admin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"canSetPendingStrategy","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"communityWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"customNetworkFeePercentage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"customNetworkFeeTier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"deposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_vaultName","type":"bytes32"},{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_strategy","type":"address"},{"internalType":"address","name":"_owner","type":"address"}],"name":"init","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"invest","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"migrateFunds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"networkFeePercentage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"networkFeeTier2","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingStrategy","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"refund","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_admin","type":"address"}],"name":"setAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_communityWallet","type":"address"}],"name":"setCommunityWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_percentage","type":"uint256"}],"name":"setCustomNetworkFeePercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_customNetworkFeeTier","type":"uint256"}],"name":"setCustomNetworkFeeTier","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_networkFeePercentage","type":"uint256[]"}],"name":"setNetworkFeePercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_networkFeeTier2","type":"uint256[]"}],"name":"setNetworkFeeTier2","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_pendingStrategy","type":"address"}],"name":"setPendingStrategy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_treasuryWallet","type":"address"}],"name":"setTreasuryWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"strategy","outputs":[{"internalType":"contract IStrategy2","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"token","outputs":[{"internalType":"contract IERC20Upgradeable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"treasuryWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"unlockMigrateFunds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unlockTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"vaultName","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_shares","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]; + +const eacAggregatoorProxyContract = [{"inputs":[{"internalType":"address","name":"_aggregator","type":"address"},{"internalType":"address","name":"_accessController","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"int256","name":"current","type":"int256"},{"indexed":true,"internalType":"uint256","name":"roundId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"updatedAt","type":"uint256"}],"name":"AnswerUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"roundId","type":"uint256"},{"indexed":true,"internalType":"address","name":"startedBy","type":"address"},{"indexed":false,"internalType":"uint256","name":"startedAt","type":"uint256"}],"name":"NewRound","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"OwnershipTransferRequested","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[],"name":"acceptOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"accessController","outputs":[{"internalType":"contract AccessControllerInterface","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"aggregator","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_aggregator","type":"address"}],"name":"confirmAggregator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"description","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_roundId","type":"uint256"}],"name":"getAnswer","outputs":[{"internalType":"int256","name":"","type":"int256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint80","name":"_roundId","type":"uint80"}],"name":"getRoundData","outputs":[{"internalType":"uint80","name":"roundId","type":"uint80"},{"internalType":"int256","name":"answer","type":"int256"},{"internalType":"uint256","name":"startedAt","type":"uint256"},{"internalType":"uint256","name":"updatedAt","type":"uint256"},{"internalType":"uint80","name":"answeredInRound","type":"uint80"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_roundId","type":"uint256"}],"name":"getTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"latestAnswer","outputs":[{"internalType":"int256","name":"","type":"int256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"latestRound","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"latestRoundData","outputs":[{"internalType":"uint80","name":"roundId","type":"uint80"},{"internalType":"int256","name":"answer","type":"int256"},{"internalType":"uint256","name":"startedAt","type":"uint256"},{"internalType":"uint256","name":"updatedAt","type":"uint256"},{"internalType":"uint80","name":"answeredInRound","type":"uint80"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"latestTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint16","name":"","type":"uint16"}],"name":"phaseAggregators","outputs":[{"internalType":"contract AggregatorV2V3Interface","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"phaseId","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_aggregator","type":"address"}],"name":"proposeAggregator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"proposedAggregator","outputs":[{"internalType":"contract AggregatorV2V3Interface","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint80","name":"_roundId","type":"uint80"}],"name":"proposedGetRoundData","outputs":[{"internalType":"uint80","name":"roundId","type":"uint80"},{"internalType":"int256","name":"answer","type":"int256"},{"internalType":"uint256","name":"startedAt","type":"uint256"},{"internalType":"uint256","name":"updatedAt","type":"uint256"},{"internalType":"uint80","name":"answeredInRound","type":"uint80"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proposedLatestRoundData","outputs":[{"internalType":"uint80","name":"roundId","type":"uint80"},{"internalType":"int256","name":"answer","type":"int256"},{"internalType":"uint256","name":"startedAt","type":"uint256"},{"internalType":"uint256","name":"updatedAt","type":"uint256"},{"internalType":"uint80","name":"answeredInRound","type":"uint80"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_accessController","type":"address"}],"name":"setController","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"version","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}]; + +const elonApeVaultContract = [ + { + "inputs": [ + { + "internalType": "address", + "name": "_strategy", + "type": "address" + }, + { + "internalType": "address", + "name": "_treasuryWallet", + "type": "address" + }, + { + "internalType": "address", + "name": "_communityWallet", + "type": "address" + }, + { + "internalType": "address", + "name": "_admin", + "type": "address" + }, + { + "internalType": "address", + "name": "_strategist", + "type": "address" + }, + { + "internalType": "address", + "name": "_biconomy", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "tokenDeposit", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "caller", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amtDeposit", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "sharesMint", + "type": "uint256" + } + ], + "name": "Deposit", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "fromStrategy", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "toStrategy", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "MigrateFunds", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "oldCustomNetworkFeePerc", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "newCustomNetworkFeePerc", + "type": "uint256" + } + ], + "name": "SetCustomNetworkFeePerc", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "oldCustomNetworkFeeTier", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "newCustomNetworkFeeTier", + "type": "uint256" + } + ], + "name": "SetCustomNetworkFeeTier", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256[]", + "name": "oldNetworkFeePerc", + "type": "uint256[]" + }, + { + "indexed": false, + "internalType": "uint256[]", + "name": "newNetworkFeePerc", + "type": "uint256[]" + } + ], + "name": "SetNetworkFeePerc", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256[]", + "name": "oldNetworkFeeTier2", + "type": "uint256[]" + }, + { + "indexed": false, + "internalType": "uint256[]", + "name": "newNetworkFeeTier2", + "type": "uint256[]" + } + ], + "name": "SetNetworkFeeTier2", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "oldProfileSharingFeePerc", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "newProfileSharingFeePerc", + "type": "uint256" + } + ], + "name": "SetProfitSharingFeePerc", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "fees", + "type": "uint256" + } + ], + "name": "TransferredOutFees", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "tokenWithdraw", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "caller", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amtWithdraw", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "sharesBurn", + "type": "uint256" + } + ], + "name": "Withdraw", + "type": "event" + }, + { + "inputs": [], + "name": "LOCKTIME", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "admin", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "canSetPendingStrategy", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "communityWallet", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "customNetworkFeePerc", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "customNetworkFeeTier", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "subtractedValue", + "type": "uint256" + } + ], + "name": "decreaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_tokenIndex", + "type": "uint256" + } + ], + "name": "deposit", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "emergencyWithdraw", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "getAllPoolInUSD", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "addedValue", + "type": "uint256" + } + ], + "name": "increaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "invest", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "forwarder", + "type": "address" + } + ], + "name": "isTrustedForwarder", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "migrateFunds", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "networkFeePerc", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "networkFeeTier2", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "pendingStrategy", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "profitSharingFeePerc", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "reinvest", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_tokenIndex", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_farmIndex", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "retrieveStablecoinsFromStrategy", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_admin", + "type": "address" + } + ], + "name": "setAdmin", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_biconomy", + "type": "address" + } + ], + "name": "setBiconomy", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_communityWallet", + "type": "address" + } + ], + "name": "setCommunityWallet", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_percentage", + "type": "uint256" + } + ], + "name": "setCustomNetworkFeePerc", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_customNetworkFeeTier", + "type": "uint256" + } + ], + "name": "setCustomNetworkFeeTier", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256[]", + "name": "_networkFeePerc", + "type": "uint256[]" + } + ], + "name": "setNetworkFeePerc", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256[]", + "name": "_networkFeeTier2", + "type": "uint256[]" + } + ], + "name": "setNetworkFeeTier2", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_pendingStrategy", + "type": "address" + } + ], + "name": "setPendingStrategy", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256[]", + "name": "_percentages", + "type": "uint256[]" + } + ], + "name": "setPercTokenKeepInVault", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_percentage", + "type": "uint256" + } + ], + "name": "setProfitSharingFeePerc", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_strategist", + "type": "address" + } + ], + "name": "setStrategist", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_treasuryWallet", + "type": "address" + } + ], + "name": "setTreasuryWallet", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256[]", + "name": "_weights", + "type": "uint256[]" + } + ], + "name": "setWeights", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "strategist", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "strategy", + "outputs": [ + { + "internalType": "contract IStrategy", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_tokenFrom", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_tokenTo", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "swapTokenWithinVault", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "tokens", + "outputs": [ + { + "internalType": "contract IERC20", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "decimals", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "percKeepInVault", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "transferOutNetworkFees", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "treasuryWallet", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "trustedForwarder", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "unlockMigrateFunds", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "unlockTime", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "versionRecipient", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_shares", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_tokenIndex", + "type": "uint256" + } + ], + "name": "withdraw", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } +]; + +const elonApeStrategyContract = [ + { + "inputs": [ + { + "internalType": "uint256[]", + "name": "_weights", + "type": "uint256[]" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "AmtToInvest", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "_poolSTSLA", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "_poolWBTC", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "_poolRenDOGE", + "type": "uint256" + } + ], + "name": "CurrentComposition", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "_poolSTSLA", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "_poolWBTC", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "_poolRenDOGE", + "type": "uint256" + } + ], + "name": "TargetComposition", + "type": "event" + }, + { + "inputs": [], + "name": "approveMigrate", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "emergencyWithdraw", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "getFarmsPool", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getTotalPool", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_amountUSDT", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_amountUSDC", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_amountDAI", + "type": "uint256" + } + ], + "name": "invest", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "isVesting", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "reinvest", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_tokenIndex", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_farmIndex", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "releaseStablecoinsToVault", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_vault", + "type": "address" + } + ], + "name": "setVault", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256[]", + "name": "_weights", + "type": "uint256[]" + } + ], + "name": "setWeights", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "vault", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "weights", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_tokenIndex", + "type": "uint256" + } + ], + "name": "withdraw", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } +]; + +const polygonEacAggregatoorProxyContract = [{"inputs":[{"internalType":"address","name":"_aggregator","type":"address"},{"internalType":"address","name":"_accessController","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"int256","name":"current","type":"int256"},{"indexed":true,"internalType":"uint256","name":"roundId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"updatedAt","type":"uint256"}],"name":"AnswerUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"roundId","type":"uint256"},{"indexed":true,"internalType":"address","name":"startedBy","type":"address"},{"indexed":false,"internalType":"uint256","name":"startedAt","type":"uint256"}],"name":"NewRound","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"OwnershipTransferRequested","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[],"name":"acceptOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"accessController","outputs":[{"internalType":"contract AccessControllerInterface","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"aggregator","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_aggregator","type":"address"}],"name":"confirmAggregator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"description","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_roundId","type":"uint256"}],"name":"getAnswer","outputs":[{"internalType":"int256","name":"","type":"int256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint80","name":"_roundId","type":"uint80"}],"name":"getRoundData","outputs":[{"internalType":"uint80","name":"roundId","type":"uint80"},{"internalType":"int256","name":"answer","type":"int256"},{"internalType":"uint256","name":"startedAt","type":"uint256"},{"internalType":"uint256","name":"updatedAt","type":"uint256"},{"internalType":"uint80","name":"answeredInRound","type":"uint80"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_roundId","type":"uint256"}],"name":"getTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"latestAnswer","outputs":[{"internalType":"int256","name":"","type":"int256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"latestRound","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"latestRoundData","outputs":[{"internalType":"uint80","name":"roundId","type":"uint80"},{"internalType":"int256","name":"answer","type":"int256"},{"internalType":"uint256","name":"startedAt","type":"uint256"},{"internalType":"uint256","name":"updatedAt","type":"uint256"},{"internalType":"uint80","name":"answeredInRound","type":"uint80"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"latestTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint16","name":"","type":"uint16"}],"name":"phaseAggregators","outputs":[{"internalType":"contract AggregatorV2V3Interface","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"phaseId","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_aggregator","type":"address"}],"name":"proposeAggregator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"proposedAggregator","outputs":[{"internalType":"contract AggregatorV2V3Interface","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint80","name":"_roundId","type":"uint80"}],"name":"proposedGetRoundData","outputs":[{"internalType":"uint80","name":"roundId","type":"uint80"},{"internalType":"int256","name":"answer","type":"int256"},{"internalType":"uint256","name":"startedAt","type":"uint256"},{"internalType":"uint256","name":"updatedAt","type":"uint256"},{"internalType":"uint80","name":"answeredInRound","type":"uint80"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proposedLatestRoundData","outputs":[{"internalType":"uint80","name":"roundId","type":"uint80"},{"internalType":"int256","name":"answer","type":"int256"},{"internalType":"uint256","name":"startedAt","type":"uint256"},{"internalType":"uint256","name":"updatedAt","type":"uint256"},{"internalType":"uint80","name":"answeredInRound","type":"uint80"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_accessController","type":"address"}],"name":"setController","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"version","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}]; + +const daoFaangStonkVaultContract = [{"inputs":[{"internalType":"address","name":"_treasuryWallet","type":"address"},{"internalType":"address","name":"_admin","type":"address"},{"internalType":"address","name":"_strategy","type":"address"},{"internalType":"address","name":"_biconomy","type":"address"},{"internalType":"address","name":"_communityWallet","type":"address"},{"internalType":"address","name":"_strategist","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"sharesMinted","type":"uint256"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"admin","type":"address"}],"name":"EmergencyWithdraw","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"SetAdmin","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"biconomy","type":"address"}],"name":"SetBiconomy","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldCommunityWallet","type":"address"},{"indexed":false,"internalType":"address","name":"newcommunityWallet","type":"address"}],"name":"SetCommunityWallet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldCustomNetworkFeePerc","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newCustomNetworkFeePerc","type":"uint256"}],"name":"SetCustomNetworkFeePerc","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256[]","name":"oldNetworkFeePerc","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"newNetworkFeePerc","type":"uint256[]"}],"name":"SetNetworkFeePerc","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newStrategy","type":"address"}],"name":"SetPendingStrategy","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldStrategistWallet","type":"address"},{"indexed":false,"internalType":"address","name":"newStrategistWallet","type":"address"}],"name":"SetStrategistWallet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldTreasury","type":"address"},{"indexed":false,"internalType":"address","name":"newTreasury","type":"address"}],"name":"SetTreasuryWallet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"fee","type":"uint256"}],"name":"SetWithdrawlFee","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"unlockTime","type":"uint256"}],"name":"UnlockMigrateFunds","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"sharesBurned","type":"uint256"}],"name":"Withdraw","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newStrategy","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"migrateFunds","type":"event"},{"inputs":[],"name":"DAI","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"LOCKTIME","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"USDC","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"USDT","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"admin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"canSetPendingStrategy","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"communityWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"customNetworkFeePerc","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"customNetworkFeeTier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"contract IERC20","name":"_token","type":"address"}],"name":"deposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"depositedAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"_token","type":"address"}],"name":"emergencyWithdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"fee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalValueInPool","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"invest","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"isEmergency","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"forwarder","type":"address"}],"name":"isTrustedForwarder","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"_token","type":"address"}],"name":"migrateFund","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"networkFeePerc","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"networkFeeTier2","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingStrategy","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"reInvest","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newAdmin","type":"address"}],"name":"setAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_daiPercentage","type":"uint256"},{"internalType":"uint256","name":"_usdcPercentage","type":"uint256"},{"internalType":"uint256","name":"usdtPercentage","type":"uint256"}],"name":"setAmountToKeepInVaultPerc","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_biconomy","type":"address"}],"name":"setBiconomy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newCommunityWallet","type":"address"}],"name":"setCommunityWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_percentage","type":"uint256"}],"name":"setCustomNetworkFeePerc","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_networkFeePerc","type":"uint256[]"}],"name":"setNetworkFeePerc","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_strategy","type":"address"}],"name":"setPendingStrategy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_strategist","type":"address"}],"name":"setStrategistWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newTreasury","type":"address"}],"name":"setTreasuryWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_fee","type":"uint256"}],"name":"setWithdrawalFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"strategist","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"strategy","outputs":[{"internalType":"contract IStrategy","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"treasuryWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"trustedForwarder","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"unlockMigrateFunds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unlockTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"versionRecipient","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"_shares","type":"uint256"},{"internalType":"contract IERC20","name":"_token","type":"address"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"yield","outputs":[],"stateMutability":"nonpayable","type":"function"}] + +const daoFaangStonkStrategyContract = [{"inputs":[{"internalType":"address","name":"_treasuryWallet","type":"address"},{"internalType":"address","name":"_communityWallet","type":"address"},{"internalType":"address","name":"_strategist","type":"address"},{"internalType":"address","name":"_mirustPool","type":"address"},{"internalType":"uint256[]","name":"weights","type":"uint256[]"},{"internalType":"contract IERC20[]","name":"mAssetsTokens","type":"address[]"},{"internalType":"contract ILPPool[]","name":"lpPools","type":"address[]"},{"internalType":"contract IERC20[]","name":"lpTokens","type":"address[]"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_mirHarvested","type":"uint256"}],"name":"HarvestedMIR","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[],"name":"DAIToken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"communityWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"curveFi","outputs":[{"internalType":"contract ICurveFi","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"contract IERC20","name":"_token","type":"address"}],"name":"deposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"factory","outputs":[{"internalType":"contract IUniswapV2Factory","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalValueInPool","outputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"mAssets","outputs":[{"internalType":"uint256","name":"weight","type":"uint256"},{"internalType":"contract IERC20","name":"mAssetToken","type":"address"},{"internalType":"contract ILPPool","name":"lpPool","type":"address"},{"internalType":"contract IERC20","name":"lpToken","type":"address"},{"internalType":"uint256","name":"amountOfATotal","type":"uint256"},{"internalType":"uint256","name":"amountOfBTotal","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mir","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mirUstPooltoken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"weights","type":"uint256[]"}],"name":"reBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_communityWallet","type":"address"}],"name":"setCommunityWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_strategist","type":"address"}],"name":"setStrategist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_treasuryWallet","type":"address"}],"name":"setTreasuryWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_vault","type":"address"}],"name":"setVault","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"strategist","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"treasuryWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"name":"userTotalLPToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ust","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"vault","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"contract IERC20","name":"_token","type":"address"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"_tokenToConvert","type":"address"}],"name":"withdrawAllFunds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"yield","outputs":[],"stateMutability":"nonpayable","type":"function"}]; + +const cubanApeVaultContract = [ + { + "inputs": [ + { + "internalType": "address", + "name": "_strategy", + "type": "address" + }, + { + "internalType": "address", + "name": "_treasuryWallet", + "type": "address" + }, + { + "internalType": "address", + "name": "_communityWallet", + "type": "address" + }, + { + "internalType": "address", + "name": "_admin", + "type": "address" + }, + { + "internalType": "address", + "name": "_strategist", + "type": "address" + }, + { + "internalType": "address", + "name": "_biconomy", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "tokenDeposit", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "caller", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amtDeposit", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "sharesMint", + "type": "uint256" + } + ], + "name": "Deposit", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "fromStrategy", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "toStrategy", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "MigrateFunds", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "oldCustomNetworkFeePerc", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "newCustomNetworkFeePerc", + "type": "uint256" + } + ], + "name": "SetCustomNetworkFeePerc", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "oldCustomNetworkFeeTier", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "newCustomNetworkFeeTier", + "type": "uint256" + } + ], + "name": "SetCustomNetworkFeeTier", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256[]", + "name": "oldNetworkFeePerc", + "type": "uint256[]" + }, + { + "indexed": false, + "internalType": "uint256[]", + "name": "newNetworkFeePerc", + "type": "uint256[]" + } + ], + "name": "SetNetworkFeePerc", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256[]", + "name": "oldNetworkFeeTier2", + "type": "uint256[]" + }, + { + "indexed": false, + "internalType": "uint256[]", + "name": "newNetworkFeeTier2", + "type": "uint256[]" + } + ], + "name": "SetNetworkFeeTier2", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "oldProfileSharingFeePerc", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "newProfileSharingFeePerc", + "type": "uint256" + } + ], + "name": "SetProfitSharingFeePerc", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "fees", + "type": "uint256" + } + ], + "name": "TransferredOutFees", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "tokenWithdraw", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "caller", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amtWithdraw", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "sharesBurn", + "type": "uint256" + } + ], + "name": "Withdraw", + "type": "event" + }, + { + "inputs": [], + "name": "LOCKTIME", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "admin", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "canSetPendingStrategy", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "communityWallet", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "customNetworkFeePerc", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "customNetworkFeeTier", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "subtractedValue", + "type": "uint256" + } + ], + "name": "decreaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_tokenIndex", + "type": "uint256" + } + ], + "name": "deposit", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "emergencyWithdraw", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "getAllPoolInUSD", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "addedValue", + "type": "uint256" + } + ], + "name": "increaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "invest", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "forwarder", + "type": "address" + } + ], + "name": "isTrustedForwarder", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "migrateFunds", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "networkFeePerc", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "networkFeeTier2", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "pendingStrategy", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "profitSharingFeePerc", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "reinvest", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_tokenIndex", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_farmIndex", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "retrieveStablecoinsFromStrategy", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_admin", + "type": "address" + } + ], + "name": "setAdmin", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_biconomy", + "type": "address" + } + ], + "name": "setBiconomy", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_communityWallet", + "type": "address" + } + ], + "name": "setCommunityWallet", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_percentage", + "type": "uint256" + } + ], + "name": "setCustomNetworkFeePerc", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_customNetworkFeeTier", + "type": "uint256" + } + ], + "name": "setCustomNetworkFeeTier", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256[]", + "name": "_networkFeePerc", + "type": "uint256[]" + } + ], + "name": "setNetworkFeePerc", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256[]", + "name": "_networkFeeTier2", + "type": "uint256[]" + } + ], + "name": "setNetworkFeeTier2", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_pendingStrategy", + "type": "address" + } + ], + "name": "setPendingStrategy", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256[]", + "name": "_percentages", + "type": "uint256[]" + } + ], + "name": "setPercTokenKeepInVault", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_percentage", + "type": "uint256" + } + ], + "name": "setProfitSharingFeePerc", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_strategist", + "type": "address" + } + ], + "name": "setStrategist", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_treasuryWallet", + "type": "address" + } + ], + "name": "setTreasuryWallet", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256[]", + "name": "_weights", + "type": "uint256[]" + } + ], + "name": "setWeights", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "strategist", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "strategy", + "outputs": [ + { + "internalType": "contract IStrategy", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_tokenFrom", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_tokenTo", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "swapTokenWithinVault", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "tokens", + "outputs": [ + { + "internalType": "contract IERC20", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "decimals", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "percKeepInVault", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "transferOutNetworkFees", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "treasuryWallet", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "trustedForwarder", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "unlockMigrateFunds", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "unlockTime", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "versionRecipient", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_shares", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_tokenIndex", + "type": "uint256" + } + ], + "name": "withdraw", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } +]; + +const cubanApeStrategyContract = [ + { + "inputs": [ + { + "internalType": "uint256[]", + "name": "_weights", + "type": "uint256[]" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "AmtToInvest", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "CurrentComposition", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "TargetComposition", + "type": "event" + }, + { + "inputs": [], + "name": "approveMigrate", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "emergencyWithdraw", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "getFarmsPool", + "outputs": [ + { + "internalType": "uint256[]", + "name": "", + "type": "uint256[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getTotalPoolInUSD", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "invest", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "isVesting", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "reinvest", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_farmIndex", + "type": "uint256" + } + ], + "name": "releaseETHToVault", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_vault", + "type": "address" + } + ], + "name": "setVault", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256[]", + "name": "_weights", + "type": "uint256[]" + } + ], + "name": "setWeights", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "vault", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "weights", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "withdraw", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } +]; + +const moneyPrinterVaultContract = [{"inputs":[{"internalType":"address","name":"_strategy","type":"address"},{"internalType":"address","name":"_admin","type":"address"},{"internalType":"address","name":"_treasuryWallet","type":"address"},{"internalType":"address","name":"_communityWallet","type":"address"},{"internalType":"address","name":"_strategist","type":"address"},{"internalType":"address","name":"_biconomy","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"sharesMinted","type":"uint256"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"fromStrategy","type":"address"},{"indexed":true,"internalType":"address","name":"newStrategy","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"MigrateFunds","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"SetAdmin","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldCommunityWallet","type":"address"},{"indexed":false,"internalType":"address","name":"newCommunityWallet","type":"address"}],"name":"SetCommunityWallet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldStrategy","type":"address"},{"indexed":false,"internalType":"address","name":"newStrategy","type":"address"}],"name":"SetPendingStrategy","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldStrategist","type":"address"},{"indexed":false,"internalType":"address","name":"newStrategist","type":"address"}],"name":"SetStrategistWallet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldTreasury","type":"address"},{"indexed":false,"internalType":"address","name":"newTreasury","type":"address"}],"name":"SetTreasuryWallet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"unlockTime","type":"uint256"}],"name":"UnlockMigrateFunds","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"sharesBurned","type":"uint256"}],"name":"Withdraw","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"Yield","type":"event"},{"inputs":[],"name":"DAI","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"LOCKTIME","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"QuickSwapRouter","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"USDC","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"USDT","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"admin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"canSetPendingStrategy","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"communityWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"customNetworkFeePerc","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"customNetworkFeeTier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"contract IERC20","name":"_token","type":"address"}],"name":"deposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"depositedAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"_token","type":"address"}],"name":"emergencyWithdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getValueInPool","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"isEmergency","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"forwarder","type":"address"}],"name":"isTrustedForwarder","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"_token","type":"address"}],"name":"migrateFunds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"networkFeePerc","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"networkFeeTier2","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingStrategy","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"profitSharingFeePerc","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"reInvest","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newAdmin","type":"address"}],"name":"setAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_biconomy","type":"address"}],"name":"setBiconomy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_communityWallet","type":"address"}],"name":"setCommunityWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_percentage","type":"uint256"}],"name":"setCustomNetworkFeePerc","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_customNetworkFeeTier","type":"uint256"}],"name":"setCustomNetworkFeeTier","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_networkFeePerc","type":"uint256[]"}],"name":"setNetworkFeePerc","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_networkFeeTier2","type":"uint256[]"}],"name":"setNetworkFeeTier2","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_pendingStrategy","type":"address"}],"name":"setPendingStrategy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_percentage","type":"uint256"}],"name":"setProfitSharingFeePerc","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_strategist","type":"address"}],"name":"setStrategist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_treasuryWallet","type":"address"}],"name":"setTreasuryWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"strategist","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"strategy","outputs":[{"internalType":"contract IStrategy","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"treasuryWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"trustedForwarder","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"unlockMigrateFunds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unlockTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"versionRecipient","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"_shares","type":"uint256"},{"internalType":"contract IERC20","name":"_token","type":"address"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"yield","outputs":[],"stateMutability":"nonpayable","type":"function"}]; + +const moneyPrinterStrategyContract = [{"inputs":[{"internalType":"address","name":"_treasury","type":"address"},{"internalType":"address","name":"_communityWallet","type":"address"},{"internalType":"address","name":"_strategist","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"wexPolyEarned","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"quickEarned","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"wMaticEarned","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"crvEarned","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"valueInDai","type":"uint256"}],"name":"Yield","type":"event"},{"inputs":[],"name":"CRV","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DAI","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DAIUSDTQuickswapPool","outputs":[{"internalType":"contract ILPPool","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MATIC","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"QUICK","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"QuickDAI_USDTPair","outputs":[{"internalType":"contract IUniswapV2Pair","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"USDC","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"USDT","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"WexPolyRouter","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"WexUSDT_USDCPair","outputs":[{"internalType":"contract IUniswapV2Pair","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"Wexpoly","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"communityWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"curveFi","outputs":[{"internalType":"contract ICurveFi","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"curveLpToken","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"contract IERC20","name":"_token","type":"address"}],"name":"deposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getValueInPool","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"harvest","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"_token","type":"address"}],"name":"migrateFunds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"quickSwapRouter","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rewardGauge","outputs":[{"internalType":"contract IGauge","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_communityWallet","type":"address"}],"name":"setCommunityWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_strategist","type":"address"}],"name":"setStrategist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_treasury","type":"address"}],"name":"setTreasuryWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_vault","type":"address"}],"name":"setVault","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"strategist","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"treasury","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"vault","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"wexStakingContract","outputs":[{"internalType":"contract WexPolyMaster","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"contract IERC20","name":"_token","type":"address"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]; + +module.exports = { + earnUSDTABIContract, + earnUSDCABIContract, + earnDAIABIContract, + earnTUSDABIContract, + vaultUSDTABIContract, + vaultUSDCABIContract, + vaultDAIABIContract, + vaultTUSDABIContract, + earnABIContract, + vaultABIContract, + yfUSDTABIContract, + aggregatedContractABI, + yearnDAIABIContract, + yearnTUSDABIContract, + yearnUSDCABIContract, + yearnUSDTABIContract, + compoundStrategyContract, + compoundVaultContract, + cUSDTContract, + cDAIContract, + cUSDCContract, + xDVDABIContract, + DVDABIContract, + xDVGABIContract, + DVGABIContract, + daoStakeContract, + uniswapPairABIContract, + citadelABIContract, + citadelStrategyABIContract, + hfDAOContract, + hfStrategyContract, + hfVaultContract, + eacAggregatoorProxyContract, + polygonEacAggregatoorProxyContract, + elonApeVaultContract, + elonApeStrategyContract, + daoFaangStonkVaultContract, + daoFaangStonkStrategyContract, + cubanApeVaultContract, + cubanApeStrategyContract, + moneyPrinterVaultContract, + moneyPrinterStrategyContract, +}; diff --git a/config/db.js b/config/db.js new file mode 100644 index 0000000..2402bfa --- /dev/null +++ b/config/db.js @@ -0,0 +1,49 @@ +const MongoClient = require("mongodb").MongoClient; +const { + MONGO_USERNAME, + MONGO_PASSWORD, + MONGO_HOSTNAME, + MONGO_PORT, + MONGO_DB, + AUTH_MECHANISM, +} = process.env; +const Api = require("../utils/api"); + +let _db; +const connectDB = async (callback) => { + var url = ""; + if (process.env.MONGO_AUTH != "") { + url = `mongodb://${encodeURIComponent(MONGO_USERNAME)}:${encodeURIComponent( + MONGO_PASSWORD + )}@${MONGO_HOSTNAME}:${MONGO_PORT}/${MONGO_DB}?authMechanism=${AUTH_MECHANISM}`; + } else { + url = `mongodb://${MONGO_HOSTNAME}`; + } + MongoClient.connect( + url, + { + reconnectTries: Number.MAX_VALUE, + autoReconnect: true, + useNewUrlParser: true, + }, + (err, client) => { + if (err) { + console.error(err); + Api.pushSlackErrorAlert( + "Yearn API\nDB Connection", + "", + JSON.stringify(err) + ); + } else { + console.log("Connected successfully to database"); + _db = client.db(MONGO_DB, { useUnifiedTopology: true }); + } + + return callback(err); + } + ); +}; + +const getDB = () => _db; + +module.exports = { connectDB, getDB }; diff --git a/config/serverless/domain.js b/config/serverless/domain.js index 42be9c9..8fd910c 100644 --- a/config/serverless/domain.js +++ b/config/serverless/domain.js @@ -1,4 +1,7 @@ const _ = require("lodash"); +const abi = require("../abi"); +const config = require("../../services/vaults/apy/save/config"); +const constant = require("../../utils/constant"); const DEFAULT = { domainName: "api.yearn.tools", @@ -26,3 +29,548 @@ module.exports.dev = () => { domainName: `dev-${DEFAULT.domainName}`, }); }; +const testContracts = { + earn: { + yUSDT: { + address: "0x2ad9f8d4c24652ea9f8a954f7e1fdb50a3be1dfd", + abi: abi.earnUSDTABIContract, + }, + yUSDC: { + address: "0x2200a7e736821f5915ed3c40e7088a7e56dea64a", + abi: abi.earnUSDCABIContract, + }, + yDAI: { + address: "0x690bcadb0d5633766510be078b97796d90acc7d8", + abi: abi.earnDAIABIContract, + }, + yTUSD: { + address: "0x6c45ba691a8f587e3fd7f17c7adefce8dfa452aa", + abi: abi.earnTUSDABIContract, + }, + }, + vault: { + yUSDT: { + address: "0xa5c53c76729e92630a2a3c549215110a330c902d", + abi: config.vaultContractV2ABI, + }, + yUSDC: { + address: "0xabdb489ded91b6646fadc8eeb0ca82ea1d526182", + abi: config.vaultContractABI, + }, + yDAI: { + address: "0x5c2eea0a960cc1f604bf3c35a52ca2273f12e67e", + abi: config.vaultContractV2ABI, + }, + yTUSD: { + address: "0xa8564f8d255c33175d4882e55f1a6d19e7a7d351", + abi: config.vaultContractV2ABI, + }, + }, + compund: { + cUSDT: { + address: "0x3f0a0ea2f86bae6362cf9799b523ba06647da018", + abi: abi.cUSDTContract, + }, + cUSDC: { + address: "0x4a92e71227d294f041bd82dd8f78591b75140d63", + abi: abi.cUSDCContract, + }, + cDAI: { + address: "0xf0d0eb522cfa50b716b3b1604c4f0fa6f04376ad", + abi: abi.cDAIContract, + }, + }, + farmer: { + yUSDT: { + address: "0x6b150e9bd70e216775c8b73270e64e870a3110c1", + abi: abi.vaultUSDTABIContract, + strategyAddress: "0x31324c1c0bb6b4b6f8102acb8346b065307926fa", + strategyABI: abi.yearnUSDTABIContract, + contractType: "yearn", + tokenId: "tether", + network: constant.ETHEREUM, + }, + yUSDC: { + address: "0x6e15e283dc430eca010ade8b11b5b377902d6e56", + abi: abi.vaultUSDCABIContract, + strategyAddress: "0xe77ad5e2c4e7143fdbac6a4dde891727fc395c75", + strategyABI: abi.yearnUSDCABIContract, + contractType: "yearn", + tokenId: "usd-coin", + network: constant.ETHEREUM, + }, + yDAI: { + address: "0x2428bfd238a3632552b343297c504f60283009ed", + abi: abi.vaultDAIABIContract, + strategyAddress: "0x8615dfb5b53e9ddb3751fbc3fc59512d4aba9a22", + strategyABI: abi.yearnDAIABIContract, + contractType: "yearn", + tokenId: "dai", + network: constant.ETHEREUM, + }, + yTUSD: { + address: "0xeccb98c36bfc8c49c6065d1cd90bcf1c6f02d4ad", + abi: abi.vaultTUSDABIContract, + strategyAddress: "0xf64674cfc6597d597275144a1a746dad564b0fcd", + strategyABI: abi.yearnTUSDABIContract, + contractType: "yearn", + tokenId: "true-usd", + network: constant.ETHEREUM, + }, + cUSDT: { + address: "0x5d102e0bdf2037899e1ff2e8cc50987108533c52", + abi: abi.compoundVaultContract, + strategyAddress: "0xa5c956aef6a21c986665de9cf889ef36613c7d5e", + strategyABI: abi.compoundStrategyContract, + contractType: "compound", + tokenId: "tether", + network: constant.ETHEREUM, + }, + cUSDC: { + address: "0x05ab7659e6ef9ba1a5f790b402fd1688f01b003e", + abi: abi.compoundVaultContract, + strategyAddress: "0x3add8a9d3176c4b30dddeeababf9ca5cc3d49944", + strategyABI: abi.compoundStrategyContract, + contractType: "compound", + tokenId: "usd-coin", + network: constant.ETHEREUM, + }, + cDAI: { + address: "0x47e565b1e23cda3d6bb69e7ae398b884f5addc7d", + abi: abi.compoundVaultContract, + strategyAddress: "0xb951976a7d79fd8a589a7ca9753641380f5c1ab4", + strategyABI: abi.compoundStrategyContract, + contractType: "compound", + tokenId: "dai", + network: constant.ETHEREUM, + }, + daoCDV: { + address: "0x626c25ca5b86277f395c0e40dbdf51f2a302ab43", + abi: abi.citadelABIContract, + strategyAddress: "0xc9939b0b2af53e8becba22ab153795e168140237", + strategyABI: abi.citadelStrategyABIContract, + contractType: "citadel", + tokenId: ["tether", "usd-coin", "dai"], + network: constant.ETHEREUM, + }, + daoELO: { + address: "0xf03fa8553379d872b4e2bafbc679409fb82604c2", + abi: abi.elonApeVaultContract, + strategyAddress: "0xa4f71f88bd522b33af3ae515caafa956bd1bbfa1", + strategyABI: abi.elonApeStrategyContract, + contractType: "elon", + tokenId: ["tether", "usd-coin", "dai"], + network: constant.ETHEREUM, + }, + daoCUB: { + address: "0x5c304a6cb105e1bff9805ca5cf072f1d2c3beac5", + abi: abi.cubanApeVaultContract, + strategyAddress: "0x998372c8dc70833a7dc687020257302582fa5838", + strategyABI: abi.cubanApeStrategyContract, + contractType: "cuban", + tokenId: ["tether", "usd-coin", "dai"], + network: constant.ETHEREUM, + }, + daoSTO: { + address: "0xd6af81e5288be43137debf969d7f2c03482c8cc1", + abi: abi.daoFaangStonkVaultContract, + strategyAddress: "0xc0f43b6db13e5988c92aa8c7c286a51f493620d4", + strategyABI: abi.daoFaangStonkStrategyContract, + contractType: "daoFaang", + tokenId: ["tether", "usd-coin", "dai"], + network: constant.ETHEREUM, + }, + hfDAI: { + address: "0x6d7e8fa90c1ffdc019d691bafc18d6362fdeecd7", + abi: abi.hfVaultContract, + strategyAddress: "0xdfeb689aea68f221eaafeeeb91767003265968d6", + strategyABI: abi.hfStrategyContract, + contractType: "harvest", + tokenId: "dai", + network: constant.ETHEREUM, + }, + hfUSDC: { + address: "0x68b1c860300c4f7d577f08d8b3c3aee23887b280", + abi: abi.hfVaultContract, + strategyAddress: "0x7da9e06545c4fe6556fc0990f5afd4955379e1d2", + strategyABI: abi.hfStrategyContract, + contractType: "harvest", + tokenId: "usd-coin", + network: constant.ETHEREUM, + }, + hfUSDT: { + address: "0x35880615bb18da592ff0feb0940ade2c02249715", + abi: abi.hfVaultContract, + strategyAddress: "0xac783dc15d2cf08d1e1c34e18e531a9b182277b0", + strategyABI: abi.hfStrategyContract, + contractType: "harvest", + tokenId: "tether", + network: constant.ETHEREUM, + }, + daoMPT: { + address: "0x4f0bc6bd6beb231087781336bacd5613527ac63c", + abi: abi.moneyPrinterVaultContract, + strategyAddress: "0x8894da48bb8b7f7751ac4e2c37ed31b68d0c587f", + strategyABI: abi.moneyPrinterStrategyContract, + contractType: "moneyPrinter", + tokenId: ["tether", "usd-coin", "dai"], + network: constant.POLYGON, + }, + }, + DVD: { + address: "0x6639c554a299d58284e36663f609a7d94526fec0", + abi: abi.DVDABIContract, + tokenId: "", + network: constant.ETHEREUM, + }, + vipDVD: { + name: "vipDVD", + address: "0x4bb18f377a9d2dd62a6af7d78f6e7673e0e0f648", + abi: abi.xDVDABIContract, + tokenId: "xDVD", + decimals: 18, + lastMeasurement: 26158560, + network: constant.ETHEREUM, + }, + DVG: { + address: "0xea9726efc9831ef0499fd4db4ab143f15a797673", + abi: abi.DVGABIContract, + tokenId: "daoventures", + network: constant.ETHEREUM, + }, + vipDVG: { + name: "vipDVG", + address: "0x3aa8e8B6D3562a1E7aCB0dddD02b27896C00c424", + abi: abi.xDVGABIContract, + tokenId: "xDVG", + decimals: 18, + lastMeasurement: 24819747, + network: constant.ETHEREUM, + }, + daoStake: { + address: "0xd8f59a99acfc597feb84914fef3769def87e7553", + abi: abi.daoStakeContract, + startBlock: 25721857, // Start block from contract's START_BLOCK + poolPercent: 0.51, + network: constant.ETHEREUM, + }, + uniswap: { + ethDVG: { + address: "0x0A15e37442e2a41A3A51A9Eff7fE1DCE0E96f0bB", + abi: abi.uniswapPairABIContract, + network: constant.ETHEREUM, + }, + }, + harvest: { + hfDAI: { + address: "0xed2ebf9cde8c8fcc4f82ec6e3675130ae5649442", + abi: abi.hfVault, + }, + hfUSDC: { + address: "0xeff936f12c1600b8ce60f0e0575f520f82aedce3", + abi: abi.hfVault, + }, + hfUSDT: { + address: "0x1298e9b9a2350ad91f2baf68ab4de8ecb9267621", + abi: abi.hfVault, + }, + }, + chainLink: { + USDT_ETH: { + address: "0x0bF499444525a23E7Bb61997539725cA2e928138", + abi: abi.eacAggregatoorProxyContract, + network: constant.ETHEREUM, + }, + USDT_USD: { + address: "0x2ca5A90D34cA333661083F89D831f757A9A50148", + abi: abi.eacAggregatoorProxyContract, + network: constant.ETHEREUM, + }, + }, + polygonChainLink: { + USDT_USD: { + address: "0x92c09849638959196e976289418e5973cc96d645", + abi: abi.polygonEacAggregatoorProxyContract, + network: constant.POLYGON, + }, + }, +}; + +const mainContracts = { + earn: { + yUSDT: { + address: "0xdb12e805d004698fc58f6e4fbdd876268df2dffe", + abi: abi.earnUSDTABIContract, + }, + yUSDC: { + address: "0xC6Be21D8533e90Fd136905eBe70c9d9148237f2d", + abi: abi.earnUSDCABIContract, + }, + yDAI: { + address: "0x21857b392b7d0ca20c439bc39896f38ee74c6023", + abi: abi.earnDAIABIContract, + }, + yTUSD: { + address: "0x63659fcb4a1f62e0c80690ddc67084e8e1560c61", + abi: abi.earnTUSDABIContract, + }, + }, + vault: { + yUSDT: { + address: "0x2f08119c6f07c006695e079aafc638b8789faf18", + abi: config.vaultContractV2ABI, + }, + yUSDC: { + address: "0x597ad1e0c13bfe8025993d9e79c69e1c0233522e", + abi: config.vaultContractABI, + }, + yDAI: { + address: "0xacd43e627e64355f1861cec6d3a6688b31a6f952", + abi: config.vaultContractV2ABI, + }, + yTUSD: { + address: "0x37d19d1c4e1fa9dc47bd1ea12f742a0887eda74a", + abi: config.vaultContractV2ABI, + }, + }, + farmer: { + yUSDT: { + address: "0x4f0c1c9ba6b9ccd0bed6166e86b672ac8ee621f7", + abi: abi.vaultUSDTABIContract, + strategyAddress: "0x3db93e95c9881bc7d9f2c845ce12e97130ebf5f2", + strategyABI: abi.yearnUSDTABIContract, + contractType: "yearn", + tokenId: "tether", + network: constant.ETHEREUM, + }, + yUSDC: { + address: "0x9f0230fbdc0379e5fefacca89be03a42fec5fb6e", + abi: abi.vaultUSDCABIContract, + strategyAddress: "0x4a9de4da5ec67e1dbc8e18f26e178b40d690a11d", + strategyABI: abi.yearnUSDCABIContract, + contractType: "yearn", + tokenId: "usd-coin", + network: constant.ETHEREUM, + }, + yDAI: { + address: "0x2bfc2da293c911e5ffec4d2a2946a599bc4ae770", + abi: abi.vaultDAIABIContract, + strategyAddress: "0x3685fb7ca1c555cb5bd5a246422ee1f2c53ddb71", + strategyABI: abi.yearnDAIABIContract, + contractType: "yearn", + tokenId: "dai", + network: constant.ETHEREUM, + }, + yTUSD: { + address: "0x2c8de02ad4312069355b94fb936efe6cfe0c8ff6", + abi: abi.vaultTUSDABIContract, + strategyAddress: "0xa6f1409a259b21a84c8346ed1b0826d656959a54", + strategyABI: abi.yearnTUSDABIContract, + contractType: "yearn", + tokenId: "true-usd", + network: constant.ETHEREUM, + }, + cUSDT: { + address: "0xeece6ad323a93d4b021bdaac587dcc04b5cf0a78", + abi: abi.compoundVaultContract, + strategyAddress: "0x11af10648ed5094f41753ccb69a2f74135697631", + strategyABI: abi.compoundStrategyContract, + contractType: "compound", + tokenId: "tether", + network: constant.ETHEREUM, + }, + cUSDC: { + address: "0xd1d7f950899c0269a7f2aad5e854cdc3a1350ba9", + abi: abi.compoundVaultContract, + strategyAddress: "0x89be389b0529ca3187b6e81e689496cb3bad8557", + strategyABI: abi.compoundStrategyContract, + contractType: "compound", + tokenId: "usd-coin", + network: constant.ETHEREUM, + }, + cDAI: { + address: "0x43c20638c3914eca3c96e9cac8ebe7d652be45c6", + abi: abi.compoundVaultContract, + strategyAddress: "0x0c5cff1c9ec7ce8e28998503471b19c848c5a581", + strategyABI: abi.compoundStrategyContract, + contractType: "compound", + tokenId: "dai", + network: constant.ETHEREUM, + }, + daoCDV: { + address: "0x8fe826cc1225b03aa06477ad5af745aed5fe7066", + abi: abi.citadelABIContract, + strategyAddress: "0x8a00046ab28051a952e64a886cd8961ca90a59bd", + strategyABI: abi.citadelStrategyABIContract, + contractType: "citadel", + tokenId: ["tether", "usd-coin", "dai"], + network: constant.ETHEREUM, + }, + daoELO: { + address: "0x2d9a136cf87d599628bcbdfb6c4fe75acd2a0aa8", + abi: abi.elonApeVaultContract, + strategyAddress: "0x24d281dcc7d435500669459eaa393dc5200595b1", + strategyABI: abi.elonApeStrategyContract, + contractType: "elon", + tokenId: ["tether", "usd-coin", "dai"], + network: constant.ETHEREUM, + }, + daoCUB: { + address: "0x2ad9f8d4c24652ea9f8a954f7e1fdb50a3be1dfd", + abi: abi.cubanApeVaultContract, + strategyAddress: "0x7c0f84e9dc6f721de21d51a490de6e370fa01cd6", + strategyABI: abi.cubanApeStrategyContract, + contractType: "cuban", + tokenId: ["tether", "usd-coin", "dai"], + network: constant.ETHEREUM, + }, + daoSTO: { + address: "0x9ee54014e1e6cf10fd7e9290fdb6101fd0d5d416", + abi: abi.daoFaangStonkVaultContract, + strategyAddress: "0x4a73dd597b8257e651ef12fd04a91a8819c89416", + strategyABI: abi.daoFaangStonkStrategyContract, + contractType: "daoFaang", + tokenId: ["tether", "usd-coin", "dai"], + network: constant.ETHEREUM, + }, + daoMPT: { + address: '0x3db93e95c9881bc7d9f2c845ce12e97130ebf5f2', + abi: abi.moneyPrinterVaultContract, + strategyAddress: '0x4728a38b6b00cdff9fdc59ace8e3c7ef3c6560e5', + strategyABI: abi.moneyPrinterStrategyContract, + contractType: "moneyPrinter", + tokenId: ["tether", "usd-coin", "dai"], + network: constant.POLYGON, + }, + // hfDAI: { + // address: '0x2cc1507e6e3c844eeb77db90d193489f1ddfb299', + // abi: abi.hfVaultContract, + // strategyAddress: '0x89541e3b8e8b73c108744909ea11d506b4a8e6c7', + // strategyABI: abi.hfStrategyContract, + // contractType: 'harvest', + // tokenId: "dai", + // network: constant.ETHEREUM + // }, + // hfUSDC: { + // address: '0xd0f0858578c7780f2d65f6d81bc7ddbe166367cc', + // abi: abi.hfVaultContract, + // strategyAddress: '0x0af9547974e056fca221f679dbbb7f8651407d7f', + // strategyABI: abi.hfStrategyContract, + // contractType: 'harvest', + // tokenId: "usd-coin", + // network: constant.ETHEREUM + // }, + // hfUSDT: { + // address: '0xe4e6ce7c1d9ff44db27f622accbb0753c2f48955', + // abi: abi.hfVaultContract, + // strategyAddress: '0xef9a15025c2ed048a67c5c8019a1101172eeb51c', + // strategyABI: abi.hfStrategyContract, + // contractType: 'harvest', + // tokenId: "tether", + // network: constant.ETHEREUM + // }, + }, + compund: { + cUSDT: { + address: "0xf650c3d88d12db855b8bf7d11be6c55a4e07dcc9", + abi: abi.cUSDTContract, + }, + cUSDC: { + address: "0x39aa39c021dfbae8fac545936693ac917d5e7563", + abi: abi.cUSDTContract, + }, + cDAI: { + address: "0x5d3a536e4d6dbd6114cc1ead35777bab948e3643", + abi: abi.cDAIContract, + }, + }, + DVD: { + address: "0x77dcE26c03a9B833fc2D7C31C22Da4f42e9d9582", + abi: abi.DVDABIContract, + tokenId: "", + network: constant.ETHEREUM, + }, + vipDVD: { + name: "vipDVD", + address: "0x1193c036833B0010fF80a3617BBC94400A284338", + abi: abi.xDVDABIContract, + tokenId: "xDVD", + decimals: 18, + lastMeasurement: 12838468, + network: constant.ETHEREUM, + }, + DVG: { + address: "0x51e00a95748dbd2a3f47bc5c3b3e7b3f0fea666c", + abi: abi.DVGABIContract, + tokenId: "daoventures", + network: constant.ETHEREUM, + }, + vipDVG: { + name: "vipDVG", + address: "0xD6Ce913C3e81b5e67a6b94d705d9E7cDdf073A7e", + abi: abi.xDVGABIContract, + tokenId: "xDVG", + decimals: 18, + lastMeasurement: 12670237, + network: constant.ETHEREUM, + }, + daoStake: { + address: "0x8437a6bf9235fd003d50cd4024fa7ec6979208d5", + abi: abi.daoStakeContract, + startBlock: 12770000, // Start block from contract's START_BLOCK + poolPercent: 0.51, + network: constant.ETHEREUM, + }, + uniswap: { + ethDVG: { + address: "0xd11aD84D720A5e7fA11c8412Af6C1cAA815a436d", + abi: abi.uniswapPairABIContract, + network: constant.ETHEREUM, + }, + }, + chainLink: { + USDT_ETH: { + address: "0xEe9F2375b4bdF6387aa8265dD4FB8F16512A1d46", + abi: abi.eacAggregatoorProxyContract, + network: constant.ETHEREUM, + }, + USDT_USD: { + address: "0x3E7d1eAB13ad0104d2750B8863b489D65364e32D", + abi: abi.eacAggregatoorProxyContract, + network: constant.ETHEREUM, + }, + }, + polygonChainLink: { + USDT_USD: { + address: "0x0a6513e40db6eb1b165753ad52e80663aea50545", + abi: abi.polygonEacAggregatoorProxyContract, + network: constant.POLYGON, + }, + }, +}; + +const devEarnContract = "0xdb12e805d004698fc58f6e4fbdd876268df2dffe"; +const devVaultContract = "0x99dd34943c741E17EB772041cd3D7E8d317FA92f"; +const devYfUSDTContract = "0x9680CF4CfED6Cf04eF0Eeb513c2399c192D0c0B0"; +const prodEarnContract = "0xe6354ed5bc4b393a5aad09f21c46e101e692d447"; +const prodVaultContract = "0x2f08119c6f07c006695e079aafc638b8789faf18"; +const prodYfUSDTContract = "0xA0db955B5bdFA7C279CdE6C136FBA20C195CdEe5"; +const aggregatedContractAddress = "0x9cad8ab10daa9af1a9d2b878541f41b697268eec"; + +module.exports.devContract = { + devEarnContract, + devVaultContract, + devYfUSDTContract, +}; + +module.exports.prodContract = { + prodEarnContract, + prodVaultContract, + prodYfUSDTContract, +}; + +module.exports = { + testContracts, + mainContracts, + aggregatedContractAddress, +}; diff --git a/docker-compose.yml b/docker-compose.yml index 05b1acc..8c6d897 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,19 +1,34 @@ -version: '3.6' +version: "3.6" services: - serverless: + database: + image: mongo + container_name: "database" + #command: [--auth] + restart: always + ports: + - "27017:27017" + volumes: + - "mongodata:/data/db" + networks: + - backend + api: + container_name: "api" + restart: always build: context: . - environment: - - SUBGRAPH_ENDPOINT=${SUBGRAPH_ENDPOINT} - - WEB3_ENDPOINT=${WEB3_ENDPOINT} - - ARCHIVENODE_ENDPOINT=${ARCHIVENODE_ENDPOINT} - - ETHERSCAN_API_KEY=${ETHERSCAN_API_KEY} - - AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID} - - AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY} - - AWS_DEFAULT_REGION=${AWS_DEFAULT_REGION} + env_file: + - .env ports: - - "3000:3000" + - "8080:8080" volumes: - - "./config:/opt/app/config:ro" - - "./services:/opt/app/services:ro" - - "./utils:/opt/app/utils:ro" + - "./config:/api/config:ro" + - "./services:/api/services:ro" + - "./utils:/api/utils:ro" + - "./models:/api/models:ro" + networks: + - backend +volumes: + mongodata: +networks: + backend: + driver: bridge diff --git a/jobs/task.js b/jobs/task.js new file mode 100644 index 0000000..144e337 --- /dev/null +++ b/jobs/task.js @@ -0,0 +1,285 @@ +const cron = require("node-cron"); +const delay = require("delay"); +const vaultApySave = require("../services/vaults/apy/save/historical-handle"); +const vaultPolygonApySave = require("../services/vaults/apy/save/historical-handle-polygon"); +const vaultHandlerSave = require("../services/vaults/apy/save/handler"); +const vaultPolygonHandlerSave = require("../services/vaults/apy/save/polygon-handler"); +const vaultSave = require("../services/vaults/save/handler"); +const priceSave = require("../services/vaults/price/handler"); +const tvlSave = require("../services/vaults/tvl/handler"); +const stakeSave = require("../services/staking/dao-stake/handler"); +const poolSave = require("../services/staking/handler"); +const vipDVG = require("../services/staking/vipdvg/handler"); +const performanceSave = require("../services/vaults/performance/handler"); +const transactionValidator = require("../services/referral/validate/handler"); + +const jobDelayTime = { + saveHistoricalApy: 3 * 60 * 1000, // 3 mins in milliseconds + saveTransaction: 6 * 60 * 1000, // 6 mins in milliseconds + savePricePerFullShare: 6 * 60 * 1000, // 6 mins in milliseconds + saveHistoricalTVL: 7 * 60 * 1000, // 7 mins + saveVaultApy: 15 * 60 * 1000, // 15 mins + saveABIPools: 18 * 60 * 1000, // 18 mins + savePolygonVaultAPY: 3 * 60 * 1000, // 3 mins in milliseconds; + saveReferralStatus: 6 * 60 * 1000, // 6 mins in milliseconds +}; + +/** Save Vault **/ +const saveVault = async () => { + await saveVaultHandler(); + cron.schedule( + "0 0 0 * * *", + async () => { + await saveVaultHandler(); + }, + { + scheduled: true, + timezone: "Etc/UTC", // UTC +0 + } + ); +}; +const saveVaultHandler = async () => { + console.log(`[saveVault] START: ${new Date().getTime()}`); + await vaultSave.handler(); + console.log(`[saveVault] END: ${new Date().getTime()}`); +}; + +/** Save Vault APY */ +const saveVaultAPY = async () => { + await delay(jobDelayTime.saveVaultApy); + await saveVaultAPYHandler(); + + cron.schedule( + "0 0 0 * * *", + async () => { + await saveVaultAPYHandler(); + }, + { + scheduled: true, + timezone: "Etc/UTC", // UTC +0 + } + ); +}; +const saveVaultAPYHandler = async () => { + console.log(`[saveVaultAPY] START: ${new Date().getTime()}`); + await vaultHandlerSave.handler(); + console.log(`[saveVaultAPY] END: ${new Date().getTime()}`); +}; + +/** Save Vault APY */ +const savePolygonVaultAPY = async () => { + await delay(jobDelayTime.savePolygonVaultAPY); + await savePolygonVaultAPYHandler(); + + cron.schedule( + "0 0 0 * * *", + async () => { + await savePolygonVaultAPYHandler(); + }, + { + scheduled: true, + timezone: "Etc/UTC", // UTC +0 + } + ); +}; +const savePolygonVaultAPYHandler = async () => { + console.log(`[saveVaultAPY Polygon] START: ${new Date().getTime()}`); + await vaultPolygonHandlerSave.saveHandler(); + console.log(`[saveVaultAPY Polygon] END: ${new Date().getTime()}`); +}; + +/** Store getPricePerFullShare */ +const savePricePerFullShare = async () => { + await delay(jobDelayTime.savePricePerFullShare); + await savePricePerFullShareHandler(); + + cron.schedule( + "*/5 * * * *", + async () => { + await savePricePerFullShareHandler(); + }, + { + scheduled: true, + } + ); +}; +const savePricePerFullShareHandler = async () => { + console.log(`[savePricePerFullShare] START: ${new Date().getTime()}`); + await priceSave.handler(); + console.log(`[savePricePerFullShare] END: ${new Date().getTime()}`); +}; + +/** Store Historical APY */ +const saveHistoricalAPY = async () => { + await delay(jobDelayTime.saveHistoricalApy); + await saveHistoricalApyHandler(); + + cron.schedule( + "*/5 * * * *", + async () => { + await saveHistoricalApyHandler(); + }, + { + scheduled: true, + } + ); +}; +const saveHistoricalApyHandler = async () => { + console.log(`[saveHistoricalAPY] START: ${new Date().getTime()}`); + await vaultApySave.saveHandler(); + console.log(`[saveHistoricalAPY] END: ${new Date().getTime()}`); +}; + +/** Store Historical APY For Polygon */ +const savePolygonHistoricalAPY = async () => { + await savePolygonHistoricalAPYHandler(); + cron.schedule( + "*/5 * * * *", + async () => { + await savePolygonHistoricalAPYHandler(); + }, + { + scheduled: true, + } + ); +}; +const savePolygonHistoricalAPYHandler = async () => { + console.log(`[savePolygonHistoricalAPY] START: ${new Date().getTime()}`); + await vaultPolygonApySave.saveHandler(); + console.log(`[savePolygonHistoricalAPY] END: ${new Date().getTime()}`); +}; + +//Blockchain Transaction Validator +const saveTransaction = async () => { + await saveTransactionHandler(); + cron.schedule( + async () => { + await saveTransactionHandler(); + }, + { + scheduled: true, + } + ); +}; + +const saveTransactionHandler = async () => { + console.log(`[saveTransaction] START: ${new Date().getTime()}`); + await transactionValidator.validator(); + console.log(`[saveTransaction] END: ${new Date().getTime()}`); +}; + +/** Store Historical TVL */ +const saveHistoricalTVL = async () => { + await delay(jobDelayTime.saveHistoricalTVL); + await saveHistoricalTVLHandler(); + + cron.schedule( + "*/5 * * * *", + async () => { + await saveHistoricalTVLHandler(); + }, + { + scheduled: true, + } + ); +}; +const saveHistoricalTVLHandler = async () => { + console.log(`[saveTVL] START: ${new Date().getTime()}`); + await tvlSave.saveAllTVLhandler(); + console.log(`[saveTVL] END: ${new Date().getTime()}`); +}; + +/** Store Historical Stake Pools */ +const saveHistoricalPools = async () => { + await saveStakedPoolsHandler(); + cron.schedule( + "*/5 * * * *", + async () => { + await saveStakedPoolsHandler(); + }, + { + scheduled: true, + } + ); +}; +const saveStakedPoolsHandler = async () => { + console.log(`[saveStakedPools] START: ${new Date().getTime()}`); + await stakeSave.saveStakedPools(); + console.log(`[saveStakedPools] END: ${new Date().getTime()}`); +}; + +/** Store Stake Pools ABI */ +const saveABIPools = async () => { + await delay(jobDelayTime.saveABIPools); + await saveABIPoolsHandler(); + + cron.schedule( + "0 2 0 * * *", + async () => { + await saveABIPoolsHandler(); + }, + { + scheduled: true, + } + ); +}; +const saveABIPoolsHandler = async () => { + console.log(`[savePoolInfo] START: ${new Date().getTime()}`); + await poolSave.savePoolInfo(); + console.log(`[savePoolInfo] END: ${new Date().getTime()}`); +}; + +/** Store DAOVIP APR */ +const saveVipApr = async () => { + await saveVipAprHandler(); + cron.schedule( + "*/5 * * * *", + async () => { + await saveVipAprHandler(); + }, + { + scheduled: true, + } + ); +}; +const saveVipAprHandler = async () => { + console.log(`[saveVipApr] START: ${new Date().getTime()}`); + await vipDVG.getVipAPY(); + console.log(`[saveVipApr] END: ${new Date().getTime()}`); +}; + +/** Store Performance */ +const savePerformance = async () => { + currentDateTime = new Date().getTime(); + console.log("[savePerformance first]", currentDateTime); + await performanceSave.savePerformance(null); + cron.schedule( + "*/5 * * * *", + // "0 0 * * *", + // "* * * * *", + async () => { + currentDateTime = new Date().getTime(); + console.log("[savePerformance job]", currentDateTime); + await performanceSave.savePerformance(currentDateTime); + }, + { + scheduled: true, + // timezone: "Etc/UTC", // UTC +0 + } + ); +}; + +module.exports = { + saveHistoricalTVL, + saveVaultAPY, + saveVault, + savePolygonVaultAPY, + savePricePerFullShare, + saveHistoricalAPY, + savePolygonHistoricalAPY, + saveHistoricalPools, + saveABIPools, + saveVipApr, + savePerformance, + saveTransaction, +}; diff --git a/models/apy.model.js b/models/apy.model.js new file mode 100644 index 0000000..182461f --- /dev/null +++ b/models/apy.model.js @@ -0,0 +1,41 @@ +const mongo = require('../config/db'); +const collection = 'apy'; + +const findAll = async () => { + const db = mongo.getDB(); + return await db.collection(collection).find({}).toArray(); +}; + +const getApy = async(vaultSymbol) => { + const db = mongo.getDB(); + return await db.collection(collection).findOne({ + vaultSymbol: vaultSymbol + }); +} + +const add = async (params) => { + const db = mongo.getDB(); + + const result = await db.collection(collection).findOne({ + vaultSymbol: params.vaultSymbol + }); + + if (result != null) { + return await db.collection(collection).updateOne({ + vaultSymbol: params.vaultSymbol + }, + { + $set: { + ...params + } + }); + } else { + return await db.collection(collection).insertOne(params); + } +} + +module.exports = { + findAll, + getApy, + add +}; \ No newline at end of file diff --git a/models/emergency-withdraw.model.js b/models/emergency-withdraw.model.js new file mode 100644 index 0000000..a755990 --- /dev/null +++ b/models/emergency-withdraw.model.js @@ -0,0 +1,43 @@ +const mongo = require('../config/db'); +const collection = 'emergency-withdraw'; + +const findAll = async () => { + const db = mongo.getDB(); + return await db.collection(collection).find({}).toArray(); +}; + +const add = async (params) => { + const db = mongo.getDB(); + + const result = await db.collection(collection).findOne({ + pid: params.pid, + userAddress: params.userAddress, + }); + if (result != null) { + return await db.collection(collection).updateOne({ + pid: params.pid, + userAddress: params.userAddress, + }, + { + $set: { + ...params + } + }); + } else { + return await db.collection(collection).insertOne(params); + } +} + +const findOne = async (params) => { + const db = mongo.getDB(); + return await db.collection(collection).findOne({ + pid: params.pid, + userAddress: params.userAddress, + }); +} + +module.exports = { + findAll, + add, + findOne, +}; \ No newline at end of file diff --git a/models/historical-apy.model.js b/models/historical-apy.model.js new file mode 100644 index 0000000..4c6b76d --- /dev/null +++ b/models/historical-apy.model.js @@ -0,0 +1,57 @@ +const mongo = require('../config/db'); + +const findAll = async (collection) => { + const db = mongo.getDB(); + return await db.collection(collection).find({}).toArray(); +}; + +const findWithTimePeriods = async (startTime, endTime, collection) => { + const db = mongo.getDB(); + return await db.collection(collection).find({ + timestamp: { + $gte: startTime * 1000, + $lte: endTime + } + }).toArray(); +} + +const getLatestNonZeroMoneyPrinterHistoricalAPY = async() => { + const db = mongo.getDB(); + return await db.collection("daoMPT_historical-apy").find({ + moneyPrinterApy: { + $ne: 0 + } + }).sort({ + timestamp: -1 + }).limit(1).toArray(); +} + +const add = async (params, collection) => { + const db = mongo.getDB(); + Object.assign(params, { + timestamp: new Date().getTime() + }) + return await db.collection(collection).insertOne(params); +} + +module.exports = { + findAll, + findWithTimePeriods, + getLatestNonZeroMoneyPrinterHistoricalAPY, + add, + usdtFarmer: 'yUSDT_historical-apy', + usdcFarmer: 'yUSDC_historical-apy', + tusdFarmer: 'yTUSD_historical-apy', + daiFarmer: 'yDAI_historical-apy', + cUsdtFarmer: 'cUSDT_historical-apy', + cUsdcFarmer: 'cUSDC_historical-apy', + cDaiFarmer: 'cDAI_historical-apy', + daoCDVFarmer: 'daoCDV_historical-apy', + daoELOFarmer: 'daoELO_historical-apy', + daoCUBFarmer: 'daoCUB_historical-apy', + daoSTOFarmer: 'daoSTO_historical-apy', + daoMPTFarmer: 'daoMPT_historical-apy', + hfDaiFarmer: 'hfDAI_historical-apy', + hfUsdcFarmer: 'hfUSDC_historical-apy', + hfUsdtFarmer: 'hfUSDT_historical-apy', +}; \ No newline at end of file diff --git a/models/performance.model.js b/models/performance.model.js new file mode 100644 index 0000000..99c8bdd --- /dev/null +++ b/models/performance.model.js @@ -0,0 +1,54 @@ +const mongo = require("../config/db"); + +const findAll = async (collection) => { + const db = mongo.getDB(); + return await db + .collection(collection + "_performance") + .find({}) + .project({ _id: 0 }) + .toArray(); +}; + +const findLatest = async (collection) => { + const db = mongo.getDB(); + return await db + .collection(collection + "_performance") + .find() + .project({ _id: 0 }) + .sort({ $natural: -1 }) + .limit(1) + .toArray(); +}; + +const findPerformanceWithTimePeriods = async (collection, startTime) => { + const db = mongo.getDB(); + return await db + .collection(collection + "_performance") + .find({ + time_stamp: { + $gte: startTime, + }, + }) + .project({ _id: 0 }) + .toArray(); +}; + +const add = async (collection, params) => { + const db = mongo.getDB(); + if (!params.time_stamp) { + Object.assign(params, { + time_stamp: new Date().getTime(), + }); + } + return await db.collection(collection + "_performance").insertOne(params); +}; + +module.exports = { + findAll, + findLatest, + findPerformanceWithTimePeriods, + add, + daoCDVFarmer: "daoCDV", + daoELOFarmer: "daoELO", + daoSTOFarmer: "daoSTO", +}; diff --git a/models/price.model.js b/models/price.model.js new file mode 100644 index 0000000..00fa176 --- /dev/null +++ b/models/price.model.js @@ -0,0 +1,45 @@ +const mongo = require('../config/db'); + +const findAll = async (collection) => { + const db = mongo.getDB(); + return await db.collection(collection).find({}).toArray(); +}; + +const findPriceWithTimePeriods = async (collection, startTime, endTime) => { + const db = mongo.getDB(); + return await db.collection(collection).find({ + timestamp: { + $gte: startTime * 1000, + $lte: endTime + } + }).toArray(); +} + +const add = async (collection, params) => { + const db = mongo.getDB(); + Object.assign(params, { + timestamp: new Date().getTime() + }) + return await db.collection(collection).insertOne(params); +} + +module.exports = { + findAll, + findPriceWithTimePeriods, + add, + usdtFarmer: 'yUSDT_price', + usdcFarmer: 'yUSDC_price', + tusdFarmer: 'yTUSD_price', + daiFarmer: 'yDAI_price', + cUsdtFarmer: 'cUSDT_price', + cUsdcFarmer: 'cUSDC_price', + cDaiFarmer: 'cDAI_price', + daoCDVFarmer: 'daoCDV_price', + daoELOFarmer: 'daoELO_price', + daoCUBFarmer: 'daoCUB_price', + daoSTOFarmer: 'daoSTO_price', + daoMPTFarmer: 'daoMPT_price', + hfDaiFarmer: 'hfDAI_price', + hfUsdcFarmer: 'hfUSDC_price', + hfUsdtFarmer: 'hfUSDT_price', +}; \ No newline at end of file diff --git a/models/referral-deposit.model.js b/models/referral-deposit.model.js new file mode 100644 index 0000000..e19eb4f --- /dev/null +++ b/models/referral-deposit.model.js @@ -0,0 +1,58 @@ +const mongo = require("../config/db"); +const collection = "Referral-Deposit"; +//const subgraphUrl = process.env.SUBGRAPH_ENDPOINT; +//const polygonSubgraphUrl = process.env.POLYGON_SUBGRAPH_ENDPOINT; + +const findAll = async (query) => { + const db = mongo.getDB(); + return await db.collection(collection).find(query).toArray(); +}; + +const findOne = async (params) => { + const db = mongo.getDB(); + return await db.collection(collection).findOne({ + address: params, + }); +}; + +const getTransaction = async (transactionID) => { + const db = mongo.getDB(); + return await db.collection(collection).findOne({ + _id: transactionID, + }); +}; + +//Blockchain address, Amount, Referral + +const depositAmount = async (params) => { + const db = mongo.getDB(); + return await db.collection(collection).insertOne(params); +}; + +const updateStatus = async (id, amount) => { + const db = mongo.getDB(); + const result = await db.collection(collection).findOne({ + _id: id, + }); + if (result) { + return await db.collection(collection).updateOne( + { + _id: id, + }, + { + $set: { + status: "success", + amount: amount, + }, + } + ); + } +}; + +module.exports = { + findAll, + findOne, + getTransaction, + depositAmount, + updateStatus, +}; diff --git a/models/referral-withdrawal.model.js b/models/referral-withdrawal.model.js new file mode 100644 index 0000000..e8d69cb --- /dev/null +++ b/models/referral-withdrawal.model.js @@ -0,0 +1,55 @@ +const mongo = require("../config/db"); + +const collection = "Referral-Withdrawal"; + +const findAll = async (query) => { + const db = mongo.getDB(); + return await db.collection(collection).find(query).toArray(); +}; + +const findOne = async (params) => { + const db = mongo.getDB(); + return await db.collection(collection).findOne({ + address: params, + }); +}; + +const getTransaction = async (transactionID) => { + const db = mongo.getDB(); + return await db.collection(collection).findOne({ + _id: transactionID, + }); +}; + +const withdrawAmount = async (params) => { + const db = mongo.getDB(); + return await db.collection(collection).insertOne(params); +}; + +const updateStatus = async (id, amount) => { + const db = mongo.getDB(); + const result = await db.collection(collection).findOne({ + _id: id, + }); + if (result) { + return await db.collection(collection).updateOne( + { + _id: id, + }, + { + $set: { + status: "success", + amount: amount, + }, + } + ); + } +}; + +module.exports = { + findAll, + findOne, + getTransaction, + withdrawAmount, + updateStatus, +}; diff --git a/models/referrals.model.js b/models/referrals.model.js new file mode 100644 index 0000000..fcfc308 --- /dev/null +++ b/models/referrals.model.js @@ -0,0 +1,35 @@ +const mongo = require("../config/db"); +const collection = "referrals"; + +//1. Address 2. Referral associated with address + +const findAll = async () => { + const db = mongo.getDB(); + return await db.collection(collection).find({}).toArray(); +}; + +const findOne = async (params) => { + const db = mongo.getDB(); + return await db.collection(collection).findOne({ + address: params.address, + }); +}; + +const checkReferral = async (referral) => { + const db = mongo.getDB(); + return await db.collection(collection).findOne({ + referral: referral, + }); +}; + +const addReferral = async (params) => { + const db = mongo.getDB(); + return await db.collection(collection).insertOne(params); +}; + +module.exports = { + findAll, + findOne, + addReferral, + checkReferral, +}; diff --git a/models/reimburse-address.model.js b/models/reimburse-address.model.js new file mode 100644 index 0000000..492cab7 --- /dev/null +++ b/models/reimburse-address.model.js @@ -0,0 +1,41 @@ +const mongo = require('../config/db'); +const collection = 'reimburse-address'; +const BigNumber = require("bignumber.js"); + +const findAll = async () => { + const db = mongo.getDB(); + return await db.collection(collection).find({}).toArray(); +}; + +const findOne = async (params) => { + const db = mongo.getDB(); + return await db.collection(collection).findOne({ + address: params, + }); +} + +const updateClaimAmount = async(params) => { + const db = mongo.getDB(); + const result = await db.collection(collection).findOne({ + address: params.address + }); + if (result != null) { + const previousAmount = (result.claimAmount ? new BigNumber(result.claimAmount) : new BigNumber(0)); + const claimedAmount = previousAmount.plus(params.amount).toFixed(); + + return await db.collection(collection).updateOne({ + address: params.address + }, + { + $set: { + "claimAmount": claimedAmount, + } + }); + } +} + +module.exports = { + findAll, + findOne, + updateClaimAmount, +}; \ No newline at end of file diff --git a/models/reimbursement-addresses.model.js b/models/reimbursement-addresses.model.js new file mode 100644 index 0000000..ef4d569 --- /dev/null +++ b/models/reimbursement-addresses.model.js @@ -0,0 +1,29 @@ +const mongo = require('../config/db'); + +const findAll = async () => { + const db = mongo.getDB(); + return await db.collection("reimburse-address").find({}).project({ _id: 0 }).toArray(); +}; + +const find = async (address) => { + const db = mongo.getDB(); + const _address = address.toLowerCase(); + return await db.collection("reimburse-address").find({ address: _address }).project({ _id: 0 }).toArray(); +}; + +const add = async (params) => { + const db = mongo.getDB(); + return await db.collection("reimburse-address").insertOne(params); +} + +const drop = async () => { + const db = mongo.getDB(); + return await db.collection("reimburse-address").drop(); +} + +module.exports = { + findAll, + find, + add, + drop, +}; \ No newline at end of file diff --git a/models/special-event.model.js b/models/special-event.model.js new file mode 100644 index 0000000..ebcaa76 --- /dev/null +++ b/models/special-event.model.js @@ -0,0 +1,30 @@ +const mongo = require("../config/db"); +const collection = "special_event"; + +// Get any event in which current datetime falls within data's start date and end date. +const getCurrentEvent = async() => { + const db = mongo.getDB(); + return await db + .collection(collection) + .find({ + startTime: { + $lte: new Date().getTime() + }, + endTime: { + $gte: new Date().getTime() + } + }) + .sort({ startTime : -1 }) + .limit(1) + .toArray(); +}; + +const findAll = async() => { + const db = mongo.getDB(); + return await db.collection(collection).find({}).toArray(); +} + +module.exports = { + getCurrentEvent, + findAll +} \ No newline at end of file diff --git a/models/stake-pool.model.js b/models/stake-pool.model.js new file mode 100644 index 0000000..3e6e095 --- /dev/null +++ b/models/stake-pool.model.js @@ -0,0 +1,36 @@ +const mongo = require('../config/db'); +const collection = 'stake_pool'; + +const findAll = async () => { + const db = mongo.getDB(); + return await db.collection(collection).find({}).toArray(); +}; + +const add = async (params) => { + const db = mongo.getDB(); + const result = await db.collection(collection).findOne({ + name: params.name + }); + + Object.assign(params, { + timestamp: new Date().getTime(), + }); + + if (result != null) { + return await db.collection(collection).updateOne({ + name: params.name + }, + { + $set: { + ...params + } + }); + } else { + return await db.collection(collection).insertOne(params); + } +} + +module.exports = { + findAll, + add +}; \ No newline at end of file diff --git a/models/tvl.model.js b/models/tvl.model.js new file mode 100644 index 0000000..4738fcc --- /dev/null +++ b/models/tvl.model.js @@ -0,0 +1,72 @@ +const mongo = require("../config/db"); +// const collection = "tvl"; + +const findAll = async () => { + const db = mongo.getDB(); + return await db.collection(collection).find({}).toArray(); +}; + +// Get TVL based on farm name +// yUSDT, yUSDC, yDAI, yTUSD, cUSDT, cUSDC, yDAI +const getTVL = async (collection, params) => { + const db = mongo.getDB(); + console.log( + await db + .collection(collection) + .find() + .project({ _id: 0 }) + .sort({ $natural: -1 }) + .limit(params.limit) + .toArray() + ); + return await db + .collection(collection) + .find() + .project({ _id: 0 }) + .sort({ $natural: -1 }) + .limit(params.limit) + .toArray(); +}; + +const getTotalTVL = async (params) => { + const db = mongo.getDB(); + return await db + .collection("total_tvl") + .find({}, { _id: 0 }) + .sort({ $natural: -1 }) + .limit(params.limit) + .toArray(); +}; + +const add = async (collection, params) => { + const db = mongo.getDB(); + + // add timestamp to params + Object.assign(params, { + timestamp: new Date().getTime(), + }); + + return await db.collection(collection).insertOne(params); +}; + +module.exports = { + findAll, + getTotalTVL, + getTVL, + add, + usdtFarmer: "yUSDT_tvl", + usdcFarmer: "yUSDC_tvl", + tusdFarmer: "yTUSD_tvl", + daiFarmer: "yDAI_tvl", + cUsdtFarmer: "cUSDT_tvl", + cUsdcFarmer: "cUSDC_tvl", + cDaiFarmer: "cDAI_tvl", + daoCDVFarmer: "daoCDV_tvl", + daoELOFarmer: "daoELO_tvl", + daoCUBFarmer: "daoCUB_tvl", + daoSTOFarmer: "daoSTO_tvl", + hfDaiFarmer: "hfDAI_tvl", + hfUsdtFarmer: "hfUSDT_tvl", + hfUsdcFarmer: "hfUSDC_tvl", + daoMPTFarmer: "daoMPT_tvl", +}; diff --git a/models/vault-category.model.js b/models/vault-category.model.js new file mode 100644 index 0000000..bc8186c --- /dev/null +++ b/models/vault-category.model.js @@ -0,0 +1,11 @@ +const mongo = require('../config/db'); +const collection = 'vault_categories'; + +const findAll = async () => { + const db = mongo.getDB(); + return await db.collection(collection).find({}).toArray(); +}; + +module.exports = { + findAll, +}; \ No newline at end of file diff --git a/models/vault.model.js b/models/vault.model.js new file mode 100644 index 0000000..49959aa --- /dev/null +++ b/models/vault.model.js @@ -0,0 +1,31 @@ +const mongo = require('../config/db'); +const collection = 'vaults'; + +const findAll = async () => { + const db = mongo.getDB(); + return await db.collection(collection).find({}).toArray(); +}; + +const add = async (params) => { + const db = mongo.getDB(); + const result = await db.collection(collection).findOne({ + name: params.name + }); + if (result != null) { + return await db.collection(collection).updateOne({ + name: params.name + }, + { + $set: { + ...params + } + }); + } else { + return await db.collection(collection).insertOne(params); + } +} + +module.exports = { + findAll, + add +}; \ No newline at end of file diff --git a/models/vip-apy.model.js b/models/vip-apy.model.js new file mode 100644 index 0000000..999d95f --- /dev/null +++ b/models/vip-apy.model.js @@ -0,0 +1,33 @@ +const mongo = require('../config/db'); +const collection = 'vip-apy'; + +const findOne = async (params) => { + const db = mongo.getDB(); + return await db.collection(collection).findOne({ + name: params.name + }); +}; + +const add = async (params) => { + const db = mongo.getDB(); + const result = await db.collection(collection).findOne({ + name: params.name + }); + if (result != null) { + return await db.collection(collection).updateOne({ + name: params.name + }, + { + $set: { + ...params + } + }); + } else { + return await db.collection(collection).insertOne(params); + } +} + +module.exports = { + findOne, + add +}; \ No newline at end of file diff --git a/models/xdvg-token.model.js b/models/xdvg-token.model.js new file mode 100644 index 0000000..c036dd5 --- /dev/null +++ b/models/xdvg-token.model.js @@ -0,0 +1,31 @@ +const mongo = require('../config/db'); +const collection = 'xdvg_token'; + +const find = async () => { + const db = mongo.getDB(); + return await db.collection(collection).findOne({}); +}; + +const add = async (params) => { + const db = mongo.getDB(); + const result = await db.collection(collection).findOne({ + name: params.name + }); + if (result != null) { + return await db.collection(collection).updateOne({ + name: params.name + }, + { + $set: { + ...params + } + }); + } else { + return await db.collection(collection).insertOne(params); + } +} + +module.exports = { + find, + add +}; \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 558cade..bfff12b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,146 +1,393 @@ { - "requires": true, + "name": "yearn-api", + "version": "1.0.0", "lockfileVersion": 1, + "requires": true, "dependencies": { - "@ethersproject/abi": { - "version": "5.0.0-beta.153", - "resolved": "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.0.0-beta.153.tgz", - "integrity": "sha512-aXweZ1Z7vMNzJdLpR1CZUAIgnwjrZeUSvN9syCwlBaEBUFJmFY+HHnfuTI5vIhVs/mRkfJVrbEyl51JZQqyjAg==", + "@ethereumjs/common": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@ethereumjs/common/-/common-2.4.0.tgz", + "integrity": "sha512-UdkhFWzWcJCZVsj1O/H8/oqj/0RVYjLc1OhPjBrQdALAkQHpCp8xXI4WLnuGTADqTdJZww0NtgwG+TRPkXt27w==", + "requires": { + "crc-32": "^1.2.0", + "ethereumjs-util": "^7.1.0" + } + }, + "@ethereumjs/tx": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/@ethereumjs/tx/-/tx-3.3.0.tgz", + "integrity": "sha512-yTwEj2lVzSMgE6Hjw9Oa1DZks/nKTWM8Wn4ykDNapBPua2f4nXO3qKnni86O6lgDj5fVNRqbDsD0yy7/XNGDEA==", "requires": { - "@ethersproject/address": ">=5.0.0-beta.128", - "@ethersproject/bignumber": ">=5.0.0-beta.130", - "@ethersproject/bytes": ">=5.0.0-beta.129", - "@ethersproject/constants": ">=5.0.0-beta.128", - "@ethersproject/hash": ">=5.0.0-beta.128", - "@ethersproject/keccak256": ">=5.0.0-beta.127", - "@ethersproject/logger": ">=5.0.0-beta.129", - "@ethersproject/properties": ">=5.0.0-beta.131", - "@ethersproject/strings": ">=5.0.0-beta.130" + "@ethereumjs/common": "^2.4.0", + "ethereumjs-util": "^7.1.0" + } + }, + "@ethersproject/abi": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.4.0.tgz", + "integrity": "sha512-9gU2H+/yK1j2eVMdzm6xvHSnMxk8waIHQGYCZg5uvAyH0rsAzxkModzBSpbAkAuhKFEovC2S9hM4nPuLym8IZw==", + "requires": { + "@ethersproject/address": "^5.4.0", + "@ethersproject/bignumber": "^5.4.0", + "@ethersproject/bytes": "^5.4.0", + "@ethersproject/constants": "^5.4.0", + "@ethersproject/hash": "^5.4.0", + "@ethersproject/keccak256": "^5.4.0", + "@ethersproject/logger": "^5.4.0", + "@ethersproject/properties": "^5.4.0", + "@ethersproject/strings": "^5.4.0" + } + }, + "@ethersproject/abstract-provider": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.4.0.tgz", + "integrity": "sha512-vPBR7HKUBY0lpdllIn7tLIzNN7DrVnhCLKSzY0l8WAwxz686m/aL7ASDzrVxV93GJtIub6N2t4dfZ29CkPOxgA==", + "requires": { + "@ethersproject/bignumber": "^5.4.0", + "@ethersproject/bytes": "^5.4.0", + "@ethersproject/logger": "^5.4.0", + "@ethersproject/networks": "^5.4.0", + "@ethersproject/properties": "^5.4.0", + "@ethersproject/transactions": "^5.4.0", + "@ethersproject/web": "^5.4.0" + } + }, + "@ethersproject/abstract-signer": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.4.0.tgz", + "integrity": "sha512-AieQAzt05HJZS2bMofpuxMEp81AHufA5D6M4ScKwtolj041nrfIbIi8ciNW7+F59VYxXq+V4c3d568Q6l2m8ew==", + "requires": { + "@ethersproject/abstract-provider": "^5.4.0", + "@ethersproject/bignumber": "^5.4.0", + "@ethersproject/bytes": "^5.4.0", + "@ethersproject/logger": "^5.4.0", + "@ethersproject/properties": "^5.4.0" } }, "@ethersproject/address": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.0.4.tgz", - "integrity": "sha512-CIjAeG6zNehbpJTi0sgwUvaH2ZICiAV9XkCBaFy5tjuEVFpQNeqd6f+B7RowcNO7Eut+QbhcQ5CVLkmP5zhL9A==", + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.4.0.tgz", + "integrity": "sha512-SD0VgOEkcACEG/C6xavlU1Hy3m5DGSXW3CUHkaaEHbAPPsgi0coP5oNPsxau8eTlZOk/bpa/hKeCNoK5IzVI2Q==", + "requires": { + "@ethersproject/bignumber": "^5.4.0", + "@ethersproject/bytes": "^5.4.0", + "@ethersproject/keccak256": "^5.4.0", + "@ethersproject/logger": "^5.4.0", + "@ethersproject/rlp": "^5.4.0" + } + }, + "@ethersproject/base64": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.4.0.tgz", + "integrity": "sha512-CjQw6E17QDSSC5jiM9YpF7N1aSCHmYGMt9bWD8PWv6YPMxjsys2/Q8xLrROKI3IWJ7sFfZ8B3flKDTM5wlWuZQ==", + "requires": { + "@ethersproject/bytes": "^5.4.0" + } + }, + "@ethersproject/basex": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@ethersproject/basex/-/basex-5.4.0.tgz", + "integrity": "sha512-J07+QCVJ7np2bcpxydFVf/CuYo9mZ7T73Pe7KQY4c1lRlrixMeblauMxHXD0MPwFmUHZIILDNViVkykFBZylbg==", "requires": { - "@ethersproject/bignumber": "^5.0.7", - "@ethersproject/bytes": "^5.0.4", - "@ethersproject/keccak256": "^5.0.3", - "@ethersproject/logger": "^5.0.5", - "@ethersproject/rlp": "^5.0.3", - "bn.js": "^4.4.0" + "@ethersproject/bytes": "^5.4.0", + "@ethersproject/properties": "^5.4.0" } }, "@ethersproject/bignumber": { - "version": "5.0.7", - "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.0.7.tgz", - "integrity": "sha512-wwKgDJ+KA7IpgJwc8Fc0AjKIRuDskKA2cque29/+SgII9/1K/38JpqVNPKIovkLwTC2DDofIyzHcxeaKpMFouQ==", + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.4.0.tgz", + "integrity": "sha512-OXUu9f9hO3vGRIPxU40cignXZVaYyfx6j9NNMjebKdnaCL3anCLSSy8/b8d03vY6dh7duCC0kW72GEC4tZer2w==", "requires": { - "@ethersproject/bytes": "^5.0.4", - "@ethersproject/logger": "^5.0.5", - "bn.js": "^4.4.0" + "@ethersproject/bytes": "^5.4.0", + "@ethersproject/logger": "^5.4.0", + "bn.js": "^4.11.9" } }, "@ethersproject/bytes": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.0.4.tgz", - "integrity": "sha512-9R6A6l9JN8x1U4s1dJCR+9h3MZTT3xQofr/Xx8wbDvj6NnY4CbBB0o8ZgHXvR74yV90pY2EzCekpkMBJnRzkSw==", + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.4.0.tgz", + "integrity": "sha512-H60ceqgTHbhzOj4uRc/83SCN9d+BSUnOkrr2intevqdtEMO1JFVZ1XL84OEZV+QjV36OaZYxtnt4lGmxcGsPfA==", "requires": { - "@ethersproject/logger": "^5.0.5" + "@ethersproject/logger": "^5.4.0" } }, "@ethersproject/constants": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.0.4.tgz", - "integrity": "sha512-Df32lcXDHPgZRPgp1dgmByNbNe4Ki1QoXR+wU61on5nggQGTqWR1Bb7pp9VtI5Go9kyE/JflFc4Te6o9MvYt8A==", + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.4.0.tgz", + "integrity": "sha512-tzjn6S7sj9+DIIeKTJLjK9WGN2Tj0P++Z8ONEIlZjyoTkBuODN+0VfhAyYksKi43l1Sx9tX2VlFfzjfmr5Wl3Q==", "requires": { - "@ethersproject/bignumber": "^5.0.7" + "@ethersproject/bignumber": "^5.4.0" } }, - "@ethersproject/hash": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.0.4.tgz", - "integrity": "sha512-VCs/bFBU8AQFhHcT1cQH6x7a4zjulR6fJmAOcPxUgrN7bxOQ7QkpBKF+YCDJhFtkLdaljIsr/r831TuWU4Ysfg==", + "@ethersproject/contracts": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@ethersproject/contracts/-/contracts-5.4.0.tgz", + "integrity": "sha512-hkO3L3IhS1Z3ZtHtaAG/T87nQ7KiPV+/qnvutag35I0IkiQ8G3ZpCQ9NNOpSCzn4pWSW4CfzmtE02FcqnLI+hw==", "requires": { - "@ethersproject/bytes": "^5.0.4", - "@ethersproject/keccak256": "^5.0.3", - "@ethersproject/logger": "^5.0.5", - "@ethersproject/strings": "^5.0.4" + "@ethersproject/abi": "^5.4.0", + "@ethersproject/abstract-provider": "^5.4.0", + "@ethersproject/abstract-signer": "^5.4.0", + "@ethersproject/address": "^5.4.0", + "@ethersproject/bignumber": "^5.4.0", + "@ethersproject/bytes": "^5.4.0", + "@ethersproject/constants": "^5.4.0", + "@ethersproject/logger": "^5.4.0", + "@ethersproject/properties": "^5.4.0", + "@ethersproject/transactions": "^5.4.0" + } + }, + "@ethersproject/hash": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.4.0.tgz", + "integrity": "sha512-xymAM9tmikKgbktOCjW60Z5sdouiIIurkZUr9oW5NOex5uwxrbsYG09kb5bMcNjlVeJD3yPivTNzViIs1GCbqA==", + "requires": { + "@ethersproject/abstract-signer": "^5.4.0", + "@ethersproject/address": "^5.4.0", + "@ethersproject/bignumber": "^5.4.0", + "@ethersproject/bytes": "^5.4.0", + "@ethersproject/keccak256": "^5.4.0", + "@ethersproject/logger": "^5.4.0", + "@ethersproject/properties": "^5.4.0", + "@ethersproject/strings": "^5.4.0" + } + }, + "@ethersproject/hdnode": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@ethersproject/hdnode/-/hdnode-5.4.0.tgz", + "integrity": "sha512-pKxdS0KAaeVGfZPp1KOiDLB0jba11tG6OP1u11QnYfb7pXn6IZx0xceqWRr6ygke8+Kw74IpOoSi7/DwANhy8Q==", + "requires": { + "@ethersproject/abstract-signer": "^5.4.0", + "@ethersproject/basex": "^5.4.0", + "@ethersproject/bignumber": "^5.4.0", + "@ethersproject/bytes": "^5.4.0", + "@ethersproject/logger": "^5.4.0", + "@ethersproject/pbkdf2": "^5.4.0", + "@ethersproject/properties": "^5.4.0", + "@ethersproject/sha2": "^5.4.0", + "@ethersproject/signing-key": "^5.4.0", + "@ethersproject/strings": "^5.4.0", + "@ethersproject/transactions": "^5.4.0", + "@ethersproject/wordlists": "^5.4.0" + } + }, + "@ethersproject/json-wallets": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@ethersproject/json-wallets/-/json-wallets-5.4.0.tgz", + "integrity": "sha512-igWcu3fx4aiczrzEHwG1xJZo9l1cFfQOWzTqwRw/xcvxTk58q4f9M7cjh51EKphMHvrJtcezJ1gf1q1AUOfEQQ==", + "requires": { + "@ethersproject/abstract-signer": "^5.4.0", + "@ethersproject/address": "^5.4.0", + "@ethersproject/bytes": "^5.4.0", + "@ethersproject/hdnode": "^5.4.0", + "@ethersproject/keccak256": "^5.4.0", + "@ethersproject/logger": "^5.4.0", + "@ethersproject/pbkdf2": "^5.4.0", + "@ethersproject/properties": "^5.4.0", + "@ethersproject/random": "^5.4.0", + "@ethersproject/strings": "^5.4.0", + "@ethersproject/transactions": "^5.4.0", + "aes-js": "3.0.0", + "scrypt-js": "3.0.1" } }, "@ethersproject/keccak256": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.0.3.tgz", - "integrity": "sha512-VhW3mgZMBZlETV6AyOmjNeNG+Pg68igiKkPpat8/FZl0CKnfgQ+KZQZ/ee1vT+X0IUM8/djqnei6btmtbA27Ug==", + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.4.0.tgz", + "integrity": "sha512-FBI1plWet+dPUvAzPAeHzRKiPpETQzqSUWR1wXJGHVWi4i8bOSrpC3NwpkPjgeXG7MnugVc1B42VbfnQikyC/A==", "requires": { - "@ethersproject/bytes": "^5.0.4", + "@ethersproject/bytes": "^5.4.0", "js-sha3": "0.5.7" - }, - "dependencies": { - "js-sha3": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.5.7.tgz", - "integrity": "sha1-DU/9gALVMzqrr0oj7tL2N0yfKOc=" - } } }, "@ethersproject/logger": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.0.5.tgz", - "integrity": "sha512-gJj72WGzQhUtCk6kfvI8elTaPOQyMvrMghp/nbz0ivTo39fZ7IjypFh/ySDeUSdBNplAwhzWKKejQhdpyefg/w==" + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.4.0.tgz", + "integrity": "sha512-xYdWGGQ9P2cxBayt64d8LC8aPFJk6yWCawQi/4eJ4+oJdMMjEBMrIcIMZ9AxhwpPVmnBPrsB10PcXGmGAqgUEQ==" + }, + "@ethersproject/networks": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.4.1.tgz", + "integrity": "sha512-8SvowCKz9Uf4xC5DTKI8+il8lWqOr78kmiqAVLYT9lzB8aSmJHQMD1GSuJI0CW4hMAnzocpGpZLgiMdzsNSPig==", + "requires": { + "@ethersproject/logger": "^5.4.0" + } + }, + "@ethersproject/pbkdf2": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@ethersproject/pbkdf2/-/pbkdf2-5.4.0.tgz", + "integrity": "sha512-x94aIv6tiA04g6BnazZSLoRXqyusawRyZWlUhKip2jvoLpzJuLb//KtMM6PEovE47pMbW+Qe1uw+68ameJjB7g==", + "requires": { + "@ethersproject/bytes": "^5.4.0", + "@ethersproject/sha2": "^5.4.0" + } }, "@ethersproject/properties": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.0.3.tgz", - "integrity": "sha512-wLCSrbywkQgTO6tIF9ZdKsH9AIxPEqAJF/z5xcPkz1DK4mMAZgAXRNw1MrKYhyb+7CqNHbj3vxenNKFavGY/IA==", + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.4.0.tgz", + "integrity": "sha512-7jczalGVRAJ+XSRvNA6D5sAwT4gavLq3OXPuV/74o3Rd2wuzSL035IMpIMgei4CYyBdialJMrTqkOnzccLHn4A==", "requires": { - "@ethersproject/logger": "^5.0.5" + "@ethersproject/logger": "^5.4.0" + } + }, + "@ethersproject/providers": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/@ethersproject/providers/-/providers-5.4.1.tgz", + "integrity": "sha512-p06eiFKz8nu/5Ju0kIX024gzEQIgE5pvvGrBCngpyVjpuLtUIWT3097Agw4mTn9/dEA0FMcfByzFqacBMSgCVg==", + "requires": { + "@ethersproject/abstract-provider": "^5.4.0", + "@ethersproject/abstract-signer": "^5.4.0", + "@ethersproject/address": "^5.4.0", + "@ethersproject/basex": "^5.4.0", + "@ethersproject/bignumber": "^5.4.0", + "@ethersproject/bytes": "^5.4.0", + "@ethersproject/constants": "^5.4.0", + "@ethersproject/hash": "^5.4.0", + "@ethersproject/logger": "^5.4.0", + "@ethersproject/networks": "^5.4.0", + "@ethersproject/properties": "^5.4.0", + "@ethersproject/random": "^5.4.0", + "@ethersproject/rlp": "^5.4.0", + "@ethersproject/sha2": "^5.4.0", + "@ethersproject/strings": "^5.4.0", + "@ethersproject/transactions": "^5.4.0", + "@ethersproject/web": "^5.4.0", + "bech32": "1.1.4", + "ws": "7.4.6" + } + }, + "@ethersproject/random": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@ethersproject/random/-/random-5.4.0.tgz", + "integrity": "sha512-pnpWNQlf0VAZDEOVp1rsYQosmv2o0ITS/PecNw+mS2/btF8eYdspkN0vIXrCMtkX09EAh9bdk8GoXmFXM1eAKw==", + "requires": { + "@ethersproject/bytes": "^5.4.0", + "@ethersproject/logger": "^5.4.0" } }, "@ethersproject/rlp": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.0.3.tgz", - "integrity": "sha512-Hz4yyA/ilGafASAqtTlLWkA/YqwhQmhbDAq2LSIp1AJNx+wtbKWFAKSckpeZ+WG/xZmT+fw5OFKK7a5IZ4DR5g==", + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.4.0.tgz", + "integrity": "sha512-0I7MZKfi+T5+G8atId9QaQKHRvvasM/kqLyAH4XxBCBchAooH2EX5rL9kYZWwcm3awYV+XC7VF6nLhfeQFKVPg==", + "requires": { + "@ethersproject/bytes": "^5.4.0", + "@ethersproject/logger": "^5.4.0" + } + }, + "@ethersproject/sha2": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.4.0.tgz", + "integrity": "sha512-siheo36r1WD7Cy+bDdE1BJ8y0bDtqXCOxRMzPa4bV1TGt/eTUUt03BHoJNB6reWJD8A30E/pdJ8WFkq+/uz4Gg==", "requires": { - "@ethersproject/bytes": "^5.0.4", - "@ethersproject/logger": "^5.0.5" + "@ethersproject/bytes": "^5.4.0", + "@ethersproject/logger": "^5.4.0", + "hash.js": "1.1.7" } }, "@ethersproject/signing-key": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.0.4.tgz", - "integrity": "sha512-I6pJoga1IvhtjYK5yXzCjs4ZpxrVbt9ZRAlpEw0SW9UuV020YfJH5EIVEGR2evdRceS3nAQIggqbsXSkP8Y1Dg==", + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.4.0.tgz", + "integrity": "sha512-q8POUeywx6AKg2/jX9qBYZIAmKSB4ubGXdQ88l40hmATj29JnG5pp331nAWwwxPn2Qao4JpWHNZsQN+bPiSW9A==", + "requires": { + "@ethersproject/bytes": "^5.4.0", + "@ethersproject/logger": "^5.4.0", + "@ethersproject/properties": "^5.4.0", + "bn.js": "^4.11.9", + "elliptic": "6.5.4", + "hash.js": "1.1.7" + } + }, + "@ethersproject/solidity": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@ethersproject/solidity/-/solidity-5.4.0.tgz", + "integrity": "sha512-XFQTZ7wFSHOhHcV1DpcWj7VXECEiSrBuv7JErJvB9Uo+KfCdc3QtUZV+Vjh/AAaYgezUEKbCtE6Khjm44seevQ==", "requires": { - "@ethersproject/bytes": "^5.0.4", - "@ethersproject/logger": "^5.0.5", - "@ethersproject/properties": "^5.0.3", - "elliptic": "6.5.3" + "@ethersproject/bignumber": "^5.4.0", + "@ethersproject/bytes": "^5.4.0", + "@ethersproject/keccak256": "^5.4.0", + "@ethersproject/sha2": "^5.4.0", + "@ethersproject/strings": "^5.4.0" } }, "@ethersproject/strings": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.0.4.tgz", - "integrity": "sha512-azXFHaNkDXzefhr4LVVzzDMFwj3kH9EOKlATu51HjxabQafuUyVLPFgmxRFmCynnAi0Bmmp7nr+qK1pVDgRDLQ==", + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.4.0.tgz", + "integrity": "sha512-k/9DkH5UGDhv7aReXLluFG5ExurwtIpUfnDNhQA29w896Dw3i4uDTz01Quaptbks1Uj9kI8wo9tmW73wcIEaWA==", "requires": { - "@ethersproject/bytes": "^5.0.4", - "@ethersproject/constants": "^5.0.4", - "@ethersproject/logger": "^5.0.5" + "@ethersproject/bytes": "^5.4.0", + "@ethersproject/constants": "^5.4.0", + "@ethersproject/logger": "^5.4.0" } }, "@ethersproject/transactions": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.0.5.tgz", - "integrity": "sha512-1Ga/QmbcB74DItggP8/DK1tggu4ErEvwTkIwIlUXUcvIAuRNXXE7kgQhlp+w1xA/SAQFhv56SqCoyqPiiLCvVA==", - "requires": { - "@ethersproject/address": "^5.0.4", - "@ethersproject/bignumber": "^5.0.7", - "@ethersproject/bytes": "^5.0.4", - "@ethersproject/constants": "^5.0.4", - "@ethersproject/keccak256": "^5.0.3", - "@ethersproject/logger": "^5.0.5", - "@ethersproject/properties": "^5.0.3", - "@ethersproject/rlp": "^5.0.3", - "@ethersproject/signing-key": "^5.0.4" + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.4.0.tgz", + "integrity": "sha512-s3EjZZt7xa4BkLknJZ98QGoIza94rVjaEed0rzZ/jB9WrIuu/1+tjvYCWzVrystXtDswy7TPBeIepyXwSYa4WQ==", + "requires": { + "@ethersproject/address": "^5.4.0", + "@ethersproject/bignumber": "^5.4.0", + "@ethersproject/bytes": "^5.4.0", + "@ethersproject/constants": "^5.4.0", + "@ethersproject/keccak256": "^5.4.0", + "@ethersproject/logger": "^5.4.0", + "@ethersproject/properties": "^5.4.0", + "@ethersproject/rlp": "^5.4.0", + "@ethersproject/signing-key": "^5.4.0" + } + }, + "@ethersproject/units": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@ethersproject/units/-/units-5.4.0.tgz", + "integrity": "sha512-Z88krX40KCp+JqPCP5oPv5p750g+uU6gopDYRTBGcDvOASh6qhiEYCRatuM/suC4S2XW9Zz90QI35MfSrTIaFg==", + "requires": { + "@ethersproject/bignumber": "^5.4.0", + "@ethersproject/constants": "^5.4.0", + "@ethersproject/logger": "^5.4.0" + } + }, + "@ethersproject/wallet": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@ethersproject/wallet/-/wallet-5.4.0.tgz", + "integrity": "sha512-wU29majLjM6AjCjpat21mPPviG+EpK7wY1+jzKD0fg3ui5fgedf2zEu1RDgpfIMsfn8fJHJuzM4zXZ2+hSHaSQ==", + "requires": { + "@ethersproject/abstract-provider": "^5.4.0", + "@ethersproject/abstract-signer": "^5.4.0", + "@ethersproject/address": "^5.4.0", + "@ethersproject/bignumber": "^5.4.0", + "@ethersproject/bytes": "^5.4.0", + "@ethersproject/hash": "^5.4.0", + "@ethersproject/hdnode": "^5.4.0", + "@ethersproject/json-wallets": "^5.4.0", + "@ethersproject/keccak256": "^5.4.0", + "@ethersproject/logger": "^5.4.0", + "@ethersproject/properties": "^5.4.0", + "@ethersproject/random": "^5.4.0", + "@ethersproject/signing-key": "^5.4.0", + "@ethersproject/transactions": "^5.4.0", + "@ethersproject/wordlists": "^5.4.0" + } + }, + "@ethersproject/web": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.4.0.tgz", + "integrity": "sha512-1bUusGmcoRLYgMn6c1BLk1tOKUIFuTg8j+6N8lYlbMpDesnle+i3pGSagGNvwjaiLo4Y5gBibwctpPRmjrh4Og==", + "requires": { + "@ethersproject/base64": "^5.4.0", + "@ethersproject/bytes": "^5.4.0", + "@ethersproject/logger": "^5.4.0", + "@ethersproject/properties": "^5.4.0", + "@ethersproject/strings": "^5.4.0" + } + }, + "@ethersproject/wordlists": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@ethersproject/wordlists/-/wordlists-5.4.0.tgz", + "integrity": "sha512-FemEkf6a+EBKEPxlzeVgUaVSodU7G0Na89jqKjmWMlDB0tomoU8RlEMgUvXyqtrg8N4cwpLh8nyRnm1Nay1isA==", + "requires": { + "@ethersproject/bytes": "^5.4.0", + "@ethersproject/hash": "^5.4.0", + "@ethersproject/logger": "^5.4.0", + "@ethersproject/properties": "^5.4.0", + "@ethersproject/strings": "^5.4.0" } }, "@hapi/accept": { @@ -514,16 +761,10 @@ "@types/node": "*" } }, - "@types/color-name": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz", - "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==", - "dev": true - }, "@types/node": { - "version": "12.12.62", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.12.62.tgz", - "integrity": "sha512-qAfo81CsD7yQIM9mVyh6B/U47li5g7cfpVQEDMfQeF8pSZVwzbhwU3crc0qG4DmpsebpJPR49AKOExQyJ05Cpg==" + "version": "12.20.19", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.19.tgz", + "integrity": "sha512-niAuZrwrjKck4+XhoCw6AAVQBENHftpXw9F4ryk66fTgYaKQ53R4FI7c9vUGGw5vQis1HKBHDR1gcYI/Bq1xvw==" }, "@types/pbkdf2": { "version": "3.1.0", @@ -534,15 +775,15 @@ } }, "@types/retry": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", - "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==", + "version": "0.12.1", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.1.tgz", + "integrity": "sha512-xoDlM2S4ortawSWORYqsdU+2rxdh4LRW9ytc3zmT37RIKQh6IHyKwwtKhKis9ah8ol07DCkZxPt8BBvPjC6v4g==", "dev": true }, "@types/secp256k1": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@types/secp256k1/-/secp256k1-4.0.1.tgz", - "integrity": "sha512-+ZjSA8ELlOp8SlKi0YLB2tz9d5iPNEmOBd+8Rz21wTMdaXQIa9b6TEnD6l5qKOCypE7FSyPyck12qZJxSDNoog==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/secp256k1/-/secp256k1-4.0.3.tgz", + "integrity": "sha512-Da66lEIFeIz9ltsdMZcpQvmrmmoqrfju8pm1BH8WbYjZSwUgCwXLb9C+9XYogwBITnbsSaMdVPb2ekf7TV+03w==", "requires": { "@types/node": "*" } @@ -556,10 +797,15 @@ "negotiator": "0.6.2" } }, + "aes-js": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-3.0.0.tgz", + "integrity": "sha1-4h3xCtbCBTKVvLuNq0Cwnb6ofk0=" + }, "ajv": { - "version": "6.12.5", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.5.tgz", - "integrity": "sha512-lRF8RORchjpKG50/WFf8xmg7sgCLFiYNNnqdKflk63whMQcWR5ngGjiSXkL9bjxy6B2npOK2HSMN49jEBMSkag==", + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "requires": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -596,13 +842,12 @@ "dev": true }, "ansi-styles": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", - "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "requires": { - "@types/color-name": "^1.1.1", - "color-convert": "^2.0.1" + "color-convert": "^1.9.0" } }, "array-flatten": { @@ -653,10 +898,21 @@ "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" }, + "at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "dev": true + }, + "available-typed-arrays": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.4.tgz", + "integrity": "sha512-SA5mXJWrId1TaQjfxUYghbqQ/hYioKmLJvPJyDuYRtXXenFNMjj4hSSt1Cf1xsuXSXrtxrVC5Ot4eU6cOtBDdA==" + }, "aws-sdk": { - "version": "2.751.0", - "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.751.0.tgz", - "integrity": "sha512-0lo7YKTfjEwoP+2vK7F7WGNigvwFxqiM96PzBaseOpOelfhFHPKEJpk2Poa12JI89c8dGoc1PhTQ1TSTJK3ZqQ==", + "version": "2.970.0", + "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.970.0.tgz", + "integrity": "sha512-9+ktvE5xgpHr3RsFOcq1SrhXLvU+jUji44jbecFZb5C2lzoEEB29aeN39OLJMW0ZuOrR+3TNum8c3f8YVx6A7w==", "dev": true, "requires": { "buffer": "4.9.2", @@ -681,6 +937,12 @@ "isarray": "^1.0.0" } }, + "ieee754": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", + "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==", + "dev": true + }, "uuid": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", @@ -695,9 +957,17 @@ "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" }, "aws4": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.10.1.tgz", - "integrity": "sha512-zg7Hz2k5lI8kb7U32998pRRFin7zJlkfezGJjUc2heaD4Pw2wObakCDVzkKztTm/Ln7eiVvYsjqak0Ed4LkMDA==" + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", + "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==" + }, + "axios": { + "version": "0.21.1", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.1.tgz", + "integrity": "sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA==", + "requires": { + "follow-redirects": "^1.10.0" + } }, "base-x": { "version": "3.0.8", @@ -708,9 +978,9 @@ } }, "base64-js": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz", - "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==" + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" }, "bcrypt-pbkdf": { "version": "1.0.2", @@ -720,20 +990,34 @@ "tweetnacl": "^0.14.3" } }, + "bech32": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/bech32/-/bech32-1.1.4.tgz", + "integrity": "sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==" + }, "bignumber": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/bignumber/-/bignumber-1.1.0.tgz", "integrity": "sha1-5qsKdD2l8+oBjlwXWX0SH3howVk=" }, "bignumber.js": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.0.0.tgz", - "integrity": "sha512-t/OYhhJ2SD+YGBQcjY8GzzDHEk9f3nerxjtfa6tlMXfe7frs/WozhvCNoGvpM0P3bNf3Gq5ZRMlGr5f3r4/N8A==" + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.0.1.tgz", + "integrity": "sha512-IdZR9mh6ahOBv/hYGiXyVuyCetmGJhtYkqLBpTStdhEGjegpPlUawydyaF3pbIOFynJTpllEs+NP+CS9jKFLjA==" + }, + "bl": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/bl/-/bl-2.2.1.tgz", + "integrity": "sha512-6Pesp1w0DEX1N550i/uGV/TqucVL4AM/pgThFSN/Qq9si1/DF9aIHs1BxD8V/QU0HoeHO6cQRTAuYnLPKq1e4g==", + "requires": { + "readable-stream": "^2.3.5", + "safe-buffer": "^5.1.1" + } }, "blakejs": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/blakejs/-/blakejs-1.1.0.tgz", - "integrity": "sha1-ad+S75U6qIylGjLfarHFShVfx6U=" + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/blakejs/-/blakejs-1.1.1.tgz", + "integrity": "sha512-bLG6PHOCZJKNshTjGRBvET0vTciwQE6zFKOKKXPDJfwFBd4Ac0yBfPZqcGvGJap50l7ktvlpFqc2jGVaUgbJgg==" }, "bluebird": { "version": "3.7.2", @@ -741,9 +1025,9 @@ "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" }, "bn.js": { - "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==" + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" }, "body-parser": { "version": "1.19.0", @@ -763,19 +1047,70 @@ } }, "boxen": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/boxen/-/boxen-4.2.0.tgz", - "integrity": "sha512-eB4uT9RGzg2odpER62bBwSLvUeGC+WbRjjyyFhGsKnc8wp/m0+hQsMUvUe3H2V0D5vw0nBdO1hCJoZo5mKeuIQ==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-5.0.1.tgz", + "integrity": "sha512-49VBlw+PrWEF51aCmy7QIteYPIFZxSpvqBdP/2itCPPlJ49kj9zg/XPRFrdkne2W+CfwXUls8exMvu1RysZpKA==", "dev": true, "requires": { "ansi-align": "^3.0.0", - "camelcase": "^5.3.1", - "chalk": "^3.0.0", - "cli-boxes": "^2.2.0", - "string-width": "^4.1.0", - "term-size": "^2.1.0", - "type-fest": "^0.8.1", - "widest-line": "^3.1.0" + "camelcase": "^6.2.0", + "chalk": "^4.1.0", + "cli-boxes": "^2.2.1", + "string-width": "^4.2.0", + "type-fest": "^0.20.2", + "widest-line": "^3.1.0", + "wrap-ansi": "^7.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } } }, "brorand": { @@ -818,12 +1153,19 @@ } }, "browserify-rsa": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", - "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", + "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", "requires": { - "bn.js": "^4.1.0", + "bn.js": "^5.0.0", "randombytes": "^2.0.1" + }, + "dependencies": { + "bn.js": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.0.tgz", + "integrity": "sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==" + } } }, "browserify-sign": { @@ -843,9 +1185,19 @@ }, "dependencies": { "bn.js": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.1.3.tgz", - "integrity": "sha512-GkTiFpjFtUzU9CbMeJ5iazkCzGL3jrhzerzZIuqLABjbwRaFt33I9tUdSNryIptM+RxDet6OKm2WnLXzW51KsQ==" + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.0.tgz", + "integrity": "sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==" + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } }, "safe-buffer": { "version": "5.2.1", @@ -872,13 +1224,18 @@ "safe-buffer": "^5.1.2" } }, + "bson": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/bson/-/bson-1.1.6.tgz", + "integrity": "sha512-EvVNVeGo4tHxwi8L6bPj3y3itEvStdwvvlojVxxbyYfoaxJ6keLgrTuKdyfEAszFK+H3olzBuafE0yoh0D1gdg==" + }, "buffer": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.6.0.tgz", - "integrity": "sha512-/gDYp/UtU0eA1ys8bOs9J6a+E/KWIY+DZ+Q2WESNUA0jFRsJOc0SNUO6xJ5SGA1xueg3NL65W6s+NY5l9cunuw==", + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", "requires": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4" + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" } }, "buffer-equal-constant-time": { @@ -898,11 +1255,11 @@ "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=" }, "bufferutil": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.1.tgz", - "integrity": "sha512-xowrxvpxojqkagPcWRQVXZl0YXhRhAtBEIq3VoER1NH5Mw1n1o0ojdspp+GS2J//2gCVyrzQDApQ4unGF+QOoA==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.3.tgz", + "integrity": "sha512-yEYTwGndELGvfXsImMBLop58eaGW+YdONi1fNjTINSY98tmMmFijBG6WXgdkfuLNt4imzQNtIE+eBp1PVpMCSw==", "requires": { - "node-gyp-build": "~3.7.0" + "node-gyp-build": "^4.2.0" } }, "bytes": { @@ -939,16 +1296,19 @@ } } }, - "callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true + "call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + } }, "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz", + "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==", "dev": true }, "caseless": { @@ -957,13 +1317,14 @@ "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" }, "chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" } }, "chownr": { @@ -1014,16 +1375,6 @@ "resolved": "https://registry.npmjs.org/class-is/-/class-is-1.1.0.tgz", "integrity": "sha512-rhjH9AG1fvabIDoGRVH587413LPjTZgmDF9fOFCbFJQV4yuocX1mHxxvXI4g3cGwbVY9wAYIoKlg1N79frJKQw==" }, - "clear-module": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/clear-module/-/clear-module-4.1.1.tgz", - "integrity": "sha512-ng0E7LeODcT3QkazOckzZqbca+JByQy/Q2Z6qO24YsTp+pLxCfohGz2gJYJqZS0CWTX3LEUiHOqe5KlYeUbEMw==", - "dev": true, - "requires": { - "parent-module": "^2.0.0", - "resolve-from": "^5.0.0" - } - }, "cli-boxes": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz", @@ -1038,19 +1389,24 @@ "mimic-response": "^1.0.0" } }, + "coingecko-api": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/coingecko-api/-/coingecko-api-1.0.10.tgz", + "integrity": "sha512-7YLLC85+daxAw5QlBWoHVBVpJRwoPr4HtwanCr8V/WRjoyHTa1Lb9DQAvv4MDJZHiz4no6HGnDQnddtjV35oRA==" + }, "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "dev": true, "requires": { - "color-name": "~1.1.4" + "color-name": "1.1.3" } }, "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", "dev": true }, "combined-stream": { @@ -1127,6 +1483,15 @@ "vary": "^1" } }, + "crc-32": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.0.tgz", + "integrity": "sha512-1uBwHxF+Y/4yF5G48fwnKq6QsIXheor3ZLPT80yGBV1oEUwpPojlEhQbWKVw1VwcTQyMGHK1/XMmTjmlsmTTGA==", + "requires": { + "exit-on-epipe": "~1.0.1", + "printj": "~1.1.0" + } + }, "create-ecdh": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", @@ -1162,9 +1527,9 @@ } }, "cron-parser": { - "version": "2.16.3", - "resolved": "https://registry.npmjs.org/cron-parser/-/cron-parser-2.16.3.tgz", - "integrity": "sha512-XNJBD1QLFeAMUkZtZQuncAAOgJFWNhBdIbwgD22hZxrcWOImBFMKgPC66GzaXpyoJs7UvYLLgPH/8BRk/7gbZg==", + "version": "2.18.0", + "resolved": "https://registry.npmjs.org/cron-parser/-/cron-parser-2.18.0.tgz", + "integrity": "sha512-s4odpheTyydAbTBQepsqd2rNWGa2iV3cyo8g7zbI2QQYGLVsfbhmwukayS1XHppe02Oy1fg7mg6xoaraVJeEcg==", "dev": true, "requires": { "is-nan": "^1.3.0", @@ -1265,21 +1630,25 @@ "version": "1.1.3", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", - "dev": true, "requires": { "object-keys": "^1.0.12" } }, "delay": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/delay/-/delay-4.4.0.tgz", - "integrity": "sha512-txgOrJu3OdtOfTiEOT2e76dJVfG/1dz2NZ4F0Pyt4UGZJryssMRp5vdM5wQoLwSOBNdrJv3F9PAhp/heqd7vrA==" + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/delay/-/delay-4.4.1.tgz", + "integrity": "sha512-aL3AhqtfhOlT/3ai6sWXeqwnw63ATNpnUiN4HL7x9q+My5QtHlO3OIkasmug9LKzpheLdmUKGRKnYXYAS7FQkQ==" }, "delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" }, + "denque": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/denque/-/denque-1.5.0.tgz", + "integrity": "sha512-CYiCSgIF1p6EUByQPlGkKnP1M9g0ZV3qMIrqMqZqdwazygIA/YP2vrbcyl1h/WppKJTdl1F85cXIle+394iDAQ==" + }, "depd": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", @@ -1324,9 +1693,9 @@ } }, "dotenv": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.2.0.tgz", - "integrity": "sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw==" + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.6.0.tgz", + "integrity": "sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==" }, "duplexer3": { "version": "0.1.4", @@ -1357,17 +1726,17 @@ "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" }, "elliptic": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.3.tgz", - "integrity": "sha512-IMqzv5wNQf+E6aHeIqATs0tOLeOTwj1QKbRcS3jBbYkl5oLAserA8yJTT7/VyHUYG91PRmPyeQDObKLPpeS4dw==", + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", + "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", "requires": { - "bn.js": "^4.4.0", - "brorand": "^1.0.1", + "bn.js": "^4.11.9", + "brorand": "^1.1.0", "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.0" + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" } }, "emoji-regex": { @@ -1390,29 +1759,33 @@ } }, "es-abstract": { - "version": "1.17.6", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.6.tgz", - "integrity": "sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw==", - "dev": true, + "version": "1.18.5", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.5.tgz", + "integrity": "sha512-DDggyJLoS91CkJjgauM5c0yZMjiD1uK3KcaCeAmffGwZ+ODWzOkPN4QwRbsK5DOFf06fywmyLci3ZD8jLGhVYA==", "requires": { + "call-bind": "^1.0.2", "es-to-primitive": "^1.2.1", "function-bind": "^1.1.1", + "get-intrinsic": "^1.1.1", "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.2.0", - "is-regex": "^1.1.0", - "object-inspect": "^1.7.0", + "has-symbols": "^1.0.2", + "internal-slot": "^1.0.3", + "is-callable": "^1.2.3", + "is-negative-zero": "^2.0.1", + "is-regex": "^1.1.3", + "is-string": "^1.0.6", + "object-inspect": "^1.11.0", "object-keys": "^1.1.1", - "object.assign": "^4.1.0", - "string.prototype.trimend": "^1.0.1", - "string.prototype.trimstart": "^1.0.1" + "object.assign": "^4.1.2", + "string.prototype.trimend": "^1.0.4", + "string.prototype.trimstart": "^1.0.4", + "unbox-primitive": "^1.0.1" } }, "es-to-primitive": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "dev": true, "requires": { "is-callable": "^1.1.4", "is-date-object": "^1.0.1", @@ -1477,13 +1850,6 @@ "requires": { "idna-uts46-hx": "^2.3.1", "js-sha3": "^0.5.7" - }, - "dependencies": { - "js-sha3": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.5.7.tgz", - "integrity": "sha1-DU/9gALVMzqrr0oj7tL2N0yfKOc=" - } } }, "eth-lib": { @@ -1497,14 +1863,48 @@ "servify": "^0.1.12", "ws": "^3.0.0", "xhr-request-promise": "^0.1.2" + }, + "dependencies": { + "ws": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz", + "integrity": "sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==", + "requires": { + "async-limiter": "~1.0.0", + "safe-buffer": "~5.1.0", + "ultron": "~1.1.0" + } + } + } + }, + "ethereum-block-by-date": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/ethereum-block-by-date/-/ethereum-block-by-date-1.4.0.tgz", + "integrity": "sha512-3D+6esxU9bQDyFev9/9C6+Wqpb+HdSyeKnAhktIZXOQjgPdGRc4zwr/FdrgMfrJlB9Ee4cG9psu7eCgYQ3szaA==", + "requires": { + "moment": "^2.29.1" + }, + "dependencies": { + "moment": { + "version": "2.29.1", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.1.tgz", + "integrity": "sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ==" + } } }, "ethereum-bloom-filters": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/ethereum-bloom-filters/-/ethereum-bloom-filters-1.0.7.tgz", - "integrity": "sha512-cDcJJSJ9GMAcURiAWO3DxIEhTL/uWqlQnvgKpuYQzYPrt/izuGU+1ntQmHt0IRq6ADoSYHFnB+aCEFIldjhkMQ==", + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/ethereum-bloom-filters/-/ethereum-bloom-filters-1.0.10.tgz", + "integrity": "sha512-rxJ5OFN3RwjQxDcFP2Z5+Q9ho4eIdEmSc2ht0fCu8Se9nbXjZ7/031uXoUYJ87KHCOdVeiUuwSnoS7hmYAGVHA==", "requires": { "js-sha3": "^0.8.0" + }, + "dependencies": { + "js-sha3": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz", + "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==" + } } }, "ethereum-cryptography": { @@ -1529,32 +1929,69 @@ "setimmediate": "^1.0.5" } }, - "ethereumjs-common": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/ethereumjs-common/-/ethereumjs-common-1.5.2.tgz", - "integrity": "sha512-hTfZjwGX52GS2jcVO6E2sx4YuFnf0Fhp5ylo4pEPhEffNln7vS59Hr5sLnp3/QCazFLluuBZ+FZ6J5HTp0EqCA==" - }, - "ethereumjs-tx": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ethereumjs-tx/-/ethereumjs-tx-2.1.2.tgz", - "integrity": "sha512-zZEK1onCeiORb0wyCXUvg94Ve5It/K6GD1K+26KfFKodiBiS6d9lfCXlUKGBBdQ+bv7Day+JK0tj1K+BeNFRAw==", - "requires": { - "ethereumjs-common": "^1.5.0", - "ethereumjs-util": "^6.0.0" - } - }, "ethereumjs-util": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-6.2.1.tgz", - "integrity": "sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-7.1.0.tgz", + "integrity": "sha512-kR+vhu++mUDARrsMMhsjjzPduRVAeundLGXucGRHF3B4oEltOUspfgCVco4kckucj3FMlLaZHUl9n7/kdmr6Tw==", "requires": { - "@types/bn.js": "^4.11.3", - "bn.js": "^4.11.0", + "@types/bn.js": "^5.1.0", + "bn.js": "^5.1.2", "create-hash": "^1.1.2", - "elliptic": "^6.5.2", "ethereum-cryptography": "^0.1.3", "ethjs-util": "0.1.6", - "rlp": "^2.2.3" + "rlp": "^2.2.4" + }, + "dependencies": { + "@types/bn.js": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.1.0.tgz", + "integrity": "sha512-QSSVYj7pYFN49kW77o2s9xTCwZ8F2xLbjLLSEVh8D2F4JUhZtPAGOFLTD+ffqksBx/u4cE/KImFjyhqCjn/LIA==", + "requires": { + "@types/node": "*" + } + }, + "bn.js": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.0.tgz", + "integrity": "sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==" + } + } + }, + "ethers": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.4.1.tgz", + "integrity": "sha512-SrcddMdCgP1hukDvCPd87Aipbf4NWjQvdfAbZ65XSZGbfyuYPtIrUJPDH5B1SBRsdlfiEgX3eoz28DdBDzMNFg==", + "requires": { + "@ethersproject/abi": "5.4.0", + "@ethersproject/abstract-provider": "5.4.0", + "@ethersproject/abstract-signer": "5.4.0", + "@ethersproject/address": "5.4.0", + "@ethersproject/base64": "5.4.0", + "@ethersproject/basex": "5.4.0", + "@ethersproject/bignumber": "5.4.0", + "@ethersproject/bytes": "5.4.0", + "@ethersproject/constants": "5.4.0", + "@ethersproject/contracts": "5.4.0", + "@ethersproject/hash": "5.4.0", + "@ethersproject/hdnode": "5.4.0", + "@ethersproject/json-wallets": "5.4.0", + "@ethersproject/keccak256": "5.4.0", + "@ethersproject/logger": "5.4.0", + "@ethersproject/networks": "5.4.1", + "@ethersproject/pbkdf2": "5.4.0", + "@ethersproject/properties": "5.4.0", + "@ethersproject/providers": "5.4.1", + "@ethersproject/random": "5.4.0", + "@ethersproject/rlp": "5.4.0", + "@ethersproject/sha2": "5.4.0", + "@ethersproject/signing-key": "5.4.0", + "@ethersproject/solidity": "5.4.0", + "@ethersproject/strings": "5.4.0", + "@ethersproject/transactions": "5.4.0", + "@ethersproject/units": "5.4.0", + "@ethersproject/wallet": "5.4.0", + "@ethersproject/web": "5.4.0", + "@ethersproject/wordlists": "5.4.0" } }, "ethjs-unit": { @@ -1603,39 +2040,41 @@ } }, "execa": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/execa/-/execa-4.0.3.tgz", - "integrity": "sha512-WFDXGHckXPWZX19t1kCsXzOpqX9LWYNqn4C+HqZlk/V0imTkzJZqf87ZBhvpHaftERYknpk0fjSylnXVlVgI0A==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", "dev": true, "requires": { - "cross-spawn": "^7.0.0", - "get-stream": "^5.0.0", - "human-signals": "^1.1.1", + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", "is-stream": "^2.0.0", "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.0", - "onetime": "^5.1.0", - "signal-exit": "^3.0.2", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", "strip-final-newline": "^2.0.0" }, "dependencies": { "get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "dev": true, - "requires": { - "pump": "^3.0.0" - } + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true }, "is-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", - "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", "dev": true } } }, + "exit-on-epipe": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/exit-on-epipe/-/exit-on-epipe-1.0.1.tgz", + "integrity": "sha512-h2z5mrROTxce56S+pnvAV890uu7ls7f1kEvVGJbw1OlFH3/mlJ5bkXu0KRyW94v37zzHPiUd55iLn3DA7TjWpw==" + }, "express": { "version": "4.17.1", "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", @@ -1682,9 +2121,9 @@ }, "dependencies": { "type": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/type/-/type-2.1.0.tgz", - "integrity": "sha512-G9absDWvhAWCV2gmF1zKud3OyC61nZDwWvBL2DApaVFogI07CprggiQAOOjvp2NRjYWFzPyu7vwtDrQFq8jeSA==" + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/type/-/type-2.5.0.tgz", + "integrity": "sha512-180WMDQaIMm3+7hGXWf12GtdniDEy7nYcyFMKJn/eZz/6tSLXrUN9V0wKSbMjej0I1WHWbpREDEKHtqPQa9NNw==" } } }, @@ -1722,6 +2161,16 @@ "unpipe": "~1.0.0" } }, + "follow-redirects": { + "version": "1.14.2", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.2.tgz", + "integrity": "sha512-yLR6WaE2lbF0x4K2qE2p9PEXKLDjUjnR/xmjS3wHAYxtlsI9MLLBJUZirAHKzUZDGLxje7w/cXR49WOUo4rbsA==" + }, + "foreach": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", + "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=" + }, "forever-agent": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", @@ -1738,9 +2187,9 @@ } }, "forwarded": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", - "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=" + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==" }, "fresh": { "version": "0.5.2", @@ -1768,8 +2217,17 @@ "function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "get-intrinsic": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", + "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + } }, "get-stream": { "version": "4.1.0", @@ -1788,21 +2246,21 @@ } }, "global": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/global/-/global-4.3.2.tgz", - "integrity": "sha1-52mJJopsdMOJCLEwWxD8DjlOnQ8=", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/global/-/global-4.4.0.tgz", + "integrity": "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==", "requires": { "min-document": "^2.19.0", - "process": "~0.5.1" + "process": "^0.11.10" } }, "global-dirs": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-2.0.1.tgz", - "integrity": "sha512-5HqUqdhkEovj2Of/ms3IeS/EekcO54ytHRLV4PEY2rhRwrHXLQjeVEES0Lhka0xwNDtGYn58wyC4s5+MHsOO6A==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.0.tgz", + "integrity": "sha512-v8ho2DS5RiCjftj1nD9NmnfaOzTdud7RRnVd9kFNOjqZbISlx5DQ+OrTkywgd0dIt7oFCvKetZSHoHcP3sDdiA==", "dev": true, "requires": { - "ini": "^1.3.5" + "ini": "2.0.0" } }, "got": { @@ -1824,9 +2282,9 @@ } }, "graceful-fs": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", - "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==" + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz", + "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==" }, "har-schema": { "version": "2.0.0", @@ -1846,15 +2304,19 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, "requires": { "function-bind": "^1.1.1" } }, + "has-bigints": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz", + "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==" + }, "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", "dev": true }, "has-symbol-support-x": { @@ -1863,10 +2325,9 @@ "integrity": "sha512-3ToOva++HaW+eCpgqZrCfN51IPB+7bJNVT6CUATzueB5Heb8o6Nam0V3HG5dlDvZU1Gn5QLcbahiKw/XVk5JJw==" }, "has-symbols": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", - "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", - "dev": true + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", + "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==" }, "has-to-string-tag-x": { "version": "1.4.1", @@ -1876,6 +2337,14 @@ "has-symbol-support-x": "^1.4.1" } }, + "has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "requires": { + "has-symbols": "^1.0.2" + } + }, "has-yarn": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz", @@ -1892,6 +2361,16 @@ "safe-buffer": "^5.2.0" }, "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, "safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", @@ -1908,6 +2387,11 @@ "minimalistic-assert": "^1.0.1" } }, + "helmet": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/helmet/-/helmet-4.6.0.tgz", + "integrity": "sha512-HVqALKZlR95ROkrnesdhbbZJFi/rIVSoNq6f3jA/9u6MIbTsPh3xZwihjeI5+DO/2sOV6HMHooXcEOuwskHpTg==" + }, "hmac-drbg": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", @@ -1958,9 +2442,9 @@ } }, "human-signals": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", - "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", "dev": true }, "iconv-lite": { @@ -1987,9 +2471,9 @@ } }, "ieee754": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", - "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==" + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" }, "immediate": { "version": "3.0.6", @@ -2015,21 +2499,56 @@ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, "ini": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", - "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", + "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", "dev": true }, + "internal-slot": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", + "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", + "requires": { + "get-intrinsic": "^1.1.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" + } + }, "ipaddr.js": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" }, - "is-callable": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.1.tgz", - "integrity": "sha512-wliAfSzx6V+6WfMOmus1xy0XvSgf/dlStkvTfq7F0g4bOIW0PSUbnyse3NhDwdyYS1ozfUtAAySqTws3z9Eqgg==", - "dev": true + "is-arguments": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", + "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "requires": { + "has-bigints": "^1.0.1" + } + }, + "is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-callable": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", + "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==" }, "is-ci": { "version": "2.0.0", @@ -2041,10 +2560,12 @@ } }, "is-date-object": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", - "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==", - "dev": true + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "requires": { + "has-tostringtag": "^1.0.0" + } }, "is-fullwidth-code-point": { "version": "2.0.0", @@ -2057,42 +2578,58 @@ "resolved": "https://registry.npmjs.org/is-function/-/is-function-1.0.2.tgz", "integrity": "sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ==" }, + "is-generator-function": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", + "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + "requires": { + "has-tostringtag": "^1.0.0" + } + }, "is-hex-prefixed": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz", "integrity": "sha1-fY035q135dEnFIkTxXPggtd39VQ=" }, "is-installed-globally": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.3.2.tgz", - "integrity": "sha512-wZ8x1js7Ia0kecP/CHM/3ABkAmujX7WPvQk6uu3Fly/Mk44pySulQpnHG46OMjHGXApINnV4QhY3SWnECO2z5g==", + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz", + "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==", "dev": true, "requires": { - "global-dirs": "^2.0.1", - "is-path-inside": "^3.0.1" + "global-dirs": "^3.0.0", + "is-path-inside": "^3.0.2" } }, "is-nan": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/is-nan/-/is-nan-1.3.0.tgz", - "integrity": "sha512-z7bbREymOqt2CCaZVly8aC4ML3Xhfi0ekuOnjO2L8vKdl+CttdVoGZQhd4adMFAsxQ5VeRVwORs4tU8RH+HFtQ==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/is-nan/-/is-nan-1.3.2.tgz", + "integrity": "sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==", "dev": true, "requires": { + "call-bind": "^1.0.0", "define-properties": "^1.1.3" } }, "is-negative-zero": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.0.tgz", - "integrity": "sha1-lVOxIbD6wohp2p7UWeIMdUN4hGE=", - "dev": true + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz", + "integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==" }, "is-npm": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-4.0.0.tgz", - "integrity": "sha512-96ECIfh9xtDDlPylNPXhzjsykHsMJZ18ASpaWzQyBr4YRTcVjUvzaHayDAES2oU/3KpljhHUjtSRNiDwi0F0ig==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-5.0.0.tgz", + "integrity": "sha512-WW/rQLOazUq+ST/bCAVBp/2oMERWLsR7OrKyt052dNDk4DHcDE0/7QSXITlmi+VBcV13DfIbysG3tZJm5RfdBA==", "dev": true }, + "is-number-object": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.6.tgz", + "integrity": "sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g==", + "requires": { + "has-tostringtag": "^1.0.0" + } + }, "is-obj": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", @@ -2100,14 +2637,14 @@ "dev": true }, "is-object": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-object/-/is-object-1.0.1.tgz", - "integrity": "sha1-iVJojF7C/9awPsyF52ngKQMINHA=" + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-object/-/is-object-1.0.2.tgz", + "integrity": "sha512-2rRIahhZr2UWb45fIOuvZGpFtz0TyOZLf32KxBbSoUCeZR495zCKlWUKKUByk3geS2eAs7ZAABt0Y/Rx0GiQGA==" }, "is-path-inside": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.2.tgz", - "integrity": "sha512-/2UGPSgmtqwo1ktx8NDHjuPwZWmHhO+gj0f93EkhLB5RgW9RZevWYYlIkS6zePc6U2WpOdQYIwHe9YC4DWEBVg==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", "dev": true }, "is-plain-obj": { @@ -2116,12 +2653,12 @@ "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=" }, "is-regex": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.1.tgz", - "integrity": "sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg==", - "dev": true, + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", "requires": { - "has-symbols": "^1.0.1" + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" } }, "is-retry-allowed": { @@ -2134,13 +2671,32 @@ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" }, + "is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "requires": { + "has-tostringtag": "^1.0.0" + } + }, "is-symbol": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", - "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", - "dev": true, + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", "requires": { - "has-symbols": "^1.0.1" + "has-symbols": "^1.0.2" + } + }, + "is-typed-array": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.7.tgz", + "integrity": "sha512-VxlpTBGknhQ3o7YiVjIhdLU6+oD8dPz/79vvvH4F+S/c8608UCVa9fgDpa1kZgFoUST2DCgacc70UszKgzKuvA==", + "requires": { + "available-typed-arrays": "^1.0.4", + "call-bind": "^1.0.2", + "es-abstract": "^1.18.5", + "foreach": "^2.0.5", + "has-tostringtag": "^1.0.0" } }, "is-typedarray": { @@ -2157,8 +2713,7 @@ "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" }, "isexe": { "version": "2.0.0", @@ -2193,9 +2748,9 @@ "dev": true }, "js-sha3": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz", - "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==" + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.5.7.tgz", + "integrity": "sha1-DU/9gALVMzqrr0oj7tL2N0yfKOc=" }, "js-string-escape": { "version": "1.0.1", @@ -2237,15 +2792,15 @@ } }, "jsonpath-plus": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/jsonpath-plus/-/jsonpath-plus-3.0.0.tgz", - "integrity": "sha512-WQwgWEBgn+SJU1tlDa/GiY5/ngRpa9yrSj8n4BYPHcwoxTDaMEaYCHMOn42hIHHDd3CrUoRr3+HpsK0hCKoxzA==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/jsonpath-plus/-/jsonpath-plus-5.1.0.tgz", + "integrity": "sha512-890w2Pjtj0iswAxalRlt2kHthi6HKrXEfZcn+ZNZptv7F3rUGIeDuZo+C+h4vXBHLEsVjJrHeCm35nYeZLzSBQ==", "dev": true }, "jsonschema": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/jsonschema/-/jsonschema-1.2.6.tgz", - "integrity": "sha512-SqhURKZG07JyKKeo/ir24QnS4/BV7a6gQy93bUSe4lUdNp0QNpIz2c9elWJQ9dpc5cQYY6cvCzgRwy0MQCLyqA==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/jsonschema/-/jsonschema-1.4.0.tgz", + "integrity": "sha512-/YgW6pRMr6M7C+4o8kS+B/2myEpHCrxO4PEWnqJNBFMjn7EWXqlQ4tGwL6xTHeRplwuZmcAncdvfOad1nT2yMw==", "dev": true }, "jsonwebtoken": { @@ -2267,9 +2822,9 @@ }, "dependencies": { "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true }, "semver": { @@ -2292,41 +2847,15 @@ } }, "jszip": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.5.0.tgz", - "integrity": "sha512-WRtu7TPCmYePR1nazfrtuF216cIVon/3GWOvHS9QR5bIwSbnxtdpma6un3jyGGNhHsKCSzn5Ypk+EkDRvTGiFA==", + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.7.1.tgz", + "integrity": "sha512-ghL0tz1XG9ZEmRMcEN2vt7xabrDdqHHeykgARpmZ0BiIctWxM47Vt63ZO2dnp4QYt/xJVLLy5Zv1l/xRdh2byg==", "dev": true, "requires": { "lie": "~3.3.0", "pako": "~1.0.2", "readable-stream": "~2.3.6", "set-immediate-shim": "~1.0.1" - }, - "dependencies": { - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - } } }, "jwa": { @@ -2357,13 +2886,6 @@ "requires": { "node-addon-api": "^2.0.0", "node-gyp-build": "^4.2.0" - }, - "dependencies": { - "node-gyp-build": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.2.3.tgz", - "integrity": "sha512-MN6ZpzmfNCRM+3t57PTJHgHyw/h4OWnZ6mR8P5j/uZtqQr46RRuDE/P+g3n0YR/AiYXeWixZZzaip77gdICfRg==" - } } }, "keyv": { @@ -2393,9 +2915,9 @@ } }, "lodash": { - "version": "4.17.20", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", - "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==" + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" }, "lodash.includes": { "version": "4.3.0", @@ -2450,10 +2972,27 @@ "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==" }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + }, + "dependencies": { + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } + }, "luxon": { - "version": "1.25.0", - "resolved": "https://registry.npmjs.org/luxon/-/luxon-1.25.0.tgz", - "integrity": "sha512-hEgLurSH8kQRjY6i4YLey+mcKVAWXbDNlZRmM6AgWDJ1cY3atl8Ztf5wEY7VBReFbmGnwQPz7KYJblL8B2k0jQ==", + "version": "1.28.0", + "resolved": "https://registry.npmjs.org/luxon/-/luxon-1.28.0.tgz", + "integrity": "sha512-TfTiyvZhwBYM/7QdAVDh+7dBTBA29v4ik0Ce9zda3Mnf8on1S5KJI8P2jKFZ8+5C0jhmr0KwJEO/Wdpm0VeWJQ==", "dev": true }, "make-dir": { @@ -2515,6 +3054,12 @@ } } }, + "memory-pager": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz", + "integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==", + "optional": true + }, "merge-descriptors": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", @@ -2546,16 +3091,16 @@ "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" }, "mime-db": { - "version": "1.44.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz", - "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==" + "version": "1.49.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.49.0.tgz", + "integrity": "sha512-CIc8j9URtOVApSFCQIF+VBkX1RwXp/oMMOrqdyXSBXq5RWNEsRfyj1kiRnQgmNXmHxPoFIxOroKA3zcU9P+nAA==" }, "mime-types": { - "version": "2.1.27", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz", - "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==", + "version": "2.1.32", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.32.tgz", + "integrity": "sha512-hJGaVS4G4c9TSMYh2n6SQAGrC4RnfU+daP8G7cSCmaqNjiOoUY0VHCMS42pxnQmVF1GWwFhbHWn3RIxCqTmZ9A==", "requires": { - "mime-db": "1.44.0" + "mime-db": "1.49.0" } }, "mimic-fn": { @@ -2623,24 +3168,37 @@ } }, "mock-fs": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/mock-fs/-/mock-fs-4.13.0.tgz", - "integrity": "sha512-DD0vOdofJdoaRNtnWcrXe6RQbpHkPPmtqGq14uRX0F8ZKJ5nv89CVTYl/BZdppDxBDaV0hl75htg3abpEWlPZA==" + "version": "4.14.0", + "resolved": "https://registry.npmjs.org/mock-fs/-/mock-fs-4.14.0.tgz", + "integrity": "sha512-qYvlv/exQ4+svI3UOvPUpLDF0OMX5euvUH0Ny4N5QyRyhNdgAgUrVH3iUINSzEPLvx0kbo/Bp28GJKIqvE7URw==" }, "moment": { - "version": "2.28.0", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.28.0.tgz", - "integrity": "sha512-Z5KOjYmnHyd/ukynmFd/WwyXHd7L4J9vTI/nn5Ap9AVUgaAE15VvQ9MOGmJJygEUklupqIrFnor/tjTwRU+tQw==" + "version": "2.29.1", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.1.tgz", + "integrity": "sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ==" }, "moment-timezone": { - "version": "0.5.31", - "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.31.tgz", - "integrity": "sha512-+GgHNg8xRhMXfEbv81iDtrVeTcWt0kWmTEY1XQK14dICTXnWJnT0dxdlPspwqF3keKMVPXwayEsk1DI0AA/jdA==", + "version": "0.5.33", + "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.33.tgz", + "integrity": "sha512-PTc2vcT8K9J5/9rDEPe5czSIKgLoGsH8UNpA4qZTVw0Vd/Uz19geE9abbIOQKaAQFcnQ3v5YEXrbSc5BpshH+w==", "dev": true, "requires": { "moment": ">= 2.9.0" } }, + "mongodb": { + "version": "3.6.11", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-3.6.11.tgz", + "integrity": "sha512-4Y4lTFHDHZZdgMaHmojtNAlqkvddX2QQBEN0K//GzxhGwlI9tZ9R0vhbjr1Decw+TF7qK0ZLjQT292XgHRRQgw==", + "requires": { + "bl": "^2.2.1", + "bson": "^1.1.4", + "denque": "^1.4.1", + "optional-require": "^1.0.3", + "safe-buffer": "^5.1.2", + "saslprep": "^1.0.0" + } + }, "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", @@ -2704,31 +3262,40 @@ "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-2.0.2.tgz", "integrity": "sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==" }, + "node-cron": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/node-cron/-/node-cron-2.0.3.tgz", + "integrity": "sha512-eJI+QitXlwcgiZwNNSRbqsjeZMp5shyajMR81RZCqeW0ZDEj4zU9tpd4nTh/1JsBiKbF8d08FCewiipDmVIYjg==", + "requires": { + "opencollective-postinstall": "^2.0.0", + "tz-offset": "0.0.1" + } + }, "node-fetch": { "version": "2.6.1", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==" }, "node-gyp-build": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-3.7.0.tgz", - "integrity": "sha512-L/Eg02Epx6Si2NXmedx+Okg+4UHqmaf3TNcxd50SF9NQGcJaON3AtU++kax69XV7YWz4tUspqZSAsVofhFKG2w==" + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.2.3.tgz", + "integrity": "sha512-MN6ZpzmfNCRM+3t57PTJHgHyw/h4OWnZ6mR8P5j/uZtqQr46RRuDE/P+g3n0YR/AiYXeWixZZzaip77gdICfRg==" }, "node-schedule": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/node-schedule/-/node-schedule-1.3.2.tgz", - "integrity": "sha512-GIND2pHMHiReSZSvS6dpZcDH7pGPGFfWBIEud6S00Q8zEIzAs9ommdyRK1ZbQt8y1LyZsJYZgPnyi7gpU2lcdw==", + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/node-schedule/-/node-schedule-1.3.3.tgz", + "integrity": "sha512-uF9Ubn6luOPrcAYKfsXWimcJ1tPFtQ8I85wb4T3NgJQrXazEzojcFZVk46ZlLHby3eEJChgkV/0T689IsXh2Gw==", "dev": true, "requires": { - "cron-parser": "^2.7.3", + "cron-parser": "^2.18.0", "long-timeout": "0.1.1", - "sorted-array-functions": "^1.0.0" + "sorted-array-functions": "^1.3.0" } }, "normalize-url": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.0.tgz", - "integrity": "sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ==" + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz", + "integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==" }, "npm-run-path": { "version": "4.0.1", @@ -2772,60 +3339,35 @@ "dev": true }, "object-inspect": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.8.0.tgz", - "integrity": "sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA==", - "dev": true + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.11.0.tgz", + "integrity": "sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg==" }, "object-keys": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" }, "object.assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.1.tgz", - "integrity": "sha512-VT/cxmx5yaoHSOTSyrCygIDFco+RsibY2NM0a4RdEeY/4KgqezwFtK1yr3U67xYhqJSlASm2pKhLVzPj2lr4bA==", - "dev": true, + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", + "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", "requires": { + "call-bind": "^1.0.0", "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.0", "has-symbols": "^1.0.1", "object-keys": "^1.1.1" - }, - "dependencies": { - "es-abstract": { - "version": "1.18.0-next.0", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0-next.0.tgz", - "integrity": "sha512-elZXTZXKn51hUBdJjSZGYRujuzilgXo8vSPQzjGYXLvSlGiCo8VO8ZGV3kjo9a0WNJJ57hENagwbtlRuHuzkcQ==", - "dev": true, - "requires": { - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.2.0", - "is-negative-zero": "^2.0.0", - "is-regex": "^1.1.1", - "object-inspect": "^1.8.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.0", - "string.prototype.trimend": "^1.0.1", - "string.prototype.trimstart": "^1.0.1" - } - } } }, "object.fromentries": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.2.tgz", - "integrity": "sha512-r3ZiBH7MQppDJVLx6fhD618GKNG40CZYH9wgwdhKxBDDbQgjeWGGd4AtkZad84d291YxvWe7bJGuE65Anh0dxQ==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.4.tgz", + "integrity": "sha512-EsFBshs5RUUpQEY1D4q/m59kMfz4YJvxuNCJcv/jWwOJr34EaVnG11ZrZa0UHB3wnzV1wx8m58T4hQL8IuNXlQ==", "dev": true, "requires": { + "call-bind": "^1.0.2", "define-properties": "^1.1.3", - "es-abstract": "^1.17.0-next.1", - "function-bind": "^1.1.1", + "es-abstract": "^1.18.0-next.2", "has": "^1.0.3" } }, @@ -2862,6 +3404,19 @@ "mimic-fn": "^2.1.0" } }, + "opencollective-postinstall": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/opencollective-postinstall/-/opencollective-postinstall-2.0.3.tgz", + "integrity": "sha512-8AV/sCtuzUeTo8gQK5qDZzARrulB3egtLzFgteqB2tcT4Mw7B8Kt7JcDHmltjz6FOAHsvTevk70gZEbhM4ZS9Q==" + }, + "optional-require": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/optional-require/-/optional-require-1.1.7.tgz", + "integrity": "sha512-cIeRZocXsZnZYn+SevbtSqNlLbeoS4mLzuNn4fvXRMDRNhTGg0sxuKXl0FnZCtnew85LorNxIbZp5OeliILhMw==", + "requires": { + "require-at": "^1.0.6" + } + }, "p-cancelable": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", @@ -2879,9 +3434,9 @@ "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=" }, "p-memoize": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-memoize/-/p-memoize-4.0.0.tgz", - "integrity": "sha512-oMxCJKVS75Bf2RWtXJNQNaX2K1G0FYpllOh2iTsPXZqnf9dWMcis3BL+pRdLeQY8lIdwwL01k/UV5LBdcVhZzg==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/p-memoize/-/p-memoize-4.0.1.tgz", + "integrity": "sha512-km0sP12uE0dOZ5qP+s7kGVf07QngxyG0gS8sYFvFWhqlgzOsSy+m71aUejf/0akxj5W7gE//2G74qTv6b4iMog==", "dev": true, "requires": { "mem": "^6.0.1", @@ -2897,13 +3452,13 @@ } }, "p-queue": { - "version": "6.6.1", - "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-6.6.1.tgz", - "integrity": "sha512-miQiSxLYPYBxGkrldecZC18OTLjdUqnlRebGzPRiVxB8mco7usCmm7hFuxiTvp93K18JnLtE4KMMycjAu/cQQg==", + "version": "6.6.2", + "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-6.6.2.tgz", + "integrity": "sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==", "dev": true, "requires": { "eventemitter3": "^4.0.4", - "p-timeout": "^3.1.0" + "p-timeout": "^3.2.0" }, "dependencies": { "p-timeout": { @@ -2918,13 +3473,13 @@ } }, "p-retry": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.2.0.tgz", - "integrity": "sha512-jPH38/MRh263KKcq0wBNOGFJbm+U6784RilTmHjB/HM9kH9V8WlCpVUcdOmip9cjXOh6MxZ5yk1z2SjDUJfWmA==", + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.1.tgz", + "integrity": "sha512-e2xXGNhZOZ0lfgR9kL34iGlU8N/KO0xZnQxVEwdeOvpqNDQfdnxIYizvWtK8RglUa3bGqI8g0R/BdfzLMxRkiA==", "dev": true, "requires": { "@types/retry": "^0.12.0", - "retry": "^0.12.0" + "retry": "^0.13.1" } }, "p-timeout": { @@ -2961,15 +3516,6 @@ "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", "dev": true }, - "parent-module": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-2.0.0.tgz", - "integrity": "sha512-uo0Z9JJeWzv8BG+tRcapBKNJ0dro9cLyczGzulS6EfeyAdeC9sbojtW6XwvYxJkEne9En+J2XEl4zyglVeIwFg==", - "dev": true, - "requires": { - "callsites": "^3.1.0" - } - }, "parse-asn1": { "version": "5.1.6", "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", @@ -2983,9 +3529,9 @@ } }, "parse-headers": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.3.tgz", - "integrity": "sha512-QhhZ+DCCit2Coi2vmAKbq5RGTRcQUOE2+REgv8vdyu7MnYx2eZztegqtTx99TZ86GTIwqiy3+4nQTWZ2tgmdCA==" + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.4.tgz", + "integrity": "sha512-psZ9iZoCNFLrgRjZ1d8mn0h9WRqJwFxM9q3x7iUjN/YT2OksthDJ5TiPCu2F38kS4zutqfW+YdVVkBZZx3/1aw==" }, "parseurl": { "version": "1.3.3", @@ -3004,9 +3550,9 @@ "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" }, "pbkdf2": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.1.tgz", - "integrity": "sha512-4Ejy1OPxi9f2tt1rRV7Go7zmfDQ+ZectEQz3VGUQhgq62HtIRPDyG/JtnwIxs6x3uNMwo2V7q1fMvKjb+Tnpqg==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", + "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", "requires": { "create-hash": "^1.1.2", "create-hmac": "^1.1.4", @@ -3041,9 +3587,9 @@ }, "dependencies": { "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, "requires": { "ms": "^2.1.1" @@ -3059,9 +3605,9 @@ } }, "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true } } @@ -3071,29 +3617,27 @@ "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=" }, - "prettier": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.1.1.tgz", - "integrity": "sha512-9bY+5ZWCfqj3ghYBLxApy2zf6m+NJo5GzmLTpr9FsApsfjriNnS2dahWReHMi7qNPhhHl9SYHJs2cHZLgexNIw==", - "dev": true + "printj": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/printj/-/printj-1.1.2.tgz", + "integrity": "sha512-zA2SmoLaxZyArQTOPj5LXecR+RagfPSU5Kw1qP+jkWeNlrq+eJZyY2oS68SU1Z/7/myXM4lo9716laOFAVStCQ==" }, "process": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/process/-/process-0.5.2.tgz", - "integrity": "sha1-FjjYqONML0QKkduVq5rrZ3/Bhc8=" + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=" }, "process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" }, "proxy-addr": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz", - "integrity": "sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==", + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", "requires": { - "forwarded": "~0.1.2", + "forwarded": "0.2.0", "ipaddr.js": "1.9.1" } }, @@ -3130,9 +3674,9 @@ "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" }, "pupa": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pupa/-/pupa-2.0.1.tgz", - "integrity": "sha512-hEJH0s8PXLY/cdXh66tNEQGndDrIKNqNC5xmrysZy3i5C3oEoLna7YAOad+7u125+zH1HNXUmGEkrhb3c2VriA==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/pupa/-/pupa-2.1.1.tgz", + "integrity": "sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A==", "dev": true, "requires": { "escape-goat": "^2.0.0" @@ -3207,22 +3751,34 @@ "ini": "~1.3.0", "minimist": "^1.2.0", "strip-json-comments": "~2.0.1" + }, + "dependencies": { + "ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true + } } }, "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" } }, "registry-auth-token": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.0.tgz", - "integrity": "sha512-P+lWzPrsgfN+UEpDS3U8AQKg/UjZX6mQSJueZj3EK+vNESoqBSpBUD3gmu4sF9lOsjXWjF11dQKUqemf3veq1w==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.1.tgz", + "integrity": "sha512-6gkSb4U6aWJB4SF2ZvLb76yCBjcvufXBqvvEx1HbmKPkutswjW1xNVRY0+daljIYRbogN7O0etYSlbiaEQyMyw==", "dev": true, "requires": { "rc": "^1.2.8" @@ -3271,11 +3827,10 @@ } } }, - "resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true + "require-at": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/require-at/-/require-at-1.0.6.tgz", + "integrity": "sha512-7i1auJbMUrXEAZCOQ0VNJgmcT2VOKPRl2YGJwgpHpC9CE91Mv4/4UYIUm4chGJaI381ZDq1JUicFii64Hapd8g==" }, "responselike": { "version": "1.0.2", @@ -3286,9 +3841,9 @@ } }, "retry": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", - "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=", + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", "dev": true }, "ripemd160": { @@ -3318,6 +3873,15 @@ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, + "saslprep": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/saslprep/-/saslprep-1.0.3.tgz", + "integrity": "sha512-/MY/PEMbk2SuY5sScONwhUDsV2p77Znkb/q3nSVstq/yQzYJOH/Azh29p9oJLsl3LnQwSvZDKagDGBsBwSooag==", + "optional": true, + "requires": { + "sparse-bitfield": "^3.0.3" + } + }, "sax": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.1.tgz", @@ -3337,20 +3901,16 @@ "elliptic": "^6.5.2", "node-addon-api": "^2.0.0", "node-gyp-build": "^4.2.0" - }, - "dependencies": { - "node-gyp-build": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.2.3.tgz", - "integrity": "sha512-MN6ZpzmfNCRM+3t57PTJHgHyw/h4OWnZ6mR8P5j/uZtqQr46RRuDE/P+g3n0YR/AiYXeWixZZzaip77gdICfRg==" - } } }, "semver": { - "version": "7.3.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", - "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", - "dev": true + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } }, "semver-compare": { "version": "1.0.0", @@ -3423,65 +3983,13 @@ } }, "serverless-domain-manager": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/serverless-domain-manager/-/serverless-domain-manager-4.2.0.tgz", - "integrity": "sha512-FdWZyDC2v/rC/PCfMHoEqcL2u0OdgHAPGLW8KIBeiS83xgMEtyP7A4+ispBtQvZ4nsfJNyPiz4Bv5eO1RdMpXw==", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/serverless-domain-manager/-/serverless-domain-manager-4.2.3.tgz", + "integrity": "sha512-qZJwl98TQ6V0YtCnjywpdoruyFUdCprm55tUyF7Hecd5S3QJg5tovXCg2bTnmt0pieGHut4l9oqBdkcOPiGzjg==", "dev": true, "requires": { - "aws-sdk": "^2.490.0", - "chalk": "^2.4.1" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } + "aws-sdk": "^2.755.0", + "chalk": "^2.4.2" } }, "serverless-export-swagger": { @@ -3494,58 +4002,117 @@ } }, "serverless-offline": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/serverless-offline/-/serverless-offline-6.7.0.tgz", - "integrity": "sha512-N/5vUk8PzSzViwRjeLIM/o5LYk6NudaSEoZRlwQFSGeLuQSHZuFUvNZlCSK3e4N3gs1CLKMP0Ks1H0/jHD/8gQ==", + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/serverless-offline/-/serverless-offline-6.9.0.tgz", + "integrity": "sha512-toKcyXUv0rFM7nGk/0QcCxP1Zlv/37IAf3vQiUlOh5XHPl6pFWfHUVF4HelMkosAeWJqJt1SngNmK38uiAsLtg==", "dev": true, "requires": { "@hapi/boom": "^7.4.11", "@hapi/h2o2": "^8.3.2", "@hapi/hapi": "^18.4.1", - "aws-sdk": "^2.624.0", - "boxen": "^4.2.0", - "chalk": "^3.0.0", - "clear-module": "^4.1.1", + "aws-sdk": "^2.834.0", + "boxen": "^5.0.0", + "chalk": "^4.1.0", "cuid": "^2.1.8", - "execa": "^4.0.0", + "execa": "^5.0.0", "extend": "^3.0.2", - "fs-extra": "^8.1.0", + "fs-extra": "^9.1.0", "java-invoke-local": "0.0.6", "js-string-escape": "^1.0.1", - "jsonpath-plus": "^3.0.0", - "jsonschema": "^1.2.6", + "jsonpath-plus": "^5.0.2", + "jsonschema": "^1.4.0", "jsonwebtoken": "^8.5.1", - "jszip": "^3.2.2", - "luxon": "^1.22.0", - "node-fetch": "^2.6.0", - "node-schedule": "^1.3.2", - "object.fromentries": "^2.0.2", - "p-memoize": "^4.0.0", - "p-queue": "^6.3.0", - "p-retry": "^4.2.0", + "jszip": "^3.5.0", + "luxon": "^1.25.0", + "node-fetch": "^2.6.1", + "node-schedule": "^1.3.3", + "object.fromentries": "^2.0.3", + "p-memoize": "^4.0.1", + "p-queue": "^6.6.2", + "p-retry": "^4.3.0", "please-upgrade-node": "^3.2.0", - "portfinder": "^1.0.25", - "semver": "^7.1.3", - "update-notifier": "^4.1.0", - "velocityjs": "^2.0.0", - "ws": "^7.2.1" + "portfinder": "^1.0.28", + "semver": "^7.3.4", + "update-notifier": "^5.0.1", + "velocityjs": "^2.0.3", + "ws": "^7.4.2" }, "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, "fs-extra": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", "dev": true, "requires": { + "at-least-node": "^1.0.0", "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" } }, - "ws": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.3.1.tgz", - "integrity": "sha512-D3RuNkynyHmEJIpD2qrgVkc9DQ23OrN/moAwZX4L8DfvszsJxpjQuUq3LMx6HoYji9fbIOBY18XWBsAux1ZZUA==", + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", "dev": true } } @@ -3602,6 +4169,16 @@ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true }, + "side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "requires": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + } + }, "signal-exit": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", @@ -3629,6 +4206,15 @@ "integrity": "sha512-2sqgzeFlid6N4Z2fUQ1cvFmTOLRi/sEDzSQ0OKYchqgoPmQBVyM3959qYx3fpS6Esef80KjmpgPeEr028dP3OA==", "dev": true }, + "sparse-bitfield": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz", + "integrity": "sha1-/0rm5oZWBWuks+eSqzM004JzyhE=", + "optional": true, + "requires": { + "memory-pager": "^1.0.2" + } + }, "sshpk": { "version": "1.16.1", "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", @@ -3656,9 +4242,9 @@ "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=" }, "string-width": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", - "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", + "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", "dev": true, "requires": { "emoji-regex": "^8.0.0", @@ -3696,38 +4282,29 @@ } }, "string.prototype.trimend": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz", - "integrity": "sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g==", - "dev": true, + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", + "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.5" + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" } }, "string.prototype.trimstart": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz", - "integrity": "sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw==", - "dev": true, + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", + "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.5" + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" } }, "string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "requires": { - "safe-buffer": "~5.2.0" - }, - "dependencies": { - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" - } + "safe-buffer": "~5.1.0" } }, "strip-ansi": { @@ -3760,12 +4337,25 @@ "dev": true }, "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, "requires": { - "has-flag": "^4.0.0" + "has-flag": "^3.0.0" + } + }, + "swagger-ui-dist": { + "version": "3.52.0", + "resolved": "https://registry.npmjs.org/swagger-ui-dist/-/swagger-ui-dist-3.52.0.tgz", + "integrity": "sha512-SGfhW8FCih00QG59PphdeAUtTNw7HS5k3iPqDZowerPw9mcbhKchUb12kbROk99c1X6RTWW1gB1kqgfnYGuCSg==" + }, + "swagger-ui-express": { + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/swagger-ui-express/-/swagger-ui-express-4.1.6.tgz", + "integrity": "sha512-Xs2BGGudvDBtL7RXcYtNvHsFtP1DBFPMJFRxHe5ez/VG/rzVOEjazJOOSc/kSCyxreCTKfJrII6MJlL9a6t8vw==", + "requires": { + "swagger-ui-dist": "^3.18.1" } }, "swarm-js": { @@ -3833,17 +4423,17 @@ } }, "tar": { - "version": "4.4.13", - "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.13.tgz", - "integrity": "sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA==", - "requires": { - "chownr": "^1.1.1", - "fs-minipass": "^1.2.5", - "minipass": "^2.8.6", - "minizlib": "^1.2.1", - "mkdirp": "^0.5.0", - "safe-buffer": "^5.1.2", - "yallist": "^3.0.3" + "version": "4.4.17", + "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.17.tgz", + "integrity": "sha512-q7OwXq6NTdcYIa+k58nEMV3j1euhDhGCs/VRw9ymx/PbH0jtIM2+VTgDE/BW3rbLkrBUXs5fzEKgic5oUciu7g==", + "requires": { + "chownr": "^1.1.4", + "fs-minipass": "^1.2.7", + "minipass": "^2.9.0", + "minizlib": "^1.3.3", + "mkdirp": "^0.5.5", + "safe-buffer": "^5.2.1", + "yallist": "^3.1.1" }, "dependencies": { "mkdirp": { @@ -3853,15 +4443,14 @@ "requires": { "minimist": "^1.2.5" } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" } } }, - "term-size": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/term-size/-/term-size-2.2.0.tgz", - "integrity": "sha512-a6sumDlzyHVJWb8+YofY4TW112G6p2FCPEAFk+59gIYHv3XHRhm9ltVQ9kli4hNWeQBwSpe8cRN25x0ROunMOw==", - "dev": true - }, "timed-out": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", @@ -3905,9 +4494,9 @@ "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==" }, "type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", "dev": true }, "type-is": { @@ -3927,15 +4516,26 @@ "is-typedarray": "^1.0.0" } }, + "tz-offset": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/tz-offset/-/tz-offset-0.0.1.tgz", + "integrity": "sha512-kMBmblijHJXyOpKzgDhKx9INYU4u4E1RPMB0HqmKSgWG8vEcf3exEfLh4FFfzd3xdQOw9EuIy/cP0akY6rHopQ==" + }, "ultron": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.1.1.tgz", "integrity": "sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og==" }, - "underscore": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.9.1.tgz", - "integrity": "sha512-5/4etnCkd9c8gwgowi5/om/mYO5ajCaOgdzj/oW+0eQV9WxKBDZw5+ycmKmeaTXjInS/W0BzpGLo2xR2aBwZdg==" + "unbox-primitive": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", + "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==", + "requires": { + "function-bind": "^1.1.1", + "has-bigints": "^1.0.1", + "has-symbols": "^1.0.2", + "which-boxed-primitive": "^1.0.2" + } }, "unique-string": { "version": "2.0.0", @@ -3957,30 +4557,82 @@ "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" }, "update-notifier": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-4.1.1.tgz", - "integrity": "sha512-9y+Kds0+LoLG6yN802wVXoIfxYEwh3FlZwzMwpCZp62S2i1/Jzeqb9Eeeju3NSHccGGasfGlK5/vEHbAifYRDg==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-5.1.0.tgz", + "integrity": "sha512-ItnICHbeMh9GqUy31hFPrD1kcuZ3rpxDZbf4KUDavXwS0bW5m7SLbDQpGX3UYr072cbrF5hFUs3r5tUsPwjfHw==", "dev": true, "requires": { - "boxen": "^4.2.0", - "chalk": "^3.0.0", + "boxen": "^5.0.0", + "chalk": "^4.1.0", "configstore": "^5.0.1", "has-yarn": "^2.1.0", "import-lazy": "^2.1.0", "is-ci": "^2.0.0", - "is-installed-globally": "^0.3.1", - "is-npm": "^4.0.0", + "is-installed-globally": "^0.4.0", + "is-npm": "^5.0.0", "is-yarn-global": "^0.3.0", - "latest-version": "^5.0.0", - "pupa": "^2.0.1", + "latest-version": "^5.1.0", + "pupa": "^2.1.1", + "semver": "^7.3.4", "semver-diff": "^3.1.1", "xdg-basedir": "^4.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } } }, "uri-js": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.0.tgz", - "integrity": "sha512-B0yRTzYdUCCn9n+F4+Gh4yIDtMQcaJsmYBDsTSG8g/OejKBodLQ2IHfN3bM7jUsRXndopT7OIXWdYqc1fjmV6g==", + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", "requires": { "punycode": "^2.1.0" } @@ -4022,11 +4674,11 @@ "integrity": "sha1-FQWgOiiaSMvXpDTvuu7FBV9WM6k=" }, "utf-8-validate": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.2.tgz", - "integrity": "sha512-SwV++i2gTD5qh2XqaPzBnNX88N6HdyhQrNNRykvcS0QKvItV9u3vPEJr+X5Hhfb1JC0r0e1alL0iB09rY8+nmw==", + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.5.tgz", + "integrity": "sha512-+pnxRYsS/axEpkrrEpzYfNZGXp0IjC/9RIxwM5gntY4Koi8SHmUGSfxfWqxZdRxrtaoVstuOzUp/rbs3JSPELQ==", "requires": { - "node-gyp-build": "~3.7.0" + "node-gyp-build": "^4.2.0" } }, "utf8": { @@ -4034,6 +4686,19 @@ "resolved": "https://registry.npmjs.org/utf8/-/utf8-3.0.0.tgz", "integrity": "sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ==" }, + "util": { + "version": "0.12.4", + "resolved": "https://registry.npmjs.org/util/-/util-0.12.4.tgz", + "integrity": "sha512-bxZ9qtSlGUWSOy9Qa9Xgk11kSslpuZwaxCg4sNIDj6FLucDab2JxnHwyNTCpHMtK1MjoQiWQ6DiUMZYbSrO+Sw==", + "requires": { + "inherits": "^2.0.3", + "is-arguments": "^1.0.4", + "is-generator-function": "^1.0.7", + "is-typed-array": "^1.1.3", + "safe-buffer": "^5.1.2", + "which-typed-array": "^1.1.2" + } + }, "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", @@ -4050,9 +4715,9 @@ "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" }, "varint": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/varint/-/varint-5.0.0.tgz", - "integrity": "sha1-2Ca4n3SQcy+rwMDtaT7Uddyynr8=" + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/varint/-/varint-5.0.2.tgz", + "integrity": "sha512-lKxKYG6H03yCZUpAGOPOsMcGxd1RHCu1iKvEHYDPmTyq2HueGhD73ssNBqqQWfvYs04G9iUFRvmAVLW20Jw6ow==" }, "vary": { "version": "1.1.2", @@ -4060,9 +4725,9 @@ "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" }, "velocityjs": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/velocityjs/-/velocityjs-2.0.1.tgz", - "integrity": "sha512-KXVGRAOPCm8DhMdrhHqXyELIZNs3CTe2Vz1Kg09zzSycEmE9VzjiSnG50n3rs3FuiL9ek7c36sYJg+R+8EO2Zg==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/velocityjs/-/velocityjs-2.0.3.tgz", + "integrity": "sha512-sUkygY7HwvbKZvS3naiI7t2o4RTqui6efSwTXLb03igdvPKm3SwCpnqA2kU4/jLD2f0eHB9xPoiza9XAkpuU+g==", "dev": true }, "verror": { @@ -4076,143 +4741,156 @@ } }, "web3": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/web3/-/web3-1.3.0.tgz", - "integrity": "sha512-4q9dna0RecnrlgD/bD1C5S+81Untbd6Z/TBD7rb+D5Bvvc0Wxjr4OP70x+LlnwuRDjDtzBwJbNUblh2grlVArw==", + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/web3/-/web3-1.5.2.tgz", + "integrity": "sha512-aapKLdO8t7Cos6tZLeeQUtCJvTiPMlLcHsHHDLSBZ/VaJEucSTxzun32M8sp3BmF4waDEmhY+iyUM1BKvtAcVQ==", "requires": { - "web3-bzz": "1.3.0", - "web3-core": "1.3.0", - "web3-eth": "1.3.0", - "web3-eth-personal": "1.3.0", - "web3-net": "1.3.0", - "web3-shh": "1.3.0", - "web3-utils": "1.3.0" + "web3-bzz": "1.5.2", + "web3-core": "1.5.2", + "web3-eth": "1.5.2", + "web3-eth-personal": "1.5.2", + "web3-net": "1.5.2", + "web3-shh": "1.5.2", + "web3-utils": "1.5.2" } }, "web3-bzz": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/web3-bzz/-/web3-bzz-1.3.0.tgz", - "integrity": "sha512-ibYAnKab+sgTo/UdfbrvYfWblXjjgSMgyy9/FHa6WXS14n/HVB+HfWqGz2EM3fok8Wy5XoKGMvdqvERQ/mzq1w==", + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/web3-bzz/-/web3-bzz-1.5.2.tgz", + "integrity": "sha512-W/sPCdA+XQ9duUYKHAwf/g69cbbV8gTCRsa1MpZwU7spXECiyJ2EvD/QzAZ+UpJk3GELXFF/fUByeZ3VRQKF2g==", "requires": { "@types/node": "^12.12.6", "got": "9.6.0", - "swarm-js": "^0.1.40", - "underscore": "1.9.1" + "swarm-js": "^0.1.40" } }, "web3-core": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/web3-core/-/web3-core-1.3.0.tgz", - "integrity": "sha512-BwWvAaKJf4KFG9QsKRi3MNoNgzjI6szyUlgme1qNPxUdCkaS3Rdpa0VKYNHP7M/YTk82/59kNE66mH5vmoaXjA==", + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/web3-core/-/web3-core-1.5.2.tgz", + "integrity": "sha512-sebMpQbg3kbh3vHUbHrlKGKOxDWqjgt8KatmTBsTAWj/HwWYVDzeX+2Q84+swNYsm2DrTBVFlqTErFUwPBvyaA==", "requires": { "@types/bn.js": "^4.11.5", "@types/node": "^12.12.6", "bignumber.js": "^9.0.0", - "web3-core-helpers": "1.3.0", - "web3-core-method": "1.3.0", - "web3-core-requestmanager": "1.3.0", - "web3-utils": "1.3.0" + "web3-core-helpers": "1.5.2", + "web3-core-method": "1.5.2", + "web3-core-requestmanager": "1.5.2", + "web3-utils": "1.5.2" } }, "web3-core-helpers": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.3.0.tgz", - "integrity": "sha512-+MFb1kZCrRctf7UYE7NCG4rGhSXaQJ/KF07di9GVK1pxy1K0+rFi61ZobuV1ky9uQp+uhhSPts4Zp55kRDB5sw==", + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.5.2.tgz", + "integrity": "sha512-U7LJoeUdQ3aY9t5gU7t/1XpcApsWm+4AcW5qKl/44ZxD44w0Dmsq1c5zJm3GuLr/a9MwQfXK4lpmvxVQWHHQRg==", "requires": { - "underscore": "1.9.1", - "web3-eth-iban": "1.3.0", - "web3-utils": "1.3.0" + "web3-eth-iban": "1.5.2", + "web3-utils": "1.5.2" } }, "web3-core-method": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/web3-core-method/-/web3-core-method-1.3.0.tgz", - "integrity": "sha512-h0yFDrYVzy5WkLxC/C3q+hiMnzxdWm9p1T1rslnuHgOp6nYfqzu/6mUIXrsS4h/OWiGJt+BZ0xVZmtC31HDWtg==", + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/web3-core-method/-/web3-core-method-1.5.2.tgz", + "integrity": "sha512-/mC5t9UjjJoQmJJqO5nWK41YHo+tMzFaT7Tp7jDCQsBkinE68KsUJkt0jzygpheW84Zra0DVp6q19gf96+cugg==", "requires": { + "@ethereumjs/common": "^2.4.0", "@ethersproject/transactions": "^5.0.0-beta.135", - "underscore": "1.9.1", - "web3-core-helpers": "1.3.0", - "web3-core-promievent": "1.3.0", - "web3-core-subscriptions": "1.3.0", - "web3-utils": "1.3.0" + "web3-core-helpers": "1.5.2", + "web3-core-promievent": "1.5.2", + "web3-core-subscriptions": "1.5.2", + "web3-utils": "1.5.2" } }, "web3-core-promievent": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/web3-core-promievent/-/web3-core-promievent-1.3.0.tgz", - "integrity": "sha512-blv69wrXw447TP3iPvYJpllkhW6B18nfuEbrfcr3n2Y0v1Jx8VJacNZFDFsFIcgXcgUIVCtOpimU7w9v4+rtaw==", + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/web3-core-promievent/-/web3-core-promievent-1.5.2.tgz", + "integrity": "sha512-5DacbJXe98ozSor7JlkTNCy6G8945VunRRkPxMk98rUrg60ECVEM/vuefk1atACzjQsKx6tmLZuHxbJQ64TQeQ==", "requires": { "eventemitter3": "4.0.4" } }, "web3-core-requestmanager": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/web3-core-requestmanager/-/web3-core-requestmanager-1.3.0.tgz", - "integrity": "sha512-3yMbuGcomtzlmvTVqNRydxsx7oPlw3ioRL6ReF9PeNYDkUsZaUib+6Dp5eBt7UXh5X+SIn/xa1smhDHz5/HpAw==", + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/web3-core-requestmanager/-/web3-core-requestmanager-1.5.2.tgz", + "integrity": "sha512-oRVW9OrAsXN2JIZt68OEg1Mb1A9a/L3JAGMv15zLEFEnJEGw0KQsGK1ET2kvZBzvpFd5G0EVkYCnx7WDe4HSNw==", "requires": { - "underscore": "1.9.1", - "web3-core-helpers": "1.3.0", - "web3-providers-http": "1.3.0", - "web3-providers-ipc": "1.3.0", - "web3-providers-ws": "1.3.0" + "util": "^0.12.0", + "web3-core-helpers": "1.5.2", + "web3-providers-http": "1.5.2", + "web3-providers-ipc": "1.5.2", + "web3-providers-ws": "1.5.2" } }, "web3-core-subscriptions": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/web3-core-subscriptions/-/web3-core-subscriptions-1.3.0.tgz", - "integrity": "sha512-MUUQUAhJDb+Nz3S97ExVWveH4utoUnsbPWP+q1HJH437hEGb4vunIb9KvN3hFHLB+aHJfPeStM/4yYTz5PeuyQ==", + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/web3-core-subscriptions/-/web3-core-subscriptions-1.5.2.tgz", + "integrity": "sha512-hapI4rKFk22yurtIv0BYvkraHsM7epA4iI8Np+HuH6P9DD0zj/llaps6TXLM9HyacLBRwmOLZmr+pHBsPopUnQ==", "requires": { "eventemitter3": "4.0.4", - "underscore": "1.9.1", - "web3-core-helpers": "1.3.0" + "web3-core-helpers": "1.5.2" } }, "web3-eth": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/web3-eth/-/web3-eth-1.3.0.tgz", - "integrity": "sha512-/bzJcxXPM9EM18JM5kO2JjZ3nEqVo3HxqU93aWAEgJNqaP/Lltmufl2GpvIB2Hvj+FXAjAXquxUdQ2/xP7BzHQ==", - "requires": { - "underscore": "1.9.1", - "web3-core": "1.3.0", - "web3-core-helpers": "1.3.0", - "web3-core-method": "1.3.0", - "web3-core-subscriptions": "1.3.0", - "web3-eth-abi": "1.3.0", - "web3-eth-accounts": "1.3.0", - "web3-eth-contract": "1.3.0", - "web3-eth-ens": "1.3.0", - "web3-eth-iban": "1.3.0", - "web3-eth-personal": "1.3.0", - "web3-net": "1.3.0", - "web3-utils": "1.3.0" + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/web3-eth/-/web3-eth-1.5.2.tgz", + "integrity": "sha512-DwWQ6TCOUqvYyo7T20S7HpQDPveNHNqOn2Q2F3E8ZFyEjmqT4XsGiwvm08kB/VgQ4e/ANyq/i8PPFSYMT8JKHg==", + "requires": { + "web3-core": "1.5.2", + "web3-core-helpers": "1.5.2", + "web3-core-method": "1.5.2", + "web3-core-subscriptions": "1.5.2", + "web3-eth-abi": "1.5.2", + "web3-eth-accounts": "1.5.2", + "web3-eth-contract": "1.5.2", + "web3-eth-ens": "1.5.2", + "web3-eth-iban": "1.5.2", + "web3-eth-personal": "1.5.2", + "web3-net": "1.5.2", + "web3-utils": "1.5.2" } }, "web3-eth-abi": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/web3-eth-abi/-/web3-eth-abi-1.3.0.tgz", - "integrity": "sha512-1OrZ9+KGrBeBRd3lO8upkpNua9+7cBsQAgor9wbA25UrcUYSyL8teV66JNRu9gFxaTbkpdrGqM7J/LXpraXWrg==", + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/web3-eth-abi/-/web3-eth-abi-1.5.2.tgz", + "integrity": "sha512-P3bJbDR5wib4kWGfVeBKBVi27T+AiHy4EJxYM6SMNbpm3DboLDdisu9YBd6INMs8rzxgnprBbGmmyn4jKIDKAA==", "requires": { - "@ethersproject/abi": "5.0.0-beta.153", - "underscore": "1.9.1", - "web3-utils": "1.3.0" + "@ethersproject/abi": "5.0.7", + "web3-utils": "1.5.2" + }, + "dependencies": { + "@ethersproject/abi": { + "version": "5.0.7", + "resolved": "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.0.7.tgz", + "integrity": "sha512-Cqktk+hSIckwP/W8O47Eef60VwmoSC/L3lY0+dIBhQPCNn9E4V7rwmm2aFrNRRDJfFlGuZ1khkQUOc3oBX+niw==", + "requires": { + "@ethersproject/address": "^5.0.4", + "@ethersproject/bignumber": "^5.0.7", + "@ethersproject/bytes": "^5.0.4", + "@ethersproject/constants": "^5.0.4", + "@ethersproject/hash": "^5.0.4", + "@ethersproject/keccak256": "^5.0.3", + "@ethersproject/logger": "^5.0.5", + "@ethersproject/properties": "^5.0.3", + "@ethersproject/strings": "^5.0.4" + } + } } }, "web3-eth-accounts": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/web3-eth-accounts/-/web3-eth-accounts-1.3.0.tgz", - "integrity": "sha512-/Q7EVW4L2wWUbNRtOTwAIrYvJid/5UnKMw67x/JpvRMwYC+e+744P536Ja6SG4X3MnzFvd3E/jruV4qa6k+zIw==", + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/web3-eth-accounts/-/web3-eth-accounts-1.5.2.tgz", + "integrity": "sha512-F8mtzxgEhxfLc66vPi0Gqd6mpscvvk7Ua575bsJ1p9J2X/VtuKgDgpWcU4e4LKeROQ+ouCpAG9//0j9jQuij3A==", "requires": { + "@ethereumjs/common": "^2.3.0", + "@ethereumjs/tx": "^3.2.1", "crypto-browserify": "3.12.0", "eth-lib": "0.2.8", - "ethereumjs-common": "^1.3.2", - "ethereumjs-tx": "^2.1.1", + "ethereumjs-util": "^7.0.10", "scrypt-js": "^3.0.1", - "underscore": "1.9.1", "uuid": "3.3.2", - "web3-core": "1.3.0", - "web3-core-helpers": "1.3.0", - "web3-core-method": "1.3.0", - "web3-utils": "1.3.0" + "web3-core": "1.5.2", + "web3-core-helpers": "1.5.2", + "web3-core-method": "1.5.2", + "web3-utils": "1.5.2" }, "dependencies": { "eth-lib": { @@ -4233,114 +4911,110 @@ } }, "web3-eth-contract": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/web3-eth-contract/-/web3-eth-contract-1.3.0.tgz", - "integrity": "sha512-3SCge4SRNCnzLxf0R+sXk6vyTOl05g80Z5+9/B5pERwtPpPWaQGw8w01vqYqsYBKC7zH+dxhMaUgVzU2Dgf7bQ==", + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/web3-eth-contract/-/web3-eth-contract-1.5.2.tgz", + "integrity": "sha512-4B8X/IPFxZCTmtENpdWXtyw5fskf2muyc3Jm5brBQRb4H3lVh1/ZyQy7vOIkdphyaXu4m8hBLHzeyKkd37mOUg==", "requires": { "@types/bn.js": "^4.11.5", - "underscore": "1.9.1", - "web3-core": "1.3.0", - "web3-core-helpers": "1.3.0", - "web3-core-method": "1.3.0", - "web3-core-promievent": "1.3.0", - "web3-core-subscriptions": "1.3.0", - "web3-eth-abi": "1.3.0", - "web3-utils": "1.3.0" + "web3-core": "1.5.2", + "web3-core-helpers": "1.5.2", + "web3-core-method": "1.5.2", + "web3-core-promievent": "1.5.2", + "web3-core-subscriptions": "1.5.2", + "web3-eth-abi": "1.5.2", + "web3-utils": "1.5.2" } }, "web3-eth-ens": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/web3-eth-ens/-/web3-eth-ens-1.3.0.tgz", - "integrity": "sha512-WnOru+EcuM5dteiVYJcHXo/I7Wq+ei8RrlS2nir49M0QpYvUPGbCGgTbifcjJQTWamgORtWdljSA1s2Asdb74w==", + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/web3-eth-ens/-/web3-eth-ens-1.5.2.tgz", + "integrity": "sha512-/UrLL42ZOCYge+BpFBdzG8ICugaRS4f6X7PxJKO+zAt+TwNgBpjuWfW/ZYNcuqJun/ZyfcTuj03TXqA1RlNhZQ==", "requires": { "content-hash": "^2.5.2", "eth-ens-namehash": "2.0.8", - "underscore": "1.9.1", - "web3-core": "1.3.0", - "web3-core-helpers": "1.3.0", - "web3-core-promievent": "1.3.0", - "web3-eth-abi": "1.3.0", - "web3-eth-contract": "1.3.0", - "web3-utils": "1.3.0" + "web3-core": "1.5.2", + "web3-core-helpers": "1.5.2", + "web3-core-promievent": "1.5.2", + "web3-eth-abi": "1.5.2", + "web3-eth-contract": "1.5.2", + "web3-utils": "1.5.2" } }, "web3-eth-iban": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.3.0.tgz", - "integrity": "sha512-v9mZWhR4fPF17/KhHLiWir4YHWLe09O3B/NTdhWqw3fdAMJNztzMHGzgHxA/4fU+rhrs/FhDzc4yt32zMEXBZw==", + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.5.2.tgz", + "integrity": "sha512-C04YDXuSG/aDwOHSX+HySBGb0KraiAVt+/l1Mw7y/fCUrKC/K0yYzMYqY/uYOcvLtepBPsC4ZfUYWUBZ2PO8Vg==", "requires": { "bn.js": "^4.11.9", - "web3-utils": "1.3.0" + "web3-utils": "1.5.2" } }, "web3-eth-personal": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/web3-eth-personal/-/web3-eth-personal-1.3.0.tgz", - "integrity": "sha512-2czUhElsJdLpuNfun9GeLiClo5O6Xw+bLSjl3f4bNG5X2V4wcIjX2ygep/nfstLLtkz8jSkgl/bV7esANJyeRA==", + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/web3-eth-personal/-/web3-eth-personal-1.5.2.tgz", + "integrity": "sha512-nH5N2GiVC0C5XeMEKU16PeFP3Hb3hkPvlR6Tf9WQ+pE+jw1c8eaXBO1CJQLr15ikhUF3s94ICyHcfjzkDsmRbA==", "requires": { "@types/node": "^12.12.6", - "web3-core": "1.3.0", - "web3-core-helpers": "1.3.0", - "web3-core-method": "1.3.0", - "web3-net": "1.3.0", - "web3-utils": "1.3.0" + "web3-core": "1.5.2", + "web3-core-helpers": "1.5.2", + "web3-core-method": "1.5.2", + "web3-net": "1.5.2", + "web3-utils": "1.5.2" } }, "web3-net": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/web3-net/-/web3-net-1.3.0.tgz", - "integrity": "sha512-Xz02KylOyrB2YZzCkysEDrY7RbKxb7LADzx3Zlovfvuby7HBwtXVexXKtoGqksa+ns1lvjQLLQGb+OeLi7Sr7w==", + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/web3-net/-/web3-net-1.5.2.tgz", + "integrity": "sha512-VEc9c+jfoERhbJIxnx0VPlQDot8Lm4JW/tOWFU+ekHgIiu2zFKj5YxhURIth7RAbsaRsqCb79aE+M0eI8maxVQ==", "requires": { - "web3-core": "1.3.0", - "web3-core-method": "1.3.0", - "web3-utils": "1.3.0" + "web3-core": "1.5.2", + "web3-core-method": "1.5.2", + "web3-utils": "1.5.2" } }, "web3-providers-http": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/web3-providers-http/-/web3-providers-http-1.3.0.tgz", - "integrity": "sha512-cMKhUI6PqlY/EC+ZDacAxajySBu8AzW8jOjt1Pe/mbRQgS0rcZyvLePGTTuoyaA8C21F8UW+EE5jj7YsNgOuqA==", + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/web3-providers-http/-/web3-providers-http-1.5.2.tgz", + "integrity": "sha512-dUNFJc9IMYDLZnkoQX3H4ZjvHjGO6VRVCqrBrdh84wPX/0da9dOA7DwIWnG0Gv3n9ybWwu5JHQxK4MNQ444lyA==", "requires": { - "web3-core-helpers": "1.3.0", + "web3-core-helpers": "1.5.2", "xhr2-cookies": "1.1.0" } }, "web3-providers-ipc": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/web3-providers-ipc/-/web3-providers-ipc-1.3.0.tgz", - "integrity": "sha512-0CrLuRofR+1J38nEj4WsId/oolwQEM6Yl1sOt41S/6bNI7htdkwgVhSloFIMJMDFHtRw229QIJ6wIaKQz0X1Og==", + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/web3-providers-ipc/-/web3-providers-ipc-1.5.2.tgz", + "integrity": "sha512-SJC4Sivt4g9LHKlRy7cs1jkJgp7bjrQeUndE6BKs0zNALKguxu6QYnzbmuHCTFW85GfMDjhvi24jyyZHMnBNXQ==", "requires": { "oboe": "2.1.5", - "underscore": "1.9.1", - "web3-core-helpers": "1.3.0" + "web3-core-helpers": "1.5.2" } }, "web3-providers-ws": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/web3-providers-ws/-/web3-providers-ws-1.3.0.tgz", - "integrity": "sha512-Im5MthhJnJst8nSoq0TgbyOdaiFQFa5r6sHPOVllhgIgViDqzbnlAFW9sNzQ0Q8VXPNfPIQKi9cOrHlSRNPjRw==", + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/web3-providers-ws/-/web3-providers-ws-1.5.2.tgz", + "integrity": "sha512-xy9RGlyO8MbJDuKv2vAMDkg+en+OvXG0CGTCM2BTl6l1vIdHpCa+6A/9KV2rK8aU9OBZ7/Pf+Y19517kHVl9RA==", "requires": { "eventemitter3": "4.0.4", - "underscore": "1.9.1", - "web3-core-helpers": "1.3.0", + "web3-core-helpers": "1.5.2", "websocket": "^1.0.32" } }, "web3-shh": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/web3-shh/-/web3-shh-1.3.0.tgz", - "integrity": "sha512-IZTojA4VCwVq+7eEIHuL1tJXtU+LJDhO8Y2QmuwetEWW1iBgWCGPHZasipWP+7kDpSm/5lo5GRxL72FF/Os/tA==", + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/web3-shh/-/web3-shh-1.5.2.tgz", + "integrity": "sha512-wOxOcYt4Sa0AHAI8gG7RulCwVuVjSRS/M/AbFsea3XfJdN6sU13/syY7OdZNjNYuKjYTzxKYrd3dU/K2iqffVw==", "requires": { - "web3-core": "1.3.0", - "web3-core-method": "1.3.0", - "web3-core-subscriptions": "1.3.0", - "web3-net": "1.3.0" + "web3-core": "1.5.2", + "web3-core-method": "1.5.2", + "web3-core-subscriptions": "1.5.2", + "web3-net": "1.5.2" } }, "web3-utils": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.3.0.tgz", - "integrity": "sha512-2mS5axFCbkhicmoDRuJeuo0TVGQDgC2sPi/5dblfVC+PMtX0efrb8Xlttv/eGkq7X4E83Pds34FH98TP2WOUZA==", + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.5.2.tgz", + "integrity": "sha512-quTtTeQJHYSxAwIBOCGEcQtqdVcFWX6mCFNoqnp+mRbq+Hxbs8CGgO/6oqfBx4OvxIOfCpgJWYVHswRXnbEu9Q==", "requires": { "bn.js": "^4.11.9", "eth-lib": "0.2.8", @@ -4348,7 +5022,6 @@ "ethjs-unit": "0.1.6", "number-to-bn": "1.7.0", "randombytes": "^2.1.0", - "underscore": "1.9.1", "utf8": "3.0.0" }, "dependencies": { @@ -4365,9 +5038,9 @@ } }, "websocket": { - "version": "1.0.32", - "resolved": "https://registry.npmjs.org/websocket/-/websocket-1.0.32.tgz", - "integrity": "sha512-i4yhcllSP4wrpoPMU2N0TQ/q0O94LRG/eUQjEAamRltjQ1oT1PFFKOG4i877OlJgCG8rw6LrrowJp+TYCEWF7Q==", + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/websocket/-/websocket-1.0.34.tgz", + "integrity": "sha512-PRDso2sGwF6kM75QykIesBijKSVceR6jL2G8NGYyq2XrItNC2P5/qL5XeR056GhA+Ly7JMFvJb9I312mJfmqnQ==", "requires": { "bufferutil": "^4.0.1", "debug": "^2.2.0", @@ -4386,6 +5059,31 @@ "isexe": "^2.0.0" } }, + "which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "requires": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + } + }, + "which-typed-array": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.6.tgz", + "integrity": "sha512-DdY984dGD5sQ7Tf+x1CkXzdg85b9uEel6nr4UkFg1LoE9OXv3uRuZhe5CoWdawhGACeFpEZXH8fFLQnDhbpm/Q==", + "requires": { + "available-typed-arrays": "^1.0.4", + "call-bind": "^1.0.2", + "es-abstract": "^1.18.5", + "foreach": "^2.0.5", + "has-tostringtag": "^1.0.0", + "is-typed-array": "^1.1.6" + } + }, "widest-line": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", @@ -4395,6 +5093,58 @@ "string-width": "^4.0.0" } }, + "wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + } + } + }, "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", @@ -4413,14 +5163,9 @@ } }, "ws": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz", - "integrity": "sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==", - "requires": { - "async-limiter": "~1.0.0", - "safe-buffer": "~5.1.0", - "ultron": "~1.1.0" - } + "version": "7.4.6", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz", + "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==" }, "xdg-basedir": { "version": "4.0.0", @@ -4429,11 +5174,11 @@ "dev": true }, "xhr": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/xhr/-/xhr-2.5.0.tgz", - "integrity": "sha512-4nlO/14t3BNUZRXIXfXe+3N6w3s1KoxcJUUURctd64BLRe67E4gRwp4PjywtDY72fXpZ1y6Ch0VZQRY/gMPzzQ==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/xhr/-/xhr-2.6.0.tgz", + "integrity": "sha512-/eCGLb5rxjx5e3mF1A7s+pLlR6CGyqWN91fv1JgER5mVWg1MZmlhBvy9kjcsOdRk8RrIujotWyJamfyrp+WIcA==", "requires": { - "global": "~4.3.0", + "global": "~4.4.0", "is-function": "^1.0.1", "parse-headers": "^2.0.0", "xtend": "^4.0.0" diff --git a/package.json b/package.json index d27b785..214c0f2 100644 --- a/package.json +++ b/package.json @@ -1,19 +1,36 @@ { + "name": "yearn-api", + "version": "1.0.0", + "description": "", + "main": "app.js", + "scripts": { + "start": "node --max-old-space-size=8192 app.js -enableServer 1" + }, "devDependencies": { - "prettier": "^2.1.1", "serverless-aws-documentation": "^1.1.0", "serverless-domain-manager": "^4.2.0", "serverless-export-swagger": "^2.0.0", "serverless-offline": "^6.7.0" }, "dependencies": { + "axios": "^0.21.0", "bignumber": "^1.1.0", + "body-parser": "^1.19.0", + "coingecko-api": "^1.0.10", + "cors": "^2.8.5", "delay": "^4.4.0", "dotenv": "^8.2.0", + "ethereum-block-by-date": "^1.4.0", + "ethers": "^5.4.1", + "express": "^4.17.1", + "helmet": "^4.6.0", "lodash": "^4.17.20", "moment": "^2.28.0", + "mongodb": "^3.6.3", + "node-cron": "^2.0.3", "node-fetch": "^2.6.1", "ramda": "^0.27.1", + "swagger-ui-express": "^4.1.6", "web3": "^1.3.0" } } diff --git a/scripts/initial.js b/scripts/initial.js new file mode 100644 index 0000000..8fe6350 --- /dev/null +++ b/scripts/initial.js @@ -0,0 +1,169 @@ +// Mainnet Contracts +db.vault_categories.insertMany([ + { name: 'advance', contract_address: '0x4F0C1c9bA6B9CCd0BEd6166e86b672ac8EE621F7', symbol: 'yUSDT' }, + { name: 'advance', contract_address: '0x9f0230FbDC0379E5FefAcca89bE03A42Fec5fb6E', symbol: 'yUSDC' }, + { name: 'advance', contract_address: '0x2bFc2Da293C911e5FfeC4D2A2946A599Bc4Ae770', symbol: 'yDAI' }, + { name: 'advance', contract_address: '0x2C8de02aD4312069355B94Fb936EFE6CFE0C8FF6', symbol: 'yTUSD' }, + { name: 'basic', contract_address: '0xEeCe6AD323a93d4B021BDAaC587DCC04b5cf0a78', symbol: 'cUSDT' }, + { name: 'basic', contract_address: '0xd1D7f950899C0269a7F2aad5E854cdc3a1350ba9', symbol: 'cUSDC', }, + { name: 'basic', contract_address: '0x43C20638C3914Eca3c96e9cAc8ebE7d652Be45c6', symbol: 'cDAI', }, + { name: 'expert', contract_address: '0x8fe826cc1225b03aa06477ad5af745aed5fe7066', symbol: 'daoCDV', }, + { name: 'degen', contract_address: '0x2d9a136cf87d599628bcbdfb6c4fe75acd2a0aa8', symbol: 'daoELO', }, + { name: 'degen', contract_address: '0x2ad9f8d4c24652ea9f8a954f7e1fdb50a3be1dfd', symbol: 'daoCUB', }, + { name: 'advance', contract_address: '0x742a85daf742ca0213b06fdae449434e0448691e', symbol: 'daoSTO', }, + { name: 'advance', contract_address: '0x2Cc1507E6E3C844EEb77Db90d193489f1Ddfb299', symbol: 'hfUSDT'}, + { name: 'advance', contract_address: '0xd0f0858578C7780f2D65f6d81BC7DdBe166367cC', symbol: 'hfUSDC'}, + { name: 'advance', contract_address: '0xE4E6Ce7c1D9Ff44Db27f622aCcbB0753C2f48955', symbol: 'hfDAI'}, + { name: 'advance', contract_address: '0x3db93e95c9881bc7d9f2c845ce12e97130ebf5f2', symbol: 'daoMPT', }, +]); + + +db.stake_pool.insertMany([ + { + name: 'vipDVG', + label: 'vipDVG LP', + contract_address: '', // TODO: Update to mainnet address + status: 'A', + pid: '7', + category: 'Basic', + tokenId: 'xDVG', + symbol: 'xDVG', + startBlock: 12770000, + deposit: false, + withdraw: true, + emergencyWithdraw: true, + }, + { + name: 'ETH<->DVG', + label: 'Uniswap DVG-ETH LP', + contract_address: '', // TODO: Update to mainnet address + status: 'A', + pid: '8', + category: 'Basic', + tokenId: 'ethDVG', + symbol: 'ethDVG', + startBlock: 12770000, + deposit: false, + withdraw: true, + emergencyWithdraw: true, + }, + { + name: 'daoCDV', + label: 'DAO Citadel LP', + contract_address: '0x8fe826cc1225b03aa06477ad5af745aed5fe7066', + status: 'A', + pid: '9', + category: 'Expert', + tokenId: 'ethereum', + symbol: 'daoCDV', + startBlock: 12770000, + deposit: false, + withdraw: true, + emergencyWithdraw: true, + }, + { + name: "daoSTO", + label: "DAO FAANG Stonk", + contract_address: '0x742a85daf742ca0213b06fdae449434e0448691e', + status: 'A', + pid: '3', + category: 'Advance', + tokenId: 'tether', + symbol: 'daoSTO', + startBlock: 12770000, + deposit: false, + withdraw: true, + emergencyWithdraw: true, + } +]); + +// Testnet Contracts +db.vault_categories.insertMany([ + { name: 'advance', contract_address: '0x6B150E9BD70E216775c8b73270E64e870a3110c1', symbol: 'yUSDT' }, + { name: 'advance', contract_address: '0x6E15e283dc430eca010Ade8b11b5B377902d6e56', symbol: 'yUSDC' }, + { name: 'advance', contract_address: '0x2428bFD238a3632552B343297c504F60283009eD', symbol: 'yDAI' }, + { name: 'advance', contract_address: '0xEcCb98c36bfc8c49c6065d1cD90bcf1c6F02D4AD', symbol: 'yTUSD' }, + { name: 'basic', contract_address: '0x5d102e0bdf2037899e1ff2e8cc50987108533c52', symbol: 'cUSDT' }, + { name: 'basic', contract_address: '0x05ab7659e6ef9ba1a5f790b402fd1688f01b003e', symbol: 'cUSDC', }, + { name: 'basic', contract_address: '0x47e565b1e23cda3d6bb69e7ae398b884f5addc7d', symbol: 'cDAI', }, + { name: 'expert', contract_address: '0x626c25ca5b86277f395c0e40dbdf51f2a302ab43', symbol: 'daoCDV', }, + { name: 'degen', contract_address: '0xf03fa8553379d872b4e2bafbc679409fb82604c2', symbol: 'daoELO', }, + { name: 'degen', contract_address: '0x5c304a6cb105e1bff9805ca5cf072f1d2c3beac5', symbol: 'daoCUB', }, + { name: 'advance', contract_address: '0xd6af81e5288be43137debf969d7f2c03482c8cc1', symbol: 'daoSTO', }, + { name: 'advance', contract_address: '0x35880615bb18DA592FF0fEb0940ADE2c02249715', symbol: 'hfUSDT'}, + { name: 'advance', contract_address: '0x68b1C860300c4f7d577f08D8B3c3AEe23887b280', symbol: 'hfUSDC'}, + { name: 'advance', contract_address: '0x6D7e8fA90C1ffdC019d691BAFC18D6362FdEeCd7', symbol: 'hfDAI'}, +]); + +db.xdvg_token.insert({ + name: 'USDT', + contract_address: '0x07de306FF27a2B630B1141956844eB1552B956B5' +}); + +db.stake_pool.insertMany([ + { + name: 'vipDVG', + label: 'vipDVG LP', + contract_address: '0x3aa8e8b6d3562a1e7acb0dddd02b27896c00c424', + status: 'A', + pid: '7', + category: 'Basic', + tokenId: 'xDVG', + symbol: 'xDVG', + startBlock: 25721857, + deposit: false, + withdraw: true, + emergencyWithdraw: true, + }, + { + name: 'ETH<->DVG', + label: 'Uniswap DVG-ETH LP', + contract_address: '0x0a15e37442e2a41a3a51a9eff7fe1dce0e96f0bb', + status: 'A', + pid: '8', + category: 'Basic', + tokenId: 'ethDVG', + symbol: 'ethDVG', + startBlock: 25721857, + deposit: false, + withdraw: true, + emergencyWithdraw: true, + }, + { + name: 'daoCDV', + label: 'DAO Citadel LP', + contract_address: '0x626c25ca5b86277f395c0e40dbdf51f2a302ab43', + status: 'A', + pid: '9', + category: 'Expert', + tokenId: 'ethereum', + symbol: 'daoCDV', + startBlock: 25721857, + deposit: false, + withdraw: true, + emergencyWithdraw: true, + }, + { + name: "daoSTO", + label: "DAO FAANG Stonk LP", + contract_address: '0xd6af81e5288be43137debf969d7f2c03482c8cc1', + status: 'A', + pid: '11', + category: 'Advance', + tokenId: 'tether', + symbol: 'daoSTO', + startBlock: 25721857, + deposit: false, + withdraw: true, + emergencyWithdraw: true, + }, +]); + + +db.special_event.insertMany([ + { startTime: 1622390400000, endTime: 1622444400000, threshold: 3000 }, + { startTime: 1622538000000, endTime: 1622541600000, threshold: 5000 }, + { startTime: 1622538900000, endTime: 1622540400000, threshold: 7000 }, + { startTime: 1622542200000, endTime: 1622543400000, threshold: 6000 }, + { startTime: 1622606400000, endTime: 1622610000000, threshold: 3000 } +]); \ No newline at end of file diff --git a/services/referral/deposit/handler.js b/services/referral/deposit/handler.js new file mode 100644 index 0000000..bbc4f48 --- /dev/null +++ b/services/referral/deposit/handler.js @@ -0,0 +1,110 @@ +const db = require("../../../models/referral-deposit.model"); +const dbReferral = require("../../../models/referrals.model"); +const moment = require("moment"); + +isValidReferral = async (referral) => { + const referralInfo = await dbReferral.checkReferral(referral); + return referralInfo; +}; + +module.exports.getAll = async (req, res) => { + try { + let f = {}; + if (req.query) { + f = req.query; + } + const result = await db.findAll(f); + res.status(200).json({ + message: "Successful Response", + body: result, + }); + } catch (err) { + res.status(400).json({ + message: err.message, + body: null, + }); + return; + } +}; + +module.exports.getTransaction = async (req, res) => { + try { + const result = await db.getTransaction(req.body.id); + res.status(200).json({ + message: "Successful Response", + body: result, + }); + } catch (err) { + res.status(400).json({ + message: err.message, + body: null, + }); + return; + } +}; + +module.exports.addDepositAmount = async (req, res) => { + try { + if ( + !req.body || + !req.body.address || + !req.body.amount || + !req.body.referral || + !req.body.transactionId + ) { + if (!req.body.address) { + res.status(200).json({ + message: "Missing user address.", + body: null, + }); + } + if (!req.body.amount) { + res.status(200).json({ + message: "Missing input amount.", + body: null, + }); + } + if (!req.body.referral) { + res.status(200).json({ + message: "Missing referral link.", + body: null, + }); + } + if (!req.body.transactionId) { + res.status(200).json({ + message: "Missing Transaction ID.", + body: null, + }); + } + } else { + const result = await isValidReferral(req.body.referral); + if (result) { + const now = moment().valueOf(); + await db.depositAmount({ + _id: req.body.transactionId, + referral: req.body.referral, + amount: req.body.amount, + address: req.body.address, + timestamp: now, + status: "pending", + }); + + res.status(200).json({ + message: "Deposit Success!", + body: null, + }); + return; + } else { + res.status(200).json({ + message: "Referral link invalid", + }); + return; + } + } + } catch (err) { + res.status(200).json({ + message: err.message, + body: null, + }); + } +}; diff --git a/services/referral/handler.js b/services/referral/handler.js new file mode 100644 index 0000000..d279e56 --- /dev/null +++ b/services/referral/handler.js @@ -0,0 +1,72 @@ +const db = require("../../models/referrals.model"); + +//Creates referral system +//1. (Influencer)Address 2. Referral Code + +//2. Deposit => a)Amount b)Referral c)Timestamp d) User-Address +//3. Withdrawal => a)Amount b) Timestamp c) User-Address + +module.exports.seeAllReferrals = async (req, res) => { + try { + const result = await db.findAll(); + res.status(200).json({ + message: "Successful Response", + body: result, + }); + } catch (err) { + res.status(400).json({ + message: err.message, + body: null, + }); + } +}; + +module.exports.checkReferral = async (req, res) => { + try { + const referralInfo = await db.findOne(req.body.referral.toLowerCase()); + if (referralInfo != null) { + delete referralInfo._id; + } + + res.status(200).json({ + message: "Successful Response", + body: referralInfo, + }); + } catch (err) { + res.status(400).json({ + message: err.message, + body: null, + }); + } +}; + +module.exports.addNewReferral = async (req, res) => { + try { + if (!req.body || !req.body.address || !req.body.referral) { + if (!req.body.address) { + res.status(200).json({ + message: "Missing user address.", + body: null, + }); + } + if (!req.body.referral) { + res.status(200).json({ + message: "Missing referral link.", + body: null, + }); + } + } else { + await db.addReferral(req.body); + res.status(200).json({ + message: "Successful Response", + body: req.params, + }); + return; + } + } catch (err) { + res.status(200).json({ + message: err.message, + body: null, + }); + } +}; diff --git a/services/referral/validate/handler.js b/services/referral/validate/handler.js new file mode 100644 index 0000000..6bfc2cc --- /dev/null +++ b/services/referral/validate/handler.js @@ -0,0 +1,107 @@ +"use strict"; + +require("dotenv").config(); +const fetch = require("node-fetch"); +const subgraphUrl = process.env.SUBGRAPH_ENDPOINT; +const polygonSubgraphUrl = process.env.POLYGON_SUBGRAPH_ENDPOINT; + +const db_deposit = require("../../../models/referral-deposit.model"); +const db_withdraw = require("../../../models/referral-withdrawal.model"); + +const getPendingDeposits = async () => { + const result = await db_deposit.findAll({ status: "pending" }); + let resultIds = []; + result.forEach((element) => { + resultIds.push(element._id); + }); + + return resultIds; +}; + +const getPendingWithdrawals = async () => { + const result = await db_withdraw.findAll({ status: "pending" }); + let resultIds = []; + result.forEach((element) => { + resultIds.push(element._id); + }); + + return resultIds; +}; + +const getGraphTransactions = async () => { + const query = ` + { + withdrawals{ + id + amountInUSD + } + deposits{ + id + amountInUSD + } + } + `; + + //Getting Polygon transactions + const response = await fetch(polygonSubgraphUrl, { + method: "POST", + body: JSON.stringify({ query }), + }); + + const responseJson = await response.json(); + + let graphTransactionsID = []; + responseJson.data.deposits.forEach((element) => { + graphTransactionsID.push([element.id, element.amountInUSD]); + }); + responseJson.data.withdrawals.forEach((element) => { + graphTransactionsID.push([element.id, element.amountInUSD]); + }); + + //Getting subgraph transactions + + const response_2 = await fetch(subgraphUrl, { + method: "POST", + body: JSON.stringify({ query }), + }); + + const responseJson_2 = await response_2.json(); + + let graphTransactionsID_2 = []; + responseJson_2.data.deposits.forEach((element) => { + graphTransactionsID_2.push([element.id, element.amountInUSD]); + }); + + responseJson_2.data.withdrawals.forEach((element) => { + graphTransactionsID_2.push([element.id, element.amountInUSD]); + }); + + //0x0023d5fedabdaa884411e433ff28baeac2eab72da8868d399bd3347132842b4e + return [graphTransactionsID, graphTransactionsID_2]; +}; + +module.exports.validator = async () => { + let pendingDeposits = await getPendingDeposits(); + let graphIds = await getGraphTransactions(); + let pendingWithdrawals = await getPendingWithdrawals(); + + for (const unit of graphIds[0]) { + if (pendingDeposits.includes(unit[0])) { + await db_deposit.updateStatus(unit[0], unit[1]); + } + if (pendingWithdrawals.includes(unit[0])) { + await db_withdraw.updateStatus(unit[0], unit[1]); + } + } + + for (const unit of graphIds[1]) { + if (pendingDeposits.includes(unit[0])) { + await db_deposit.updateStatus(unit[0], unit[1]); + } + if (pendingWithdrawals.includes(unit[0])) { + await db_withdraw.updateStatus(unit[0], unit[1]); + } + } + + return; +}; diff --git a/services/referral/withdraw/handler.js b/services/referral/withdraw/handler.js new file mode 100644 index 0000000..48d84d1 --- /dev/null +++ b/services/referral/withdraw/handler.js @@ -0,0 +1,73 @@ +const db = require("../../../models/referral-withdrawal.model"); +const moment = require("moment"); + +module.exports.addWithdrawalAmount = async (req, res) => { + try { + if ( + !req.body || + !req.body.address || + !req.body.amount || + !req.body.transactionId + ) { + if (!req.body.address) { + res.status(200).json({ + message: "Missing user address.", + body: null, + }); + } + if (!req.body.amount) { + res.status(200).json({ + message: "Missing input amount.", + body: null, + }); + } + if (!req.body.transactionId) { + res.status(200).json({ + message: "Missing Transaction ID.", + body: null, + }); + } + } else { + const now = moment().valueOf(); + await db.withdrawAmount({ + _id: req.body.transactionId, + amount: req.body.amount, + address: req.body.address, + timestamp: now, + status: "pending", + }); + + res.status(200).json({ + message: "Withdraw Success!", + body: null, + }); + return; + } + } catch (err) { + res.status(200).json({ + message: err.message, + body: null, + }); + return; + } +}; + +module.exports.getAll = async (req, res) => { + try { + let f = {}; + if (req.query) { + f = req.query; + } + const result = await db.findAll(f); + res.status(200).json({ + message: "Successful Response", + body: result, + }); + } catch (err) { + res.status(400).json({ + message: err.message, + body: null, + }); + return; + } +}; diff --git a/services/reimbursement/handler.js b/services/reimbursement/handler.js new file mode 100644 index 0000000..2802fef --- /dev/null +++ b/services/reimbursement/handler.js @@ -0,0 +1,31 @@ +"use strict"; + +require("dotenv").config(); +const _ = require("lodash"); +const db = require("../../models/reimbursement-addresses.model"); +const whiteList = require("./whitelist.js"); +const ethers = require("ethers"); + +module.exports.handler = async (req, res) => { + const address = req.params.address; + let result; + + // await saveAddresses(); + if (address) { + result = await db.find(address); + } else { + result = await db.findAll(); + } + + if (result) { + res.status(200).json({ + message: `Reimbursement Addresses Data with signatures`, + body: result, + }); + } else { + res.status(200).json({ + message: `Address not in whitelist`, + body: result, + }); + } +}; \ No newline at end of file diff --git a/services/reimbursement/whitelist.js b/services/reimbursement/whitelist.js new file mode 100644 index 0000000..e72c3fd --- /dev/null +++ b/services/reimbursement/whitelist.js @@ -0,0 +1,2761 @@ +const whiteList = [ + ["0xFBca6a35F5ad385d995ac50e4fF1C6c53d54a8e3", "10000000000000000000000000"], + ["0xDE29dC6232b345d37C949f808E8F95A461eA3Cd0", "10000000000000000000000000"], + ["0xA64916f1235455fB8b9b97a5a2CD9b3B48879629", "10000000000000000000000000"], + ["0x046a5A1FA5986767ec460B998cC78F59c6ee03Ef", "10000000000000000000000000"], + ["0xbE8dCAd36698764A7b442d69CBaAB6cA820B017f", "10000000000000000000000000"], + ["0x8AABE1D0A229399a49b77dc29C75A951e520F1c2", "10000000000000000000000000"], + ["0xFbf4836627698D038Ed947B62fDf407C9CcaBA62", "10000000000000000000000000"], + ["0x8b7eE466B4a3B3746736904ac7667E433DC8a468", "10000000000000000000000000"], + ["0x23B5202803b01c6ABFc06C8B13417ac39aCDEfaA", "10000000000000000000000000"], + ["0x30A1Cee5E3A1A9AbE6b532bBd834329220BCD735", "10000000000000000000000000"], + ["0x38bf23E8E282C72142Ad8976acB1F15503E0Eb5B", "10000000000000000000000000"], + ["0xF1B299dBEFdcf8F65AF04D5DdBad8F8fF7e58F14", "10000000000000000000000000"], + ["0x19AF8A8aA7aF4DB47793eA9e397219E0b60bc0fC", "10000000000000000000000000"], + ["0x06eCD417F5Cb845752afCaD1F4C85139e8ECA5Da", "10000000000000000000000000"], + ["0x5593F66B77355668bF1Ef3166eDb7Fd49e932103", "10000000000000000000000000"], + ["0x6de41e8712C23e0cF48Fa60A155872DFBDC40F98", "10000000000000000000000000"], + ["0x68B25867E78C39ad8b88A0d040AD47025DD42C62", "10000000000000000000000000"], + ["0xa23cff7a4f319445e4584897941bf478b4931abc", "10000000000000000000000000"], + ["0x2e811568b0fb4b6e9077c4cd2d57c34f554b835d", "10000000000000000000000000"], + ["0xd4ce1744799b189c7a19a3d3ce0aac8de60f781b", "10000000000000000000000000"], + ["0xa66bf5d22d48b69a08746d28c711f6d56d44480e", "10000000000000000000000000"], + ["0x3374c353f4bcd5772a0d4def26e3857e2a45cab2", "10000000000000000000000000"], + ["0x87d67301a24d7b94224cdefcf943417162ae7007", "10000000000000000000000000"], + ["0xef3fdc051bac5ccb7aa1de3a0c2b3a463cb6c677", "10000000000000000000000000"], + ["0x468e7f6f6438864dd31ef61961dfd3e01b69180f", "10000000000000000000000000"], + ["0x21cbbc3639d35bf216c8ecc111876a96177e465c", "10000000000000000000000000"], + ["0x2a8ac196905afff02550b547af6110c87f504b8e", "10000000000000000000000000"], + ["0xdc31df63ca0b6de64bc62d81844e8956d2476541", "10000000000000000000000000"], + ["0x809676df9f7ef012b1201e767575bc9b5aebd108", "10000000000000000000000000"], + ["0x88168d089f75f5cd93f777ec16bbb178a7c7b512", "10000000000000000000000000"], + ["0xb0823fffac86c709c658db3f8765e9da8c7d9647", "10000000000000000000000000"], + ["0x1688888ebdab05737cf752acf7d11d82f21ac5f2", "10000000000000000000000000"], + ["0xb67dfcf4dec5944101d363ef4ec8bfb1996eff82", "10000000000000000000000000"], + ["0x5f60ad4ed6777500005b4179deff0eec362b5c25", "10000000000000000000000000"], + ["0x13991cc1ffae4cf57c5caefb951826ffa54a88af", "10000000000000000000000000"], + ["0xec578146b22d7ef5f6e5c69fdde00bdaa5f0b33b", "10000000000000000000000000"], + ["0x3b54a04374a884cb70f45abcc0539037bcfb9da2", "10000000000000000000000000"], + ["0x73c52612f72075361bd707934dbc2b4358c58f32", "10000000000000000000000000"], + ["0xc599c65767d1527bda5064676aa6de96c65a2ad4", "10000000000000000000000000"], + ["0xad25daf8b180d846c78fe7b4aabd83f881d6b733", "10000000000000000000000000"], + ["0x9f7ae94f69d27bc1e8f895f21d8c13cdcbe3bdf0", "10000000000000000000000000"], + ["0xd1dadf4a440afb322d1b8fc3aa2e6f4f5ed6c68a", "10000000000000000000000000"], + ["0x05534d1785113ff3b24b7402971bd2efb395f699", "10000000000000000000000000"], + ["0x22431dff508f62be49108848141b28bdcf3a3d4a", "10000000000000000000000000"], + ["0xcee520071a03f70f5839f915e43989a59bdb8b1c", "10000000000000000000000000"], + ["0x6d17a1d100ba0732a72c309834c8cb7aa3690e4a", "10000000000000000000000000"], + ["0xa9c7caa7029c886ed5463155217110c25d8ee393", "10000000000000000000000000"], + ["0x9467f85edba87ede9c42e6dee079aab29879ce79", "10000000000000000000000000"], + ["0xbeeaae250ca286a7b861c8b0fcb1d5bbdee44394", "10000000000000000000000000"], + ["0x3938f63158de24fdedb8f8953db13bd581118f89", "10000000000000000000000000"], + ["0x9fb1c52126c34fc0a0e4b37bedd2e65fe5617654", "10000000000000000000000000"], + ["0x60f13d97e7342b046396705952afaf9b9f9a442d", "10000000000000000000000000"], + ["0xa8ce9d6c62ffa6e4cec0d215624f9a1419d78ed2", "10000000000000000000000000"], + ["0x0975c2e82af9eb16c68f682fe50e864ae557de72", "10000000000000000000000000"], + ["0xa9b3e4e7667d96cc5bc44bbf17e80fa39f1e5006", "10000000000000000000000000"], + ["0xd46808f9c39b9bfea1cd817f2e8c2ecb3184a5bd", "10000000000000000000000000"], + ["0x3c495a69ff82e36a6479f4af470f6389676d0b9f", "10000000000000000000000000"], + ["0x752663015b9bb32d0ffb575967a833176b793f1e", "10000000000000000000000000"], + ["0xc0b374f27abccd5f34e30ba437adf10f084a66c4", "10000000000000000000000000"], + ["0x54e10526b3bbb5e51cd26d3db374e4332d8fee8e", "10000000000000000000000000"], + ["0x5b4275ba1251b4692ec8b76bdc78111031d2a7cd", "10000000000000000000000000"], + ["0xa59b5f2d362ce789671212bd8e18b2d928ca60e3", "10000000000000000000000000"], + ["0x472c8e03d9972e1ae1774346b18f091462eb24f0", "10000000000000000000000000"], + ["0x78ffe1e4ada70afaccd803355d2241e2e1bcb5f3", "10000000000000000000000000"], + ["0x3fc46fa504a40830cb5a0416b9625b88e1eb41af", "10000000000000000000000000"], + ["0x9bf7b27182e988d302ca1ec1f64a6ae59dbce3fe", "10000000000000000000000000"], + ["0x0df3cea37ea6146657ef5f393cb51edc579bc552", "10000000000000000000000000"], + ["0x254265d8f5d988426f2297e9b68997815737ad0b", "10000000000000000000000000"], + ["0xdd8fe8805751ef039795f998cbee33aa861018f8", "10000000000000000000000000"], + ["0x3c0d9d0e15a4422ff8c27a496b9c786ae1b7a5bb", "10000000000000000000000000"], + ["0x9d43b4dec57280f4d8923d0404ebb8416bcbcf84", "10000000000000000000000000"], + ["0xb0dbfa6e34adf8cbca0332a155f0fd9b93abf35c", "10000000000000000000000000"], + ["0x2897958f27ef55067e39afd882f2f5695d266e98", "10000000000000000000000000"], + ["0xbec118e18379f10ddd4c57c708f4e43a41afbcbd", "10000000000000000000000000"], + ["0x2c12f81506c3bbd3a5250f742a877fd30f6460aa", "10000000000000000000000000"], + ["0x10b9924602f31b716821eccb7b81ba0c3f9b34e0", "10000000000000000000000000"], + ["0xbaed499414cc63472d770c0b329b6720f271cece", "10000000000000000000000000"], + ["0xf03abdc9039400ed2434218415895ee2b7da8b7b", "10000000000000000000000000"], + ["0x9037398f5c6e14a8654c59539c16f84123dd425c", "10000000000000000000000000"], + ["0xcce8d59affdd93be338fc77fa0a298c2cb65da59", "10000000000000000000000000"], + ["0xe3232b4e03cfea16e1dfa908b52cad3a4ae2592f", "10000000000000000000000000"], + ["0x8a20ecc5dcf7cfdcadd9969c66366ec958317fb5", "10000000000000000000000000"], + ["0x2764f88fe0cf47fbd481f5f1166eb8da0ed7feb6", "10000000000000000000000000"], + ["0xcd003b9ce7b1c64b57857710beccdda8d982a740", "10000000000000000000000000"], + ["0x86e6f18c836882e7429592d9d5261bdd4f3eae29", "10000000000000000000000000"], + ["0xa1ecb46c0be223dff23efda8bd553d17b938af47", "10000000000000000000000000"], + ["0x113e21c37cab951c281476dc7ee8951d3ec6d6be", "10000000000000000000000000"], + ["0xe1cb0ddb050889f7c99a2859c81729ff5ca6d29a", "10000000000000000000000000"], + ["0x81864360d166e53446390454422a3d0e904005f5", "10000000000000000000000000"], + ["0xc03c4476fbe25138bf724fa1b95551c6e6b8fd2c", "10000000000000000000000000"], + ["0xb50c13ac04ad1e1b074d76eb64356a08cfeeb449", "10000000000000000000000000"], + ["0xb3a14719e1da663e7f48fbaf97ef872990551243", "10000000000000000000000000"], + ["0x003f7293e7282b4c8ca4a807f3f621a0659f1c09", "10000000000000000000000000"], + ["0x553c6a57a1436fa9d7275d77cd3d3ea62c75ca17", "10000000000000000000000000"], + ["0x4e9ce0f37ad40d302fd3af2909ee7101b17c9c37", "10000000000000000000000000"], + ["0xfdae0e73be9d4bb5439ed1724af6435fe91c1c69", "10000000000000000000000000"], + ["0x3b1d75ad5170136f41ba923139ff6f45932ba546", "10000000000000000000000000"], + ["0x7767319acedbbd5192ac06150424909a27138544", "10000000000000000000000000"], + ["0xe708acf4264610f0fe7064f498666cfefb9648c6", "10000000000000000000000000"], + ["0x1946102fa977780a0c265b6073f206c2d6d3bfa3", "10000000000000000000000000"], + ["0xa8b5eacc8b5c10cc8b68b315cb9781b311a7ac3f", "10000000000000000000000000"], + ["0x20f542e36ccb48129524c4592c7f040300336b92", "10000000000000000000000000"], + ["0x8c09f9dd2289e88acf387601873da8a4b766fd33", "10000000000000000000000000"], + ["0x092c741651725063aaebf422f2ba775875ca4dc3", "10000000000000000000000000"], + ["0x7a2121e0b92ae39ca9fdca303e73753c21e35f25", "10000000000000000000000000"], + ["0xc70628f0931abeeb9864b5a632439f30118e384c", "10000000000000000000000000"], + ["0xdcf8d6905ed8e2c8e2194a99c22f1232398ef3b0", "10000000000000000000000000"], + ["0x6ffbca4259dfcec4b72bed5008704468208e7635", "10000000000000000000000000"], + ["0x4217309cab4803fb455b0d6d33678dca3555cf01", "10000000000000000000000000"], + ["0x04c860013028fcad8762518cff977516f5a21662", "10000000000000000000000000"], + ["0x4b1c40ec0452e28a885aabe08e2f2b32cca85ff5", "10000000000000000000000000"], + ["0x754c3c591dd4f3922cbdca43f0735f2efaf41541", "10000000000000000000000000"], + ["0x51e00a95748dbd2a3f47bc5c3b3e7b3f0fea666c", "10000000000000000000000000"], + ["0x14290920ddf69e07a3b8e5b6a40b51dc75a802c2", "10000000000000000000000000"], + ["0x405227400e15b125609acfcecfca5008c175ddba", "10000000000000000000000000"], + ["0xa64333ed5ef49bb2ba34530563b39e0a2b9e0586", "10000000000000000000000000"], + ["0x14c4cb6077c8929386428c853a65d5c2be033945", "10000000000000000000000000"], + ["0x80fdcdd692c0a586723a8cfb940f4739917182da", "10000000000000000000000000"], + ["0x605cdb5968e47fd867783b60f8390479f699eab9", "10000000000000000000000000"], + ["0xb75f87261a1fac3a86f8a48d55597a622ba3cc48", "10000000000000000000000000"], + ["0x1461bfdc10cabb981f4eb9d64a3cfc174f7cc56c", "10000000000000000000000000"], + ["0x8237f4daa90abc0a4e2097a8b423dbc6c0d0d614", "10000000000000000000000000"], + ["0xa65a4aefdddddd8c8614d820177ff52c2076d70a", "10000000000000000000000000"], + ["0xdb59117e9c20c7f79fb1ecfb4497c38aeefa7919", "10000000000000000000000000"], + ["0xfd68e3ef807230c2b7859a47c8a33e81a439bbc6", "10000000000000000000000000"], + ["0x296ac1ff52b9ff97b404b93da139443b4d81843f", "10000000000000000000000000"], + ["0xb03e52e5b8ae0a203212662a6a0e3cfece59630d", "10000000000000000000000000"], + ["0x21d4c58c8aae74f33c96f9b62308a413f39cdd27", "10000000000000000000000000"], + ["0xb585814c924440cebd8954ded5b97b59f65aaf50", "10000000000000000000000000"], + ["0xee9cbd996f33efae4b53329c9f9efa500ca6e365", "10000000000000000000000000"], + ["0x07c83d42c835ac1b56a02fec4788a456116e5453", "10000000000000000000000000"], + ["0x58a4b71db382a108171e2cc9b6dd490aa5514fb4", "10000000000000000000000000"], + ["0x563400e04295c1f28b4ac4872b91a0e52cb520a8", "10000000000000000000000000"], + ["0xeda057376704bfbe71971aa21b249449dc7bae3c", "10000000000000000000000000"], + ["0x89e8c756efa594116409929ecbde979a8ea1de14", "10000000000000000000000000"], + ["0x6247bf5f0037a090dc33b74d5357ec46547a9ba8", "10000000000000000000000000"], + ["0x912dd31f6a07ece098df4350682c2090a19b2fcf", "10000000000000000000000000"], + ["0xfee724806ef43fe223fc77bf92554b1d8caf772d", "10000000000000000000000000"], + ["0xdbc57a1dc6bf9080c10b2d66be3afef7ba2a4f19", "10000000000000000000000000"], + ["0xfc795960c9f785a2cb599c1e0d949dc5c19f6258", "10000000000000000000000000"], + ["0x14fe1322209eaccafe3f7545195bd163359cdf0d", "10000000000000000000000000"], + ["0x1a77abd08956b73ab2fd7d9a2c25fac53495bef5", "10000000000000000000000000"], + ["0x53cbf587156d4970e452967794962f67dd3ba110", "10000000000000000000000000"], + ["0xd79a3323119dfe910c6ac7c506036be6ebd44417", "10000000000000000000000000"], + ["0xf3bfb88affacbecefc1a570a848a79cde46291a4", "10000000000000000000000000"], + ["0x74102bc480a41681e66add3ec9378ae6f3a79652", "10000000000000000000000000"], + ["0x57aabccd6f5e465f6359fa9d5c11aefa34925cb5", "10000000000000000000000000"], + ["0x3296474f536bdf252eddee60e1580f0cbc72e286", "10000000000000000000000000"], + ["0xbcf6f519b022927f7160f940d7646decf75f68aa", "10000000000000000000000000"], + ["0xe03d7d4d41c403d65505c29e4717a06ffc10da00", "10000000000000000000000000"], + ["0x860be57d3951c3dadc7a21156b82949596a18de7", "10000000000000000000000000"], + ["0xd70a9dcd0753dd7ad9cc49d434b91659a6165512", "10000000000000000000000000"], + ["0xf43c75b8af6cbe076918069ba5d5fc9d1afac954", "10000000000000000000000000"], + ["0x94d2f2c38b5a198df362dae026c72d3cf27725dd", "10000000000000000000000000"], + ["0xf14fe2d917f5b59e90a199a401bf1ad7f3a59265", "10000000000000000000000000"], + ["0x598c2fe8ceea012153f2fd9cd77cb1b5befdca39", "10000000000000000000000000"], + ["0xb0e24f33249c4f85ef1df3e2773ac94b0e637a00", "10000000000000000000000000"], + ["0x032c1a94b8039773aa839e38d4d76e0e991dd7bf", "10000000000000000000000000"], + ["0x164d909ea9986f95a8ecf9ae141de56dd0c2d86b", "10000000000000000000000000"], + ["0x7d2098ea80cb929e9fcf79ed18092ef3034239d2", "10000000000000000000000000"], + ["0xf3b08a2e2747a0638ad91e163be3a251f26b6c38", "10000000000000000000000000"], + ["0x4b9b7dda7c64046776b0166f4f71a2cf058c3e56", "10000000000000000000000000"], + ["0xd4ada92d41687b960856cd16755f4dbd4a82d70f", "10000000000000000000000000"], + ["0x44b2fc812df9b5945a88a1d2f70f217c2afa292c", "10000000000000000000000000"], + ["0xd6f82c5b7af5a6ba2a60421d304c93abd2a98bb6", "10000000000000000000000000"], + ["0xbaacf4656a2b60c54445db7211988edfc3cd98cc", "10000000000000000000000000"], + ["0xa5b55e9277f39ed77a09319a36acf4961a1a67e3", "10000000000000000000000000"], + ["0x7558d0ed461e0fd323556a049167d90d25a78a0a", "10000000000000000000000000"], + ["0xa44f346aa65d88bc2cf51ce1f2651187f005be0a", "10000000000000000000000000"], + ["0xb2780b37a3197f2ff03733ac84a8b3fdf7fcf10d", "10000000000000000000000000"], + ["0xb1d58b06fccd1aaab557d895f494d8457fd488a2", "10000000000000000000000000"], + ["0x2b2434b24c58486a16953952acef2c4adcf7033a", "10000000000000000000000000"], + ["0x2adba2d00c7716f5b218b4df61fbfe30fb52d191", "10000000000000000000000000"], + ["0x43fce290181eb60bdd2ea8b2a7695387da3416bd", "10000000000000000000000000"], + ["0xd012e4961de1d7138305bda73d37587916cbc68c", "10000000000000000000000000"], + ["0x40f293766af55e2ced9d2bee7ef1d584bcee41d3", "10000000000000000000000000"], + ["0x95d43258483ade54f7a2c53dc985031f0f619286", "10000000000000000000000000"], + ["0xc25e850f6cede52809014d4eecca402eb47bdc28", "10000000000000000000000000"], + ["0xfbde6d57645b6b9c259e84ee0071b71e0572683e", "10000000000000000000000000"], + ["0x58a19d5dadd2f465ba16e1358a9cd113ef279cef", "10000000000000000000000000"], + ["0xaf914aa608b13ae7cf94cb38a99bbad15387e28d", "10000000000000000000000000"], + ["0x7e6b47cf352ca5e3713af88dc4fdc23b60ad67f6", "10000000000000000000000000"], + ["0xab8410bb53ce7e27bd45b86ec7b3688159c512ec", "10000000000000000000000000"], + ["0xa8dbc1ee88a30efeef9692e7476620279e8f95db", "10000000000000000000000000"], + ["0xf0025d7f196d8d5d5a944c311896bf94dd3efafb", "10000000000000000000000000"], + ["0xd1a863da4c548fb5bf6915292e635b58ef38b77b", "10000000000000000000000000"], + ["0x1227b6bce1b40ea3d2edd33c5107454acb9d5fe2", "10000000000000000000000000"], + ["0x4ca1fac10635f822aea0d0cdfacb958ba029f56e", "10000000000000000000000000"], + ["0x360b254c868064168d9dd8dd7d7e103fdc5c7f8d", "10000000000000000000000000"], + ["0x6bce1ea16205869fa7f28f12e217993304019e7e", "10000000000000000000000000"], + ["0x46a15045f68feb474938e2c7155c05bce5f104cc", "10000000000000000000000000"], + ["0xe32f576578f9aea942226b6a280fbce93da45638", "10000000000000000000000000"], + ["0xc1a0c65a031374ab3e6692ca32320bc04e546419", "10000000000000000000000000"], + ["0xd3ba5a299c45c3a6e1b5739964d68dff822fa658", "10000000000000000000000000"], + ["0x3410afba6587ae91909d5c5d020c8dcae4048188", "10000000000000000000000000"], + ["0x5c18260c85efe5a4a26efae933588d80e727bebe", "10000000000000000000000000"], + ["0xafdebb99329df4d002919aae3d8b055bc9053e20", "10000000000000000000000000"], + ["0x4a4d58adb25180f2e36c7429ba17bc4a79a21eb1", "10000000000000000000000000"], + ["0xd7d7d68e4bdcf85c073485ab7bfd151b0c019f1f", "10000000000000000000000000"], + ["0xf249e7b44c5ae0f3e216f79d9925a47a23438c6e", "10000000000000000000000000"], + ["0x8181dd76e1ad2362407973aa2f63159288932e0b", "10000000000000000000000000"], + ["0x9bb4ba47e280674fdd60be04e70af293a80dc99e", "10000000000000000000000000"], + ["0xf7b28eb110feadbef0af896b82045676bd329714", "10000000000000000000000000"], + ["0x0dc290114023af5614868a6ef0147be261a4baa7", "10000000000000000000000000"], + ["0x6dd8afd0338510eef17db0fb4f76b0cfab9002d3", "10000000000000000000000000"], + ["0xdb94bf07317d263b2f7d771c0652bff5dba0de2f", "10000000000000000000000000"], + ["0x93aab40dd6888569598dd97463373db270b47977", "10000000000000000000000000"], + ["0x1075df73e8532bfb64164e94924c6898ebcf7635", "10000000000000000000000000"], + ["0xe8869dfe6492c4f6f078ba74c651b4808bfb784b", "10000000000000000000000000"], + ["0xd8f01abaa9afafbffc4039e79410dcd938cd64b1", "10000000000000000000000000"], + ["0x60ef9085391291e674802975fdf53cccccf8b70f", "10000000000000000000000000"], + ["0x5a68fa86f34e3c4a9f49dcaa6b5c4da816aba829", "10000000000000000000000000"], + ["0x74fc66cc35b90cf3f8ffa0b08ab7b00acd419a48", "10000000000000000000000000"], + ["0xbf9d36e48125a856e5ebf4eaba8e314cace90663", "10000000000000000000000000"], + ["0xac9ea7537e24c736918c33ce30e16d57e3efebed", "10000000000000000000000000"], + ["0x527422122bc5508d68dda6903bca53740a1a3248", "10000000000000000000000000"], + ["0x098fb583a27052ad8533d8dc0767f648f464db13", "10000000000000000000000000"], + ["0xaea4565a717e4ba257035829ca6055a2c6e151c5", "10000000000000000000000000"], + ["0xd382570c8c16fa6bd31302e5cb2bfa4f58ba1004", "10000000000000000000000000"], + ["0x8598770dd49c6c867d2019336ce66c04278c9a8a", "10000000000000000000000000"], + ["0xd350a04d2566b5356afc7b6ec93db428084d7392", "10000000000000000000000000"], + ["0x95ff03009c97dfc85675e3540441f278cd3491a9", "10000000000000000000000000"], + ["0x4495e211f9e46b97c75d95fa0863243e7d74b9fc", "10000000000000000000000000"], + ["0x44c6c0bdf106c2248174577c5342dc785a981bf3", "10000000000000000000000000"], + ["0xb99f63fda30bd3afbc73c0c4afeb728b3a451ea3", "10000000000000000000000000"], + ["0x3cd5496a6e4d789e40961259e257ba1fe4ec32f2", "10000000000000000000000000"], + ["0x5e154121e1b9279a26f9f477310acafbe11bd91b", "10000000000000000000000000"], + ["0x388411e858cb11414b7eeccf26c8c6a2c23ec52f", "10000000000000000000000000"], + ["0x39427de5d859576c849f4ac0e4601a2504697bed", "10000000000000000000000000"], + ["0xeb090b315b21b4e46f9e789c314da9c2fb974e23", "10000000000000000000000000"], + ["0x8d81209f5619ef5f35878a8c459b8680a54ef057", "10000000000000000000000000"], + ["0x43db77a27790a91ecbe9bb8e974d5fadd17d53c5", "10000000000000000000000000"], + ["0x7161f402ffdae5c4d63a750139ad714a3233ca9a", "10000000000000000000000000"], + ["0x12e468a4ee35da7d5e5128b222c008b6a5453dc5", "10000000000000000000000000"], + ["0x4e6180f2eca3f9bbba840f324502a95cf38cb468", "10000000000000000000000000"], + ["0xc02132ff17c01bb0a36fb9d622d3bc3dc9df0adb", "10000000000000000000000000"], + ["0x63c4f08599d91ec68bbfb118f087f7e56c3dac71", "10000000000000000000000000"], + ["0x066369d37121ad4b0565ae86af6afc7f92cda522", "10000000000000000000000000"], + ["0xa50d73d6b1ebb47b633a093884b72331f1df2903", "10000000000000000000000000"], + ["0x3abcb5d5fb4044620c319bb63c5540a04e024aa1", "10000000000000000000000000"], + ["0x49c6f828acaf25e548d77e4487d14c385a19370a", "10000000000000000000000000"], + ["0xe9d1b2be36cd8f868183bccf553c4e893ce64b28", "10000000000000000000000000"], + ["0x2574a67bdff7a08169d91f4d57a0116b15cf710e", "10000000000000000000000000"], + ["0xf3e4d991a20043b6bd025058cf4d96fd7501070b", "10000000000000000000000000"], + ["0x1f56b9d1b9e1745f69510ac87a5f7686bc014876", "10000000000000000000000000"], + ["0x8f045416a994751f1e106297149d6f743b993556", "10000000000000000000000000"], + ["0xb0ed71a81cc64a0e81a900b74bd8814141a62cfa", "10000000000000000000000000"], + ["0x6df3b8c8d4981ec6deed2fdafafae95888f670c0", "10000000000000000000000000"], + ["0x7d6fbc9a46cc83d74fc6712f83e2e1b49ed934fb", "10000000000000000000000000"], + ["0xd9f72143b4105402c1f254ccd47e1853e80a4df4", "10000000000000000000000000"], + ["0x1cb41360375dfe8ac94a6e10a9027e364966cfd1", "10000000000000000000000000"], + ["0x47602a969b3b978147e25a23dcf87565831e8a7c", "10000000000000000000000000"], + ["0x6bd39ecd7fb71d37866146618d781492e5568dd2", "10000000000000000000000000"], + ["0x04307c5c7878d8d3374a73a2d08f9a9b7dfc5cc6", "10000000000000000000000000"], + ["0x0c60ec8c9f4aecc22c838a5c35137465660cea55", "10000000000000000000000000"], + ["0x589444ad1b6b6cfff04ae5a7bed9b5b00ec09c3a", "10000000000000000000000000"], + ["0x57f1dd3e391b25011faf40dde74c54c7098cc5ff", "10000000000000000000000000"], + ["0xc04c10834f669237282dce7ee4c3e4ac9ed490c6", "10000000000000000000000000"], + ["0x152254c00a481e75b392db07538a8a35aa83b971", "10000000000000000000000000"], + ["0x3092c89b545e38b47d36ff7bd298ebae735ed637", "10000000000000000000000000"], + ["0x839b3b71448af0a5d3c28e154f265e7045528132", "10000000000000000000000000"], + ["0x7310e939c0a814f15065ce27afa8d493e30c899b", "10000000000000000000000000"], + ["0xc6036c93d956c4ac1b84bf4984f2eb4730731f7c", "10000000000000000000000000"], + ["0x30fda24649eb8346d933837a9d4c1c9d76852d01", "10000000000000000000000000"], + ["0x7b2af7a96ae32d71eec4d58708c046c588136683", "10000000000000000000000000"], + ["0x5159d30a3f42b65ac459618b2aebfe757a81736a", "10000000000000000000000000"], + ["0x33708692c5b03b031efd133f71e9c310ff2ad0b9", "10000000000000000000000000"], + ["0x03783617290732be0c02166a4a5641f59bce8be3", "10000000000000000000000000"], + ["0xc87d678c7fefa7c4eb3ce069cc89bb87d0831c8e", "10000000000000000000000000"], + ["0x98bc894eaf9af129dcfd53eb8b6c1af3d860ec7f", "10000000000000000000000000"], + ["0x868e486f3a00cf0ae17b1c55032e80504c67d708", "10000000000000000000000000"], + ["0x78101af8fe6f833ac524852def611ab369adfa73", "10000000000000000000000000"], + ["0xb6b6362fe7f912d557afe0e8b4f68068d4018731", "10000000000000000000000000"], + ["0x69a9e74a795173e2bbb8c70113048edb234bbc40", "10000000000000000000000000"], + ["0x08b3f7dd2e443fb03487538f8f31e6411b589d09", "10000000000000000000000000"], + ["0x13e42ee586d7277b3ffe0ac42d1bf1ecb3632b34", "10000000000000000000000000"], + ["0x2bd6453653efb934a642a383fe8ace4d3e3a4a79", "10000000000000000000000000"], + ["0x5abb2333de084ab4eb31f48341b1ef8d115a329b", "10000000000000000000000000"], + ["0x20c75587792bd5bfbe96abb680e9faea5b3edd9f", "10000000000000000000000000"], + ["0xca1e9f0ef2f5cc54d3fa14d3bfde1675a168bad5", "10000000000000000000000000"], + ["0xcc03e33fc298f2d627c62ac42cca953a4e01bd4c", "10000000000000000000000000"], + ["0xc725c9c374006989c5878c80989d70b6bd275c0e", "10000000000000000000000000"], + ["0x90a92d256a27b67b4c4f3c5382e2fe826ce8fbe9", "10000000000000000000000000"], + ["0x22f278deba92ce1861d1b6f4f0cab72ebd745662", "10000000000000000000000000"], + ["0x54ee4d0f0b7037ba0a2705a97cbdd5487bfebd22", "10000000000000000000000000"], + ["0x5e35fd90ae2978334b6672536e751f30aff2f4d9", "10000000000000000000000000"], + ["0xc46828ae2e8229efb80ea6c832dd598d26d7d968", "10000000000000000000000000"], + ["0xa6355adb4e10156bcde1c2d57684d42628d8fdda", "10000000000000000000000000"], + ["0xbedbb0cb2938f906a847203c2641c1403b75b9e8", "10000000000000000000000000"], + ["0x56da79d3a5c205c6fc87ad269b702c59ff1c76af", "10000000000000000000000000"], + ["0x42e53bb7698b0ebca963abf668c6b441ed0c57e2", "10000000000000000000000000"], + ["0xc7e070b317588e04ad189144668da4e7160f0b2a", "10000000000000000000000000"], + ["0xf05b881e060a0eeed476945e7aa475b5f195f488", "10000000000000000000000000"], + ["0x6b5b79aed614d65eb253ecc2bd312bb24c7ccc68", "10000000000000000000000000"], + ["0x93dc859e6ab49134a0763b9594384e211ffe987e", "10000000000000000000000000"], + ["0xcc531ee4b12c23b654a0fa4b99420d6e964f016c", "10000000000000000000000000"], + ["0xbd9205acb643095de74002d1b14ca7e5e7b56bd2", "10000000000000000000000000"], + ["0xa79aa90437290d45d0fa653b6502bb905a1f62b3", "10000000000000000000000000"], + ["0xd89869a28d7da90d1c8416d172ab6566f7e4d5dc", "10000000000000000000000000"], + ["0xf5b2e66c3569932fd42c38d0d91bdb97612c347a", "10000000000000000000000000"], + ["0xb20a18cb4b22759eec8dce76736a0c2fefbc09dc", "10000000000000000000000000"], + ["0x97546af83caef687a36539c839dff70608970db9", "10000000000000000000000000"], + ["0xc40fc1c553737b2aa8572fdb036986510219f233", "10000000000000000000000000"], + ["0xf3f6a7b59414338f072e2aa3beaa76ab6991b8d9", "10000000000000000000000000"], + ["0x4cfee29694aacf4648b30d7a4816234c0b88602c", "10000000000000000000000000"], + ["0xadf6bc0ea95fcd2114404fd7e23ae541f9e2f7f0", "10000000000000000000000000"], + ["0x0d889d4f642ec877407fc0d32b8620b92981738e", "10000000000000000000000000"], + ["0x81ed41dea967a8d5c8272b4f41eeb20952a18771", "10000000000000000000000000"], + ["0x3e2a56e784e654781bad62c9ea8a9bcb60403b93", "10000000000000000000000000"], + ["0x5a39b59a1361a8cbb5e6d7208adbb0b076a5a218", "10000000000000000000000000"], + ["0x2b025b429dfdc92e513e4ab5cfccc23a3d804f3e", "10000000000000000000000000"], + ["0x18017c2790b6e24e6de3109e87b8077504ce83e1", "10000000000000000000000000"], + ["0xf431834917c01f82ee5aca04c41b845b79aef6da", "10000000000000000000000000"], + ["0xaf0a6cff1f39efe7a364316aa4b586b5c15d749a", "10000000000000000000000000"], + ["0x0e9dbfa14f88c866f3a7ef8f5534090e11eaddcb", "10000000000000000000000000"], + ["0x11223fd41ec1003408855cf97d4ec7faf9d7e719", "10000000000000000000000000"], + ["0x7f98bd1dc02b5421336fdff34b0ad3fdcfd33950", "10000000000000000000000000"], + ["0x6e908eda91209f91df15e045f4eeb04276fda62c", "10000000000000000000000000"], + ["0xb140a7d96974166fa1f10b98c604c1be6c1488cf", "10000000000000000000000000"], + ["0x16385c9b02dcddc25816634c82e6a249b21723fc", "10000000000000000000000000"], + ["0xf7a4c6dc2fa63b3d3e227a5fd29ef9087b824290", "10000000000000000000000000"], + ["0x5ddcd7c84f101d7aabb2bfa73184316394bd662c", "10000000000000000000000000"], + ["0xbb681e2efda1fe3cbf8222579507f296e9493f0c", "10000000000000000000000000"], + ["0x3c13912c7fcca5d247f1b72a00fa9c6fc6c8b38e", "10000000000000000000000000"], + ["0xaa1ca78662fddd0f399a7526fd5eae5903097858", "10000000000000000000000000"], + ["0xfc67581e8c5f8be15459274e5cab03501adcef94", "10000000000000000000000000"], + ["0x9beda91892c5c7c9debd4f33d6170b71ff34b7e9", "10000000000000000000000000"], + ["0x28a13140fd796a0cd5a79bb464841e6c3ad7b2cc", "10000000000000000000000000"], + ["0x917527ee6a9624cafcc0ffce2db566d465e36fb1", "10000000000000000000000000"], + ["0x3dde282df518df4edbba9d9a55a5ab4383c216e9", "10000000000000000000000000"], + ["0x3bb5401d7266dfffafeaa041b7c2df13fe4e1d8b", "10000000000000000000000000"], + ["0x7bd2e4d34e07749e33833046539b662d0258da93", "10000000000000000000000000"], + ["0x649be78b71f1cf10ce4af486af8bda1737ad54c1", "10000000000000000000000000"], + ["0x7f2ab459a66e3d043a2f1380e0056f2734b714b4", "10000000000000000000000000"], + ["0x6c60b3fd031eca32ecfbb98ed9d64bbf74a0a4b3", "10000000000000000000000000"], + ["0xf60f587d07e52ba306a9c4a75d35a752bfa3a922", "10000000000000000000000000"], + ["0x7e1269f51541a46b30ac02905ee8d453ec96485e", "10000000000000000000000000"], + ["0x5ef0ccd9e730d832e01aa859894cf8feef148cf5", "10000000000000000000000000"], + ["0x1bc09946b7c42a61617f64c2e1e0dc7ed9cf6167", "10000000000000000000000000"], + ["0xccb3d8e0efb5f9688f8cff5505a34aba21fdc233", "10000000000000000000000000"], + ["0x2e516e5b2919b866f88f62884a5262e034c48201", "10000000000000000000000000"], + ["0x37050a10fcd3b1c485c33f5d4aef3d0e33750792", "10000000000000000000000000"], + ["0x53672f9be477d5829fcdde348f35caf15b2e3255", "10000000000000000000000000"], + ["0xb1d308241b2627bc1f575ddc3b381e98d8a69e5f", "10000000000000000000000000"], + ["0xf10aefcf3e275977e2fb00051893532cfa35c33b", "10000000000000000000000000"], + ["0xd80e214d86399d966b5d0a0f647e48eb8e73a24b", "10000000000000000000000000"], + ["0xd3811712e3fa3e03388868a62b1067513741c4d5", "10000000000000000000000000"], + ["0x3ae86cfa52b197ce73468a5e5861fe77ff1a6d19", "10000000000000000000000000"], + ["0x4995c93767eeb943a0707efc6a6b3bddbbe6622f", "10000000000000000000000000"], + ["0x8322f06cf86436714f1cc322c652f526db6b400f", "10000000000000000000000000"], + ["0x6ff58125397af2f78127178d8e9d0514e9529086", "10000000000000000000000000"], + ["0xc0cb43a119c1c6a9ea50399161ff1b620c6bc1ed", "10000000000000000000000000"], + ["0x5330170b9cdceb4694f7278f6418346b21832474", "10000000000000000000000000"], + ["0xdea3e18aa866f46da789f0b908e90bf55a0dca90", "10000000000000000000000000"], + ["0x223a35433f3f87ef302fdfccd77777dd0cd51f80", "10000000000000000000000000"], + ["0x2281db2f9c78f6a0afc70e2dbbec2472b24a2bd0", "10000000000000000000000000"], + ["0x590b01699be980e92b38326904f19b19214cbfd5", "10000000000000000000000000"], + ["0x11db895a439d0dd024270a32b1113979f72a3b26", "10000000000000000000000000"], + ["0x88c66d3d576ba03b7561c6330c07e49f2cf8a412", "10000000000000000000000000"], + ["0x3ee20f990c3bb65ac6a3adb57b4ff66f592dc2a4", "10000000000000000000000000"], + ["0x557fef30faeb0acd5e7c733704e56a7107879d4c", "10000000000000000000000000"], + ["0xc537fee3bcdab2a6ba3ae0a4856e41d196709bfb", "10000000000000000000000000"], + ["0x79f7b7c0270a519c7bc46091b3038f36c78549e5", "10000000000000000000000000"], + ["0x5088439f51728d47b603ef557cdf739e17a28922", "10000000000000000000000000"], + ["0xa10671808455d6f8cb663459c9f334a873f4c81f", "10000000000000000000000000"], + ["0xbdf2c86f988f4b1b367e4b2e7dc8da5f99f2593a", "10000000000000000000000000"], + ["0xb3d69de03151c786d05a6c470dcc8d7f1f109c8d", "10000000000000000000000000"], + ["0x961dfb44c895a2b94f96c1d1513e7bcd75a5e454", "10000000000000000000000000"], + ["0x43f824adfac29a2bd611545540965efc8ec2e4ac", "10000000000000000000000000"], + ["0x58e777e71cd05138b1216e26cf50a02546655ddb", "10000000000000000000000000"], + ["0x4ba2ed434abceab019415e7b4770beca368f8db5", "10000000000000000000000000"], + ["0x5b40794812deb51dd95aaadbafd1a33fe125757c", "10000000000000000000000000"], + ["0x6c358adb31f0110d2880c9351615c8627ac84177", "10000000000000000000000000"], + ["0xd03e1b93424a5bab90f2f88a75a0336b46b516e9", "10000000000000000000000000"], + ["0x720d330816afd75a72e012f8d669a19918483375", "10000000000000000000000000"], + ["0x5cf8a362e7b801d555d3155919dcbb6253d4d0fc", "10000000000000000000000000"], + ["0x82720619b4b6cf8a19c29888f9b081e2d8645867", "10000000000000000000000000"], + ["0x8c055e84ed56a1f87b5e901babd799b154cd5c78", "10000000000000000000000000"], + ["0xd73db7bef50aa4302f13c16b07ad0919b955dca2", "10000000000000000000000000"], + ["0xe809492c3e85cf52dcd4fb284cd0f2e629f3eba6", "10000000000000000000000000"], + ["0x39a38050190f980e1ed3e259084ff315e244f037", "10000000000000000000000000"], + ["0xd47bdd78c4eca4b5ac941a4b4cf62b34be730c42", "10000000000000000000000000"], + ["0x38c1649b72fd245e434b9db29f6148a90aa7ca12", "10000000000000000000000000"], + ["0x23f7c4667a0d1faa42105b991816fb84fa3037dc", "10000000000000000000000000"], + ["0x703960bd917478f9f41cca901f3da41bf96d31d6", "10000000000000000000000000"], + ["0x89a38dd6d08f3a87a31c292c51d0f18d2677c825", "10000000000000000000000000"], + ["0x79dfdfa0c384b0fbf49854eb491a9fa7d197f93e", "10000000000000000000000000"], + ["0x699d021dc88fa7a071bebdb93e9f905bc983de9e", "10000000000000000000000000"], + ["0x8cc848d8d1eb77fc1518a91111c428c28035e0fa", "10000000000000000000000000"], + ["0xf8b317264429a80a7246ac9b5e2326e7bde760ae", "10000000000000000000000000"], + ["0xfa38df65face3ffba188f0bd2814c2266c3c23d5", "10000000000000000000000000"], + ["0x86542a9ebbfe8447ba02e28c5f31f04c7340a1ff", "10000000000000000000000000"], + ["0xc10a4691f0c675d026a8191d70c231b78f65d969", "10000000000000000000000000"], + ["0xe4aeddfc1adb70c0c639592c9c423b27a38f2ab7", "10000000000000000000000000"], + ["0xaaf323c9fea7e6d81ce36d7ad40e67d3599069c4", "10000000000000000000000000"], + ["0x6e6f1bdf898eebc6a95c9a82350f609327d8eb9c", "10000000000000000000000000"], + ["0xe95dc5d3fa1b75ab6ce0a8775eaa1735bbbbf382", "10000000000000000000000000"], + ["0x9f404425f7cd1559076663faa284659ed6ff7c91", "10000000000000000000000000"], + ["0xa90800d5ab123cbd3ec96b89178b3955bdcca2dc", "10000000000000000000000000"], + ["0xc87f715096e770422e4f19c4b49a158eafbbe90d", "10000000000000000000000000"], + ["0x3bc1b9ce24f0fa636a8ed446a0172c15fda230d0", "10000000000000000000000000"], + ["0x4c3e5d6c762c3ff116b07cfb5f488b43ef4e4d45", "10000000000000000000000000"], + ["0x9a188cc4fc5e7d6b1ffc2e0d185d59195fd160e4", "10000000000000000000000000"], + ["0x2e32c7815a96dc1a2a1787f9013b0169a242d714", "10000000000000000000000000"], + ["0xa095ddff8597e1ff75e43fd95fe37e36aec4c689", "10000000000000000000000000"], + ["0x326ea036c2bf0021f3909ab08cf8c230c7bfc4d5", "10000000000000000000000000"], + ["0xebf78b93e96aefe3c2c9bc8568513f8288436a4a", "10000000000000000000000000"], + ["0x981b175c75ff25016b987d96ec15a13ab1237e96", "10000000000000000000000000"], + ["0xa2f696958a5e023014620687f1d34755c707e5d1", "10000000000000000000000000"], + ["0x47064935e90c060ffdad7a748c37e62c4f03b8cc", "10000000000000000000000000"], + ["0x9531647f5ffaf86ccc95307a2841d44864f50d2f", "10000000000000000000000000"], + ["0x62c323e6a3e702706e889a58974f2f84ccc53f7d", "10000000000000000000000000"], + ["0x25d0cff8c47f33b32192b3ea9824ac1bc550bd43", "10000000000000000000000000"], + ["0x573267a8c5d5b3965fa778fa4de1b5f676073f92", "10000000000000000000000000"], + ["0xf6c23bffe946dbaa9ae6964b298cb058f3ef6635", "10000000000000000000000000"], + ["0x15fda64fcdbca27a60aa8c6ca882aa3e1de4ea41", "10000000000000000000000000"], + ["0x04158ab32847369010045e922e8d24c03d6aa7f5", "10000000000000000000000000"], + ["0x8b46924a0d6d610a46caf0a5d13dabdd25b68645", "10000000000000000000000000"], + ["0x73c27b2542a3e7481b796a47c95759b4216a4bd2", "10000000000000000000000000"], + ["0xa0f0ab619aec09ed753748adc8c258f2c89285e3", "10000000000000000000000000"], + ["0xf26db1ab6a6b3e6544cef663f8a8b7496844d410", "10000000000000000000000000"], + ["0xe4ad4e411c64e94e327d66d1a6515c4988186451", "10000000000000000000000000"], + ["0x10370734e1791ce74456dedda3b724a44f664eea", "10000000000000000000000000"], + ["0xb19eb4d14fd9cec25c5a99220a5bcbd4ffbdf948", "10000000000000000000000000"], + ["0xd76be4ab3b5a12a604ca81cc34b8a83e9331156d", "10000000000000000000000000"], + ["0x8a4b25ac9651992c73aae3e51f3923d806feeffe", "10000000000000000000000000"], + ["0xad0de39a552a8e05139c7d806a977231bd23a2d4", "10000000000000000000000000"], + ["0x38d73354ac5c5d6f8db3e36285f1a2f5784d1372", "10000000000000000000000000"], + ["0xcd09ff5da28fee209f92fcd58fbd87a9bf6d196c", "10000000000000000000000000"], + ["0x93f5af632ce523286e033f0510e9b3c9710f4489", "10000000000000000000000000"], + ["0xbaf658faa46bc1e4985cf5d0a2ba21a511f5db5c", "10000000000000000000000000"], + ["0x2b06ae2df3f81fe505a142f05af98525bf51a1b8", "10000000000000000000000000"], + ["0xf5859a2f9e22e67c1e4fb1d2e538a586b1dfe454", "10000000000000000000000000"], + ["0x6f9ca333b957bc02217ea9ecfa5ba674c09c7431", "10000000000000000000000000"], + ["0xcd3550bf2ca177ff4cf5b2452e6e908564c21ed6", "10000000000000000000000000"], + ["0x838eeb65281e211eb8ebddd29270947f95444808", "10000000000000000000000000"], + ["0x0a6e37ceea837299f160b63ccb71a0a1587e3c47", "10000000000000000000000000"], + ["0x76a746079946279aaf1c7fd9a94ca7fd48c555b7", "10000000000000000000000000"], + ["0x330ae361002ec0cc7b68dbc5ec57073d52e8cfd1", "10000000000000000000000000"], + ["0x8821b354c6e7bdc13a1155b8815d696675f2ca0d", "10000000000000000000000000"], + ["0x5c0dc504be827714b81ce99ed287a0428eb397a6", "10000000000000000000000000"], + ["0x8c2365fe0b0a9aa879b4114eb2b9b6565e431153", "10000000000000000000000000"], + ["0x56633bbb3c6572f8013a1174219812532d6cecbd", "10000000000000000000000000"], + ["0xf0ea58b65c82c48ce69f0abd68d178e7764c4ba2", "10000000000000000000000000"], + ["0xef0505cf1ec565f3bae09a1e982dda7d9876c07e", "10000000000000000000000000"], + ["0x346d2b27737d0fb24a5dc9c3cda345da8b727446", "10000000000000000000000000"], + ["0x141fae74850982116eb69534060277640db3eeb7", "10000000000000000000000000"], + ["0x6f3169d904fc580b24e5f541758834b07aab63eb", "10000000000000000000000000"], + ["0xc8a51f193c35edc394616ca00a782377017ab675", "10000000000000000000000000"], + ["0x6713db93c0a7580fe0e81dfb1b6d121030120b33", "10000000000000000000000000"], + ["0x006cbf936f193ce6359256c6a5380f8f49d5066a", "10000000000000000000000000"], + ["0x4cdf78724f6f80670bebcd03a69fab9a6778556c", "10000000000000000000000000"], + ["0xac841f0da675dbdc6e988f4fe78208a68315c3b7", "10000000000000000000000000"], + ["0xb4027525352031ac6eaf4d78d88605d344073985", "10000000000000000000000000"], + ["0x6e5b935ac926e11dec812eb0a5425ec5e4c96355", "10000000000000000000000000"], + ["0x9acd3e502dc33ddf6675b40783ff05d89b1e2f25", "10000000000000000000000000"], + ["0xbb9727a4f0133577d1893268725474dd00beb8ce", "10000000000000000000000000"], + ["0x5463fc9c971189816d71891315dc7c60782b28bf", "10000000000000000000000000"], + ["0xc6676c09fb04ae2a7039cb35dd58094ce3b2753b", "10000000000000000000000000"], + ["0x85d535d22249f02ebd3e30fe314c4aa2a7fbf363", "10000000000000000000000000"], + ["0x2285b2ef91844e8443ceec8aa8a32524b5a65389", "10000000000000000000000000"], + ["0x43f0f04b4740c49331c4cffc8392def59572aef7", "10000000000000000000000000"], + ["0x7cc1c8e53063623708e9c67affd463e9c55e5a98", "10000000000000000000000000"], + ["0x1543a0b0a7000426afd8caed7dfed9ce5477d418", "10000000000000000000000000"], + ["0x434d871309194367082397ad72f2682195090bba", "10000000000000000000000000"], + ["0x003155a1565b4233a5027f43062c2395eb114073", "10000000000000000000000000"], + ["0x207659e7014a0823021c101d80b029c234588e84", "10000000000000000000000000"], + ["0x561c7f1fd5c2e369ce5922945985181c7aa411d3", "10000000000000000000000000"], + ["0x4f2cb8a64665abae49b9ac7e9962230d29aefe3c", "10000000000000000000000000"], + ["0xc7c1de06b394f956a2cf9d1e34360772eedede87", "10000000000000000000000000"], + ["0xaa62d6dc492e917ee9fa3ba971cbf82480b6c77e", "10000000000000000000000000"], + ["0x0482e93db464af4c9d1346a097b6a048aeca38fa", "10000000000000000000000000"], + ["0x522bd2c3ca9c6a697083c4e62d8e883a1b519176", "10000000000000000000000000"], + ["0x2c28ce41d2df4b64a9c6509a4dcf5a3ff04952f8", "10000000000000000000000000"], + ["0x0d4ddea3849c54e16c85cb4354943dc876e05552", "10000000000000000000000000"], + ["0x8046bc2af3556c8657995d5c268195286925c67c", "10000000000000000000000000"], + ["0x4d23a692c2d37285fa6beb9637caac449891718f", "10000000000000000000000000"], + ["0x1d29298b4de8f7a56e85a7d7c08fd5d78c391cc7", "10000000000000000000000000"], + ["0xca002ca0ce3b4d0568f450dc9ef0c3637e6a13a0", "10000000000000000000000000"], + ["0x4fcec7642200dabaab8c303c6d4efac4decc8859", "10000000000000000000000000"], + ["0xf39b74d3f90a032d0ea671868783be073fd51161", "10000000000000000000000000"], + ["0xe5c67c31c22ac9d1c4a11f687ed2185f12fbbb5b", "10000000000000000000000000"], + ["0x7ec228399810f6960fa04ae2818a835d79d3f8bd", "10000000000000000000000000"], + ["0x15a0e86ec1a099dfe20a2d9e2e9deebc9a90986f", "10000000000000000000000000"], + ["0xbaf3299a7d05f339193e61239525cbcae444fa68", "10000000000000000000000000"], + ["0x0f038a4a26ca3cb90dbec66d772853af3fcdf733", "10000000000000000000000000"], + ["0x2db78ad46c3684fec3058af917228c5b6e4a2a61", "10000000000000000000000000"], + ["0x9588d1ad3d3f5757d90f9a7b791ad6edc48862a7", "10000000000000000000000000"], + ["0x7e243c07afceafe22c05ff1415db8effad5fc100", "10000000000000000000000000"], + ["0x3bcf25e8da05c55e236d6caa0ddc7d17482ab178", "10000000000000000000000000"], + ["0x2e465ddca6d2c6c81ce6f260ab13148d43e93371", "10000000000000000000000000"], + ["0xd7d59e74f960824336b1925c1bb2f2b6040a6b3c", "10000000000000000000000000"], + ["0xd7eb0bdbec9f3ef66472e0933310a212781977ec", "10000000000000000000000000"], + ["0x52831fc8d8344000f92734db70cd4a01a1383eaf", "10000000000000000000000000"], + ["0x91911e488791fb4629edd8d1a5b4a685d44ce46a", "10000000000000000000000000"], + ["0x700965eb67dc62d2a3eafce9ede4b2ec15217874", "10000000000000000000000000"], + ["0xd1fa45d2f1b2ce7de6fd4f4b5898adce9c95734b", "10000000000000000000000000"], + ["0x85aca057c1b5a8b31ab251162b43f8438746844e", "10000000000000000000000000"], + ["0x35c81e79e1c49718db71b95179600e8c2472571d", "10000000000000000000000000"], + ["0xed2d0e6b843188c87cd75217e6a343d30d49f107", "10000000000000000000000000"], + ["0x2748cbe2f1440b3557f20eef103b59098c29582f", "10000000000000000000000000"], + ["0xa0cd7cab17c5fc68b86b19bbf4f8f46ff24dd6b3", "10000000000000000000000000"], + ["0x4d82322f62a0186dcfd16051b42e8ba019e6daea", "10000000000000000000000000"], + ["0x23408fa8f9acbd66ab4f9b2dcbb9e85ebe989993", "10000000000000000000000000"], + ["0x5370e4db012e3492508ea2eb6f93985ed44fc61a", "10000000000000000000000000"], + ["0x2197606e51dd4b6aac8317533dab492aa53edad3", "10000000000000000000000000"], + ["0xcb1703717e125d4db28f6e95afec2d8d3c2d9ff2", "10000000000000000000000000"], + ["0x31110fadb4401fad566606905c03d9daf3c87ce2", "10000000000000000000000000"], + ["0xbcf840e1e4ca28e7a50982d2c60b9acaa158d0a0", "10000000000000000000000000"], + ["0x98b45938641f2bbd0a1f5c946840fb73d45fda6f", "10000000000000000000000000"], + ["0xfae2169ebe7d52bdaa4bc91c59a6f53f17a00d9d", "10000000000000000000000000"], + ["0x100e45613e1ea5c16b2b2338e2f1bad3785068f6", "10000000000000000000000000"], + ["0x1eceda8cae8cd1d2c26ff4a09db5f16d9213a891", "10000000000000000000000000"], + ["0x2da668c1b6d281181cc717306fcc7c9c463fa17f", "10000000000000000000000000"], + ["0xba14977adcfc73f1552c5c510b9bff83d95f346b", "10000000000000000000000000"], + ["0xb5758b77607d8af9d7e83282186209d5258e52fc", "10000000000000000000000000"], + ["0x5815b5e4f0945370d305310d0faae21ba0e118a8", "10000000000000000000000000"], + ["0x0e2c7260327e3609d65690779ad077b9b967612a", "10000000000000000000000000"], + ["0x9da13a3a1fe5c7dae732bf3a75635c5e7f4f2070", "10000000000000000000000000"], + ["0xe4637ed4e4e07a31657b9b9c8cb97950be499ae4", "10000000000000000000000000"], + ["0x032578c5c63820f91024523df6e0ebc13edcbca2", "10000000000000000000000000"], + ["0x5bcdf5d8870cc21c8d33259c252cab428f74e8fb", "10000000000000000000000000"], + ["0x952e430c56301eb302e25b6073b042dea5bc32b0", "10000000000000000000000000"], + ["0x08508310276b879190a6f787c404ce8eef8d5432", "10000000000000000000000000"], + ["0xaf98b60342e94244e0732a0bd04b4fba06c30854", "10000000000000000000000000"], + ["0xaf114921e8d91c1bb01b5f416e12a552d7473602", "10000000000000000000000000"], + ["0xc4d9019fcc3b2ce94c6c3a8cec495e904bd81576", "10000000000000000000000000"], + ["0x544fe5703ef129a3a72fffe44e49ee8d333a2a38", "10000000000000000000000000"], + ["0x0042614e5deea4709fac6584d1560e3222daf963", "10000000000000000000000000"], + ["0xf8cf675d7b41c7e039ed0602325099443ed701f6", "10000000000000000000000000"], + ["0x38a21985b77f1658bed383ebae079bec6c5f3a07", "10000000000000000000000000"], + ["0x55e4536c228323fe22837b0821a26dc35e3d77a9", "10000000000000000000000000"], + ["0x7f1b27c621fe7e2a02a55c65a14e696c437b4470", "10000000000000000000000000"], + ["0x4d0665a2829db89e8cb5f2f50fb12d0459f0a125", "10000000000000000000000000"], + ["0x3d258c7e14957fa02a001ee4177d3af2d52b1d53", "10000000000000000000000000"], + ["0xd506b99e2c57beec32678ad7d5b838ae703ead57", "10000000000000000000000000"], + ["0xb7facb4f9aab1507a8512eea3393dce126445939", "10000000000000000000000000"], + ["0xfad857ea48dfab915ac34ee3a1a73195bf21a222", "10000000000000000000000000"], + ["0xd33efc182c87de58d5bf8d38bce446ba2bf138b3", "10000000000000000000000000"], + ["0x002011d68c8c3747ec2e90d39f61abb84609a6aa", "10000000000000000000000000"], + ["0x36bc8c1e846556b8f29191f5d68941d37e62754c", "10000000000000000000000000"], + ["0x7d2e02a9faef2a4a1b5dfe83a530d3571979d240", "10000000000000000000000000"], + ["0x0c81bdb2e8aab74423d6a1da2d1d3961b465c579", "10000000000000000000000000"], + ["0xeea7a36d41d739ab8c3fe94309f677e87a4146d0", "10000000000000000000000000"], + ["0x8424860cb889f787024ac78bf0667d55ea4afb1e", "10000000000000000000000000"], + ["0x10367c5335f5a1567598fd4ac3838943e0b8774b", "10000000000000000000000000"], + ["0x91a34c4b48510fc1262e092c044cbe1220a7099b", "10000000000000000000000000"], + ["0x9b362014da9e2d24e7d744de791faa00e6a8f9a1", "10000000000000000000000000"], + ["0x3c8bd33e51cd82abb6e9c59ef7b9a6d61682e690", "10000000000000000000000000"], + ["0x0820ca934e4ead413f5181fed24a57382f37d915", "10000000000000000000000000"], + ["0xe78b5888142a873d075e2cdf5293402b117090a8", "10000000000000000000000000"], + ["0x7a4ba3489ca5b28f33800e1f95780686495c99cd", "10000000000000000000000000"], + ["0x40db8365d1252bcb06598927698238a99d39228e", "10000000000000000000000000"], + ["0x1ebc680bbf8ea1aceb9113389cf4ec839ff6b198", "10000000000000000000000000"], + ["0xce62ec58396d56c18e6ee35c885025539ff3ca0b", "10000000000000000000000000"], + ["0x0efa20d60fde441cbe6f245f2d2201e732820ab2", "10000000000000000000000000"], + ["0x8f4e6be0925af97e9412e78fd185b84e80575a88", "10000000000000000000000000"], + ["0x9b0fc8c04a0c872477c278ffdb6e9a0b3b4d7849", "10000000000000000000000000"], + ["0x5053a1354cb45eebdd2d8342ceee71d41efa75ca", "10000000000000000000000000"], + ["0xd6aabdb37616ec782844d4005207a7aab43a08ee", "10000000000000000000000000"], + ["0x34cab12b13fd5bb41567a73e04907b861a743198", "10000000000000000000000000"], + ["0x8d040102f998508a65c2e6f44ef035eafad2bfc5", "10000000000000000000000000"], + ["0x8f82c1e59fb6e7f49792b7b8e661b01b541bdbce", "10000000000000000000000000"], + ["0x30270a4e14002409a769548636fe1b73d1250788", "10000000000000000000000000"], + ["0xd9b4047ef0c3407e3a3ef3a22beb9f7993f1f346", "10000000000000000000000000"], + ["0x050bc4d2797d43ed0068fc9a60b83a064fd8a91c", "10000000000000000000000000"], + ["0xd895ffe25d7627fb29fc48df4af20bf377c57266", "10000000000000000000000000"], + ["0xca76c23278495e3a0bc534b074f0accc98b6a759", "10000000000000000000000000"], + ["0xd9ea22f48d8ada55048e8495e04862eb5b7d11a1", "10000000000000000000000000"], + ["0xf873ad9135088add364c7a96575482c53233d9b5", "10000000000000000000000000"], + ["0x99b0fc050b69b6638986328b5cad5f59e65aeed2", "10000000000000000000000000"], + ["0x608cf4dc98ac76eaf04d63e73f6524e9ce72d1b3", "10000000000000000000000000"], + ["0xd6f14a1cc837a728f22fd53adc3a3c1d20350326", "10000000000000000000000000"], + ["0xc30c8930a8fa7a5ecbb8df9d3a19febfbbcd897e", "10000000000000000000000000"], + ["0xd9b4342749b93504138eab8bac8e9279a0a3e91c", "10000000000000000000000000"], + ["0xc3903bb04ad89160891f5dce66a01a6535a24994", "10000000000000000000000000"], + ["0xb293641a9d1e5129c9a9d4f701b6c47f28a4f26f", "10000000000000000000000000"], + ["0x36774a983fc9e2e11a5a4a9b540297a846bb4a01", "10000000000000000000000000"], + ["0x8ab2ae2c445b8d88311979caa46bab47037dc9b5", "10000000000000000000000000"], + ["0x3aef750ad04585a023321d507c83c903fa121529", "10000000000000000000000000"], + ["0x2c826f6d49d58ebfc5e45906be9eae3fc7ca71dc", "10000000000000000000000000"], + ["0xaef76cd08844019385b3148799114bdc8cb75cb0", "10000000000000000000000000"], + ["0xbe2ef7d04af3e9851099a5d4c27ab42389e0425d", "10000000000000000000000000"], + ["0x632889c2536b12fa1cd80309144c73559d89d405", "10000000000000000000000000"], + ["0x5907f6596de3235d9a1ddcf4e23535257e88d592", "10000000000000000000000000"], + ["0xeb6b51d158a5fdf67ba74d66dfe44b396e4e227d", "10000000000000000000000000"], + ["0x70022ffe7f412cfc638725cd33b1a3a2aa5edd0f", "10000000000000000000000000"], + ["0x8c16c8fe98a50b515cf8268090bcb8886b241908", "10000000000000000000000000"], + ["0x992f8e145c5404e944aeb8f53660985daf9dc827", "10000000000000000000000000"], + ["0x3f5165d28fa84a8ad165b2897f9a9a6eb1de5bf8", "10000000000000000000000000"], + ["0x037a936c8af287798f6563df168a2d371bbfe635", "10000000000000000000000000"], + ["0x738b9aeea3d5e37f67ebe540b9d5a2ab2248634b", "10000000000000000000000000"], + ["0x3df551bb6b29eb05fc709a25f8f05e07119d99a9", "10000000000000000000000000"], + ["0xc4c0ed8bab66f995bd6a98e8b1261534ebcb5867", "10000000000000000000000000"], + ["0xc4784bb8ee943f408a876fac881ce4ef1100409a", "10000000000000000000000000"], + ["0xb88f002634cd733fa51eecf4905bcdd83c5b2adf", "10000000000000000000000000"], + ["0x194e9c9d49798596cc9bc76781f992fb83c232c6", "10000000000000000000000000"], + ["0x3a547d56ea5a9a316803f9c7c978837845625b38", "10000000000000000000000000"], + ["0x791bdf53cc4afefa841506035e474c3c1e7126dd", "10000000000000000000000000"], + ["0xb9461e4f092bad1d6bc3a549ad87ebf6ef7e4925", "10000000000000000000000000"], + ["0xbcc3cdc81b8243acf58cd96f43f99a3b9c393ea2", "10000000000000000000000000"], + ["0xfc7a28b3332801a8e5405e65b3be67c8680742e8", "10000000000000000000000000"], + ["0x0ce77f9ec6a65b0b3ef1756d633751ca182f4eaf", "10000000000000000000000000"], + ["0x2f14f93c092983cf96e17f5e8a4719ddae4c82dc", "10000000000000000000000000"], + ["0x1afde41a98a9960a5dc785090149bb1740c8478f", "10000000000000000000000000"], + ["0x102dbc29586f8e4b12b0e11c95176a32249cf80f", "10000000000000000000000000"], + ["0x20795012a635b8d0c4f2d9824f68419b36bb5564", "10000000000000000000000000"], + ["0x97b9a3cd5425974558a3b8a8315284f06d9451bb", "10000000000000000000000000"], + ["0xe12ebb51f6a712bc323f7fe1ed36c9cdacb47d15", "10000000000000000000000000"], + ["0x13b5ea12da65161e2289de15b2f9cd323f44db3e", "10000000000000000000000000"], + ["0x647c7da221168fe5086cf8556fbaf1343c77b657", "10000000000000000000000000"], + ["0xc5958a9c4f7169cc95969849a6065beadd5322d6", "10000000000000000000000000"], + ["0xf6d41073c8c5091bc8e62236d5c1ae13617af599", "10000000000000000000000000"], + ["0x89c7de79549fa5ef5785d7a7cbaff0c241bb0714", "10000000000000000000000000"], + ["0x2901131b2e1acfaf29b3363b72e523ab668511d5", "10000000000000000000000000"], + ["0xc676ead43c7f45d8d50e975acd3abaa8a2b1d3fe", "10000000000000000000000000"], + ["0xb2f5b7009a21a6af46582f31325ad9aaea0c0bd2", "10000000000000000000000000"], + ["0xdeb5e8abe33af81011431d0203cc180a6e78c2ad", "10000000000000000000000000"], + ["0x292d9fc110a111c5b431e9758d34964b61f1fd92", "10000000000000000000000000"], + ["0x3c2e4b3040d1aab686d34fe5f111530a21f8be74", "10000000000000000000000000"], + ["0x269e54cc50ed9502003d92664acf1f6cb91999c0", "10000000000000000000000000"], + ["0x4219ff8cf85ef15fb75c350a3e848b58832ae167", "10000000000000000000000000"], + ["0xf0e6829f09337cffd3275a098a572ca7cbe309fc", "10000000000000000000000000"], + ["0x88748a7dafce7d4783d060d1f497b586cfddab84", "10000000000000000000000000"], + ["0x0b43ff85c3cc38e1f08ae6235bdc6e4d645dcf29", "10000000000000000000000000"], + ["0x4d3ca31daa91366c6ada0223c002c0d927878445", "10000000000000000000000000"], + ["0x0136c6fe0796a373e9ac5bbac2576e94ba0b81ba", "10000000000000000000000000"], + ["0xfea76ea25c285587ce75c86d46558606cc382f35", "10000000000000000000000000"], + ["0x06f5d2a078e42e33718d5f0bdd55c76f17bd67fc", "10000000000000000000000000"], + ["0x3a0c3ad39673cce83bf9735fbe3b4889e832326e", "10000000000000000000000000"], + ["0x0c16d08cdd114f9830d3cbb1045df4e8da6bae8c", "10000000000000000000000000"], + ["0x0f430a50595ba595a82836695f2ef60a24ae327a", "10000000000000000000000000"], + ["0xa5e8c5b3add6c49265ac558dbe756952ee7ec439", "10000000000000000000000000"], + ["0x46d0bcf7f8ef33d12948deb4f8583191a0103e60", "10000000000000000000000000"], + ["0xba516997513bf9046d7fa4cc1442144d4fcc3bdf", "10000000000000000000000000"], + ["0xd0de011f8e252c71b6d4d60b7a6dcd7940d9470b", "10000000000000000000000000"], + ["0x15cc94ab6414cafa6b0f37c365421708b8bdf017", "10000000000000000000000000"], + ["0x5ec1dab31f07762aefe439aee7e12f061c325b2a", "10000000000000000000000000"], + ["0x7ece5fc7290e8df49f8f1ca2f838dc1c8b0712f1", "10000000000000000000000000"], + ["0x670b60b8d9f47ad4b325a69527c4f876e7b498e1", "10000000000000000000000000"], + ["0x88434368aa860a58879e7afa4fe19801fe833eb9", "10000000000000000000000000"], + ["0x7bd74690dd2dba6e408825e3938697a311cebb2c", "10000000000000000000000000"], + ["0xf6bb44ad0878049eda05e168f670560f182a689c", "10000000000000000000000000"], + ["0x30367d0323be56e9bf2c19231f9ada204a47ff7a", "10000000000000000000000000"], + ["0x48926666d0a6e3919507c1828b5b30229bfeafc6", "10000000000000000000000000"], + ["0xa5f0c698ca7858b7cee31613ff2c133e6e968485", "10000000000000000000000000"], + ["0x6d5bec7a483962bed9eb4014d415abdc52bed240", "10000000000000000000000000"], + ["0x5e8ed66f58c41657b05545e6a32ab4d32024372c", "10000000000000000000000000"], + ["0x67851af7920206006ae0eef3bbb445c91c39938c", "10000000000000000000000000"], + ["0xbcc22f7d6a49df2b081df31924a668959adea52e", "10000000000000000000000000"], + ["0x8552af06727a69240a6ff9764d84a1fd9f240ec8", "10000000000000000000000000"], + ["0x8e677d99c9c679af13820748efbafc3c42e31f2e", "10000000000000000000000000"], + ["0xbac42c9b32e574f41b86e20fba0cf479a5a1ca58", "10000000000000000000000000"], + ["0xfe6acc4399146045a2c9c5459fd49954897114f4", "10000000000000000000000000"], + ["0xb9c9c621eff2f103600615fb9bedb3e00c7be1aa", "10000000000000000000000000"], + ["0x0ac0240f4656dc80684d0df1208bb91c0220725d", "10000000000000000000000000"], + ["0x7a170000240e38137e5f34f429af03b2b71c98f7", "10000000000000000000000000"], + ["0x42b86a1f912d8aa0174cd46f63ebbc846421a500", "10000000000000000000000000"], + ["0x20ccc519e34462a0744d1b064611e9982f6b6fe6", "10000000000000000000000000"], + ["0x5b19d76e11dc68064777b12ff57a223dcd8f929f", "10000000000000000000000000"], + ["0x0205b7d3566b036a8f1d0dd4ee726c22eee16bd1", "10000000000000000000000000"], + ["0x7e9206591571b2166cd42baa92f2e69f683a979d", "10000000000000000000000000"], + ["0xc0e745a82eeadee784e7ba56fad17e7b5adcb76b", "10000000000000000000000000"], + ["0xb53f0a18bcc0eea66d5ee75e0ab949ef4d8a132e", "10000000000000000000000000"], + ["0x836b748c46024b464898d7a2da6d8ecabf1c812d", "10000000000000000000000000"], + ["0xee848eaed71719b93482a4f998aa78cff8b132cd", "10000000000000000000000000"], + ["0x1fd18f2f75cae7caff305391be2f18432ba562e9", "10000000000000000000000000"], + ["0xc13cce21ab71432ffefa56758794586615a38d17", "10000000000000000000000000"], + ["0x24a5040f0190d86841c4ea6f5a6de8ced5f0b334", "10000000000000000000000000"], + ["0x644aaa204d299941c58f757774e2c2bd522cda98", "10000000000000000000000000"], + ["0xb5a8f3381408cecfcf602301c78ceed92d23ff23", "10000000000000000000000000"], + ["0x0621c518df390245282e945400a84f48e2dbd215", "10000000000000000000000000"], + ["0xdcd134aec7a9bdd1a051d17b2e29454dcd375b56", "10000000000000000000000000"], + ["0x914c5633990af2e1636377bf4c7e6e059ea1e436", "10000000000000000000000000"], + ["0xf7ab5f9db3b621877c123d4f7f9ec61997cca0a4", "10000000000000000000000000"], + ["0x1f834184b11a4adadc4e8c9b408168b95d50dd10", "10000000000000000000000000"], + ["0x649427f141e8f9dbe9be80983b4ba71dc3bebe8b", "10000000000000000000000000"], + ["0x68aee219d75fda4e508f70454628acb9bdf413f1", "10000000000000000000000000"], + ["0x94e08736426948c5f463ac243416f0473f680b2b", "10000000000000000000000000"], + ["0x49248e9dc8a4ae03789ed9c54cd0e0c1ab0a5d0d", "10000000000000000000000000"], + ["0xb32a672d21b1b8c033d0a195aca2eec16117ba7b", "10000000000000000000000000"], + ["0x503c4ab4899be94dbe935f3c40bd63ba37ea59b4", "10000000000000000000000000"], + ["0xfa019bc786013802890118a76a6f97c70edbc418", "10000000000000000000000000"], + ["0x291f728ba2800d9cf0bb8af7f1ce33d0e78f313f", "10000000000000000000000000"], + ["0x701a24d812e4d9827ec8dd2b3eed726ffd9b4065", "10000000000000000000000000"], + ["0x7d1e9050f02044cbf200bc2b75d443d8e464a0d9", "10000000000000000000000000"], + ["0xce18b30c8e4d287f5ec429f053b8274cfd2aabb4", "10000000000000000000000000"], + ["0xe3f4e9fc5ece5e42366dbe7c7d0f50ce348986d8", "10000000000000000000000000"], + ["0x4b36c4b9c7c92e2a643cc42f0d9859519d5591dc", "10000000000000000000000000"], + ["0x581f967fabe549fb85ee7a851a432ee27eb2861c", "10000000000000000000000000"], + ["0xcb824df92feedb354c0d1cb5097e8bf2ca478290", "10000000000000000000000000"], + ["0x2cc7bfe4e11687d0f5c28cbaa48073458dddefa7", "10000000000000000000000000"], + ["0x306db8baa49080658b86f93b8f79adfb062ef9ec", "10000000000000000000000000"], + ["0x3b704c981d82726d439179302bddf6abf990a9fc", "10000000000000000000000000"], + ["0xb753087bc71d5ca6f7336567b4dcb9d8577f806e", "10000000000000000000000000"], + ["0xc9badc2b35e5143b74443a990cac1ae820d2508f", "10000000000000000000000000"], + ["0xc163197a9d80f04dfaa550da9aeb826d81ea33ae", "10000000000000000000000000"], + ["0x0607af01bce45d29f9c784e2754045d609a921a6", "10000000000000000000000000"], + ["0x9ab4d84f9882b1ef8e33259ea8010fb62a895139", "10000000000000000000000000"], + ["0x57abd7868f043e17d33e37c6cbd86e1e189bef0e", "10000000000000000000000000"], + ["0x83401c971ae7c1ec19646c99cfe6c6e2b9115781", "10000000000000000000000000"], + ["0x3308e8cc698c4903af3571c8147f0ce3874f0a0a", "10000000000000000000000000"], + ["0xd22fa7a71e896d5ba8ed87522d0af5c0ef7b5fce", "10000000000000000000000000"], + ["0x986fd6f03e337e18174e1ed694f81b81668fd3ea", "10000000000000000000000000"], + ["0xe903349a368acaf2833c30d1ebd1f09f6a0b6830", "10000000000000000000000000"], + ["0x9dc49081cae215ac1c5a5744630b4fcc23cb960d", "10000000000000000000000000"], + ["0xeb2adc57bfb86ca79c8f106db8ea3f3364c09330", "10000000000000000000000000"], + ["0x77370579286515d09e4dbe68bf634980f3ce6f97", "10000000000000000000000000"], + ["0xb3d3fea5ca6b60f6b3d305edc55fa941a4dbf678", "10000000000000000000000000"], + ["0x8ee79cf84cc62b05b1febb22062b87f7418852a9", "10000000000000000000000000"], + ["0x21e3545aa43f043df8aa2604275613dbf3dd52b4", "10000000000000000000000000"], + ["0x6628d0731ac8e564e16d60da68c8200064b47f56", "10000000000000000000000000"], + ["0x63c33d37e0523f1a99e6c7abd211a72ad4e58f85", "10000000000000000000000000"], + ["0x72c31f6cf2f22396c42ec33e51f76b6e6c9fcfdb", "10000000000000000000000000"], + ["0x5367d9bd6996b32b65a062618f7d0e00be27b107", "10000000000000000000000000"], + ["0xce42353fd66097a9a87885fa1e66c70c20a0ee60", "10000000000000000000000000"], + ["0x16e16af66e019c4eb514db27d6033de083e7dbc9", "10000000000000000000000000"], + ["0x72147caa9fb9832dcd7700ba5a9ec1e3fc6f5ab2", "10000000000000000000000000"], + ["0x0427b2d09abb942c3b30e7063a19588d777a28d4", "10000000000000000000000000"], + ["0x903217c7d31d6a36106f76df578e4b0366318cc4", "10000000000000000000000000"], + ["0xd3841da932756b1f76608f790dd91d06ae30fc11", "10000000000000000000000000"], + ["0xf53f20ab50e744973d8b3c23e2afe5e4f7e20c47", "10000000000000000000000000"], + ["0x3854fe3b8c0e5fb25d919c5f439083e9377c9a68", "10000000000000000000000000"], + ["0x5c8b9c86c219a8ffd7bd6a82367b5560d8c29dd3", "10000000000000000000000000"], + ["0xdfbda378cdcb7e9b385e1a907b5c0f3507703ba4", "10000000000000000000000000"], + ["0xb1b763f855d5f81be4c93193f6f096c6a051585c", "10000000000000000000000000"], + ["0x8671d45621c481cfd397f2655b9764932d20bb8d", "10000000000000000000000000"], + ["0xc1da60cdf769938e5d2b7f17c673286d79aa6755", "10000000000000000000000000"], + ["0x52567a674bc0060120508e9b1026b712ac475132", "10000000000000000000000000"], + ["0x78700077174de0fdd7b848c21361490262e809c0", "10000000000000000000000000"], + ["0x3624c808b025fa95402b13860de4d43b39999bbd", "10000000000000000000000000"], + ["0x345fa4f148bfdca72ad3590f7986c537e8067ea3", "10000000000000000000000000"], + ["0xb2e7c3ef8d3a76012ae89f2be0a93d7809dd9f10", "10000000000000000000000000"], + ["0xa48f0361a682c26d88ed23b591236d8c1b823c49", "10000000000000000000000000"], + ["0xa09c039ff0d13880ada68ffc7a0d79267420a983", "10000000000000000000000000"], + ["0x97fa11bd06452f6c39d5bd9a64777dcaf42d10b5", "10000000000000000000000000"], + ["0xa649bd1a0b8e35ef782b7cfd7cce929a8fd1b04d", "10000000000000000000000000"], + ["0x2211a920dcc05a44131dc0933bfa921d9280c7e7", "10000000000000000000000000"], + ["0xb7a0738523de5e8c2f40e5ea1009c68c25004aa7", "10000000000000000000000000"], + ["0x1a5be5472c6c80b1b71d93f5eb550b6b1c3405ab", "10000000000000000000000000"], + ["0x2c9ef3aee79a6ce5041b37f4564ef7e88d1ce2c6", "10000000000000000000000000"], + ["0x0833a0ac904cc2883e7a07a5ba4c37b492599f2c", "10000000000000000000000000"], + ["0x31e3a2e7107171823ec242445f3b8f32ec2f08d9", "10000000000000000000000000"], + ["0x34b07db14f4db3bc9c528caa8c696f97cd3d621f", "10000000000000000000000000"], + ["0xffe026112ff700f2c3d1e47423c22288cf85ac16", "10000000000000000000000000"], + ["0xd2ac7e9d8ad98e9c5e57b935d6bdd2e7ecc9e1c1", "10000000000000000000000000"], + ["0x6c1485ca7219d57874daa56a8924a348ae3891f0", "10000000000000000000000000"], + ["0xd4d8c6a21f71de026e68c160d75cfd1d720d22bb", "10000000000000000000000000"], + ["0x65e57eb1a37ccbe3409c1b7323912b0587fe659e", "10000000000000000000000000"], + ["0x5b4183b0d1eb25bff61e28421afbdba3b7eb1f73", "10000000000000000000000000"], + ["0x0032eec8d52138ff880e0f8c1a3afc6393965b6b", "10000000000000000000000000"], + ["0x5f9840c4d45a91b600b9e41dfa7a6920bba649c3", "10000000000000000000000000"], + ["0x5895b7467afdd8cae2d9dbdac6de5522234f2e1a", "10000000000000000000000000"], + ["0x517047f615a07450ab32e4fee13c56c2f9e7d961", "10000000000000000000000000"], + ["0x4680e5ca03bf2021581b73d28e5434e81a47e23c", "10000000000000000000000000"], + ["0x6bd00b0d08c0245d07893b4873e4021a7c92b2fb", "10000000000000000000000000"], + ["0xef779d79e7027044ef3b8167a0b785282926d018", "10000000000000000000000000"], + ["0xd784ae16a4734d978f124579d759aeab454597a4", "10000000000000000000000000"], + ["0xe2fbb2d735beb5c98641d5233c64cf48b72e97a9", "10000000000000000000000000"], + ["0x7fce987f2f034e58e5d3be47cc2ae92e8b473492", "10000000000000000000000000"], + ["0xffae4c3d0a479702090080039d5c6b87647fa4a1", "10000000000000000000000000"], + ["0xc20c41877a9af9c59360a4c66f70ed63d30bc661", "10000000000000000000000000"], + ["0x0605e76bb3bf5cd33e38287a020a7129687a1a7d", "10000000000000000000000000"], + ["0x06f57d59f857d9b3fe110524727b339547c3f5bf", "10000000000000000000000000"], + ["0x1438096913309fccbc17529398752aebffd52c0e", "10000000000000000000000000"], + ["0x62eecd8f1e3ddabcd63937c268ca3659b88a198d", "10000000000000000000000000"], + ["0x9b37996b36c4cc37bac28017c22c1c9c7d91b807", "10000000000000000000000000"], + ["0x69a10364a3051ae0665a05e6573b6ca92a79516e", "10000000000000000000000000"], + ["0x2d62f7f7227e00769d3136882d1224bbce96714d", "10000000000000000000000000"], + ["0x41bf28dcacaa6de53eb9771799b6fca5aaa57758", "10000000000000000000000000"], + ["0x631648a072ef63216eda1e23395fd155ec35ed4f", "10000000000000000000000000"], + ["0xf1ddcd748203362ec65cfeff36f24d58cc5a1a66", "10000000000000000000000000"], + ["0x4d94667b1003393828cc885f0dfccaa7dca4ab7c", "10000000000000000000000000"], + ["0x19cbf8aafe9f7fd950567c53915d6c348bf3fa8b", "10000000000000000000000000"], + ["0xd7469590c1a809c859caa77598d87b8dd0144391", "10000000000000000000000000"], + ["0x0b34f1e072214721d7e591beacdab1098466493a", "10000000000000000000000000"], + ["0xa0798fdd595c12b5de930687d5857e9e277b22e0", "10000000000000000000000000"], + ["0xe011cc1d3281619876e98996270bc08c0719d7c0", "10000000000000000000000000"], + ["0x083e31eb571d4a2dac8faedd77fe9bf3359d4b1d", "10000000000000000000000000"], + ["0xfd7e37b3e50759e8cd304663986d70c17632dff6", "10000000000000000000000000"], + ["0xabcdfcefe14a8737dd366de6f485a2831564789b", "10000000000000000000000000"], + ["0x1a48f70a2ef3be51a941ff475594bd1c4cf34e24", "10000000000000000000000000"], + ["0xc3c47a883dba39254f7af7c655566791bd404085", "10000000000000000000000000"], + ["0x64bc2504519948633f639ec35d955f738cd70b43", "10000000000000000000000000"], + ["0xfa59f5b8a1894c97418c0cdb6bd17705d1f6cb37", "10000000000000000000000000"], + ["0x672e226dbf55787c23a3f5105f662ff42ebb391f", "10000000000000000000000000"], + ["0xba3fbc2885144e9a352cca0fa5f39f9753e23323", "10000000000000000000000000"], + ["0x6a2995e6da98f65c7c1548e6a2b681f1352addff", "10000000000000000000000000"], + ["0x28bc33c61382a9e5895b4d1a892333ca7cbdc3d3", "10000000000000000000000000"], + ["0x2053a99675b0d2070b7503ff4767567f91073de1", "10000000000000000000000000"], + ["0xb5f622c8c7696ea5f4ec7c1049ecca38f987df4c", "10000000000000000000000000"], + ["0x7907b64bb4fac25c535b16d43c263f459c3c21ff", "10000000000000000000000000"], + ["0xf7d5d1e3074331bd6d7de5519107f8ac187aed90", "10000000000000000000000000"], + ["0xc564de8c526f74e0b2f106d06a2929a0b5146fac", "10000000000000000000000000"], + ["0x8dd20fd51a88b088cef02662f816a431cc4d689c", "10000000000000000000000000"], + ["0xa58d8b96e665e54a9b45df09b42f17ead20f361d", "10000000000000000000000000"], + ["0x55e0d5d452eafc98dd4e60200e8865a1f09a51d0", "10000000000000000000000000"], + ["0xf0f75571e01ba8610b91a583ef18a330c14bbe7e", "10000000000000000000000000"], + ["0x5dbfc31c252397cb6cafcd0efffe56d89087919a", "10000000000000000000000000"], + ["0x959398fe03b1b7dc43231b90d73a33d798353a79", "10000000000000000000000000"], + ["0x5fb42f57eca503e305027774be412453ab005792", "10000000000000000000000000"], + ["0xa3f19470d3fc0c0f69bd82876bd573b592ca9597", "10000000000000000000000000"], + ["0x48f88a8d8e4a9dff33c0a4d857a81a189c2d6e07", "10000000000000000000000000"], + ["0x5ea85d36eb9c9960724b6d1f912d52d4856805f1", "10000000000000000000000000"], + ["0xb5b083bbf813f314263f42bc3fb25b1c139fc96e", "10000000000000000000000000"], + ["0x93560aa4084dec59695c1a9dfdc24d5f4b55483a", "10000000000000000000000000"], + ["0xb66b58e836568543f45d86dab458df7a71ee35db", "10000000000000000000000000"], + ["0xfeb0ed524ab18cb82038422671b82fa8ef6d073a", "10000000000000000000000000"], + ["0x473f9715ee5434523e4dfc4d8ba6a2dc2ec4dafa", "10000000000000000000000000"], + ["0x60a6853b39d3b37e1436c1e281e28cd91f09fcd6", "10000000000000000000000000"], + ["0x0efe3b099c8281a26a3aeea43b2749645ec75210", "10000000000000000000000000"], + ["0xcf46e636a925b5cf1f5ae06001b26b25e98faac6", "10000000000000000000000000"], + ["0x3b60bfb78f3fe84ff2bc75dee2b14b2ea13805e2", "10000000000000000000000000"], + ["0xfc0739f29e140f2f932bdb995fcee1edd0a2235b", "10000000000000000000000000"], + ["0x685b5d49f4a9ef3b1e36c81c6237c62024b487aa", "10000000000000000000000000"], + ["0x8159ae23624200b2929739f628a5472182f2b979", "10000000000000000000000000"], + ["0x2be2fa0c5a0ba2c046ede2255e4bd08854347de1", "10000000000000000000000000"], + ["0x4a26b856e9eb9db65ec5acb93214eabbcbe3a749", "10000000000000000000000000"], + ["0xe4c3ae3235e0a8f267e27d27fc56e46bfdd62525", "10000000000000000000000000"], + ["0x6d759273795a2d3f23c5887aa694fb21f2ff0901", "10000000000000000000000000"], + ["0xe3970902d748181e04bf81919d5ff8ed30cf005e", "10000000000000000000000000"], + ["0x3b4b0d8853db68f290757e8d5de2e5c7893ddab0", "10000000000000000000000000"], + ["0xcd50f59edd184bcc4e44d7cc33f12cd469519dcf", "10000000000000000000000000"], + ["0x6f3013ef8589af4f024b4f926edf538c3321456c", "10000000000000000000000000"], + ["0xc7efca477afa3c8fe231614b9dc0c78988baeb1d", "10000000000000000000000000"], + ["0xb786074078d2cd10146521b500cfd8a154c13b2d", "10000000000000000000000000"], + ["0x23c51a184ad7e7095e40b5b394d6566ec9f01eb5", "10000000000000000000000000"], + ["0x9c4ab5727c76563f8c386c3e78672b4f9cdbde5b", "10000000000000000000000000"], + ["0xd5c534c0a39865bc0d11835659ea8440ede7d29e", "10000000000000000000000000"], + ["0x20b5c8288b313c6ae31fc563a9d40dd1142cdff2", "10000000000000000000000000"], + ["0x4f7946655b920890c6ec9cc53c6b851ea96d8f98", "10000000000000000000000000"], + ["0x6acce4cc780847e681a269a821557e4c32ad9cb7", "10000000000000000000000000"], + ["0xff3cee0891d5b50b7c6a6f148a9c922c37b94626", "10000000000000000000000000"], + ["0x8f41fd9319b0f3dd7c1afb69c36ffb467fb324de", "10000000000000000000000000"], + ["0xb6dd90bdb43c76793080e2a8065f084763602245", "10000000000000000000000000"], + ["0x7717a9ec35c24a20faaa38760c6f29133aeb8874", "10000000000000000000000000"], + ["0x2b5b309e6c233c06e766178ec02864d15fc49195", "10000000000000000000000000"], + ["0x3a30d21670b7080ee19bafef23db9a40a104e769", "10000000000000000000000000"], + ["0xa5c7a7d03f6b6b2c3ba97054563f6e0a9e27eae0", "10000000000000000000000000"], + ["0xf9e2f244537f1c01628a51226bae34d1583af045", "10000000000000000000000000"], + ["0x06be50385115b75926f7ab496f0c11adc5c74bfe", "10000000000000000000000000"], + ["0xac2f0ae87a45cccc52de8e0f6d00d9e9b477f745", "10000000000000000000000000"], + ["0x2ace839c452e0e5666328b638cc36337f1c37c2e", "10000000000000000000000000"], + ["0xecf6692c7952cdcb34b52b2ce5f0008d2714ef7a", "10000000000000000000000000"], + ["0xcb77c3033c1629f1d8f261c5e506e007041fd642", "10000000000000000000000000"], + ["0x468f05137394f349f37c5e7d9b35661b6f68c0b5", "10000000000000000000000000"], + ["0xc147deebfe852b23c7c58434c435d9f6b0cb90ed", "10000000000000000000000000"], + ["0x1861608fb90cfa01c1b348915497c658e22fc8bd", "10000000000000000000000000"], + ["0x47bb57496ae8c10b3b714bc7f064f3ac049b28e0", "10000000000000000000000000"], + ["0xcba9e488850be09d9cd0d60556c2848d5ec3457b", "10000000000000000000000000"], + ["0xbf2293d6467c1938d5989dc3959a044b48cf9bee", "10000000000000000000000000"], + ["0xd8ad5c375b7ec4088ac091aad2fb1b9acf0bdc6d", "10000000000000000000000000"], + ["0xda1df669ad144edea25f4c22daf16354a3be9df6", "10000000000000000000000000"], + ["0xe12986de407031a7b59260faa2b28571f0757854", "10000000000000000000000000"], + ["0x039dd827ddc52c0d8f0a8c7a8052dd6868963de2", "10000000000000000000000000"], + ["0xf5a28d905b6829fb17e6ab9e749698fb30130672", "10000000000000000000000000"], + ["0x547f00cffa5688f3a364e37c57a24e00fbd9491a", "10000000000000000000000000"], + ["0x2f6f02ced513858d95f3687a6ff18cb38ddbaabb", "10000000000000000000000000"], + ["0xf63a7079b193ee1437ff41ae40b7f705f59d5e34", "10000000000000000000000000"], + ["0x4e3cfa54f8cd3ab91a8ad2340cdcd183b5dc7440", "10000000000000000000000000"], + ["0x89dec99a09b0030000c5508d9b7110e594af142e", "10000000000000000000000000"], + ["0xfa066dc042d979e585aeef94ef20af736581cece", "10000000000000000000000000"], + ["0xe25ef55fcff7956941fb2ca00929e9891f027b6f", "10000000000000000000000000"], + ["0x52db50d39f1182054ad03c61d714032a46c6993a", "10000000000000000000000000"], + ["0x479b80a249614752fd5a15e132669e47c49d75c3", "10000000000000000000000000"], + ["0x91a73acb271c3ebb3ea5467f9ef9b29d5a080d04", "10000000000000000000000000"], + ["0xae5a42c292a9bf774e0dd92779110b8f0a355e0d", "10000000000000000000000000"], + ["0x82735147c800a786166d7cc0e076fd056f773dd1", "10000000000000000000000000"], + ["0xb97176276b93980a659bb54b3243364e2a8c4d21", "10000000000000000000000000"], + ["0xce124b52f0559266b041b020ff1c246ca88538d6", "10000000000000000000000000"], + ["0x2d6f91803e8d713ea47d03a74ebdcaca2b7d92b9", "10000000000000000000000000"], + ["0x5ca910b699dc0e1dada4b6f25ba5a871d1fde8eb", "10000000000000000000000000"], + ["0x93c3fd1f1f4b736a6cfce3d54b1d21394e5efada", "10000000000000000000000000"], + ["0x5bd1fad41798914f3c3e2dd1b1a78f738cde262d", "10000000000000000000000000"], + ["0xf09ec2813777ef277034865649096e1e215e777a", "10000000000000000000000000"], + ["0x8f622c74f05494638992d1fff99b8403fc29bae7", "10000000000000000000000000"], + ["0x92743bdf2346c0117dbdd8a707a4b0929d66ee26", "10000000000000000000000000"], + ["0xa001d2981383b739fbb80297f94316b8073b0ce9", "10000000000000000000000000"], + ["0x40213401b9bc76bda3cee270418056062c47c702", "10000000000000000000000000"], + ["0xd2854b0300723d0cc0a06640968c4c497ed67230", "10000000000000000000000000"], + ["0x778e4aadb3da1e922c7ee817b0c9362043beed96", "10000000000000000000000000"], + ["0x4d157701701e2555c6e6b546422a8ff2b85adc97", "10000000000000000000000000"], + ["0xc4e3ed12796972cccbf328f9ed6b260605628e46", "10000000000000000000000000"], + ["0x2a183e310e56cd262e4b3024ef9dc490fd108f8d", "10000000000000000000000000"], + ["0x214a2e26a097295603ed2913e018c53944189613", "10000000000000000000000000"], + ["0x6635ecb26290fc4bba9517314d32ba8e0758aae1", "10000000000000000000000000"], + ["0xbaf3f8e7797003be711b86a871fa70603601d9d8", "10000000000000000000000000"], + ["0xaddd614c47aa8788305a2bdff4c17f6407729b4e", "10000000000000000000000000"], + ["0x194a6e092392449f567cc86500363811e36ecf52", "10000000000000000000000000"], + ["0x2c77374cd22630a86834e74149eca868e4b1a1b6", "10000000000000000000000000"], + ["0xc3fd21806cff1b370e864967db4ff14c82277aaa", "10000000000000000000000000"], + ["0x1233dd90d5334c8d7d0a7e14fd0b9638235402cb", "10000000000000000000000000"], + ["0x3e19f7d73f807f4e7b99431b8d9676d8553894b6", "10000000000000000000000000"], + ["0x9b97380c223f85b410add0ed75675a6513ecb771", "10000000000000000000000000"], + ["0x9fad047281a61db481ebed86f0fe1eb660f5b633", "10000000000000000000000000"], + ["0x0f6362f799434041070bb8bdba02984e85fa8ad8", "10000000000000000000000000"], + ["0xf7858ffe1810a5ba72b843b9c2322fd1779276a2", "10000000000000000000000000"], + ["0x8f5ef950d786877f86fa150989f6d1e68af9e97d", "10000000000000000000000000"], + ["0x33cefb235c6d1328eb5486d154a6ee5d57652f8e", "10000000000000000000000000"], + ["0xf7cbcf9afc2c1a818aa7b1ee3e954e65b0b9e0f4", "10000000000000000000000000"], + ["0x0b6c146abbbf45b2566f8442ac4269e6124abb83", "10000000000000000000000000"], + ["0x8cd332bb8f734e0db6d5ccc4b9486b4e40de4322", "10000000000000000000000000"], + ["0xcd7365ecf7227896d23b75e150ca10821923b811", "10000000000000000000000000"], + ["0x79e421c024485ed3e23e264bba8f2b295950b20a", "10000000000000000000000000"], + ["0x874fcf122bb816b4bb1770a3aceb03b9b39cca9c", "10000000000000000000000000"], + ["0x3163bc6537b81a8e54d850081d700c14ae30510d", "10000000000000000000000000"], + ["0xa2cefc3ea05baef04e1b360da7d5de70b8338fb0", "10000000000000000000000000"], + ["0xddaaf2c3305dd1feddd005f7273fb07b9cdfa7cf", "10000000000000000000000000"], + ["0xedf470bd925d0c64bc96962d3bdd717eac84006f", "10000000000000000000000000"], + ["0xd6cbe50054c9a9e3eed385dd2ba094f7e8018f34", "10000000000000000000000000"], + ["0x2479737205df8bb6523878b4c881470e80c46d48", "10000000000000000000000000"], + ["0x085ea1d2fc525884484646718a508905037497ed", "10000000000000000000000000"], + ["0xf4b151977024678823489a72ccc6f53f5d496104", "10000000000000000000000000"], + ["0x21712e1a233d5a90da82e1c61fa6183e81e878f9", "10000000000000000000000000"], + ["0x6db4efba09349084ef2073748551ced6db403c35", "10000000000000000000000000"], + ["0xf760069bb5119e6028cd9bc1bb2ea655e4203d77", "10000000000000000000000000"], + ["0x990fe30cabb0567512609caacd882e5c2998b224", "10000000000000000000000000"], + ["0xd2a67a1b56d9e2a60548960359bf525a252c1780", "10000000000000000000000000"], + ["0x6a76747342f55b67cdc1571df445744afb93c2ea", "10000000000000000000000000"], + ["0x9374616e569445ef0a4c2eb51094be31a18ce77b", "10000000000000000000000000"], + ["0x8e360daa57ab3ccc99a8af77fc2de8ae1cb99e87", "10000000000000000000000000"], + ["0x37557ec9c02fb6636c7321d5ccf273bea051dd06", "10000000000000000000000000"], + ["0xb22091c028270c0c772c7ae16948778365fdbd14", "10000000000000000000000000"], + ["0x97d4afb35f95bda7a3fd39263ad7bda18bc85690", "10000000000000000000000000"], + ["0xb000132aad9d8dc5a8c37bd2750b1fcd211d4716", "10000000000000000000000000"], + ["0xe9ff7e5c69bd53638c4d04568f29ab575417d102", "10000000000000000000000000"], + ["0x2abb000c0544152ab12e39549c9457410f206790", "10000000000000000000000000"], + ["0xeff06e7953a4d97f4dbdb7060ada79f338a5ca60", "10000000000000000000000000"], + ["0x822245daa39ab32206fb343b1ed653ac8e5d7338", "10000000000000000000000000"], + ["0xa0a822070b4df32e1e68232200a11e7f564d10b6", "10000000000000000000000000"], + ["0xeaea5e20ba7d72164244b13a4435f12730e2c8a6", "10000000000000000000000000"], + ["0x641954c0ef957bb20068c061a4233e04fbe3db46", "10000000000000000000000000"], + ["0x51b9704c7f271a557e74778725f1cb83135497fc", "10000000000000000000000000"], + ["0xcce0dca48636e823ace24ec16cb242c2312c589f", "10000000000000000000000000"], + ["0x72fc958886e2d0b94d6b3bb67d0fd0654a2a8606", "10000000000000000000000000"], + ["0x402dec3f9fb0d2fdb4ca22f3800738bfe7082765", "10000000000000000000000000"], + ["0xfb044636b92629aa38ee94aa397e09cb7f3ae6cb", "10000000000000000000000000"], + ["0x812f1f434fae0346764687e6069e8176c8601991", "10000000000000000000000000"], + ["0x0420dd486f8905fb7c408d315870d579d2ff2507", "10000000000000000000000000"], + ["0xad6b6793a66c99cccd368567ad16652be4603717", "10000000000000000000000000"], + ["0xd3fbda6a3a49adf3cf6b2a3501b5c8cf270a07ac", "10000000000000000000000000"], + ["0x084466b7f2eba52ed37c63c7fa25b0148e707497", "10000000000000000000000000"], + ["0xc7ac35c412cb902f1c90d1498d04758f3d23d8a0", "10000000000000000000000000"], + ["0x2999cfbf7bec652ac7c72f555d4489c5fdce46cb", "10000000000000000000000000"], + ["0x02966fd54b31a7ec842a323bd5049b0378699c4c", "10000000000000000000000000"], + ["0xcd520946df75ec47ff56521ff1e9bca07dba21e8", "10000000000000000000000000"], + ["0x7b5928b2894ad3ce37af7cf1f842b81ab8932ea9", "10000000000000000000000000"], + ["0xa8ddba3c1e0cf1eb3a06c8bedaf25f9fc7e297c4", "10000000000000000000000000"], + ["0xad7878b5cf4da8c84dd62eb55c827fda3f9a7033", "10000000000000000000000000"], + ["0x2c047714d4486f67754e8172c97f45e92be87054", "10000000000000000000000000"], + ["0x583105cfb4f7aad30770f338efd06e1affc4fe88", "10000000000000000000000000"], + ["0x5c114501cab9f379b6aab10e78b4f50eae7a0d6e", "10000000000000000000000000"], + ["0x84c6de104b03af18ed72e472de1869dd0757bf7a", "10000000000000000000000000"], + ["0xf53b53af7530aa0c7db54b4d028157af60daeac1", "10000000000000000000000000"], + ["0xedac0b6db8a835a8664fd51fb96361ac707f8ff3", "10000000000000000000000000"], + ["0xaefcc8992d7d42dc40b8a88c2b30a5c808d2b58c", "10000000000000000000000000"], + ["0x232ed6686e163cd9de640b0635d1ad0b30e986a8", "10000000000000000000000000"], + ["0x481dec5c5f7a9bb4cfebf2ceceaf9fb9e99aab92", "10000000000000000000000000"], + ["0x566280a89dd72c8d60bb4db62ce24b08be82cfa9", "10000000000000000000000000"], + ["0xfa497b907904ddc735f5059a4ed97275295148c5", "10000000000000000000000000"], + ["0x386cf921c3c64859d4892588aa02778807627709", "10000000000000000000000000"], + ["0xdc5ac9650b4296b1d62943873f5222359bfa92c0", "10000000000000000000000000"], + ["0xa6e4cf15c8a582cc2d4a175847f52586e326bde7", "10000000000000000000000000"], + ["0x32371b624fad61fcc122813ac42ec6f8639f7fb4", "10000000000000000000000000"], + ["0xce0f30a8633bf0a8b528c73535cdc79aee8220bd", "10000000000000000000000000"], + ["0xd59656fa517bd5c3dc3588ff6b1dcdb4228139f5", "10000000000000000000000000"], + ["0x2fea4f7c1e2452368cb661b83d34eed82450d110", "10000000000000000000000000"], + ["0x0980e08622091456d60a6d0b04c45521f719add3", "10000000000000000000000000"], + ["0xc5ab97ee3048ae3b3430ae8e7ce2c0cc09fe44de", "10000000000000000000000000"], + ["0xe612941e974e818ed8679fd385c19e188da66968", "10000000000000000000000000"], + ["0x732737614ad17dc6ca2e43581f8271afb2e4a9fa", "10000000000000000000000000"], + ["0x37b66ad48c6bf20596ac215354fd5e047011d0a3", "10000000000000000000000000"], + ["0xf467c7b8f063b46a0e633d28dd9b0f9f3a1dffea", "10000000000000000000000000"], + ["0x90b7f8eb3e7690ad5b093ef92ad4055f2b61e693", "10000000000000000000000000"], + ["0x8b71fd7dcf80db1d6d8f0cd40b85fa620305685b", "10000000000000000000000000"], + ["0xf2c471943666deae814c787a5c834e8fc599c70b", "10000000000000000000000000"], + ["0x4fbee6850965c8f6eb5eb56627c4a805acd9d11d", "10000000000000000000000000"], + ["0x361347da8d154ee26683f279b5b4744212b7993b", "10000000000000000000000000"], + ["0x2401270543d683c1c428426e6a40e0f1d3168bef", "10000000000000000000000000"], + ["0x0382c934bf6ccc1ec63dc455874f883770ba73fe", "10000000000000000000000000"], + ["0xecf14d987a0663e83dfc22e089e96c6dc159f1bc", "10000000000000000000000000"], + ["0x262157b8359a51c23b532a97486ec517ee2ae9ad", "10000000000000000000000000"], + ["0x440b2690daf461acb09c469509f8af45d411c383", "10000000000000000000000000"], + ["0x0c48ebfa89d87ca96fc1d427997c794653354c36", "10000000000000000000000000"], + ["0x4cb453ae03113deb75d7a8267fb20621e8c996fe", "10000000000000000000000000"], + ["0x01716a7211e33de598d15f599e80d6694df3a17c", "10000000000000000000000000"], + ["0xca15c29018ac0e5ec0ea9970fa4543b8d4921c6d", "10000000000000000000000000"], + ["0x8195a3cc2cc8b11002ee5ea9804e780c9b8f9daa", "10000000000000000000000000"], + ["0x0664fdd5d83ae8fce72e703e1e26834abcc2e202", "10000000000000000000000000"], + ["0xc76245b8209aebb92399525fd75d8d72531f1648", "10000000000000000000000000"], + ["0x8a8d30e81c1c2f08fb775232e204f564b73adfe4", "10000000000000000000000000"], + ["0x7dd2bf18c61136286f6476f104fca5d3b85c86f9", "10000000000000000000000000"], + ["0xa3b5063da84a887b71f7c047a2cadb84042aaa3b", "10000000000000000000000000"], + ["0x5c616a8601360577283c6d509718416d70ad6430", "10000000000000000000000000"], + ["0x2b7933f62e7bc307ef1f33d8b82dde6ed57aa273", "10000000000000000000000000"], + ["0x79d8972843837a22d6c92c2ba0816badbc30ecb9", "10000000000000000000000000"], + ["0x54520d193057ccb8f6ba6980bf95dcf7d48c816e", "10000000000000000000000000"], + ["0xddca23c6ba5155936c8c05c198e452a0674f4bbd", "10000000000000000000000000"], + ["0xdb963ed159f34ce8f552f8ba26d19790c3c072d6", "10000000000000000000000000"], + ["0xb8308ba70e18419dd2cf27b225800595a07813bc", "10000000000000000000000000"], + ["0x30a9925705190e5b298f94b3f3bad4589e241a4e", "10000000000000000000000000"], + ["0x3fcec81357e2cedd46941c867889ed0f66a0f6a7", "10000000000000000000000000"], + ["0xafac8df7f27be423c590cb64c4cf1b359d6308d7", "10000000000000000000000000"], + ["0xfdba76029046e9385569fb13cfd8e1f5aa0ea953", "10000000000000000000000000"], + ["0xa2bee999df19254bf98aab7ad2e99249ca8f58ab", "10000000000000000000000000"], + ["0x7a26f2a0b0bfe00e9c6f5e7cf1206eeeb40245d0", "10000000000000000000000000"], + ["0x7901792223f235d68d8c02b56d0067476e26c092", "10000000000000000000000000"], + ["0xbaa40eb03893a081c2b1a56427b8ecf9e29dc2f7", "10000000000000000000000000"], + ["0xed1f74b2a93eec66042b17dedd20127058c1413e", "10000000000000000000000000"], + ["0x47a0a7653a39643240d7b11854e68b2daea9002b", "10000000000000000000000000"], + ["0x54c6619a52a679e9c4532becf8c9cc8a4d30383c", "10000000000000000000000000"], + ["0x7923d1ba6e7776d5e096bdab45223eb4dae0c114", "10000000000000000000000000"], + ["0x385d94de0be5f6d958b8340a8be6f51c4d53bd87", "10000000000000000000000000"], + ["0x4a8bfa165ba851b078d9d4c5423735ee1eb79699", "10000000000000000000000000"], + ["0x180699fbf0862ffb1fa1f352814f1a2ad74fb818", "10000000000000000000000000"], + ["0x22d514195ed0d7a7c34973dcd597741e197c932a", "10000000000000000000000000"], + ["0xbc5fdc52eae854bb43b6ad24d95bbbcba3af38f4", "10000000000000000000000000"], + ["0x466b23bf30d7bc4541b5470b62a0fddcfcaa33d6", "10000000000000000000000000"], + ["0xd11e3e8815ab3bc592a032bd1b56b01a89d83a66", "10000000000000000000000000"], + ["0x0a2eea8df5198e26357e6742b17023587056316e", "10000000000000000000000000"], + ["0xaa06323c05e3ffc542a0aec88c091f1b2027fce5", "10000000000000000000000000"], + ["0x7316df9dc6a6f0b0e4476b577117349bc6232448", "10000000000000000000000000"], + ["0x81e6884a4dfb51079f7898e5d6a682ea78ffd1e1", "10000000000000000000000000"], + ["0x9fc8c18036a79e89969f404e45ac6dfbf7fa2cf8", "10000000000000000000000000"], + ["0x7a0b2faa1c8b54ccaa026c293d78e80a7c11424f", "10000000000000000000000000"], + ["0xe3e3128698063e388f65fb6cdd4b86e43e8e86ae", "10000000000000000000000000"], + ["0x1d4c9a9b253cdd3c24565b9ff354f6987af7b659", "10000000000000000000000000"], + ["0xc2c2220cdb0b5b72f60cf0beefaeb559b64938c4", "10000000000000000000000000"], + ["0xec9afbb62de1df0e4c183885e7e96da7e8b72732", "10000000000000000000000000"], + ["0x764592f9c0ec019e29ee67d7b2032e6e989881ef", "10000000000000000000000000"], + ["0xe21d93aed5c47a9f5c17f3abe07100de250b9a4c", "10000000000000000000000000"], + ["0xf60c5173df0fa450be932f82c25b4b4e2a9566a0", "10000000000000000000000000"], + ["0xee9b161a24c293a17221cbdefb5b0c874ecf9b0f", "10000000000000000000000000"], + ["0x49e28333b9ea6b584cbb92314162b2f955380c7b", "10000000000000000000000000"], + ["0xffda8e1961d9e55ece7dde23deb06ef7a5b53e4c", "10000000000000000000000000"], + ["0x5fdeda0f94c664b94dba921889664c4dba7056de", "10000000000000000000000000"], + ["0x81bd75c315bd8d5af172e578224865d98aa80da8", "10000000000000000000000000"], + ["0x8f22dfbc78545c5c96c21187773dd70e7a95b2d6", "10000000000000000000000000"], + ["0x9b5fb7a2c9b82b834dfa027d5b5f9600a5d70418", "10000000000000000000000000"], + ["0x00e6bdc5caaf6236d08744beab010936ef7d6153", "10000000000000000000000000"], + ["0x7a4c60bf1c98d690262f054543e6ad72530935fc", "10000000000000000000000000"], + ["0x2c9394f92fd4a275f534041b0d85c0bce540e2de", "10000000000000000000000000"], + ["0x28bb4fd62dd3b29b46884ea7bf8113d4b0cab828", "10000000000000000000000000"], + ["0x3beb972102bb45920b152fa68463bdd4c17da5f5", "10000000000000000000000000"], + ["0x00c1f06ad4b8b930864f5a3fc0c63d5cf228655e", "10000000000000000000000000"], + ["0x12715ba002688b3dea97433530f18b0904b9b956", "10000000000000000000000000"], + ["0x982e0bcda3abb6404a6568ac27b9aa4c397212c2", "10000000000000000000000000"], + ["0xd8d333750d5c9567b1b080759439dcc8e7546a5f", "10000000000000000000000000"], + ["0xe6bf6a74c6d48645e2a305e0ce79a87993861d79", "10000000000000000000000000"], + ["0x3f4abb63d3f0c16956d7d0d3c29ad6d4c283b5c9", "10000000000000000000000000"], + ["0x186bc37c98daaed5b95bf3eb41141b32c250864b", "10000000000000000000000000"], + ["0xa0164e6590885be7d67b0d17608fe95b259b0209", "10000000000000000000000000"], + ["0x7eb3892dfc4529b81a9b10d07f46d9278bbcb35c", "10000000000000000000000000"], + ["0x2c9e1bf8c530a1c7f01e251536101876a73018cd", "10000000000000000000000000"], + ["0xe9fdd1f4d127fe79327ca9793684d31a4d138fb5", "10000000000000000000000000"], + ["0x9f2b668726dfbeb7a976d78513a602170fd5b270", "10000000000000000000000000"], + ["0xdfbb2a7eacffae06638eb0e35cbf2fabcab79f44", "10000000000000000000000000"], + ["0xab19019fcc47c350018d709040376e648465e83c", "10000000000000000000000000"], + ["0xdc3ce2f704e78ac0933b8bd60a1ec42f746cd207", "10000000000000000000000000"], + ["0x92272428764257be4e09355858691a7c751af36a", "10000000000000000000000000"], + ["0x3cc7f73f5a3a687c7ffa6234863d10c33b51aee6", "10000000000000000000000000"], + ["0x5ced069213dac826e1848a5b6c84a071c271f16d", "10000000000000000000000000"], + ["0xdb31938f36ea69ba720da05d83a53d23d235fb51", "10000000000000000000000000"], + ["0xd57ad2f27702eebd5094669c5616f66f4b2d7215", "10000000000000000000000000"], + ["0x673423876ce8b3450c2cb52e4845510e4b26e366", "10000000000000000000000000"], + ["0x7360675ed884c1038e22d602fb9ce219977ab11d", "10000000000000000000000000"], + ["0x9b181cbcc5bf35cad0da18af4558a70190cb41ef", "10000000000000000000000000"], + ["0xdf0ae251dd439d49ba136d4cb63a7f75b9159cdd", "10000000000000000000000000"], + ["0xb10d1e24ea7b92fc7eb305813c5197b373c364fd", "10000000000000000000000000"], + ["0x833b8eb15e8c4f42765400c86c095c5d7493fa77", "10000000000000000000000000"], + ["0x23b660111d92492af9845319d1af62384caaa32f", "10000000000000000000000000"], + ["0x92a413d33ed4b28405f1c785824480e616dd6f38", "10000000000000000000000000"], + ["0xa1c03903041346aac74960d8c4fa4a3953a8cac4", "10000000000000000000000000"], + ["0x23a4eaa46e520937f286e4d8c6cc79b129f2ef56", "10000000000000000000000000"], + ["0xa56402fb07ece948941a04ca2ac8c3b28d28877e", "10000000000000000000000000"], + ["0x81fb9677ec41e7f4c57cbe7fe6d7c67ab63765ac", "10000000000000000000000000"], + ["0x2c4b803574bb89267112f4392636aa8ee830fb0f", "10000000000000000000000000"], + ["0x013cc5f05bbc8c11a4c5fbb42ed6005e00bbf187", "10000000000000000000000000"], + ["0x543ca251cd58c577de8b8b7ccaf3b3f8a89ffc46", "10000000000000000000000000"], + ["0x01bbb770e02b811a656ac3e9b650d8d3296b1561", "10000000000000000000000000"], + ["0x1d9ee73419dd37821a1a01d5fed6b5f7d51f2375", "10000000000000000000000000"], + ["0x1ed6fcaab87bee0ca9cd08100268f00ae2a68052", "10000000000000000000000000"], + ["0x98c0b3b7ef21e8103e8171699adf32c677d68650", "10000000000000000000000000"], + ["0xd081c10773d09a70d8b7db328d596337a70fa220", "10000000000000000000000000"], + ["0x6363f1a75640552d5a372156617753187b9981fa", "10000000000000000000000000"], + ["0x07787a63f09e23043570735711373beb6dd857e6", "10000000000000000000000000"], + ["0x60303dae1c3bded0bae1d070271eff3a2d7de08d", "10000000000000000000000000"], + ["0xe5296e767d4be445e2d89c2e15fdc9c9ac130d00", "10000000000000000000000000"], + ["0x0541bb465a19a6490450d3b808a7fcc7f08bd5d7", "10000000000000000000000000"], + ["0xbd26a9c29ca9dc2c195094300e467d98ca67afcc", "10000000000000000000000000"], + ["0x95d8d95e92b9478aff767adbf188b3f7a9a59e81", "10000000000000000000000000"], + ["0x5d9fdfaacf5bc2e759fa210f6de3d7de5457b385", "10000000000000000000000000"], + ["0xf9c5edf27dfc90ed25ffd3d3beaa8523fbbe51e5", "10000000000000000000000000"], + ["0x91c4809243add1848b86e362192d80cd0304211b", "10000000000000000000000000"], + ["0xb968f274598f081cecd9404d033936754c7f93f9", "10000000000000000000000000"], + ["0xecf3d64e92b9d684c715a32347985e1501aaf329", "10000000000000000000000000"], + ["0x626159c3420a0c3ad5f5dd153a94425961becf11", "10000000000000000000000000"], + ["0xc32d531decd5376fcf1ddf18bc62b30765139f84", "10000000000000000000000000"], + ["0x4831b73ee8feca6c8e5d196c070044cc1d63e249", "10000000000000000000000000"], + ["0x3122123d411f4d8feb72c96480c07dc62c5d2c51", "10000000000000000000000000"], + ["0xc4565748161db315a1da5c7301c6553227a2a196", "10000000000000000000000000"], + ["0x76a95d549ca36d955df2c72f693690d8e51a94d0", "10000000000000000000000000"], + ["0x7e89f45bf62510b134db6b46e957470b9c2a95e0", "10000000000000000000000000"], + ["0x48cc8217b84aca0c7c966dc4f7dae6b2c675e7fe", "10000000000000000000000000"], + ["0xd57e5adb72156cfba34d6e2f62edf2b6a11eb55e", "10000000000000000000000000"], + ["0xad3eac819288fcdafaf486afbd54d05b54ccaadc", "10000000000000000000000000"], + ["0x87011327ccf35ab7e88f36deddcebf0a1ef049d7", "10000000000000000000000000"], + ["0x5c93d34e5e18d25fed99df0771ecf7de322bed4e", "10000000000000000000000000"], + ["0x3d1c7dcbf883c0717bbec30aed5a616bd9002b01", "10000000000000000000000000"], + ["0xd5a9666fad55f6f0884e7665d52b70cf129313f8", "10000000000000000000000000"], + ["0xd0529b53bae79ebf00e429dc74c897fc372f61de", "10000000000000000000000000"], + ["0x97649619b88d94b08f0b54ab9ccac75e87b29e47", "10000000000000000000000000"], + ["0x836c59b17f87e3eae5a3291a96d1c046f5b1a164", "10000000000000000000000000"], + ["0x1b33cac177206f04b5137d0068c82e454a28e2d1", "10000000000000000000000000"], + ["0x971ef1f39352abd927f900750ee2231c47d65e88", "10000000000000000000000000"], + ["0x9ec6c8972f54e0d1c44d289f1dbe5fb6d71ad0cf", "10000000000000000000000000"], + ["0xf49b270e500c6179a83cd22cb7bf820befa11412", "10000000000000000000000000"], + ["0x273ce084c4a7631d2495883e75cced66e02537b7", "10000000000000000000000000"], + ["0x4624a7e23594287df1be7a4bcf5055fc86a397e0", "10000000000000000000000000"], + ["0xf0efe8f6028425e9ba49d251baa7b29875443bdd", "10000000000000000000000000"], + ["0x2b92d12d8cc0b9af862451393925092c6c21a611", "10000000000000000000000000"], + ["0x4bfe442562f52780265dcd542a8a512d577fdb34", "10000000000000000000000000"], + ["0x61bfce6fe4fe2901e1255702e7388c24fbf84c25", "10000000000000000000000000"], + ["0xb3956cf916d72b56b36577c13f2acba868d26c5d", "10000000000000000000000000"], + ["0xbcb2a27048dbcb983ab00829679a1c4b004505a5", "10000000000000000000000000"], + ["0x518199a207a142ee06610e3baff187de184d6dd6", "10000000000000000000000000"], + ["0xc4b2d4c8c7fe747c40050f238fd09e5c5cbb5869", "10000000000000000000000000"], + ["0x41c97ffd1b0427d6961c7a3a4325ad8ff5213d7a", "10000000000000000000000000"], + ["0x0959ba0cabd2ab398c2c2fa7d398c2310eb4cfaa", "10000000000000000000000000"], + ["0x8ec4ac695ee355e544e024b0500247321c922dc5", "10000000000000000000000000"], + ["0x0c142f334643be2eb555e28ac1365d27a0872849", "10000000000000000000000000"], + ["0xc25798a86da18c56aa19ea11aab217ce53bfbb2e", "10000000000000000000000000"], + ["0x3db6c3cbfe1ec01f81c1acbcfb3cc8338c8f958e", "10000000000000000000000000"], + ["0xc3da4c7a75cb02b6c90e57f62aa6f749cfba254e", "10000000000000000000000000"], + ["0x33d288c6f473cfc32a837e6717d276891dd5c9fc", "10000000000000000000000000"], + ["0x1d12ef0edc253a3744352cb2518a5dc2a1b0f928", "10000000000000000000000000"], + ["0x3d96b71e0c13f1ffcfa4bace75b92715370d2f5e", "10000000000000000000000000"], + ["0xa856a47eee22fef15c855613e66912d2deeaf135", "10000000000000000000000000"], + ["0xc4e4149cc6e6cd63f44735824632fc17c9cb79e8", "10000000000000000000000000"], + ["0x79f57e53618d51eeef5baddea0cb2fb2a0b836fb", "10000000000000000000000000"], + ["0x7288933308a14c55a3cf6add0deb00b5dbca8951", "10000000000000000000000000"], + ["0xc4477d22eb18932331e86eeb6da26d1711e43997", "10000000000000000000000000"], + ["0x7061e70b88268765072520a44d0a1e326121959e", "10000000000000000000000000"], + ["0x82a99eec2fc2ea9d7ce68a5b48e893fbd135ac31", "10000000000000000000000000"], + ["0x957b17da5ff2ad20b123bf11ada5105465ecd09b", "10000000000000000000000000"], + ["0xd7a3bc9af6a4e6653ceb0842b0d3a914232bc4ac", "10000000000000000000000000"], + ["0x7b5e82a13bbec350d81374d99eb4c30140cf09e2", "10000000000000000000000000"], + ["0xde8147deaf08e5d4d345fded89e96bba39ba0a8d", "10000000000000000000000000"], + ["0x2198ffea0be9e5d666cd1f57d2680839891dda3a", "10000000000000000000000000"], + ["0xaed19ec110d850b0d34609927c43970750c42494", "10000000000000000000000000"], + ["0x3c72abf6f7c7490736b1d623e459fbd7a91a8743", "10000000000000000000000000"], + ["0x3136540ebe9c2703412b387dcd993ae0c1232a18", "10000000000000000000000000"], + ["0xa2c967b2590f73b5d9f641a84513e1bab92ba301", "10000000000000000000000000"], + ["0x4b70fa020654a4b52a0a5e2b44db0f05f2378764", "10000000000000000000000000"], + ["0x81cb8102b18045d698c184a199de742f0efc99ce", "10000000000000000000000000"], + ["0x320bfde66e78d741d739e8852699bb9364dd46ea", "10000000000000000000000000"], + ["0x0c797ae93211d918ba59938788170ef17f812ef6", "10000000000000000000000000"], + ["0xfafb0aba94438e20fc73c518c0737823f36ca39a", "10000000000000000000000000"], + ["0x3086e62472801e47c99316b695d2d9733212b981", "10000000000000000000000000"], + ["0x5e510bdd3c1aa904c70acfc6e1c110a12fe24a1b", "10000000000000000000000000"], + ["0xce8fee93efae505980413f345f7f530f4d1a9dee", "10000000000000000000000000"], + ["0x8328e993824843a5348e1c1a9194925f468d7dee", "10000000000000000000000000"], + ["0xf94e7b042241e71a2c1f1fcc171c5d876dc47f0c", "10000000000000000000000000"], + ["0x295f6052269e4097d6dc18d36c48de2b390b38bf", "10000000000000000000000000"], + ["0x6e66f477e0bc825137ee18434ea2af9b862c6191", "10000000000000000000000000"], + ["0xf9f2cf0bfbe63b89f141244a6522f5d9dfe4039d", "10000000000000000000000000"], + ["0x6c3a4ce1995e69b4b1851477055c8756984c4b1e", "10000000000000000000000000"], + ["0x8bd42ceba1ac37fe6e1fe8ef545d94fabe4f1fab", "10000000000000000000000000"], + ["0x85330b3a8ac3209c9b16791470f9a69c5cb44970", "10000000000000000000000000"], + ["0x990e5e85387f04354c90845c82a448478c166d17", "10000000000000000000000000"], + ["0x390009b6400888a869b790ba8add3e588dce992f", "10000000000000000000000000"], + ["0x6339e9b65dae5f990cebd40bd171cc16a74f9d26", "10000000000000000000000000"], + ["0xef3f09025bbfaf8bc0673cd539d40f2ad98f5416", "10000000000000000000000000"], + ["0x3e40634d50c2382923e85c877050e2d1f1841348", "10000000000000000000000000"], + ["0xbffac4187d7bbdfbd3ec8e4c5e706e77ff847523", "10000000000000000000000000"], + ["0x742e4a93ea3f3d91b408c738bf17b75b77f4e9ad", "10000000000000000000000000"], + ["0x5653e1c2d1c1a0f3b0b67b91d4c718c000e68f9c", "10000000000000000000000000"], + ["0xbf816189f827777a11ec129bb062456fcce09cea", "10000000000000000000000000"], + ["0x35d918542153109253d5b7d8d4935a6890f9cc80", "10000000000000000000000000"], + ["0xac3b7e023df1035c6971cc9a9871eaa8d1f4ee5f", "10000000000000000000000000"], + ["0xc06fdb17e63c3f58e959b4cdbd0d0ce49a4fe5e2", "10000000000000000000000000"], + ["0xf999493a9785ddac946b9f1f516a79511f0014c3", "10000000000000000000000000"], + ["0xea793efe12f6d9297741199e5a57e3918f2a0fca", "10000000000000000000000000"], + ["0x01c0bd4dbc178c9f2e84c545603e0f0392d1a553", "10000000000000000000000000"], + ["0x910336910d9202999bc17161b95ab9ca14187f0d", "10000000000000000000000000"], + ["0xa79521ad05ce767047048eda8a37dcfcd26a2a18", "10000000000000000000000000"], + ["0xdda2dd3bca56ea616111c0f6b8aeb5a7b6845d82", "10000000000000000000000000"], + ["0x58fc252d4a7393b9e4cbfaa619f97dcc97b42631", "10000000000000000000000000"], + ["0xcfad78f8e2de8eee753d8b40ee8833ce169188d6", "10000000000000000000000000"], + ["0x8e9fadd4dabb560c6366339fbf241d10d8ba33a2", "10000000000000000000000000"], + ["0xbfd55f6bd156168dc4c9213e63fa539954fe4110", "10000000000000000000000000"], + ["0x544c8fb835aa4c5a26129b20baa418a8154c0aab", "10000000000000000000000000"], + ["0xf8608049ea0ba52622c3e96924bff2144aaa38df", "10000000000000000000000000"], + ["0xa0ecffbb906e6628d2a398f2b8f7c92f5aecd8ba", "10000000000000000000000000"], + ["0xbe2615b571502afa5a5dfdb0361e7f2f62627606", "10000000000000000000000000"], + ["0xce7631d978c4cdb1184435bb6581a5b76aa10ce6", "10000000000000000000000000"], + ["0x3e5111973cc681e36b8fe8a41b38699139b42bdc", "10000000000000000000000000"], + ["0xd1d513c5c0c200fcfc21dbcd24ea81437a821b0f", "10000000000000000000000000"], + ["0x14cf589818c2b04b454d36ce8c4225ec04649406", "10000000000000000000000000"], + ["0x8a23f18e8a9d2d017e21857610fa7fb3438bfc89", "10000000000000000000000000"], + ["0x788719cbae9a9bd3622e549765edb61e29098457", "10000000000000000000000000"], + ["0x7a274bdbdae4af10406502bf742f8cfb77069a06", "10000000000000000000000000"], + ["0xb4628e64079398379aed2485e3fb05424cf57dcd", "10000000000000000000000000"], + ["0xdf607813e808063dcd68d4c12cb39a964d21d329", "10000000000000000000000000"], + ["0x653d8bfa24a06a1edef740057d35ea89807e8170", "10000000000000000000000000"], + ["0x9e61230a7f37add321f82b7a546d99678dc3cc41", "10000000000000000000000000"], + ["0x4964d39f28551e8a2d703144ec7add1fb97f9f6c", "10000000000000000000000000"], + ["0x0d6f394a1ba9f80c7984a90784fd46c12adefb81", "10000000000000000000000000"], + ["0x461abb509f2d017d4a2091a7c91b583282fd148d", "10000000000000000000000000"], + ["0x0c2283e4a76eccb11784ad4e7dd049bd31c6753c", "10000000000000000000000000"], + ["0x9ed9f90362a7b2509d753bef8af3a164804e1761", "10000000000000000000000000"], + ["0xaa904493622a146fa04799626eb8b27f5e6d9f0e", "10000000000000000000000000"], + ["0x27132b1c44ed20bf54ed53d13557485dee422a66", "10000000000000000000000000"], + ["0x4614bd31c121e8c8d6c73db7dc06645dbde670dc", "10000000000000000000000000"], + ["0xc8b8f52fe929731ab4a66c0ee3606293d2a63467", "10000000000000000000000000"], + ["0x13d8e76e2674d4457ad3cf3ffa7ac068f5c91f83", "10000000000000000000000000"], + ["0x1786a4d979138c58a0a966cfb0b028020b165d0d", "10000000000000000000000000"], + ["0xe44b88dadbac54ba75beaa07aae99b243b0b9f87", "10000000000000000000000000"], + ["0xf0c6f42ed9a560c0301f87cd81768f3d015b7788", "10000000000000000000000000"], + ["0xfda9622805b436bfed46381ebddcc043eb2ff789", "10000000000000000000000000"], + ["0x95727815db52cd0e09bad68ab92213935c32c937", "10000000000000000000000000"], + ["0x80b759f0a9391e64351e6b94e32c384a40d96b7d", "10000000000000000000000000"], + ["0x105badbbd9fe1ea1039dcaf217b5537c7bd53c20", "10000000000000000000000000"], + ["0xb468590c2f22608890b82121c0f0d73126f8ed99", "10000000000000000000000000"], + ["0xa79cd80e47ceafcbf8583405a04dcaa8f1823396", "10000000000000000000000000"], + ["0x8b0176be32b4cd028d52755b99250202e1d4118b", "10000000000000000000000000"], + ["0x8cab89fa802710d92ea99fceb67566a6457080cf", "10000000000000000000000000"], + ["0x9881565cd25dac0174f3f5706842d7041999bf08", "10000000000000000000000000"], + ["0xdc8bddc41008a38ae53ab5edd2b5cc954784d888", "10000000000000000000000000"], + ["0xe002fa6d0ecc0809a836f62c54a5c9ee228375f3", "10000000000000000000000000"], + ["0x7e132fd2322fc120632dad83790d3f343d81dd33", "10000000000000000000000000"], + ["0xb2e8379220ab36c38da6adbc974f5bbac2989db5", "10000000000000000000000000"], + ["0x99496a4c0426e3dc0eeda7f28298774dbecf815a", "10000000000000000000000000"], + ["0x00f4e673cbaa5bdd1551d5d9b5c442fa3cb6f510", "10000000000000000000000000"], + ["0xafbd8a1ac79c5ef7ad396a06c8f3ed7fea4c5dd6", "10000000000000000000000000"], + ["0xef782b830c609149d3e8210e6a186f86c8b9a1e8", "10000000000000000000000000"], + ["0xfc3d9bec2e0874ac5ff540692b7a28941b9bbb47", "10000000000000000000000000"], + ["0x5e0ff987fd553b8c814fddeb201ebed1a73e9751", "10000000000000000000000000"], + ["0x1e8b0ffd7189512e0f0897ddc1749760389b456d", "10000000000000000000000000"], + ["0x2e148e78a11e2c6fcbd11c98fda2e79aedb537a5", "10000000000000000000000000"], + ["0x88cc3e896c4c178ab98333dcd29c33d2cc2102a8", "10000000000000000000000000"], + ["0x2b6501b74149cbe243bf5897ed780253791ee009", "10000000000000000000000000"], + ["0x41e48af7bd19ebc2fe19fa0d8e0b721bedf10573", "10000000000000000000000000"], + ["0xd46c61ec25a6a568a51afb4248ed42ff6f70f181", "10000000000000000000000000"], + ["0x8c270f234cdcbd30d281799b584db3d0789e1317", "10000000000000000000000000"], + ["0xb91ce51ad82855a8c3269d175803cbf197331db0", "10000000000000000000000000"], + ["0x61f932a755e2e489839ae7853a69fca855b118ac", "10000000000000000000000000"], + ["0x95d7e264eaa821c313134dd72ca678dfeaa4067e", "10000000000000000000000000"], + ["0x3e3d2a8f9f116621234c91aae1e52331c9ab3ec9", "10000000000000000000000000"], + ["0x7502a1cce098394d71da3b77678254c657f62152", "10000000000000000000000000"], + ["0xfe8f5e90b236302c9db977e2ef9ae260d4842cbc", "10000000000000000000000000"], + ["0x2e55c161ff59635777d5e6bd5324041b80ae8034", "10000000000000000000000000"], + ["0x174d8441977f4492bfc7c7be26bcac2056cbcb10", "10000000000000000000000000"], + ["0x1ca20d63ff66314b82bfc3c4af942e919fdf2fd0", "10000000000000000000000000"], + ["0xf3f1d44125447ba5085d38474142edf973c4041a", "10000000000000000000000000"], + ["0x2b86e171ea99d2466814762436734a3823fcc8ce", "10000000000000000000000000"], + ["0xdc80092ea3610835da05f66b489f06dffc77bff5", "10000000000000000000000000"], + ["0x28af95d7a16ab63b5d816b5f12b605b7c2b268c9", "10000000000000000000000000"], + ["0xb2238198fd969e597b0cf636ccbc4de707123489", "10000000000000000000000000"], + ["0xfee2aa256b65efa5a78892ab14d206200ef5d7ae", "10000000000000000000000000"], + ["0xc3b424d84c3ae1c04a5e2c33860be8a1b89b72fb", "10000000000000000000000000"], + ["0x660f5420e6d0347bdce568e4f9abd3748f471f3a", "10000000000000000000000000"], + ["0xe0aef1db9cb60708202caaf9a505dfb8aa9bac16", "10000000000000000000000000"], + ["0xe290050f9556f76c7371cc3fd0b09eb34a869d7f", "10000000000000000000000000"], + ["0xe53c0315004bcd22b3b598c04a09b0c8c3fb7f34", "10000000000000000000000000"], + ["0x4f8716018ccb54ac64b68cd1d5f205d6e9818ac1", "10000000000000000000000000"], + ["0x1a9fa4d87f76cce6dfc143d28e73f69638096895", "10000000000000000000000000"], + ["0x4df86dcd6f836e8974a49d14fd7f4cabba78c012", "10000000000000000000000000"], + ["0xae58cf5deb81b849cbdad6e462b7c8c831813f17", "10000000000000000000000000"], + ["0x17ba3a6f59d4287ddc5120f5df42611d9c76cf4c", "10000000000000000000000000"], + ["0x8a2b108bee6fd05af78828682fa4dbb6aca4bf3b", "10000000000000000000000000"], + ["0xc49b15298c1ba9920caa36e4abe2ef080ffca692", "10000000000000000000000000"], + ["0x360a8c16f60acaa92b7ba3512ef0350a96628cc8", "10000000000000000000000000"], + ["0x1fa85889e388802cefd30b3104e8cc6f9a6eccd2", "10000000000000000000000000"], + ["0xa5038c7717d2b082c6301cd68093e8ad3b5dc466", "10000000000000000000000000"], + ["0xb63cf382fd5805f8a377cfc6eb75fdd46b9ec847", "10000000000000000000000000"], + ["0x8fc770715ac29266d155960c940204518e26e586", "10000000000000000000000000"], + ["0x54ca1ebd499d694f94c0f0e75b851c5e154f519c", "10000000000000000000000000"], + ["0x0ca3a47840cd9a4156f1268dae0f7c65cdf0dc25", "10000000000000000000000000"], + ["0x8685141579a4d62b198301063a4b59270c2d1fcc", "10000000000000000000000000"], + ["0x3e9692ac50af0083aa224a57cc329235d872be4a", "10000000000000000000000000"], + ["0xa663590cb3071c5161d243a72caf16feda584993", "10000000000000000000000000"], + ["0x2ce990adc9e3310bc68240119fbfbc2c889fab1e", "10000000000000000000000000"], + ["0xb3f702af57fd6409bee50f43d1024b5aa500410b", "10000000000000000000000000"], + ["0xbb4e989f6f57ef2bf6e307fe89aee29b7509b762", "10000000000000000000000000"], + ["0x9cc62dbb138093e72291ea20bbea62b8b0cbfe42", "10000000000000000000000000"], + ["0xd8e1aa74ef85f17f2ea8301b42f17eebc3879269", "10000000000000000000000000"], + ["0x045d21bb1807d4f96b17479b619aa8376c16e696", "10000000000000000000000000"], + ["0x5b68f82525c3688d9da8603ce018fe2110692a49", "10000000000000000000000000"], + ["0x4f4317748fb27ea53d770282d1de357d3b0e20a7", "10000000000000000000000000"], + ["0x9fa36d7f704890969255ef680ae5f45f74c45614", "10000000000000000000000000"], + ["0xb9de6af66902305e14a81a113986efac1f40dd09", "10000000000000000000000000"], + ["0x9170f03f451896ce80e7678a4c95ff845d3b431a", "10000000000000000000000000"], + ["0xac1bd1c6dc224d7538507d5a8f8d1e517d385d89", "10000000000000000000000000"], + ["0x02bc4b5f1b91780e462b90aa0deef6dff9481d64", "10000000000000000000000000"], + ["0x8d3c0495a3bbfa0940840064cf30a0d2c0b75b2d", "10000000000000000000000000"], + ["0x9acb7a770a8a6a3dcb381e492cc5793f6ba40f70", "10000000000000000000000000"], + ["0x41f1dcc467c912e9752b9905cb6cccade7f85f27", "10000000000000000000000000"], + ["0xf7977e5e81d9caef2d2e80bc73c0ea28cc49c75a", "10000000000000000000000000"], + ["0x357b04177c70faab80d567154666f36f91356906", "10000000000000000000000000"], + ["0x8e1304d4ec77c17f85362494662154eef7a1a865", "10000000000000000000000000"], + ["0x3af3c36cd8ad782290600d655640db0d88258068", "10000000000000000000000000"], + ["0xdac60a975597741d10aee740c044aec22a0f9f44", "10000000000000000000000000"], + ["0x706267573810dc5b3143977478d3c8bbf79aef0f", "10000000000000000000000000"], + ["0x32326fb83189fd32f6412c30dbda1d110858ece8", "10000000000000000000000000"], + ["0x525c8ee9be82b647218aea01c2e914b70469d966", "10000000000000000000000000"], + ["0xfdfb87d1ee9e369c67755e3adb1736b26067b05d", "10000000000000000000000000"], + ["0x5a32ff1ffc4b4587b6d9e587be787b10ebef17ef", "10000000000000000000000000"], + ["0x4167247acd955124fff268ab657693c2a9a9d00c", "10000000000000000000000000"], + ["0xd9efea29ea8cb6cb23dfabb088531d749fcb502d", "10000000000000000000000000"], + ["0x96eacc68caa66ce13988c7a05599f83c4440ac9b", "10000000000000000000000000"], + ["0xb0a9de2479f5cd97669b0fbd4d1ee1ef70c99b22", "10000000000000000000000000"], + ["0xea46a28e5e2bd27432437bb54e1796b102c6a47e", "10000000000000000000000000"], + ["0xbf77f58fa7bb4086c47349a5dc16d78b38c0e94c", "10000000000000000000000000"], + ["0x0be6dd5712a57913893f33422b1fb63c076cef0c", "10000000000000000000000000"], + ["0x2c81cce3f18f25f77c2763c6940e53bbe3257415", "10000000000000000000000000"], + ["0xf665fa4163412f3ec094578f31e5e90dfa9fb412", "10000000000000000000000000"], + ["0x8e49b61be4f02d68eb620954730b5cc74ef53b92", "10000000000000000000000000"], + ["0x01c3a0aa472a156af8c2edb04d4459d8d2fe7c5b", "10000000000000000000000000"], + ["0xe3896ec9d6d056939844007d503b95ca3b1c05ad", "10000000000000000000000000"], + ["0x31dce26a1cb7001cce3b7488431c3521d10c010b", "10000000000000000000000000"], + ["0xcc6cf3c5e02b51e9f45d5170ab640bd743c4ffb5", "10000000000000000000000000"], + ["0xd263b093076130d5c2db662e2237532b6eb8cc87", "10000000000000000000000000"], + ["0x96edea2c6c23c40185c3adfd8805c236d091c21f", "10000000000000000000000000"], + ["0x69449f50f833185dd09b5cd0afa6872d4f92d1e1", "10000000000000000000000000"], + ["0x5835a02d0f46b3474305b2612ca9c6d61a973822", "10000000000000000000000000"], + ["0x328ba899bc165dc0b2e1f78999b6ac499a48e2b4", "10000000000000000000000000"], + ["0x61fc898bd97ab50c72780266f2d4ab251db07458", "10000000000000000000000000"], + ["0x8c0680efc3404eafdc7a506e221f60b70a88a43b", "10000000000000000000000000"], + ["0xa1cf8209979ee8da52b2b0f1335cbb9b3065ab20", "10000000000000000000000000"], + ["0x409fbd2cd0a755ef2d005af5b72ebf24d68a1e50", "10000000000000000000000000"], + ["0x0c1eb4da74daf337bacaddb2850b3b93d8f646cc", "10000000000000000000000000"], + ["0x24b920280b73f550cebc0bd002b82d8b573dd6f2", "10000000000000000000000000"], + ["0xd6a113f95a860036f1dcb6e6c0bd2d6fd43ed6ae", "10000000000000000000000000"], + ["0xcd0a2de6fc3a2409b0a7cc0161797da8e8c128e0", "10000000000000000000000000"], + ["0x212114a050a94560ed9376eb15c0fd3c1b6cae45", "10000000000000000000000000"], + ["0x62eb62372c1c489fa83fb23a12b62093257da734", "10000000000000000000000000"], + ["0x17443f321a2ec804661fa41c873e0fe75c7f56a0", "10000000000000000000000000"], + ["0x0a3db74dc8ae7eed8e4edb3e92e7b929eed8c6e5", "10000000000000000000000000"], + ["0xec3c118bab9e5131dbd3e1ecfbb7122926116dc4", "10000000000000000000000000"], + ["0xcd91b9b8e1ca71e0a5c9ecc6bda33f8d26a532a1", "10000000000000000000000000"], + ["0x1c04432207aaa34da9ec3c6549b5e4996d847dc9", "10000000000000000000000000"], + ["0x3c9c41789f90825a61760c0b6419e8a0b312e810", "10000000000000000000000000"], + ["0xc1141fe5f58929529a1a3057c80b54d6b03a4d29", "10000000000000000000000000"], + ["0x915ad5d773d25c1e1afacebbf687ff54c1470381", "10000000000000000000000000"], + ["0xdf8a1c4cbb74a7a06e5c4a724ad34c9561ab358e", "10000000000000000000000000"], + ["0x89ec8c7699dff36dee9b1f79b00ad12b5a0a0195", "10000000000000000000000000"], + ["0xa92288c98bb57b0030645735e33b28bd50b619f3", "10000000000000000000000000"], + ["0x9e6224de8973bc4f9ba9da4a4322f9db6c5ef413", "10000000000000000000000000"], + ["0x4761bf691bb4346a7e3790ed1fc0581052a86d34", "10000000000000000000000000"], + ["0x51f0277abb28a731f5a52ce57a45daacfe9ebfb8", "10000000000000000000000000"], + ["0xac06a4d2b15566c2e827fc827e214098a8bd7411", "10000000000000000000000000"], + ["0x401918351b997816f802db30de7b4a21518a79b9", "10000000000000000000000000"], + ["0x9915f9204997b77184d8335c4a66986c2a3e124e", "10000000000000000000000000"], + ["0xcd5485a4875e4d5fdc8710cb5e55185d3da7f925", "10000000000000000000000000"], + ["0xa9f0dca0bb105f61856d1c177c0873b93773034a", "10000000000000000000000000"], + ["0x6da7b7f64c73ff7985f2bf55c71c2b46c9e41a5a", "10000000000000000000000000"], + ["0xcac68fffdb3ce264e23543343d75a01b8c29c1ab", "10000000000000000000000000"], + ["0x0c6665a2bd065dff1b01aed1d91627534cd49a3d", "10000000000000000000000000"], + ["0xbd11206f52ebc48db4252f72ea2508c2b1aee495", "10000000000000000000000000"], + ["0x69c167b99a780de252eb818a6029209ad3788fe5", "10000000000000000000000000"], + ["0xfd370d9ab0baefb11851a229e51aef162cd68358", "10000000000000000000000000"], + ["0x554781b03b403bf628b6174a86ba84b3c6f1454a", "10000000000000000000000000"], + ["0xcbae1c624daac0002cfaed5c40e9c6ac755d9c05", "10000000000000000000000000"], + ["0xc9b0de883e2749229b1e8349f30f88e061d0505a", "10000000000000000000000000"], + ["0x4f9d7a99270e6cd73ee18125b02494f19f0bce81", "10000000000000000000000000"], + ["0xd82ca6827a0f2c43883788fb8a2dcd44ed29159c", "10000000000000000000000000"], + ["0x71d3336f95ec829a4e6f96b6bc3f9da14cc03b22", "10000000000000000000000000"], + ["0x0a892e051157de5ecdc8d1b166f732a543a0ff6d", "10000000000000000000000000"], + ["0x6b44bc885a03a6f89465ab19c2204f0cef862810", "10000000000000000000000000"], + ["0x1942cdda93ae1b56de2fbdbcca200f0d5ec5ef4d", "10000000000000000000000000"], + ["0x6d760e87cc0a7d1421b686b8f0faad65416f15f7", "10000000000000000000000000"], + ["0x6032f5ba871404c425a04b6f0800fefc386ddd15", "10000000000000000000000000"], + ["0x613080b74a75eb7d649330d7279f548916a36eb0", "10000000000000000000000000"], + ["0x64268a5531cd895a7c0e84be4c7ed9cf96fc6c12", "10000000000000000000000000"], + ["0x4bcdeb1dca8a2407e2801ea4d9b18850eb61dbb3", "10000000000000000000000000"], + ["0x1882142b506101f35ce157eb61ffb6ea2545e05d", "10000000000000000000000000"], + ["0x68cccc13f4e0655536b2396c1444f8fadf0f77f4", "10000000000000000000000000"], + ["0xe760d2fcff38783761361518e8cf79b589d4de8a", "10000000000000000000000000"], + ["0x868110e3db5357b77986421e0adeaebe3d3a04fc", "10000000000000000000000000"], + ["0xe5b218700e71f05acea6a0eac74f5d2a221839da", "10000000000000000000000000"], + ["0x40f350d109c0f9f71e79f3001b14f419a8e75741", "10000000000000000000000000"], + ["0xb83e57d57bd60e315a248d2021388cc94a8e2f52", "10000000000000000000000000"], + ["0x67a0c887b9bc702f0d881806b629852caed97e98", "10000000000000000000000000"], + ["0xb44bf7c8b81c85f6fbaf3f7d03de45106c793b5b", "10000000000000000000000000"], + ["0x6d98309340fb8dab4b2cd46eab754929aef3c313", "10000000000000000000000000"], + ["0x24fe29cdb9ff152d93183f62d53604d8f3502485", "10000000000000000000000000"], + ["0xd259d6f4314ca6ba596451b6a5782ec2763bba5a", "10000000000000000000000000"], + ["0xdfab1639e5ee371805484f572422e2fdf9b1398b", "10000000000000000000000000"], + ["0xdbee3104f8790208e2980e4acdbba3d8f0c44848", "10000000000000000000000000"], + ["0x599bfb1fde32960c81b29ed2e99b1ffe4f9deb12", "10000000000000000000000000"], + ["0xba41a3b71560ef120498f6f1b87ab273f6f737be", "10000000000000000000000000"], + ["0xd9369e74ffae45412fd2c75cb055fdd7876fb2b7", "10000000000000000000000000"], + ["0xa2bab972d07cd5dc079845bc8880c06439c2f244", "10000000000000000000000000"], + ["0x2dda4f1e44ab1173d81099aa725a551093f7ecc6", "10000000000000000000000000"], + ["0x5b758931dcb89f07dd23c2bedf10004071d6b467", "10000000000000000000000000"], + ["0xd7fcd7c92d184c2c3d84721df201f9bc95b32f4e", "10000000000000000000000000"], + ["0x97100df19cf2ae7992ba35d91e861d6f925417f6", "10000000000000000000000000"], + ["0xf8745c33c1588a7bd55dc498b96d9481f885c243", "10000000000000000000000000"], + ["0xeb41fe1090bb7a7fe6162de8fea3c16051544cf4", "10000000000000000000000000"], + ["0x64f2ebde230da818000d545e820aca110abe7d51", "10000000000000000000000000"], + ["0xa1acc88b50248b6556e65d5d5ecd51a997e370db", "10000000000000000000000000"], + ["0x91611f17375142f46999fe2b7c32c31782841efe", "10000000000000000000000000"], + ["0xdd21941e0d2a8a0ce7fc5f186c1d1c12f913a33d", "10000000000000000000000000"], + ["0xa39938007c9d48714b2a039ff6197f7329ec6fdc", "10000000000000000000000000"], + ["0xc6c9d802bc16d8746aafcac4781f9a8d442d585d", "10000000000000000000000000"], + ["0x96d1ee9fb9a841dbfe8605857871e568935586fa", "10000000000000000000000000"], + ["0x53cb5265ec16ccbc89aee4f924388009dd5d048a", "10000000000000000000000000"], + ["0xcd55923c253c0177172911f2f7ba9e5f7073f4bf", "10000000000000000000000000"], + ["0x6d478145a63ff539f1406220a018792f9b51fad0", "10000000000000000000000000"], + ["0x659da58f1eaf1bea47542fecf2fef36ec9f1eac2", "10000000000000000000000000"], + ["0x21375871597130eb0a7b825658da464f86ad4f48", "10000000000000000000000000"], + ["0x1da318b980bd5577f2cb21777635cad9a292fc64", "10000000000000000000000000"], + ["0x0ee72348a52c1543351b4382d943ab4a2d1848d3", "10000000000000000000000000"], + ["0x13d8ea39567bcb8b49d86bb786ff421505cf59f0", "10000000000000000000000000"], + ["0xf7e11cf5a04c3cf0061928d8c0b417464e08eff7", "10000000000000000000000000"], + ["0x83799c180b161b3a52eecbdcaa1750881aa65426", "10000000000000000000000000"], + ["0xd3a58b0268b9b249661726bce7d498b3622ad1c7", "10000000000000000000000000"], + ["0x757ab63222b3cc04f9df32a33ab5e0b15f4fefca", "10000000000000000000000000"], + ["0x50e505a74bc525c0410c6df6d2c723a91289d440", "10000000000000000000000000"], + ["0x9cbc1a8334cf32fa596f40133e071efa30cde3e2", "10000000000000000000000000"], + ["0x0146ef4fc66ec0902818221f98549a2b9b13bf59", "10000000000000000000000000"], + ["0xd5e77669d038afd6ce06fb032ec756220b39dab4", "10000000000000000000000000"], + ["0xb4ef9a2a020c14337e7e0ef9ebad8b1c2d50eec8", "10000000000000000000000000"], + ["0x78a9e315c6d6fe8ea0ee1cc40ead04477f02bed1", "10000000000000000000000000"], + ["0xe3803f7010b5581bbed1dc50ce09b7e14a05bed9", "10000000000000000000000000"], + ["0x9b985bce86c5af3e6071222c8cfd6012522b07c3", "10000000000000000000000000"], + ["0xacbb228856f194aa5f7001525211c22f097c75cc", "10000000000000000000000000"], + ["0x8eadad4a88dc4ee218529b4e9517c80c72f35fab", "10000000000000000000000000"], + ["0x2f7fbb348059f2aa899c2d0838fe4824d25ae65f", "10000000000000000000000000"], + ["0xc36cca68158af642ee2d83982ae42c7cf196d1bd", "10000000000000000000000000"], + ["0x136c613c400e5fd1ef4b6c1d47d9f8fb8803c946", "10000000000000000000000000"], + ["0x2e26eea6e806fc6331fdc5d1d11aab3dc3bd60b2", "10000000000000000000000000"], + ["0x38ea78de44c7a0e56ecc172284a41773cebc260b", "10000000000000000000000000"], + ["0x2eacd09e92273d5fb86cf40504917f664ee15da8", "10000000000000000000000000"], + ["0x9519a4c81b5f3281e6baae3496c0fe70b97b36fc", "10000000000000000000000000"], + ["0x2060970cbb9681ed667ae0624abf73bd5fa99a28", "10000000000000000000000000"], + ["0x03616be5b794cdb242340b97b93eabc855244376", "10000000000000000000000000"], + ["0xbcb34dd9351dac05d061a60dc4c07b522613995e", "10000000000000000000000000"], + ["0xf5ca017c3db54d0f380a3da12521d5ca40ef3981", "10000000000000000000000000"], + ["0x10c5f89cb714d908e4cc3db31c4d551d6ee15061", "10000000000000000000000000"], + ["0xa42ee67222e8756b1fa987aa359ed2f59932283e", "10000000000000000000000000"], + ["0xac145add2e42e6bc5ce81dc35268420b0672c431", "10000000000000000000000000"], + ["0xa2e623425160fb596b58a95485a2505baaeaf9a8", "10000000000000000000000000"], + ["0x46b9ffe94a7b9b8db830b058834978be31d4e414", "10000000000000000000000000"], + ["0x8c523eeb4aa347423983298af4eeea05d4d6e2c5", "10000000000000000000000000"], + ["0x6eb7907e49187d231cf8e3849b24183a3ed7a9d0", "10000000000000000000000000"], + ["0x052390813b25ece17f855c65f4dacb094f23eeba", "10000000000000000000000000"], + ["0xe95c69de2c03a7152fd334a7790ed86d0f7ff85f", "10000000000000000000000000"], + ["0x007f2a96cbdf08bf1a58f1de3599cb67571a40ac", "10000000000000000000000000"], + ["0x8181f49f1ae41d5801bb9239d2bec888e60f83df", "10000000000000000000000000"], + ["0xf0320a025904029713cba832376cddc0119a952c", "10000000000000000000000000"], + ["0x089b147ebe5cee7b844f6aad2e3d129a4506b16e", "10000000000000000000000000"], + ["0x886a3033fa4bebe2bf687d982e9350e249fbb2d9", "10000000000000000000000000"], + ["0x335a5f686a1e87915d586d6348cecace4fd1f289", "10000000000000000000000000"], + ["0x9386be091ef974611c103f95d6ee8805767b2020", "10000000000000000000000000"], + ["0x22b90bfcde85f75d8de08b552b837aacb561e968", "10000000000000000000000000"], + ["0x8bfff78edbfa534fe52dd87d945dac9a671957ae", "10000000000000000000000000"], + ["0x1b83218bac7e4857d98e0eba0f2f263abde2421d", "10000000000000000000000000"], + ["0x9f6bc999298a31973b343726f1c84a8c1f7e8c91", "10000000000000000000000000"], + ["0x3c6d73475d8a64cec5b5170853ab38ccf51eb130", "10000000000000000000000000"], + ["0x0d66fc519f0a4616603aeebe4ccb52c8246ebc96", "10000000000000000000000000"], + ["0x3701ecf85eae013842224c9e0649f97ed2bbfd72", "10000000000000000000000000"], + ["0x56b0d4debfa7ebcdccf1c726d2e20d335c6b4db0", "10000000000000000000000000"], + ["0xbd7d947f4c68b9dcf5292ddabb6e533c3625257a", "10000000000000000000000000"], + ["0x9629378dd9adbf50d572d31b5925e8f973b2b36e", "10000000000000000000000000"], + ["0x45b5853e83aa71c81c1bbdeeed8487aad35c8f85", "10000000000000000000000000"], + ["0x54ec0f31378c8fef5abd9ff0be137f5a1fe765ae", "10000000000000000000000000"], + ["0xbc94a1fc41c82c65ae6f48e93856840d2530344d", "10000000000000000000000000"], + ["0xf1f12493b2cd11414f4661f5dcba9f912304d374", "10000000000000000000000000"], + ["0xc417e40fa2f1da0c275028f899408e89a7610318", "10000000000000000000000000"], + ["0x7069839f10fa2df4c1683395800264ad8b3f5560", "10000000000000000000000000"], + ["0x198788c6464a543fa0bb0e7938f790ccbce8522f", "10000000000000000000000000"], + ["0x9a6e6cd88351cc484c1be29689fe2b4413e90f4e", "10000000000000000000000000"], + ["0x3c6c0e87e42cbe52f040eca9dde982c46ab5efbe", "10000000000000000000000000"], + ["0x4f062d55a46eb724e0b1a95bdcfe715c778471ff", "10000000000000000000000000"], + ["0x3b58b97485cbfa5ddabb9852ccc612edd97afd8f", "10000000000000000000000000"], + ["0x70fedc4a7c06b055c2f39f3e9d7f78c173c438c5", "10000000000000000000000000"], + ["0x86526f570ca6c2c9ffb4a535ffe50fa56fd9dd87", "10000000000000000000000000"], + ["0x9a214bd8eb5dfac880df184640e6a5b73be59ccb", "10000000000000000000000000"], + ["0x5233d3460ecf216ad5de886b2d9a4bf0698219d8", "10000000000000000000000000"], + ["0xd70cf5cfa19eca9af10ef3b62bae57458058d2dd", "10000000000000000000000000"], + ["0xa2db796f0b89db0d4c1a0b94213e4878b2e9b36b", "10000000000000000000000000"], + ["0x173740c91c5015bab10b3830676c9c4d4168d8b4", "10000000000000000000000000"], + ["0xf02d24acff9893df026c0f80d4fa41e2ecc73b74", "10000000000000000000000000"], + ["0x693419bb4fd60c53da83af223b347288b8a352df", "10000000000000000000000000"], + ["0xdeccd02d72ba5304a885264be43b604990939189", "10000000000000000000000000"], + ["0x59427cd74811cd0528fa8169ef553c5cf4960ef3", "10000000000000000000000000"], + ["0x904741012d539bef640ce16a8364d1c3c2c773a5", "10000000000000000000000000"], + ["0xc1586c071516c2b7caf9ae65194449ae3c670c04", "10000000000000000000000000"], + ["0x874d021ca047a114b9833290490a6f16a68f7a72", "10000000000000000000000000"], + ["0x90ac914ae057050395484459181eb916f0e50f71", "10000000000000000000000000"], + ["0xf93c380ee224063334c2ef1a3af4eae7d74b70ed", "10000000000000000000000000"], + ["0xdd37d8a39bc7efd33e7e20826c5edb518370d8c7", "10000000000000000000000000"], + ["0x87a5f68bf6af01519982f3846cc408d027dfe174", "10000000000000000000000000"], + ["0x0000000000007f150bd6f54c40a34d7c3d5e9f56", "10000000000000000000000000"], + ["0xc1e308014cad4cfae79759caf740c98ef57f4783", "10000000000000000000000000"], + ["0xa095d9f9e49cde356bd1a0428edd88bcd5b46c59", "10000000000000000000000000"], + ["0x462898ad742c7d5a02ded65eb78964e035f6e448", "10000000000000000000000000"], + ["0x27f364a96cc92793263ee07214b38e68acad220f", "10000000000000000000000000"], + ["0x8fe0cf1b42d12be68058944105ea1d956d2f848b", "10000000000000000000000000"], + ["0x6f5c2cdb3411481b5d8c1a2f17f211c41fb22698", "10000000000000000000000000"], + ["0x2e0a9d5ec769f4d9cc4c2455f2eacc9c3de043ce", "10000000000000000000000000"], + ["0x7dd6426d14c25e47f13b4f0cb1f2fb695c5a0e2b", "10000000000000000000000000"], + ["0x4bbd1d4542d315447c715cbf107834ef15ce9d44", "10000000000000000000000000"], + ["0x94b1243a186ee0e92dfa0a1d7d2d38b6935d1146", "10000000000000000000000000"], + ["0xe335b972e0c5237bdae8bc55bb7b40fc8b927fc1", "10000000000000000000000000"], + ["0x161408732fe88c487d06e78bef86b0a49c2641a4", "10000000000000000000000000"], + ["0xcec63c49a3ac904d20f74dc44e49e2abbf9ca4b8", "10000000000000000000000000"], + ["0xed7115544b9dd9e997441c4236d17e495ff3280c", "10000000000000000000000000"], + ["0xeb2375b164c734081cf76cab1eec0949d9e0cfc1", "10000000000000000000000000"], + ["0xf7ead947ffbfefbecd0963d9c547d470b37439c9", "10000000000000000000000000"], + ["0xf5556f61810e6c8c0741fd03f20032af4276ccdb", "10000000000000000000000000"], + ["0x54cc7c5281e0ad8158a48c5d2d308e33989e7b48", "10000000000000000000000000"], + ["0x39889ebae2bcc641f9fea9646ec668e4987534bf", "10000000000000000000000000"], + ["0x41e524a757e83c51535bf8bdbf3a9bb992a5dfca", "10000000000000000000000000"], + ["0x60fb9bf2d2150efa7d8d23cec63907e5711fe42a", "10000000000000000000000000"], + ["0x1345dbe1a6fcd48be3074294bbe12d5e078c1c98", "10000000000000000000000000"], + ["0x924fc4d6c2fd3a91fbc2a28760b6e6c01c168bc8", "10000000000000000000000000"], + ["0x729f805cebc72ef06c7e6cf229868034fda5776b", "10000000000000000000000000"], + ["0x0ce730fac3a07820fdc9e17bb68e3574f6fdfc0e", "10000000000000000000000000"], + ["0x92f1190086a287d48667aafd40aed165a35044ba", "10000000000000000000000000"], + ["0x9aeddd3e58d79841e79a3570069fac84de21fb0f", "10000000000000000000000000"], + ["0xf14c056414f8a6f75f6eef7dcaa94cf12d9a5403", "10000000000000000000000000"], + ["0x0f924c28480ff77ad01ddb9dfcd2d558dee56f05", "10000000000000000000000000"], + ["0xb2044676525ce37ecc9cf859861a27fd4652c04f", "10000000000000000000000000"], + ["0x9e291fd9095d3662fa3917927403f193912c0766", "10000000000000000000000000"], + ["0x5d35c351e4c718200ff04cf609a9d2c5d37dd930", "10000000000000000000000000"], + ["0x2bdfcc9d73992a8da349c63734ff5a50fa678677", "10000000000000000000000000"], + ["0x5b4cad9a8774696c4a1d31c5082338491138bae9", "10000000000000000000000000"], + ["0x1437033c44d4e4f3abbf79c06e5222e7f41cffd4", "10000000000000000000000000"], + ["0xff5eb7340f17b6308400a4692efc16e7969c9663", "10000000000000000000000000"], + ["0xe384c6124e0da68155563aeafb5adf8d0af00bcf", "10000000000000000000000000"], + ["0x914c7e671a046b7b216895553d0db7cfa72463e7", "10000000000000000000000000"], + ["0xc593a1668d9bc0f319a15a43ef21c1befe3d7d57", "10000000000000000000000000"], + ["0xa0c559760de28dde7d87087b4db69aea05c24f18", "10000000000000000000000000"], + ["0xc165a1b4188eb0eb10275f31a11f07902abbbebd", "10000000000000000000000000"], + ["0x6c472e04f34a7ae8bd74ffcefe4d5026b02410a0", "10000000000000000000000000"], + ["0x9e06af6bdd23d2b3920107f82247ab7ca18bc03e", "10000000000000000000000000"], + ["0x933e7205089c1f14a913bea6f1e1424540cb83a3", "10000000000000000000000000"], + ["0x3710f6a6af356bfcf86fba06f4e862e1d4283f27", "10000000000000000000000000"], + ["0x2c7a998197b51dd7f1981aa9e75a23b059f5a59c", "10000000000000000000000000"], + ["0x20ef5f3d39ae3230cf720b215b6f010f4c757345", "10000000000000000000000000"], + ["0x9925e32016a44a579abefbd191cf8862c75365ec", "10000000000000000000000000"], + ["0x05f3de310fe37a798cbd5039e4a9272baaba9c14", "10000000000000000000000000"], + ["0xd1fca26b21d9b795f63dfbbff8a8a9c7e591243e", "10000000000000000000000000"], + ["0x307c2908e197ab2a61adbd40b7301afdfe881e2d", "10000000000000000000000000"], + ["0xefb5ef346997390c2280e414a438b38b0615549b", "10000000000000000000000000"], + ["0xcb00edeadd800b172a6fffd12116cd2bbf24afc1", "10000000000000000000000000"], + ["0x8c31de2dba1f084fdb6d58959d873c68e2e762b8", "10000000000000000000000000"], + ["0x4ecdad670f6864239d442f4c213e861b48e58211", "10000000000000000000000000"], + ["0xf3ce237bdf667be3b0e6da23daba5380294b6b07", "10000000000000000000000000"], + ["0x99412ff8554137bed8a0d248fce93869baecdb4e", "10000000000000000000000000"], + ["0x9933e62bcada6efb795d77a914a311a49503658e", "10000000000000000000000000"], + ["0xc871ca05c704e0031208789555ef1f3f1a3ce0a5", "10000000000000000000000000"], + ["0x91d92b00d14098c933b1f0bb8a881a2ee65be4c4", "10000000000000000000000000"], + ["0x320ac2c6fc3eb2ccb8861ecbd0c06d7c7dad0295", "10000000000000000000000000"], + ["0x49e3d6a14e18fe7c631420533f4cabafea240b2a", "10000000000000000000000000"], + ["0x2b7aad8a12f4845f91d8047dd763d26432976264", "10000000000000000000000000"], + ["0x9b61b1bf5ec4df21e685dd46ce58280734ad20a3", "10000000000000000000000000"], + ["0x773dcadc1b5c57068987ca19de84a7fbb74330f2", "10000000000000000000000000"], + ["0x3aa80f86314fc45e380e14f06865d62e746b267e", "10000000000000000000000000"], + ["0x3458d62703f72a123a029648f08ab2ea4ca918dd", "10000000000000000000000000"], + ["0x31c04f3f6619cbb564e5f68f028d676d3ad8bfa8", "10000000000000000000000000"], + ["0xd668e0161fcbc6f1bf6d1f051c9c0d8f00253c2c", "10000000000000000000000000"], + ["0x225482adc95a9f23ff5c448419b2803fab9780d5", "10000000000000000000000000"], + ["0xa02234c3b3060553ddafee3afbf66ba94aafba8b", "10000000000000000000000000"], + ["0x652022b1f234aa39f5dd7a5ff1162574fd4a9646", "10000000000000000000000000"], + ["0x7fb7e6e71ac334bdcc5882bdf19e7f87191dfd8e", "10000000000000000000000000"], + ["0x36db16e254c1d37795e1a6b38efc07b91d7ec910", "10000000000000000000000000"], + ["0xf4a2c26e538e27ae54ad946907fcc0a68a7681cc", "10000000000000000000000000"], + ["0x75d076f0a9d560654fcadcf6a78c212c38e60bf5", "10000000000000000000000000"], + ["0x3e50030e520c629b9facba589f5ee50656204da9", "10000000000000000000000000"], + ["0xd073a914e6feea850c46143eebaa681373b65f67", "10000000000000000000000000"], + ["0x9b1e37be2659fcf010cadf27cc0592daf60f2b86", "10000000000000000000000000"], + ["0x8b84ea014a4cda04e9b57aeb4ea10296eef66d70", "10000000000000000000000000"], + ["0xb22311477095b537c3fc475a32f6b1d781bf9f2c", "10000000000000000000000000"], + ["0x47135dccdda3f0d0da891fed7aee21c0a546409c", "10000000000000000000000000"], + ["0x4a612d69eed0b8827ec9a212664ccdc9cb2ee67e", "10000000000000000000000000"], + ["0x69b2283c42647ddea1d9689d39679072112c9c0f", "10000000000000000000000000"], + ["0x5828ea3ce544ece493a44894d94c3b824bccbe31", "10000000000000000000000000"], + ["0xd0a6c4ab167e2e1538badc7259f6c6c68b6d3690", "10000000000000000000000000"], + ["0x6ba9d0c502127fa27964ecc61f9021f4e2066abd", "10000000000000000000000000"], + ["0xda68e21acd377f1be13340ee4b588bd2a6a66b29", "10000000000000000000000000"], + ["0x820457ec3fc535017026c44a757babfaf5a7d6a2", "10000000000000000000000000"], + ["0x7332cc520576cb233fa71e66eae0dd76e50fd60d", "10000000000000000000000000"], + ["0x200b12b7ad06ab04495f33e22a9a60786870354f", "10000000000000000000000000"], + ["0x3184533b4cdd8984468df86f147363cc575b8483", "10000000000000000000000000"], + ["0x5baa9a8ce0b1afeedcb015634d6f91163dc84374", "10000000000000000000000000"], + ["0x44e4e1976312f9d1e80d88197f280c6163460859", "10000000000000000000000000"], + ["0xf31b7a7df2faf975e9c7efb75849658750ce0468", "10000000000000000000000000"], + ["0x19afe6e49a488e225acbcdd7edef99330dcf4855", "10000000000000000000000000"], + ["0x912d85c7c08cad46cc88366c29853686707514bc", "10000000000000000000000000"], + ["0x7bb7a6ef0d9807b28cab6f75cb0e6b847d04b7a0", "10000000000000000000000000"], + ["0xca9dc9e4afaa33f39a42cb2044c3f0745ccfbcd6", "10000000000000000000000000"], + ["0x1e9baf5c20a7a3cc3e55b89ed4e30579e0f072d4", "10000000000000000000000000"], + ["0x1715a7a493053e67731116f03d25a333498afa42", "10000000000000000000000000"], + ["0xbabf8fc6592c7b9da8c66baa5d3f0c98a94558ab", "10000000000000000000000000"], + ["0xa111fbd8bce6b05c21c5007fcb1c41b92885a80c", "10000000000000000000000000"], + ["0x1cdf4798fc3d0812fd57e39ee83fd503e01fe4f2", "10000000000000000000000000"], + ["0x61c98f7110ddce29680cd7eb6e1cd77a81d7587a", "10000000000000000000000000"], + ["0x9a160699730d8aa4efb9bbbf454c54b4e08c0bcc", "10000000000000000000000000"], + ["0x77f88e4bc35c794a1fd3bc8c6a7971ce3c4b9e17", "10000000000000000000000000"], + ["0x10fbbbcbe4ad8d981685e5570e2f5339556308ea", "10000000000000000000000000"], + ["0xaa7cde714d11d663de2a560aaa956c7046b4352f", "10000000000000000000000000"], + ["0x2c6a30120aef59a4cac0ea21de8a2d2411df6b51", "10000000000000000000000000"], + ["0x56b824a505646a483f0464914a30c7c5ea1b43f4", "10000000000000000000000000"], + ["0x605d993dabcd1422f0e626ab508ce89facabb372", "10000000000000000000000000"], + ["0x1baac833f371b962939cf556a9295cbb6c95ceb8", "10000000000000000000000000"], + ["0x4d9b15cc8a5a46d9fc167302c3af73800aa68c67", "10000000000000000000000000"], + ["0x11ad865b9dbe0de2234460c4bf809033b1724e66", "10000000000000000000000000"], + ["0xeedc67aee2e487ea332b45d2a0e7289f955bbdc8", "10000000000000000000000000"], + ["0xd99a1022d51573c6d0c2b186673d3de7c5ca5e2c", "10000000000000000000000000"], + ["0x24bd8002343ce7502059c3397767a4c44f8b81af", "10000000000000000000000000"], + ["0xc9e9326c738378cab73c63accbcdc3fdf23d835a", "10000000000000000000000000"], + ["0x87ae5401789a49c8b9103b4139bdbdb5e4309172", "10000000000000000000000000"], + ["0xc459d9101d939335c9c60ffdc445f4e678b37269", "10000000000000000000000000"], + ["0xf6f5ae9fa4565078974d7eee7eb520df987fab80", "10000000000000000000000000"], + ["0xf3bcf408ce0dacb9bd9f65405cbaeb6d242089cb", "10000000000000000000000000"], + ["0x0f8030f8766ec4ae52e8c9f018cb157507187f54", "10000000000000000000000000"], + ["0x75b25a519dfedfb1c47b611ba2d186c67a5dd751", "10000000000000000000000000"], + ["0x73d9a622f40f03c3207f49352736faf47b2e1028", "10000000000000000000000000"], + ["0xd820c6c96260a7737f9d3602fad4f1df2d311761", "10000000000000000000000000"], + ["0xdb5019b8dfbccef8906c39b16a4870082eabbc4c", "10000000000000000000000000"], + ["0xd452af0d9bd437e8a67f15ebaca06e1c015fc528", "10000000000000000000000000"], + ["0x3af08e71d0fae7c1293516d74035b050d58df024", "10000000000000000000000000"], + ["0xc3dc996ae0db7d9217c63fcd28dd44883c0f2b70", "10000000000000000000000000"], + ["0xcd51129761b394b447bd0f5f43834d36f1f90563", "10000000000000000000000000"], + ["0x0f40d04bc330f708e809c10831e5c8203047a63a", "10000000000000000000000000"], + ["0xf056177a8d906a32fd0e08e16bc594cd41203dc9", "10000000000000000000000000"], + ["0x6e049bac106fb1a1dd43a25fc6e707385aa61776", "10000000000000000000000000"], + ["0xe11a457888140c78fe0d4bf613fd49b91177deea", "10000000000000000000000000"], + ["0x2ae02587a2b86fbd4502c5322154e97908d7279f", "10000000000000000000000000"], + ["0x90785a2bfc4ac26f310000171ae7d8dc74e04774", "10000000000000000000000000"], + ["0xb79b013c49db009541c5eac78a0bca11038845a1", "10000000000000000000000000"], + ["0x37e7e09a5c4f2d3e4d9d54cf995f20aa74cf6d56", "10000000000000000000000000"], + ["0x11651b7f8e2d6a0ac84cdcef4c4732426e0af4a5", "10000000000000000000000000"], + ["0x606e7af1c5c8c5cd29f2115e517b9d7b89e6c653", "10000000000000000000000000"], + ["0x57701abe35763f60cbeabbf4cd352a1052b775bc", "10000000000000000000000000"], + ["0x00ee28821f5c355d6dbfd3c7dd38acc60165294a", "10000000000000000000000000"], + ["0xbadf5f1375e407943e45ced6286ff95412f27948", "10000000000000000000000000"], + ["0xfedde14ac70ed6aec56f955d204355196427e09f", "10000000000000000000000000"], + ["0xef03048081a9a883a33c7f1052d5e5a0804bb7d0", "10000000000000000000000000"], + ["0xe8f4c5afc8582f381d2cf5b4ffc652b04177d982", "10000000000000000000000000"], + ["0x7774aa89740fba372ccbf0a40f30846376c12eff", "10000000000000000000000000"], + ["0x0b0a23ef72341b7a3dc67595f523975fe66aa904", "10000000000000000000000000"], + ["0xed4899b2a8da2f6e30cb2b4f593f83969d27da37", "10000000000000000000000000"], + ["0xa9867c46e2fbc004d04da3b8ebcae8d5db171fe2", "10000000000000000000000000"], + ["0xd6b2095e913695dd10c071cc2f20247e921efb8e", "10000000000000000000000000"], + ["0xb26cbde240a343e46005cc016e39ce4386ae97ed", "10000000000000000000000000"], + ["0x203f3eb497c504061e0aceea749103296b0b91bb", "10000000000000000000000000"], + ["0x4345d9ae4f4c6e6793e1605d74352a98669138ff", "10000000000000000000000000"], + ["0xb80c12c95fb15b0779ea0119e7813a1879f9802d", "10000000000000000000000000"], + ["0x9c9131873ccce172cd636474ff255ebb1c692c80", "10000000000000000000000000"], + ["0x505ee2c414c50cda40a13a1c9b9c5af106d6a3aa", "10000000000000000000000000"], + ["0x3e37cb2e3d904b8455f4446db67dcc8577ada0e5", "10000000000000000000000000"], + ["0xc0f420c1b0a7abe2f629d5d403007840470959b3", "10000000000000000000000000"], + ["0xec0e5588df094efe79d8b0ab045831bc454cff4c", "10000000000000000000000000"], + ["0xd6ae2aad9406c7d429418ccf941a129970ded3de", "10000000000000000000000000"], + ["0x676c34516117107fd380940c62d5ef9cf08a7fe8", "10000000000000000000000000"], + ["0x260e528f015f03889da48bfe1a15efb191546b44", "10000000000000000000000000"], + ["0xc144ccb02b3901bc93783663e760123f510c3cfb", "10000000000000000000000000"], + ["0xa845dfaca6b3494d6be4a851100a2cd44ef0a4e7", "10000000000000000000000000"], + ["0x5d38594a188ee4cd60371a33fea4da82ef9b342d", "10000000000000000000000000"], + ["0xe40b491ff78b9be4e89ed0d24b6da44fdcbe354f", "10000000000000000000000000"], + ["0xfcb3b7cc281c65d723dcb0e3d7322badd1eedce1", "10000000000000000000000000"], + ["0xb4db68d75fdb55ed204b086ff6205c70e446fbb3", "10000000000000000000000000"], + ["0xaec0ccc91de830b0e9ff5c99ff6c347ce70c4a36", "10000000000000000000000000"], + ["0x4a378971a462477657cfa6cd90e26ee02603c5db", "10000000000000000000000000"], + ["0x8b7a2884437c544848c4a187d3f8278f54834c68", "10000000000000000000000000"], + ["0x3d93dbbb6d17a93735d0a845ca0da846567eefc7", "10000000000000000000000000"], + ["0x6ae66ab87dad05e9d49c49455631fe285d2e4ee3", "10000000000000000000000000"], + ["0x0ed49c6d8b6e0a2342287707b857d58c94763481", "10000000000000000000000000"], + ["0xd5d810066689a08d45d03d0aa4e63cc8480b37f8", "10000000000000000000000000"], + ["0x1774fae209dc31011daa5e5e11ef7d8f016a8ad5", "10000000000000000000000000"], + ["0x8e3294acf8c96e446d96ade898150798101bcea3", "10000000000000000000000000"], + ["0xca712fc7ffe3a7cb8e44dcfec968f3daac91b4bd", "10000000000000000000000000"], + ["0x0b3d6e6ebf95f38290b527c3dab253d94dd10b03", "10000000000000000000000000"], + ["0xb6d827ad79d3c036fd7a73d294255441ced7bc60", "10000000000000000000000000"], + ["0xc61716975e0212fa98419b6960bfbc6d8fc8d74b", "10000000000000000000000000"], + ["0xf478792755a5581809ae4116395c32ceba827acf", "10000000000000000000000000"], + ["0x8fc87c199203332c1cc43430b9fad2b1868e44d0", "10000000000000000000000000"], + ["0x1b59237d0cff7b879f3a7c5045d30ba3e9518d3f", "10000000000000000000000000"], + ["0x208b82b04449cd51803fae4b1561450ba13d9510", "10000000000000000000000000"], + ["0xad3ff004a4897047032c8aba65795916bd9f23cc", "10000000000000000000000000"], + ["0xd819e3705425dfa164e395d79256cdd9ee4871cb", "10000000000000000000000000"], + ["0x5c53bee9f713d427fd930f8910cb9442422b98e4", "10000000000000000000000000"], + ["0x03fbc3640e447f59e9540034f6cac2731b729701", "10000000000000000000000000"], + ["0xb699684651ff748a6357892e006a0bdaa1707d1a", "10000000000000000000000000"], + ["0x31099ac2e8b4530ba82f4fed6b489a85569912c7", "10000000000000000000000000"], + ["0x09dcf911a4b1d72cc97db56617b57b92fce326b6", "10000000000000000000000000"], + ["0x29eceeafdfff73e125c2fb93cde3e6bb6f1b602c", "10000000000000000000000000"], + ["0x70eb0915474806164a0fe4bf0d9f29a5f50dfebb", "10000000000000000000000000"], + ["0xe1e3e3b6cdf387279ef26beabbf08185bf334f72", "10000000000000000000000000"], + ["0x9403bc5bf2c9a4ca001eacc9b6fc4a70aca3ccfc", "10000000000000000000000000"], + ["0xde48537ce6df7f50daf3989e3202636b09b55f5b", "10000000000000000000000000"], + ["0x2d953f2d7cb77fe2d28eb804f5e5a4a379f91871", "10000000000000000000000000"], + ["0xa4f23e9a9eae680e5ff48ea972a31cc1a787500e", "10000000000000000000000000"], + ["0x1b927f5f8680b660be3f545a36bffca62628d762", "10000000000000000000000000"], + ["0x8dd0eb4ac9b49e2193a73d0f77f431acc0af1b37", "10000000000000000000000000"], + ["0x0521c7212c72e7fb2fbeb9be54bc19c5004bee47", "10000000000000000000000000"], + ["0xbe8572dbc32db091715e3f55dc913fd3b05173d2", "10000000000000000000000000"], + ["0x98e7131c1d9da1977f96345c85e00f10846f61c7", "10000000000000000000000000"], + ["0xe47a8c0d429d75745578e2b7108b7b3cbfe07b86", "10000000000000000000000000"], + ["0x74f0ef88878bad5c38ee76144ebb723c94e25a86", "10000000000000000000000000"], + ["0x150be62edddd543452545e502bcaf6800bcaf2d6", "10000000000000000000000000"], + ["0xacc3df87b9d1758a407d352f7c5f2460021703be", "10000000000000000000000000"], + ["0x26661bc4fc9d2d51e8369cfe088bb127423771df", "10000000000000000000000000"], + ["0x290789aed2d6fae51191bce9cce498d0c336dd89", "10000000000000000000000000"], + ["0x13483c88a35c27e0a893b7196ead0903d08a84a2", "10000000000000000000000000"], + ["0x60ca37f5ccd976c99c0ed51beb95f02e41f258f2", "10000000000000000000000000"], + ["0xd7148f95e0fe82036e389ed8d58c92508dcdfffc", "10000000000000000000000000"], + ["0xe153ba6e7c8d5ff6ce6d5968044ce72cd4ba38fe", "10000000000000000000000000"], + ["0x21543a89d39730bc239623fd9a41bf379dc3f6f1", "10000000000000000000000000"], + ["0xbef1fefe4bb6dda516e9af3a3f793d182cf053bc", "10000000000000000000000000"], + ["0xf11ce14bbbb90ca3feea63f5599119888c07f941", "10000000000000000000000000"], + ["0x8106f06a53396d174b0edbdfd17660f67e71adb6", "10000000000000000000000000"], + ["0xa91b82084b37b01a7b5fd60160eef7b04302517f", "10000000000000000000000000"], + ["0xc4ea0e92c4978c04e82e904e81c70ed959615a32", "10000000000000000000000000"], + ["0xf8a3b68661e928c1d755feaa1e0c611b8fe061bd", "10000000000000000000000000"], + ["0x8a0454b05a952c572619935ed46b6d8d0aa97a76", "10000000000000000000000000"], + ["0x0f0c832a009802ff4119d10154c247c459763754", "10000000000000000000000000"], + ["0x4de216fb73e84c5b980eaf76d1d97b1c9a8456b0", "10000000000000000000000000"], + ["0x1f7ebb2c573eeed2d967a706f0fcd66953fc9e9e", "10000000000000000000000000"], + ["0xc474fcf2666d8885bd0d48f942f760448b2f9f34", "10000000000000000000000000"], + ["0x5922233a62ed0ac08eb3d7d2ca3bd2f1080a81fe", "10000000000000000000000000"], + ["0xfcd538bc55328adaf45121f307f76f5589f060ce", "10000000000000000000000000"], + ["0xe564148fbe1cf67c5dc041e8a99f1b309d277058", "10000000000000000000000000"], + ["0x461b4b406d7a366a965bfd455c013de70aa12a6b", "10000000000000000000000000"], + ["0x3b0a5f022d0e0b43d0b74f961dc7bd236b919205", "10000000000000000000000000"], + ["0xa18b495f1bd998541eaf890aeea4e16558ee355f", "10000000000000000000000000"], + ["0x997202adee11ebeb3d5b6b3c0b3b2b3f3002bc31", "10000000000000000000000000"], + ["0x337ac9e753c374553626ba5bac8593713ad0ed20", "10000000000000000000000000"], + ["0x07a6d58cac8d98af26508635815ce1e56458c5a2", "10000000000000000000000000"], + ["0xbb15089724c2797ad7ca7c9b210e2cb6fdbc30d1", "10000000000000000000000000"], + ["0xf54176ec9bd05eb83b94926e74f09960b685fbe6", "10000000000000000000000000"], + ["0xd89cdcba2a2f85fb3b185253ca29c6127eb7cef5", "10000000000000000000000000"], + ["0xf2c95079e35a27c296b01759431e05c38e392a21", "10000000000000000000000000"], + ["0xc8d46eb7881975f9ae15216feeba2ff58e55803c", "10000000000000000000000000"], + ["0x75c98e92eac409963e27efc75d2bf556d8a7878f", "10000000000000000000000000"], + ["0x8e67207da081b391d646c1483de673ae76c6b293", "10000000000000000000000000"], + ["0x963dca698ade8fe3ac61e5a4410ebd15c0a42d77", "10000000000000000000000000"], + ["0x76811ec47ab59d83b57c40c2778f5a355b3bb2e5", "10000000000000000000000000"], + ["0xa81597bd911cc633a58f4362b0b333d4c7398d4f", "10000000000000000000000000"], + ["0x3ce90db75670e28fc9bb3fde67c1d6e005012d2b", "10000000000000000000000000"], + ["0xbd7f9fb39e0f1346b45380088e901ce2916cfd39", "10000000000000000000000000"], + ["0xe95a30e3795b85db37b1c9b082869e4f7615420c", "10000000000000000000000000"], + ["0xb424a3cda7bca285a363f9a98b1d133b995172bc", "10000000000000000000000000"], + ["0x6a79c1749229179b4f16e6957597fd8f4d2fae7d", "10000000000000000000000000"], + ["0x56a41dd21f2e65ca5342697b6c9b8675ad781bde", "10000000000000000000000000"], + ["0x2d8e09501fe9a3116dbc76613bc10c8942612bdb", "10000000000000000000000000"], + ["0x9afef5badf5725bd13b4c938df3c62f66f1aafbb", "10000000000000000000000000"], + ["0xc25cb20ae7569da8d0557a125b1050f21948603f", "10000000000000000000000000"], + ["0x359a76db7afdad46f0e2c6699ec768c1064c86ca", "10000000000000000000000000"], + ["0xe5f5380ed6088e97e29488d327385c86ba91d8f6", "10000000000000000000000000"], + ["0x82480356b5df6db351182e831e63476b640fe82d", "10000000000000000000000000"], + ["0x4e14171a451884c44edbe412b03a128d7e473e55", "10000000000000000000000000"], + ["0xb9c6801ab14077b3ad443105f67979c841587dbf", "10000000000000000000000000"], + ["0xeaf8c4e0e502923f1a627cbbae36ef6339df2688", "10000000000000000000000000"], + ["0xecd7c8f64e2ea8e3f8e912ea58504eba324b2b66", "10000000000000000000000000"], + ["0x11f37eda87206bdc200222855328e5dd5809613f", "10000000000000000000000000"], + ["0x1d15395f781e9e13bf77fc34f1663d6d3543c7fe", "10000000000000000000000000"], + ["0xb488796afcbd542ef14edde6e2dd14211fa6c9e2", "10000000000000000000000000"], + ["0x4ed05ae3fdd40136ac74b15bde5949ce50f7614a", "10000000000000000000000000"], + ["0xa4146769c7cee0787777e5a7c4459c45c336912b", "10000000000000000000000000"], + ["0x66ea49e53039a3befecad444220033313c7109e2", "10000000000000000000000000"], + ["0x9d7db4635fcf4f8eeb93ba3fa1f6f149181efd21", "10000000000000000000000000"], + ["0x8c78b28b6bea4ffc557b32a643e576572067515d", "10000000000000000000000000"], + ["0xdee169c8e26a252b5b606daf2344555570982114", "10000000000000000000000000"], + ["0x15d8fd2653c10faa953df207a66bfb58aee9c95e", "10000000000000000000000000"], + ["0xb4bdd9b1404ac20e4c0556ed0f23510af89e0ee9", "10000000000000000000000000"], + ["0x14f683329a73e977cf2fb6cbec2094ca516b61f5", "10000000000000000000000000"], + ["0x6c0363c075a82fcd439d3127abee6622228934e6", "10000000000000000000000000"], + ["0x55d65e9a4b47196c4f6d252a6440e1eb5d29c0f7", "10000000000000000000000000"], + ["0xc3d835ec0a336fd2f97e2ac9a6226e8e331dee76", "10000000000000000000000000"], + ["0x82cb410279688d98dbe0a523fc47cebe5833f1d5", "10000000000000000000000000"], + ["0xf470d2371810803eea3a6364fcb0ec116e65d7d8", "10000000000000000000000000"], + ["0x37679d8f112e2fdc0d3180d19961b977c45760e5", "10000000000000000000000000"], + ["0x45e3b3a5dbf5f698117e72ea65126121d13d7337", "10000000000000000000000000"], + ["0x08bba49acda81fbdf2ea7f1903860ac83988c75e", "10000000000000000000000000"], + ["0xd866cf56768daf406afbe50f612689cc466c6f1f", "10000000000000000000000000"], + ["0x777abe19a2cd375451bf7a307eed869df57542f4", "10000000000000000000000000"], + ["0xa0806b99df2d8c220221f8b6b7b2c57fcdfbb546", "10000000000000000000000000"], + ["0x838db4c8150d90276634c1c8df5b9ffa967ae658", "10000000000000000000000000"], + ["0x67bbd261fa3a2f73e07f44ec15726cf363f2546c", "10000000000000000000000000"], + ["0x36143d6ab3ebad1977abf30676e77f27e5ad4d6f", "10000000000000000000000000"], + ["0x2e8b559b47b288ce8cfb4952f9e0bb9a5e0c2fb1", "10000000000000000000000000"], + ["0xab6c7040b9c1bc2133081bbe008a740a5ba063d2", "10000000000000000000000000"], + ["0x50af859cc14971cadbed8b5159eae7def0284468", "10000000000000000000000000"], + ["0xe61cfbd09e6cccc6507ba8e7539f9a74f6278318", "10000000000000000000000000"], + ["0x55fd246cbbbbe28de49ae6a415bedfbf9e2b8dc9", "10000000000000000000000000"], + ["0x12a7872c328b5d6c7703137ebb6c7186da6affcf", "10000000000000000000000000"], + ["0x4c409e10e85b43e80be5b14696f4a7b20626d02b", "10000000000000000000000000"], + ["0xabe8a7ad2f597c077794f5f74149f69ef4356c13", "10000000000000000000000000"], + ["0x910bf2d50fa5e014fd06666f456182d4ab7c8bd2", "10000000000000000000000000"], + ["0x8edaf22542cc324ad48aad9b04fab79c1e70ae61", "10000000000000000000000000"], + ["0x0867f05c2490e9ccf5620a67514857d388b1f436", "10000000000000000000000000"], + ["0x050f788d09395724777a67dd08be127cf70dd238", "10000000000000000000000000"], + ["0x5bf004761b8c7d08c0eff3a031cf85b5a51815c4", "10000000000000000000000000"], + ["0x7067bce753801201b94fae26a344b7d16f6ae039", "10000000000000000000000000"], + ["0xd78e1cbd27f40a9039131eccaebd0a6da510ee96", "10000000000000000000000000"], + ["0x7cae6729198d7013c7c87e11ae0796a727665d6d", "10000000000000000000000000"], + ["0xe679cd0aed39a1c1e91b4fb5c6dd1fba9d2c6173", "10000000000000000000000000"], + ["0x666df143bf8c00e91d6e43a303f2e99d57e1679d", "10000000000000000000000000"], + ["0xafeb9a39177ea632434217a5f90ca129cdb557da", "10000000000000000000000000"], + ["0x00d14d2bffa3363114793f8f5df05b6d82f14ba1", "10000000000000000000000000"], + ["0xf1e6a831ceb1ad01128fc2b10a066a67d3654640", "10000000000000000000000000"], + ["0xd9ca2b65b8a90589a16354ea178a14427b10ad32", "10000000000000000000000000"], + ["0x0a81f577d8a4776bb7389ff0ae9be97a96c280c2", "10000000000000000000000000"], + ["0x315e5d590354e103412169a485ad4c496195c78e", "10000000000000000000000000"], + ["0x67d3e94a845a1cbb3c1154d3ef429479fd80ca39", "10000000000000000000000000"], + ["0xabbf8d6b5ff051c4d424a0fc35b2a295437d93f2", "10000000000000000000000000"], + ["0x00ec52d4bbdaa3d6dc6d06064fd48bc6793d5071", "10000000000000000000000000"], + ["0xb1c18ede2ebb33ed5cf6909edad6ef1abc8d3708", "10000000000000000000000000"], + ["0xb6237775a4b5adfd81ee09a5417bc15406fcddd2", "10000000000000000000000000"], + ["0x0f56ed6f7c71aef4e67028882ad5567db63f7925", "10000000000000000000000000"], + ["0x88eed781abbbb20b8f47cd9614187af817706170", "10000000000000000000000000"], + ["0x1bfb3b57522eefd75957e5763399b9a4f4a61d2a", "10000000000000000000000000"], + ["0x88e6c5b96710c0c7fa63e593d9675a424f4346a1", "10000000000000000000000000"], + ["0x030f21b61d520bda2792d81cb461cc9a72b91950", "10000000000000000000000000"], + ["0x795f7fac23ffbe668619cd2d4036b177cb388983", "10000000000000000000000000"], + ["0xd84c30afbdc2332c4eb0680d848b9c2e7b01de73", "10000000000000000000000000"], + ["0x13d9b821efd055ffd7efb25aa43e0f754111d612", "10000000000000000000000000"], + ["0xfe325c57946f1dc280af5fe510ec83d1da16997d", "10000000000000000000000000"], + ["0xddf7b2b23a0f5d44f0badc4a4062214df8b7a6e1", "10000000000000000000000000"], + ["0x4c4f137e4bbbc8ded7c708ed230400db580448e7", "10000000000000000000000000"], + ["0xf8fb053bef2209712c85dbfb90302d92cce274bb", "10000000000000000000000000"], + ["0xbad51b52f6169a6b784fb18981d6d7b72c2b2a9c", "10000000000000000000000000"], + ["0xf340b41f31552968b4600cd2566d4af0a40d7fc2", "10000000000000000000000000"], + ["0x30c88b12098224b13a4c697d15ec8b4c9f3262ee", "10000000000000000000000000"], + ["0xa562ca817c23b6590c3d32398f723fd759242cbb", "10000000000000000000000000"], + ["0x6fba1aac65478fa7f269c668b82977612ea9cb95", "10000000000000000000000000"], + ["0xec253779e6bb668b82786dcce8603548421937b9", "10000000000000000000000000"], + ["0x92cfd9472b012561a9de9907d8c5dd19d911797e", "10000000000000000000000000"], + ["0xd68f3344741a1b4214155c3aeb8cfebbebef7274", "10000000000000000000000000"], + ["0x58937d451bf8baa298d568a6fd69a2daac326e4d", "10000000000000000000000000"], + ["0xfba19a5411e602d40be8eda3fdb479258f1b4699", "10000000000000000000000000"], + ["0x393c5ccd623945aa64aec6455bda10e471a0046c", "10000000000000000000000000"], + ["0x3b09fa07b38a8ea1673219fd3c2b586312d6a0b7", "10000000000000000000000000"], + ["0xe25373181da11fa4e586bb4c982d866b0bbed661", "10000000000000000000000000"], + ["0x7e73a94993f9652802c016b7a3ef808cdc5c74a9", "10000000000000000000000000"], + ["0x3992eaf6f696781a7bcfd073e72fc4e10adf5ad6", "10000000000000000000000000"], + ["0xaccda574311ddf0d9262ce7aefba7a6743f6eb7e", "10000000000000000000000000"], + ["0xcec6ba8aa1fc9423b5a480dcc7f9352f26894aac", "10000000000000000000000000"], + ["0xaea564e201c9eafca02bb8a586509908c68f94b3", "10000000000000000000000000"], + ["0xe84995bcbf58606d919acc03d21da5abc1ceac6a", "10000000000000000000000000"], + ["0x2f094e189859e20ceb97a911b90e1471accbca27", "10000000000000000000000000"], + ["0x0f4ef857e05aed6e3cad417a244c117997d0e83f", "10000000000000000000000000"], + ["0x50d934a02c47688ab45376d9754e2629484873b1", "10000000000000000000000000"], + ["0x55569242acb5e5ad26dda8f68683d661ecf6fb25", "10000000000000000000000000"], + ["0x8922aa8921de71e66824b0665e7fbe0488a0fcca", "10000000000000000000000000"], + ["0x79aed628ed7faa2e7f9f69cdd53e32a92261a009", "10000000000000000000000000"], + ["0xa1a945b2325ed4cf93cdbe28ea96e5f85c8b81d1", "10000000000000000000000000"], + ["0x1c626fa2c802f8bc8019066cadecfe3787a412d2", "10000000000000000000000000"], + ["0x3977497f572b16a01e2da7193e301340dbfb3bde", "10000000000000000000000000"], + ["0xea76d930de7a153c97d0c98e1fcd02a69a5a4659", "10000000000000000000000000"], + ["0x9539b32640aaa0015c1a02524c33a10ed510fc86", "10000000000000000000000000"], + ["0x448bb8f15b115cf267ef7a46ff689117537abade", "10000000000000000000000000"], + ["0x65d6e0beaae01021d6471ec87e60a3d1ff32e132", "10000000000000000000000000"], + ["0x9c95df27387e63c94bb0d76ccce4ed22ed97af47", "10000000000000000000000000"], + ["0x78aee528cfc9bfc11f56798c56e1fd3fbfc26774", "10000000000000000000000000"], + ["0x79160a6530fac0853c9826dd7ce08c87c0641295", "10000000000000000000000000"], + ["0xdcbee0643b7d920da6c64f60ad31fb5be473e781", "10000000000000000000000000"], + ["0x12e721ca67c70f9e83d51d6b5139376cddc618d9", "10000000000000000000000000"], + ["0xd668ee736188bafeb82bc118a05c5ab4524fd051", "10000000000000000000000000"], + ["0x4295093af90ac152fcd37f683b033f0a16b0d51b", "10000000000000000000000000"], + ["0x2049fc7430c483c807a99afab92778b633070bf0", "10000000000000000000000000"], + ["0x08dda4b3d2daa6f32bbad7afc6bbddb27f6bc685", "10000000000000000000000000"], + ["0x382ffce2287252f930e1c8dc9328dac5bf282ba1", "10000000000000000000000000"], + ["0x92db74bdacb0b60be8fdc95ced85703bdde8432e", "10000000000000000000000000"], + ["0x1a95d0c59131212c06cbd824fe1cf258b184a74d", "10000000000000000000000000"], + ["0xd00f8d6cef430cf533296949cf0f38b8b0f743b5", "10000000000000000000000000"], + ["0xd5644cedd75150061552ab7c8414042f7cb95c6e", "10000000000000000000000000"], + ["0x099d35e0160269460cf979fb33ff5c59abee8b7e", "10000000000000000000000000"], + ["0x45477092f0d8cf6156b37905985e6f2d00e2ac83", "10000000000000000000000000"], + ["0x258e4db433a16e22826db7e91d8178e60cefc57e", "10000000000000000000000000"], + ["0x90c353978402085de3f363085e833a676fc6bfa5", "10000000000000000000000000"], + ["0x7a3e3233ad71e71f66ee1ccf034a6240fc447a47", "10000000000000000000000000"], + ["0xae4b2db117e0b599433b9457fb15eea4e97eaeb4", "10000000000000000000000000"], + ["0xacf98af36845ec9aeda29feed2907ea287388cf3", "10000000000000000000000000"], + ["0xaf1890305fcff4bf485d09efafe08bb07fa2a74f", "10000000000000000000000000"], + ["0x14d86d4c84e583b90a65b872cecc6ef56451f645", "10000000000000000000000000"], + ["0x5e6bb4c1e776d9c7f440e1c8b0edae547a3f6932", "10000000000000000000000000"], + ["0x52ebe7c7b4009560209622232b60c3e113e66944", "10000000000000000000000000"], + ["0x8842c59ecabd372bf247652217802edb27ea3420", "10000000000000000000000000"], + ["0x40e4668add6c20b214c04aaf34ecdb3073864af7", "10000000000000000000000000"], + ["0xfcf44a92ab1be1e3aa882fb26ba5d6da6ee51955", "10000000000000000000000000"], + ["0xc1f008835c2ed5fecceec1275bfa258633e5f639", "10000000000000000000000000"], + ["0x5f02dc0afbec8316ec273a21fe22858fbbdba143", "10000000000000000000000000"], + ["0x7a68e3af98c5b101e45a9a9d0862c811189fb58a", "10000000000000000000000000"], + ["0x08e412c1780b9decfd612d9946d9fb4284d4d8af", "10000000000000000000000000"], + ["0x7fa9600c78710e8c1f712f274294b301dc27d86a", "10000000000000000000000000"], + ["0xf0b4d51d517ab5fbdadf63d4057592d0e93bcb83", "10000000000000000000000000"], + ["0x2c88a02bdf1294a4b222803cade35d241dde0c36", "10000000000000000000000000"], + ["0x4e079f7ae28120d5b95cc2f7efb5b1f150552ee0", "10000000000000000000000000"], + ["0x30d2c399b94c2b4e4e27b43adbcbc35b1e8e10d7", "10000000000000000000000000"], + ["0x47a541ca68800b3353f89653e5d77e4a7cae4ebb", "10000000000000000000000000"], + ["0x65f322c51b633341bd5d0ba377444602d12fee86", "10000000000000000000000000"], + ["0xb98c90b964bbcafcb6cf1648d7247d2040986af3", "10000000000000000000000000"], + ["0x97ea1ffb9d02efcdc22ad6b2a235da72c4e7d949", "10000000000000000000000000"], + ["0xa33ff5adaa402c130f6568855cfc9a65a17c8e4a", "10000000000000000000000000"], + ["0xc7c61e6884b14933f61c4af0f62de65ee04e812d", "10000000000000000000000000"], + ["0xc33f2de83c9d3d1fad2de073ba83f40e55440ea9", "10000000000000000000000000"], + ["0x41a9406d3443cdcc105c95b6e4efb4a7e7b3c188", "10000000000000000000000000"], + ["0x592231aa7459d22dc9674f726e14ed80f0d65bf0", "10000000000000000000000000"], + ["0x09a4e26d69821edeffa5eb29f134d0d8cad8efc4", "10000000000000000000000000"], + ["0xc324720784121f19dfc31919d183576732492a3e", "10000000000000000000000000"], + ["0xc6273dbc610fe3f032a509beb32830d40018182f", "10000000000000000000000000"], + ["0xd4f43a6b58ad6ed8e078b34f029bc24255fce120", "10000000000000000000000000"], + ["0x53345a9fd3098d3b0e2ebea2d0845b302ebc3471", "10000000000000000000000000"], + ["0x8fe6662b70b93bbcda26e98c37dc325608704d09", "10000000000000000000000000"], + ["0x86f991c173663d554540cd655ce0dc10944899db", "10000000000000000000000000"], + ["0xc1d88eb17c2574192fddd016e4d201928244eb5d", "10000000000000000000000000"], + ["0xe3077c57c0ebcd5db24a0bee0da528738842d425", "10000000000000000000000000"], + ["0xa627db0a15f3a763190d69c72522ff70715b9289", "10000000000000000000000000"], + ["0x44f4129e10976e20745cbf5cf6023a284eeee8f2", "10000000000000000000000000"], + ["0x956f1ce3ff2ea59a8b41df83ce9f85ed59d73f92", "10000000000000000000000000"], + ["0x02a97b8ebc1f3baff3755f0ad7d2dc64e03cdb7c", "10000000000000000000000000"], + ["0x596a9866d288e6c0ff98e756608169f9bf64be0a", "10000000000000000000000000"], + ["0x5754ac025e57b961faf6f7fbea1c1cdb586e9a14", "10000000000000000000000000"], + ["0xb57cae748c618ab8685a8143890c61c62fcd0f8b", "10000000000000000000000000"], + ["0x1cbafefd21ca100f0282fb909399d29f9fca17e8", "10000000000000000000000000"], + ["0x8539c8e63490595caba6b8351e8f1fa8127cb748", "10000000000000000000000000"], + ["0x5e7ecdd6752d53588a111636a7217c9677fc08df", "10000000000000000000000000"], + ["0x88a0e3db6c1f9680e51b51187f8076c57b05557c", "10000000000000000000000000"], + ["0x09711a9e501e03769f32a0f8fc09aa517337b388", "10000000000000000000000000"], + ["0x59810804476105b545d4fbbe561f9ba0778b59fc", "10000000000000000000000000"], + ["0x82d5cf59bd09225f39b5c4925f738079f2a9ae69", "10000000000000000000000000"], + ["0xd00ffe05fb3abc421c74379917cf640ddbbd8487", "10000000000000000000000000"], + ["0x4763aedd619f18799121a86b3805f7772b4c7e8c", "10000000000000000000000000"], + ["0xbdb5d9d61d11c106d649dd21e4749a80884641a8", "10000000000000000000000000"], + ["0xcfb63b65d3ab019fb412472e43cffb396ecbbeae", "10000000000000000000000000"], + ["0x8b8e3da80e159eff2535b23e8b68f7ea45f930e1", "10000000000000000000000000"], + ["0xcc9047cd36cef35a88bfb434350a3bd778fa347e", "10000000000000000000000000"], + ["0x78edb806eeb8480162d3cb3acc32fb0f11c308bf", "10000000000000000000000000"], + ["0x5d782508ce956d9c75116dad7f54bcdd87829a01", "10000000000000000000000000"], + ["0x965211f826b66a35df7508194dae12beb8ccbaf9", "10000000000000000000000000"], + ["0x35dd8ae8e3ef1ffd223d77371badd6f7393a0817", "10000000000000000000000000"], + ["0x059dc2eae98465f97c57c392543fec3e5575bac3", "10000000000000000000000000"], + ["0xc54be037e6112716a507c0bdc0487785f3d3b118", "10000000000000000000000000"], + ["0xae1312033facd19bab61a6736aeeed07b3cf499e", "10000000000000000000000000"], + ["0x63f1a84816bd167f6af35eeff56aad37a37e4474", "10000000000000000000000000"], + ["0x01a6890ebe9cb8910c21c3a0f4a74575f602d3b0", "10000000000000000000000000"], + ["0xf1fe0a34e66d684f182a0886f795e5f22d0e64b6", "10000000000000000000000000"], + ["0xb65ab25a3d86034b555a347bc176c3d41682e1e5", "10000000000000000000000000"], + ["0x0000000000000eb4ec62758aae93400b3e5f7f18", "10000000000000000000000000"], + ["0xd4d81e2a2ea21c7aa782f55d2a5dafe2da1bc36d", "10000000000000000000000000"], + ["0xfeb2549f293f54a96e780ae8a81b03129d539136", "10000000000000000000000000"], + ["0xc71af083b580fa0b697ad8b163006e4b2ec1072a", "10000000000000000000000000"], + ["0x7219179fd4740ed1bc76689b25f590a840f2f049", "10000000000000000000000000"], + ["0x9aa2329798818b32a6a16e9883a72b0b7c4710d7", "10000000000000000000000000"], + ["0x4ea6f231e53a4a60f0e3af775180e329df9c6cdc", "10000000000000000000000000"], + ["0x57c65938c659b4da2ef05d7064ae883140916af3", "10000000000000000000000000"], + ["0x6786b7e5022cd6e3e6b6a1018953f1d15dd442aa", "10000000000000000000000000"], + ["0x556cf3e831778860a132442fb6834482f6d91bab", "10000000000000000000000000"], + ["0x7827b605b08db3f80a24da6e725e98191b7185db", "10000000000000000000000000"], + ["0xb39975588e364b02d70964c1b06e6e2716c09721", "10000000000000000000000000"], + ["0x80750964836f9527e18417467a5b7f79bf2a6a21", "10000000000000000000000000"], + ["0xae8df6c6f0a18ac42f8636f6876c47ce6f56e071", "10000000000000000000000000"], + ["0xf60d5f136d093024502b91af48f7a42a0cff9527", "10000000000000000000000000"], + ["0x16857503dcfa74da125a1aa421ff9b266af281cc", "10000000000000000000000000"], + ["0xbd76c6487dabef207470afdb6f332c0432482f45", "10000000000000000000000000"], + ["0x24c3cf19e12dd05feafbe47cea4aea8211f0626f", "10000000000000000000000000"], + ["0xe3b3fd1927d55827257892642e71d4c14dc3aeff", "10000000000000000000000000"], + ["0xd5381da8a8b0f22ddd335292ac6203348f617b1d", "10000000000000000000000000"], + ["0xd6ceef56d1e877b26261305dec1094264d830f72", "10000000000000000000000000"], + ["0x229a690b16b748f047d4206087c27b735d9d231b", "10000000000000000000000000"], + ["0xa72a8686e5561ccbcc1142b091f43b30f8084626", "10000000000000000000000000"], + ["0xbee4077a7edf58e1ee76b390af64f377bc58191e", "10000000000000000000000000"], + ["0x8be64b7d3261390bda4b908fe62a2586a04871f9", "10000000000000000000000000"], + ["0x4071147abf0ad7646e7a3d8590b7357a7a57eb1f", "10000000000000000000000000"], + ["0xfbbe7ffba0ce6bd2c34360d925f61834838d79aa", "10000000000000000000000000"], + ["0x7c9f379ba78273aca5428a5aee1a2d7932016d92", "10000000000000000000000000"], + ["0x784e120f8e7b9b1d47ceb0af01bd688ff4a5e8c9", "10000000000000000000000000"], + ["0xbb2a74fead35c15cfce7000e583893820bc9a237", "10000000000000000000000000"], + ["0x7206834fc91111cd6cec6ead968d6bd33c5e434d", "10000000000000000000000000"], + ["0x233b17fba461159d4d6987713eae82bc03bf1dc9", "10000000000000000000000000"], + ["0xc680f93701d5055fdd67830427d248bbfdba794d", "10000000000000000000000000"], + ["0xda6caefcb34ece4860f52c30552605e6bf86694f", "10000000000000000000000000"], + ["0x468ecc9ce37e2e6348c3a1901ba84cb13dca42e1", "10000000000000000000000000"], + ["0x11ef3c94c6ff96615116a2b9423405bd0715b3ff", "10000000000000000000000000"], + ["0x74d3ee195f9c1e062fc3ced2946800eecdaf249f", "10000000000000000000000000"], + ["0x3341c91212595f8d9bb6c36e63c86fa2cda636d0", "10000000000000000000000000"], + ["0x392141c7742a8794fd06a06bf72e4a0665cf4699", "10000000000000000000000000"], + ["0xebc627aac94297e8ebcaa3bd1dcc0ef69ce44ae9", "10000000000000000000000000"], + ["0x64c4c46731d2fe68672ffb08274491485eb26dd8", "10000000000000000000000000"], + ["0x9578797f81cca95c7f1f17b84a43bc58f1218270", "10000000000000000000000000"], + ["0x56ffb56a11417dc5126eb9ce0fde1c7058daf541", "10000000000000000000000000"], + ["0xd3fb0f853b67e1a3d03cf2664819e32b2478b253", "10000000000000000000000000"], + ["0x5423ed3bc1eafd37a84d4f445eae2662ec8ee475", "10000000000000000000000000"], + ["0x3197d9458abf3a1c66cedbbd285624d40b9f156d", "10000000000000000000000000"], + ["0x5ea98b98ce29cc5d333bc1ba294bc08bc618f294", "10000000000000000000000000"], + ["0xd8e74f85cffa74ea3a277b438549f468d87d704d", "10000000000000000000000000"], + ["0xf6da21e95d74767009accb145b96897ac3630bad", "10000000000000000000000000"], + ["0x5f30a2bb114091b07499d0d6aca58a392f385069", "10000000000000000000000000"], + ["0x053960de1dd789f2279b9c4b8a941b6437af3802", "10000000000000000000000000"], + ["0x8b0971ffa41adad2530f78e54fb7a260ca491bf2", "10000000000000000000000000"], + ["0xa7a68209dc4ba12a8a055ae9135e1339c057ef91", "10000000000000000000000000"], + ["0x1f4a913d0916883dd32090aed70f9119767eaa45", "10000000000000000000000000"], + ["0x3014a97f7b1f904aee0f1a76bded484448a1133f", "10000000000000000000000000"], + ["0x3397523a9e446b7018d9bd0e924aa85debadc6f1", "10000000000000000000000000"], + ["0x22a2f3588dc91a871ea600c528a702019ed04991", "10000000000000000000000000"], + ["0xf23a9799fe0011acb4326306a539b88644ac19a2", "10000000000000000000000000"], + ["0x08bae5aca5d2347c2fa95f70ca1c4ebae0e5aadb", "10000000000000000000000000"], + ["0x1d7b13d2c5c130e698dffaa11d76adabc787f269", "10000000000000000000000000"], + ["0x0538d2c341c8da8087f4ad59b31c36fac6378c99", "10000000000000000000000000"], + ["0x164a85f1f708a82930b3afe3c395de6faef28496", "10000000000000000000000000"], + ["0xbf1d60655d83665bb5119196cd322df1633e50e3", "10000000000000000000000000"], + ["0x887406bdf59d5978717a83657fc95e7d156ec2b2", "10000000000000000000000000"], + ["0xba1d6621e6934d2a55054d97dc850d22c71bb176", "10000000000000000000000000"], + ["0x220c9e5808b754cb6274dae00252cf164e435b25", "10000000000000000000000000"], + ["0xbc147973709a9f8f25b5f45021cab1ea030d3885", "10000000000000000000000000"], + ["0xc4ff72a7d98222aee8c5a327e19362fd9550ba82", "10000000000000000000000000"], + ["0x51e373e9716fbf01c266568f51f426640279d7d9", "10000000000000000000000000"], + ["0x075234dcb3cf808c139be17b1103eca5a3f84aea", "10000000000000000000000000"], + ["0xc780077a65f33d9d88b59bbf421d4d89b1fc12a0", "10000000000000000000000000"], + ["0x01adb4f8299dffb1d81bf5c5c597ca3a82455d45", "10000000000000000000000000"], + ["0x0cfd83dd7e512b332da95b48fe11f572890282f5", "10000000000000000000000000"], + ["0x94d33ba21a27c96fc8748e76d4e5853bdc0aed69", "10000000000000000000000000"], + ["0xb40ee46d5f2a2312af3ba9aeb4be770ae7055219", "10000000000000000000000000"], + ["0x8baf2d1b82fb4039e6cf1e205daf0aed9b060616", "10000000000000000000000000"], + ["0x614c837b1bf1c60c6484da77eeba9a3b8ca49c08", "10000000000000000000000000"], + ["0xde7f739efec6c96aa041670bd656b86ca08f8785", "10000000000000000000000000"], + ["0xb60fcd4d2ac48985fcb2ea4d457595d48426a1c2", "10000000000000000000000000"], + ["0x8b861c583f176a6755a0354278e6f1c1e14a3f13", "10000000000000000000000000"], + ["0xe66edf95e1c24dcae334541f0ec9df5adeb54096", "10000000000000000000000000"], + ["0xa38e787ec7184ff316b1efe2722bbcef6de09b35", "10000000000000000000000000"], + ["0x5a799288c1571c2c9fe756d6baca1ab323877ad7", "10000000000000000000000000"], + ["0x2848af56c7d3277bbcd1fcaeea5b83ae467759bd", "10000000000000000000000000"], + ["0xb657043d58048e2338788483eaf6f4d1c8b02c2c", "10000000000000000000000000"], + ["0xa110e9c0e636fec57f941cc9b572ceda14f2948a", "10000000000000000000000000"], + ["0xf4be466db056e73991407ede81af9a02de0aa7d9", "10000000000000000000000000"], + ["0x173f23fae21ec04b28ba944c798cd947597347c7", "10000000000000000000000000"], + ["0xa89c05932276acdfd1eca3dda6a7d350f77b34ef", "10000000000000000000000000"], + ["0xaea4a3c2cfb75059f63390e801d1e6200c51fba2", "10000000000000000000000000"], + ["0xf735c24cd1e0f05c8f367385b8c624784e97dcae", "10000000000000000000000000"], + ["0x530617ae022c952fdbf8d46bde299b3383b10921", "10000000000000000000000000"], + ["0x09d1687c93ecf81cdae0c85d5a98f9645df67e30", "10000000000000000000000000"], + ["0x652101ea9b4e50964660bed75ec0da120691b9c5", "10000000000000000000000000"], + ["0xfc27a4d5ba1985ccd2363530097b91444b9936a1", "10000000000000000000000000"], + ["0x862e250f2f88e5513a1fdae4fd9455193a470aa6", "10000000000000000000000000"], + ["0xd37fb986c6436db1fb303c6261363338a1b8c1b5", "10000000000000000000000000"], + ["0x5f3c788ebbd4b45d1340a803b9fc736f6d6aaf9c", "10000000000000000000000000"], + ["0x25eefb6d114645368e7129fb20ad17ca83924f0a", "10000000000000000000000000"], + ["0xe89d2384f2df1fa771081a61c430ec67876c74cd", "10000000000000000000000000"], + ["0x5e2f9711b11a87c8b938dbd2a199d38d9be5b067", "10000000000000000000000000"], + ["0xf2e466ab2661a2d16ee80a94e804c4090a666e86", "10000000000000000000000000"], + ["0x2299e24d282a4aa40cbe927234bed1f2c1bdd884", "10000000000000000000000000"], + ["0x5dd44f5067d0c3d8a4a68add4eb9a3dd0779947b", "10000000000000000000000000"], + ["0xda1e161ad96dc191a7a6011ab39e15506b22f332", "10000000000000000000000000"], + ["0x794184d4b97b1e072780d1d6f1972c4b3e0f32ca", "10000000000000000000000000"], + ["0x665f3f318fa753a22452251bc8123e907e2cb95b", "10000000000000000000000000"], + ["0x35510f09df280c26452911d8b8ccaf36154ea529", "10000000000000000000000000"], + ["0xf737a4232135ddf22cb271a34b1af82917067116", "10000000000000000000000000"], + ["0x62e15cf071d3833e12e7b5c97110a4610a2e1d37", "10000000000000000000000000"], + ["0xddb956235a4f84365d69bb9d563bd6ee34552bc7", "10000000000000000000000000"], + ["0x795dc1e52d5409d2b39612435617c52c5cc80905", "10000000000000000000000000"], + ["0x57e627425c631815bb0d5d2edc05e6259fd535c3", "10000000000000000000000000"], + ["0x0d24c2bc717732b0006c076d0dda4ee724c749c9", "10000000000000000000000000"], + ["0x2bcea9e4ed4e5ddfd65f4dd15b5f1bab406c9b71", "10000000000000000000000000"], + ["0xa92704f53f5e1b6c2ce559a885cd3c1eeec918fd", "10000000000000000000000000"], + ["0x062820dd79da169d7d26f319739b8d67e0b0b1d5", "10000000000000000000000000"], + ["0x6871287bd87405c936d36c95554fa81bee7a4edc", "10000000000000000000000000"], + ["0x5b61219a5a1a1669b7277261e7fa8a2e7a9d3727", "10000000000000000000000000"], + ["0x121ee23cd51145c03be1e6ac0eb7471447da103c", "10000000000000000000000000"], + ["0xeb220ca18bbc9b7df57e5f64dc006ff6b678cbc1", "10000000000000000000000000"], + ["0xff3ae71cdfe3a0e3e8b3f548859536bdd2a87eb5", "10000000000000000000000000"], + ["0x20268e4060521f49476ecdaddf19ab9945d731e7", "10000000000000000000000000"], + ["0xfdf8e4c6c7cad7d7ab71acce915d0607422452bd", "10000000000000000000000000"], + ["0xd5ac1d9ed0f380a4248944e775b1b4d8e9a85ed4", "10000000000000000000000000"], + ["0xe6d70d56193215d35f324a930c8ba2f24b466588", "10000000000000000000000000"], + ["0xf00a5c176de6de15fe3b4968f8a16485e874b73d", "10000000000000000000000000"], + ["0x7351c5848af4c683dfd6945699a77d566938dd91", "10000000000000000000000000"], + ["0xb65eeeaa9e6f8c8227c13718c23834f09aafa857", "10000000000000000000000000"], + ["0x139cb882a255c0ae0dcbd3890221a9c07500c24a", "10000000000000000000000000"], + ["0x486dd6cf9a85d983c3ea9e16255d9b3a5220c0f8", "10000000000000000000000000"], + ["0x45cec176179747402c2868605eb65ac2a1913e14", "10000000000000000000000000"], + ["0xd5810d8aa0ae56ae180b38c0818d0f3ca1c16774", "10000000000000000000000000"], + ["0xd63eae19084c4fe9fb0c4f15c6712558ca20ade3", "10000000000000000000000000"], + ["0x3a8f208eac2420bd7814900c7cb7d1424d26f53b", "10000000000000000000000000"], + ["0x0630c749b8d1d4b62970e415c1ad691efda50d3e", "10000000000000000000000000"], + ["0xee18f898727016f82fe1a6f91e3b9dd0bc2a2fe3", "10000000000000000000000000"], + ["0x94733331a3a5514c0b02a977aa8d1d4071988827", "10000000000000000000000000"], + ["0xa2498ab7bb955e5fc8464330b3035e2395837524", "10000000000000000000000000"], + ["0xf2817674f7a8361b918aea9d4fb9c6900ddd70ff", "10000000000000000000000000"], + ["0xfde49c2d5e0c4099c46bc61f1ffe45c6dd2f3945", "10000000000000000000000000"], + ["0x788df054a2b4d0deca1d08fb2e91d64073f66229", "10000000000000000000000000"], + ["0xa9967dda196305eeb3ffe475b5a9b016c55f0be8", "10000000000000000000000000"], + ["0xe406c00cfa26c3980f2e1a7e0ea9928d0970e81a", "10000000000000000000000000"], + ["0xf2d7eebea898f42b4bd4ba37e91a263b238cce78", "10000000000000000000000000"], + ["0x6938b98336121bde01dd82136d9e820b7da9003a", "10000000000000000000000000"], + ["0x86a41524cb61edd8b115a72ad9735f8068996688", "10000000000000000000000000"], + ["0x3eeca6cf2a180b3a13c241d5472cd46fd66ee938", "10000000000000000000000000"], + ["0x5d5c54fe70839286395afc1f08e8c62515bdf371", "10000000000000000000000000"], + ["0x41902410177bdc600e51f4bdc88b957e70c8d1da", "10000000000000000000000000"], + ["0xc86b85ee39c37f7226abed3fd7deb045034e4fba", "10000000000000000000000000"], + ["0xad615f88d4483b80dd415a0cf533c027d6ecde01", "10000000000000000000000000"], + ["0x1554927346e8f92465ec693e6ee46d9cb8cd6941", "10000000000000000000000000"], + ["0xade9086630754563619908bead432de161a1f558", "10000000000000000000000000"], + ["0x930bfc8d93c71d4412b9e5532e3c91b822b8de51", "10000000000000000000000000"], + ["0x080f23321f1b0b9ec1653ab5730c627d455cc04d", "10000000000000000000000000"], + ["0xaa507c45a3b7f8e302c4699e7acc606bf6ca9d4d", "10000000000000000000000000"], + ["0xccc339cd783d4836b031c3fc43b9a49ae699ec25", "10000000000000000000000000"], + ["0x49c608827ac70fe7a258e0a95aa3fe0e262a4768", "10000000000000000000000000"], + ["0xc8f6a989e73c42361fcbda3ca1a5559e7326206e", "10000000000000000000000000"], + ["0xc3f7a43e07fdd31ff207e14d51f01a625f47092c", "10000000000000000000000000"], + ["0x9a583afe399c74176ed6df0ff5609311731524ee", "10000000000000000000000000"], + ["0x0df1eeb03d08bad482cb6de5fc4a8d009e57c9eb", "10000000000000000000000000"], + ["0x9820f75afd5a15d62c3004874f0beee7408b472d", "10000000000000000000000000"], + ["0x090d267c596e937ffe1b06ff18ae444aa93ea9f9", "10000000000000000000000000"], + ["0xc556aa79252afb2acb6701b7fb9bccf82777ae66", "10000000000000000000000000"], + ["0x790b3a034da88ac00ea323beb1240a5273d5be32", "10000000000000000000000000"], + ["0xe4765356396d280de0690cd763a4612a44778bba", "10000000000000000000000000"], + ["0x5829937b446cd5806e6a350f6297023d0dbe98be", "10000000000000000000000000"], + ["0x6e3e80d88fd4e3417831b8686db83fc36dbe5fee", "10000000000000000000000000"], + ["0x6ec66509f82a6a4c83a7b80717bea75533d20e05", "10000000000000000000000000"], + ["0x200d426c684d730d40827e10c8ff8d90cd45eb1e", "10000000000000000000000000"], + ["0xc6d947c08ba8a703c15dcc8692ddd105ca43ff27", "10000000000000000000000000"], + ["0x636fab28bee42a98bf04f428d27974d35d7be603", "10000000000000000000000000"], + ["0x5b7a7db5d98a212979837a563c24c067b0f81012", "10000000000000000000000000"], + ["0xc6c97d38ce7589c0881f6f845ac035042f088650", "10000000000000000000000000"], + ["0xc9daa2ffee04fa05c9d7199d2faba14ee712a9ae", "10000000000000000000000000"], + ["0x88f3a3b63a8daae5b3a7fb482302a4668d18a3c2", "10000000000000000000000000"], + ["0xf79e3832d138fbec9052652607554b1929a98655", "10000000000000000000000000"], + ["0xffa46639ef45b5da3033c3c394b4a46c90ed9790", "10000000000000000000000000"], + ["0xa407c2237fce82bf9f1f121df70d787af329a74e", "10000000000000000000000000"], + ["0x6f92c928d005729656791f78637dfabb19c4fe49", "10000000000000000000000000"], + ["0x2159cd8abc5b09ec9ce6b89160e3d9720d244926", "10000000000000000000000000"], + ["0xb2953b2d2f41ef54b293557be1fd2afa19ef9340", "10000000000000000000000000"], + ["0x4952f5dde00a0677365e42d33bcc5a8abd4e2b43", "10000000000000000000000000"], + ["0x65bf3d0acad5b5feeb916666d56cda2bb2837e58", "10000000000000000000000000"], + ["0x7d6d05856a972312b1554297529a7c0747567988", "10000000000000000000000000"], + ["0x3dad8cf200799f82fd8eb68f608220d8f3ebf8de", "10000000000000000000000000"], + ["0x094a540bd61318318ed8898dbc834374142c46ba", "10000000000000000000000000"], + ["0x7162c6a7f4e58f4d3dd53181d7c7581dec566734", "10000000000000000000000000"], + ["0x2d62f955a3a18a4852143fe3aa019366964fef2e", "10000000000000000000000000"], + ["0xb3859c02a325320703097329b9b7a0e0e775a39f", "10000000000000000000000000"], + ["0x496aa49830137bfb023a4cf93009905182adba9b", "10000000000000000000000000"], + ["0xe67421fe92494302b10d8b8987ad9a195d2b286e", "10000000000000000000000000"], + ["0x7b57db50f91356abe299605095775a6246742538", "10000000000000000000000000"], + ["0xe7bc8ef68cb17cd3f57c067574197d50b8a2e156", "10000000000000000000000000"], + ["0x88f10161eeb86a7f87ca62363f291d58b207621a", "10000000000000000000000000"], + ["0x5338ef2d92489eaaca0cccadbcd408ad2bc6468e", "10000000000000000000000000"], + ["0x17e845e8f6b5bc93d9200c47e0a42ee0a9345acc", "10000000000000000000000000"], + ["0xbea3903219313df867ff8663749a0fa3cfb20a43", "10000000000000000000000000"], + ["0x1ce7b9f9371db21f4e14d93c1bfd620fa80cbebb", "10000000000000000000000000"], + ["0x587c632db714654ece0476d0c21957c724a2c233", "10000000000000000000000000"], + ["0x33a0c5ecac63b3f485676ae539455dc81e1c8f5b", "10000000000000000000000000"], + ["0x7fc926185cd970deb8696bd4c0c0c56c351d4408", "10000000000000000000000000"], + ["0x91c7a2803dd820b9c0a76eb0980adeb21454d268", "10000000000000000000000000"], + ["0xdc26dcf376f16c990fa4ea6030f8b77d912bc764", "10000000000000000000000000"], + ["0x860cb0dcda89b13915a67619f8b0f18f48524455", "10000000000000000000000000"], + ["0xd2415ba39744266c64094f3fdab538d44b62159c", "10000000000000000000000000"], + ["0x460501463ddadf0b28e1b396f20e01df83a68274", "10000000000000000000000000"], + ["0x824995efc6b53c0d873391d25859312d139b722b", "10000000000000000000000000"], + ["0xd7ba0cbd7421864681a406858b8c3f117445fae9", "10000000000000000000000000"], + ["0x7d13166cf615044bacaebc9283a06713d12cceda", "10000000000000000000000000"], + ["0x57971ad4b95f8a7c6f7e62e56fce0fc2b76460c1", "10000000000000000000000000"], + ["0xc95696ca2358095df1f025e91e5c77b8332873c2", "10000000000000000000000000"], + ["0x728b322a876d515fb9773acbe0b744973fc8b4a6", "10000000000000000000000000"], + ["0xfe6bd4338e1abdbe99f1c9ed918fba846f8d1f3d", "10000000000000000000000000"], + ["0x80e8c108a9a057efb7d38f0a362a8da47cdfaf27", "10000000000000000000000000"], + ["0x6f72056a4cab954d2901c22b6f05ec75fd5fb6a2", "10000000000000000000000000"], + ["0x1359669ddc1b3e23275c4542ce82680527c02f71", "10000000000000000000000000"], + ["0xcff1fc75f7abd546d8a948660f46f0da9deea622", "10000000000000000000000000"], + ["0x491dd4a1b070c22c0b287d675e9f5fd75b55ff56", "10000000000000000000000000"], + ["0x3b565678521787151a5a66d1f51d73b6b7a0643c", "10000000000000000000000000"], + ["0x547ed88d8bca88033428c9b300b7808d2e404e7e", "10000000000000000000000000"], + ["0x470bab7c3e3e4fadba43afafc843149c6cbc3cfa", "10000000000000000000000000"], + ["0x6d16749cefb3892a101631279a8fe7369a281d0e", "10000000000000000000000000"], + ["0xe00fa26712d743ec5f89af454f0424b17470fa2a", "10000000000000000000000000"], + ["0x54427c853b20c6691f2aa9e1651402580068d503", "10000000000000000000000000"], + ["0x3411a1279135403b885d9524166244da7676c54c", "10000000000000000000000000"], + ["0xded4528c04eac80ce019adb0a4e30bd4d5fd9479", "10000000000000000000000000"], + ["0x972929432e1c220860491f91a1096d69548aabb5", "10000000000000000000000000"], + ["0x2497f7a60f34b315397b75ca739807318cca05fc", "10000000000000000000000000"], + ["0xd8864bb8c74f9cee40347014f9de413022ab2b36", "10000000000000000000000000"], + ["0xbce0b69c7066806318381076e24d41da19918a13", "10000000000000000000000000"], + ["0x66d8e5c81010b49ea9703336c1a78dd769cd2494", "10000000000000000000000000"], + ["0x908851863ce45223c9d16892a2bf1553b5659be3", "10000000000000000000000000"], + ["0xfb27c8582976f1a29d58e89bcc89da1e54d78076", "10000000000000000000000000"], + ["0xfc0567dc074f803bc3d32290b4f995da96f6ce97", "10000000000000000000000000"], + ["0x6bcfb281eefb0ba7c7264028a06003f6fd8a9cac", "10000000000000000000000000"], + ["0x40ebf96e428b4920a7c4c57a34f99e71367a240c", "10000000000000000000000000"], + ["0x6c388f50a0b0edfc6da6d58d75d19d70a2fece44", "10000000000000000000000000"], + ["0x9910e06107b56e5f68e609f6f71ab611e38f4493", "10000000000000000000000000"], + ["0x6b6c4a2a94c78d42c767bbc378ffcac3c530c8f4", "10000000000000000000000000"], + ["0x8f423720584b0eff220c8ff0b62700917089be22", "10000000000000000000000000"], + ["0xc59de18ecd31f5e9c5a12c69ab8b175e28c96d04", "10000000000000000000000000"], + ["0xaa9233eb821f3bf04b265319e5eba5607e752acd", "10000000000000000000000000"], + ["0xa3bd3cc8207cfe58e71003e6d1d64256b2375467", "10000000000000000000000000"], + ["0x19868b43cc7e16f8a928c500400d24f1b5f2dcff", "10000000000000000000000000"], + ["0xa7b95d2a2d10028cc4450e453151181cbcac74fc", "10000000000000000000000000"], + ["0x59156935684fb81a35b068d599c34947A7eE78dE", "10000000000000000000000000"], + ["0x24B4a356917d9F0b99353C56378FC247d9e6ea90", "10000000000000000000000000"], + ["0x9216E7b3B0Df52291802f94C67004d262159Da73", "10000000000000000000000000"], + ["0xb1dB3e730dF1833983222130cF95139f6b563578", "10000000000000000000000000"], + ["0x5214a7293E165c1E1F36C14d0e16724ba13e14FE", "10000000000000000000000000"], + ["0xc79Bd3a1cf2E6935136A4a9833f1aa67aE67D9aA", "10000000000000000000000000"], + ["0x9cDb1804156F362Aa5900478E1465C917A5F6a3A", "10000000000000000000000000"], + ["0x6728fCBA2012863e9E1bD12f2a95355deD06C7aD", "10000000000000000000000000"], + ["0xCf3e183AEAE7802008a77a91CD90361860571717", "10000000000000000000000000"], + ["0x8b90b067d02132fC7c5cDf64b8cac04D55aBC2B2", "10000000000000000000000000"], + ["0x042b312CFD664e6f954E3e03099eE983ff45Ec3e", "10000000000000000000000000"], + ["0x4a5BB1c9347A0d4F7e06a29239162f03647d9232", "10000000000000000000000000"], + ["0x719Ef1E50d44dc2F9fb43978A613164bE0275476", "10000000000000000000000000"], + ["0x27f7E530d0c1aB780d8d6962e9Cfd45a9C96d8b9", "10000000000000000000000000"], + ["0x3b24a7C97815d9F18eeB02f15e6B1b89064B6f9C", "10000000000000000000000000"], + ["0x1DBe623157F7CDf98771020e688f7bc25A2e9A21", "10000000000000000000000000"], + ["0x0Ed67dAaacf97acF041cc65f04A632a8811347fF", "10000000000000000000000000"], + ["0xD164f7d5B93F17C863F0FeAec8AB92447dA9B53d", "10000000000000000000000000"], + ["0x53A2f447C61152917493679F8105811198648d81", "10000000000000000000000000"], + ["0x5F6a4215FE729870A437f29d3b3278e27C8789B0", "10000000000000000000000000"], + ["0x8b58f7c312406d7c6a5d01898f0c5aef31ee51a7", "10000000000000000000000000"], + ["0x52E7bdE89Fcbd1e1C656Db1C08DdE45D82447e25", "10000000000000000000000000"], + ["0x2D69BAB9738b05048be16DE3E5E0A945b8EeEf3a", "10000000000000000000000000"], + ["0xa777D9a1BedFe3E4Df943BCFdD5B13Ace8B1f2f7", "10000000000000000000000000"], + ["0x68C0F043Fb61F1be7e6F087033Ddf92b9Cd02de7", "10000000000000000000000000"], + ["0xF90F5f3510AF48786D98aFeb3b8C39fBcB3C6C1e", "10000000000000000000000000"], + ["0x0C2928630395EA989e3077Aefe50E08dc5426584", "10000000000000000000000000"], + ["0x9455FD942cA87446fD914e07C403C785bdcdE84E", "10000000000000000000000000"], + ["0x43f4759153292Ac675ec7ff56439c60065ACbC51", "10000000000000000000000000"], + ["0x857B3470632d12B041a7823219165F37C2F84783", "10000000000000000000000000"], + ["0x2938b2a7EbF9a59645E39d51ec5eCA2869D6C53D", "10000000000000000000000000"], + ["0x482c7F6217292d40452b68897c8265d49f20A511", "10000000000000000000000000"], + ["0x4F8b1d0FD9109de9099e1cA1312cA8089E602C25", "10000000000000000000000000"], + ["0x3B722bfB1c27B1Edc6C9C2e057c590a9ee57B2b0", "10000000000000000000000000"], + ["0xa69303D076dFb54d50589C4D018205a409Aa4293", "10000000000000000000000000"], + ["0x6cb8e395D1F7c7B00D6594deD6Aa03C5f7cA13C8", "10000000000000000000000000"], + ["0xCA63CD425d0e78fFE05a84c330Bfee691242113d", "10000000000000000000000000"], + ["0x2E79776460bf448B286874351AD55ef6DAF18102", "10000000000000000000000000"], + ["0x778C029675d3e2435Cf4C207E981D37c2174bec8", "10000000000000000000000000"], + ["0xE1176052966f14802BB3755bbdfcaA712B4708e8", "10000000000000000000000000"], + ["0x2165Ffc3b1c7eE4A618ecDf3D025625f30112E4E", "10000000000000000000000000"], + ["0x468cB54a3821d8b0129C42Ea6ADf12748d97fD98", "10000000000000000000000000"], + ["0x20F7C7E4b410af0D7309a04792FC22c7b4c7f46E", "10000000000000000000000000"], + ["0xfD6231A29661100e9F7E68d37730b040E24caD28", "10000000000000000000000000"], + ["0x187c77E1C74057b5Ae98F90B45E4303Cb7361C76", "10000000000000000000000000"], + ["0x1791Ef76A0b0451457B244B2D2FE414237992cc6", "10000000000000000000000000"], + ["0x3a1ba4c78f6277f51ba365a532812d1703c2c7ec", "10000000000000000000000000"], + ["0xeadb2be9a7123966214f3fef1ae19a9f38b0220b", "10000000000000000000000000"], + ["0x8afcd932c015955eb3177f865b0f91e3f122b3ca", "10000000000000000000000000"], + ["0xbaea24e991f0723f845a08d3e299dd6f739285ef", "10000000000000000000000000"], + ["0xab21d8ab61a99e75641466a6bd0a480fee3e4696", "10000000000000000000000000"], + ["0xd6ce913c3e81b5e67a6b94d705d9e7cddf073a7e", "10000000000000000000000000"], + ["0xa4fc358455febe425536fd1878be67ffdbdec59a", "10000000000000000000000000"], + ["0x8437a6bf9235fd003d50cd4024fa7ec6979208d5", "10000000000000000000000000"], + ["0xdd6c35aff646b2fb7d8a8955ccbe0994409348d0", "10000000000000000000000000"], + ["0x59e83877bd248cbfe392dbb5a8a29959bcb48592", "10000000000000000000000000"], + ["0xf8e7e3d15f4b46eeaac1143ac1391a4f82a750a8", "10000000000000000000000000"], + ["0xd11ad84d720a5e7fa11c8412af6c1caa815a436d", "10000000000000000000000000"], + ["0x5dce3cf1bbdd8fee714cf7ec1f00b817cbcf2160", "10000000000000000000000000"], + ["0x72a40e1681bec3811a7d91a0966cce618fadee42", "10000000000000000000000000"], + ["0x4b0ddf4513d807553695d13c195170cac50da9ce", "10000000000000000000000000"], + ["0x403c2d4099179e178a0b9860139f0284a63c8690", "10000000000000000000000000"], + ["0xa21392dd4b12cb543fb6d1e4e8759b3ac6e55169", "10000000000000000000000000"], + ["0x4553ed5d8d3731e629f67bd86abd021175f31848", "10000000000000000000000000"], + ["0x21e05694383dd7582c0e5bae41f780fb46a4d09c", "10000000000000000000000000"], + ["0xab0df7a6282cf7967c07268775c252aa4317a116", "10000000000000000000000000"], + ["0x6f7bf13e057305d04abd72e637e491cc30569f43", "10000000000000000000000000"], + ["0x9fd1b607684361533a70184f90cf239fd41d4a6e", "10000000000000000000000000"], + ["0xd287ce3a79eab4574e7d7dcea80dcf74374e461d", "10000000000000000000000000"], + ["0xde4d9f976ea868147df16e829e13c3f5565c2760", "10000000000000000000000000"], + ["0x7dd17c10f9dfe26f335360dfc00f85fa7323d5b4", "10000000000000000000000000"], + ["0x83e8ff54a46f1a3ec12407d75f810b1c31a8f669", "10000000000000000000000000"], + ["0xed9692b68b9c66e88cdc68c15fd16bb7b266bedf", "10000000000000000000000000"], + ["0x07d22cd5d483b1242518d5cd26b21b552f0cfcdb", "10000000000000000000000000"], + ["0x954f1ac51131cffd7985ab5bba78cf2f643e050c", "10000000000000000000000000"], + ["0x80be2689bcfdf04f4893cb76375e04b2d7d727c9", "10000000000000000000000000"], + ["0x420df34795f8c583f0edc2c618d4fc7e612bc202", "10000000000000000000000000"], + ["0x47642347c9731e9fc2470cc393373b95e8c0d730", "10000000000000000000000000"], + ["0x6d5de6cb1e6ae08986dab1407333e3c3f8e7cb94", "10000000000000000000000000"], + ["0x1c1f37636b0ca65ff03afd123b60d2e4fda961e4", "10000000000000000000000000"], + ["0x11ededebf63bef0ea2d2d071bdf88f71543ec6fb", "10000000000000000000000000"], + ["0x5ffc335ec2fadf0d61a466f7a1ebc738a7d1fbdc", "10000000000000000000000000"], + ["0xb2e7d71432001a0eb0fcbd4d32ba66439d413bd1", "10000000000000000000000000"], + ["0x2556ad9687048bec195221cada3699a1cc249b0a", "10000000000000000000000000"], + ["0x4d883824258f7253101f266a23207dcb2dd45768", "10000000000000000000000000"], + ["0xf52e6269393144b636b17c73eeb00057106af6e9", "10000000000000000000000000"], + ["0xbd87efbd4b883a969b646045dd9a3661468ecc23", "10000000000000000000000000"], + ["0x91e6b73b4270832829a9ba986d3beab57bfff4f9", "10000000000000000000000000"], + ["0x21ff5b95839790bb88a033a543e7077e67f9e7a4", "10000000000000000000000000"], + ["0xca0bc649c84a982935b03b0e27fde5035d921f34", "10000000000000000000000000"], + ["0x3d8648ddcf10f0dede9ac8d49857abd564cd56f8", "10000000000000000000000000"], + ["0x9b6ca74030bdb7f2be2d4109def9e5c4ea316eb0", "10000000000000000000000000"], + ["0x0a7a4e9bd0d88ae882fc823a85cbf50683f60e4c", "10000000000000000000000000"], + ["0x14786310da605118e09b20079b1bacf3e6bc499a", "10000000000000000000000000"], + ["0x00a7e14d75a339c080da5295fd0176d02bf9a74c", "10000000000000000000000000"], + ["0x29bbf77899bf371b9ce9bb9d2fb7f1325fe198f6", "10000000000000000000000000"], + ["0xdd59b334751e7a86bda7efe96b93a5f760e33f2f", "10000000000000000000000000"], + ["0x190c6fc3121706b5d600de5de94c1a6c8055660b", "10000000000000000000000000"], + ["0x3dc13f21eb7815ea9b2fba3e2b25904beac5936c", "10000000000000000000000000"], + ["0xa1b0176b24cfb9db3aee2edf7a6df129b69ed376", "10000000000000000000000000"], + ["0x7cf70b2a18436074c518cd27d3f66615ffd73948", "10000000000000000000000000"], + ["0x42d17def388c0435073eff221a121c04002c485f", "10000000000000000000000000"], + ["0x41b9ba8b989ba0a1d73168278522550350df9e3b", "10000000000000000000000000"], + ["0x3a96850e2d38e2d0f8cac1bac3a175b7c7ef2661", "10000000000000000000000000"], + ["0x666666a0200c2b78eddd1ef279488c6a714f010d", "10000000000000000000000000"], + ["0xbf5ae133b9a0fc1a07952a7df2afa21f7f69ef58", "10000000000000000000000000"], + ["0x2c6de6e4c2b419c7d68b7ede3ac4030586c7b83e", "10000000000000000000000000"], + ["0xd76db662ebaf51dbee67a01c5241e8dd0399b0c2", "10000000000000000000000000"], + ["0x56fefd61bb9b10d8555f970de09ae1359c931035", "10000000000000000000000000"], + ["0x0000000000d1d773661e4b2102bbe07d4dcde777", "10000000000000000000000000"], + ["0x00000000b7ca7e12dcc72290d1fe47b2ef14c607", "10000000000000000000000000"], + ["0x000000000035b5e5ad9019092c665357240f594e", "10000000000000000000000000"], + ["0x0000000000d41c96294ccdac8612bdfe29c641af", "10000000000000000000000000"], + ["0x0000000000003f5e74c1ba8a66b48e6f3d71ae82", "10000000000000000000000000"], + ["0x7a4c092a03d9f962a67d7822afa652366dac9b9c", "10000000000000000000000000"], + ["0x8006a2b383f107039fa8b5e898c3309add480a60", "10000000000000000000000000"], + ["0x8763f5b2cdad1e27a09eecb949a8c41d4b54ca0d", "10000000000000000000000000"], + ["0xc8f59d3b127436cf6fc24170e42106518b6ea085", "10000000000000000000000000"], + ["0xcde2984ee2b18dbd33d7fb18d25202c13cb2e2d8", "10000000000000000000000000"], + ["0xd12defb3279003a6656023135edc975ed4d918b4", "10000000000000000000000000"], + ["0x8adace41ec579423f149d7402f282301fcfaff36", "10000000000000000000000000"], + ["0x712de1b0b10a53f7ea9999a3e861ec25358e33be", "10000000000000000000000000"], + ["0x51c0ac97fe85b5bfccb7f631b49a90b0cb75de24", "10000000000000000000000000"], + ["0xdf5a0469340f97beda65fce15ec7eb153e2aaba9", "10000000000000000000000000"], + ["0x859eb852e93ecc12f24790ab764f98a571b9757d", "10000000000000000000000000"], + ["0xd3b6affb1e8d3e115e1a6ad1ad8ce54fbe9927b1", "10000000000000000000000000"], + ["0xcf75a4a23afabde6938f4b28c33107e61f3d8444", "10000000000000000000000000"], + ["0xed110c981c05941aa7920e389a93e5c68028216a", "10000000000000000000000000"], + ["0x533a04903dade8b86cc01fcb29204d273fc9f9b9", "10000000000000000000000000"], + ["0xbc259c4f7a55b13f3b2d4e886c341a41fb9fe211", "10000000000000000000000000"], + ["0xe3075a08b7f42c0fb55b8546eb7170a6435531f3", "10000000000000000000000000"], + ["0x03b0a411e6329f446154b119209b1d385aa816e0", "10000000000000000000000000"], + ["0x4cc8c9a45b953a1922d8700e7cf4c0489d0b4154", "10000000000000000000000000"], + ["0xad5b555f1bcad54e85366697635b98e46358d2d9", "10000000000000000000000000"], + ["0xd685f9a87f5cbd534824bf1dea581a8de083f2da", "10000000000000000000000000"], + ["0xcdd22c828649c98dd9833f0ebe359dc5e79788b5", "10000000000000000000000000"], + ["0xee6c7834be4765496e94fd2cc2703d01d4895bbb", "10000000000000000000000000"], + ["0x7d29711eec0483299107b3c1093a60c161108834", "10000000000000000000000000"], + ["0xb4080eb64a6f303fae044713dbd5ae211ffda945", "10000000000000000000000000"], + ["0xf4e13d7c879fac90875900084cbe4b0dd98d698e", "10000000000000000000000000"], + ["0x09c75afa49a945c2b7222a1442e75efa184cd35a", "10000000000000000000000000"], + ["0xfc51089adf2e5ba5658f3e176c7cfff4a58a0dfe", "10000000000000000000000000"], + ["0x8fb1b269474bb69db9f5190b33c0d3751d1bef46", "10000000000000000000000000"], + ["0xc92486f92c88a951f97f137585a810df120a70f7", "10000000000000000000000000"], + ["0xd056020d84a35cd62115fa4666e0f10d7f83acc6", "10000000000000000000000000"], + ["0x193dad0127f564d973aba50b373db51fd2f2588a", "10000000000000000000000000"], + ["0x20e5e29c0c9a2c5f95508cc9f6c4ad1d224a4fa9", "10000000000000000000000000"], + ["0xb1f19df9cf8f3825ee880622a37edbba6b155a76", "10000000000000000000000000"], + ["0x1609bc551b38eefe1738bce85ecd46797082709a", "10000000000000000000000000"], + ["0x0866f8e82e7b9af1c0f74424bd7ded65ecd0a78d", "10000000000000000000000000"], + ["0xf47f42b1fbf477e89cb8f08815da073d287b973b", "10000000000000000000000000"], + ["0x6896625252cd1410425465bc0790e232aa7dd978", "10000000000000000000000000"], + ["0xe1ed8a8cd6160f7ac8d597b64ba8ce473577e585", "10000000000000000000000000"], + ["0x6e5f7bd9b940287f6c9ae8a2ecfb93224a09cba5", "10000000000000000000000000"], + ["0xa4a4d97cded9ad9727f7a5b58558bf30736156f6", "10000000000000000000000000"], + ["0x03894d4ac41dd6c4c2f524ed4417c90fa46972c6", "10000000000000000000000000"], + ["0x09a84adf034e5901b80e68508e4fdc7931d9a7c9", "10000000000000000000000000"], + ["0x9101d1990818065d2bf3f5ee9d658bf255a0475d", "10000000000000000000000000"], + ["0xc6ead34620572c0f1c5f27b92dfb9290d50a7986", "10000000000000000000000000"], + ["0x42c5d633ac3486115db8f5a23f7dbd4b0d259cc4", "10000000000000000000000000"], + ["0x12d5289b2081a257583de99a6b6b393150734e04", "10000000000000000000000000"], + ["0xbfbb6b0341f73380906cd4af13895360465fb53e", "10000000000000000000000000"], + ["0x815fcf7e300a21fc3097e995feeb56fdec925b24", "10000000000000000000000000"], + ["0x35ebf9baf1bb4e74fb2769a3fc93e431457c4d40", "10000000000000000000000000"], + ["0x4bca809a232d8805b80e5d186758b9df6e72c879", "10000000000000000000000000"], + ["0xc1e549320f048d8149d5b0cb9cb268da59f1f2ad", "10000000000000000000000000"], + ["0x0aa5973f2614dccfbe53c8273da22502d7e4fbd5", "10000000000000000000000000"], + ["0xae151eeb1e090673f0bf077254c5c3fe9911e167", "10000000000000000000000000"], + ["0x98098214ad5b1b08cc9d94e32f056e9a0de18110", "10000000000000000000000000"], + ["0xe2a16ddf313f188ebf8c45b46ea3ceebb05357dd", "10000000000000000000000000"], + ["0xc39a90d17a9f67f3a7972823bd371ba99b4ff9ba", "10000000000000000000000000"], + ["0xfb799cfc9b278f05559ba019d0ea1a5b0a3ef6a6", "10000000000000000000000000"], + ["0x46419f392a12611ed82dc7d4e8c6642de0e75c5a", "10000000000000000000000000"], + ["0xb3fa7b97f809ae5d006937c3db8c28f15edc7ee6", "10000000000000000000000000"], + ["0x46483f48fdf320b98700c7309270c0ad44f1d244", "10000000000000000000000000"], + ["0x50d89673639483f4d9d7eba8b3f999e102b6585a", "10000000000000000000000000"], + ["0xafe019f6f74880e4ab83211b39d8b278744f6e9f", "10000000000000000000000000"], + ["0xbdee16eeb6eb4b263f3dbb8d96bf47c9516c4848", "10000000000000000000000000"], + ["0x022110ad17cc7b923a9104912a8af8738722922f", "10000000000000000000000000"], + ["0xc1440f6c952862e39c84e901bf032ffaa9ec2fc4", "10000000000000000000000000"], + ["0x7bceb3338373cc3239cc4d326e936061b7563fd9", "10000000000000000000000000"], + ["0x8e61c5cafb9b6e44a9495f364a538aab068dc164", "10000000000000000000000000"], + ["0xe906889a717ce0f53f5f5a0c4f64f6407623d1c2", "10000000000000000000000000"], + ["0x2bc8d75939444db20669df1c0d1ba7980b25ed72", "10000000000000000000000000"], + ["0x35ff839c553611b5552dde6bef183892aab324ac", "10000000000000000000000000"], + ["0xe07b9539d2451a2b9bdfbd92dd3f149375b080a4", "10000000000000000000000000"], + ["0x7816de01faf651f085dd9184f600faaa65a592dc", "10000000000000000000000000"], + ["0xefe9b7bb49cbc970a502ff8d54fc8abead1be40b", "10000000000000000000000000"], + ["0x93de650c5758322449ba8990a5e072ab37cfcc0e", "10000000000000000000000000"], + ["0xedae54ded7e6b721b7c233be911d7a5822d7b436", "10000000000000000000000000"], + ["0xb3de73d12866e4b68bea36d02519d7d565c005f9", "10000000000000000000000000"], + ["0x45a5f6c9372ef4644f5c45dab0b1a7619f4cf981", "10000000000000000000000000"], + ["0x2245be89fc8fab94ed982e859aa3212a4e4eb7e5", "10000000000000000000000000"], + ["0xb3d68e6a107695562ad87d6a656ee63a910a86bd", "10000000000000000000000000"], + ["0xc5fbc6a76a4b462911787529f144561cbcde165a", "10000000000000000000000000"], + ["0x4617628f76c30e9553189c034dc6f4055798f406", "10000000000000000000000000"], + ["0xe261b0606dd815a7952994c5c60c88040a316692", "10000000000000000000000000"], + ["0x72f55b96e746075da2932a5518251aa641f79e4d", "10000000000000000000000000"], + ["0x500e5eb0cf12736f237604bb90ee996a24def620", "10000000000000000000000000"], + ["0xd5a191afe4c240f2ed31049aacaf5eba4112e041", "10000000000000000000000000"], + ["0xc35f4f66ef059db7fd47e7c9e6c2ca0020db8f7d", "10000000000000000000000000"], + ["0xf02a62c2f98b0d2dadc1a234f0d1b2b2937a5f62", "10000000000000000000000000"], + ["0x46138b3b33f8a716d68f39c57c98b56ac0a8f85f", "10000000000000000000000000"], + ["0x1ea1f14ae49d530b3963d5191792c1465bce4329", "10000000000000000000000000"], + ["0x2133287f2f85b21ae14674a1f1b5c88ed75ecdcc", "10000000000000000000000000"], + ["0xb2f456886367c8e50566377ec6d9293d4da5bb81", "10000000000000000000000000"], + ["0xc72d73222f0ea792287746420fec94f35d84208d", "10000000000000000000000000"], + ["0xec24ea9ecb4c1601399c64e8d7abaf46d68cf494", "10000000000000000000000000"], + ["0xb2dfffeac59e3f836abc893440f847f20f563bbf", "10000000000000000000000000"], + ["0x697ec55dc3fac5bda4b296a1b7c098899b828a7f", "10000000000000000000000000"], + ["0x66f322df0f7c9876b504b7e4ea1a564d895e88e5", "10000000000000000000000000"], + ["0xe3695c0e7284e173387c8a0f822e46c30714cb4a", "10000000000000000000000000"], + ["0xd87bbf3ad63007664d2a59ef71be2b5fb48ec293", "10000000000000000000000000"], + ["0x34f0c3c7614f134c4101ea78f318c311c0291435", "10000000000000000000000000"], + ["0x877a05fc102f5b0485ffd9ea390c6343b1d5d850", "10000000000000000000000000"], + ["0x83ec0d66b71817de7c927e9db3ea4e993466af26", "10000000000000000000000000"], + ["0x1c7679cf155d6df0523743bc4f26f4a08b6a7daf", "10000000000000000000000000"], + ["0x092e6fef0f3c8289d257b651d50f673241aa2a0c", "10000000000000000000000000"], + ["0x93d1caef0ce3633ff54ca04c99b235719562c3cc", "10000000000000000000000000"], + ["0xac95e9dec056835d88817a8a59a06b1667c515d7", "10000000000000000000000000"], + ["0xe121443d78019ab37cda3d3e868fd2c487ec2a42", "10000000000000000000000000"], + ["0x6ff97e9c4236761ff003c7761134252e25a3ca71", "10000000000000000000000000"], + ["0x7df1a25fa00989566bd9ae3a3cdd80d5d571e1b4", "10000000000000000000000000"], + ["0x8e3960ec34da976ea4550531d35ef1a9221258ec", "10000000000000000000000000"], + ["0x2f50cf82bf670dff6bf41ae1f62df193fe5c2755", "10000000000000000000000000"], + ["0x452e99c306c63c1264012bf036df034a8ee4b7e2", "10000000000000000000000000"], + ["0xcd44aa80d4ed8ff6f98ce0256ea056965752d61f", "10000000000000000000000000"], + ["0x6c8f072c7a385cfd1ade39f56c3002952ce1e459", "10000000000000000000000000"], + ["0x88168519dba7e4957246f2179980a54cbb43d29f", "10000000000000000000000000"], + ["0xfceebfc42775d38427c4078a9d1a8160b6ff9a2e", "10000000000000000000000000"], + ["0x527e55577b6b0807f8b45d2bf0187cf9f690d15a", "10000000000000000000000000"], + ["0x4683928755319691003dff88e14c595b14730022", "10000000000000000000000000"], + ["0x111cd92405b1dfbd19882d361418f49d99d8fed8", "10000000000000000000000000"], + ["0x76a9fab29d56ce1b259f75a2284ea809fff14fa2", "10000000000000000000000000"], + ["0xad44b8380d76f0b4cce74743c5745ff79ae859f9", "10000000000000000000000000"], + ["0x67505aaf91258a086da665fafdeaef7de9d971bd", "10000000000000000000000000"], + ["0xfabd45734e66b7cb619d154496d1e675bf3c802a", "10000000000000000000000000"], + ["0x238296e3ec62a9cca297f02a33b7cd310f0f63be", "10000000000000000000000000"], + ["0xc18a0029637f1803dc347761cd10dd3b5c7a7ef5", "10000000000000000000000000"], + ["0xa28e586e24e6d78d05e822188ddc118ac2fb034b", "10000000000000000000000000"], + ["0xc977e7b16c33cf122302d5285247da09a460dda1", "10000000000000000000000000"], + ["0x0b7b72a26780a8ac9cd5ed6d4bb6c3a741158fc3", "10000000000000000000000000"], + ["0xccd902ed10c711a8b2d0e916239cb016f23efb13", "10000000000000000000000000"], + ["0x2738f6cbddcd604979aa1909d6c72d285e588a32", "10000000000000000000000000"], + ["0xf26415fae6e4765060541f8f1b329568015b184d", "10000000000000000000000000"], + ["0x8ff04dbcf6633de5570a07b32f015a3d4138dc73", "10000000000000000000000000"], + ["0x60f84a94673d3802588ebcaf494da34e1a636067", "10000000000000000000000000"], + ["0x3678f32be7a9998c61ec05d940a9f3a0cf70d4a8", "10000000000000000000000000"], + ["0x3d85684b413f8b30d677d849dc3e24cff184efbc", "10000000000000000000000000"], + ["0xf251efb1d2f28204b2cd77ff30e9dc7564adfafd", "10000000000000000000000000"], + ["0xc40d5980f1c46b32c17d4694214488997411a3b7", "10000000000000000000000000"], + ["0x98006832cd6d49b80a317ae5f84a5049a954d31d", "10000000000000000000000000"], + ["0x82fc6a686c5db9b41f58fea5a8ce4c1f6062e5a5", "10000000000000000000000000"], + ["0xf63e2d56e42bdc66ba3dac234f48ef24d53c4e57", "10000000000000000000000000"], + ["0xca9b1442ee47083a3a2eb06853def92f30e8d70b", "10000000000000000000000000"], + ["0x0a8499633c25a9207efe48fbcdf80a51f9a5c427", "10000000000000000000000000"], + ["0xb98cb808991fc151a7dd0ee967d60fc4766dcf57", "10000000000000000000000000"], + ["0xb19be18a7d279432f607676acd34c62ff932daba", "10000000000000000000000000"], + ["0xf204c7c87ed81a78aaf98c4a908190a5044a3baa", "10000000000000000000000000"], + ["0x8cc4264361216b9e3ca4d764cbf317c0c746780e", "10000000000000000000000000"], + ["0x2c5651d9c4d9a9031ff789845f2d44c82f194033", "10000000000000000000000000"], + ["0xcc4aa092e8fe6e64763ddf1bf52ee661cdbca217", "10000000000000000000000000"], + ["0xa1cc1d2de52706ae895dba1852689d8d03708f3b", "10000000000000000000000000"], + ["0x0f8dfda2cc073a6160c03ca856bec0f376e54440", "10000000000000000000000000"], + ["0xd255391dece0185504219f96e6b2a7465bcd24e0", "10000000000000000000000000"], + ["0xdb461dd202c8cbc96cfbeb65ceb6fc6b0e618a41", "10000000000000000000000000"], + ["0x9ee5dd588712241236ce514c234cc18256200fa5", "10000000000000000000000000"], + ["0xb335175efa2f4bd897cfd3e4e60b18805261f021", "10000000000000000000000000"], + ["0xfaf09c4d3213fb8d0ee7f8cc6f11c6248a213993", "10000000000000000000000000"], + ["0xbf06bc4dbeb472c4320823467143375a53713cad", "10000000000000000000000000"], + ["0x6fe797a05359c9d91b1f85d418e2ed4ea6c65a8f", "10000000000000000000000000"], + ["0xbbfaf36dd3159628489f42c7bbc6e058fb9b18bc", "10000000000000000000000000"], + ["0xc313cfce5eac941604d6f10bd6afd0a562bce37a", "10000000000000000000000000"], + ["0x7d81510ef626292f361e97708b6a618cae3ceead", "10000000000000000000000000"], + ["0xa51add0a3ad07fd3f69a06082765b0d112914c8d", "10000000000000000000000000"], + ["0x41239bf909cd4f138990575cd1a34c8efddfab68", "10000000000000000000000000"], + ["0x432cbdce8596e8d5eae91e0a744909672c587681", "10000000000000000000000000"], + ["0x48ba945370f6de589f45307233bee6772a1abc4b", "10000000000000000000000000"], + ["0xcf3dc6107a41911d39104bc06f62b5835511d6e8", "10000000000000000000000000"], + ["0x5d59d5f366689486dd493a90d0d7af142aefe0ba", "10000000000000000000000000"], + ["0xd9458d4518322bad7423858d356043596edee347", "10000000000000000000000000"], + ["0xc38f9eac4df539c1e611021c062863e3286e6806", "10000000000000000000000000"], + ["0x8f6c5455b4879117d29710c9cc61f8d6fb76ec0a", "10000000000000000000000000"], + ["0xd81e2cb9394b399d6f08c69637adfea1e3634103", "10000000000000000000000000"], + ["0xb2fc53f237cf2d72a8b7a6589bb72b9711552c90", "10000000000000000000000000"], + ["0x04cc796ea4f9b9682c3f7a31c81d947530b72f70", "10000000000000000000000000"], + ["0xebd59c8a39726591982e8e2104ec3d04c9f72146", "10000000000000000000000000"], + ["0xc45317b15633bbc021af594890e21e630b85727e", "10000000000000000000000000"], + ["0xb41707d73b2056882f0ed732893202f018855cfe", "10000000000000000000000000"], + ["0x2e457454ea91f413b743ded4d1a19be20d74aa60", "10000000000000000000000000"], + ["0xbc8ec6306f447a9768da5f91ccf79a0cfe76f0bb", "10000000000000000000000000"], + ["0xde415a33e0e99414d6870f8cac6d134641c28582", "10000000000000000000000000"], + ["0x00e484da1156202e9dd341ad7ea9c908bb919e96", "10000000000000000000000000"], + ["0xb18bb39014a720b060a85390332453bc2ead0a1b", "10000000000000000000000000"], + ["0x7b96526a9b6b8a895dee2f805b053bc3c8c2499f", "10000000000000000000000000"], + ["0x0f4b0ae3b27f404d6aedc3dd08320179070a38fd", "10000000000000000000000000"], + ["0x59e62fee4888039c5edf467a7c210b5cc1d449da", "10000000000000000000000000"], + ["0x51a23f481037ca208086f42fe83d28b71c1ebc2c", "10000000000000000000000000"], + ["0x98d0e5a9063c05bc36a14c01f99f41b354d53bf3", "10000000000000000000000000"], + ["0xc106905443d60547546e9913055c297b7bb9c481", "10000000000000000000000000"], + ["0xe857c6a64db58da249231351382ef26b7f576557", "10000000000000000000000000"], + ["0x5efec2646eb5d768dfa12c9943ee2f1cc458913b", "10000000000000000000000000"], + ["0x1ae86593387e4fdd53b9ff960a684793cf515292", "10000000000000000000000000"], + ["0x18e0f8930d743d1f45904f420cf8a23f73e4f4b7", "10000000000000000000000000"], + ["0x9d64f2cd1e442b379ade1f8c2a6bd7db84681e85", "10000000000000000000000000"], + ["0x3238934316238ebbda1ffb229ec9a37bf66c5564", "10000000000000000000000000"], + ["0xb362074efb3f8f294162a9692c2d834b31833e23", "10000000000000000000000000"], + ["0x8193a6d86f1f93639a9aeef18a24d5f92fc10285", "10000000000000000000000000"], + ["0xa35010a4055e9dab4a7308d7f83307771d57fc7f", "10000000000000000000000000"], + ["0x8091587f4dd6019196e89fe82a5ee40400fa8bf9", "10000000000000000000000000"], + ["0x8bc0fc5b31fa30266a3dd81753be66ee4b62a7f9", "10000000000000000000000000"], + ["0xd1a122e10e270582844d3d9f1153835f8aae5054", "10000000000000000000000000"], + ["0x3930d9d8b77069ad62c4a1b5d943c1545f1e3a96", "10000000000000000000000000"], + ["0xde9a570afeca6f1fefc7edc7c41c8aebc5eb5b65", "10000000000000000000000000"], + ["0x6f1d13763c581dbef3842595a2aa5b7b9e7ae4ab", "10000000000000000000000000"], + ["0xe3f1ca0e4234d5c586379818e9c47acbe4ad6d73", "10000000000000000000000000"], + ["0x8bc85e6ce33a0fdac6b295c52a1c97cb1b122ea5", "10000000000000000000000000"], + ["0x26c5376bcb8452b81bebddbc275e2a313a54a9ad", "10000000000000000000000000"], + ["0x04b55fe6fda3fdc46e10e6d3ceac1f69b1b09274", "10000000000000000000000000"], + ["0xd9464b951523d6ff53cf9519983c250e7b4742e0", "10000000000000000000000000"], + ["0xf3057ebf7e6e86afa7868ec09afa611945ce6ae0", "10000000000000000000000000"], + ["0x4467141db06d5ea8fb2a7b718f7534298aaf0c21", "10000000000000000000000000"], + ["0x1f276d48171bc17e12ecbf076e8b5867aae8f98e", "10000000000000000000000000"], + ["0x51684f4ad0937a3b59b19a6284be73af032ec516", "10000000000000000000000000"], + ["0x41be02b00c813a1de79385a5dcb0df2f2b9147a5", "10000000000000000000000000"], + ["0x047979c54cb43566111aa9f6f1c560df9532cc34", "10000000000000000000000000"], + ["0xd574466cbf972bd07f99f57c885a86bde04a5c57", "10000000000000000000000000"], + ["0x2345201df04fd175113b95898e1b0ebc1a36e36f", "10000000000000000000000000"], + ["0xb2612f01a0837e08844eab677a6d9643201a4a0f", "10000000000000000000000000"], + ["0xd72eee7dd4fb7ec80cb60be9d6b7238288bd3ba5", "10000000000000000000000000"], + ["0x7c0eed74d4e818dddf82bbbc378cc3283502d87e", "10000000000000000000000000"], + ["0xbc963b5bc8842b9d2961f3187da4e9ff3583f483", "10000000000000000000000000"], + ["0xeef0d258918ade7cd0c3a089b8f2e08304043b7b", "10000000000000000000000000"], + ["0xd31b1b35ec8b89d648d4b1f7f96689a2d5b0d2fc", "10000000000000000000000000"], + ["0x5d620183d5def4b09f4397b8407a397466559d80", "10000000000000000000000000"], + ["0x5242afde24b8487c8b3523d258bbf6e334a7ba5c", "10000000000000000000000000"], + ["0x5f2922c51b7db86f680268bef147a7626e43f450", "10000000000000000000000000"], + ["0x12c88b88326874ab2e44051e14d1c9c2446947d6", "10000000000000000000000000"], + ["0x3d5f99c5d6c3b012f4731815118f897c14e4e07b", "10000000000000000000000000"], + ["0x2ce2c28fb6105f8d7b38263edc29ba101cb2f772", "10000000000000000000000000"], + ["0x35f382d9daa602a23ad988d5bf837b8e6a01d002", "10000000000000000000000000"], + ["0x20e0e86d92cc1a6ab6aa3c1b7b28760477a8d29b", "10000000000000000000000000"], + ["0x1a7138fc2992a04e8f13f5a9c0116787259c47ae", "10000000000000000000000000"], + ["0xdaae758a8a60e97f1ccb14ccaffe487acd31d0b9", "10000000000000000000000000"], + ["0xb965d68052b849b29fe25497c51659bf9678bc9b", "10000000000000000000000000"], + ["0x614572f25a619926d52b94af861608d9605119b9", "10000000000000000000000000"], + ["0x151b2b565011f7b93400990abe73429494c2f2c9", "10000000000000000000000000"], + ["0xf3c51aaa4fe7c62e762dfadf52499e62c5408010", "10000000000000000000000000"], + ["0x8fb2a5d8736776291388827e9787f221a1d3633a", "10000000000000000000000000"], + ["0x2f19b1cc0f6d291e5ae74e43fd3f6a5d1661f7d2", "10000000000000000000000000"], + ["0x4468b3584979063722a160257b31642c1e9d9a57", "10000000000000000000000000"], + ["0x5e3a2f3b7f30683ca294b7d1afe8936116228f40", "10000000000000000000000000"], + ["0x492059918a8d8c9435768b56ec848062e6a27bc9", "10000000000000000000000000"], + ["0x0df49e55fb107d036d3ece1da035cbaeeecc5dc4", "10000000000000000000000000"], + ["0x56b93a4717e47829520b5f0da10c5fee04b3ace2", "10000000000000000000000000"], + ["0x7d0d0e6c6b57a116429ab14d08303e8f71b452f4", "10000000000000000000000000"], + ["0x3e790ac4d142f867c2880e3c42304353192ff87e", "10000000000000000000000000"], + ["0x40ea5001129509c4cb3ac25c30e3d318bc7388fc", "10000000000000000000000000"], + ["0x634c90af94eea55a5eafcf7d81b3c415bf2b1d50", "10000000000000000000000000"], + ["0x802fb4d3059f69d9a59f6158ae6fde5896d23b2e", "10000000000000000000000000"], + ["0x41c98dbbfa1900e46e37a028d404124e03d60192", "10000000000000000000000000"], + ["0x6216f2b6eb479969013e3bed0b25cfd5dede29d4", "10000000000000000000000000"], + ["0xc9eca061745c057c047c083e2f309598b5412018", "10000000000000000000000000"], + ["0x1b8268398f42d775a5592312b54601031b0629d6", "10000000000000000000000000"], + ["0x1b4ef3e3ae9c60f8e8b0b6a080773d274126294c", "10000000000000000000000000"], + ["0x3cf807b5f994f2860f44860b2e3221847f4cffe2", "10000000000000000000000000"], + ["0x24668bf7cf97145a7046eca265cbe375c27e2e8e", "10000000000000000000000000"], + ["0xdb1e5883d636ecb81eb7dfb111e7ba5fc1f4f2f7", "10000000000000000000000000"], + ["0x53cbe65000bb66f5291a3b819817959e4ed702ce", "10000000000000000000000000"], + ["0xd4e1f6e0d6b121253bb08b3246d9458b13c5d92a", "10000000000000000000000000"], + ["0x2b404f693fab1a348cc202f2bf0d30b61ef845d0", "10000000000000000000000000"], + ["0xa4c7a84624feb966df8e8559e53f67c367498b45", "10000000000000000000000000"], + ["0x814be1893da48c6955ce5dd9edf0af847f6a0344", "10000000000000000000000000"], + ["0x6431616a013198a7015ee181ec5bd88db65f6e8f", "10000000000000000000000000"], + ["0x847eae52fe226fb5db6449c290493c91397184e2", "10000000000000000000000000"], + ["0xeace932fa48018c7cfc9bcc8e5399a77c4b73c7b", "10000000000000000000000000"], + ["0xfbc6f3db7fd32a2c67e68dd499b0358e42a91793", "10000000000000000000000000"], + ["0xe8676497f39e31ef373ca2af659c34aee93db732", "10000000000000000000000000"], + ["0xe54e33a39643d5ce792da297ff7ed612397820a9", "10000000000000000000000000"], + ["0x95f389b6a7ecf523f879459968594a738f8a7b99", "10000000000000000000000000"], + ["0x72fa5121368a922c9a259a601b4474eac12a8a10", "10000000000000000000000000"], + ["0x829bc14065efe75860aa947854ff0986063017b3", "10000000000000000000000000"], + ["0xca7600dd571d1380229918c50a9ccdc38829dd09", "10000000000000000000000000"], + ["0x8351b3bbefd26f05aa286380c57b27d722738110", "10000000000000000000000000"], + ["0xe26211851e76370091004bf543121e967a56a0e2", "10000000000000000000000000"], + ["0xd141be396359910cd3c760d35ae77643eb18c56d", "10000000000000000000000000"], + ["0x36079e5ebf26b77a5816bc8bc01024ba7e82fb50", "10000000000000000000000000"], + ["0x5df451ad02e8d91cb8b767d9082ee559b9a191b9", "10000000000000000000000000"], + ["0x00d9947f78df8abb265207538d496b25c89b5f72", "10000000000000000000000000"], + ["0x69c3541fd1eaa0da10cb8a40c5d45f2c9cb591f4", "10000000000000000000000000"], + ["0x40984ccaed62be93e9d773075defc0cebfc1474b", "10000000000000000000000000"], + ["0xf0b69f6f8ddd43ef0b35ab4070319d83a5528aca", "10000000000000000000000000"], + ["0xc0c08f6da70b0123aa07021461d2735e9987898b", "10000000000000000000000000"], + ["0xa96263a9aa77327536f029dff4d6b476f9c7df49", "10000000000000000000000000"], + ["0xdc53bf946cac35301ec39bf58e85da82f82944d2", "10000000000000000000000000"], + ["0x4e36d25114edb822900baf3bee7792bd70b92202", "10000000000000000000000000"], + ["0x7002c4c3a0c5dd007cd323ce1b43d128d04bd63e", "10000000000000000000000000"], + ["0x0bdb3e3479313e0a970fad4a12bf9175f2acf5eb", "10000000000000000000000000"], + ["0xc1663f28ce0aa93391a150743119a55d1ac1f470", "10000000000000000000000000"], + ["0x8cf0f4f9e131c0fd8996c723fd2920da7debf5b2", "10000000000000000000000000"], + ["0xb4dd128deabd371f2bb177f85ef7ba77d34a11d6", "10000000000000000000000000"], + ["0x789ef5f417efeb7ab14faa0a36eba98a5ee17273", "10000000000000000000000000"], + ["0x62f7c9e6cd838e5f48d4083f08b97d05b31418bb", "10000000000000000000000000"], + ["0xee4901320fccb9081a8814f888c926d83d306f1a", "10000000000000000000000000"], + ["0xaa6f31632b95a41acb3355caa7c9124806c4dbc5", "10000000000000000000000000"], + ["0x194f0fe6d4dfbf198868b1b507cd74122fbfebcc", "10000000000000000000000000"], + ["0xd82ced87a3fbc3d86793de2473d2dd19bec8c75b", "10000000000000000000000000"], + ["0x66f18019715410c94d8882cb57ed0f2ba432fb39", "10000000000000000000000000"], + ["0x05307009064d09ff1c2e7186fe6c19eb7e14c1a1", "10000000000000000000000000"], + ["0x8cc1547f2aebbbaa9466310355110427449a937f", "10000000000000000000000000"], + ["0x3c3fe2b5159fe58d83041472bdf6fe6a4ca1e3f7", "10000000000000000000000000"], + ["0xfd1192199e9084b39cfba0b5f41f7158505dfa10", "10000000000000000000000000"], + ["0x250a7b43dc0a2a0ef12245466095404ab09ff885", "10000000000000000000000000"], + ["0xa50e1f41b6ecf5ed5be029ddff62ea306d756291", "10000000000000000000000000"], + ["0x8092de26142e0287a2b6ee4e0c622f43b353e29f", "10000000000000000000000000"], + ["0xebc7e58735280478eadb480f7584c79ab955b094", "10000000000000000000000000"], + ["0x9dfb83c79e4b6f23ac5e2b9a6d084b0c7b8036e1", "10000000000000000000000000"], + ["0x388fa28e670f0dfd15833e3a1ab71a728acd1b50", "10000000000000000000000000"], + ["0x87195fef2b399b91d0e7ecc249bf857d69a8eb45", "10000000000000000000000000"], + ["0x6f15aa54a9370fb5a64291499b77650d5f3882fc", "10000000000000000000000000"], + ["0x3dc76149f2f0f68cecc124e32eae0b67221d6dbb", "10000000000000000000000000"], + ["0xcbf7d1c2012629e4689f6c2ca10c4e3a7ce1a75c", "10000000000000000000000000"], + ["0xa1a99f9fe000022ccd1d373ff83f5c254cc2fbf6", "10000000000000000000000000"], + ["0xa08c19ade8180c14d05efa461df4768d4281e3d6", "10000000000000000000000000"], + ["0x5a3b0da8f36ee9b5416413fef39a951d7d821345", "10000000000000000000000000"], + ["0xd20871ee995fca59a92c397a73a983d18c3566c2", "10000000000000000000000000"], + ["0x864ae3652e31d2b7991ee6d267c3b8b1f3bc2e76", "10000000000000000000000000"], + ["0x01b5f0a5df18abd3155d717217839a5aeee3f30b", "10000000000000000000000000"], + ["0xd5ba426d7d05a9da0cafb1b1b13f3e7d71621c23", "10000000000000000000000000"], + ["0xfc442a70f8f4e3d436f1cf8d666d29aa02c3594b", "10000000000000000000000000"], + ["0x4baf591f801e7dcc74c04de25c501d2afdb2f847", "10000000000000000000000000"], + ["0x57c9f224b2f0a2bc8007f17324088105d1dfbc01", "10000000000000000000000000"], + ["0xd1a59dccb20ee4750b4840eaaa2b8a3796581dcd", "10000000000000000000000000"], + ["0x3bff29408eac8569d0dc8c936e6b55f71a5f3397", "10000000000000000000000000"], + ["0x60f79525ed412211ff056bb8837fcff41db3785a", "10000000000000000000000000"], + ["0x49ef15fcb17a1d73abfeb1c847ad6348144367d5", "10000000000000000000000000"], + ["0x6e6d814ddb9ab9056bd58de9eea3621f01ee69fa", "10000000000000000000000000"], + ["0x49531aecfcd467f728bf951556bbe0299486840d", "10000000000000000000000000"], + ["0x2aa0136e55157cf1dcf8fb3b5d316e068638f9c8", "10000000000000000000000000"], + ["0x81adfa0309a1629f68db6a6cff37a1fe68ffdd2a", "10000000000000000000000000"], + ["0xfaca05f09ddba223f2d7596d563277219fcf8884", "10000000000000000000000000"], + ["0x56652031d1c38d176e627a12e40eaf0357d0f453", "10000000000000000000000000"], + ["0xb4b24de3ab5004a33909a4602d744967eca18d28", "10000000000000000000000000"], + ["0x30db929782c3d15d0424cfb1173a424f183278d1", "10000000000000000000000000"], + ["0x6a316f344bda31e6687173c97c839c7160dd2cd1", "10000000000000000000000000"], + ["0x95ae952b0fcbefd6c1013142420641d3c8143b3d", "10000000000000000000000000"], + ["0x787fa9a8c6cc1aa8f11197b703d39a17a2e4842b", "10000000000000000000000000"], + ["0xf25e635a9f35c97df49c52637eddcdca64259ef8", "10000000000000000000000000"], + ["0x7e3df6203b66cd77f724e3d52f7fc9597ebf5640", "10000000000000000000000000"], + ["0x74c8f1f3a5b9f684c393a30ecb7dbeacd00273ef", "10000000000000000000000000"], + ["0xd6e80ee9847a29ae1beb60abbbe1f659ed12ef96", "10000000000000000000000000"], + ["0x6e93a65f1688c69ea36c59579f0d25c9a1f010dc", "10000000000000000000000000"], + ["0xec992491159d31e3764f5e8be3fd3fdf6b805fd1", "10000000000000000000000000"], + ["0x40fd33f8006434f758ecddd42cf6feb0a8ca1d0f", "10000000000000000000000000"], + ["0xdf90663d8cdfbc463efa6c8ef85a05671c8b2e73", "10000000000000000000000000"], + ["0x3b687a0ae6a2f40aaea75428e26aeb89ba382c01", "10000000000000000000000000"], + ["0x914c4c2d50ebf786f16dcdafafe385b74a8d6f7b", "10000000000000000000000000"], + ["0x54b86d3f7bca92952b38cf1073407e302a12ec33", "10000000000000000000000000"], + ["0xcd6622b78b16ab217809f6089c410442a84869e6", "10000000000000000000000000"], + ["0x711a71e1873988f8da861e57b01a7838b8068b93", "10000000000000000000000000"], + ["0xed159585fc50f449b1b2b8bfcb6460b19b69d5fa", "10000000000000000000000000"], + ["0xc1cf75ddc9e07a2cef8b87b89e5170fd7351a602", "10000000000000000000000000"], + ["0xf5da0a103d57eaaad5c1bae57f128f3763a9f639", "10000000000000000000000000"], + ["0x111b46246ba9bf46ef15dca39ab7775897271951", "10000000000000000000000000"], + ["0xc0d3a8d939d8653f0fd8fe7a0646dd3884293466", "10000000000000000000000000"], + ["0x168881a4eea012a46eed7f3f2ab3fda2ff4bdd47", "10000000000000000000000000"], + ["0x1672f36ee969205ee8a41b1124e35d1252bfcbeb", "10000000000000000000000000"], + ["0x7fbedf9c6c6c63ea734286450060d9804b4df146", "10000000000000000000000000"], + ["0xb41e620f88c54d91d8945c91cc31bd467c012696", "10000000000000000000000000"], + ["0x8b379dcdd35a15d98dde096e294d2eb3f6cfe312", "10000000000000000000000000"], + ["0xe8489f4013f7136b78fb773562ba8418377869ac", "10000000000000000000000000"], + ["0x17ece12815f614ef56ab298f29a9758b36059862", "10000000000000000000000000"], + ["0x97963d547b010ee36faab9cb4c16305a9e0974a5", "10000000000000000000000000"], + ["0x2a0302b11111f0c4fa9b4e10f12486a2534370df", "10000000000000000000000000"], + ["0x2b0c5830da5312b5f35fa811f9852c0da21b93b3", "10000000000000000000000000"], + ["0xfd57270723f8849c751d456e0dfd39629a7b0455", "10000000000000000000000000"], + ["0x5a6e92e35e332ac4e51ddd0448588c16014f400e", "10000000000000000000000000"], + ["0x31124bb5d59369d2fcceedecda1340d5d065a7a3", "10000000000000000000000000"], + ["0x6c8f55a65aaf01eb78b348d6e683e77eff8f57f0", "10000000000000000000000000"], + ["0x02b32ea3ee66454839702babdacaf00bf5ca874c", "10000000000000000000000000"], + ["0x70cd3cff9bdfb4847214290652e586f0b3a2e673", "10000000000000000000000000"], + ["0xe47a14edd56510a77f8fc753cdf1353302d75211", "10000000000000000000000000"], + ["0xf1479af81176cead86a155940bb7c8d5366ed31d", "10000000000000000000000000"], + ["0xf011b0c84502cde1be42fd14532c7a0a5e734196", "10000000000000000000000000"], + ["0xe9e6867dbcbeebc874ea071dbae681040d2399c8", "10000000000000000000000000"], + ["0xc1ea53874efd8e6374931a83aeccdf66d24f70fc", "10000000000000000000000000"], + ["0x6ebf316c8040ffd01ac2ba6c22b2704019b8b2d3", "10000000000000000000000000"], + ["0x25779abc102dee9beee26c0de20e595ea790d44b", "10000000000000000000000000"], + ["0x98f12b729bbe6f82ffe5c0a3625ec8a5ceda5e4b", "10000000000000000000000000"], + ["0x1002f408759c0bee0d4deed7fbf1cc1071210f4d", "10000000000000000000000000"], + ["0x7dfd5fec79cc6877ae6a62f97f57980fc99dab3e", "10000000000000000000000000"], + ["0xbc5b6246fd1e1f50185df9ec8d14354ceb8f8917", "10000000000000000000000000"], + ["0x1b33838ecca98a302bb10d7de6eb8ea25120239b", "10000000000000000000000000"], + ["0x195428b57b2a210f3a7495c6cde7ee4177d66696", "10000000000000000000000000"], + ["0x71ec5abfc49075e158b0f85575d400d0f5d7d3be", "10000000000000000000000000"], + ["0x450fffcdcca801488ac805f2bbb30e0447aef746", "10000000000000000000000000"], + ["0xf9be5c224ccf6224b42ac431deb73bd697fb6499", "10000000000000000000000000"], + ["0x2cf48f3be45d1786e74b88b7d33b0f6418df9ee2", "10000000000000000000000000"], + ["0xf6c0dd57dd4db03cc898ad396bb7c8ceaf554d30", "10000000000000000000000000"], + ["0x69045868bfa5a07b112fc0b34b6fb0cd60cbc36e", "10000000000000000000000000"], + ["0x435ace6047e533da356bde40b5d20a3a542104b9", "10000000000000000000000000"], + ["0x83388b2b26c2e5c1a998da3a0203515441a4e60e", "10000000000000000000000000"], + ["0x2966e925cc8c2e0c4b39adbf22194265c0584858", "10000000000000000000000000"], + ["0x6f58c1472dbdaab0b305e7d0dc00c8505e29b029", "10000000000000000000000000"], + ["0xcc3ce701840f6d689ae93ba6f211a5e897691710", "10000000000000000000000000"], + ["0x407e5c8a607a5f3b7d3b4ffa1c51d965d9b13083", "10000000000000000000000000"], + ["0x323f3ad4dc84ed90315d155fe1977de93840a9a0", "10000000000000000000000000"], + ["0xa73e5baee3eda185b4f844c3615ec2c8efcc9241", "10000000000000000000000000"], + ["0xa6b59d4419bae35d09432f2e35176a576e02f8ee", "10000000000000000000000000"], + ["0xeffe60ec0bd219760eb40e8b810c54dd2eddc351", "10000000000000000000000000"], + ["0xb4ae4070a56624a7c99b438664853d0f454be116", "10000000000000000000000000"], + ["0xe5348acca3061a742af08be6b6d102879e06b8c9", "10000000000000000000000000"], + ["0x360676e09deb4daf9c159837d9bcb21f0f07227e", "10000000000000000000000000"], + ["0x2b8454f668669c9c888c8346416e10be86bb7620", "10000000000000000000000000"], + ["0x594ba954d7da509ace74ea9e185a7dfe81fa8f2a", "10000000000000000000000000"], + ["0x776b7ca762b1f3713853f03ea2bbbe0d644bf53f", "10000000000000000000000000"], + ["0x26ace2bf39ff787a9a5b4a773e81ed89a5174f99", "10000000000000000000000000"], + ["0xcc23eb4ce2f2ad4f5407da66295f39d450c5b2d4", "10000000000000000000000000"], + ["0x91d720f45c53d897d39d61d2f88c6f8d56ba6125", "10000000000000000000000000"], + ["0xe38fd1c83bb7883adc4b5b910c6f6e8311da3b6f", "10000000000000000000000000"], + ["0x5cfa454b330a9166b377aa51b8d030b3ea5910b7", "10000000000000000000000000"], + ["0x51aa5d0e7796f433234515321255bf15c8f25f07", "10000000000000000000000000"], + ["0x6507efbdd0e3edf1c671a3c54138020b96955607", "10000000000000000000000000"], + ["0xf29d3c5fd33f4769c92095c7801091688e2ccc37", "10000000000000000000000000"], + ["0x6ed6462f3e2821f9f89b02205c28dace7432f3a3", "10000000000000000000000000"], + ["0xfe217f95ac791ec38c4550971273ae26e56d9bd1", "10000000000000000000000000"], + ["0x8e044b15ea6bd5b4d6b1aa7196eec81bcb33dfd8", "10000000000000000000000000"], + ["0x94800c39f3a793c3a67f901b71e397d28d89b7a1", "10000000000000000000000000"], + ["0xfd7e62106cac2289eb8066caf2ca5dcc08f12eaf", "10000000000000000000000000"], + ["0xd52d09b041a9ed634053300e6484aff73290626f", "10000000000000000000000000"], + ['0x35b5676573c398fCf59A90BC2fF817B27Ad14E97','10000000000000000000000000'], + ['0xa626B92Ac70634c5CF16942c5423ba626c9370c9','10000000000000000000000000'], + ['0x42959b3392c528bd2a54e06e4fb185a6e1376610','10000000000000000000000000'], + ['0xcA7B7554cbb2c611844a8B552628276496De5A98','10000000000000000000000000'], + ['0xb12ebdb490249abd58e2ff15acfaab4431093cb9','10000000000000000000000000'], + ['0x55f69d209705AA8d5A518561a2DC9664eE98E68B','10000000000000000000000000'], + ['0x649Ec2D17F9370695Eca94c418f4eFdAeD114520','10000000000000000000000000'], + ['0x77e75656E262534B7C6EA6236ae97F2f60Fd8d9f','10000000000000000000000000'], + ['0x2Ec8C099CE47358695097d8ae9bD8554619d4D6f','10000000000000000000000000'], + ['0x926bc0070fa0F010dC7c63BF3d30131bFa009307','10000000000000000000000000'], + ['0x4C3a823f33114eA6D021353d1eD1e19bc73eD611','10000000000000000000000000'], + ['0x7BF6830aE2Dd299316294e824Ef98Aa2732dC411','10000000000000000000000000'], + ['0xD0f6Cb50266F433Db5E5B1f079C804011185b4d3','10000000000000000000000000'], + ['0x74ec4d3f2a39A2f39337D36c70512C852FBD402B','10000000000000000000000000'], + ['0x411D5a0D80C79F041195d08241687E500fC0e52C','10000000000000000000000000'], + ['0xa022b5dCBC0d5f416a75949Eb77c991bcDe99464','10000000000000000000000000'], + ['0x42c74262E7a97b85e9ADEB50027d18CDa41Be9df','10000000000000000000000000'], + ['0x1d308E78F558e78271Ac88Dd3D5c7ed9F76f40aE','10000000000000000000000000'], + ['0x3B8b4cB8D4ff25537D4A4869a3CA56F1A076A2f4','10000000000000000000000000'], + ['0x76E7E7E60C6288479B4ECd6563e54cBEB502e547','10000000000000000000000000'], + ['0x73088662aE671E419375CE82788b0E5A6f55e3E6','10000000000000000000000000'], + ['0xE5b6D2Bf24Afa66add82ab0d5cc729Ea48358644','10000000000000000000000000'], + ['0x8bA6Fb982CB4B6a240065376b944100bCE31b9D6','10000000000000000000000000'], + ['0xe8a90314d1e705246b3c425bc806334d2e7f3565','10000000000000000000000000'], + ['0x54B44041b79021a10e38dcbaEA0AfDcEF1803FFe','10000000000000000000000001'], + ['0xEDC8D1681766C4ba8CE2eBb52072bE3b4fB6CF6a','10000000000000000000000001'], + ['0xF8132edE85C4A4626F0e3fcE678378B90Fc6bBfe','10000000000000000000000000'], + ['0xA53e72EeD7DAf63f920e510B3d43339f5433413A','10000000000000000000000000'], + ['0x527A088a9524CE3b8E5b6d3785BB8ed24744FbaE','10000000000000000000000000'], + ['0xe9eAf9fe16622A152c8fD3aFB7ad0434D8aC11a3','10000000000000000000000000'], + ['0x7BF1ce6D06B20F506f8940860cd05BF1224c12DF','10000000000000000000000000'], + ['0x5e7fED05ed07ac9aB6c9dA0Fe6F1AB0Db399fFD1','10000000000000000000000000'], + ['0x50f1D47B777a8DDbe3C4dB75De1Ffd895e62e91D','10000000000000000000000000'], + ['0x33aFD994cAE354Fd701D31d990E40B4a0Da5E9fF','10000000000000000000000001'], +]; + +module.exports = whiteList; diff --git a/services/staking/dao-stake/handler.js b/services/staking/dao-stake/handler.js new file mode 100644 index 0000000..3615af7 --- /dev/null +++ b/services/staking/dao-stake/handler.js @@ -0,0 +1,340 @@ +const db = require ("../../../models/stake-pool.model"); +const { testContracts, mainContracts } = require("../../../config/serverless/domain"); + +const _ = require("lodash"); +const delay = require("delay"); +const fetch = require("node-fetch"); + +const CoinGecko = require("coingecko-api"); +const CoinGeckoClient = new CoinGecko(); + +const Web3 = require("web3"); +const archiveNodeUrl = process.env.ARCHIVENODE_ENDPOINT; +const archiveNodeWeb3 = new Web3(archiveNodeUrl); + +const infuraUrl = process.env.WEB3_ENDPOINT; +const infuraWeb3 = new Web3(infuraUrl); + +const delayTime = 500; +let contracts = []; + +// xDVGPrice Formula : xDVG price = ( DVG amount of xDVG SC * DVG price) / xDVG amount +const getxDVGPrice = async (xDVGAmount, dvgBalanceOfxDVG, dvgPrice) => { + return (dvgBalanceOfxDVG * dvgPrice) / xDVGAmount; +} + +// Get vipDVG's total supply +const getxDVGTotalSupply = async(xDVGContract) => { + try { + const xDVGTotalSupply = await xDVGContract.methods.totalSupply().call(); + return xDVGTotalSupply; + } catch(err) { + console.log("Error in getxDVGTotalSupply(): ", err); + } +} + +// DVG's balance of vipDVG contract +const getDVGBalanceOfxDVG = async(dvgContract, xDVGAddress) => { + try { + const dvgBalanceOfVipDVG = await dvgContract.methods.balanceOf(xDVGAddress).call(); + return dvgBalanceOfVipDVG; + } catch (err) { + console.log("Error in getDVGBalanceOfxDVG(): ", err) + } +} + +// Get token price +const getTokenPrice = async () => { + const tokens = [ + { tokenId: "tether", price: 0.00, }, + { tokenId: "usd-coin", price: 0.00 }, + { tokenId: "dai", price: 0.00 }, + { tokenId: "true-usd", price: 0.00 }, + { tokenId: "daoventures", price: 0.00 }, + { tokenId: "ethereum", price: 0.00 }, + ]; + + const tokenIds = tokens.map(t => t.tokenId); + + try { + data = await CoinGeckoClient.simple.price({ + ids: tokenIds, + vs_currencies: ["usd"], + }); + + // Append price to each token + if(data.code == 200 && data.message == 'OK' && data.data) { + const result = data.data; + + tokens.map(t => { + t.price = result[t.tokenId]["usd"]; + }) + } + + /**** DAOvip ***/ + // Get vipDVG contract + const xDVGContractInfo = getContractInfo("vipDVG"); + const xDVGContract = await getContract(xDVGContractInfo); + + // Get DVG contract + const dvgContractInfo = getContractInfo("DVG"); + const dvgContract = await getContract(dvgContractInfo); + + const xDVGTotalSupply = await getxDVGTotalSupply(xDVGContract); + const dvgBalOfxDVG = await getDVGBalanceOfxDVG(dvgContract, xDVGContract._address); + const xDVGPrice = await getxDVGPrice(xDVGTotalSupply, dvgBalOfxDVG, tokens.find(t => t.tokenId === 'daoventures').price); + tokens.push({ + tokenId: 'xDVG', + price: xDVGPrice, + }); + + /** Uniswap ETH<->DVG LP **/ + const ethDVGPoolInfo = getContractInfo("uniswap").ethDVG; + const ethDVGPoolContract = await getContract(ethDVGPoolInfo); + const ethDVGPoolPrice = await getUniswapLPTokenPrice(ethDVGPoolContract, ethDVGPoolInfo.address, tokens, 'daoventures', 'ethereum'); + tokens.push({ + tokenId: 'ethDVG', + price: ethDVGPoolPrice, + }); + + return tokens; + } catch (err) { + console.log("Error in getTokenPrice(): ", err); + } + return; +} + +const getContractInfo = (name) => { + contracts = process.env.PRODUCTION != null && process.env.PRODUCTION != "" + ? mainContracts : testContracts; + return contracts[name]; +} + +const getContract = async (contractInfo) => { + const { abi, address } = contractInfo; + const contract = new archiveNodeWeb3.eth.Contract(abi, address); + return contract; +} + +// DAOstake totalPoolWeight() +const getDaoStakeTotalPoolWeight = async (daoStakeContract) => { + try { + const totalPoolWeight = await daoStakeContract.methods.totalPoolWeight().call(); + return totalPoolWeight; + } catch (err) { + console.log("Error in getDaoStakeTotalPoolWeight(): ", err); + } +} + +// Get token balanceOf(DAOstake) +const getLPTokenBalanceOfDAOStake = async (contract, daoStakeAddress) => { + try { + const decimals = await contract.methods.decimals().call(); + let lpTokenBalOfDaoStake = await contract.methods.balanceOf(daoStakeAddress).call(); + lpTokenBalOfDaoStake = lpTokenBalOfDaoStake / ( 10 ** decimals); + return lpTokenBalOfDaoStake; + } catch (err) { + console.log("Error in getLPTokenBalanceOfDAOStake(): ", err); + } +} + +// getMultiplier() from DAOstake contract +const getMultiplier = async(startBlock, endBlock, daoStakeContract) => { + try { + console.log(`Start block ${startBlock}, End Block ${endBlock}`); + let multiplier = await daoStakeContract.methods.getMultiplier(startBlock, endBlock).call(); + multiplier = multiplier / (10 ** 18); + return multiplier; + } catch (err) { + console.log("Error in getMultiplier(): ", err); + } +} + +// getPool() from DAOstake contract +const getPoolFromDaoStake = async(pid, daoStakeContract) => { + try { + const pool = await daoStakeContract.methods.pool(pid).call(); + return pool; + } catch (err) { + console.log("Error in getPoolFromDaoStake(): ", err); + } +} + +const fetchContractABI = async (address) => { + let network = ''; + if (process.env.PRODUCTION == null || process.env.PRODUCTION == "") { + network = '-kovan'; + } + const url = `https://api${network}.etherscan.io/api?module=contract&action=getabi&address=${address}&apikey=${process.env.ETHERSCAN_API_KEY}`; + const resp = await fetch(url).then((res) => res.json()); + const metadata = resp.result; + await delay(delayTime); + return metadata; +}; + +const getUniswapLPTokenPrice = async (poolContract, poolAddress, tokenPrices, token0Id, token1Id) => { + const token0Address = await poolContract.methods.token0().call(); + const token1Address = await poolContract.methods.token1().call(); + const totalSupply = await poolContract.methods.totalSupply().call(); + + const token0Abi = await fetchContractABI(token0Address); + const token1Abi = await fetchContractABI(token1Address); + + const token0 = await getContract({ + address: token0Address, + abi: JSON.parse(token0Abi), + }); + + const token1 = await getContract({ + address: token1Address, + abi: JSON.parse(token1Abi), + }); + + // Balance of Both pairs + const token0Bal = await token0.methods.balanceOf(poolAddress).call(); + const token1Bal = await token1.methods.balanceOf(poolAddress).call(); + const token0Price = tokenPrices.find(t => t.tokenId === token0Id).price; + const token1Price = tokenPrices.find(t => t.tokenId === token1Id).price; + const pool = token0Bal * token0Price + token1Bal * token1Price; + const price = pool / totalSupply; + return price; +} + +const getDecimal = async (poolContract) => { + try { + const decimal = await poolContract.methods.decimals().call(); + return decimal; + } catch (err) { + console.log("Err in getDecimal()", err); + } + +} + +// Calculate APR and TVL for pool +const poolCalculation = async(daoStake, poolInfo, tokensPrice) => { + + let apr = 0; + + // Extract data from daoStake param + const { poolPercent, totalPoolWeight , daoStakeContract } = daoStake; + + // Extract data from poolInfo param + const { poolContract, pool } = poolInfo; + + // Extract data from tokensPrice param + const { tokens, dvgPrice } = tokensPrice; + + // Pass in DAOstake contract, pool's pid to invoke pool() in DAOstake contract + const getPool = await getPoolFromDaoStake(pool.pid, daoStakeContract); + const { poolWeight } = getPool; + + // Pass in pool's contract, DAOstake address get balanceOf() in pool's contract + const tokenBalOfDAOStake = await getLPTokenBalanceOfDAOStake(poolContract, daoStakeContract._address); + + // Pass in start block, last reward block to invoke getMultiplier() in DAOstake contract + const multiplier = await getMultiplier(pool.startBlock, pool.endBlock, daoStakeContract); + + // Find pool token price + const poolTokenPrice = tokens.find(t => t.tokenId === pool.tokenId).price; + + // APR Calculation + apr = (multiplier * poolPercent * dvgPrice * (poolWeight / 100)) / + ((totalPoolWeight / 100) * tokenBalOfDAOStake * poolTokenPrice); + apr = apr * 100; // For percent display on frontend. + + // TVL Calculation + const tvl = tokenBalOfDAOStake * poolTokenPrice; + + const decimal = await getDecimal(poolContract); + + Object.assign(pool, { apr: apr === Infinity ? 0 : apr, tvl , multiplier, decimal}); + + return pool; +} + +module.exports.saveStakedPools = async () => { + try { + // Find price for each token + const tokens = await getTokenPrice(); + // Get DVG price + const dvgPrice = tokens.find(t => t.tokenId === 'daoventures').price; + const tokensPrice = { tokens, dvgPrice }; + + // Get DAOstake + const daoStakeContractInfo = getContractInfo("daoStake"); + const daoStakeContract = await getContract(daoStakeContractInfo); + const totalPoolWeight = await getDaoStakeTotalPoolWeight(daoStakeContract); + const daoStake = { + daoStakeContract: daoStakeContract, + totalPoolWeight, + startBlock: daoStakeContractInfo.startBlock, + poolPercent: daoStakeContractInfo.poolPercent + }; + + // Find all pools + const pools = await db.findAll(); + const poolSize = _.size(pools); + + // Find pool contract and contract abi value pair + const poolAbiContractMap = new Map(); + Object.values(contracts.farmer).map(v => { + poolAbiContractMap.set(v.address.toLowerCase(), v.abi); + }); + + // DAOvip + poolAbiContractMap.set(contracts.vipDVG.address.toLowerCase(), contracts.vipDVG.abi); + + // Uniswap ETH <-> DVG Pool + poolAbiContractMap.set(contracts.uniswap.ethDVG.address.toLowerCase(), contracts.uniswap.ethDVG.abi); + + // Current Block Number + const currentBlockNumber = await infuraWeb3.eth.getBlockNumber(); + + // Block number generated per year, 4 block per minute + const blockNumberPerYear = (4 * 60 * 24 * 365); + + for (index = 0 ; index < poolSize; index ++) { + const contractAddressToLowerCase = pools[index].contract_address.toLowerCase(); + + if(poolAbiContractMap.has(contractAddressToLowerCase) && pools[index].status == 'A') { + // Fetch abi of pool contract + const poolContractInfo = { + address: pools[index].contract_address, + abi: poolAbiContractMap.get(contractAddressToLowerCase) + }; + + // Checking on pool's start block number + if(pools[index].startBlock) { + let startBlock = pools[index].startBlock; + let endBlock = startBlock + blockNumberPerYear; + + // Update new start block and end block + if(currentBlockNumber >= endBlock) { + startBlock = endBlock; + endBlock = startBlock + blockNumberPerYear; + } + + pools[index].startBlock = startBlock; + pools[index].endBlock = endBlock; + } else { + console.log(`Pool ${pools[index].label} is missing its startBlock.`); + } + + // Get pool contract + const poolContract = await getContract(poolContractInfo); + let poolInfo = { + pool: pools[index], + poolContract, + } + + const pool = await poolCalculation(daoStake, poolInfo, tokensPrice); + + delete pool._id; + db.add(pool); + } + } + } catch (err) { + console.error(err); + } + return; +} \ No newline at end of file diff --git a/services/staking/handler.js b/services/staking/handler.js new file mode 100644 index 0000000..7593e17 --- /dev/null +++ b/services/staking/handler.js @@ -0,0 +1,112 @@ +const db = require("../../models/stake-pool.model"); +const snapshot = require("../../models/emergency-withdraw.model"); +const fetch = require("node-fetch"); +const delay = require("delay"); +const _ = require("lodash"); + +const delayTime = 500; + +const fetchContractABI = async (address) => { + let network = ''; + if (process.env.PRODUCTION == null || process.env.PRODUCTION == "") { + network = '-kovan'; + } + const url = `https://api${network}.etherscan.io/api?module=contract&action=getabi&address=${address}&apikey=${process.env.ETHERSCAN_API_KEY}`; + const resp = await fetch(url).then((res) => res.json()); + const metadata = resp.result; + await delay(delayTime); + return metadata; +}; + +const getPoolInfo = async (pool) => { + const abi = await fetchContractABI(pool.contract_address); + delete pool._id; + Object.assign(pool, { + abi, + }); + return pool; +} + +module.exports.savePoolInfo = async () => { + try { + const pools = await db.findAll(); + const poolSize = _.size(pools); + for (idx = 0; idx < poolSize; idx++) { + if (pools[idx].status === 'A') { + const pool = await getPoolInfo(pools[idx]); + db.add(pool); + } + } + } catch (err) { + console.error(err.message); + } +} + +module.exports.getPools = async (req, res) => { + try { + const pls = []; + const pools = await db.findAll(); + const poolSize = _.size(pools); + for (idx = 0; idx < poolSize; idx++) { + if (pools[idx].status === 'A') { + delete pools[idx]._id; + pls.push(pools[idx]); + } + } + + res.status(200).json({ + message: 'Successful Response', + body: { + pools: pls, + } + }); + } catch (err) { + res.status(200).json({ + message: err.message, + body: null + }); + } + + return; +} + +module.exports.snapshotEmergency = async (req, res) => { + try { + const pools = await db.findAll(); + const poolSize = _.size(pools); + let exist = false; + for (idx = 0; idx < poolSize; idx++) { + if (pools[idx].pid === req.body.pid) { + exist = true; + } + } + + if (exist) { + const prev = await snapshot.findOne({ + pid: req.body.pid, + userAddress: req.body.userAddress.toLowerCase(), + }); + + if (prev == null && req.body.pendingDVG > 0) { + await snapshot.add({ + pid: req.body.pid, + userAddress: req.body.userAddress.toLowerCase(), + pendingDVG: req.body.pendingDVG, + }); + } + + res.status(200).json({ + message: 'Successful Response', + body: {} + }); + } + } catch (err) { + res.status(200).json({ + message: err.message, + body: null + }) + } + + return; +} + diff --git a/services/staking/vipdvg/handler.js b/services/staking/vipdvg/handler.js new file mode 100644 index 0000000..65d06be --- /dev/null +++ b/services/staking/vipdvg/handler.js @@ -0,0 +1,240 @@ +const { testContracts, mainContracts } = require("../../../config/serverless/domain"); + +const Web3 = require("web3"); +const CoinGecko = require("coingecko-api"); +const moment = require("moment"); +const delay = require("delay"); +const EthDater = require("../../vaults/apy/save/ethereum-block-by-date"); +const { delayTime } = require("../../vaults/apy/save/config"); +const db = require("../../../models/vip-apy.model"); +const CoinGeckoClient = new CoinGecko(); + +const infuraUrl = process.env.WEB3_ENDPOINT; +const archiveNodeUrl = process.env.ARCHIVENODE_ENDPOINT; +const archiveNodeWeb3 = new Web3(archiveNodeUrl); +const infuraWeb3 = new Web3(infuraUrl); +const blocks = new EthDater(archiveNodeWeb3, delayTime); +const DB_CONSTANT = 'daoVip'; + +const getContracts = () => { + return (process.env.PRODUCTION != null && process.env.PRODUCTION != "") + ? mainContracts + : testContracts; +} + +// Get contract +const getContract = async (contractInfo) => { + const { abi, address } = contractInfo; + const contract = new archiveNodeWeb3.eth.Contract(abi, address); + return contract; +} + +// Get Token Price +const getTokenPrice = async (coingecko_token_id) => { + let data; + try { + data = await CoinGeckoClient.simple.price({ + ids: coingecko_token_id, + vs_currencies: ["usd"], + }); + return data.data[coingecko_token_id]["usd"]; + } catch (err) { + console.log("Error in getTokenPrice(): ", err); + } + return; +} + +const getTokenBalanceOfVipToken = async(tokenContract, vipTokenAddress) => { + try { + const tokenBalanceOfVipToken = await tokenContract.methods.balanceOf(vipTokenAddress).call(); + return tokenBalanceOfVipToken; + } catch (err) { + console.log("Error in getTokenBalanceOfVipToken(): ", err) + } +} + +const getVipTokenPrice = async (vipTotalSupply, tokenBalOfVipToken, tokenPrice) => { + return (tokenBalOfVipToken * tokenPrice) / vipTotalSupply; +} + +const getTotalSupply = async (contract) => { + try { + let totalSupply = await contract.methods.totalSupply().call(); + return totalSupply; + } catch (err) { + // Catch error + console.log(err); + } +}; + +const getVipTokenTVL = async (vipTokenDecimals, vipTotalSupply, vipTokenPrice) => { + return (vipTotalSupply / (10 ** vipTokenDecimals)) * vipTokenPrice; +}; + +const calculateAPR = async (apr, days) => { + const aprPerDay = apr / days; + return { + aprOneDay: aprPerDay, + aprOneWeek: aprPerDay * 7, + aprOneMonth: aprPerDay * 30, + aprOneYear: aprPerDay * 365, + } +} + +const getAPR = async (vipName) => { + const apr = await db.findOne({ + name: vipName, + }); + + if (apr != null) { + delete apr._id; + delete apr.name; + } + return apr; +} + +const getVipTokenAPR = async (tokenContract, vipTokenContract, days, tokenPriceId) => { + const tokenBalOfVipToken = await getTokenBalanceOfVipToken(tokenContract, vipTokenContract._address); + const vipTotalSupply = await getTotalSupply(vipTokenContract); + + // const tokenPrice = await getTokenPrice(tokenPriceId); + // Get token usd price from Coingecko + const tokenPrice = (tokenPriceId === "daoventures") + ? await getTokenPrice(tokenPriceId) + : 0.225 ; + + const vipTokenPrice = await getVipTokenPrice(vipTotalSupply, tokenBalOfVipToken, tokenPrice); + + let apr = (vipTotalSupply * vipTokenPrice) / (tokenBalOfVipToken * tokenPrice); + console.log(`APR: (${vipTotalSupply} * ${vipTokenPrice}) / (${tokenBalOfVipToken} * ${tokenPrice})`); + + if (isNaN(apr)) { + apr = 0; + } + + const aprInfo = await calculateAPR(apr, days); + return { ...aprInfo, apr }; +} + +const getVipTokenInfo = async (tokenContract, vipTokenContract, vipContractInfo, tokenPriceId) => { + const vipTotalSupply = await getTotalSupply(vipTokenContract); + const tokenBalOfVipToken = await getTokenBalanceOfVipToken(tokenContract, vipTokenContract._address); + + // const tokenPrice = await getTokenPrice(tokenPriceId); + // Get token usd price from Coingecko + const tokenPrice = (tokenPriceId === "daoventures") + ? await getTokenPrice(tokenPriceId) + : 0.225 ; + + let vipTokenPrice = await getVipTokenPrice(vipTotalSupply, tokenBalOfVipToken, tokenPrice); + + const tvl = await getVipTokenTVL(vipContractInfo.decimals, vipTotalSupply, vipTokenPrice); + const apr = await getAPR(vipContractInfo.name); + return { ...apr, tokenPrice, tvl, vipTokenPrice: vipTokenPrice / tokenPrice}; +} + +module.exports.getVipAPY = async () => { + try { + const contracts = getContracts(); + + const tokenPairs = [ + { token: "DVG", vipToken: "vipDVG" }, + { token: "DVD", vipToken: "vipDVD" }, + ]; + + const oneDayAgo = moment().subtract(1, "days").valueOf(); + await delay(delayTime); + const oneDayAgoBlock = (await blocks.getDate(oneDayAgo)).block; + const currentBlockNbr = await infuraWeb3.eth.getBlockNumber(); + const nbrBlocksInDay = currentBlockNbr - oneDayAgoBlock; + + for(let i = 0 ; i < tokenPairs.length; i++) { + const tokenInfo = contracts[tokenPairs[i].token]; + const vipTokenInfo = contracts[tokenPairs[i].vipToken]; + + const tokenContract = await getContract(tokenInfo); + const vipTokenContract = await getContract(vipTokenInfo); + + const days = (currentBlockNbr - vipTokenInfo.lastMeasurement) / nbrBlocksInDay; + let result = await getVipTokenAPR(tokenContract, vipTokenContract, days, tokenInfo.tokenId); + await db.add({ + ...result, + name: tokenPairs[i].vipToken, + }); + } + } catch (err) {} +} + +module.exports.getxDVGStake = async(req, res) => { + try { + const contracts = getContracts(); + + const xDVGInfo = contracts["vipDVG"]; + const dvgInfo = contracts["DVG"]; + + // Create contract object + const xDVGContract = await getContract(xDVGInfo); + const dvgContract = await getContract(dvgInfo); + + const result = await getVipTokenInfo(dvgContract, xDVGContract, xDVGInfo, dvgInfo.tokenId); + const finalResult = { + aprOneDay: result.aprOneDay, + aprOneWeek: result.aprOneWeek, + aprOneMonth: result.aprOneMonth, + aprOneYear: result.aprOneYear, + apr: result.apr, + dvgPrice: result.tokenPrice, + xDVGPrice: result.vipTokenPrice, + tvl: result.tvl, + }; + + res.status(200).json({ + message: 'Successful Response', + body: finalResult + }); + + } catch (err) { + res.status(200).json({ + message: err.message, + body: null + }); + } + return; +}; + +module.exports.getxDVDStake = async (req, res) => { + try { + const contracts = getContracts(); + + const xDVDInfo = contracts["vipDVD"]; + const dvdInfo = contracts["DVD"]; + + // Create contract object + const xDVDContract = await getContract(xDVDInfo); + const dvdContract = await getContract(dvdInfo); + + const result = await getVipTokenInfo(dvdContract, xDVDContract, xDVDInfo, dvdInfo.tokenId); + const finalResult = { + aprOneDay: result.aprOneDay, + aprOneWeek: result.aprOneWeek, + aprOneMonth: result.aprOneMonth, + aprOneYear: result.aprOneYear, + apr: result.apr, + dvdPrice: result.tokenPrice, + xDVDPrice: result.vipTokenPrice, + tvl: result.tvl, + }; + + res.status(200).json({ + message: 'Successful Response', + body: finalResult + }); + + } catch (err) { + res.status(200).json({ + message: err.message, + body: null + }); + } + return; +} \ No newline at end of file diff --git a/services/staking/xdvg/handler.js b/services/staking/xdvg/handler.js new file mode 100644 index 0000000..1372dee --- /dev/null +++ b/services/staking/xdvg/handler.js @@ -0,0 +1,45 @@ +const db = require("../../../models/xdvg-token.model"); +const fetch = require("node-fetch"); +const delay = require("delay"); +const delayTime = 500; + +const fetchContractABI = async (address) => { + let network = ''; + if (process.env.PRODUCTION == null || process.env.PRODUCTION == "") { + network = '-kovan'; + } + const url = `https://api${network}.etherscan.io/api?module=contract&action=getabi&address=${address}&apikey=${process.env.ETHERSCAN_API_KEY}`; + const resp = await fetch(url).then((res) => res.json()); + const metadata = resp.result; + await delay(delayTime); + return metadata; +}; + +module.exports.getVipDVGToken = async (req, res) => { + try { + const token = await db.find(); + let abi; + if (token) { + abi = await fetchContractABI(token.contract_address); + } + + delete token._id; + Object.assign(token, { + abi, + }); + + res.status(200).json({ + message: 'Successful Response', + body: { + token, + } + }); + } catch (err) { + res.status(200).json({ + message: err.message, + body: null + }); + } + + return; +} \ No newline at end of file diff --git a/services/user/reimburse/handler.js b/services/user/reimburse/handler.js new file mode 100644 index 0000000..a51a963 --- /dev/null +++ b/services/user/reimburse/handler.js @@ -0,0 +1,62 @@ +const db = require("../../../models/reimburse-address.model"); + +module.exports.getReimburseAddress = async (req, res) => { + try { + const addressInfo = await db.findOne( + req.params.address.toLowerCase() + ); + + if (addressInfo != null) { + delete addressInfo._id; + } + + res.status(200).json({ + message: 'Successful Response', + body: addressInfo, + }); + } catch (err) { + res.status(200).json({ + message: err.message, + body: null + }); + } + + return; +} + +module.exports.updateReimburseAddressClaimAmount = async (req, res) => { + try { + if(!req.body || !req.body.address || !req.body.amount) { + if(!req.body.address) { + res.status(200).json({ + message: "Missing user address.", + body: null, + }); + } + if(!req.body.amount) { + res.status(200).json({ + message: "Missing claimed amount.", + body: null, + }); + } + } + + await db.updateClaimAmount({ + amount: req.body.amount, + address: req.body.address, + }); + + res.status(200).json({ + message: "Update Success!", + body: null, + }); + + return; + } catch (err) { + res.status(200).json({ + message: err.message, + body: null + }); + return; + } +} \ No newline at end of file diff --git a/services/user/special-event/handler.js b/services/user/special-event/handler.js new file mode 100644 index 0000000..321cdd1 --- /dev/null +++ b/services/user/special-event/handler.js @@ -0,0 +1,85 @@ +const db = require("../../../models/special-event.model"); + +// Check user's eligibility for special event +const checkEligibilityForEvent = async(amount) => { + + const result = { + amountAboveThreshold: true, + happyHour: true, + happyHourInfo: null, + message: "", + }; + + const event = await getExistingEvent(); + + // Check any existing event + if(event.happyHour === false) { + result.amountAboveThreshold = false, + result.happyHour = false, + result.happyHourInfo = null; + result.message = "No ongoing event found." + return result; + } + + // Check deposited amount + if(amount < event.threshold) { + result.amountAboveThreshold = false, + result.happyHour = true, + result.happyHourInfo = event; + result.message = "Below required deposit (" + event.threshold + ") for Happy Hour. Gas fee will be required." + return result; + } + + result.happyHourInfo = event; + result.message = "Gas fee is on us!"; + return result; +} + +const getExistingEvent = async() => { + const eventList = await db.getCurrentEvent(); + + const result = { + happyHour: false, + startTime: null, + endTime: null, + threshold: null + } + + if(eventList.length > 0) { + const currentEvent = eventList[0]; + + result.happyHour = true; + result.startTime = currentEvent.startTime; + result.endTime = currentEvent.endTime; + result.threshold = currentEvent.threshold; + + return result; + } + + return result; +} + +module.exports.handleVerifyEvent = async(req, res) => { + const result = await getExistingEvent(); + + res.status(200).json({ + message: "Successful response", + body: result + }) +} + +module.exports.handler = async(req, res) => { + if(req.params.amount === null || req.params.amount === "") { + res.status(200).json({ + message: "Amount is empty", + body: null + }); + } + + const result = await checkEligibilityForEvent(req.params.amount); + + res.status(200).json({ + message: "Successful response", + body: result + }) +} \ No newline at end of file diff --git a/services/user/vaults/statistics/handler.js b/services/user/vaults/statistics/handler.js index d137f60..ce5c90e 100644 --- a/services/user/vaults/statistics/handler.js +++ b/services/user/vaults/statistics/handler.js @@ -7,12 +7,26 @@ const BigNumber = require("bignumber.js"); const subgraphUrl = process.env.SUBGRAPH_ENDPOINT; const Web3 = require("web3"); const web3 = new Web3(process.env.WEB3_ENDPOINT); +const archiveNodeUrl = process.env.ARCHIVENODE_ENDPOINT; +const archiveNodeWeb3 = new Web3(archiveNodeUrl); +const delay = require("delay"); +const earnABIContract = require('../../../../config/abi').earnABIContract; +const vaultABIContract = require('../../../../config/abi').vaultABIContract; +const yfUSDTABIContract = require('../../../../config/abi').yfUSDTABIContract; +const { + devContract, + prodContract, + testContracts, + mainContracts +} = require('../../../../config/serverless/domain'); const { getTransactions, getVaultAddressesForUser, } = require("../transactions/handler"); const _ = require("lodash"); +const contractHelper = require("../../../../utils/contract"); +const constant = require("../../../../utils/constant"); const getVaultContract = (vaultAddress) => { const abi = getMinimalVaultABI(); @@ -20,31 +34,128 @@ const getVaultContract = (vaultAddress) => { return contract; }; +const getContract = (abi, contractAddress) => { + const contract = new web3.eth.Contract(abi, contractAddress); + return contract; +}; + const getDepositedShares = async (vaultContract, userAddress) => { const balance = await vaultContract.methods.balanceOf(userAddress).call(); return balance; }; -const getPricePerFullShare = async (vaultContract) => { - const pricePerFullShare = await vaultContract.methods +const getPricePerFullShare = async (contract) => { + const pricePerFullShare = await contract.methods .getPricePerFullShare() .call(); return pricePerFullShare; }; -const getVaultStatistics = async (vaultAddress, transactions, userAddress) => { - const findVault = (vault) => - vault.vaultAddress.toLowerCase() === vaultAddress; +const getBalanceOf = async (contract, address) => { + const balance = await contract.methods + .balanceOf(address) + .call(); + return balance; +}; + +const getTotalSupply = async (contract) => { + const totalSupply = await contract.methods + .totalSupply() + .call(); + return totalSupply; +}; + +// Get USDT <-> USD Price +const getPriceFromChainLink = async (contract) => { + let price = 0; + try { + price = await contract.methods.latestAnswer().call(); + } catch (ex) { } + await delay(500); + return price; +}; + +const getVaultStatistics = async (contractAddress, transactions, userAddress) => { + const findVault = (vault) => { + if (vault.vaultAddress == null) return false; + return vault.vaultAddress.toLowerCase() === contractAddress; + } + const transactionsForVault = _.find(transactions, findVault); + + // Get User Deposit Amount + let strategyContract; + let vaultContract; + + const contracts = (process.env.PRODUCTION != null && process.env.PRODUCTION != '') + ? mainContracts + : testContracts; + + const vault = Object.values(contracts.farmer).find(contract => contract.address.toLowerCase() === contractAddress.toLowerCase()); + + if(!vault) { + // Return empty object, if subgraph's vault address cannot match with domain.js farmer + return { + contractAddress, + message: "No vault found.", + }; + } + + const type = vault.contractType; + + if(vault.network === constant.ETHEREUM) { + vaultContract = await contractHelper.getEthereumContract(vault.abi, vault.address); + strategyContract = await contractHelper.getEthereumContract(vault.strategyABI, vault.strategyAddress); + } else if (vault.network === constant.POLYGON) { + vaultContract = await contractHelper.getPolygonContract(vault.abi, vault.address); + strategyContract = await contractHelper.getPolygonContract(vault.strategyABI, vault.strategyAddress); + } - const vaultContract = getVaultContract(vaultAddress); const depositedShares = await getDepositedShares(vaultContract, userAddress); - const pricePerFullShare = await getPricePerFullShare(vaultContract); + let depositedAmount = new BigNumber(0); + if (type === 'yearn') { + const earnDepositAmount = await strategyContract.methods.getEarnDepositBalance(userAddress).call(); + const vaultDepositAmount = await strategyContract.methods.getVaultDepositBalance(userAddress).call(); + depositedAmount = new BigNumber(earnDepositAmount) + .plus(vaultDepositAmount); + } else if (type === 'compound') { + depositedAmount = await strategyContract.methods.getCurrentBalance(userAddress).call(); + depositedAmount = new BigNumber(depositedAmount); + } else if (type === 'citadel' || type === 'elon' || type === 'cuban') { + const pool = await vaultContract.methods.getAllPoolInUSD().call(); + const totalSupply = await vaultContract.methods.totalSupply().call(); + depositedAmount = (depositedShares * pool) / totalSupply; + depositedAmount = new BigNumber(depositedAmount); + } else if (type === 'harvest') { + depositedAmount = await strategyContract.methods.getCurrentBalance(userAddress).call(); + depositedAmount = new BigNumber(depositedAmount); + } else if (type === 'daoFaang') { + let usdtToUsdPriceFeedContract; + const contractInfo = (process.env.PRODUCTION != '') ? mainContracts.chainLink.USDT_USD : testContracts.chainLink.USDT_USD; + usdtToUsdPriceFeedContract = new archiveNodeWeb3.eth.Contract(contractInfo.abi, contractInfo.address); + + const usdtToUsdPrice = await getPriceFromChainLink(usdtToUsdPriceFeedContract); + const pool = await vaultContract.methods.getTotalValueInPool().call(); + const totalSupply = await vaultContract.methods.totalSupply().call(); + const poolInUSD = (pool * usdtToUsdPrice) / (10 ** 20); // The reason to divide 20: pool in 18 , price feed in 8 , ( 18 + 8 ) / 20 = 6 decimals + + depositedAmount = (depositedShares * poolInUSD) / totalSupply; + depositedAmount = new BigNumber(depositedAmount); + } else if (type === 'moneyPrinter') { + let usdtToUsdPriceFeedContract; + const contractInfo = (process.env.PRODUCTION != '') ? mainContracts.polygonChainLink.USDT_USD : testContracts.polygonChainLink.USDT_USD; + usdtToUsdPriceFeedContract = await contractHelper.getPolygonContract(contractInfo.abi, contractInfo.address); - const depositedAmount = new BigNumber(depositedShares) - .times(pricePerFullShare) - .dividedBy(10 ** 18); + const usdtToUsdPrice = await getPriceFromChainLink(usdtToUsdPriceFeedContract); + const pool = await vaultContract.methods.getValueInPool().call(); + const totalSupply = await vaultContract.methods.totalSupply().call(); + + const poolInUSD = (pool * usdtToUsdPrice) / (10 ** 20); // The reason to divide 20: pool in 18 , price feed in 8 , ( 18 + 8 ) / 20 = 6 decimals + + depositedAmount = (depositedShares * poolInUSD) / totalSupply; + depositedAmount = new BigNumber(depositedAmount); + } const { deposits, @@ -65,25 +176,62 @@ const getVaultStatistics = async (vaultAddress, transactions, userAddress) => { return sum; }; + const getSumForUSD = (data) => { + const zero = new BigNumber(0); + const sum = data.reduce( + (dataItem, item) => { + return dataItem.plus(item.amountInUSD ? item.amountInUSD : 0); + }, + zero, + data + ); + return sum; + } + const totalDeposits = getSum(deposits); const totalWithdrawals = getSum(withdrawals); const totalTransferredIn = getSum(transfersIn); const totalTransferredOut = getSum(transfersOut); + + let earnings = 0; + let totalDepositsInUSD = 0; + let totalWithdrawalsInUSD = 0; + let totalTransferredInUSD = 0; + let totalTransferredOutInUSD = 0; - const earnings = depositedAmount + if(type === "citadel" || type === "elon" || type === "cuban" || type === "daoFaang" || type === "moneyPrinter") { + totalDepositsInUSD = getSumForUSD(deposits); + totalWithdrawalsInUSD = getSumForUSD(withdrawals); + totalTransferredInUSD = getSumForUSD(transfersIn); + totalTransferredOutInUSD = getSumForUSD(transfersOut); + + let exactDepositedAmount = depositedAmount / 10 ** 6; + exactDepositedAmount = new BigNumber(exactDepositedAmount); + earnings = exactDepositedAmount + .minus(totalDepositsInUSD) + .plus(totalWithdrawalsInUSD) + .minus(totalTransferredInUSD) + .plus(totalTransferredOutInUSD) + } else { + earnings = depositedAmount .minus(totalDeposits) .plus(totalWithdrawals) .minus(totalTransferredIn) .plus(totalTransferredOut); + } const statistics = { - vaultAddress, + contractAddress, totalDeposits: totalDeposits.toFixed(), + totalDepositsInUSD: totalDepositsInUSD.toFixed(), totalWithdrawals: totalWithdrawals.toFixed(), + totalWithdrawalsInUSD: totalWithdrawalsInUSD.toFixed(), totalTransferredIn: totalTransferredIn.toFixed(), + totalTransferredInUSD: totalTransferredInUSD.toFixed(), totalTransferredOut: totalTransferredOut.toFixed(), + totalTransferredOutInUSD: totalTransferredOutInUSD.toFixed(), depositedShares, - depositedAmount: depositedAmount.toFixed(0), + depositedAmount: depositedAmount, earnings: earnings.toFixed(0), }; return statistics; @@ -92,26 +240,30 @@ const getVaultStatistics = async (vaultAddress, transactions, userAddress) => { const getVaultsStatistics = async (userAddress) => { const vaultAddressesForUser = await getVaultAddressesForUser(userAddress); const transactions = await getTransactions(userAddress); - const getVaultStatisticsWithTransactions = async (vault) => - await getVaultStatistics(vault, transactions, userAddress); - + const getVaultStatisticsWithTransactions = async (vault) => { + return await getVaultStatistics(vault, transactions, userAddress); + } + const vaultsStatistics = await Promise.all( vaultAddressesForUser.map(getVaultStatisticsWithTransactions) ); return vaultsStatistics; }; -module.exports.handler = async (event) => { - const userAddress = event.pathParameters.userAddress; - const vaultsStatistics = await getVaultsStatistics(userAddress); - return { - statusCode: 200, - headers: { - "Access-Control-Allow-Origin": "*", - "Access-Control-Allow-Credentials": true, - }, - body: JSON.stringify(vaultsStatistics), - }; +const handler = async (req, res) => { + const userAddress = req.params.userAddress || ''; + if (userAddress === '') { + res.status(200).json({ + message: 'User Address is empty.', + body: null + }); + } else { + const vaultsStatistics = await getVaultsStatistics(req.params.userAddress); + res.status(200).json({ + message: '', + body: vaultsStatistics + }); + } }; function getMinimalVaultABI() { @@ -135,4 +287,11 @@ function getMinimalVaultABI() { ]; } -module.exports.getVaultsStatistics = getVaultsStatistics; +module.exports = { + getVaultsStatistics, + getContract, + getPricePerFullShare, + getBalanceOf, + getTotalSupply, + handler +} diff --git a/services/user/vaults/transactions/handler.js b/services/user/vaults/transactions/handler.js index 4cdbee6..7ca1192 100644 --- a/services/user/vaults/transactions/handler.js +++ b/services/user/vaults/transactions/handler.js @@ -3,64 +3,125 @@ require("dotenv").config(); const fetch = require("node-fetch"); const { pluck, uniq } = require("ramda/dist/ramda"); -const BigNumber = require("bignumber.js"); const subgraphUrl = process.env.SUBGRAPH_ENDPOINT; -const { getVaults } = require("../../../vaults/handler"); +const polygonSubgraphUrl = process.env.POLYGON_SUBGRAPH_ENDPOINT; +const constant = require("../../../../utils/constant"); const _ = require("lodash"); +const { + testContracts, + mainContracts +} = require('../../../../config/serverless/domain'); -module.exports.handler = async (event) => { - const userAddress = event.pathParameters.userAddress; - const transactions = await getTransactions(userAddress); - return { - statusCode: 200, - headers: { - "Access-Control-Allow-Origin": "*", - "Access-Control-Allow-Credentials": true, - }, - body: JSON.stringify(transactions), - }; +module.exports.handler = async (req, res) => { + const userAddress = req.params.userAddress || ''; + if (userAddress === '') { + res.status(200).json({ + message: 'User Address is empty.', + body: null + }); + } else { + const transactions = await getTransactions(userAddress); + const contentMapping = (data) => { + data.contractAddress = data.vaultAddress; + delete data.vaultAddress; + + const transactionMapping = (tx) => { + delete tx.transaction; + tx.timestamp = Number(tx.timestamp); + return tx; + } + + data.deposits.map(transactionMapping); + data.withdrawals.map(transactionMapping); + data.transfersIn.map(transactionMapping); + data.transfersOut.map(transactionMapping); + return data; + } + + transactions.map(contentMapping); + res.status(200).json({ + message: '', + body: transactions + }); + } }; -const getGraphTransactions = async (userAddress) => { +const getGraphTransactions = async (userAddress, network) => { const query = ` { - deposits: deposits (where: {account: "${userAddress}"}, orderBy: blockNumber) { - transactionAddress: id - vaultAddress + deposits: deposits (where: {account: "${userAddress}"}) { + transactionAddress: transaction { + id + } + vaultAddress: farmer { + id + } amount - timestamp + amountInUSD + transaction { + timestamp + } } - withdrawals: withdraws (where: {account: "${userAddress}"}, orderBy: blockNumber) { - transactionAddress: id - vaultAddress + withdrawals (where: {account: "${userAddress}"}) { + transactionAddress: transaction { + id + } + vaultAddress: farmer { + id + } amount - timestamp + amountInUSD + transaction { + timestamp + } } - transfersIn: transfers(where: {to: "${userAddress}", from_not: "0x0000000000000000000000000000000000000000"}, orderBy: blockNumber) { - transactionAddress: id - timestamp - vaultAddress - balance - totalSupply + transfersIn: transfers(where: {to: "${userAddress}", from_not: "0x0000000000000000000000000000000000000000"}) { + transactionAddress: transaction { + id + } + transaction { + timestamp + } + vaultAddress: farmer { + id + } + amount + amountInUSD shares: value } - transfersOut: transfers(where: {from: "${userAddress}", to_not: "0x0000000000000000000000000000000000000000"}, orderBy: blockNumber) { - transactionAddress: id - shares: value - vaultAddress - timestamp - balance - totalSupply + transfersOut: transfers(where: {from: "${userAddress}", to_not: "0x0000000000000000000000000000000000000000"}) { + transactionAddress: transaction { + id + } shares: value + transaction { + timestamp + } + vaultAddress: farmer { + id + } + amount + amountInUSD } } `; - const response = await fetch(subgraphUrl, { + let url = ""; + switch(network){ + case constant.ETHEREUM: + url = subgraphUrl; + break; + case constant.POLYGON: + url = polygonSubgraphUrl; + break; + default: + break; + } + const response = await fetch(url , { method: "POST", body: JSON.stringify({ query }), }); - + const responseJson = await response.json(); const graphTransactions = responseJson.data; return graphTransactions; @@ -76,55 +137,107 @@ const getVaultAddressesForUserWithGraphTransactions = ( transfersIn, transfersOut, } = graphTransactions; + + + const txMapping = (tx) => { + tx.vaultAddress = tx.vaultAddress.id; + tx.transactionAddress = tx. transactionAddress.id; + tx.timestamp = tx.transaction.timestamp; + + return { + ...tx + }; + } + + deposits.map(txMapping); + withdrawals.map(txMapping); + transfersIn.map(txMapping); + transfersOut.map(txMapping); + const vaultAddressesForUser = uniq([ ...pluck("vaultAddress", deposits), ...pluck("vaultAddress", withdrawals), ...pluck("vaultAddress", transfersIn), ...pluck("vaultAddress", transfersOut), ]); + return vaultAddressesForUser; }; const getVaultAddressesForUser = async (userAddress) => { - const graphTransactions = await getGraphTransactions(userAddress); - const vaultAddressesForUser = getVaultAddressesForUserWithGraphTransactions( + const ethereumTransactions = await getGraphTransactions(userAddress.toLowerCase(), constant.ETHEREUM); + const polygonTransactions = await getGraphTransactions(userAddress.toLowerCase(), constant.POLYGON); + + let vaultAddressesForUser = []; + const ethereumAddresses = getVaultAddressesForUserWithGraphTransactions( userAddress, - graphTransactions + ethereumTransactions ); + vaultAddressesForUser = vaultAddressesForUser.concat(ethereumAddresses); + + const polygonAddresses = getVaultAddressesForUserWithGraphTransactions( + userAddress, + polygonTransactions + ); + vaultAddressesForUser = vaultAddressesForUser.concat(polygonAddresses); + return vaultAddressesForUser; }; const getTransactions = async (userAddress) => { - const graphTransactions = await getGraphTransactions(userAddress); - let { deposits, withdrawals, transfersIn, transfersOut } = graphTransactions; - - const injectAmountIntoTransfer = (transfer) => { - const amount = (transfer.balance * transfer.shares) / transfer.totalSupply; - const newTransfer = { - ...transfer, - amount, - }; - return newTransfer; - }; + let deposits = []; + let withdrawals = []; + let transfersIn = []; + let transfersOut = []; + + const ethereumTransactions = await getGraphTransactions(userAddress, constant.ETHEREUM); + if(ethereumTransactions) { + deposits = deposits.concat(ethereumTransactions.deposits); + withdrawals = withdrawals.concat(ethereumTransactions.withdrawals); + transfersIn = transfersIn.concat(ethereumTransactions.transfersIn); + transfersOut = transfersOut.concat(ethereumTransactions.transfersOut); + } + + const polygonTransactions = await getGraphTransactions(userAddress, constant.POLYGON); + if(polygonTransactions) { + deposits = deposits.concat(polygonTransactions.deposits); + withdrawals = withdrawals.concat(polygonTransactions.withdrawals); + transfersIn = transfersIn.concat(polygonTransactions.transfersIn); + transfersOut = transfersOut.concat(polygonTransactions.transfersOut); + } - transfersIn = transfersIn.map(injectAmountIntoTransfer); - transfersOut = transfersOut.map(injectAmountIntoTransfer); + // let { deposits, withdrawals, transfersIn, transfersOut } = graphTransactions; + // const injectAmountIntoTransfer = (transfer) => { + // const amount = (transfer.balance * transfer.shares) / transfer.totalSupply; + // const newTransfer = { + // ...transfer, + // amount, + // }; + // return newTransfer; + // }; + // transfersIn = transfersIn.map(injectAmountIntoTransfer); + // transfersOut = transfersOut.map(injectAmountIntoTransfer); // Get all the vaults the address has interacted with. - const vaultAddresses = getVaultAddressesForUserWithGraphTransactions( + let vaultAddresses = []; + const ethereumAddresses = getVaultAddressesForUserWithGraphTransactions( userAddress, - graphTransactions + ethereumTransactions ); - - const vaults = await getVaults(); + vaultAddresses = vaultAddresses.concat(ethereumAddresses); + const polygonAddresses = getVaultAddressesForUserWithGraphTransactions( + userAddress, + polygonTransactions + ) + vaultAddresses = vaultAddresses.concat(polygonAddresses); + + const farmers = process.env.PRODUCTION == '' ? Object.values(testContracts.farmer) : Object.values(mainContracts.farmer); const removeVaultAddressField = (deposit) => _.omit(deposit, "vaultAddress"); const getTransactionsByVaultAddress = (vaultAddress) => { const findItemByVaultAddress = (item) => item.vaultAddress === vaultAddress; - - const findVault = (vault) => - vault.address.toLowerCase() === vaultAddress.toLowerCase(); + const findVault = (vault) => vault.address.toLowerCase() === vaultAddress.toLowerCase(); const depositsToVault = deposits .filter(findItemByVaultAddress) @@ -142,10 +255,12 @@ const getTransactions = async (userAddress) => { .filter(findItemByVaultAddress) .map(stripUnneededTransferFields); - const vault = vaults.find(findVault); + const farmer = farmers.find(findVault); + //TODO Change dynamic address const vaultTransactions = { - vaultAddress: vault.address, + vaultAddress: farmer == null ? "" : farmer.address, + // vaultAddress: process.env.PRODUCTION != null && process.env.PRODUCTION != '' ? prodContract.prodYfUSDTContract : devContract.devYfUSDTContract, deposits: depositsToVault.map(correctTransactionAddress), withdrawals: withdrawalsFromVault.map(correctTransactionAddress), transfersIn: transfersIntoVault.map(correctTransactionAddress), diff --git a/services/vaults/apy/handler.js b/services/vaults/apy/handler.js index 6479302..7c55ce3 100644 --- a/services/vaults/apy/handler.js +++ b/services/vaults/apy/handler.js @@ -1,33 +1,19 @@ -const AWS = require("aws-sdk"); -const db = new AWS.DynamoDB.DocumentClient({ apiVersion: "2012-08-10" }); const _ = require("lodash"); +const ApyModel = require('../../../models/apy.model') const getVaultsApy = async () => { - const params = { - TableName: "vaultApy", - }; - const entries = await db.scan(params).promise(); - const apy = entries.Items; - - const injectVaultAddress = (vault) => { - vault.vaultAddress = vault.address; - return vault; - }; - const vaultAddress = _.map(apy, injectVaultAddress); + const apy = await ApyModel.findAll(); + apy.forEach((v) => delete v._id) return apy; }; exports.getVaultsApy = getVaultsApy; -exports.handler = async (event) => { +exports.handler = async (res) => { const apy = await getVaultsApy(); - const response = { - statusCode: 200, - headers: { - "Access-Control-Allow-Origin": "*", - "Access-Control-Allow-Credentials": true, - }, - body: JSON.stringify(apy), - }; - return response; + + res.status(200).json({ + message: '', + body: apy + }); }; diff --git a/services/vaults/apy/save/abis/daovault.js b/services/vaults/apy/save/abis/daovault.js new file mode 100644 index 0000000..3219cc5 --- /dev/null +++ b/services/vaults/apy/save/abis/daovault.js @@ -0,0 +1,861 @@ +module.exports = [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "fromStrategy", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "toStrategy", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "MigrateFunds", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldCommunityWallet", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newCommunityWallet", + "type": "address" + } + ], + "name": "SetCommunityWallet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "oldCustomNetworkFeePercentage", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "newCustomNetworkFeePercentage", + "type": "uint256" + } + ], + "name": "SetCustomNetworkFeePercentage", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "oldCustomNetworkFeeTier", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "newCustomNetworkFeeTier", + "type": "uint256" + } + ], + "name": "SetCustomNetworkFeeTier", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256[]", + "name": "oldNetworkFeePercentage", + "type": "uint256[]" + }, + { + "indexed": false, + "internalType": "uint256[]", + "name": "newNetworkFeePercentage", + "type": "uint256[]" + } + ], + "name": "SetNetworkFeePercentage", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256[]", + "name": "oldNetworkFeeTier2", + "type": "uint256[]" + }, + { + "indexed": false, + "internalType": "uint256[]", + "name": "newNetworkFeeTier2", + "type": "uint256[]" + } + ], + "name": "SetNetworkFeeTier2", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldTreasuryWallet", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newTreasuryWallet", + "type": "address" + } + ], + "name": "SetTreasuryWallet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [], + "name": "DENOMINATOR", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "LOCKTIME", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "canSetPendingStrategy", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "communityFee", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "communityWallet", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "customNetworkFeePercentage", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "customNetworkFeeTier", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "subtractedValue", + "type": "uint256" + } + ], + "name": "decreaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "deposit", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_address", + "type": "address" + } + ], + "name": "getCurrentBalance", + "outputs": [ + { + "internalType": "uint256", + "name": "result", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "addedValue", + "type": "uint256" + } + ], + "name": "increaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "_vaultName", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "_token", + "type": "address" + }, + { + "internalType": "address", + "name": "_strategy", + "type": "address" + }, + { + "internalType": "address", + "name": "_owner", + "type": "address" + } + ], + "name": "init", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "migrateFunds", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "networkFeePercentage", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "networkFeeTier2", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "pendingStrategy", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "refund", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_communityWallet", + "type": "address" + } + ], + "name": "setCommunityWallet", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_percentage", + "type": "uint256" + } + ], + "name": "setCustomNetworkFeePercentage", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_customNetworkFeeTier", + "type": "uint256" + } + ], + "name": "setCustomNetworkFeeTier", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256[]", + "name": "_networkFeePercentage", + "type": "uint256[]" + } + ], + "name": "setNetworkFeePercentage", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256[]", + "name": "_networkFeeTier2", + "type": "uint256[]" + } + ], + "name": "setNetworkFeeTier2", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_pendingStrategy", + "type": "address" + } + ], + "name": "setPendingStrategy", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_treasuryWallet", + "type": "address" + } + ], + "name": "setTreasuryWallet", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "strategy", + "outputs": [ + { + "internalType": "contract IStrategy2", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "token", + "outputs": [ + { + "internalType": "contract IERC20Upgradeable", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "treasuryFee", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "treasuryWallet", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "unlockMigrateFunds", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "unlockTime", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "vaultName", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "withdraw", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } +] \ No newline at end of file diff --git a/services/vaults/apy/save/abis/vaultCitadel.js b/services/vaults/apy/save/abis/vaultCitadel.js new file mode 100644 index 0000000..c55dc35 --- /dev/null +++ b/services/vaults/apy/save/abis/vaultCitadel.js @@ -0,0 +1 @@ +module.exports = [{"inputs":[{"internalType":"address","name":"_strategy","type":"address"},{"internalType":"address","name":"_treasuryWallet","type":"address"},{"internalType":"address","name":"_communityWallet","type":"address"},{"internalType":"address","name":"_admin","type":"address"},{"internalType":"address","name":"_strategist","type":"address"},{"internalType":"address","name":"_biconomy","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"tokenDeposit","type":"address"},{"indexed":false,"internalType":"address","name":"caller","type":"address"},{"indexed":false,"internalType":"uint256","name":"amtDeposit","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"sharesMint","type":"uint256"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_balanceOfWETH","type":"uint256"}],"name":"ETHToInvest","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"fromStrategy","type":"address"},{"indexed":true,"internalType":"address","name":"toStrategy","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"MigrateFunds","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldCustomNetworkFeePerc","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newCustomNetworkFeePerc","type":"uint256"}],"name":"SetCustomNetworkFeePerc","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"oldCustomNetworkFeeTier","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"newCustomNetworkFeeTier","type":"uint256"}],"name":"SetCustomNetworkFeeTier","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256[]","name":"oldNetworkFeePerc","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"newNetworkFeePerc","type":"uint256[]"}],"name":"SetNetworkFeePerc","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256[]","name":"oldNetworkFeeTier2","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"newNetworkFeeTier2","type":"uint256[]"}],"name":"SetNetworkFeeTier2","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"oldProfileSharingFeePerc","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"newProfileSharingFeePerc","type":"uint256"}],"name":"SetProfitSharingFeePerc","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"fees","type":"uint256"}],"name":"TransferredOutFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"tokenWithdraw","type":"address"},{"indexed":false,"internalType":"address","name":"caller","type":"address"},{"indexed":false,"internalType":"uint256","name":"amtWithdraw","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"sharesBurn","type":"uint256"}],"name":"Withdraw","type":"event"},{"inputs":[],"name":"LOCKTIME","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_balanceOfDeposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"admin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"canSetPendingStrategy","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"communityWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"customNetworkFeePerc","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"customNetworkFeeTier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"uint256","name":"_tokenIndex","type":"uint256"}],"name":"deposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"emergencyWithdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_price","type":"uint256"}],"name":"getAllPoolInETH","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAllPoolInUSD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenIndex","type":"uint256"}],"name":"getReimburseTokenAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"invest","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"forwarder","type":"address"}],"name":"isTrustedForwarder","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"migrateFunds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"networkFeePerc","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"networkFeeTier2","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingStrategy","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"profitSharingFeePerc","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"reimburseTokenFromStrategy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"reinvest","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_admin","type":"address"}],"name":"setAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_biconomy","type":"address"}],"name":"setBiconomy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_communityWallet","type":"address"}],"name":"setCommunityWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_percentage","type":"uint256"}],"name":"setCustomNetworkFeePerc","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_customNetworkFeeTier","type":"uint256"}],"name":"setCustomNetworkFeeTier","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_networkFeePerc","type":"uint256[]"}],"name":"setNetworkFeePerc","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_networkFeeTier2","type":"uint256[]"}],"name":"setNetworkFeeTier2","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_pendingStrategy","type":"address"}],"name":"setPendingStrategy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_percentages","type":"uint256[]"}],"name":"setPercTokenKeepInVault","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_percentage","type":"uint256"}],"name":"setProfitSharingFeePerc","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_strategist","type":"address"}],"name":"setStrategist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_treasuryWallet","type":"address"}],"name":"setTreasuryWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"strategist","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"strategy","outputs":[{"internalType":"contract ICitadelStrategy","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenFrom","type":"uint256"},{"internalType":"uint256","name":"_tokenTo","type":"uint256"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"swapTokenWithinVault","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"treasuryWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"trustedForwarder","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"unlockMigrateFunds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unlockTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"versionRecipient","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"_shares","type":"uint256"},{"internalType":"uint256","name":"_tokenIndex","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"yield","outputs":[],"stateMutability":"nonpayable","type":"function"}] \ No newline at end of file diff --git a/services/vaults/apy/save/config.js b/services/vaults/apy/save/config.js index 883a27f..c6270f3 100644 --- a/services/vaults/apy/save/config.js +++ b/services/vaults/apy/save/config.js @@ -3,6 +3,8 @@ const vaultContractV2ABI = require("./abis/vaultV2"); const vaultContractV3ABI = require("./abis/vaultV3"); const vaultContractV4ABI = require("./abis/vaultV4"); const vaultContractV5ABI = require("./abis/vaultV5"); +const vaultCitadelABI = require("./abis/vaultCitadel"); +const daoVaultABI = require("./abis/daovault"); module.exports = { delayTime: 1000, @@ -11,4 +13,6 @@ module.exports = { vaultContractV3ABI, vaultContractV4ABI, vaultContractV5ABI, + vaultCitadelABI, + daoVaultABI, }; diff --git a/services/vaults/apy/save/handler.js b/services/vaults/apy/save/handler.js index a219370..e9a333b 100644 --- a/services/vaults/apy/save/handler.js +++ b/services/vaults/apy/save/handler.js @@ -1,6 +1,8 @@ require("dotenv").config(); +const BigNumber = require("bignumber.js"); const AWS = require("aws-sdk"); -const db = new AWS.DynamoDB.DocumentClient({ apiVersion: "2012-08-10" }); +// const db = new AWS.DynamoDB.DocumentClient({ apiVersion: "2012-08-10" }); +const db = require('../../../../models/apy.model'); const Web3 = require("web3"); const moment = require("moment"); const delay = require("delay"); @@ -14,6 +16,7 @@ const infuraUrl = process.env.WEB3_ENDPOINT; const archiveNodeWeb3 = new Web3(archiveNodeUrl); const infuraWeb3 = new Web3(infuraUrl); const blocks = new EthDater(archiveNodeWeb3, delayTime); +const { testContracts, mainContracts } = require('../../../../config/serverless/domain'); let currentBlockNbr; let oneDayAgoBlock; @@ -21,10 +24,6 @@ let threeDaysAgoBlock; let oneWeekAgoBlock; let oneMonthAgoBlock; let nbrBlocksInDay; -const oneDayAgo = moment().subtract(1, "days").valueOf(); -const threeDaysAgo = moment().subtract(3, "days").valueOf(); -const oneWeekAgo = moment().subtract(1, "weeks").valueOf(); -const oneMonthAgo = moment().subtract(1, "months").valueOf(); const pools = [ { @@ -41,19 +40,12 @@ const pools = [ }, ]; -const saveVault = async (data) => { - const params = { - TableName: "vaultApy", - Item: data, - }; - await db - .put(params) - .promise() - .catch((err) => console.log("err", err)); +const saveVaultWithApy = async (data) => { + await db.add(data).catch((err) => console.log('err', err)); console.log(`Saved ${data.name}`); }; -const getApy = async ( +const getApy = ( previousValue, currentValue, previousBlockNbr, @@ -62,13 +54,127 @@ const getApy = async ( if (!previousValue) { return 0; } - const pricePerFullShareDelta = (currentValue - previousValue) / 1e18; const blockDelta = currentBlockNbr - previousBlockNbr; - const dailyRoi = (pricePerFullShareDelta / blockDelta) * 100 * nbrBlocksInDay; - const yearlyRoi = dailyRoi * 365; + const returnSincePrevBlock = (currentValue - previousValue) / previousValue; + const days = blockDelta / nbrBlocksInDay; + const yearlyRoi = 100 * ((1 + returnSincePrevBlock) ** (365.2425 / days) - 1); return yearlyRoi; }; +const getCompoundSupplyApy = async (cToken) => { + const ethMantissa = 1e18; + const blocksPerDay = 4 * 60 * 24; + const daysPerYear = 365; + + const supplyRatePerBlock = await cToken.methods.supplyRatePerBlock().call(); + const supplyApy = (((Math.pow((supplyRatePerBlock / ethMantissa * blocksPerDay) + 1, daysPerYear))) - 1) * 100; + return supplyApy; +}; + +const getPriceFromChainLink = async (block) => { + let contract, price = 0; + if (process.env.PRODUCTION != '') { + contract = new archiveNodeWeb3.eth.Contract(mainContracts.chainLink.USDT_ETH.abi, mainContracts.chainLink.USDT_ETH.address); + } else { + contract = new archiveNodeWeb3.eth.Contract(testContracts.chainLink.USDT_ETH.abi, testContracts.chainLink.USDT_ETH.address); + } + + try { + price = await contract.methods.latestAnswer().call(undefined, block); + } catch (ex) { } + await delay(delayTime); + return price; +}; + +const getCitadelPricePerFullShare = async (contract, block, inceptionBlockNbr) => { + const contractDidntExist = block < inceptionBlockNbr; + const inceptionBlock = block === inceptionBlockNbr; + + if (inceptionBlock) { + return 1e18; + } + if (contractDidntExist) { + return 0; + } + + let pricePerFullShare = 0; + try { + const price = await getPriceFromChainLink(block); + const pool = await contract.methods.getAllPoolInETH(price).call(undefined, block); + const totalSupply = await contract.methods.totalSupply().call(undefined, block); + pricePerFullShare = pool / totalSupply; + } catch (ex) { } + + await delay(delayTime); + return pricePerFullShare; +} + +const getElonPricePerFullShare = async (contract, block, inceptionBlockNbr) => { + const contractDidntExist = block < inceptionBlockNbr; + const inceptionBlock = block === inceptionBlockNbr; + + if (inceptionBlock) { + return 1e18; + } + if (contractDidntExist) { + return 0; + } + + let pricePerFullShare = 0; + try { + const pool = await contract.methods.getAllPoolInUSD().call(undefined, block); // All pool in USD (6 decimals) + const totalSupply = await contract.methods.totalSupply().call(undefined, block); + pricePerFullShare = (new BigNumber(pool)).shiftedBy(12).dividedBy(totalSupply).toNumber(); + } catch (ex) { } + + await delay(delayTime); + return pricePerFullShare; +} + +const getCubanPricePerFullShare = async (contract, block, inceptionBlockNbr) => { + const contractDidntExist = block < inceptionBlockNbr; + const inceptionBlock = block === inceptionBlockNbr; + + if (inceptionBlock) { + return 1e18; + } + if (contractDidntExist) { + return 0; + } + + let pricePerFullShare = 0; + try { + const pool = await contract.methods.getAllPoolInUSD().call(undefined, block); // All pool in USD (6 decimals) + const totalSupply = await contract.methods.totalSupply().call(undefined, block); + pricePerFullShare = (new BigNumber(pool)).shiftedBy(12).dividedBy(totalSupply).toNumber(); + } catch (ex) { } + + await delay(delayTime); + return pricePerFullShare; +} + +const getFaangPricePerFullShare = async (contract, block, inceptionBlockNbr) => { + const contractDidntExist = block < inceptionBlockNbr; + const inceptionBlock = block === inceptionBlockNbr; + + if (inceptionBlock) { + return 1e18; + } + if (contractDidntExist) { + return 0; + } + + let pricePerFullShare = 0; + try { + const pool = await contract.methods.getTotalValueInPool().call(undefined, block); + const totalSupply = await contract.methods.totalSupply().call(undefined, block); + pricePerFullShare = pool / totalSupply; + } catch (ex) { } + + await delay(delayTime); + return pricePerFullShare; +} + const getVirtualPrice = async (address, block) => { const poolContract = new archiveNodeWeb3.eth.Contract(poolABI, address); const virtualPrice = await poolContract.methods @@ -85,15 +191,21 @@ const getPricePerFullShare = async ( ) => { const contractDidntExist = block < inceptionBlockNbr; const inceptionBlock = block === inceptionBlockNbr; + if (inceptionBlock) { return 1e18; } if (contractDidntExist) { return 0; } - const pricePerFullShare = await vaultContract.methods - .getPricePerFullShare() - .call(undefined, block); + + let pricePerFullShare = 0; + try { + pricePerFullShare = await vaultContract.methods + .getPricePerFullShare() + .call(undefined, block); + } catch (ex) { } + await delay(delayTime); return pricePerFullShare; }; @@ -105,127 +217,347 @@ const getApyForVault = async (vault) => { vaultContractAddress: address, symbol, } = vault; + console.log(symbol); + // Compound Vault + if (vault.isCompound) { + let cToken; + + if (process.env.PRODUCTION != '') { + const symbol = Object.keys(mainContracts.farmer).find((key) => mainContracts.farmer[key].address.toLowerCase() === vault.vaultContractAddress.toLowerCase()); + cToken = new archiveNodeWeb3.eth.Contract(mainContracts.compund[symbol].abi, mainContracts.compund[symbol].address); + } else { + const symbol = Object.keys(testContracts.farmer).find((key) => testContracts.farmer[key].address.toLowerCase() === vault.vaultContractAddress.toLowerCase()); + cToken = new archiveNodeWeb3.eth.Contract(testContracts.compund[symbol].abi, testContracts.compund[symbol].address); + } + const compoundApy = await getCompoundSupplyApy(cToken) + return { + apyInceptionSample: 0, + apyOneDaySample: 0, + apyThreeDaySample: 0, + apyOneWeekSample: 0, + apyOneMonthSample: 0, + apyLoanscan: 0, + compoundApy, + citadelApy: 0, + elonApy: 0, + cubanApy: 0, + faangApy: 0, + }; + } else if (vault.isCitadel) { + // Citadel Vault + let contract; + if (process.env.PRODUCTION != '') { + contract = new archiveNodeWeb3.eth.Contract(mainContracts.farmer['daoCDV'].abi, mainContracts.farmer['daoCDV'].address); + } else { + contract = new archiveNodeWeb3.eth.Contract(testContracts.farmer['daoCDV'].abi, testContracts.farmer['daoCDV'].address); + } - const pool = _.find(pools, { symbol }); + const pricePerFullShareCurrent = await getCitadelPricePerFullShare(contract, currentBlockNbr, inceptionBlockNbr); + const pricePerFullShareOneDayAgo = await getCitadelPricePerFullShare(contract, oneDayAgoBlock, inceptionBlockNbr); + + // APY Calculation + const n = 365 / 2; // Assume 2 days to trigger invest function + const apr = (pricePerFullShareCurrent - pricePerFullShareOneDayAgo) * n; + const apy = (Math.pow((1 + (apr / 100) / n), n) - 1) * 100; + + return { + apyInceptionSample: 0, + apyOneDaySample: 0, + apyThreeDaySample: 0, + apyOneWeekSample: 0, + apyOneMonthSample: 0, + apyLoanscan: 0, + compoundApy: 0, + citadelApy: isNaN(apy) ? 0 : apy, + elonApy: 0, + cubanApy: 0, + faangApy: 0, + } + } else if (vault.isElon) { + // Elon's Ape Vault + let contract; + if (process.env.PRODUCTION != '') { + contract = new archiveNodeWeb3.eth.Contract(mainContracts.farmer['daoELO'].abi, mainContracts.farmer['daoELO'].address); + } else { + contract = new archiveNodeWeb3.eth.Contract(testContracts.farmer['daoELO'].abi, testContracts.farmer['daoELO'].address); + } - const vaultContract = new archiveNodeWeb3.eth.Contract(abi, address); + const pricePerFullShareCurrent = await getElonPricePerFullShare(contract, currentBlockNbr, inceptionBlockNbr); + const pricePerFullShareOneDayAgo = await getElonPricePerFullShare(contract, oneDayAgoBlock, inceptionBlockNbr); + + // APY Calculation + const n = 365 / 2; // Assume 2 days to trigger invest function + const apr = (0 < pricePerFullShareCurrent && 0 < pricePerFullShareOneDayAgo) ? (pricePerFullShareCurrent - pricePerFullShareOneDayAgo) * n : 0; + const apy = (Math.pow((1 + (apr / 100) / n), n) - 1) * 100; + + return { + apyInceptionSample: 0, + apyOneDaySample: 0, + apyThreeDaySample: 0, + apyOneWeekSample: 0, + apyOneMonthSample: 0, + apyLoanscan: 0, + compoundApy: 0, + citadelApy: 0, + elonApy: apy, + cubanApy: 0, + faangApy: 0, + } + } else if (vault.isCuban) { + // Cuban's Ape Vault + let contract; + if (process.env.PRODUCTION != '') { + contract = new archiveNodeWeb3.eth.Contract(mainContracts.farmer['daoCUB'].abi, mainContracts.farmer['daoCUB'].address); + } else { + contract = new archiveNodeWeb3.eth.Contract(testContracts.farmer['daoCUB'].abi, testContracts.farmer['daoCUB'].address); + } - const pricePerFullShareInception = await getPricePerFullShare( - vaultContract, - inceptionBlockNbr, - inceptionBlockNbr - ); + const pricePerFullShareCurrent = await getCubanPricePerFullShare(contract, currentBlockNbr, inceptionBlockNbr); + const pricePerFullShareOneDayAgo = await getCubanPricePerFullShare(contract, oneDayAgoBlock, inceptionBlockNbr); + + // APY Calculation + const n = 365 / 2; // Assume 2 days to trigger invest function + const apr = (0 < pricePerFullShareCurrent && 0 < pricePerFullShareOneDayAgo) ? (pricePerFullShareCurrent - pricePerFullShareOneDayAgo) * n : 0; + const apy = (Math.pow((1 + (apr / 100) / n), n) - 1) * 100; + + return { + apyInceptionSample: 0, + apyOneDaySample: 0, + apyThreeDaySample: 0, + apyOneWeekSample: 0, + apyOneMonthSample: 0, + apyLoanscan: 0, + compoundApy: 0, + citadelApy: 0, + elonApy: 0, + cubanApy: apy, + faangApy: 0, + } + } else if (vault.isFaang) { + // FAANG Stonk vault + let contract; + if (process.env.PRODUCTION != '') { + contract = new archiveNodeWeb3.eth.Contract(mainContracts.farmer['daoSTO'].abi, mainContracts.farmer['daoSTO'].address); + } else { + contract = new archiveNodeWeb3.eth.Contract(testContracts.farmer['daoSTO'].abi, testContracts.farmer['daoSTO'].address); + } - const pricePerFullShareCurrent = await getPricePerFullShare( - vaultContract, - currentBlockNbr, - inceptionBlockNbr - ); + let pricePerFullShareCurrent = await getFaangPricePerFullShare(contract, currentBlockNbr, inceptionBlockNbr); + let pricePerFullShareOneDayAgo = await getFaangPricePerFullShare(contract, oneDayAgoBlock, inceptionBlockNbr); + pricePerFullShareCurrent = (0 < pricePerFullShareCurrent) ? pricePerFullShareCurrent : 1; + pricePerFullShareOneDayAgo = (0 < pricePerFullShareOneDayAgo) ? pricePerFullShareOneDayAgo : 1; + + // APY Calculation + const n = 365 / 2; // Assume 2 days to trigger invest function + const apr = (pricePerFullShareCurrent - pricePerFullShareOneDayAgo) * n; + const apy = (Math.pow((1 + (apr / 100) / n), n) - 1) * 100; + + return { + apyInceptionSample: 0, + apyOneDaySample: 0, + apyThreeDaySample: 0, + apyOneWeekSample: 0, + apyOneMonthSample: 0, + apyLoanscan: 0, + compoundApy: 0, + citadelApy: 0, + elonApy: 0, + cubanApy: 0, + faangApy: apy, + } + } else if (vault.isHarvest) { + // Harvest Vault + const vaultContract = new archiveNodeWeb3.eth.Contract(vault.vaultContractABI, vault.vaultContractAddress); + const strategyContract = new archiveNodeWeb3.eth.Contract(vault.strategyABI, vault.strategyContractAddress); + + // Get current price per full share + const pool = strategyContract.methods.pool().call(); + const totalSupply = vaultContract.methods.totalSupply().call(); + const currentPricePerFullShare = pool / totalSupply; + + const dataRequiredForCalculation = { + vaultContract, + strategyContract, + currentPricePerFullShare, + lastMeasurement: vault.lastMeasurement + }; + + // APR based on one day sample + Object.assign(dataRequiredForCalculation, { blockNumber: oneDayAgoBlock }); + const aprOneDaySample = await getHarvestFarmerAPR( + vaultContract, + strategyContract, + oneDayAgoBlock, + currentPricePerFullShare); - const pricePerFullShareOneDayAgo = await getPricePerFullShare( - vaultContract, - oneDayAgoBlock, - inceptionBlockNbr - ); + // APR based on three day sample + Object.assign(dataRequiredForCalculation, { blockNumber: threeDaysAgoBlock }); + const aprThreeDaySample = await getHarvestFarmerAPR( + vaultContract, + strategyContract, + threeDaysAgoBlock, + currentPricePerFullShare); - const pricePerFullShareThreeDaysAgo = await getPricePerFullShare( - vaultContract, - threeDaysAgoBlock, - inceptionBlockNbr - ); + // APR based on one week sample + Object.assign(dataRequiredForCalculation, { blockNumber: oneWeekAgoBlock }); + const aprOneWeekSample = await getHarvestFarmerAPR( + vaultContract, + strategyContract, + oneWeekAgoBlock, + currentPricePerFullShare); - const pricePerFullShareOneWeekAgo = await getPricePerFullShare( - vaultContract, - oneWeekAgoBlock, - inceptionBlockNbr - ); + // APR based on one month sample + Object.assign(dataRequiredForCalculation, { blockNumber: oneMonthAgoBlock }); + const aprOneMonthSample = await getHarvestFarmerAPR( + vaultContract, + strategyContract, + oneMonthAgoBlock, + currentPricePerFullShare); - const pricePerFullShareOneMonthAgo = await getPricePerFullShare( - vaultContract, - oneMonthAgoBlock, - inceptionBlockNbr - ); + const aprData = { + aprOneDaySample, + aprThreeDaySample, + aprOneWeekSample, + aprOneMonthSample + } - const now = Date.now(); + console.log(aprData); + + return { + ...aprData, + apyLoanscan: 0, + compoundApy: 0, + citadelApy: 0, + elonApy: 0, + cubanApy: 0, + faangApy: 0, + }; + + } else { + // Yearn Vault + const pool = _.find(pools, { symbol }); + var vaultContract = new archiveNodeWeb3.eth.Contract(abi, address); + + const pricePerFullShareInception = await getPricePerFullShare( + vaultContract, + inceptionBlockNbr, + inceptionBlockNbr + ); - const apyInceptionSample = await getApy( - pricePerFullShareInception, - pricePerFullShareCurrent, - inceptionBlockNbr, - currentBlockNbr - ); + const pricePerFullShareCurrent = await getPricePerFullShare( + vaultContract, + currentBlockNbr, + inceptionBlockNbr + ); - const apyOneDaySample = - (await getApy( - pricePerFullShareOneDayAgo, - pricePerFullShareCurrent, + const pricePerFullShareOneDayAgo = await getPricePerFullShare( + vaultContract, oneDayAgoBlock, - currentBlockNbr - )) || apyInceptionSample; + inceptionBlockNbr + ); - const apyThreeDaySample = - (await getApy( - pricePerFullShareThreeDaysAgo, - pricePerFullShareCurrent, + const pricePerFullShareThreeDaysAgo = await getPricePerFullShare( + vaultContract, threeDaysAgoBlock, - currentBlockNbr - )) || apyInceptionSample; + inceptionBlockNbr + ); - const apyOneWeekSample = - (await getApy( - pricePerFullShareOneWeekAgo, - pricePerFullShareCurrent, + const pricePerFullShareOneWeekAgo = await getPricePerFullShare( + vaultContract, oneWeekAgoBlock, - currentBlockNbr - )) || apyInceptionSample; + inceptionBlockNbr + ); - const apyOneMonthSample = - (await getApy( - pricePerFullShareOneMonthAgo, - pricePerFullShareCurrent, + const pricePerFullShareOneMonthAgo = await getPricePerFullShare( + vaultContract, oneMonthAgoBlock, - currentBlockNbr - )) || apyInceptionSample; - - let apyLoanscan = apyOneDaySample; - - const apyData = { - apyInceptionSample, - apyOneDaySample, - apyThreeDaySample, - apyOneWeekSample, - apyOneMonthSample, - }; - - if (pool) { - const poolAddress = pool.address; - const virtualPriceCurrent = await getVirtualPrice( - poolAddress, - currentBlockNbr - ); - const virtualPriceOneDayAgo = await getVirtualPrice( - poolAddress, - oneDayAgoBlock + inceptionBlockNbr ); - const poolApy = await getApy( - virtualPriceOneDayAgo, - virtualPriceCurrent, - oneDayAgoBlock, + const apyInceptionSample = getApy( + pricePerFullShareInception, + pricePerFullShareCurrent, + inceptionBlockNbr, currentBlockNbr ); - const poolPct = poolApy / 100; - const vaultPct = apyOneDaySample / 100; - apyLoanscan = ((1 + poolPct) * (1 + vaultPct) - 1) * 100; + const apyOneDaySample = + (getApy( + pricePerFullShareOneDayAgo, + pricePerFullShareCurrent, + oneDayAgoBlock, + currentBlockNbr + )) || apyInceptionSample; + + const apyThreeDaySample = + (getApy( + pricePerFullShareThreeDaysAgo, + pricePerFullShareCurrent, + threeDaysAgoBlock, + currentBlockNbr + )) || apyInceptionSample; + + const apyOneWeekSample = + (getApy( + pricePerFullShareOneWeekAgo, + pricePerFullShareCurrent, + oneWeekAgoBlock, + currentBlockNbr + )) || apyInceptionSample; + + const apyOneMonthSample = + (getApy( + pricePerFullShareOneMonthAgo, + pricePerFullShareCurrent, + oneMonthAgoBlock, + currentBlockNbr + )) || apyInceptionSample; + + let apyLoanscan = 0; + + const apyData = { + apyInceptionSample, + apyOneDaySample, + apyThreeDaySample, + apyOneWeekSample, + apyOneMonthSample, + }; + + if (pool) { + const poolAddress = pool.address; + const virtualPriceCurrent = await getVirtualPrice( + poolAddress, + currentBlockNbr + ); + const virtualPriceOneDayAgo = await getVirtualPrice( + poolAddress, + oneDayAgoBlock + ); + + const poolApy = await getApy( + virtualPriceOneDayAgo, + virtualPriceCurrent, + oneDayAgoBlock, + currentBlockNbr + ); + + const poolPct = poolApy / 100; + const vaultPct = apyOneDaySample / 100; + apyLoanscan = ((1 + poolPct) * (1 + vaultPct) - 1) * 100; + + return { ...apyData, poolApy, apyLoanscan }; + } - return { ...apyData, poolApy, apyLoanscan }; + return { + ...apyData, + apyLoanscan, + compoundApy: 0, + citadelApy: 0, + elonApy: 0, + cubanApy: 0, + faangApy: 0, + }; } - - return { - ...apyData, - apyLoanscan, - }; }; const getLoanscanApyForVault = async (vault) => { @@ -254,15 +586,18 @@ const readVault = async (vault) => { vaultContractAddress: address, erc20address: tokenAddress, } = vault; + console.log(`Reading vault ${vault.name}`); + if (!abi || !address) { console.log(`Vault ABI not found: ${name}`); return null; } - const contract = new infuraWeb3.eth.Contract(abi, address); + + // const contract = new infuraWeb3.eth.Contract(abi, address); const apy = await getApyForVault(vault); - const loanscanApy = await getLoanscanApyForVault(vault); - console.log("Vault: ", name, apy); + + // const loanscanApy = await getLoanscanApyForVault(vault); const data = { address, name, @@ -274,36 +609,61 @@ const readVault = async (vault) => { timestamp: Date.now(), ...apy, }; - await saveVault(data); + + await saveVaultWithApy(data); return data; }; -module.exports.handler = async (context) => { - console.log("Fetching historical blocks"); - currentBlockNbr = await infuraWeb3.eth.getBlockNumber(); - await delay(delayTime); - oneDayAgoBlock = (await blocks.getDate(oneDayAgo)).block; - threeDaysAgoBlock = (await blocks.getDate(threeDaysAgo)).block; - oneWeekAgoBlock = (await blocks.getDate(oneWeekAgo)).block; - oneMonthAgoBlock = (await blocks.getDate(oneMonthAgo)).block; - nbrBlocksInDay = currentBlockNbr - oneDayAgoBlock; - console.log("Done fetching historical blocks"); - - const vaultsWithApy = []; - for (const vault of vaults) { - const vaultWithApy = await readVault(vault); - if (vaultWithApy !== null) { - vaultsWithApy.push(vaultWithApy); - } +const getHarvestFarmerAPR = async (vaultData) => { + const { + vaultContract, + strategyContract, + currentPricePerFullShare, + lastMeasurement, + blockNumber, + } = vaultData; + + let apr = 0; + + // To ensure block number happens after contract creation + if (blockNumber >= lastMeasurement) { + const pool = await strategyContract.methods.pool().call(undefined, blockNumber); + const totalSupply = await vaultContract.methods.totalSupply().call(undefined, blockNumber); + + const pricePerFullShareOfBeforeDay = pool / totalSupply; + + // APR calculation + apr = (currentPricePerFullShare - pricePerFullShareOfBeforeDay) * 100 * 365; + } + return apr; +}; + +module.exports.handler = async () => { + try { + const oneDayAgo = moment().subtract(1, "days").valueOf(); + const threeDaysAgo = moment().subtract(3, "days").valueOf(); + const oneWeekAgo = moment().subtract(1, "weeks").valueOf(); + const oneMonthAgo = moment().subtract(1, "months").valueOf(); + + console.log("Fetching historical blocks", 'save Vault APY'); + currentBlockNbr = await infuraWeb3.eth.getBlockNumber(); await delay(delayTime); + oneDayAgoBlock = (await blocks.getDate(oneDayAgo)).block; + threeDaysAgoBlock = (await blocks.getDate(threeDaysAgo)).block; + oneWeekAgoBlock = (await blocks.getDate(oneWeekAgo)).block; + oneMonthAgoBlock = (await blocks.getDate(oneMonthAgo)).block; + nbrBlocksInDay = currentBlockNbr - oneDayAgoBlock; + console.log("Done fetching historical blocks"); + + const vaultsWithApy = []; + for (const vault of vaults) { + const vaultWithApy = await readVault(vault); + if (vaultWithApy !== null) { + vaultsWithApy.push(vaultWithApy); + } + await delay(delayTime); + } + } catch (err) { + console.error(err); } - const response = { - statusCode: 200, - headers: { - "Access-Control-Allow-Origin": "*", - "Access-Control-Allow-Credentials": true, - }, - body: JSON.stringify(vaultsWithApy), - }; - return response; }; diff --git a/services/vaults/apy/save/historical-handle-polygon.js b/services/vaults/apy/save/historical-handle-polygon.js new file mode 100644 index 0000000..de3c64e --- /dev/null +++ b/services/vaults/apy/save/historical-handle-polygon.js @@ -0,0 +1,147 @@ +const vaults = require("./polygon-vault"); +const { delayTime } = require("./config"); +const delay = require("delay"); +const moment = require("moment"); +const contractHelper = require("../../../../utils/contract"); +const historicalDb = require('../../../../models/historical-apy.model'); +const { + testContracts, + mainContracts +} = require('../../../../config/serverless/domain'); + +let polygonBlockNumber = { + current: 0, + oneDay: 0, + threeDay: 0, + oneWeek: 0, + oneMonth: 0, +} + +const getMoneyPrinterPricePerFullShare = async (contract, blockNumber, inceptionBlockNumber) => { + if(blockNumber === inceptionBlockNumber) { + return 1e18; + } + if(blockNumber < inceptionBlockNumber) { + return 0; + } + + let pricePerFullShare = 0; + try { + const pool = await contract.methods.getValueInPool().call(undefined, blockNumber); + const totalSupply = await contract.methods.totalSupply().call(undefined, blockNumber); + pricePerFullShare = pool / totalSupply; + } catch (err) { + console.log(`Error in getMoneyPrinterPricePerFullShare()`,err); + } + + await delay(delayTime); + return pricePerFullShare; +} + +const getApyForVault = async (vault) => { + const { lastMeasurement: inceptionBlockNumber } = vault + + // Money Printer vault + if(vault.isMoneyPrinter) { + const contractInfo = (process.env.PRODUCTION != '') + ? mainContracts.farmer['daoMPT'] + : testContracts.farmer['daoMPT']; + const contract = await contractHelper.getPolygonContract(contractInfo.abi, contractInfo.address); + + let pricePerFullShareCurrent = await getMoneyPrinterPricePerFullShare(contract, polygonBlockNumber.current, inceptionBlockNumber); + let pricePerFullShareOneDayAgo = await getMoneyPrinterPricePerFullShare(contract, polygonBlockNumber.oneDay, inceptionBlockNumber); + + pricePerFullShareCurrent = (0 < pricePerFullShareCurrent) ? pricePerFullShareCurrent : 1; + pricePerFullShareOneDayAgo = (0 < pricePerFullShareOneDayAgo) ? pricePerFullShareOneDayAgo : 1; + + const n = 5 * 24 * 365; // Assume trigger compound function 5 times per HOUR + const apr = (pricePerFullShareCurrent - pricePerFullShareOneDayAgo) * n; + let apy = (Math.pow((1 + (apr / 100) / n), n) - 1) * 100; + + // If APY is 0, then take the previous value + if(apy === 0) { + const mpHistoricalApy = await historicalDb.getLatestNonZeroMoneyPrinterHistoricalAPY(); + apy = mpHistoricalApy[0].moneyPrinterApy + } + + return { + apyInceptionSample: 0, + apyOneDaySample: 0, + apyThreeDaySample: 0, + apyOneWeekSample: 0, + apyOneMonthSample: 0, + apyLoanscan: 0, + compoundApy: 0, + citadelApy: 0, + elonApy: 0, + faangApy: 0, + moneyPrinterApy: apy, + } + } +} + +const saveAndReadVault = async (vault) => { + if(!vault.vaultContractABI || !vault.vaultContractAddress) { + console.log(`Vault missing abi or address: ${vault.name}`); + return; + } + + const apy = await getApyForVault(vault); + const data = { + ...apy, + aprs: 0, + symbol: vault.symbol, + } + await saveHistoricalAPY(data, vault.vaultSymbol + '_historical-apy'); + return data; +} + +// DB +const saveHistoricalAPY = async (data, collection) => { + await historicalDb.add(data, collection).catch((err) => console.log('err', err)); +} + +// Cronjob handler +const saveHandler = async() => { + try { + const oneDayAgo = moment().subtract(1, "days").valueOf(); + const threeDaysAgo = moment().subtract(3, "days").valueOf(); + const oneWeekAgo = moment().subtract(1, "weeks").valueOf(); + const oneMonthAgo = moment().subtract(1, "months").valueOf(); + + console.log("Fetching Polygon historical blocks"); + current = await contractHelper.getPolygonCurrentBlockNumber(); + console.log(`(Polygon) Current Block Number: ${current}`); + oneDay = await contractHelper.getPolygonBlockNumberByTimeline(oneDayAgo); + console.log(`(Polygon) 1d ago Block Number: ${oneDay}`); + threeDay = await contractHelper.getPolygonBlockNumberByTimeline(threeDaysAgo); + console.log(`(Polygon) 3d ago Block Number: ${threeDay}`); + oneWeek = await contractHelper.getPolygonBlockNumberByTimeline(oneWeekAgo); + console.log(`(Polygon) 1w ago Block Number: ${oneWeek}`); + oneMonth = await contractHelper.getPolygonBlockNumberByTimeline(oneMonthAgo); + console.log(`(Polygon) 1m ago Block Number: ${oneMonth}`); + polygonBlockNumber = {current, oneDay, threeDay, oneWeek, oneMonth }; + + console.log("Done fetching Polygon historical blocks"); + } catch (err){ + console.log("Error in fetching polygon historical block", err); + } + + const vaultsWithApy = []; + for(const vault of vaults) { + try { + const vaultWithApy = await saveAndReadVault(vault); + if(vaultWithApy !== null) { + vaultsWithApy.push(vaultWithApy); + await delay(delayTime); + } + } catch (err) { + console.log("Something wrong in save vault APY", err) + } + } +} + +module.exports = { + getMoneyPrinterPricePerFullShare, + saveHandler +}; \ No newline at end of file diff --git a/services/vaults/apy/save/historical-handle.js b/services/vaults/apy/save/historical-handle.js new file mode 100644 index 0000000..26dfb28 --- /dev/null +++ b/services/vaults/apy/save/historical-handle.js @@ -0,0 +1,795 @@ +require("dotenv").config(); +const BigNumber = require("bignumber.js"); +const historicalDb = require('../../../../models/historical-apy.model'); +const Web3 = require("web3"); +const moment = require("moment"); +const delay = require("delay"); +const _ = require("lodash"); +const vaults = require("./vaults"); +const EthDater = require("./ethereum-block-by-date.js"); +const { delayTime } = require("./config"); +const poolABI = require("./abis/pool"); +const archiveNodeUrl = process.env.ARCHIVENODE_ENDPOINT; +const infuraUrl = process.env.WEB3_ENDPOINT; +const archiveNodeWeb3 = new Web3(archiveNodeUrl); +const infuraWeb3 = new Web3(infuraUrl); +const blocks = new EthDater(archiveNodeWeb3, delayTime); +const { aggregatedContractABI } = require('../../../../config/abi'); +const { aggregatedContractAddress, testContracts, mainContracts } = require('../../../../config/serverless/domain'); + +let currentBlockNbr; +let oneDayAgoBlock; +let threeDaysAgoBlock; +let oneWeekAgoBlock; +let oneMonthAgoBlock; +let nbrBlocksInDay; + +const pools = [ + { + symbol: "yCRV", + address: "0x45F783CCE6B7FF23B2ab2D70e416cdb7D6055f51", + }, + { + symbol: "crvBUSD", + address: "0x79a8C46DeA5aDa233ABaFFD40F3A0A2B1e5A4F27", + }, + { + symbol: "crvBTC", + address: "0x7fC77b5c7614E1533320Ea6DDc2Eb61fa00A9714", + }, +]; + +const saveHistoricalAPY = async (data, collection) => { + await historicalDb.add(data, collection).catch((err) => console.log('err', err)); +}; + +const getApy = ( + previousValue, + currentValue, + previousBlockNbr, + currentBlockNbr +) => { + if (!previousValue) { + return 0; + } + const blockDelta = currentBlockNbr - previousBlockNbr; + const returnSincePrevBlock = (currentValue - previousValue) / previousValue; + const days = blockDelta / nbrBlocksInDay; + const yearlyRoi = 100 * ((1 + returnSincePrevBlock) ** (365.2425 / days) - 1); + return yearlyRoi; +}; + +const getCompoundSupplyApy = async (cToken) => { + const ethMantissa = 1e18; + const blocksPerDay = 4 * 60 * 24; + const daysPerYear = 365; + + const supplyRatePerBlock = await cToken.methods.supplyRatePerBlock().call(); + const supplyApy = (((Math.pow((supplyRatePerBlock / ethMantissa * blocksPerDay) + 1, daysPerYear))) - 1) * 100; + return supplyApy; +}; + +const getVirtualPrice = async (address, block) => { + const poolContract = new archiveNodeWeb3.eth.Contract(poolABI, address); + const virtualPrice = await poolContract.methods + .get_virtual_price() + .call(undefined, block); + await delay(delayTime); + return virtualPrice; +}; + +const getPricePerFullShare = async ( + vaultContract, + block, + inceptionBlockNbr +) => { + const contractDidntExist = block < inceptionBlockNbr; + const inceptionBlock = block === inceptionBlockNbr; + + if (inceptionBlock) { + return 1e18; + } + if (contractDidntExist) { + return 0; + } + let pricePerFullShare = 0; + try { + pricePerFullShare = await vaultContract.methods + .getPricePerFullShare() + .call(undefined, block); + } catch (ex) {} + await delay(delayTime); + return pricePerFullShare; +}; + +const getPriceFromChainLink = async (block) => { + let contract, price = 0; + if (process.env.PRODUCTION != '') { + contract = new archiveNodeWeb3.eth.Contract(mainContracts.chainLink.USDT_ETH.abi, mainContracts.chainLink.USDT_ETH.address); + } else { + contract = new archiveNodeWeb3.eth.Contract(testContracts.chainLink.USDT_ETH.abi, testContracts.chainLink.USDT_ETH.address); + } + + try { + price = await contract.methods.latestAnswer().call(undefined, block); + } catch (ex) {} + await delay(delayTime); + return price; +}; + +const getCitadelPricePerFullShare = async (contract, block, inceptionBlockNbr) => { + const contractDidntExist = block < inceptionBlockNbr; + const inceptionBlock = block === inceptionBlockNbr; + + if (inceptionBlock) { + return 1e18; + } + if (contractDidntExist) { + return 0; + } + + let pricePerFullShare = 0; + try { + const price = await getPriceFromChainLink(block); + const pool = await contract.methods.getAllPoolInETH(price).call(undefined, block); + const totalSupply = await contract.methods.totalSupply().call(undefined, block); + pricePerFullShare = pool / totalSupply; + } catch (ex) {} + + await delay(delayTime); + return pricePerFullShare; +}; + +const getElonPricePerFullShare = async (contract, block, inceptionBlockNbr) => { + const contractDidntExist = block < inceptionBlockNbr; + const inceptionBlock = block === inceptionBlockNbr; + + if (inceptionBlock) { + return 1e18; + } + if (contractDidntExist) { + return 0; + } + + let pricePerFullShare = 0; + try { + const pool = await contract.methods.getAllPoolInUSD().call(undefined, block); // All pool in USD (6 decimals) + const totalSupply = await contract.methods.totalSupply().call(undefined, block); + pricePerFullShare = (new BigNumber(pool)).shiftedBy(12).dividedBy(totalSupply).toNumber(); + } catch (ex) {} + + await delay(delayTime); + return pricePerFullShare; +}; + +const getCubanPricePerFullShare = async (contract, block, inceptionBlockNbr) => { + const contractDidntExist = block < inceptionBlockNbr; + const inceptionBlock = block === inceptionBlockNbr; + + if (inceptionBlock) { + return 1e18; + } + if (contractDidntExist) { + return 0; + } + + let pricePerFullShare = 0; + try { + const pool = await contract.methods.getAllPoolInUSD().call(undefined, block); // All pool in USD (6 decimals) + const totalSupply = await contract.methods.totalSupply().call(undefined, block); + pricePerFullShare = (new BigNumber(pool)).shiftedBy(12).dividedBy(totalSupply).toNumber(); + } catch (ex) {} + + await delay(delayTime); + return pricePerFullShare; +}; + +const getFaangPricePerFullShare = async (contract, block, inceptionBlockNbr) => { + const contractDidntExist = block < inceptionBlockNbr; + const inceptionBlock = block === inceptionBlockNbr; + + if (inceptionBlock) { + return 1e18; + } + if (contractDidntExist) { + return 0; + } + + let pricePerFullShare = 0; + try { + const pool = await contract.methods.getTotalValueInPool().call(undefined, block); + const totalSupply = await contract.methods.totalSupply().call(undefined, block); + pricePerFullShare = pool / totalSupply; + } catch (ex) {} + + await delay(delayTime); + return pricePerFullShare; +}; + +const getApyForVault = async (vault) => { + const { + lastMeasurement: inceptionBlockNbr, + vaultContractABI: abi, + vaultContractAddress: address, + symbol, + } = vault; + + // Compound Vault + if (vault.isCompound) { + let cToken; + + if (process.env.PRODUCTION != '') { + const symbol = Object.keys(mainContracts.farmer).find((key) => mainContracts.farmer[key].address.toLowerCase() === vault.vaultContractAddress.toLowerCase()); + cToken = new archiveNodeWeb3.eth.Contract(mainContracts.compund[symbol].abi, mainContracts.compund[symbol].address); + } else { + const symbol = Object.keys(testContracts.farmer).find((key) => testContracts.farmer[key].address.toLowerCase() === vault.vaultContractAddress.toLowerCase()); + cToken = new archiveNodeWeb3.eth.Contract(testContracts.compund[symbol].abi, testContracts.compund[symbol].address); + } + const compoundApy = await getCompoundSupplyApy(cToken) + return { + apyInceptionSample: 0, + apyOneDaySample: 0, + apyThreeDaySample: 0, + apyOneWeekSample: 0, + apyOneMonthSample: 0, + apyLoanscan: 0, + compoundApy, + citadelApy: 0, + elonApy: 0, + cubanApy: 0, + faangApy: 0, + moneyPrinterApy: 0, + }; + } else if (vault.isCitadel) { + // Citadel Vault + let contract; + if (process.env.PRODUCTION != '') { + contract = new archiveNodeWeb3.eth.Contract(mainContracts.farmer['daoCDV'].abi, mainContracts.farmer['daoCDV'].address); + } else { + contract = new archiveNodeWeb3.eth.Contract(testContracts.farmer['daoCDV'].abi, testContracts.farmer['daoCDV'].address); + } + + const pricePerFullShareCurrent = await getCitadelPricePerFullShare(contract, currentBlockNbr, inceptionBlockNbr); + const pricePerFullShareOneDayAgo = await getCitadelPricePerFullShare(contract, oneDayAgoBlock, inceptionBlockNbr); + + // APY Calculation + const n = 365 / 2; // Assume 2 days to trigger invest function + const apr = (pricePerFullShareCurrent - pricePerFullShareOneDayAgo) * n; + const apy = (Math.pow((1 + (apr / 100) / n), n) - 1) * 100; + + return { + apyInceptionSample: 0, + apyOneDaySample: 0, + apyThreeDaySample: 0, + apyOneWeekSample: 0, + apyOneMonthSample: 0, + apyLoanscan: 0, + compoundApy: 0, + citadelApy: isNaN(apy) ? 0 : apy, + elonApy: 0, + cubanApy: 0, + faangApy: 0, + moneyPrinterApy: 0, + } + } else if (vault.isElon) { + // Elon's APE Vault + let contract; + if (process.env.PRODUCTION != '') { + contract = new archiveNodeWeb3.eth.Contract(mainContracts.farmer['daoELO'].abi, mainContracts.farmer['daoELO'].address); + } else { + contract = new archiveNodeWeb3.eth.Contract(testContracts.farmer['daoELO'].abi, testContracts.farmer['daoELO'].address); + } + + const pricePerFullShareCurrent = await getElonPricePerFullShare(contract, currentBlockNbr, inceptionBlockNbr); + const pricePerFullShareOneDayAgo = await getElonPricePerFullShare(contract, oneDayAgoBlock, inceptionBlockNbr); + + // APY Calculation + const n = 365 / 2; // Assume 2 days to trigger invest function + const apr = (0 < pricePerFullShareCurrent && 0 < pricePerFullShareOneDayAgo) ? (pricePerFullShareCurrent - pricePerFullShareOneDayAgo) * n : 0; + const apy = (Math.pow((1 + (apr / 100) / n), n) - 1) * 100; + + return { + apyInceptionSample: 0, + apyOneDaySample: 0, + apyThreeDaySample: 0, + apyOneWeekSample: 0, + apyOneMonthSample: 0, + apyLoanscan: 0, + compoundApy: 0, + citadelApy: 0, + elonApy: apy, + cubanApy: 0, + faangApy: 0, + } + } else if (vault.isCuban) { + // Cuban's APE Vault + let contract; + if (process.env.PRODUCTION != '') { + contract = new archiveNodeWeb3.eth.Contract(mainContracts.farmer['daoCUB'].abi, mainContracts.farmer['daoCUB'].address); + } else { + contract = new archiveNodeWeb3.eth.Contract(testContracts.farmer['daoCUB'].abi, testContracts.farmer['daoCUB'].address); + } + + const pricePerFullShareCurrent = await getCubanPricePerFullShare(contract, currentBlockNbr, inceptionBlockNbr); + const pricePerFullShareOneDayAgo = await getCubanPricePerFullShare(contract, oneDayAgoBlock, inceptionBlockNbr); + + // APY Calculation + const n = 365 / 2; // Assume 2 days to trigger invest function + const apr = (0 < pricePerFullShareCurrent && 0 < pricePerFullShareOneDayAgo) ? (pricePerFullShareCurrent - pricePerFullShareOneDayAgo) * n : 0; + const apy = (Math.pow((1 + (apr / 100) / n), n) - 1) * 100; + + return { + apyInceptionSample: 0, + apyOneDaySample: 0, + apyThreeDaySample: 0, + apyOneWeekSample: 0, + apyOneMonthSample: 0, + apyLoanscan: 0, + compoundApy: 0, + citadelApy: 0, + elonApy: 0, + cubanApy: apy, + faangApy: 0, + moneyPrinterApy: 0, + } + } else if (vault.isFaang) { + // DAO Faang Stonk Vault + let contract; + if (process.env.PRODUCTION != '') { + contract = new archiveNodeWeb3.eth.Contract(mainContracts.farmer['daoSTO'].abi, mainContracts.farmer['daoSTO'].address); + } else { + contract = new archiveNodeWeb3.eth.Contract(testContracts.farmer['daoSTO'].abi, testContracts.farmer['daoSTO'].address); + } + + let pricePerFullShareCurrent = await getFaangPricePerFullShare(contract, currentBlockNbr, inceptionBlockNbr); + let pricePerFullShareOneDayAgo = await getFaangPricePerFullShare(contract, oneDayAgoBlock, inceptionBlockNbr); + pricePerFullShareCurrent = (0 < pricePerFullShareCurrent) ? pricePerFullShareCurrent : 1; + pricePerFullShareOneDayAgo = (0 < pricePerFullShareOneDayAgo) ? pricePerFullShareOneDayAgo : 1; + + // APY Calculation + const n = 365 / 2; // Assume 2 days to trigger invest function + const apr = (pricePerFullShareCurrent - pricePerFullShareOneDayAgo) * n; + const apy = (Math.pow((1 + (apr / 100) / n), n) - 1) * 100; + + return { + apyInceptionSample: 0, + apyOneDaySample: 0, + apyThreeDaySample: 0, + apyOneWeekSample: 0, + apyOneMonthSample: 0, + apyLoanscan: 0, + compoundApy: 0, + citadelApy: 0, + elonApy: 0, + cubanApy: 0, + faangApy: apy, + moneyPrinterApy: 0, + } + } else if (vault.isHarvest) { + // Harvest Vault + const vaultContract = new archiveNodeWeb3.eth.Contract(vault.vaultContractABI, vault.vaultContractAddress); + const strategyContract = new archiveNodeWeb3.eth.Contract(vault.strategyABI, vault.strategyContractAddress); + + // Get current price per full share + const pool = strategyContract.methods.pool().call(); + const totalSupply = vaultContract.methods.totalSupply().call(); + const currentPricePerFullShare = pool / totalSupply; + + const dataRequiredForCalculation = { + vaultContract, + strategyContract, + currentPricePerFullShare, + lastMeasurement: vault.lastMeasurement + }; + + // APR based on one day sample + Object.assign(dataRequiredForCalculation, { blockNumber: oneDayAgoBlock }); + const aprOneDaySample = await getHarvestFarmerAPR( + vaultContract, + strategyContract, + oneDayAgoBlock, + currentPricePerFullShare); + + // APR based on three day sample + Object.assign(dataRequiredForCalculation, { blockNumber: threeDaysAgoBlock }); + const aprThreeDaySample = await getHarvestFarmerAPR( + vaultContract, + strategyContract, + threeDaysAgoBlock, + currentPricePerFullShare); + + // APR based on one week sample + Object.assign(dataRequiredForCalculation, { blockNumber: oneWeekAgoBlock }); + const aprOneWeekSample = await getHarvestFarmerAPR( + vaultContract, + strategyContract, + oneWeekAgoBlock, + currentPricePerFullShare); + + // APR based on one month sample + Object.assign(dataRequiredForCalculation, { blockNumber: oneMonthAgoBlock }); + const aprOneMonthSample = await getHarvestFarmerAPR( + vaultContract, + strategyContract, + oneMonthAgoBlock, + currentPricePerFullShare); + + const aprData = { + aprOneDaySample, + aprThreeDaySample, + aprOneWeekSample, + aprOneMonthSample + } + + return { + ...aprData, + apyLoanscan: 0, + compoundApy: 0, + citadelApy: 0, + elonApy: 0, + cubanApy: 0, + faangApy: 0, + moneyPrinterApy: 0, + }; + } else { + // Yearn Vault + const pool = _.find(pools, { symbol }); + var vaultContract = new archiveNodeWeb3.eth.Contract(abi, address); + + const pricePerFullShareInception = await getPricePerFullShare( + vaultContract, + inceptionBlockNbr, + inceptionBlockNbr + ); + + const pricePerFullShareCurrent = await getPricePerFullShare( + vaultContract, + currentBlockNbr, + inceptionBlockNbr + ); + + const pricePerFullShareOneDayAgo = await getPricePerFullShare( + vaultContract, + oneDayAgoBlock, + inceptionBlockNbr + ); + const pricePerFullShareThreeDaysAgo = await getPricePerFullShare( + vaultContract, + threeDaysAgoBlock, + inceptionBlockNbr + ); + const pricePerFullShareOneWeekAgo = await getPricePerFullShare( + vaultContract, + oneWeekAgoBlock, + inceptionBlockNbr + ); + const pricePerFullShareOneMonthAgo = await getPricePerFullShare( + vaultContract, + oneMonthAgoBlock, + inceptionBlockNbr + ); + const apyInceptionSample = getApy( + pricePerFullShareInception, + pricePerFullShareCurrent, + inceptionBlockNbr, + currentBlockNbr + ); + console.log('apyInceptionSample', apyInceptionSample) + + const apyOneDaySample = + (getApy( + pricePerFullShareOneDayAgo, + pricePerFullShareCurrent, + oneDayAgoBlock, + currentBlockNbr + )) || apyInceptionSample; + + const apyThreeDaySample = + (getApy( + pricePerFullShareThreeDaysAgo, + pricePerFullShareCurrent, + threeDaysAgoBlock, + currentBlockNbr + )) || apyInceptionSample; + + const apyOneWeekSample = + (getApy( + pricePerFullShareOneWeekAgo, + pricePerFullShareCurrent, + oneWeekAgoBlock, + currentBlockNbr + )) || apyInceptionSample; + + const apyOneMonthSample = + (getApy( + pricePerFullShareOneMonthAgo, + pricePerFullShareCurrent, + oneMonthAgoBlock, + currentBlockNbr + )) || apyInceptionSample; + + let apyLoanscan = 0; + + const apyData = { + apyInceptionSample, + apyOneDaySample, + apyThreeDaySample, + apyOneWeekSample, + apyOneMonthSample, + }; + + if (pool) { + const poolAddress = pool.address; + const virtualPriceCurrent = await getVirtualPrice( + poolAddress, + currentBlockNbr + ); + const virtualPriceOneDayAgo = await getVirtualPrice( + poolAddress, + oneDayAgoBlock + ); + + const poolApy = await getApy( + virtualPriceOneDayAgo, + virtualPriceCurrent, + oneDayAgoBlock, + currentBlockNbr + ); + + const poolPct = poolApy / 100; + const vaultPct = apyOneDaySample / 100; + apyLoanscan = ((1 + poolPct) * (1 + vaultPct) - 1) * 100; + + return { ...apyData, poolApy, apyLoanscan }; + } + + return { + ...apyData, + apyLoanscan, + compoundApy: 0, + citadelApy: 0, + elonApy: 0, + cubanApy: 0, + faangApy: 0, + moneyPrinterApy: 0, + }; + } +}; + +const getLoanscanApyForVault = async (vault) => { + const { + lastMeasurement: inceptionBlockNbr, + vaultContractABI: abi, + vaultContractAddress: address, + } = vault; + + const vaultContract = new archiveNodeWeb3.eth.Contract(abi, address); + + const pricePerFullShareInception = await getPricePerFullShare( + vaultContract, + inceptionBlockNbr, + inceptionBlockNbr + ); +}; + +const getHistoricalAPY = async (startTime, contractAddress) => { + var result = []; + switch (contractAddress.toLowerCase()) { + case testContracts.vault['yUSDT'].address: + case mainContracts.vault['yUSDT'].address: + result = await historicalDb.findWithTimePeriods(startTime, new Date().getTime(), historicalDb.usdtFarmer); + break; + case testContracts.vault['yUSDC'].address: + case mainContracts.vault['yUSDC'].address: + result = await historicalDb.findWithTimePeriods(startTime, new Date().getTime(), historicalDb.usdcFarmer); + break; + case testContracts.vault['yDAI'].address: + case mainContracts.vault['yDAI'].address: + result = await historicalDb.findWithTimePeriods(startTime, new Date().getTime(), historicalDb.daiFarmer); + break; + case testContracts.vault['yTUSD'].address: + case mainContracts.vault['yTUSD'].address: + result = await historicalDb.findWithTimePeriods(startTime, new Date().getTime(), historicalDb.tusdFarmer); + break; + case testContracts.farmer['cDAI'].address: + case mainContracts.farmer['cDAI'].address: + result = await historicalDb.findWithTimePeriods(startTime, new Date().getTime(), historicalDb.cDaiFarmer); + break; + case testContracts.farmer['cUSDC'].address: + case mainContracts.farmer['cUSDC'].address: + result = await historicalDb.findWithTimePeriods(startTime, new Date().getTime(), historicalDb.cUsdcFarmer); + break; + case testContracts.farmer['cUSDT'].address: + case mainContracts.farmer['cUSDT'].address: + result = await historicalDb.findWithTimePeriods(startTime, new Date().getTime(), historicalDb.cUsdtFarmer); + break; + case testContracts.farmer['daoCDV'].address: + case mainContracts.farmer['daoCDV'].address: + result = await historicalDb.findWithTimePeriods(startTime, new Date().getTime(), historicalDb.daoCDVFarmer); + break; + case testContracts.farmer['daoELO'].address: + case mainContracts.farmer['daoELO'].address: + result = await historicalDb.findWithTimePeriods(startTime, new Date().getTime(), historicalDb.daoELOFarmer); + break; + case testContracts.farmer['daoCUB'].address: + case mainContracts.farmer['daoCUB'].address: + result = await historicalDb.findWithTimePeriods(startTime, new Date().getTime(), historicalDb.daoCUBFarmer); + break; + case testContracts.farmer['daoMPT'].address: + case mainContracts.farmer['daoMPT'].address: + result = await historicalDb.findWithTimePeriods(startTime, new Date().getTime(), historicalDb.daoMPTFarmer); + break; + case testContracts.farmer['daoSTO'].address: + case mainContracts.farmer['daoSTO'].address: + result = await historicalDb.findWithTimePeriods(startTime, new Date().getTime(), historicalDb.daoSTOFarmer); + break; + case testContracts.farmer['hfDAI'].address: + case mainContracts.farmer['hfDAI'].address: + result = await historicalDb.findWithTimePeriods(startTime, new Date().getTime(), historicalDb.hfDaiFarmer); + break; + case testContracts.farmer['hfUSDC'].address: + case mainContracts.farmer['hfUSDC'].address: + result = await historicalDb.findWithTimePeriods(startTime, new Date().getTime(), historicalDb.hfUsdcFarmer); + break; + case testContracts.farmer['hfUSDT'].address: + case mainContracts.farmer['hfUSDT'].address: + result = await historicalDb.findWithTimePeriods(startTime, new Date().getTime(), historicalDb.hfUsdtFarmer); + break; + } + + return result; +} + +const saveAndReadVault = async (vault) => { + const { + name, + symbol, + description, + vaultSymbol, + vaultContractABI: abi, + vaultContractAddress: address, + erc20address: tokenAddress, + } = vault; + console.log(`Reading vault ${vault.name}`); + if (!abi || !address) { + console.log(`Vault ABI not found: ${name}`); + return null; + } + const apy = await getApyForVault(vault); + var aprs = 0; + if (vault.isYearn && process.env.PRODUCTION != '') { + try { + const aprContract = new infuraWeb3.eth.Contract(aggregatedContractABI, aggregatedContractAddress); + var call = 'getAPROptions';//+asset.symbol + aprs = await aprContract.methods[call](vault.erc20address).call(); + + const keys = Object.keys(aprs) + const workKeys = keys.filter((key) => { + return isNaN(key) + }) + const maxApr = Math.max.apply(Math, workKeys.map(function(o) { + if(o === 'uniapr' || o === 'unicapr' || o === "iapr") { + return aprs[o]-100000000000000000000 + } + return aprs[o]; + })) + + aprs = infuraWeb3.utils.fromWei(maxApr.toFixed(0), 'ether') + } catch (ex) {} + } + + const data = { + ...apy, + aprs, + symbol + }; + await saveHistoricalAPY(data, vaultSymbol + '_historical-apy'); + return data; +}; + +const getHarvestFarmerAPR = async (vaultData) => { + const { + vaultContract, + strategyContract, + currentPricePerFullShare, + lastMeasurement, + blockNumber, + } = vaultData; + + let apr = 0; + + // To ensure block number happens after contract creation + if(blockNumber >= lastMeasurement) { + const pool = await strategyContract.methods.pool().call(undefined, blockNumber); + const totalSupply = await vaultContract.methods.totalSupply().call(undefined, blockNumber); + + const pricePerFullShareOfBeforeDay = pool / totalSupply; + + // APR calculation + apr = (currentPricePerFullShare - pricePerFullShareOfBeforeDay) * 100 * 365; + } + return apr; +}; + +module.exports.saveHandler = async () => { + try { + const oneDayAgo = moment().subtract(1, "days").valueOf(); + const threeDaysAgo = moment().subtract(3, "days").valueOf(); + const oneWeekAgo = moment().subtract(1, "weeks").valueOf(); + const oneMonthAgo = moment().subtract(1, "months").valueOf(); + + console.log("Fetching historical blocks", 'save APY history'); + currentBlockNbr = await infuraWeb3.eth.getBlockNumber(); + console.log("currentBlockNbr", currentBlockNbr); + oneDayAgoBlock = (await blocks.getDate(oneDayAgo)).block; + console.log("oneDayAgoBlock", oneDayAgoBlock); + threeDaysAgoBlock = (await blocks.getDate(threeDaysAgo)).block; + console.log("threeDaysAgoBlock", threeDaysAgoBlock); + oneWeekAgoBlock = (await blocks.getDate(oneWeekAgo)).block; + console.log("oneWeekAgoBlock", oneWeekAgoBlock); + oneMonthAgoBlock = (await blocks.getDate(oneMonthAgo)).block; + console.log("oneMonthAgoBlock", oneMonthAgoBlock); + nbrBlocksInDay = currentBlockNbr - oneDayAgoBlock; + console.log("Done fetching historical blocks"); + } catch (err) { + console.error(err); + } + + const vaultsWithApy = []; + for (const vault of vaults) { + try { + const vaultWithApy = await saveAndReadVault(vault); + if (vaultWithApy !== null) { + vaultsWithApy.push(vaultWithApy); + } + await delay(delayTime); + } catch (err) { + console.error(err); + } + } +} + +module.exports.handleHistoricialAPY = async (req, res) => { + if (req.params.days == null || req.params.days == '') { + res.status(200).json({ + message: 'Days is empty.', + body: null + }); + } else if (req.params.contractAddress == null || req.params.contractAddress == '') { + res.status(200).json({ + message: 'Contract Address is empty.', + body: null + }); + } else { + var startTime = -1; + switch (req.params.days) { + case '30d': + startTime = moment().subtract(30, 'days'); + break; + case '7d': + startTime = moment().subtract(7, 'days'); + break; + case '1d': + startTime = moment().subtract(1, 'days'); + break; + } + + if (startTime !== -1) { + var result = await getHistoricalAPY(startTime.unix(), req.params.contractAddress); + const resultMapping = (apy) => { + delete apy._id; + return apy; + }; + result = result.map(resultMapping); + res.status(200).json({ + message: '', + body: result + }) + } else { + res.status(200).json({ + message: "Please only pass '30d', '7d' or '1d' as days option.", + body: null + }) + } + } +} diff --git a/services/vaults/apy/save/polygon-handler.js b/services/vaults/apy/save/polygon-handler.js new file mode 100644 index 0000000..d338f98 --- /dev/null +++ b/services/vaults/apy/save/polygon-handler.js @@ -0,0 +1,116 @@ +// Function same as handler.js, this is for Polygon network +const vaults = require("./polygon-vault"); +const { delayTime } = require("./config"); +const delay = require("delay"); +const moment = require("moment"); +const contractHelper = require("../../../../utils/contract"); +const apyDb = require('../../../../models/apy.model'); +const { getMoneyPrinterPricePerFullShare } = require("./historical-handle-polygon"); +const { + testContracts, + mainContracts +} = require('../../../../config/serverless/domain'); + +let polygonBlockNumber = { + current: 0, + oneDay: 0, +} + + +const getApyForVault = async (vault) => { + const { lastMeasurement: inceptionBlockNumber } = vault; + + // Money Printer vault + if(vault.isMoneyPrinter) { + const contractInfo = (process.env.PRODUCTION != '') + ? mainContracts.farmer['daoMPT'] + : testContracts.farmer['daoMPT']; + const contract = await contractHelper.getPolygonContract(contractInfo.abi, contractInfo.address); + + let pricePerFullShareCurrent = await getMoneyPrinterPricePerFullShare(contract, polygonBlockNumber.current, inceptionBlockNumber); + let pricePerFullShareOneDayAgo = await getMoneyPrinterPricePerFullShare(contract, polygonBlockNumber.oneDay, inceptionBlockNumber); + pricePerFullShareCurrent = (0 < pricePerFullShareCurrent) ? pricePerFullShareCurrent : 1; + pricePerFullShareOneDayAgo = (0 < pricePerFullShareOneDayAgo) ? pricePerFullShareOneDayAgo : 1; + + const n = 5 * 24 * 365; // Assume trigger compound function 5 times per HOUR + const apr = (pricePerFullShareCurrent - pricePerFullShareOneDayAgo) * n; + let apy = (Math.pow((1 + (apr / 100) / n), n) - 1) * 100; + + if(apy === 0) { + // Use back previous value if apy = 0 + const mpApyObj = await apyDb.getApy("daoMPT"); + console.log(`MP Apy Obj ${mpApyObj.moneyPrinterApy}, timestamp: ${mpApyObj.timestamp}`); + apy = mpApyObj.moneyPrinterApy; + } + + return { + apyInceptionSample: 0, + apyOneDaySample: 0, + apyThreeDaySample: 0, + apyOneWeekSample: 0, + apyOneMonthSample: 0, + apyLoanscan: 0, + compoundApy: 0, + citadelApy: 0, + elonApy: 0, + faangApy: 0, + moneyPrinterApy: apy, + } + } +} + +const saveAndReadVault = async (vault) => { + if(!vault.vaultContractABI || !vault.vaultContractAddress) { + console.log(`Vault missing abi or address: ${vault.name}`); + return; + } + + const apy = await getApyForVault(vault); + const data = { + address: vault.vaultContractAddress, + name: vault.name, + symbol: vault.symbol, + description: vault.description, + vaultSymbol: vault.vaultSymbol, + tokenAddress: vault.erc20address, + timestamp: Date.now(), + ...apy, + }; + await saveVaultWithApy(data); + return data; +} + +const saveVaultWithApy = async (data) => { + await apyDb.add(data).catch((err) => console.log('err', err)); + console.log(`Saved ${data.name}`); +}; + +module.exports.saveHandler = async() => { + try { + const oneDayAgo = moment().subtract(1, "days").valueOf(); + + console.log("Fetching Polygon historical blocks"); + current = await contractHelper.getPolygonCurrentBlockNumber(); + console.log(`(Polygon) Current Block Number: ${current}`); + oneDay = await contractHelper.getPolygonBlockNumberByTimeline(oneDayAgo); + console.log(`(Polygon) 1d ago Block Number: ${oneDay}`); + + polygonBlockNumber = {current, oneDay}; + console.log("Done fetching Polygon historical blocks"); + } catch (err){ + console.log("Error in fetching polygon historical block", err); + } + + const vaultsWithApy = []; + for(const vault of vaults) { + try { + const vaultWithApy = await saveAndReadVault(vault); + if(vaultWithApy !== null) { + vaultsWithApy.push(vaultWithApy); + await delay(delayTime); + } + } catch (err) { + console.log("Something wrong in save vault APY", err) + } + } +} \ No newline at end of file diff --git a/services/vaults/apy/save/polygon-vault.js b/services/vaults/apy/save/polygon-vault.js new file mode 100644 index 0000000..f5fd1ed --- /dev/null +++ b/services/vaults/apy/save/polygon-vault.js @@ -0,0 +1,59 @@ +const config = require("./config.js"); +const abi = require('../../../../config/abi') +const constant = require('../../../../utils/constant.js') + +const testVaults = [ + { + id: "daoMPT", + name: "DAO Vault Money Printer", + symbol: ["USDT","USDC","DAI"], + description: "DAO Vault Money Printer for 3 stablecoins", + vaultSymbol: "daoMPT", + erc20address: "0xbd21a10f619be90d6066c941b04e340841f1f989", + vaultContractAddress: "0x4f0bc6bd6beb231087781336bacd5613527ac63c", + vaultContractABI: abi.moneyPrinterVaultContract, + strategyContractAddress: "0x8894da48bb8b7f7751ac4e2c37ed31b68d0c587f", + strategyABI: abi.moneyPrinterStrategyContract, + balance: 0, + vaultBalance: 0, + decimals: 18, + deposit: true, + depositAll: true, + withdraw: true, + withdrawAll: true, + lastMeasurement: 16133926, + measurement: 1e18, + price_id: ["tether", "usd-coin", "dai"], + isMoneyPrinter: true, + network: constant.POLYGON, + }, +]; + +const mainVaults = [ + { + id: "daoMPT", + name: "DAO Vault Money Printer", + symbol: ["USDT","USDC","DAI"], + description: "DAO Vault Money Printer for 3 stablecoins", + vaultSymbol: "daoMPT", + erc20address: "0xc2132d05d31c914a87c6611c10748aeb04b58e8f", + vaultContractAddress: "0x3db93e95c9881bc7d9f2c845ce12e97130ebf5f2", + vaultContractABI: abi.moneyPrinterVaultContract, + strategyContractAddress: "0x4728a38b6b00cdff9fdc59ace8e3c7ef3c6560e5", + strategyABI: abi.moneyPrinterStrategyContract, + balance: 0, + vaultBalance: 0, + decimals: 18, + deposit: true, + depositAll: true, + withdraw: true, + withdrawAll: true, + lastMeasurement: 17818981, + measurement: 1e18, + price_id: ["tether", "usd-coin", "dai"], + isMoneyPrinter: true, + network: constant.POLYGON, + }, +]; + +module.exports = (process.env.PRODUCTION != '') ? mainVaults : testVaults; \ No newline at end of file diff --git a/services/vaults/apy/save/vaults.js b/services/vaults/apy/save/vaults.js index 2ee3cda..37e518b 100644 --- a/services/vaults/apy/save/vaults.js +++ b/services/vaults/apy/save/vaults.js @@ -1,15 +1,15 @@ const config = require("./config.js"); +const abi = require('../../../../config/abi') -module.exports = [ +const testVaults = [ { - id: "3Crv", - name: "curve.fi/3pool LP", - symbol: "3Crv", - description: "yDAI/yUSDC/yUSDT", - vaultSymbol: "y3Crv", - erc20address: "0x6c3f90f043a72fa612cbac8115ee7e52bde6e490", - vaultContractAddress: "0x9cA85572E6A3EbF24dEDd195623F188735A5179f", - vaultContractABI: config.vaultContractV5ABI, + id: "cDAI", + name: "Compound DAI", + symbol: "cDAI", + description: "Compound DAI", + erc20address: "0x4f96fe3b7a6cf9725f59d353f723c1bdb64ca6aa", + vaultContractAddress: "0x47e565b1e23cda3d6bb69e7ae398b884f5addc7d", + vaultContractABI: abi.cDAIContract, balance: 0, vaultBalance: 0, decimals: 18, @@ -17,41 +17,63 @@ module.exports = [ depositAll: true, withdraw: true, withdrawAll: true, - lastMeasurement: 11039340, + lastMeasurement: 10650116, measurement: 1e18, - depositDisabled: false, - price_id: "curve-fi-ydai-yusdc-yusdt-ytusd", // TODO: Update this when Coingecko adds token + price_id: "dai", + vaultSymbol: 'cDAI', + isCompound: true, }, { - id: "ETH", - name: "ETH", - symbol: "ETH", - description: "Ether", - vaultSymbol: "yETH", - erc20address: "Ethereum", - vaultContractAddress: "0xe1237aA7f535b0CC33Fd973D66cBf830354D16c7", - vaultContractABI: config.vaultContractV4ABI, + id: "cUSDC", + name: "Compound USDC", + symbol: "cUSDC", + description: "Compound USDC", + erc20address: "0xb7a4f3e9097c08da09517b5ab877f7a917224ede", + vaultContractAddress: "0x05ab7659e6ef9ba1a5f790b402fd1688f01b003e", + vaultContractABI: abi.cUSDCContract, balance: 0, vaultBalance: 0, - decimals: 18, + decimals: 6, deposit: true, depositAll: false, withdraw: true, + withdrawAll: false, + lastMeasurement: 10532708, + measurement: 1e18, + price_id: "usd-coin", + vaultSymbol: 'cUSDC', + isCompound: true, + }, + { + id: "cUSDT", + name: "Compound USDT", + symbol: "cUSDT", + description: "Compound USDT", + erc20address: "0x07de306ff27a2b630b1141956844eb1552b956b5", + vaultContractAddress: "0x5d102e0bdf2037899e1ff2e8cc50987108533c52", + vaultContractABI: abi.cUSDTContract, + balance: 0, + vaultBalance: 0, + decimals: 6, + deposit: true, + depositAll: true, + withdraw: true, withdrawAll: true, - lastMeasurement: 10774489, + lastMeasurement: 10651402, measurement: 1e18, - depositDisabled: true, - price_id: "ethereum", + price_id: "tether", + vaultSymbol: 'cUSDT', + isCompound: true, }, { - id: "WETH", - name: "WETH", - symbol: "WETH", - description: "Wrappeth Ether", - vaultSymbol: "yWETH", - erc20address: "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", - vaultContractAddress: "0xe1237aA7f535b0CC33Fd973D66cBf830354D16c7", - vaultContractABI: config.vaultContractV4ABI, + id: "DAI", + name: "DAI", + symbol: "DAI", + description: "DAI Stablecoin", + vaultSymbol: "yDAI", + erc20address: "0x4f96fe3b7a6cf9725f59d353f723c1bdb64ca6aa", + vaultContractAddress: "0x5c2eea0a960cc1f604bf3c35a52ca2273f12e67e", + vaultContractABI: config.vaultContractV2ABI, balance: 0, vaultBalance: 0, decimals: 18, @@ -59,19 +81,19 @@ module.exports = [ depositAll: true, withdraw: true, withdrawAll: true, - lastMeasurement: 10774489, + lastMeasurement: 24563615, measurement: 1e18, - depositDisabled: true, - price_id: "ethereum", + price_id: "dai", + isYearn: true, }, { - id: "YFI", - name: "yearn.finance", - symbol: "YFI", - description: "yearn.finance", - vaultSymbol: "yYFI", - erc20address: "0x0bc529c00c6401aef6d220be8c6ea1667f6ad93e", - vaultContractAddress: "0xBA2E7Fed597fd0E3e70f5130BcDbbFE06bB94fe1", + id: "TUSD", + name: "TUSD", + symbol: "TUSD", + description: "TrueUSD", + vaultSymbol: "yTUSD", + erc20address: "0xf0a112a9da3cae4668270729c3d5917b6cb79564", + vaultContractAddress: "0xa8564f8d255c33175d4882e55f1a6d19e7a7d351", vaultContractABI: config.vaultContractV2ABI, balance: 0, vaultBalance: 0, @@ -80,39 +102,194 @@ module.exports = [ depositAll: true, withdraw: true, withdrawAll: true, - lastMeasurement: 10695309, + lastMeasurement: 24737399, measurement: 1e18, - price_id: "yearn-finance", + price_id: "true-usd", + isYearn: true, }, { - id: "CRV", - name: "curve.fi/y LP", - symbol: "yCRV", - description: "yDAI/yUSDC/yUSDT/yTUSD", - vaultSymbol: "yUSD", - erc20address: "0xdf5e0e81dff6faf3a7e52ba697820c5e32d806a8", - vaultContractAddress: "0x5dbcF33D8c2E976c6b560249878e6F1491Bca25c", + id: "USDC", + name: "USD Coin", + symbol: "USDC", + description: "USD//C", + vaultSymbol: "yUSDC", + erc20address: "0xb7a4f3e9097c08da09517b5ab877f7a917224ede", + vaultContractAddress: "0xabdb489ded91b6646fadc8eeb0ca82ea1d526182", vaultContractABI: config.vaultContractABI, balance: 0, vaultBalance: 0, + decimals: 6, + deposit: true, + depositAll: false, + withdraw: true, + withdrawAll: false, + lastMeasurement: 24563583, + measurement: 1e18, + price_id: "usd-coin", + isYearn: true, + }, + { + id: "USDT", + name: "USDT", + symbol: "USDT", + description: "Tether USD", + vaultSymbol: "yUSDT", + erc20address: "0x07de306ff27a2b630b1141956844eb1552b956b5", + vaultContractAddress: "0xa5c53c76729e92630a2a3c549215110a330c902d", + vaultContractABI: config.vaultContractV2ABI, + balance: 0, + vaultBalance: 0, + decimals: 6, + deposit: true, + depositAll: true, + withdraw: true, + withdrawAll: true, + lastMeasurement: 24547196, + measurement: 1e18, + price_id: "tether", + isYearn: true, + }, + { + id: "daoCDV", + name: "DAO Vault Citadel", + symbol: ["USDT","USDC","DAI"], + description: "DAO Vault Citadel for 3 stablecoins", + vaultSymbol: "daoCDV", + erc20address: ["0x07de306ff27a2b630b1141956844eb1552b956b5", "0xb7a4f3e9097c08da09517b5ab877f7a917224ede", "0x4f96fe3b7a6cf9725f59d353f723c1bdb64ca6aa"], + vaultContractAddress: "0x626c25ca5b86277f395c0e40dbdf51f2a302ab43", + vaultContractABI: config.vaultCitadelABI, + balance: 0, + vaultBalance: 0, + decimals: 18, + deposit: true, + depositAll: true, + withdraw: true, + withdrawAll: true, + lastMeasurement: 25336169, + measurement: 1e18, + price_id: ["tether", "usd-coin", "dai"], + isCitadel: true, + }, + { + id: "daoELO", + name: "DAO Vault Elon", + symbol: ["USDT","USDC","DAI"], + description: "DAO Vault Elon for 3 stablecoins", + vaultSymbol: "daoELO", + erc20address: ["0x07de306ff27a2b630b1141956844eb1552b956b5", "0xb7a4f3e9097c08da09517b5ab877f7a917224ede", "0x4f96fe3b7a6cf9725f59d353f723c1bdb64ca6aa"], + vaultContractAddress: "0xf03fa8553379d872b4e2bafbc679409fb82604c2", + vaultContractABI: abi.elonApeVaultContract, + balance: 0, + vaultBalance: 0, + decimals: 18, + deposit: true, + depositAll: true, + withdraw: true, + withdrawAll: true, + lastMeasurement: 25413059, + measurement: 1e18, + price_id: ["tether", "usd-coin", "dai"], + isElon: true, + }, + { + id: "daoCUB", + name: "DAO Vault Cuban", + symbol: ["USDT","USDC","DAI"], + description: "DAO Vault Cuban for 3 stablecoins", + vaultSymbol: "daoCUB", + erc20address: ["0x07de306ff27a2b630b1141956844eb1552b956b5", "0xb7a4f3e9097c08da09517b5ab877f7a917224ede", "0x4f96fe3b7a6cf9725f59d353f723c1bdb64ca6aa"], + vaultContractAddress: "0x5c304a6cb105e1bff9805ca5cf072f1d2c3beac5", + vaultContractABI: abi.cubanApeVaultContract, + balance: 0, + vaultBalance: 0, + decimals: 18, + deposit: true, + depositAll: true, + withdraw: true, + withdrawAll: true, + lastMeasurement: 25536976, + measurement: 1e18, + price_id: ["tether", "usd-coin", "dai"], + isCuban: true, + }, + { + id: "daoSTO", + name: "DAO Vault Stonks", + symbol: ["USDT","USDC","DAI"], + description: "DAO Vault Stonks for 3 stablecoins", + vaultSymbol: "daoSTO", + erc20address: ["0x07de306ff27a2b630b1141956844eb1552b956b5", "0xb7a4f3e9097c08da09517b5ab877f7a917224ede", "0x4f96fe3b7a6cf9725f59d353f723c1bdb64ca6aa"], + vaultContractAddress: "0xd6af81e5288be43137debf969d7f2c03482c8cc1", + vaultContractABI: abi.daoFaangStonkVaultContract, + balance: 0, + vaultBalance: 0, + decimals: 18, + deposit: true, + depositAll: true, + withdraw: true, + withdrawAll: true, + lastMeasurement: 25680643, + measurement: 1e18, + price_id: ["tether", "usd-coin", "dai"], + isFaang: true, + }, + { + id: "hfDAI", + name: "DAI", + symbol: "DAI", + description: "DAI Stablecoin", + vaultSymbol: "hfDAI", + erc20address: "0x4f96fe3b7a6cf9725f59d353f723c1bdb64ca6aa", + vaultContractAddress: "0x6d7e8fa90c1ffdc019d691bafc18d6362fdeecd7", + vaultContractABI: abi.hfVaultContract, + strategyContractAddress: "0xdfeb689aea68f221eaafeeeb91767003265968d6", + strategyABI: abi.hfStrategyContract, + balance: 0, + vaultBalance: 0, + decimals: 18, + deposit: true, + depositAll: true, + withdraw: true, + withdrawAll: true, + lastMeasurement: 24943134, + measurement: 1e18, + price_id: "dai", + isHarvest: true + }, + { + id: "hfUSDC", + name: "USD Coin", + symbol: "USDC", + description: "USD//C", + vaultSymbol: "hfUSDC", + erc20address: "0xb7a4f3e9097c08da09517b5ab877f7a917224ede", + vaultContractAddress: "0x68b1c860300c4f7d577f08d8b3c3aee23887b280", + vaultContractABI: abi.hfVaultContract, + strategyContractAddress: "0x7da9e06545c4fe6556fc0990f5afd4955379e1d2", + strategyABI: abi.hfStrategyContract, + balance: 0, + vaultBalance: 0, decimals: 18, deposit: true, depositAll: false, withdraw: true, withdrawAll: false, - lastMeasurement: 10559448, + lastMeasurement: 24943141, measurement: 1e18, - price_id: "curve-fi-ydai-yusdc-yusdt-ytusd", + price_id: "usd-coin", + isHarvest: true }, { - id: "crvBUSD", - name: "curve.fi/busd LP", - symbol: "crvBUSD", - description: "yDAI/yUSDC/yUSDT/yBUSD", - vaultSymbol: "ycrvBUSD", - erc20address: "0x3B3Ac5386837Dc563660FB6a0937DFAa5924333B", - vaultContractAddress: "0x2994529c0652d127b7842094103715ec5299bbed", - vaultContractABI: config.vaultContractV3ABI, + id: "hfUSDT", + name: "USDT", + symbol: "USDT", + description: "Tether USD", + vaultSymbol: "hfUSDT", + erc20address: "0x07de306ff27a2b630b1141956844eb1552b956b5", + vaultContractAddress: "0x35880615bb18da592ff0feb0940ade2c02249715", + vaultContractABI: abi.hfVaultContract, + strategyContractAddress: "0xac783dc15d2cf08d1e1c34e18e531a9b182277b0", + strategyABI: abi.hfStrategyContract, balance: 0, vaultBalance: 0, decimals: 18, @@ -120,20 +297,22 @@ module.exports = [ depositAll: true, withdraw: true, withdrawAll: true, - depositDisabled: false, - lastMeasurement: 10709740, + lastMeasurement: 24943148, measurement: 1e18, - price_id: "lp-bcurve", + price_id: "tether", + isHarvest: true }, +]; + +const mainVaults = [ { - id: "crvBTC", - name: "curve.fi/sbtc LP", - symbol: "crvBTC", - description: "renBTC/wBTC/sBTC", - vaultSymbol: "ycrvBTC", - erc20address: "0x075b1bb99792c9E1041bA13afEf80C91a1e70fB3", - vaultContractAddress: "0x7Ff566E1d69DEfF32a7b244aE7276b9f90e9D0f6", - vaultContractABI: config.vaultContractV3ABI, + id: "cDAI", + name: "Compound DAI", + symbol: "cDAI", + description: "Compound DAI", + erc20address: "0x6b175474e89094c44da98b954eedeac495271d0f", + vaultContractAddress: "0x43c20638c3914eca3c96e9cac8ebe7d652be45c6", + vaultContractABI: abi.cDAIContract, balance: 0, vaultBalance: 0, decimals: 18, @@ -141,9 +320,53 @@ module.exports = [ depositAll: true, withdraw: true, withdrawAll: true, - lastMeasurement: 10734341, + lastMeasurement: 12125533, + measurement: 1e18, + price_id: "dai", + vaultSymbol: 'cDAI', + isCompound: true, + }, + { + id: "cUSDC", + name: "Compound USDC", + symbol: "cUSDC", + description: "Compound USDC", + erc20address: "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", + vaultContractAddress: "0xd1d7f950899c0269a7f2aad5e854cdc3a1350ba9", + vaultContractABI: abi.cUSDCContract, + balance: 0, + vaultBalance: 0, + decimals: 6, + deposit: true, + depositAll: false, + withdraw: true, + withdrawAll: false, + lastMeasurement: 12125523, + measurement: 1e18, + price_id: "usd-coin", + vaultSymbol: 'cUSDC', + isCompound: true, + }, + { + id: "cUSDT", + name: "Compound USDT", + symbol: "cUSDT", + description: "Compound USDT", + erc20address: "0xdac17f958d2ee523a2206206994597c13d831ec7", + vaultContractAddress: "0xeece6ad323a93d4b021bdaac587dcc04b5cf0a78", + vaultContractABI: abi.cUSDTContract, + balance: 0, + vaultBalance: 0, + decimals: 6, + deposit: true, + depositAll: true, + withdraw: true, + withdrawAll: true, + lastMeasurement: 12125523, measurement: 1e18, - price_id: "lp-sbtc-curve", + price_id: "tether", + vaultSymbol: 'cUSDT', + isCompound: true, }, { id: "DAI", @@ -152,7 +375,7 @@ module.exports = [ description: "DAI Stablecoin", vaultSymbol: "yDAI", erc20address: "0x6b175474e89094c44da98b954eedeac495271d0f", - vaultContractAddress: "0xACd43E627e64355f1861cEC6d3a6688B31a6F952", + vaultContractAddress: "0xacd43e627e64355f1861cec6d3a6688b31a6f952", vaultContractABI: config.vaultContractV2ABI, balance: 0, vaultBalance: 0, @@ -164,6 +387,7 @@ module.exports = [ lastMeasurement: 10650116, measurement: 1e18, price_id: "dai", + isYearn: true, }, { id: "TUSD", @@ -171,8 +395,8 @@ module.exports = [ symbol: "TUSD", description: "TrueUSD", vaultSymbol: "yTUSD", - erc20address: "0x0000000000085d4780B73119b644AE5ecd22b376", - vaultContractAddress: "0x37d19d1c4E1fa9DC47bD1eA12f742a0887eDa74a", + erc20address: "0x0000000000085d4780b73119b644ae5ecd22b376", + vaultContractAddress: "0x37d19d1c4e1fa9dc47bd1ea12f742a0887eda74a", vaultContractABI: config.vaultContractV2ABI, balance: 0, vaultBalance: 0, @@ -184,6 +408,7 @@ module.exports = [ lastMeasurement: 10603368, measurement: 1e18, price_id: "true-usd", + isYearn: true, }, { id: "USDC", @@ -192,7 +417,7 @@ module.exports = [ description: "USD//C", vaultSymbol: "yUSDC", erc20address: "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", - vaultContractAddress: "0x597aD1e0c13Bfe8025993D9e79C69E1c0233522e", + vaultContractAddress: "0x597ad1e0c13bfe8025993d9e79c69e1c0233522e", vaultContractABI: config.vaultContractABI, balance: 0, vaultBalance: 0, @@ -204,6 +429,7 @@ module.exports = [ lastMeasurement: 10532708, measurement: 1e18, price_id: "usd-coin", + isYearn: true, }, { id: "USDT", @@ -211,8 +437,8 @@ module.exports = [ symbol: "USDT", description: "Tether USD", vaultSymbol: "yUSDT", - erc20address: "0xdAC17F958D2ee523a2206206994597C13D831ec7", - vaultContractAddress: "0x2f08119C6f07c006695E079AAFc638b8789FAf18", + erc20address: "0xdac17f958d2ee523a2206206994597c13d831ec7", + vaultContractAddress: "0x2f08119c6f07c006695e079aafc638b8789faf18", vaultContractABI: config.vaultContractV2ABI, balance: 0, vaultBalance: 0, @@ -224,16 +450,17 @@ module.exports = [ lastMeasurement: 10651402, measurement: 1e18, price_id: "tether", + isYearn: true, }, { - id: "aLINK", - name: "aLINK", - symbol: "aLINK", - description: "Aave Interest bearing LINK", - vaultSymbol: "yaLINK", - erc20address: "0xA64BD6C70Cb9051F6A9ba1F163Fdc07E0DfB5F84", - vaultContractAddress: "0x29E240CFD7946BA20895a7a02eDb25C210f9f324", - vaultContractABI: config.vaultContractV2ABI, + id: "daoCDV", + name: "DAO Vault Citadel", + symbol: ["USDT","USDC","DAI"], + description: "DAO Vault Citadel for 3 stablecoins", + vaultSymbol: "daoCDV", + erc20address: ["0xdac17f958d2ee523a2206206994597c13d831ec7", "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", "0x6b175474e89094c44da98b954eedeac495271d0f"], + vaultContractAddress: "0x8fe826cc1225b03aa06477ad5af745aed5fe7066", + vaultContractABI: config.vaultCitadelABI, balance: 0, vaultBalance: 0, decimals: 18, @@ -241,19 +468,41 @@ module.exports = [ depositAll: true, withdraw: true, withdrawAll: true, - lastMeasurement: 10599617, + lastMeasurement: 12586420, measurement: 1e18, - price_id: "aave-link", + price_id: ["tether", "usd-coin", "dai"], + isCitadel: true, }, { - id: "LINK", - name: "ChainLink", - symbol: "LINK", - description: "ChainLink", - vaultSymbol: "yLINK", - erc20address: "0x514910771af9ca656af840dff83e8264ecf986ca", - vaultContractAddress: "0x881b06da56BB5675c54E4Ed311c21E54C5025298", - vaultContractABI: config.vaultContractV2ABI, + id: "daoELO", + name: "DAO Vault Elon", + symbol: ["USDT","USDC","DAI"], + description: "DAO Vault Elon for 3 stablecoins", + vaultSymbol: "daoELO", + erc20address: ["0xdAC17F958D2ee523a2206206994597C13D831ec7", "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", "0x6b175474e89094c44da98b954eedeac495271d0f"], + vaultContractAddress: "0x2d9a136cf87d599628bcbdfb6c4fe75acd2a0aa8", + vaultContractABI: abi.elonApeVaultContract, + balance: 0, + vaultBalance: 0, + decimals: 18, + deposit: true, + depositAll: true, + withdraw: true, + withdrawAll: true, + lastMeasurement: 12722655, + measurement: 1e18, + price_id: ["tether", "usd-coin", "dai"], + isElon: true, + }, + { + id: "daoCUB", + name: "DAO Vault Cuban", + symbol: ["USDT","USDC","DAI"], + description: "DAO Vault Cuban for 3 stablecoins", + vaultSymbol: "daoCUB", + erc20address: ["0xdAC17F958D2ee523a2206206994597C13D831ec7", "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", "0x6b175474e89094c44da98b954eedeac495271d0f"], + vaultContractAddress: "0x2ad9f8d4c24652ea9f8a954f7e1fdb50a3be1dfd", + vaultContractABI: abi.cubanApeVaultContract, balance: 0, vaultBalance: 0, decimals: 18, @@ -261,9 +510,101 @@ module.exports = [ depositAll: true, withdraw: true, withdrawAll: true, - depositDisabled: true, - lastMeasurement: 10604016, + lastMeasurement: 12799447, measurement: 1e18, - price_id: "chainlink", + price_id: ["tether", "usd-coin", "dai"], + isCuban: true, }, + { + id: "daoSTO", + name: "DAO Vault Stonks", + symbol: ["USDT","USDC","DAI"], + description: "DAO Vault Stonks for 3 stablecoins", + vaultSymbol: "daoSTO", + erc20address: ["0xdAC17F958D2ee523a2206206994597C13D831ec7", "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", "0x6b175474e89094c44da98b954eedeac495271d0f"], + vaultContractAddress: "0x9ee54014e1e6cf10fd7e9290fdb6101fd0d5d416", + vaultContractABI: abi.daoFaangStonkVaultContract, + balance: 0, + vaultBalance: 0, + decimals: 18, + deposit: true, + depositAll: true, + withdraw: true, + withdrawAll: true, + lastMeasurement: 12932754, + measurement: 1e18, + price_id: ["tether", "usd-coin", "dai"], + isFaang: true, + }, + // { + // id: "hfDAI", + // name: "DAI", + // symbol: "DAI", + // description: "DAI Stablecoin", + // vaultSymbol: "hfDAI", + // erc20address: "0x6b175474e89094c44da98b954eedeac495271d0f", + // vaultContractAddress: "0xe4e6ce7c1d9ff44db27f622accbb0753c2f48955", + // vaultContractABI: abi.hfVaultContract, + // strategyContractAddress: "0xef9a15025c2ed048a67c5c8019a1101172eeb51c", + // strategyABI: abi.hfStrategyContract, + // balance: 0, + // vaultBalance: 0, + // decimals: 18, + // deposit: true, + // depositAll: true, + // withdraw: true, + // withdrawAll: true, + // lastMeasurement: 12593517, + // measurement: 1e18, + // price_id: "dai", + // isHarvest: true + // }, + // { + // id: "hfUSDC", + // name: "USD Coin", + // symbol: "USDC", + // description: "USD//C", + // vaultSymbol: "hfUSDC", + // erc20address: "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", + // vaultContractAddress: "0xd0f0858578c7780f2d65f6d81bc7ddbe166367cc", + // vaultContractABI: abi.hfVaultContract, + // strategyContractAddress: "0x0af9547974e056fca221f679dbbb7f8651407d7f", + // strategyABI: abi.hfStrategyContract, + // balance: 0, + // vaultBalance: 0, + // decimals: 18, + // deposit: true, + // depositAll: false, + // withdraw: true, + // withdrawAll: false, + // lastMeasurement: 12593522, + // measurement: 1e18, + // price_id: "usd-coin", + // isHarvest: true + // }, + // { + // id: "hfUSDT", + // name: "USDT", + // symbol: "USDT", + // description: "Tether USD", + // vaultSymbol: "hfUSDT", + // erc20address: "0xdac17f958d2ee523a2206206994597c13d831ec7", + // vaultContractAddress: "0x2cc1507e6e3c844eeb77db90d193489f1ddfb299", + // vaultContractABI: abi.hfVaultContract, + // strategyContractAddress: "0x89541e3b8e8b73c108744909ea11d506b4a8e6c7", + // strategyABI: abi.hfStrategyContract, + // balance: 0, + // vaultBalance: 0, + // decimals: 18, + // deposit: true, + // depositAll: true, + // withdraw: true, + // withdrawAll: true, + // lastMeasurement: 12593527, + // measurement: 1e18, + // price_id: "tether", + // isHarvest: true + // }, ]; + +module.exports = (process.env.PRODUCTION != '') ? mainVaults : testVaults; \ No newline at end of file diff --git a/services/vaults/category/handler.js b/services/vaults/category/handler.js new file mode 100644 index 0000000..49e64d0 --- /dev/null +++ b/services/vaults/category/handler.js @@ -0,0 +1,15 @@ +"use strict" + +const db = require('../../../models/vault-category.model'); + +module.exports.getVaultCategory = async (req, res) => { + let result = await db.findAll(); + if (result.length > 0) { + result.forEach((v) => delete v._id) + } + + res.status(200).json({ + message: "", + body: result, + }); +} diff --git a/services/vaults/handler.js b/services/vaults/handler.js index 94c593e..caf0ab9 100644 --- a/services/vaults/handler.js +++ b/services/vaults/handler.js @@ -1,15 +1,12 @@ const AWS = require("aws-sdk"); -const db = new AWS.DynamoDB.DocumentClient({ apiVersion: "2012-08-10" }); +// const db = new AWS.DynamoDB.DocumentClient({ apiVersion: "2012-08-10" }); +const db = require('../../models/vault.model'); const _ = require("lodash"); const { injectDataIntoVaultAtKey } = require("../../utils/vaults"); const { getVaultsApy } = require("../vaults/apy/handler"); const getVaults = async () => { - const params = { - TableName: "vaults", - }; - const entries = await db.scan(params).promise(); - const vaults = entries.Items; + const vaults = await db.findAll(); return vaults; }; diff --git a/services/vaults/performance/AggregatorABI.json b/services/vaults/performance/AggregatorABI.json new file mode 100644 index 0000000..4a83418 --- /dev/null +++ b/services/vaults/performance/AggregatorABI.json @@ -0,0 +1,51 @@ +[ + { + "inputs": [], + "name": "decimals", + "outputs": [{ "internalType": "uint8", "name": "", "type": "uint8" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "description", + "outputs": [{ "internalType": "string", "name": "", "type": "string" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint80", "name": "_roundId", "type": "uint80" } + ], + "name": "getRoundData", + "outputs": [ + { "internalType": "uint80", "name": "roundId", "type": "uint80" }, + { "internalType": "int256", "name": "answer", "type": "int256" }, + { "internalType": "uint256", "name": "startedAt", "type": "uint256" }, + { "internalType": "uint256", "name": "updatedAt", "type": "uint256" }, + { "internalType": "uint80", "name": "answeredInRound", "type": "uint80" } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "latestRoundData", + "outputs": [ + { "internalType": "uint80", "name": "roundId", "type": "uint80" }, + { "internalType": "int256", "name": "answer", "type": "int256" }, + { "internalType": "uint256", "name": "startedAt", "type": "uint256" }, + { "internalType": "uint256", "name": "updatedAt", "type": "uint256" }, + { "internalType": "uint80", "name": "answeredInRound", "type": "uint80" } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "version", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + } +] diff --git a/services/vaults/performance/handler.js b/services/vaults/performance/handler.js new file mode 100644 index 0000000..b46da4a --- /dev/null +++ b/services/vaults/performance/handler.js @@ -0,0 +1,563 @@ +"use strict"; + +require("dotenv").config(); +const _ = require("lodash"); +const historicalDb = require("../../../models/performance.model"); +const moment = require("moment"); +const ethers = require("ethers"); +const EthDater = require("ethereum-block-by-date"); +const { + aggregatedContractAddress, + testContracts, + mainContracts, +} = require("../../../config/serverless/domain"); + +const CoinGecko = require("coingecko-api"); +const CoinGeckoClient = new CoinGecko(); + +let url = process.env.ARCHIVENODE_ENDPOINT_2; + +// Using ethers.js0.26 +let provider = new ethers.providers.JsonRpcProvider(url); + +let dater = new EthDater( + provider // Web3 object, required. +); + +let days; +let contracts; +let vault; +let BTC_AGGREGATOR_ADDR; +let ETH_AGGREGATOR_ADDR; + +if (process.env.PRODUCTION != "") { + contracts = mainContracts; + BTC_AGGREGATOR_ADDR = "0xF4030086522a5bEEa4988F8cA5B36dbC97BeE88c"; + ETH_AGGREGATOR_ADDR = "0x5f4eC3Df9cbd43714FE2740f5E3616155c5b8419"; +} else { + contracts = testContracts; + BTC_AGGREGATOR_ADDR = "0x6135b13325bfc4b00278b4abc5e20bbce2d6580e"; + ETH_AGGREGATOR_ADDR = "0x9326bfa02add2366b30bacb125260af641031331"; +} + +// const ETF_STRATEGIES = ["daoCDV", "daoSTO", "daoELO"]; +const ETF_STRATEGIES = ["daoCDV", "daoSTO"]; + +const aggregatorV3InterfaceABI = require("./AggregatorABI.json"); + +const BTCpriceFeed = new ethers.Contract( + BTC_AGGREGATOR_ADDR, + aggregatorV3InterfaceABI, + provider +); // 8 DEcimals +const ETHpriceFeed = new ethers.Contract( + ETH_AGGREGATOR_ADDR, + aggregatorV3InterfaceABI, + provider +); // 8 DEcimals + +async function getTokenPrice(coingecko_token_id, date) { + let data; + try { + data = await CoinGeckoClient.coins.fetchHistory(coingecko_token_id, { + date: date, + }); + if (Object.keys(data.data).length != 0) { + return data.data["market_data"]["current_price"]["usd"]; + } else { + return 1; + } + } catch (err) { + // Catch error, Default Value = 1 + } +} + +function getInceptionBlock(farmer) { + if (process.env.PRODUCTION != "") { + const farmers = { + daoCDV: 12586420, + daoSTO: 12932754, + daoELO: 12722655, + daoCUB: 12799447, + }; + return farmers[farmer]; + } else { + const farmers = { + daoCDV: 25336169, + daoSTO: 25867824, + daoELO: 25413059, + daoCUB: 25536976, + }; + return farmers[farmer]; + } +} + +async function getTotalSupply(etf, vault, block) { + if (etf === "daoCDV" || etf === "daoSTO") { + const totalSupply = await vault.totalSupply({ blockTag: block }); + return totalSupply; + } +} + +async function getTotalPool(etf, vault, block) { + if (etf === "daoCDV") { + const totalPool = await vault.getAllPoolInUSD({ blockTag: block }); + return totalPool; + } else if (etf === "daoSTO") { + const totalPool = await vault.getTotalValueInPool({ blockTag: block }); + return totalPool; + } +} + +// async function getBTCPriceChainlink(block) { +// const price = (await BTCpriceFeed.latestRoundData({ blockTag: block })) +// .answer; +// return price; +// } + +async function getBTCPriceCoinGecko(date) { + date = new Date(date); + + let dd = String(date.getDate()).padStart(2, "0"); + let mm = String(date.getMonth() + 1).padStart(2, "0"); //January is 0! + let yyyy = date.getFullYear(); + + let _date = dd + "-" + mm + "-" + yyyy; + const price = await getTokenPrice("bitcoin", _date); + + return price; +} + +// async function getETHPrice(block) { +// const price = (await ETHpriceFeed.latestRoundData({ blockTag: block })) +// .answer; +// return price; +// } + +async function getETHPriceCoinGecko(date) { + date = new Date(date); + let dd = String(date.getDate()).padStart(2, "0"); + let mm = String(date.getMonth() + 1).padStart(2, "0"); //January is 0! + let yyyy = date.getFullYear(); + let _date = dd + "-" + mm + "-" + yyyy; + + const price = await getTokenPrice("ethereum", _date); + + return price; +} + +function calcLPTokenPriceUSD(etf, totalSupply, totalPool) { + if (etf === "daoCDV") { + // totalSupply = await getTotalSupply(vault, date.block); + // totalPool = await getTotalPool(vault, date.block); + if (totalSupply != 0) { + let lpPrice = totalPool + .mul(ethers.BigNumber.from("1000000000000")) + .mul(ethers.BigNumber.from("1000000000000000000")) + .div(totalSupply); + lpPrice = ethers.utils.formatEther(lpPrice); + return lpPrice; + } else { + return 0; + } + } else if (etf === "daoSTO") { + // totalSupply = await getTotalSupply(vault, date.block); + // totalPool = await getTotalPool(vault, date.block); + + if (totalSupply != 0) { + let lpPrice = totalPool + .mul(ethers.BigNumber.from("1000000000000000000")) + .div(totalSupply); + lpPrice = ethers.utils.formatEther(lpPrice); + return lpPrice; + } else { + return 0; + } + } +} + +function calculatePerformance(initial, current) { + if (initial == 0) { + return 0; + } else { + let performance = current / initial - 1; + return performance; + } +} + +async function getSearchRange(firstBlock, lastBlock) { + let firstTimestamp = await getUnixTime(firstBlock); + + firstTimestamp = firstTimestamp + (86400 - (firstTimestamp % 86400)); + firstTimestamp *= 1000; + let lastTimestamp = await getUnixTime(lastBlock); + lastTimestamp = lastTimestamp - (lastTimestamp % 86400); + lastTimestamp *= 1000; + + let days = await dater.getEvery( + "days", // Period, required. Valid value: years, quarters, months, weeks, days, hours, minutes + firstTimestamp, // Start date, required. Any valid moment.js value: string, milliseconds, Date() object, moment() object. + lastTimestamp, // End date, required. Any valid moment.js value: string, milliseconds, Date() object, moment() object. + 1, // Duration, optional, integer. By default 1. + true // Block after, optional. Search for the nearest block before or after the given date. By default true. + ); + + return days; +} + +async function getNextUpdateBlock(dateTime) { + let url = process.env.ARCHIVENODE_ENDPOINT_2; + // Using ethers.js + let provider = new ethers.providers.JsonRpcProvider(url); + + let dater = new EthDater( + provider // Web3 object, required. + ); + + let nearestDateTime = dateTime - (dateTime % 86400000); // round down to midnight + + let block = await dater.getDate( + nearestDateTime, // Date, required. Any valid moment.js value: string, milliseconds, Date() object, moment() object. + true // Block after, optional. Search for the nearest block before or after the given date. By default true. + ); + return [block]; +} + +async function getUnixTime(block) { + return (await provider.getBlock(block)).timestamp; +} + +async function syncHistoricalPerformance(dateTime) { + // let results = []; + + // Get latest entry in database + + for (const etf of ETF_STRATEGIES) { + let vaultAddress = contracts["farmer"][etf]["address"]; + let vaultABI = contracts["farmer"][etf]["abi"]; + vault = new ethers.Contract(vaultAddress, vaultABI, provider); + let latestEntry = await historicalDb.findLatest(etf); + let startBlock; + let totalSupply; + let totalPool; + let btcPrice; + let ethPrice; + let lpTokenPriceUSD; + let lpPerformance; + let ethPerformance; + let btcPerformance; + let data; + let basePrice = 0; + let ethBasePrice = 0; + let btcBasePrice = 0; + let lpPriceInception = 0; + let ethPriceInception = 0; + let btcPriceInception = 0; + let latestBlock; + let dates; + let latestUpdateDate; + + if (latestEntry.length != 0) { + basePrice = latestEntry[0]["lp_inception_price"]; + btcBasePrice = latestEntry[0]["btc_inception_price"]; + ethBasePrice = latestEntry[0]["eth_inception_price"]; + lpPriceInception = basePrice; + btcPriceInception = btcBasePrice; + ethPriceInception = ethBasePrice; + + latestUpdateDate = latestEntry[0]["date"]; + if (dateTime) { + dates = await getNextUpdateBlock(dateTime); // Round down to nearest 0:00 UTC day + if (dates[0].date === latestUpdateDate) { + continue; + } + } else { + continue; + } + } else { + startBlock = getInceptionBlock(etf); + latestBlock = await provider.getBlockNumber(); + dates = await getSearchRange(startBlock, latestBlock); + } + + for (const date of dates) { + console.log("🚀 | syncHistoricalPerformance | basePrice", basePrice); + console.log( + "🚀 | syncHistoricalPerformance | btcBasePrice", + btcBasePrice + ); + console.log( + "🚀 | syncHistoricalPerformance | ethBasePrice", + ethBasePrice + ); + try { + totalSupply = await getTotalSupply(etf, vault, date.block); + totalPool = await getTotalPool(etf, vault, date.block); + btcPrice = await getBTCPriceCoinGecko(date.date); + ethPrice = await getETHPriceCoinGecko(date.date); + lpTokenPriceUSD = calcLPTokenPriceUSD(etf, totalSupply, totalPool); + + if (lpTokenPriceUSD > 0) { + if (basePrice === 0) { + basePrice = lpTokenPriceUSD; + lpPriceInception = basePrice; + } + if (btcPrice > 0 && btcBasePrice === 0) { + btcBasePrice = btcPrice; + btcPriceInception = btcBasePrice; + } + if (ethPrice > 0 && ethBasePrice === 0) { + ethBasePrice = ethPrice; + ethPriceInception = ethBasePrice; + } + } + lpPerformance = calculatePerformance(basePrice, lpTokenPriceUSD); + btcPerformance = calculatePerformance(btcBasePrice, btcPrice); + ethPerformance = calculatePerformance(ethBasePrice, ethPrice); + + data = { + date: date.date, + time_stamp: date.timestamp, + block: date.block, + total_supply: totalSupply.toString(), + total_pool_usd: totalPool.toString(), + btc_price: btcPrice.toString(), + eth_price: ethPrice.toString(), + lp_token_price_usd: lpTokenPriceUSD.toString(), + lp_performance: lpPerformance, + btc_performance: btcPerformance, + eth_performance: ethPerformance, + lp_inception_price: lpPriceInception.toString(), + btc_inception_price: btcPriceInception.toString(), + eth_inception_price: ethPriceInception.toString(), + }; + + historicalDb.add(etf, data); + } catch (e) {} + } + } +} + +module.exports.savePerformance = async (dateTime) => { + await syncHistoricalPerformance(dateTime); +}; + +// module.exports.handler = async (event) => { +// const performanceData = await syncHistoricalPerformance(); + +// return { +// statusCode: 200, +// headers: { +// "Access-Control-Allow-Origin": "*", +// "Access-Control-Allow-Credentials": true, +// }, +// body: JSON.stringify(performanceData), +// }; +// }; + +// Return just PNL of timeframe +module.exports.pnlHandle = async (req, res) => { + try { + if ( + req.params.days !== "30d" && + req.params.days !== "7d" && + req.params.days !== "1d" && + req.params.days !== undefined + ) { + res.status(200).json({ + message: "Days should be 30d, 7d, 1d or empty (all).", + body: null, + }); + return; + } + // check if vault param is input + if (req.params.farmer === null || req.params.farmer === "") { + res.status(200).json({ + message: "Vault input is empty", + body: null, + }); + return; + } + + let startTime = -1; + let collection = ""; + let result; + let pnl; + let lastDataIndex; + + switch (req.params.farmer) { + case historicalDb.daoCDVFarmer: + collection = historicalDb.daoCDVFarmer; + break; + // case historicalDb.daoELOFarmer: + // collection = historicalDb.daoELOFarmer; + // break; + case historicalDb.daoSTOFarmer: + collection = historicalDb.daoSTOFarmer; + break; + default: + res.status(200).json({ + message: "Invalid Farmer", + body: null, + }); + return; + } + + switch (req.params.days) { + case "30d": + startTime = moment().subtract(30, "days").unix(); + break; + case "7d": + startTime = moment().subtract(7, "days").unix(); + break; + case "1d": + startTime = moment().subtract(1, "days").unix(); + break; + } + + if (startTime == -1) { + result = await historicalDb.findAll(collection); + if (result && result.length > 0) { + lastDataIndex = result.length - 1; + return res.status(200).json({ + message: `Performance Data for ${req.params.farmer}`, + body: result[lastDataIndex]["lp_performance"], + }); + } else { + return res.status(200).json({ + message: `Performance Data for ${req.params.farmer}`, + body: 0, + }); + } + } else { + result = await historicalDb.findPerformanceWithTimePeriods( + collection, + startTime + ); + } + + if (result && result.length > 0) { + const basePrice = result[0]["lp_token_price_usd"]; + lastDataIndex = result.length - 1; + pnl = calculatePerformance( + basePrice, + result[lastDataIndex]["lp_token_price_usd"] + ); + return res.status(200).json({ + message: `Performance Data for ${req.params.farmer}`, + body: pnl, + }); + } else { + return res.status(200).json({ + message: `Performance Data for ${req.params.farmer}`, + body: 0, + }); + } + } catch (error) { + return res.status(200).json({ + message: `Performance Data for ${req.params.farmer}`, + body: 0, + }); + } +}; + +module.exports.performanceHandle = async (req, res) => { + try { + if ( + req.params.days !== "30d" && + req.params.days !== "7d" && + req.params.days !== "1d" && + req.params.days !== undefined + ) { + res.status(200).json({ + message: "Days should be 30d, 7d, 1d or empty (all).", + body: null, + }); + return; + } + // check if vault param is input + if (req.params.farmer === null || req.params.farmer === "") { + res.status(200).json({ + message: "Vault input is empty", + body: null, + }); + return; + } + + let startTime = -1; + let collection = ""; + let result; + + switch (req.params.farmer) { + case historicalDb.daoCDVFarmer: + collection = historicalDb.daoCDVFarmer; + break; + // case historicalDb.daoELOFarmer: + // collection = historicalDb.daoELOFarmer; + // break; + case historicalDb.daoSTOFarmer: + collection = historicalDb.daoSTOFarmer; + break; + default: + res.status(200).json({ + message: "Invalid Farmer", + body: null, + }); + return; + } + + switch (req.params.days) { + case "30d": + startTime = moment().subtract(30, "days").unix(); + break; + case "7d": + startTime = moment().subtract(7, "days").unix(); + break; + case "1d": + startTime = moment().subtract(1, "days").unix(); + break; + } + + if (startTime == -1) { + result = await historicalDb.findAll(collection); + } else { + result = await historicalDb.findPerformanceWithTimePeriods( + collection, + startTime + ); + + if (result != null && result.length > 0) { + const basePrice = result[0]["lp_token_price_usd"]; + const btcBasePrice = result[0]["btc_price"]; + const ethBasePrice = result[0]["eth_price"]; + result.forEach((data) => { + data["lp_performance"] = calculatePerformance( + basePrice, + data["lp_token_price_usd"] + ); + data["btc_performance"] = calculatePerformance( + btcBasePrice, + data["btc_price"] + ); + data["eth_performance"] = calculatePerformance( + ethBasePrice, + data["eth_price"] + ); + }); + } + } + + if (result) { + res.status(200).json({ + message: `Performance Data for ${req.params.farmer}`, + body: result, + }); + } + } catch (err) { + res.status(200).json({ + message: `Performance Data for ${req.params.farmer}`, + body: null, + error: err, + }); + } +}; diff --git a/services/vaults/price/handler.js b/services/vaults/price/handler.js new file mode 100644 index 0000000..8e74927 --- /dev/null +++ b/services/vaults/price/handler.js @@ -0,0 +1,355 @@ +"use strict" + +const { + testContracts, + mainContracts, +} = require('../../../config/serverless/domain'); +const { + getContract, + getPricePerFullShare +} = require('../../user/vaults/statistics/handler'); +const db = require('../../../models/price.model'); +const BigNumber = require("bignumber.js"); +const moment = require("moment"); +const delay = require("delay"); +const { delayTime } = require("../apy/save/config"); +const Web3 = require("web3"); +const archiveNodeUrl = process.env.ARCHIVENODE_ENDPOINT; +const archiveNodeWeb3 = new Web3(archiveNodeUrl); + +const contractHelper = require("../../../utils/contract"); + +const getPriceFromChainLink = async () => { + let contract, price = 0; + if (process.env.PRODUCTION != '') { + contract = new archiveNodeWeb3.eth.Contract(mainContracts.chainLink.USDT_ETH.abi, mainContracts.chainLink.USDT_ETH.address); + } else { + contract = new archiveNodeWeb3.eth.Contract(testContracts.chainLink.USDT_ETH.abi, testContracts.chainLink.USDT_ETH.address); + } + + try { + price = await contract.methods.latestAnswer().call(); + } catch (ex) {} + await delay(delayTime); + return price; +}; + +const getCitadelPricePerFullShare = async (contract) => { + let pricePerFullShare = 0; + try { + const price = await getPriceFromChainLink(); + const pool = await contract.methods.getAllPoolInETH(price).call(); + const totalSupply = await contract.methods.totalSupply().call(); + pricePerFullShare = pool / totalSupply; + } catch (ex) {} + + await delay(delayTime); + return pricePerFullShare; +} + +const getElonPricePerFullShare = async (contract) => { + let pricePerFullShare = 0; + try { + const pool = await contract.methods.getAllPoolInUSD().call(); // All pool in USD (6 decimals) + const totalSupply = await contract.methods.totalSupply().call(); + pricePerFullShare = (new BigNumber(pool)).shiftedBy(12).dividedBy(totalSupply).toNumber(); + } catch (ex) {} + + await delay(delayTime); + return pricePerFullShare; +} + +const getCubanPricePerFullShare = async (contract) => { + let pricePerFullShare = 0; + try { + const pool = await contract.methods.getAllPoolInUSD().call(); // All pool in USD (6 decimals) + const totalSupply = await contract.methods.totalSupply().call(); + pricePerFullShare = (new BigNumber(pool)).shiftedBy(12).dividedBy(totalSupply).toNumber(); + } catch (ex) {} + + await delay(delayTime); + return pricePerFullShare; +} + +const getFaangPricePerFullShare = async (contract) => { + let pricePerFullShare = 0; + try { + const pool = await contract.methods.getTotalValueInPool().call(); + const totalSupply = await contract.methods.totalSupply().call(); + pricePerFullShare = pool / totalSupply; + } catch (ex) {} + await delay(delayTime); + return pricePerFullShare; +} + +const getMoneyPrinterPricePerFullShare = async (contract) => { + let pricePerFullShare = 0; + try { + const pool = await contract.methods.getValueInPool().call(); + const totalSupply = await contract.methods.totalSupply().call(); + pricePerFullShare = pool / totalSupply; + } catch (ex) {} + await delay(delayTime); + return pricePerFullShare; +} + +const getCurrentPrice = async () => { + let contracts = process.env.PRODUCTION != null && process.env.PRODUCTION != '' ? mainContracts : testContracts; + + for (const key of Object.keys(contracts.farmer)) { + try { + if (contracts.farmer[key].contractType === 'yearn') { + const earnContract = getContract(contracts.earn[key].abi, contracts.earn[key].address); + const vaultContract = getContract(contracts.vault[key].abi, contracts.vault[key].address); + + const earnPricePerFullShare = await getPricePerFullShare(earnContract); + const vaultPricePerFullShare = await getPricePerFullShare(vaultContract); + await db.add(key + '_price', { + earnPrice: earnPricePerFullShare, + vaultPrice: vaultPricePerFullShare, + compoundExchangeRate: 0, + citadelPrice: 0, + elonPrice: 0, + cubanPrice: 0, + faangPrice: 0, + moneyPrinterPrice: 0, + harvestPrice: 0 + }).catch((err) => console.log('err', err)); + } else if (contracts.farmer[key].contractType === 'compound') { + const compoundContract = getContract(contracts.compund[key].abi, contracts.compund[key].address); + const getCash = await compoundContract.methods.getCash().call(); + const totalBorrows = await compoundContract.methods.totalBorrows().call(); + const totalReserves = await compoundContract.methods.totalReserves().call(); + const totalSupply = await compoundContract.methods.totalSupply().call(); + const exchangeRate = (getCash + totalBorrows - totalReserves) / totalSupply; + + await db.add(key + '_price', { + earnPrice: 0, + vaultPrice: 0, + compoundExchangeRate: exchangeRate, + citadelPrice: 0, + elonPrice: 0, + cubanPrice: 0, + faangPrice: 0, + moneyPrinterPrice: 0, + harvestPrice: 0, + }).catch((err) => console.log('err', err)); + } else if (contracts.farmer[key].contractType === 'citadel') { + const contract = getContract(contracts.farmer[key].abi, contracts.farmer[key].address); + const pricePerFullShare = await getCitadelPricePerFullShare(contract); + await db.add(key + '_price', { + earnPrice: 0, + vaultPrice: 0, + compoundExchangeRate: 0, + citadelPrice: isNaN(pricePerFullShare) ? 0 : pricePerFullShare, + elonPrice: 0, + cubanPrice: 0, + faangPrice: 0, + moneyPrinterPrice: 0, + harvestPrice: 0, + }).catch((err) => console.log('err', err)); + } else if (contracts.farmer[key].contractType === 'elon') { + const contract = getContract(contracts.farmer[key].abi, contracts.farmer[key].address); + const pricePerFullShare = await getElonPricePerFullShare(contract); + await db.add(key + '_price', { + earnPrice: 0, + vaultPrice: 0, + compoundExchangeRate: 0, + citadelPrice: 0, + elonPrice: pricePerFullShare, + cubanPrice: 0, + faangPrice: 0, + harvestPrice: 0, + }).catch((err) => console.log('err', err)); + } else if (contracts.farmer[key].contractType === 'cuban') { + const contract = getContract(contracts.farmer[key].abi, contracts.farmer[key].address); + const pricePerFullShare = await getCubanPricePerFullShare(contract); + await db.add(key + '_price', { + earnPrice: 0, + vaultPrice: 0, + compoundExchangeRate: 0, + citadelPrice: 0, + elonPrice: 0, + cubanPrice: pricePerFullShare, + faangPrice: 0, + moneyPrinterPrice: 0, + harvestPrice: 0, + }).catch((err) => console.log('err', err)); + } else if(contracts.farmer[key].contractType === 'daoFaang') { + const contract = getContract(contracts.farmer[key].abi, contracts.farmer[key].address); + const pricePerFullShare = await getFaangPricePerFullShare(contract); + await db.add(key + '_price', { + earnPrice: 0, + vaultPrice: 0, + compoundExchangeRate: 0, + citadelPrice: 0, + elonPrice: 0, + cubanPrice: 0, + faangPrice: pricePerFullShare, + moneyPrinterPrice: 0, + harvestPrice: 0, + }).catch((err) => console.log('err', err)); + } else if(contracts.farmer[key].contractType === 'moneyPrinter') { + const contract = contractHelper.getPolygonContract(contracts.farmer[key].abi, contracts.farmer[key].address); + const pricePerFullShare = await getMoneyPrinterPricePerFullShare(contract); + await db.add(key + '_price', { + earnPrice: 0, + vaultPrice: 0, + compoundExchangeRate: 0, + citadelPrice: 0, + elonPrice: 0, + faangPrice: 0, + moneyPrinterPrice: pricePerFullShare, + harvestPrice: 0, + }).catch((err) => console.log('err', err)); + } else if (contracts.farmer[key].contractType === 'harvest') { + // Get vault contract and strategy contract + const vaultContract = getContract(contracts.farmer[key].abi, contracts.farmer[key].address); + const strategyContract = getContract(contracts.farmer[key].strategyABI, contracts.farmer[key].strategyAddress); + + // Get pool + const pool = await strategyContract.methods.pool().call(); + + // Get total supply + const totalSupply = await vaultContract.methods.totalSupply().call(); + + // Calculate price per full share + const pricePerFullShare = pool / totalSupply; + + await db.add(key + '_price', { + earnPrice: 0, + vaultPrice: 0, + compoundExchangeRate: 0, + citadelPrice: 0, + elonPrice: 0, + cubanPrice: 0, + faangPrice: 0, + moneyPrinterPrice: 0, + harvestPrice: pricePerFullShare, + }) + } + } catch (err) { + await db.add(key + '_price', { + earnPrice: "0", + vaultPrice: "0", + compoundExchangeRate: 0, + citadelPrice: 0, + elonPrice: 0, + cubanPrice: 0, + faangPrice: 0, + moneyPrinterPrice:0, + harvestPrice: "0" + }).catch((err) => console.log('err', err)); + } + } +} + +const getHistoricalPrice = async (startTime, collection) => { + var result = []; + result = await db.findPriceWithTimePeriods(collection, startTime, new Date().getTime()) + return result; +} + +module.exports.handler = async () => { + await getCurrentPrice(); +} + +module.exports.handleHistoricialPrice = async (req, res) => { + if (req.params.days == null || req.params.days == '') { + res.status(200).json({ + message: 'Days is empty.', + body: null + }); + } else if (req.params.farmer == null || req.params.farmer == '') { + res.status(200).json({ + message: 'Farmer is empty.', + body: null + }); + } else { + let collection = ''; + switch (req.params.farmer) { + case db.usdtFarmer: + collection = db.usdtFarmer; + break; + case db.usdcFarmer: + collection = db.usdcFarmer; + break; + case db.daiFarmer: + collection = db.daiFarmer; + break; + case db.tusdFarmer: + collection = db.tusdFarmer; + break; + case db.cUsdtFarmer: + collection = db.cUsdtFarmer; + break; + case db.cUsdcFarmer: + collection = db.cUsdcFarmer; + break; + case db.cDaiFarmer: + collection = db.cDaiFarmer; + break; + case db.daoCDVFarmer: + collection = db.daoCDVFarmer; + break; + case db.daoELOFarmer: + collection = db.daoELOFarmer; + break; + case db.daoCUBFarmer: + collection = db.daoCUBFarmer; + break; + case db.daoSTOFarmer: + collection = db.daoSTOFarmer; + break; + case db.daoMPTFarmer: + collection = db.daoMPTFarmer; + break; + case db.hfDaiFarmer: + collection = db.hfDaiFarmer; + break; + case db.hfUsdcFarmer: + collection = db.hfUsdcFarmer; + break; + case db.hfUsdtFarmer: + collection = db.hfUsdtFarmer; + break; + default: + res.status(200).json({ + message: 'Invalid Farmer', + body: null + }) + return; + } + + var startTime = -1; + switch (req.params.days) { + case '30d': + startTime = moment().subtract(30, 'days'); + break; + case '7d': + startTime = moment().subtract(7, 'days'); + break; + case '1d': + startTime = moment().subtract(1, 'days'); + break; + } + + if (startTime !== -1) { + var result = await getHistoricalPrice(startTime.unix(), collection); + const resultMapping = (price) => { + delete price._id; + return price; + }; + result = result.map(resultMapping); + res.status(200).json({ + message: '', + body: result + }) + } else { + res.status(200).json({ + message: "Please only pass '30d', '7d' or '1d' as days option.", + body: null + }) + } + } +} diff --git a/services/vaults/save/handler.js b/services/vaults/save/handler.js index 6324349..82998ca 100644 --- a/services/vaults/save/handler.js +++ b/services/vaults/save/handler.js @@ -1,10 +1,11 @@ require("dotenv").config(); const AWS = require("aws-sdk"); -const db = new AWS.DynamoDB.DocumentClient({ apiVersion: "2012-08-10" }); +// const db = new AWS.DynamoDB.DocumentClient({ apiVersion: "2012-08-10" }); +const db = require('../../../models/vault.model'); const _ = require("lodash"); const fetch = require("node-fetch"); const Web3 = require("web3"); -const web3 = new Web3(process.env.WEB3_ENDPOINT); +const web3 = new Web3(process.env.MAIN_WEB3_ENDPOINT); const etherscanApiKey = process.env.ETHERSCAN_API_KEY; const yRegistryAbi = require("./abis/yRegistry"); const yRegistryAddress = "0x3ee41c098f9666ed2ea246f4d2558010e59d63a0"; @@ -70,18 +71,11 @@ const callContractMethod = async (contract, method) => { }; const saveVault = async (vault) => { - const params = { - TableName: "vaults", - Item: vault, - }; - await db - .put(params) - .promise() - .catch((err) => console.log("err", err)); + await db.add(vault).catch((err) => console.log('err', err)); console.log(`Saved ${vault.name}`); }; -module.exports.handler = async (event) => { +module.exports.handler = async () => { const registryContract = new web3.eth.Contract( yRegistryAbi, yRegistryAddress @@ -93,53 +87,60 @@ module.exports.handler = async (event) => { await delay(delayTime); const getVault = async (vaultAddress, idx) => { - const controllerAddress = vaultInfo.controllerArray[idx]; - const strategyAddress = vaultInfo.strategyArray[idx]; - const vaultContract = await getContract(vaultAddress); - const controllerContract = await getContract(controllerAddress); - const strategyContract = await getContract(strategyAddress); - const vaultName = await callContractMethod(vaultContract, "name"); - const vaultSymbol = await callContractMethod(vaultContract, "symbol"); - const tokenSymbol = vaultSymbol.substring(1); - const tokenAddress = vaultInfo.tokenArray[idx]; - const tokenName = vaultName.substring(6); - const decimals = parseInt( - await callContractMethod(vaultContract, "decimals"), - 10 - ); - - const tokenInfo = await fetch( - `https://api.coingecko.com/api/v3/coins/ethereum/contract/${tokenAddress}` - ).then((res) => res.json()); - const tokenSymbolAlias = tokenSymbolAliases[tokenSymbol] || tokenSymbol; - const symbolAlias = symbolAliases[vaultSymbol] || `y${tokenSymbolAlias}`; - const vaultAlias = - vaultAliases[vaultAddress] || `${tokenSymbolAlias} Vault`; - const tokenIcon = tokenInfo.image.large; - const vaultIcon = vaultIcons[tokenSymbol]; - const vault = { - address: vaultAddress, - name: vaultName, - vaultAlias, - vaultIcon, - symbol: vaultSymbol, - symbolAlias, - controllerAddress: controllerAddress, - controllerName: await fetchContractName(controllerAddress), - strategyAddress: strategyAddress, - strategyName: await fetchContractName(strategyAddress), - tokenAddress: tokenAddress, - tokenName: tokenName, - tokenSymbol: tokenSymbol, - tokenSymbolAlias, - tokenIcon: tokenIcon, - decimals: decimals, - wrapped: vaultInfo.isWrappedArray[idx], - delegated: vaultInfo.isDelegatedArray[idx], - timestamp: Date.now(), - }; - await saveVault(vault); - return vault; + try { + const controllerAddress = vaultInfo.controllerArray[idx]; + const strategyAddress = vaultInfo.strategyArray[idx]; + const vaultContract = await getContract(vaultAddress); + const controllerContract = await getContract(controllerAddress); + const strategyContract = await getContract(strategyAddress); + const vaultName = await callContractMethod(vaultContract, "name"); + const vaultSymbol = await callContractMethod(vaultContract, "symbol"); + const tokenSymbol = vaultSymbol.substring(1); + const tokenAddress = vaultInfo.tokenArray[idx]; + const tokenName = vaultName.substring(6); + const decimals = parseInt( + await callContractMethod(vaultContract, "decimals"), + 10 + ); + + const tokenInfo = await fetch( + `https://api.coingecko.com/api/v3/coins/ethereum/contract/${tokenAddress}` + ).then((res) => res.json()); + + if (tokenInfo) { + const tokenSymbolAlias = tokenSymbolAliases[tokenSymbol] || tokenSymbol; + const symbolAlias = symbolAliases[vaultSymbol] || `y${tokenSymbolAlias}`; + const vaultAlias = + vaultAliases[vaultAddress] || `${tokenSymbolAlias} Vault`; + const tokenIcon = tokenInfo.image ? tokenInfo.image.large : ''; + const vaultIcon = vaultIcons[tokenSymbol]; + const vault = { + address: vaultAddress, + name: vaultName, + vaultAlias, + vaultIcon, + symbol: vaultSymbol, + symbolAlias, + controllerAddress: controllerAddress, + controllerName: await fetchContractName(controllerAddress), + strategyAddress: strategyAddress, + strategyName: await fetchContractName(strategyAddress), + tokenAddress: tokenAddress, + tokenName: tokenName, + tokenSymbol: tokenSymbol, + tokenSymbolAlias, + tokenIcon: tokenIcon, + decimals: decimals, + wrapped: vaultInfo.isWrappedArray[idx], + delegated: vaultInfo.isDelegatedArray[idx], + timestamp: Date.now(), + }; + await saveVault(vault); + return vault; + } + } catch (err) {} + + return; }; const vaults = []; @@ -150,14 +151,4 @@ module.exports.handler = async (event) => { const vault = await getVault(vaultAddress, idx); vaults.push(vault); } - - const response = { - statusCode: 200, - headers: { - "Access-Control-Allow-Origin": "*", - "Access-Control-Allow-Credentials": true, - }, - body: JSON.stringify(vaults), - }; - return response; }; diff --git a/services/vaults/tvl/handler.js b/services/vaults/tvl/handler.js new file mode 100644 index 0000000..65dd9db --- /dev/null +++ b/services/vaults/tvl/handler.js @@ -0,0 +1,343 @@ +const BigNumber = require("bignumber.js"); +const db = require("../../../models/tvl.model"); + +const CoinGecko = require("coingecko-api"); +const CoinGeckoClient = new CoinGecko(); + +const contractHelper = require('../../../utils/contract'); +const constant = require("../../../utils/constant"); + +let tokens = { + "tether": 0.00, + "dai": 0.00, + "true-usd": 0.00, + "usd-coin": 0.00, + "daoventures": 0.00 +}; + +const { + testContracts, + mainContracts, +} = require("../../../config/serverless/domain"); + +const getDecimals = async (contract) => { + try { + let decimals = await contract.methods.decimals().call(); + return decimals; + } catch (err) { + // Catch error + console.log(err); + } +}; + +/** + * Get pool amount from specified vault. + */ +const getPoolAmount = async (contract) => { + try { + let poolAmount = await contract.methods.pool().call(); + return poolAmount; + } catch (err) { + // Catch error + console.log(err); + } +}; + +const getBalance = async (contract, address) => { + try { + let balanceOf = await contract.methods.balanceOf(address).call(); + return balanceOf; + } catch (err) { + // Catch error + console.log(err); + } +}; + +const getTotalSupply = async (contract) => { + try { + let totalSupply = await contract.methods.totalSupply().call(); + return totalSupply; + } catch (err) { + // Catch error + console.log(err); + } +}; + +const getContract = async (vault) => { + try { + const { abi, address, network } = vault; + const contract = await contractHelper.getContract(abi, address, network); + return contract + } catch(err) { + console.log("getContract", err); + } +} + +/** + * Get Token price from coingecko + */ +const getTokenPrice = async() => { + const tokenIds = Object.keys(tokens); + + try { + data = await CoinGeckoClient.simple.price({ + ids: tokenIds, + vs_currencies: ["usd"], + }); + + if (data.code == 200 && data.message == 'OK' && data.data) { + const result = data.data; + tokenIds.map(t => { + tokens[t] = result[t]["usd"]; + }) + } + + } catch(err) { + console.log("Error occur in getTokenPrice(): ", err); + } + +} + +const getVipTokenPrice = async (vipTotalSupply, tokenBalOfVipToken, tokenPrice) => { + return (tokenBalOfVipToken * tokenPrice) / vipTotalSupply; +} + +/** + * Get TVL of specified vault. + * TVL = poolAmount * tokenPrice + */ +const getTVL = async (vault) => { + const { + tokenId, + strategyABI, + strategyAddress + } = vault; + let tvl; + + if (vault.contractType === 'citadel' || vault.contractType === 'elon' || vault.contractType === 'cuban') { + const contract = await getContract(vault); + const usdPool = await contract.methods.getAllPoolInUSD().call(); + tvl = usdPool / 10 ** 6; // All pool in USD (6 decimals follow USDT) + } else if(vault.contractType === 'daoFaang'){ + const contract = await getContract(vault); + const poolAmount = await contract.methods.getTotalValueInPool().call(); + const decimals = await contract.methods.decimals().call(); + tvl = poolAmount / 10 ** decimals; + } else if (vault.contractType === "moneyPrinter") { + const contract = await getContract(vault); + const poolAmount = await contract.methods.getValueInPool().call(); + const decimals = await contract.methods.decimals().call(); + tvl = poolAmount / 10 ** decimals; + } else { + const strategy = { abi: strategyABI, address: strategyAddress, network: vault.network} + const strategyContract = await getContract(strategy); + + const poolAmount = await getPoolAmount(strategyContract); + const tokenPrice = tokens[tokenId] ? tokens[tokenId] : 0.00; + + let decimals = 0; + if(vault.contractType === 'harvest') { + const vaultContract = await getContract(vault); + decimals = await getDecimals(vaultContract); + } else { + decimals = await getDecimals(strategyContract); + } + + tvl = (poolAmount / 10 ** decimals) * tokenPrice; + } + + return tvl; +}; + + +const getVipTokenTVL = async (vipTokenVault, tokenVault) => { + const { decimals } = vipTokenVault; + const { tokenId } = tokenVault; + let tvl; + + const vipTokenContract = await getContract(vipTokenVault); + const tokenContract = await getContract(tokenVault); + + const vipTotalSupply = await getTotalSupply(vipTokenContract); + const tokenBalOfVipToken = await getBalance(tokenContract, vipTokenContract._address); + + const tokenPrice = (tokenId === "daoventures") + ? tokens["daoventures"] + : 0.225 ; + + const vipTokenPrice = await getVipTokenPrice(vipTotalSupply, tokenBalOfVipToken, tokenPrice); + tvl = (vipTotalSupply / 10 ** decimals) * vipTokenPrice; + + return tvl; +}; + +// Get and Save all TVL of all Vaults +const getAllTVL = async () => { + let vaults = + process.env.PRODUCTION != null && process.env.PRODUCTION != "" + ? mainContracts + : testContracts; + + let tvls = Array(); + for (vault in vaults.farmer) { + try { + let _vault = vaults.farmer[vault]; + let tvl = await getTVL(_vault); + tvls.push(tvl); + await saveTVL(vault, tvl); + } catch(err) { + console.error(err); + } + } + + try { + let tvl = await getVipTokenTVL(vaults.vipDVG, vaults.DVG); + tvls.push(tvl); + await saveTVL("xDVG", tvl); + + const vipDVDTVL = await getVipTokenTVL(vaults.vipDVD, vaults.DVD); + tvls.push(vipDVDTVL); + await saveTVL("xDVD", vipDVDTVL); + } catch (err) { + console.error(err); + } + + return tvls; +}; + +// Get Total TVL +const getTotalTVL = async (tvls) => { + let totalTVL; + try { + const zero = new BigNumber(0); + totalTVL = tvls.reduce( + (a, b) => { + return new BigNumber(a).plus(new BigNumber(b)); + }, + zero, + tvls + ); + totalTVL = totalTVL.toFixed(); + } catch (err) { + // Catch error + console.log(err); + } + return totalTVL; +}; + +// Write to Total TVL to DB +const saveTotalTVL = async (totalTVL) => { + await db + .add("total_tvl", { + tvl: totalTVL, + }) + .catch((err) => console.log("err", err)); +}; + +// Save TVL of specified Vault +const saveTVL = async (name, tvl) => { + await db + .add(name + "_tvl", { + tvl: tvl, + }) + .catch((err) => console.log("err", err)); +}; + +// Save All TVLs to database +module.exports.saveAllTVLhandler = async () => { + await getTokenPrice(); + const tvls = await getAllTVL(); + const totalTvl = await getTotalTVL(tvls); + await saveTotalTVL(totalTvl); +}; + +/* HANDLERS */ + +module.exports.tvlHandle = async (req, res) => { + // check if vault param is input + if (req.params.farmer === null || req.params.farmer === "") { + res.status(200).json({ + message: "Farmer is empty.", + body: null, + }); + } + + let collection = ""; + + switch (req.params.farmer) { + case db.usdtFarmer: + collection = db.usdtFarmer; + break; + case db.usdcFarmer: + collection = db.usdcFarmer; + break; + case db.daiFarmer: + collection = db.daiFarmer; + break; + case db.tusdFarmer: + collection = db.tusdFarmer; + break; + case db.cUsdtFarmer: + collection = db.cUsdtFarmer; + break; + case db.cUsdcFarmer: + collection = db.cUsdcFarmer; + break; + case db.cDaiFarmer: + collection = db.cDaiFarmer; + break; + case db.daoCDVFarmer: + collection = db.daoCDVFarmer; + break; + case db.daoELOFarmer: + collection = db.daoELOFarmer; + break; + case db.daoCUBFarmer: + collection = db.daoCUBFarmer; + break; + case db.daoSTOFarmer: + collection = db.daoSTOFarmer; + break; + case db.hfDaiFarmer: + collection = db.hfDaiFarmer; + break; + case db.hfUsdtFarmer: + collection = db.hfUsdtFarmer; + break; + case db.hfUsdcFarmer: + collection = db.hfUsdcFarmer; + break; + case db.daoMPTFarmer: + collection = db.daoMPTFarmer; + break; + default: + res.status(200).json({ + message: "Invalid Farmer", + body: null, + }); + return; + } + + + const result = await db.getTVL(collection, { limit: 1 }); + if (result) { + res.status(200).json({ + message: `TVL for ${req.params.farmer}`, + body: result, + }); + } + return; +}; + +module.exports.totalHandle = async (req, res) => { + // Get and save all TVL + const totalTvl = await db.getTotalTVL({ limit: 1 }); + + delete totalTvl[0]._id; + + res.status(200).json({ + message: "Total TVL", + body: totalTvl, + }); + return; +} diff --git a/swagger.json b/swagger.json new file mode 100644 index 0000000..2851f1e --- /dev/null +++ b/swagger.json @@ -0,0 +1,300 @@ +{ + "swagger": "2.0", + "info": { + "version": "1.0.0", + "title": "DAOventures API", + "description": "DAOventures API documentation" + }, + "basePath": "/api/", + "consumes": ["application/json"], + "produces": ["application/json"], + "paths": { + "/vaults/apy": { + "get": { + "tags": ["Vaults"], + "description": "Vault Information with APY", + "produces": ["application/json"], + "responses": {} + } + }, + "/user/{userAddress}/vaults/statistics": { + "get": { + "tags": ["Users"], + "description": "Transaction information of the user and vaults", + "produces": ["application/json"], + "parameters": [ + { + "name": "userAddress", + "in": "path", + "description": "User Wallet Address (Lower Case)", + "required": true, + "type": "string" + } + ], + "responses": {} + } + }, + "/user/{userAddress}/vaults/transactions": { + "get": { + "tags": ["Users"], + "description": "Transaction history of the user", + "produces": ["application/json"], + "parameters": [ + { + "name": "userAddress", + "in": "path", + "description": "User Wallet Address (Lower Case)", + "required": true, + "type": "string" + } + ], + "responses": {} + } + }, + "/vaults/price/{farmer}/{days}": { + "get": { + "tags": ["Vaults"], + "description": "Price history of the vault", + "produces": ["application/json"], + "parameters": [ + { + "name": "farmer", + "in": "path", + "description": "Vault ID with '_price'", + "required": true, + "type": "string" + }, + { + "name": "days", + "in": "path", + "description": "Number of days. Only available for '30d', '7d', '1d'.", + "required": true, + "type": "string" + } + ], + "responses": {} + } + }, + "/vaults/historical-apy/{contractAddress}/{days}": { + "get": { + "tags": ["Vaults"], + "description": "APY history of the vaults", + "produces": ["application/json"], + "parameters": [ + { + "name": "contractAddress", + "in": "path", + "description": "Vault Address", + "required": true, + "type": "string" + }, + { + "name": "days", + "in": "path", + "description": "Number of days. Only available for '30d', '7d', '1d'.", + "required": true, + "type": "string" + } + ], + "responses": {} + } + }, + "/vaults/tvl/{farmer}": { + "get": { + "tags": ["Vaults"], + "description": "TVL of the vault", + "produces": ["application/json"], + "parameters": [ + { + "name": "farmer", + "in": "path", + "description": "Vault ID with '_tvl'", + "required": true, + "type": "string" + } + ], + "responses": {} + } + }, + "/vaults/tvl/total": { + "get": { + "tags": ["Vaults"], + "description": "Total TVL of all the existing vaults", + "produces": ["application/json"], + "responses": {} + } + }, + "/vaults/category": { + "get": { + "tags": ["Vaults"], + "description": "Get All Vault Categories", + "produces": ["application/json"], + "responses": {} + } + }, + "/vaults/performance/{farmer}/{days}": { + "get": { + "tags": ["Vaults"], + "description": "Get All Vault Performance for stated days", + "produces": ["application/json"], + "parameters": [ + { + "name": "farmer", + "in": "path", + "description": "Vault ID with", + "required": true, + "type": "string" + }, + { + "name": "days", + "in": "path", + "description": "Number of days. Only available for '30d', '7d', '1d'.", + "required": true, + "type": "string" + } + ], + "responses": {} + } + }, + "/vaults/performance/{farmer}": { + "get": { + "tags": ["Vaults"], + "description": "Get All Vault Performance from inception", + "produces": ["application/json"], + "parameters": [ + { + "name": "farmer", + "in": "path", + "description": "Vault ID", + "required": true, + "type": "string" + } + ], + "responses": {} + } + }, + "/vaults/pnl/{farmer}/{days}": { + "get": { + "tags": ["Vaults"], + "description": "Get Vault PNL since specified day", + "produces": ["application/json"], + "parameters": [ + { + "name": "farmer", + "in": "path", + "description": "Vault ID with'", + "required": true, + "type": "string" + }, + { + "name": "days", + "in": "path", + "description": "Number of days. Only available for '30d', '7d', '1d'.", + "required": true, + "type": "string" + } + ], + "responses": {} + } + }, + "/vaults/pnl/{farmer}": { + "get": { + "tags": ["Vaults"], + "description": "Get Vault PNL since inception", + "produces": ["application/json"], + "parameters": [ + { + "name": "farmer", + "in": "path", + "description": "Vault ID", + "required": true, + "type": "string" + } + ], + "responses": {} + } + }, + "/staking/get-vip-tokens": { + "get": { + "tags": ["Stake"], + "description": "vipDVG Token Information", + "produces": ["application/json"], + "responses": {} + } + }, + "/staking/get-pools": { + "get": { + "tags": ["Stake"], + "description": "Stake Pools Information", + "produces": ["application/json"], + "responses": {} + } + }, + "/staking/get-xdvg-stake": { + "get": { + "tags": ["Stake"], + "description": "Get xDVG stake", + "produces": ["application/json"], + "responses": {} + } + }, + "/event/verify": { + "get": { + "tags": ["Vaults"], + "description": "Check if any happy hour event at current time.", + "produces": ["application/json"], + "responses": {} + } + }, + "/event/verify/{amount}": { + "get": { + "tags": ["Vaults"], + "description": "Verify user eligible for special event deposit.", + "produces": ["application/json"], + "parameters": [ + { + "name": "amount", + "in": "path", + "description": "Amount to deposit", + "required": true, + "type": "string" + } + ], + "responses": {} + } + }, + "/staking/emergency-withdraw-snapshot": { + "post": { + "tags": ["Stake"], + "description": "Stake Pools Emergency Withdrawal Snapshot", + "produces": ["application/json"], + "consumes": ["application/json"], + "parameters": [ + { + "in": "body", + "name": "Snap Shot", + "description": "Emergency Withdrawal SnapShot", + "schema": { + "type": "object", + "properties": { + "pid": { + "type": "string", + "description": "Pool ID" + }, + "userAddress": { + "type": "string", + "description": "User Wallet Address" + }, + "pendingDVG": { + "type": "integer", + "description": "Pending DVG Amount" + } + } + } + } + ], + "responses": {} + } + } + } +} diff --git a/utils/api.js b/utils/api.js new file mode 100644 index 0000000..eaffd0f --- /dev/null +++ b/utils/api.js @@ -0,0 +1,22 @@ +const axios = require('axios'); + +const pushSlackErrorAlert = (method, url, err) => { + const requestBody = { + text: url !== "" ? `API Error - ${err}\nMethod - ${method}\nSource <${url}|${url}>` : `API Error - ${err}\nMethod - ${method}` + }; + + const request = { + method: "post", + url: process.env.SLACK_HOOK_URL, + headers: { + "Content-Type": "application/json" + }, + data: requestBody + }; + axios(request) +}; + +module.exports = +{ + pushSlackErrorAlert +}; \ No newline at end of file diff --git a/utils/constant.js b/utils/constant.js new file mode 100644 index 0000000..d7807e2 --- /dev/null +++ b/utils/constant.js @@ -0,0 +1,5 @@ +module.exports = { + // Network Category + ETHEREUM: "ethereum", + POLYGON: "polygon", +} \ No newline at end of file diff --git a/utils/contract.js b/utils/contract.js new file mode 100644 index 0000000..0277e05 --- /dev/null +++ b/utils/contract.js @@ -0,0 +1,86 @@ +const Web3 = require("web3"); +const constant = require("./constant"); + +const archiveNodeUrl = process.env.ARCHIVENODE_ENDPOINT; // Ethereum +const archiveNodePolygonUrl = process.env.POLYGON_ARCHIVENODE_ENDPOINT; // Polygon + +const web3 = new Web3(archiveNodeUrl); +const polygonWeb3 = new Web3(archiveNodePolygonUrl); + +const EthDater = require("../services/vaults/apy/save/ethereum-block-by-date"); +const ethereumBlocks = new EthDater(web3, 1000); +const polygonBlocks = new EthDater(polygonWeb3, 1000); + +// Create Ethereum network contract +module.exports.getEthereumContract = async (abi, address) => { + try { + const contract = new web3.eth.Contract(abi, address); + return contract; + } catch (err) { + console.log("err in getEthereumContract", err); + } +} + +// Create Polygon network contract +module.exports.getPolygonContract = async (abi, address) => { + try { + const contract = new polygonWeb3.eth.Contract(abi, address); + return contract; + } catch (err) { + console.log("err in getPolygonContract", err); + } +} + +module.exports.getContract = async (abi, address, network) => { + try { + switch(network) { + case constant.ETHEREUM: + return this.getEthereumContract(abi, address); + case constant.POLYGON: + return this.getPolygonContract(abi, address); + default: + return this.getEthereumContract(abi, address); + } + } catch (err) { + console.log(err); + } +} + +// Get current block number for Ethereum +module.exports.getEthereumCurrentBlockNumber = async() => { + try { + const currentBlockNumber = await web3.eth.getBlockNumber(); + return currentBlockNumber; + } catch (err) { + console.log('Error in getEthereumCurrentBlockNumber()', err); + } +} + +// Get current block number for Polygon +module.exports.getPolygonCurrentBlockNumber = async() => { + try { + const currentBlockNumber = await polygonWeb3.eth.getBlockNumber(); + return currentBlockNumber; + } catch (err) { + console.log('Error in getEthereumCurrentBlockNumber()', err); + } +} + +// Get ethereum block number by timeline +module.exports.getEthereumBlockNumberByTimeline = async(timeline) => { + try { + return (await ethereumBlocks.getDate(timeline)).block; + } catch (err) { + console.log('Error in getEthereumCurrentBlockNumber()', err); + } +} + +// Get Polygon block number by timeline +module.exports.getPolygonBlockNumberByTimeline = async(timeline) => { + try { + return (await polygonBlocks.getDate(timeline)).block; + } catch (err) { + console.log('Error in getPolygonBlockNumberByTimeline()', err); + } +} + diff --git a/yarn.lock b/yarn.lock index f556279..3a6e6a0 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3,9 +3,7 @@ "@ethersproject/abi@5.0.0-beta.153": - version "5.0.0-beta.153" - resolved "https://registry.yarnpkg.com/@ethersproject/abi/-/abi-5.0.0-beta.153.tgz#43a37172b33794e4562999f6e2d555b7599a8eee" - integrity sha512-aXweZ1Z7vMNzJdLpR1CZUAIgnwjrZeUSvN9syCwlBaEBUFJmFY+HHnfuTI5vIhVs/mRkfJVrbEyl51JZQqyjAg== + "version" "5.0.0-beta.153" dependencies: "@ethersproject/address" ">=5.0.0-beta.128" "@ethersproject/bignumber" ">=5.0.0-beta.130" @@ -17,107 +15,95 @@ "@ethersproject/properties" ">=5.0.0-beta.131" "@ethersproject/strings" ">=5.0.0-beta.130" -"@ethersproject/address@>=5.0.0-beta.128", "@ethersproject/address@^5.0.3": - version "5.0.3" - resolved "https://registry.yarnpkg.com/@ethersproject/address/-/address-5.0.3.tgz#86489f836d1656135fa6cae56d9fd1ab5b2c95af" - integrity sha512-LMmLxL1wTNtvwgm/eegcaxtG/W7vHXKzHGUkK9KZEI9W+SfHrpT7cGX+hBcatcUXPANjS3TmOaQ+mq5JU5sGTw== +"@ethersproject/address@^5.0.4", "@ethersproject/address@>=5.0.0-beta.128": + "version" "5.0.4" dependencies: - "@ethersproject/bignumber" "^5.0.6" + "@ethersproject/bignumber" "^5.0.7" "@ethersproject/bytes" "^5.0.4" "@ethersproject/keccak256" "^5.0.3" "@ethersproject/logger" "^5.0.5" "@ethersproject/rlp" "^5.0.3" - bn.js "^4.4.0" + "bn.js" "^4.4.0" -"@ethersproject/bignumber@>=5.0.0-beta.130", "@ethersproject/bignumber@^5.0.6": - version "5.0.6" - resolved "https://registry.yarnpkg.com/@ethersproject/bignumber/-/bignumber-5.0.6.tgz#1b5494a640c64096538e622b6ba8a5b8439ebde4" - integrity sha512-fLilYOSH3DJXBrimx7PwrJdY/zAI5MGp229Mvhtcur76Lgt4qNWu9HTiwMGHP01Tkm3YP5gweF83GrQrA2tYUA== +"@ethersproject/bignumber@^5.0.7", "@ethersproject/bignumber@>=5.0.0-beta.130": + "version" "5.0.7" dependencies: "@ethersproject/bytes" "^5.0.4" "@ethersproject/logger" "^5.0.5" - bn.js "^4.4.0" + "bn.js" "^4.4.0" -"@ethersproject/bytes@>=5.0.0-beta.129", "@ethersproject/bytes@^5.0.4": - version "5.0.4" - resolved "https://registry.yarnpkg.com/@ethersproject/bytes/-/bytes-5.0.4.tgz#328d9d929a3e970964ecf5d62e12568a187189f1" - integrity sha512-9R6A6l9JN8x1U4s1dJCR+9h3MZTT3xQofr/Xx8wbDvj6NnY4CbBB0o8ZgHXvR74yV90pY2EzCekpkMBJnRzkSw== +"@ethersproject/bytes@^5.0.4", "@ethersproject/bytes@>=5.0.0-beta.129": + "integrity" "sha512-9R6A6l9JN8x1U4s1dJCR+9h3MZTT3xQofr/Xx8wbDvj6NnY4CbBB0o8ZgHXvR74yV90pY2EzCekpkMBJnRzkSw==" + "resolved" "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.0.4.tgz" + "version" "5.0.4" dependencies: "@ethersproject/logger" "^5.0.5" -"@ethersproject/constants@>=5.0.0-beta.128", "@ethersproject/constants@^5.0.3": - version "5.0.3" - resolved "https://registry.yarnpkg.com/@ethersproject/constants/-/constants-5.0.3.tgz#7ccb8e2e9f14fbcc2d52d0e1402a83a5613a2f65" - integrity sha512-iN7KBrA0zNFybDyrkcAPOcyU3CHXYFMd+KM2Jr07Kjg+DVB5wPpEXsOdd/K1KWFsFtGfNdPZ7QP8siLtCePXrQ== +"@ethersproject/constants@^5.0.4", "@ethersproject/constants@>=5.0.0-beta.128": + "version" "5.0.4" dependencies: - "@ethersproject/bignumber" "^5.0.6" + "@ethersproject/bignumber" "^5.0.7" "@ethersproject/hash@>=5.0.0-beta.128": - version "5.0.3" - resolved "https://registry.yarnpkg.com/@ethersproject/hash/-/hash-5.0.3.tgz#41f17fd7972838831620338dad932bfe3d684209" - integrity sha512-KSnJyL0G9lxbOK0UPrUcaYTc/RidrX8c+kn7xnEpTmSGxqlndw4BzvQcRgYt31bOIwuFtwlWvOo6AN2tJgdQtA== + "version" "5.0.4" dependencies: "@ethersproject/bytes" "^5.0.4" "@ethersproject/keccak256" "^5.0.3" "@ethersproject/logger" "^5.0.5" - "@ethersproject/strings" "^5.0.3" + "@ethersproject/strings" "^5.0.4" -"@ethersproject/keccak256@>=5.0.0-beta.127", "@ethersproject/keccak256@^5.0.3": - version "5.0.3" - resolved "https://registry.yarnpkg.com/@ethersproject/keccak256/-/keccak256-5.0.3.tgz#f094a8fca3bb913c044593c4f382be424292e588" - integrity sha512-VhW3mgZMBZlETV6AyOmjNeNG+Pg68igiKkPpat8/FZl0CKnfgQ+KZQZ/ee1vT+X0IUM8/djqnei6btmtbA27Ug== +"@ethersproject/keccak256@^5.0.3", "@ethersproject/keccak256@>=5.0.0-beta.127": + "integrity" "sha512-VhW3mgZMBZlETV6AyOmjNeNG+Pg68igiKkPpat8/FZl0CKnfgQ+KZQZ/ee1vT+X0IUM8/djqnei6btmtbA27Ug==" + "resolved" "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.0.3.tgz" + "version" "5.0.3" dependencies: "@ethersproject/bytes" "^5.0.4" - js-sha3 "0.5.7" + "js-sha3" "0.5.7" -"@ethersproject/logger@>=5.0.0-beta.129", "@ethersproject/logger@^5.0.5": - version "5.0.5" - resolved "https://registry.yarnpkg.com/@ethersproject/logger/-/logger-5.0.5.tgz#e3ba3d0bcf9f5be4da5f043b1e328eb98b80002f" - integrity sha512-gJj72WGzQhUtCk6kfvI8elTaPOQyMvrMghp/nbz0ivTo39fZ7IjypFh/ySDeUSdBNplAwhzWKKejQhdpyefg/w== +"@ethersproject/logger@^5.0.5", "@ethersproject/logger@>=5.0.0-beta.129": + "integrity" "sha512-gJj72WGzQhUtCk6kfvI8elTaPOQyMvrMghp/nbz0ivTo39fZ7IjypFh/ySDeUSdBNplAwhzWKKejQhdpyefg/w==" + "resolved" "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.0.5.tgz" + "version" "5.0.5" -"@ethersproject/properties@>=5.0.0-beta.131", "@ethersproject/properties@^5.0.3": - version "5.0.3" - resolved "https://registry.yarnpkg.com/@ethersproject/properties/-/properties-5.0.3.tgz#991aef39a5f87d4645cee76cec4df868bfb08be6" - integrity sha512-wLCSrbywkQgTO6tIF9ZdKsH9AIxPEqAJF/z5xcPkz1DK4mMAZgAXRNw1MrKYhyb+7CqNHbj3vxenNKFavGY/IA== +"@ethersproject/properties@^5.0.3", "@ethersproject/properties@>=5.0.0-beta.131": + "integrity" "sha512-wLCSrbywkQgTO6tIF9ZdKsH9AIxPEqAJF/z5xcPkz1DK4mMAZgAXRNw1MrKYhyb+7CqNHbj3vxenNKFavGY/IA==" + "resolved" "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.0.3.tgz" + "version" "5.0.3" dependencies: "@ethersproject/logger" "^5.0.5" "@ethersproject/rlp@^5.0.3": - version "5.0.3" - resolved "https://registry.yarnpkg.com/@ethersproject/rlp/-/rlp-5.0.3.tgz#841a5edfdf725f92155fe74424f5510c9043c13a" - integrity sha512-Hz4yyA/ilGafASAqtTlLWkA/YqwhQmhbDAq2LSIp1AJNx+wtbKWFAKSckpeZ+WG/xZmT+fw5OFKK7a5IZ4DR5g== + "integrity" "sha512-Hz4yyA/ilGafASAqtTlLWkA/YqwhQmhbDAq2LSIp1AJNx+wtbKWFAKSckpeZ+WG/xZmT+fw5OFKK7a5IZ4DR5g==" + "resolved" "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.0.3.tgz" + "version" "5.0.3" dependencies: "@ethersproject/bytes" "^5.0.4" "@ethersproject/logger" "^5.0.5" "@ethersproject/signing-key@^5.0.4": - version "5.0.4" - resolved "https://registry.yarnpkg.com/@ethersproject/signing-key/-/signing-key-5.0.4.tgz#a5334ce8a52d4e9736dc8fb6ecc384704ecf8783" - integrity sha512-I6pJoga1IvhtjYK5yXzCjs4ZpxrVbt9ZRAlpEw0SW9UuV020YfJH5EIVEGR2evdRceS3nAQIggqbsXSkP8Y1Dg== + "integrity" "sha512-I6pJoga1IvhtjYK5yXzCjs4ZpxrVbt9ZRAlpEw0SW9UuV020YfJH5EIVEGR2evdRceS3nAQIggqbsXSkP8Y1Dg==" + "resolved" "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.0.4.tgz" + "version" "5.0.4" dependencies: "@ethersproject/bytes" "^5.0.4" "@ethersproject/logger" "^5.0.5" "@ethersproject/properties" "^5.0.3" - elliptic "6.5.3" + "elliptic" "6.5.3" -"@ethersproject/strings@>=5.0.0-beta.130", "@ethersproject/strings@^5.0.3": - version "5.0.3" - resolved "https://registry.yarnpkg.com/@ethersproject/strings/-/strings-5.0.3.tgz#756cc4b93203a091966d40824b0b28048e2d5d9b" - integrity sha512-8kEx3+Z6cMn581yh093qnaSa8H7XzmLn6g8YFDHUpzXM7+bvXvnL2ciHrJ+EbvaMQZpej6nNtl0nm7XF4PmQHA== +"@ethersproject/strings@^5.0.4", "@ethersproject/strings@>=5.0.0-beta.130": + "version" "5.0.4" dependencies: "@ethersproject/bytes" "^5.0.4" - "@ethersproject/constants" "^5.0.3" + "@ethersproject/constants" "^5.0.4" "@ethersproject/logger" "^5.0.5" "@ethersproject/transactions@^5.0.0-beta.135": - version "5.0.4" - resolved "https://registry.yarnpkg.com/@ethersproject/transactions/-/transactions-5.0.4.tgz#76d7afdb0667efde22b054de3a8dc5b440eb6cd2" - integrity sha512-QvS5CzxmL46D9Y3OlddurYgEIi5mb0eAgrKm5pM074Uz/1qxCYr+Ah12I4hpaciZtCq4Fe12YWZqUFb1vGcH6Q== + "version" "5.0.5" dependencies: - "@ethersproject/address" "^5.0.3" - "@ethersproject/bignumber" "^5.0.6" + "@ethersproject/address" "^5.0.4" + "@ethersproject/bignumber" "^5.0.7" "@ethersproject/bytes" "^5.0.4" - "@ethersproject/constants" "^5.0.3" + "@ethersproject/constants" "^5.0.4" "@ethersproject/keccak256" "^5.0.3" "@ethersproject/logger" "^5.0.5" "@ethersproject/properties" "^5.0.3" @@ -125,72 +111,72 @@ "@ethersproject/signing-key" "^5.0.4" "@hapi/accept@^3.2.4": - version "3.2.4" - resolved "https://registry.yarnpkg.com/@hapi/accept/-/accept-3.2.4.tgz#687510529493fe1d7d47954c31aff360d9364bd1" - integrity sha512-soThGB+QMgfxlh0Vzhzlf3ZOEOPk5biEwcOXhkF0Eedqx8VnhGiggL9UYHrIsOb1rUg3Be3K8kp0iDL2wbVSOQ== + "integrity" "sha512-soThGB+QMgfxlh0Vzhzlf3ZOEOPk5biEwcOXhkF0Eedqx8VnhGiggL9UYHrIsOb1rUg3Be3K8kp0iDL2wbVSOQ==" + "resolved" "https://registry.npmjs.org/@hapi/accept/-/accept-3.2.4.tgz" + "version" "3.2.4" dependencies: "@hapi/boom" "7.x.x" "@hapi/hoek" "8.x.x" -"@hapi/address@2.x.x", "@hapi/address@^2.1.2": - version "2.1.4" - resolved "https://registry.yarnpkg.com/@hapi/address/-/address-2.1.4.tgz#5d67ed43f3fd41a69d4b9ff7b56e7c0d1d0a81e5" - integrity sha512-QD1PhQk+s31P1ixsX0H0Suoupp3VMXzIVMSwobR3F3MSUO2YCV0B7xqLcUw/Bh8yuvd3LhpyqLQWTNcRmp6IdQ== +"@hapi/address@^2.1.2", "@hapi/address@2.x.x": + "integrity" "sha512-QD1PhQk+s31P1ixsX0H0Suoupp3VMXzIVMSwobR3F3MSUO2YCV0B7xqLcUw/Bh8yuvd3LhpyqLQWTNcRmp6IdQ==" + "resolved" "https://registry.npmjs.org/@hapi/address/-/address-2.1.4.tgz" + "version" "2.1.4" "@hapi/ammo@^3.1.2": - version "3.1.2" - resolved "https://registry.yarnpkg.com/@hapi/ammo/-/ammo-3.1.2.tgz#a9edf5d48d99b75fdcd7ab3dabf9059942a06961" - integrity sha512-ej9OtFmiZv1qr45g1bxEZNGyaR4jRpyMxU6VhbxjaYThymvOwsyIsUKMZnP5Qw2tfYFuwqCJuIBHGpeIbdX9gQ== + "integrity" "sha512-ej9OtFmiZv1qr45g1bxEZNGyaR4jRpyMxU6VhbxjaYThymvOwsyIsUKMZnP5Qw2tfYFuwqCJuIBHGpeIbdX9gQ==" + "resolved" "https://registry.npmjs.org/@hapi/ammo/-/ammo-3.1.2.tgz" + "version" "3.1.2" dependencies: "@hapi/hoek" "8.x.x" "@hapi/b64@4.x.x": - version "4.2.1" - resolved "https://registry.yarnpkg.com/@hapi/b64/-/b64-4.2.1.tgz#bf8418d7907c5e73463f2e3b5c6fca7e9f2a1357" - integrity sha512-zqHpQuH5CBMw6hADzKfU/IGNrxq1Q+/wTYV+OiZRQN9F3tMyk+9BUMeBvFRMamduuqL8iSp62QAnJ+7ATiYLWA== + "integrity" "sha512-zqHpQuH5CBMw6hADzKfU/IGNrxq1Q+/wTYV+OiZRQN9F3tMyk+9BUMeBvFRMamduuqL8iSp62QAnJ+7ATiYLWA==" + "resolved" "https://registry.npmjs.org/@hapi/b64/-/b64-4.2.1.tgz" + "version" "4.2.1" dependencies: "@hapi/hoek" "8.x.x" -"@hapi/boom@7.x.x", "@hapi/boom@^7.4.11": - version "7.4.11" - resolved "https://registry.yarnpkg.com/@hapi/boom/-/boom-7.4.11.tgz#37af8417eb9416aef3367aa60fa04a1a9f1fc262" - integrity sha512-VSU/Cnj1DXouukYxxkes4nNJonCnlogHvIff1v1RVoN4xzkKhMXX+GRmb3NyH1iar10I9WFPDv2JPwfH3GaV0A== +"@hapi/boom@^7.4.11", "@hapi/boom@7.x.x": + "integrity" "sha512-VSU/Cnj1DXouukYxxkes4nNJonCnlogHvIff1v1RVoN4xzkKhMXX+GRmb3NyH1iar10I9WFPDv2JPwfH3GaV0A==" + "resolved" "https://registry.npmjs.org/@hapi/boom/-/boom-7.4.11.tgz" + "version" "7.4.11" dependencies: "@hapi/hoek" "8.x.x" "@hapi/bounce@1.x.x": - version "1.3.2" - resolved "https://registry.yarnpkg.com/@hapi/bounce/-/bounce-1.3.2.tgz#3b096bb02f67de6115e6e4f0debc390be5a86bad" - integrity sha512-3bnb1AlcEByFZnpDIidxQyw1Gds81z/1rSqlx4bIEE+wUN0ATj0D49B5cE1wGocy90Rp/de4tv7GjsKd5RQeew== + "integrity" "sha512-3bnb1AlcEByFZnpDIidxQyw1Gds81z/1rSqlx4bIEE+wUN0ATj0D49B5cE1wGocy90Rp/de4tv7GjsKd5RQeew==" + "resolved" "https://registry.npmjs.org/@hapi/bounce/-/bounce-1.3.2.tgz" + "version" "1.3.2" dependencies: "@hapi/boom" "7.x.x" "@hapi/hoek" "^8.3.1" "@hapi/bourne@1.x.x": - version "1.3.2" - resolved "https://registry.yarnpkg.com/@hapi/bourne/-/bourne-1.3.2.tgz#0a7095adea067243ce3283e1b56b8a8f453b242a" - integrity sha512-1dVNHT76Uu5N3eJNTYcvxee+jzX4Z9lfciqRRHCU27ihbUcYi+iSc2iml5Ke1LXe1SyJCLA0+14Jh4tXJgOppA== + "integrity" "sha512-1dVNHT76Uu5N3eJNTYcvxee+jzX4Z9lfciqRRHCU27ihbUcYi+iSc2iml5Ke1LXe1SyJCLA0+14Jh4tXJgOppA==" + "resolved" "https://registry.npmjs.org/@hapi/bourne/-/bourne-1.3.2.tgz" + "version" "1.3.2" "@hapi/call@^5.1.3": - version "5.1.3" - resolved "https://registry.yarnpkg.com/@hapi/call/-/call-5.1.3.tgz#217af45e3bc3d38b03aa5c9edfe1be939eee3741" - integrity sha512-5DfWpMk7qZiYhvBhM5oUiT4GQ/O8a2rFR121/PdwA/eZ2C1EsuD547ZggMKAR5bZ+FtxOf0fdM20zzcXzq2mZA== + "integrity" "sha512-5DfWpMk7qZiYhvBhM5oUiT4GQ/O8a2rFR121/PdwA/eZ2C1EsuD547ZggMKAR5bZ+FtxOf0fdM20zzcXzq2mZA==" + "resolved" "https://registry.npmjs.org/@hapi/call/-/call-5.1.3.tgz" + "version" "5.1.3" dependencies: "@hapi/boom" "7.x.x" "@hapi/hoek" "8.x.x" "@hapi/catbox-memory@4.x.x": - version "4.1.1" - resolved "https://registry.yarnpkg.com/@hapi/catbox-memory/-/catbox-memory-4.1.1.tgz#263a6f3361f7a200552c5772c98a8e80a1da712f" - integrity sha512-T6Hdy8DExzG0jY7C8yYWZB4XHfc0v+p1EGkwxl2HoaPYAmW7I3E59M/IvmSVpis8RPcIoBp41ZpO2aZPBpM2Ww== + "integrity" "sha512-T6Hdy8DExzG0jY7C8yYWZB4XHfc0v+p1EGkwxl2HoaPYAmW7I3E59M/IvmSVpis8RPcIoBp41ZpO2aZPBpM2Ww==" + "resolved" "https://registry.npmjs.org/@hapi/catbox-memory/-/catbox-memory-4.1.1.tgz" + "version" "4.1.1" dependencies: "@hapi/boom" "7.x.x" "@hapi/hoek" "8.x.x" "@hapi/catbox@10.x.x": - version "10.2.3" - resolved "https://registry.yarnpkg.com/@hapi/catbox/-/catbox-10.2.3.tgz#2df51ab943d7613df3718fa2bfd981dd9558cec5" - integrity sha512-kN9hXO4NYyOHW09CXiuj5qW1syc/0XeVOBsNNk0Tz89wWNQE5h21WF+VsfAw3uFR8swn/Wj3YEVBnWqo82m/JQ== + "integrity" "sha512-kN9hXO4NYyOHW09CXiuj5qW1syc/0XeVOBsNNk0Tz89wWNQE5h21WF+VsfAw3uFR8swn/Wj3YEVBnWqo82m/JQ==" + "resolved" "https://registry.npmjs.org/@hapi/catbox/-/catbox-10.2.3.tgz" + "version" "10.2.3" dependencies: "@hapi/boom" "7.x.x" "@hapi/hoek" "8.x.x" @@ -198,33 +184,33 @@ "@hapi/podium" "3.x.x" "@hapi/content@^4.1.1": - version "4.1.1" - resolved "https://registry.yarnpkg.com/@hapi/content/-/content-4.1.1.tgz#179673d1e2b7eb36c564d8f9605d019bd2252cbf" - integrity sha512-3TWvmwpVPxFSF3KBjKZ8yDqIKKZZIm7VurDSweYpXYENZrJH3C1hd1+qEQW9wQaUaI76pPBLGrXl6I3B7i3ipA== + "integrity" "sha512-3TWvmwpVPxFSF3KBjKZ8yDqIKKZZIm7VurDSweYpXYENZrJH3C1hd1+qEQW9wQaUaI76pPBLGrXl6I3B7i3ipA==" + "resolved" "https://registry.npmjs.org/@hapi/content/-/content-4.1.1.tgz" + "version" "4.1.1" dependencies: "@hapi/boom" "7.x.x" "@hapi/cryptiles@4.x.x": - version "4.2.1" - resolved "https://registry.yarnpkg.com/@hapi/cryptiles/-/cryptiles-4.2.1.tgz#ff0f18d79074659838caedbb911851313ad1ffbc" - integrity sha512-XoqgKsHK0l/VpqPs+tr6j6vE+VQ3+2bkF2stvttmc7xAOf1oSAwHcJ0tlp/6MxMysktt1IEY0Csy3khKaP9/uQ== + "integrity" "sha512-XoqgKsHK0l/VpqPs+tr6j6vE+VQ3+2bkF2stvttmc7xAOf1oSAwHcJ0tlp/6MxMysktt1IEY0Csy3khKaP9/uQ==" + "resolved" "https://registry.npmjs.org/@hapi/cryptiles/-/cryptiles-4.2.1.tgz" + "version" "4.2.1" dependencies: "@hapi/boom" "7.x.x" "@hapi/file@1.x.x": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@hapi/file/-/file-1.0.0.tgz#c91c39fd04db8bed5af82d2e032e7a4e65555b38" - integrity sha512-Bsfp/+1Gyf70eGtnIgmScvrH8sSypO3TcK3Zf0QdHnzn/ACnAkI6KLtGACmNRPEzzIy+W7aJX5E+1fc9GwIABQ== + "integrity" "sha512-Bsfp/+1Gyf70eGtnIgmScvrH8sSypO3TcK3Zf0QdHnzn/ACnAkI6KLtGACmNRPEzzIy+W7aJX5E+1fc9GwIABQ==" + "resolved" "https://registry.npmjs.org/@hapi/file/-/file-1.0.0.tgz" + "version" "1.0.0" "@hapi/formula@^1.2.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@hapi/formula/-/formula-1.2.0.tgz#994649c7fea1a90b91a0a1e6d983523f680e10cd" - integrity sha512-UFbtbGPjstz0eWHb+ga/GM3Z9EzqKXFWIbSOFURU0A/Gku0Bky4bCk9/h//K2Xr3IrCfjFNhMm4jyZ5dbCewGA== + "integrity" "sha512-UFbtbGPjstz0eWHb+ga/GM3Z9EzqKXFWIbSOFURU0A/Gku0Bky4bCk9/h//K2Xr3IrCfjFNhMm4jyZ5dbCewGA==" + "resolved" "https://registry.npmjs.org/@hapi/formula/-/formula-1.2.0.tgz" + "version" "1.2.0" "@hapi/h2o2@^8.3.2": - version "8.3.2" - resolved "https://registry.yarnpkg.com/@hapi/h2o2/-/h2o2-8.3.2.tgz#008a8f9ec3d9bba29077691aa9ec0ace93d4de80" - integrity sha512-2WkZq+QAkvYHWGqnUuG0stcVeGyv9T7bopBYnCJSUEuvBZlUf2BTX2JCVSKxsnTLOxCYwoC/aI4Rr0ZSRd2oVg== + "integrity" "sha512-2WkZq+QAkvYHWGqnUuG0stcVeGyv9T7bopBYnCJSUEuvBZlUf2BTX2JCVSKxsnTLOxCYwoC/aI4Rr0ZSRd2oVg==" + "resolved" "https://registry.npmjs.org/@hapi/h2o2/-/h2o2-8.3.2.tgz" + "version" "8.3.2" dependencies: "@hapi/boom" "7.x.x" "@hapi/hoek" "8.x.x" @@ -232,9 +218,9 @@ "@hapi/wreck" "15.x.x" "@hapi/hapi@^18.4.1": - version "18.4.1" - resolved "https://registry.yarnpkg.com/@hapi/hapi/-/hapi-18.4.1.tgz#023fbc131074b1cb2cd7f6766d65f4b0e92df788" - integrity sha512-9HjVGa0Z4Qv9jk9AVoUdJMQLA+KuZ+liKWyEEkVBx3e3H1F0JM6aGbPkY9jRfwsITBWGBU2iXazn65SFKSi/tg== + "integrity" "sha512-9HjVGa0Z4Qv9jk9AVoUdJMQLA+KuZ+liKWyEEkVBx3e3H1F0JM6aGbPkY9jRfwsITBWGBU2iXazn65SFKSi/tg==" + "resolved" "https://registry.npmjs.org/@hapi/hapi/-/hapi-18.4.1.tgz" + "version" "18.4.1" dependencies: "@hapi/accept" "^3.2.4" "@hapi/ammo" "^3.1.2" @@ -256,23 +242,23 @@ "@hapi/topo" "3.x.x" "@hapi/heavy@6.x.x": - version "6.2.2" - resolved "https://registry.yarnpkg.com/@hapi/heavy/-/heavy-6.2.2.tgz#d42a282c62d5bb6332e497d8ce9ba52f1609f3e6" - integrity sha512-PY1dCCO6dsze7RlafIRhTaGeyTgVe49A/lSkxbhKGjQ7x46o/OFf7hLiRqTCDh3atcEKf6362EaB3+kTUbCsVA== + "integrity" "sha512-PY1dCCO6dsze7RlafIRhTaGeyTgVe49A/lSkxbhKGjQ7x46o/OFf7hLiRqTCDh3atcEKf6362EaB3+kTUbCsVA==" + "resolved" "https://registry.npmjs.org/@hapi/heavy/-/heavy-6.2.2.tgz" + "version" "6.2.2" dependencies: "@hapi/boom" "7.x.x" "@hapi/hoek" "8.x.x" "@hapi/joi" "16.x.x" -"@hapi/hoek@8.x.x", "@hapi/hoek@^8.2.4", "@hapi/hoek@^8.3.0", "@hapi/hoek@^8.3.1": - version "8.5.1" - resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-8.5.1.tgz#fde96064ca446dec8c55a8c2f130957b070c6e06" - integrity sha512-yN7kbciD87WzLGc5539Tn0sApjyiGHAJgKvG9W8C7O+6c7qmoQMfVs0W4bX17eqz6C78QJqqFrtgdK5EWf6Qow== +"@hapi/hoek@^8.2.4", "@hapi/hoek@^8.3.0", "@hapi/hoek@^8.3.1", "@hapi/hoek@8.x.x": + "integrity" "sha512-yN7kbciD87WzLGc5539Tn0sApjyiGHAJgKvG9W8C7O+6c7qmoQMfVs0W4bX17eqz6C78QJqqFrtgdK5EWf6Qow==" + "resolved" "https://registry.npmjs.org/@hapi/hoek/-/hoek-8.5.1.tgz" + "version" "8.5.1" "@hapi/iron@5.x.x": - version "5.1.4" - resolved "https://registry.yarnpkg.com/@hapi/iron/-/iron-5.1.4.tgz#7406f36847f798f52b92d1d97f855e27973832b7" - integrity sha512-+ElC+OCiwWLjlJBmm8ZEWjlfzTMQTdgPnU/TsoU5QsktspIWmWi9IU4kU83nH+X/SSya8TP8h8P11Wr5L7dkQQ== + "integrity" "sha512-+ElC+OCiwWLjlJBmm8ZEWjlfzTMQTdgPnU/TsoU5QsktspIWmWi9IU4kU83nH+X/SSya8TP8h8P11Wr5L7dkQQ==" + "resolved" "https://registry.npmjs.org/@hapi/iron/-/iron-5.1.4.tgz" + "version" "5.1.4" dependencies: "@hapi/b64" "4.x.x" "@hapi/boom" "7.x.x" @@ -281,9 +267,9 @@ "@hapi/hoek" "8.x.x" "@hapi/joi@15.x.x": - version "15.1.1" - resolved "https://registry.yarnpkg.com/@hapi/joi/-/joi-15.1.1.tgz#c675b8a71296f02833f8d6d243b34c57b8ce19d7" - integrity sha512-entf8ZMOK8sc+8YfeOlM8pCfg3b5+WZIKBfUaaJT8UsjAAPjartzxIYm3TIbjvA4u+u++KbcXD38k682nVHDAQ== + "integrity" "sha512-entf8ZMOK8sc+8YfeOlM8pCfg3b5+WZIKBfUaaJT8UsjAAPjartzxIYm3TIbjvA4u+u++KbcXD38k682nVHDAQ==" + "resolved" "https://registry.npmjs.org/@hapi/joi/-/joi-15.1.1.tgz" + "version" "15.1.1" dependencies: "@hapi/address" "2.x.x" "@hapi/bourne" "1.x.x" @@ -291,9 +277,9 @@ "@hapi/topo" "3.x.x" "@hapi/joi@16.x.x": - version "16.1.8" - resolved "https://registry.yarnpkg.com/@hapi/joi/-/joi-16.1.8.tgz#84c1f126269489871ad4e2decc786e0adef06839" - integrity sha512-wAsVvTPe+FwSrsAurNt5vkg3zo+TblvC5Bb1zMVK6SJzZqw9UrJnexxR+76cpePmtUZKHAPxcQ2Bf7oVHyahhg== + "integrity" "sha512-wAsVvTPe+FwSrsAurNt5vkg3zo+TblvC5Bb1zMVK6SJzZqw9UrJnexxR+76cpePmtUZKHAPxcQ2Bf7oVHyahhg==" + "resolved" "https://registry.npmjs.org/@hapi/joi/-/joi-16.1.8.tgz" + "version" "16.1.8" dependencies: "@hapi/address" "^2.1.2" "@hapi/formula" "^1.2.0" @@ -302,25 +288,25 @@ "@hapi/topo" "^3.1.3" "@hapi/mimos@4.x.x": - version "4.1.1" - resolved "https://registry.yarnpkg.com/@hapi/mimos/-/mimos-4.1.1.tgz#4dab8ed5c64df0603c204c725963a5faa4687e8a" - integrity sha512-CXoi/zfcTWfKYX756eEea8rXJRIb9sR4d7VwyAH9d3BkDyNgAesZxvqIdm55npQc6S9mU3FExinMAQVlIkz0eA== + "integrity" "sha512-CXoi/zfcTWfKYX756eEea8rXJRIb9sR4d7VwyAH9d3BkDyNgAesZxvqIdm55npQc6S9mU3FExinMAQVlIkz0eA==" + "resolved" "https://registry.npmjs.org/@hapi/mimos/-/mimos-4.1.1.tgz" + "version" "4.1.1" dependencies: "@hapi/hoek" "8.x.x" - mime-db "1.x.x" + "mime-db" "1.x.x" "@hapi/nigel@3.x.x": - version "3.1.1" - resolved "https://registry.yarnpkg.com/@hapi/nigel/-/nigel-3.1.1.tgz#84794021c9ee6e48e854fea9fb76e9f7e78c99ad" - integrity sha512-R9YWx4S8yu0gcCBrMUDCiEFm1SQT895dMlYoeNBp8I6YhF1BFF1iYPueKA2Kkp9BvyHdjmvrxCOns7GMmpl+Fw== + "integrity" "sha512-R9YWx4S8yu0gcCBrMUDCiEFm1SQT895dMlYoeNBp8I6YhF1BFF1iYPueKA2Kkp9BvyHdjmvrxCOns7GMmpl+Fw==" + "resolved" "https://registry.npmjs.org/@hapi/nigel/-/nigel-3.1.1.tgz" + "version" "3.1.1" dependencies: "@hapi/hoek" "8.x.x" "@hapi/vise" "3.x.x" "@hapi/pez@^4.1.2": - version "4.1.2" - resolved "https://registry.yarnpkg.com/@hapi/pez/-/pez-4.1.2.tgz#14984d0c31fed348f10c962968a21d9761f55503" - integrity sha512-8zSdJ8cZrJLFldTgwjU9Fb1JebID+aBCrCsycgqKYe0OZtM2r3Yv3aAwW5z97VsZWCROC1Vx6Mdn4rujh5Ktcg== + "integrity" "sha512-8zSdJ8cZrJLFldTgwjU9Fb1JebID+aBCrCsycgqKYe0OZtM2r3Yv3aAwW5z97VsZWCROC1Vx6Mdn4rujh5Ktcg==" + "resolved" "https://registry.npmjs.org/@hapi/pez/-/pez-4.1.2.tgz" + "version" "4.1.2" dependencies: "@hapi/b64" "4.x.x" "@hapi/boom" "7.x.x" @@ -329,38 +315,38 @@ "@hapi/nigel" "3.x.x" "@hapi/pinpoint@^1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@hapi/pinpoint/-/pinpoint-1.0.2.tgz#025b7a36dbbf4d35bf1acd071c26b20ef41e0d13" - integrity sha512-dtXC/WkZBfC5vxscazuiJ6iq4j9oNx1SHknmIr8hofarpKUZKmlUVYVIhNVzIEgK5Wrc4GMHL5lZtt1uS2flmQ== + "integrity" "sha512-dtXC/WkZBfC5vxscazuiJ6iq4j9oNx1SHknmIr8hofarpKUZKmlUVYVIhNVzIEgK5Wrc4GMHL5lZtt1uS2flmQ==" + "resolved" "https://registry.npmjs.org/@hapi/pinpoint/-/pinpoint-1.0.2.tgz" + "version" "1.0.2" "@hapi/podium@3.x.x": - version "3.4.3" - resolved "https://registry.yarnpkg.com/@hapi/podium/-/podium-3.4.3.tgz#d28935870ae1372e2f983a7161e710c968a60de1" - integrity sha512-QJlnYLEYZWlKQ9fSOtuUcpANyoVGwT68GA9P0iQQCAetBK0fI+nbRBt58+aMixoifczWZUthuGkNjqKxgPh/CQ== + "integrity" "sha512-QJlnYLEYZWlKQ9fSOtuUcpANyoVGwT68GA9P0iQQCAetBK0fI+nbRBt58+aMixoifczWZUthuGkNjqKxgPh/CQ==" + "resolved" "https://registry.npmjs.org/@hapi/podium/-/podium-3.4.3.tgz" + "version" "3.4.3" dependencies: "@hapi/hoek" "8.x.x" "@hapi/joi" "16.x.x" "@hapi/shot@4.x.x": - version "4.1.2" - resolved "https://registry.yarnpkg.com/@hapi/shot/-/shot-4.1.2.tgz#69f999956041fe468701a89a413175a521dabed5" - integrity sha512-6LeHLjvsq/bQ0R+fhEyr7mqExRGguNTrxFZf5DyKe3CK6pNabiGgYO4JVFaRrLZ3JyuhkS0fo8iiRE2Ql2oA/A== + "integrity" "sha512-6LeHLjvsq/bQ0R+fhEyr7mqExRGguNTrxFZf5DyKe3CK6pNabiGgYO4JVFaRrLZ3JyuhkS0fo8iiRE2Ql2oA/A==" + "resolved" "https://registry.npmjs.org/@hapi/shot/-/shot-4.1.2.tgz" + "version" "4.1.2" dependencies: "@hapi/hoek" "8.x.x" "@hapi/joi" "16.x.x" "@hapi/somever@2.x.x": - version "2.1.1" - resolved "https://registry.yarnpkg.com/@hapi/somever/-/somever-2.1.1.tgz#142bddf7cc4d829f678ed4e60618630a9a7ae845" - integrity sha512-cic5Sto4KGd9B0oQSdKTokju+rYhCbdpzbMb0EBnrH5Oc1z048hY8PaZ1lx2vBD7I/XIfTQVQetBH57fU51XRA== + "integrity" "sha512-cic5Sto4KGd9B0oQSdKTokju+rYhCbdpzbMb0EBnrH5Oc1z048hY8PaZ1lx2vBD7I/XIfTQVQetBH57fU51XRA==" + "resolved" "https://registry.npmjs.org/@hapi/somever/-/somever-2.1.1.tgz" + "version" "2.1.1" dependencies: "@hapi/bounce" "1.x.x" "@hapi/hoek" "8.x.x" "@hapi/statehood@6.x.x": - version "6.1.2" - resolved "https://registry.yarnpkg.com/@hapi/statehood/-/statehood-6.1.2.tgz#6dda508b5da99a28a3ed295c3cac795cf6c12a02" - integrity sha512-pYXw1x6npz/UfmtcpUhuMvdK5kuOGTKcJNfLqdNptzietK2UZH5RzNJSlv5bDHeSmordFM3kGItcuQWX2lj2nQ== + "integrity" "sha512-pYXw1x6npz/UfmtcpUhuMvdK5kuOGTKcJNfLqdNptzietK2UZH5RzNJSlv5bDHeSmordFM3kGItcuQWX2lj2nQ==" + "resolved" "https://registry.npmjs.org/@hapi/statehood/-/statehood-6.1.2.tgz" + "version" "6.1.2" dependencies: "@hapi/boom" "7.x.x" "@hapi/bounce" "1.x.x" @@ -371,9 +357,9 @@ "@hapi/joi" "16.x.x" "@hapi/subtext@^6.1.3": - version "6.1.3" - resolved "https://registry.yarnpkg.com/@hapi/subtext/-/subtext-6.1.3.tgz#bbd07771ae2a4e73ac360c93ed74ac641718b9c6" - integrity sha512-qWN6NbiHNzohVcJMeAlpku/vzbyH4zIpnnMPMPioQMwIxbPFKeNViDCNI6fVBbMPBiw/xB4FjqiJkRG5P9eWWg== + "integrity" "sha512-qWN6NbiHNzohVcJMeAlpku/vzbyH4zIpnnMPMPioQMwIxbPFKeNViDCNI6fVBbMPBiw/xB4FjqiJkRG5P9eWWg==" + "resolved" "https://registry.npmjs.org/@hapi/subtext/-/subtext-6.1.3.tgz" + "version" "6.1.3" dependencies: "@hapi/boom" "7.x.x" "@hapi/bourne" "1.x.x" @@ -384,3401 +370,3546 @@ "@hapi/wreck" "15.x.x" "@hapi/teamwork@3.x.x": - version "3.3.1" - resolved "https://registry.yarnpkg.com/@hapi/teamwork/-/teamwork-3.3.1.tgz#b52d0ec48682dc793926bd432e22ceb19c915d3f" - integrity sha512-61tiqWCYvMKP7fCTXy0M4VE6uNIwA0qvgFoiDubgfj7uqJ0fdHJFQNnVPGrxhLWlwz0uBPWrQlBH7r8y9vFITQ== + "integrity" "sha512-61tiqWCYvMKP7fCTXy0M4VE6uNIwA0qvgFoiDubgfj7uqJ0fdHJFQNnVPGrxhLWlwz0uBPWrQlBH7r8y9vFITQ==" + "resolved" "https://registry.npmjs.org/@hapi/teamwork/-/teamwork-3.3.1.tgz" + "version" "3.3.1" -"@hapi/topo@3.x.x", "@hapi/topo@^3.1.3": - version "3.1.6" - resolved "https://registry.yarnpkg.com/@hapi/topo/-/topo-3.1.6.tgz#68d935fa3eae7fdd5ab0d7f953f3205d8b2bfc29" - integrity sha512-tAag0jEcjwH+P2quUfipd7liWCNX2F8NvYjQp2wtInsZxnMlypdw0FtAOLxtvvkO+GSRRbmNi8m/5y42PQJYCQ== +"@hapi/topo@^3.1.3", "@hapi/topo@3.x.x": + "integrity" "sha512-tAag0jEcjwH+P2quUfipd7liWCNX2F8NvYjQp2wtInsZxnMlypdw0FtAOLxtvvkO+GSRRbmNi8m/5y42PQJYCQ==" + "resolved" "https://registry.npmjs.org/@hapi/topo/-/topo-3.1.6.tgz" + "version" "3.1.6" dependencies: "@hapi/hoek" "^8.3.0" "@hapi/vise@3.x.x": - version "3.1.1" - resolved "https://registry.yarnpkg.com/@hapi/vise/-/vise-3.1.1.tgz#dfc88f2ac90682f48bdc1b3f9b8f1eab4eabe0c8" - integrity sha512-OXarbiCSadvtg+bSdVPqu31Z1JoBL+FwNYz3cYoBKQ5xq1/Cr4A3IkGpAZbAuxU5y4NL5pZFZG3d2a3ZGm/dOQ== + "integrity" "sha512-OXarbiCSadvtg+bSdVPqu31Z1JoBL+FwNYz3cYoBKQ5xq1/Cr4A3IkGpAZbAuxU5y4NL5pZFZG3d2a3ZGm/dOQ==" + "resolved" "https://registry.npmjs.org/@hapi/vise/-/vise-3.1.1.tgz" + "version" "3.1.1" dependencies: "@hapi/hoek" "8.x.x" "@hapi/wreck@15.x.x": - version "15.1.0" - resolved "https://registry.yarnpkg.com/@hapi/wreck/-/wreck-15.1.0.tgz#7917cd25950ce9b023f7fd2bea6e2ef72c71e59d" - integrity sha512-tQczYRTTeYBmvhsek/D49En/5khcShaBEmzrAaDjMrFXKJRuF8xA8+tlq1ETLBFwGd6Do6g2OC74rt11kzawzg== + "integrity" "sha512-tQczYRTTeYBmvhsek/D49En/5khcShaBEmzrAaDjMrFXKJRuF8xA8+tlq1ETLBFwGd6Do6g2OC74rt11kzawzg==" + "resolved" "https://registry.npmjs.org/@hapi/wreck/-/wreck-15.1.0.tgz" + "version" "15.1.0" dependencies: "@hapi/boom" "7.x.x" "@hapi/bourne" "1.x.x" "@hapi/hoek" "8.x.x" "@sindresorhus/is@^0.14.0": - version "0.14.0" - resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.14.0.tgz#9fb3a3cf3132328151f353de4632e01e52102bea" - integrity sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ== + "integrity" "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==" + "resolved" "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz" + "version" "0.14.0" "@szmarczak/http-timer@^1.1.2": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-1.1.2.tgz#b1665e2c461a2cd92f4c1bbf50d5454de0d4b421" - integrity sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA== + "integrity" "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==" + "resolved" "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz" + "version" "1.1.2" dependencies: - defer-to-connect "^1.0.1" + "defer-to-connect" "^1.0.1" "@types/bn.js@^4.11.3", "@types/bn.js@^4.11.5": - version "4.11.6" - resolved "https://registry.yarnpkg.com/@types/bn.js/-/bn.js-4.11.6.tgz#c306c70d9358aaea33cd4eda092a742b9505967c" - integrity sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg== + "integrity" "sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg==" + "resolved" "https://registry.npmjs.org/@types/bn.js/-/bn.js-4.11.6.tgz" + "version" "4.11.6" dependencies: "@types/node" "*" "@types/color-name@^1.1.1": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0" - integrity sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ== + "integrity" "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==" + "resolved" "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz" + "version" "1.1.1" -"@types/node@*": - version "14.6.4" - resolved "https://registry.yarnpkg.com/@types/node/-/node-14.6.4.tgz#a145cc0bb14ef9c4777361b7bbafa5cf8e3acb5a" - integrity sha512-Wk7nG1JSaMfMpoMJDKUsWYugliB2Vy55pdjLpmLixeyMi7HizW2I/9QoxsPCkXl3dO+ZOVqPumKaDUv5zJu2uQ== - -"@types/node@^12.12.6": - version "12.12.56" - resolved "https://registry.yarnpkg.com/@types/node/-/node-12.12.56.tgz#83591a89723d8ec3eaf722137e1784a7351edb6c" - integrity sha512-8OdIupOIZtmObR13fvGyTvpcuzKmMugkATeVcfNwCjGtHxhjEKmOvLqXwR8U9VOtNnZ4EXaSfNiLVsPinaCXkQ== +"@types/node@*", "@types/node@^12.12.6": + "version" "12.12.62" "@types/pbkdf2@^3.0.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@types/pbkdf2/-/pbkdf2-3.1.0.tgz#039a0e9b67da0cdc4ee5dab865caa6b267bb66b1" - integrity sha512-Cf63Rv7jCQ0LaL8tNXmEyqTHuIJxRdlS5vMh1mj5voN4+QFhVZnlZruezqpWYDiJ8UTzhP0VmeLXCmBk66YrMQ== + "integrity" "sha512-Cf63Rv7jCQ0LaL8tNXmEyqTHuIJxRdlS5vMh1mj5voN4+QFhVZnlZruezqpWYDiJ8UTzhP0VmeLXCmBk66YrMQ==" + "resolved" "https://registry.npmjs.org/@types/pbkdf2/-/pbkdf2-3.1.0.tgz" + "version" "3.1.0" dependencies: "@types/node" "*" "@types/retry@^0.12.0": - version "0.12.0" - resolved "https://registry.yarnpkg.com/@types/retry/-/retry-0.12.0.tgz#2b35eccfcee7d38cd72ad99232fbd58bffb3c84d" - integrity sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA== + "integrity" "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==" + "resolved" "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz" + "version" "0.12.0" "@types/secp256k1@^4.0.1": - version "4.0.1" - resolved "https://registry.yarnpkg.com/@types/secp256k1/-/secp256k1-4.0.1.tgz#fb3aa61a1848ad97d7425ff9dcba784549fca5a4" - integrity sha512-+ZjSA8ELlOp8SlKi0YLB2tz9d5iPNEmOBd+8Rz21wTMdaXQIa9b6TEnD6l5qKOCypE7FSyPyck12qZJxSDNoog== + "integrity" "sha512-+ZjSA8ELlOp8SlKi0YLB2tz9d5iPNEmOBd+8Rz21wTMdaXQIa9b6TEnD6l5qKOCypE7FSyPyck12qZJxSDNoog==" + "resolved" "https://registry.npmjs.org/@types/secp256k1/-/secp256k1-4.0.1.tgz" + "version" "4.0.1" dependencies: "@types/node" "*" -accepts@~1.3.7: - version "1.3.7" - resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd" - integrity sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA== +"accepts@~1.3.7": + "integrity" "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==" + "resolved" "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz" + "version" "1.3.7" dependencies: - mime-types "~2.1.24" - negotiator "0.6.2" + "mime-types" "~2.1.24" + "negotiator" "0.6.2" -ajv@^6.12.3: - version "6.12.4" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.4.tgz#0614facc4522127fa713445c6bfd3ebd376e2234" - integrity sha512-eienB2c9qVQs2KWexhkrdMLVDoIQCz5KSeLxwg9Lzk4DOfBtIK9PQwwufcsn1jjGuf9WZmqPMbGxOzfcuphJCQ== +"ajv@^6.12.3": + "version" "6.12.5" dependencies: - fast-deep-equal "^3.1.1" - fast-json-stable-stringify "^2.0.0" - json-schema-traverse "^0.4.1" - uri-js "^4.2.2" + "fast-deep-equal" "^3.1.1" + "fast-json-stable-stringify" "^2.0.0" + "json-schema-traverse" "^0.4.1" + "uri-js" "^4.2.2" -ansi-align@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-3.0.0.tgz#b536b371cf687caaef236c18d3e21fe3797467cb" - integrity sha512-ZpClVKqXN3RGBmKibdfWzqCY4lnjEuoNzU5T0oEFpfd/z5qJHVarukridD4juLO2FXMiwUQxr9WqQtaYa8XRYw== +"ansi-align@^3.0.0": + "integrity" "sha512-ZpClVKqXN3RGBmKibdfWzqCY4lnjEuoNzU5T0oEFpfd/z5qJHVarukridD4juLO2FXMiwUQxr9WqQtaYa8XRYw==" + "resolved" "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.0.tgz" + "version" "3.0.0" dependencies: - string-width "^3.0.0" + "string-width" "^3.0.0" + +"ansi-regex@^4.1.0": + "integrity" "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" + "resolved" "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz" + "version" "4.1.0" -ansi-regex@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" - integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== +"ansi-regex@^5.0.0": + "integrity" "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" + "resolved" "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz" + "version" "5.0.0" -ansi-regex@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" - integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== +"ansi-styles@^3.2.1": + "integrity" "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==" + "resolved" "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz" + "version" "3.2.1" + dependencies: + "color-convert" "^1.9.0" -ansi-styles@^4.1.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.2.1.tgz#90ae75c424d008d2624c5bf29ead3177ebfcf359" - integrity sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA== +"ansi-styles@^4.1.0": + "integrity" "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==" + "resolved" "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz" + "version" "4.2.1" dependencies: "@types/color-name" "^1.1.1" - color-convert "^2.0.1" - -array-flatten@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" - integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI= - -asn1.js@^5.2.0: - version "5.4.1" - resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-5.4.1.tgz#11a980b84ebb91781ce35b0fdc2ee294e3783f07" - integrity sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA== - dependencies: - bn.js "^4.0.0" - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - safer-buffer "^2.1.0" - -asn1@~0.2.3: - version "0.2.4" - resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136" - integrity sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg== - dependencies: - safer-buffer "~2.1.0" - -assert-plus@1.0.0, assert-plus@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" - integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= - -async-limiter@~1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd" - integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== - -async@^2.6.2: - version "2.6.3" - resolved "https://registry.yarnpkg.com/async/-/async-2.6.3.tgz#d72625e2344a3656e3a3ad4fa749fa83299d82ff" - integrity sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg== - dependencies: - lodash "^4.17.14" - -asynckit@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" - integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= - -aws-sdk@^2.624.0: - version "2.747.0" - resolved "https://registry.yarnpkg.com/aws-sdk/-/aws-sdk-2.747.0.tgz#487776536a7f8e4e18d57ff22dd50d777f1d0fe8" - integrity sha512-JA2ygLXFw0tLjc6nlauH3wnc6haoPU023fJCZN01xrw22l+s4rRjVGxJmG83VrfCmq+lrqCv0kVwlzyxbixGhA== - dependencies: - buffer "4.9.2" - events "1.1.1" - ieee754 "1.1.13" - jmespath "0.15.0" - querystring "0.2.0" - sax "1.2.1" - url "0.10.3" - uuid "3.3.2" - xml2js "0.4.19" - -aws-sign2@~0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" - integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= - -aws4@^1.8.0: - version "1.10.1" - resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.10.1.tgz#e1e82e4f3e999e2cfd61b161280d16a111f86428" - integrity sha512-zg7Hz2k5lI8kb7U32998pRRFin7zJlkfezGJjUc2heaD4Pw2wObakCDVzkKztTm/Ln7eiVvYsjqak0Ed4LkMDA== - -base-x@^3.0.2, base-x@^3.0.8: - version "3.0.8" - resolved "https://registry.yarnpkg.com/base-x/-/base-x-3.0.8.tgz#1e1106c2537f0162e8b52474a557ebb09000018d" - integrity sha512-Rl/1AWP4J/zRrk54hhlxH4drNxPJXYUaKffODVI53/dAsV4t9fBxyxYKAVPU1XBHxYwOWP9h9H0hM2MVw4YfJA== - dependencies: - safe-buffer "^5.0.1" - -base64-js@^1.0.2: - version "1.3.1" - resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.1.tgz#58ece8cb75dd07e71ed08c736abc5fac4dbf8df1" - integrity sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g== - -bcrypt-pbkdf@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" - integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4= - dependencies: - tweetnacl "^0.14.3" - -bignumber.js@^9.0.0: - version "9.0.0" - resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-9.0.0.tgz#805880f84a329b5eac6e7cb6f8274b6d82bdf075" - integrity sha512-t/OYhhJ2SD+YGBQcjY8GzzDHEk9f3nerxjtfa6tlMXfe7frs/WozhvCNoGvpM0P3bNf3Gq5ZRMlGr5f3r4/N8A== - -bignumber@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/bignumber/-/bignumber-1.1.0.tgz#e6ab0a743da5f3ea018e5c17597d121f7868c159" - integrity sha1-5qsKdD2l8+oBjlwXWX0SH3howVk= - -blakejs@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/blakejs/-/blakejs-1.1.0.tgz#69df92ef953aa88ca51a32df6ab1c54a155fc7a5" - integrity sha1-ad+S75U6qIylGjLfarHFShVfx6U= - -bluebird@^3.5.0: - version "3.7.2" - resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" - integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== - -bn.js@4.11.6: - version "4.11.6" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.6.tgz#53344adb14617a13f6e8dd2ce28905d1c0ba3215" - integrity sha1-UzRK2xRhehP26N0s4okF0cC6MhU= - -bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.11.0, bn.js@^4.11.1, bn.js@^4.11.6, bn.js@^4.11.9, bn.js@^4.4.0: - version "4.11.9" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.9.tgz#26d556829458f9d1e81fc48952493d0ba3507828" - integrity sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw== - -bn.js@^5.1.1: - version "5.1.3" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.1.3.tgz#beca005408f642ebebea80b042b4d18d2ac0ee6b" - integrity sha512-GkTiFpjFtUzU9CbMeJ5iazkCzGL3jrhzerzZIuqLABjbwRaFt33I9tUdSNryIptM+RxDet6OKm2WnLXzW51KsQ== - -body-parser@1.19.0, body-parser@^1.16.0: - version "1.19.0" - resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.0.tgz#96b2709e57c9c4e09a6fd66a8fd979844f69f08a" - integrity sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw== - dependencies: - bytes "3.1.0" - content-type "~1.0.4" - debug "2.6.9" - depd "~1.1.2" - http-errors "1.7.2" - iconv-lite "0.4.24" - on-finished "~2.3.0" - qs "6.7.0" - raw-body "2.4.0" - type-is "~1.6.17" - -boxen@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/boxen/-/boxen-4.2.0.tgz#e411b62357d6d6d36587c8ac3d5d974daa070e64" - integrity sha512-eB4uT9RGzg2odpER62bBwSLvUeGC+WbRjjyyFhGsKnc8wp/m0+hQsMUvUe3H2V0D5vw0nBdO1hCJoZo5mKeuIQ== - dependencies: - ansi-align "^3.0.0" - camelcase "^5.3.1" - chalk "^3.0.0" - cli-boxes "^2.2.0" - string-width "^4.1.0" - term-size "^2.1.0" - type-fest "^0.8.1" - widest-line "^3.1.0" - -brorand@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" - integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8= - -browserify-aes@^1.0.0, browserify-aes@^1.0.4, browserify-aes@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" - integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== - dependencies: - buffer-xor "^1.0.3" - cipher-base "^1.0.0" - create-hash "^1.1.0" - evp_bytestokey "^1.0.3" - inherits "^2.0.1" - safe-buffer "^5.0.1" - -browserify-cipher@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0" - integrity sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w== - dependencies: - browserify-aes "^1.0.4" - browserify-des "^1.0.0" - evp_bytestokey "^1.0.0" - -browserify-des@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c" - integrity sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A== - dependencies: - cipher-base "^1.0.1" - des.js "^1.0.0" - inherits "^2.0.1" - safe-buffer "^5.1.2" - -browserify-rsa@^4.0.0, browserify-rsa@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.0.1.tgz#21e0abfaf6f2029cf2fafb133567a701d4135524" - integrity sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ= - dependencies: - bn.js "^4.1.0" - randombytes "^2.0.1" - -browserify-sign@^4.0.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.2.1.tgz#eaf4add46dd54be3bb3b36c0cf15abbeba7956c3" - integrity sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg== - dependencies: - bn.js "^5.1.1" - browserify-rsa "^4.0.1" - create-hash "^1.2.0" - create-hmac "^1.1.7" - elliptic "^6.5.3" - inherits "^2.0.4" - parse-asn1 "^5.1.5" - readable-stream "^3.6.0" - safe-buffer "^5.2.0" - -bs58@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/bs58/-/bs58-4.0.1.tgz#be161e76c354f6f788ae4071f63f34e8c4f0a42a" - integrity sha1-vhYedsNU9veIrkBx9j806MTwpCo= - dependencies: - base-x "^3.0.2" - -bs58check@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/bs58check/-/bs58check-2.1.2.tgz#53b018291228d82a5aa08e7d796fdafda54aebfc" - integrity sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA== - dependencies: - bs58 "^4.0.0" - create-hash "^1.1.0" - safe-buffer "^5.1.2" - -buffer-equal-constant-time@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz#f8e71132f7ffe6e01a5c9697a4c6f3e48d5cc819" - integrity sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk= - -buffer-to-arraybuffer@^0.0.5: - version "0.0.5" - resolved "https://registry.yarnpkg.com/buffer-to-arraybuffer/-/buffer-to-arraybuffer-0.0.5.tgz#6064a40fa76eb43c723aba9ef8f6e1216d10511a" - integrity sha1-YGSkD6dutDxyOrqe+PbhIW0QURo= - -buffer-xor@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" - integrity sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk= - -buffer@4.9.2: - version "4.9.2" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.2.tgz#230ead344002988644841ab0244af8c44bbe3ef8" - integrity sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg== - dependencies: - base64-js "^1.0.2" - ieee754 "^1.1.4" - isarray "^1.0.0" - -buffer@^5.0.5, buffer@^5.5.0, buffer@^5.6.0: - version "5.6.0" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.6.0.tgz#a31749dc7d81d84db08abf937b6b8c4033f62786" - integrity sha512-/gDYp/UtU0eA1ys8bOs9J6a+E/KWIY+DZ+Q2WESNUA0jFRsJOc0SNUO6xJ5SGA1xueg3NL65W6s+NY5l9cunuw== - dependencies: - base64-js "^1.0.2" - ieee754 "^1.1.4" - -bufferutil@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/bufferutil/-/bufferutil-4.0.1.tgz#3a177e8e5819a1243fe16b63a199951a7ad8d4a7" - integrity sha512-xowrxvpxojqkagPcWRQVXZl0YXhRhAtBEIq3VoER1NH5Mw1n1o0ojdspp+GS2J//2gCVyrzQDApQ4unGF+QOoA== - dependencies: - node-gyp-build "~3.7.0" - -bytes@3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6" - integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg== - -cacheable-request@^6.0.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-6.1.0.tgz#20ffb8bd162ba4be11e9567d823db651052ca912" - integrity sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg== - dependencies: - clone-response "^1.0.2" - get-stream "^5.1.0" - http-cache-semantics "^4.0.0" - keyv "^3.0.0" - lowercase-keys "^2.0.0" - normalize-url "^4.1.0" - responselike "^1.0.2" - -callsites@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" - integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== - -camelcase@^5.3.1: - version "5.3.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" - integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== - -caseless@~0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" - integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= - -chalk@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4" - integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - -chownr@^1.1.1: - version "1.1.4" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" - integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== - -ci-info@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" - integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== - -cids@^0.7.1: - version "0.7.5" - resolved "https://registry.yarnpkg.com/cids/-/cids-0.7.5.tgz#60a08138a99bfb69b6be4ceb63bfef7a396b28b2" - integrity sha512-zT7mPeghoWAu+ppn8+BS1tQ5qGmbMfB4AregnQjA/qHY3GC1m1ptI9GkWNlgeu38r7CuRdXB47uY2XgAYt6QVA== - dependencies: - buffer "^5.5.0" - class-is "^1.1.0" - multibase "~0.6.0" - multicodec "^1.0.0" - multihashes "~0.4.15" - -cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" - integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== - dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" - -class-is@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/class-is/-/class-is-1.1.0.tgz#9d3c0fba0440d211d843cec3dedfa48055005825" - integrity sha512-rhjH9AG1fvabIDoGRVH587413LPjTZgmDF9fOFCbFJQV4yuocX1mHxxvXI4g3cGwbVY9wAYIoKlg1N79frJKQw== - -clear-module@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/clear-module/-/clear-module-4.1.1.tgz#bf8ba3b62eb70ee1e0adec90589741425cf32db8" - integrity sha512-ng0E7LeODcT3QkazOckzZqbca+JByQy/Q2Z6qO24YsTp+pLxCfohGz2gJYJqZS0CWTX3LEUiHOqe5KlYeUbEMw== - dependencies: - parent-module "^2.0.0" - resolve-from "^5.0.0" - -cli-boxes@^2.2.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-2.2.1.tgz#ddd5035d25094fce220e9cab40a45840a440318f" - integrity sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw== - -clone-response@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.2.tgz#d1dc973920314df67fbeb94223b4ee350239e96b" - integrity sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws= - dependencies: - mimic-response "^1.0.0" - -color-convert@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" - integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== - dependencies: - color-name "~1.1.4" - -color-name@~1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" - integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== - -combined-stream@^1.0.6, combined-stream@~1.0.6: - version "1.0.8" - resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" - integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== - dependencies: - delayed-stream "~1.0.0" - -configstore@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/configstore/-/configstore-5.0.1.tgz#d365021b5df4b98cdd187d6a3b0e3f6a7cc5ed96" - integrity sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA== - dependencies: - dot-prop "^5.2.0" - graceful-fs "^4.1.2" - make-dir "^3.0.0" - unique-string "^2.0.0" - write-file-atomic "^3.0.0" - xdg-basedir "^4.0.0" - -content-disposition@0.5.3: - version "0.5.3" - resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.3.tgz#e130caf7e7279087c5616c2007d0485698984fbd" - integrity sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g== - dependencies: - safe-buffer "5.1.2" - -content-hash@^2.5.2: - version "2.5.2" - resolved "https://registry.yarnpkg.com/content-hash/-/content-hash-2.5.2.tgz#bbc2655e7c21f14fd3bfc7b7d4bfe6e454c9e211" - integrity sha512-FvIQKy0S1JaWV10sMsA7TRx8bpU+pqPkhbsfvOJAdjRXvYxEckAwQWGwtRjiaJfh+E0DvcWUGqcdjwMGFjsSdw== - dependencies: - cids "^0.7.1" - multicodec "^0.5.5" - multihashes "^0.4.15" - -content-type@~1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" - integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== - -cookie-signature@1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" - integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw= - -cookie@0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.0.tgz#beb437e7022b3b6d49019d088665303ebe9c14ba" - integrity sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg== - -cookiejar@^2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/cookiejar/-/cookiejar-2.1.2.tgz#dd8a235530752f988f9a0844f3fc589e3111125c" - integrity sha512-Mw+adcfzPxcPeI+0WlvRrr/3lGVO0bD75SxX6811cxSh1Wbxx7xZBGK1eVtDf6si8rg2lhnUjsVLMFMfbRIuwA== - -core-util-is@1.0.2, core-util-is@~1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" - integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= - -cors@^2.8.1: - version "2.8.5" - resolved "https://registry.yarnpkg.com/cors/-/cors-2.8.5.tgz#eac11da51592dd86b9f06f6e7ac293b3df875d29" - integrity sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g== - dependencies: - object-assign "^4" - vary "^1" - -create-ecdh@^4.0.0: - version "4.0.4" - resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.4.tgz#d6e7f4bffa66736085a0762fd3a632684dabcc4e" - integrity sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A== - dependencies: - bn.js "^4.1.0" - elliptic "^6.5.3" - -create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" - integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== - dependencies: - cipher-base "^1.0.1" - inherits "^2.0.1" - md5.js "^1.3.4" - ripemd160 "^2.0.1" - sha.js "^2.4.0" - -create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7: - version "1.1.7" - resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" - integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== - dependencies: - cipher-base "^1.0.3" - create-hash "^1.1.0" - inherits "^2.0.1" - ripemd160 "^2.0.0" - safe-buffer "^5.0.1" - sha.js "^2.4.8" - -cron-parser@^2.7.3: - version "2.16.3" - resolved "https://registry.yarnpkg.com/cron-parser/-/cron-parser-2.16.3.tgz#acb8e405eed1733aac542fdf604cb7c1daf0204a" - integrity sha512-XNJBD1QLFeAMUkZtZQuncAAOgJFWNhBdIbwgD22hZxrcWOImBFMKgPC66GzaXpyoJs7UvYLLgPH/8BRk/7gbZg== - dependencies: - is-nan "^1.3.0" - moment-timezone "^0.5.31" - -cross-spawn@^7.0.0: - version "7.0.3" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" - integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== - dependencies: - path-key "^3.1.0" - shebang-command "^2.0.0" - which "^2.0.1" - -crypto-browserify@3.12.0: - version "3.12.0" - resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" - integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg== - dependencies: - browserify-cipher "^1.0.0" - browserify-sign "^4.0.0" - create-ecdh "^4.0.0" - create-hash "^1.1.0" - create-hmac "^1.1.0" - diffie-hellman "^5.0.0" - inherits "^2.0.1" - pbkdf2 "^3.0.3" - public-encrypt "^4.0.0" - randombytes "^2.0.0" - randomfill "^1.0.3" - -crypto-random-string@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-2.0.0.tgz#ef2a7a966ec11083388369baa02ebead229b30d5" - integrity sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA== - -cuid@^2.1.8: - version "2.1.8" - resolved "https://registry.yarnpkg.com/cuid/-/cuid-2.1.8.tgz#cbb88f954171e0d5747606c0139fb65c5101eac0" - integrity sha512-xiEMER6E7TlTPnDxrM4eRiC6TRgjNX9xzEZ5U/Se2YJKr7Mq4pJn/2XEHjl3STcSh96GmkHPcBXLES8M29wyyg== - -d@1, d@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/d/-/d-1.0.1.tgz#8698095372d58dbee346ffd0c7093f99f8f9eb5a" - integrity sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA== - dependencies: - es5-ext "^0.10.50" - type "^1.0.1" - -dashdash@^1.12.0: - version "1.14.1" - resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" - integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA= - dependencies: - assert-plus "^1.0.0" - -debug@2.6.9, debug@^2.2.0: - version "2.6.9" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" - integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== - dependencies: - ms "2.0.0" - -debug@^3.1.1: - version "3.2.6" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" - integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== - dependencies: - ms "^2.1.1" - -decode-uri-component@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" - integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= - -decompress-response@^3.2.0, decompress-response@^3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-3.3.0.tgz#80a4dd323748384bfa248083622aedec982adff3" - integrity sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M= - dependencies: - mimic-response "^1.0.0" - -deep-extend@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" - integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== - -defer-to-connect@^1.0.1: - version "1.1.3" - resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-1.1.3.tgz#331ae050c08dcf789f8c83a7b81f0ed94f4ac591" - integrity sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ== - -define-properties@^1.1.2, define-properties@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" - integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== - dependencies: - object-keys "^1.0.12" - -delayed-stream@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" - integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= - -depd@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" - integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= - -des.js@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.1.tgz#5382142e1bdc53f85d86d53e5f4aa7deb91e0843" - integrity sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA== - dependencies: - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - -destroy@~1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" - integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= - -diffie-hellman@^5.0.0: - version "5.0.3" - resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" - integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg== - dependencies: - bn.js "^4.1.0" - miller-rabin "^4.0.0" - randombytes "^2.0.0" - -dom-walk@^0.1.0: - version "0.1.2" - resolved "https://registry.yarnpkg.com/dom-walk/-/dom-walk-0.1.2.tgz#0c548bef048f4d1f2a97249002236060daa3fd84" - integrity sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w== - -dot-prop@^5.2.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-5.3.0.tgz#90ccce708cd9cd82cc4dc8c3ddd9abdd55b20e88" - integrity sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q== - dependencies: - is-obj "^2.0.0" - -dotenv@^8.2.0: - version "8.2.0" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-8.2.0.tgz#97e619259ada750eea3e4ea3e26bceea5424b16a" - integrity sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw== - -duplexer3@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" - integrity sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI= - -ecc-jsbn@~0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" - integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk= - dependencies: - jsbn "~0.1.0" - safer-buffer "^2.1.0" - -ecdsa-sig-formatter@1.0.11: - version "1.0.11" - resolved "https://registry.yarnpkg.com/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz#ae0f0fa2d85045ef14a817daa3ce9acd0489e5bf" - integrity sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ== - dependencies: - safe-buffer "^5.0.1" - -ee-first@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" - integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= - -elliptic@6.5.3, elliptic@^6.4.0, elliptic@^6.5.2, elliptic@^6.5.3: - version "6.5.3" - resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.3.tgz#cb59eb2efdaf73a0bd78ccd7015a62ad6e0f93d6" - integrity sha512-IMqzv5wNQf+E6aHeIqATs0tOLeOTwj1QKbRcS3jBbYkl5oLAserA8yJTT7/VyHUYG91PRmPyeQDObKLPpeS4dw== - dependencies: - bn.js "^4.4.0" - brorand "^1.0.1" - hash.js "^1.0.0" - hmac-drbg "^1.0.0" - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - minimalistic-crypto-utils "^1.0.0" - -emoji-regex@^7.0.1: - version "7.0.3" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" - integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== - -emoji-regex@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" - integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== - -encodeurl@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" - integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= - -end-of-stream@^1.1.0: - version "1.4.4" - resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" - integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== - dependencies: - once "^1.4.0" - -es-abstract@^1.17.0-next.1, es-abstract@^1.17.5: - version "1.17.6" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.6.tgz#9142071707857b2cacc7b89ecb670316c3e2d52a" - integrity sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw== - dependencies: - es-to-primitive "^1.2.1" - function-bind "^1.1.1" - has "^1.0.3" - has-symbols "^1.0.1" - is-callable "^1.2.0" - is-regex "^1.1.0" - object-inspect "^1.7.0" - object-keys "^1.1.1" - object.assign "^4.1.0" - string.prototype.trimend "^1.0.1" - string.prototype.trimstart "^1.0.1" - -es-to-primitive@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" - integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== - dependencies: - is-callable "^1.1.4" - is-date-object "^1.0.1" - is-symbol "^1.0.2" - -es5-ext@^0.10.35, es5-ext@^0.10.50: - version "0.10.53" - resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.53.tgz#93c5a3acfdbef275220ad72644ad02ee18368de1" - integrity sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q== - dependencies: - es6-iterator "~2.0.3" - es6-symbol "~3.1.3" - next-tick "~1.0.0" - -es6-iterator@~2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7" - integrity sha1-p96IkUGgWpSwhUQDstCg+/qY87c= - dependencies: - d "1" - es5-ext "^0.10.35" - es6-symbol "^3.1.1" - -es6-symbol@^3.1.1, es6-symbol@~3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.3.tgz#bad5d3c1bcdac28269f4cb331e431c78ac705d18" - integrity sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA== - dependencies: - d "^1.0.1" - ext "^1.1.2" - -escape-goat@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/escape-goat/-/escape-goat-2.1.1.tgz#1b2dc77003676c457ec760b2dc68edb648188675" - integrity sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q== - -escape-html@~1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" - integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= - -etag@~1.8.1: - version "1.8.1" - resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" - integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= - -eth-ens-namehash@2.0.8: - version "2.0.8" - resolved "https://registry.yarnpkg.com/eth-ens-namehash/-/eth-ens-namehash-2.0.8.tgz#229ac46eca86d52e0c991e7cb2aef83ff0f68bcf" - integrity sha1-IprEbsqG1S4MmR58sq74P/D2i88= - dependencies: - idna-uts46-hx "^2.3.1" - js-sha3 "^0.5.7" - -eth-lib@0.2.8: - version "0.2.8" - resolved "https://registry.yarnpkg.com/eth-lib/-/eth-lib-0.2.8.tgz#b194058bef4b220ad12ea497431d6cb6aa0623c8" - integrity sha512-ArJ7x1WcWOlSpzdoTBX8vkwlkSQ85CjjifSZtV4co64vWxSV8geWfPI9x4SVYu3DSxnX4yWFVTtGL+j9DUFLNw== - dependencies: - bn.js "^4.11.6" - elliptic "^6.4.0" - xhr-request-promise "^0.1.2" - -eth-lib@^0.1.26: - version "0.1.29" - resolved "https://registry.yarnpkg.com/eth-lib/-/eth-lib-0.1.29.tgz#0c11f5060d42da9f931eab6199084734f4dbd1d9" - integrity sha512-bfttrr3/7gG4E02HoWTDUcDDslN003OlOoBxk9virpAZQ1ja/jDgwkWB8QfJF7ojuEowrqy+lzp9VcJG7/k5bQ== - dependencies: - bn.js "^4.11.6" - elliptic "^6.4.0" - nano-json-stream-parser "^0.1.2" - servify "^0.1.12" - ws "^3.0.0" - xhr-request-promise "^0.1.2" - -ethereum-bloom-filters@^1.0.6: - version "1.0.7" - resolved "https://registry.yarnpkg.com/ethereum-bloom-filters/-/ethereum-bloom-filters-1.0.7.tgz#b7b80735e385dbb7f944ce6b4533e24511306060" - integrity sha512-cDcJJSJ9GMAcURiAWO3DxIEhTL/uWqlQnvgKpuYQzYPrt/izuGU+1ntQmHt0IRq6ADoSYHFnB+aCEFIldjhkMQ== - dependencies: - js-sha3 "^0.8.0" - -ethereum-cryptography@^0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz#8d6143cfc3d74bf79bbd8edecdf29e4ae20dd191" - integrity sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ== + "color-convert" "^2.0.1" + +"array-flatten@1.1.1": + "integrity" "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" + "resolved" "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz" + "version" "1.1.1" + +"asn1.js@^5.2.0": + "integrity" "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==" + "resolved" "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz" + "version" "5.4.1" + dependencies: + "bn.js" "^4.0.0" + "inherits" "^2.0.1" + "minimalistic-assert" "^1.0.0" + "safer-buffer" "^2.1.0" + +"asn1@~0.2.3": + "integrity" "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==" + "resolved" "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz" + "version" "0.2.4" + dependencies: + "safer-buffer" "~2.1.0" + +"assert-plus@^1.0.0", "assert-plus@1.0.0": + "integrity" "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" + "resolved" "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz" + "version" "1.0.0" + +"async-limiter@~1.0.0": + "integrity" "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==" + "resolved" "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz" + "version" "1.0.1" + +"async@^2.6.2": + "integrity" "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==" + "resolved" "https://registry.npmjs.org/async/-/async-2.6.3.tgz" + "version" "2.6.3" + dependencies: + "lodash" "^4.17.14" + +"asynckit@^0.4.0": + "integrity" "sha1-x57Zf380y48robyXkLzDZkdLS3k=" + "resolved" "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz" + "version" "0.4.0" + +"aws-sdk@^2.385.0", "aws-sdk@^2.490.0", "aws-sdk@^2.624.0": + "version" "2.751.0" + dependencies: + "buffer" "4.9.2" + "events" "1.1.1" + "ieee754" "1.1.13" + "jmespath" "0.15.0" + "querystring" "0.2.0" + "sax" "1.2.1" + "url" "0.10.3" + "uuid" "3.3.2" + "xml2js" "0.4.19" + +"aws-sign2@~0.7.0": + "integrity" "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" + "resolved" "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz" + "version" "0.7.0" + +"aws4@^1.8.0": + "integrity" "sha512-zg7Hz2k5lI8kb7U32998pRRFin7zJlkfezGJjUc2heaD4Pw2wObakCDVzkKztTm/Ln7eiVvYsjqak0Ed4LkMDA==" + "resolved" "https://registry.npmjs.org/aws4/-/aws4-1.10.1.tgz" + "version" "1.10.1" + +"axios@^0.21.0": + "version" "0.21.0" + dependencies: + "follow-redirects" "^1.10.0" + +"base-x@^3.0.2", "base-x@^3.0.8": + "integrity" "sha512-Rl/1AWP4J/zRrk54hhlxH4drNxPJXYUaKffODVI53/dAsV4t9fBxyxYKAVPU1XBHxYwOWP9h9H0hM2MVw4YfJA==" + "resolved" "https://registry.npmjs.org/base-x/-/base-x-3.0.8.tgz" + "version" "3.0.8" + dependencies: + "safe-buffer" "^5.0.1" + +"base64-js@^1.0.2": + "integrity" "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==" + "resolved" "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz" + "version" "1.3.1" + +"bcrypt-pbkdf@^1.0.0": + "integrity" "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=" + "resolved" "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz" + "version" "1.0.2" + dependencies: + "tweetnacl" "^0.14.3" + +"bignumber.js@^9.0.0": + "integrity" "sha512-t/OYhhJ2SD+YGBQcjY8GzzDHEk9f3nerxjtfa6tlMXfe7frs/WozhvCNoGvpM0P3bNf3Gq5ZRMlGr5f3r4/N8A==" + "resolved" "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.0.0.tgz" + "version" "9.0.0" + +"bignumber@^1.1.0": + "integrity" "sha1-5qsKdD2l8+oBjlwXWX0SH3howVk=" + "resolved" "https://registry.npmjs.org/bignumber/-/bignumber-1.1.0.tgz" + "version" "1.1.0" + +"bl@^2.2.1": + "integrity" "sha512-6Pesp1w0DEX1N550i/uGV/TqucVL4AM/pgThFSN/Qq9si1/DF9aIHs1BxD8V/QU0HoeHO6cQRTAuYnLPKq1e4g==" + "resolved" "https://registry.npmjs.org/bl/-/bl-2.2.1.tgz" + "version" "2.2.1" + dependencies: + "readable-stream" "^2.3.5" + "safe-buffer" "^5.1.1" + +"blakejs@^1.1.0": + "integrity" "sha1-ad+S75U6qIylGjLfarHFShVfx6U=" + "resolved" "https://registry.npmjs.org/blakejs/-/blakejs-1.1.0.tgz" + "version" "1.1.0" + +"bluebird@^3.5.0": + "integrity" "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" + "resolved" "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz" + "version" "3.7.2" + +"bn.js@^4.0.0", "bn.js@^4.1.0", "bn.js@^4.11.0", "bn.js@^4.11.1", "bn.js@^4.11.6", "bn.js@^4.11.9", "bn.js@^4.4.0": + "integrity" "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==" + "resolved" "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz" + "version" "4.11.9" + +"bn.js@^5.1.1": + "integrity" "sha512-GkTiFpjFtUzU9CbMeJ5iazkCzGL3jrhzerzZIuqLABjbwRaFt33I9tUdSNryIptM+RxDet6OKm2WnLXzW51KsQ==" + "resolved" "https://registry.npmjs.org/bn.js/-/bn.js-5.1.3.tgz" + "version" "5.1.3" + +"bn.js@4.11.6": + "integrity" "sha1-UzRK2xRhehP26N0s4okF0cC6MhU=" + "resolved" "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz" + "version" "4.11.6" + +"body-parser@^1.16.0", "body-parser@^1.19.0", "body-parser@1.19.0": + "integrity" "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==" + "resolved" "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz" + "version" "1.19.0" + dependencies: + "bytes" "3.1.0" + "content-type" "~1.0.4" + "debug" "2.6.9" + "depd" "~1.1.2" + "http-errors" "1.7.2" + "iconv-lite" "0.4.24" + "on-finished" "~2.3.0" + "qs" "6.7.0" + "raw-body" "2.4.0" + "type-is" "~1.6.17" + +"boxen@^4.2.0": + "integrity" "sha512-eB4uT9RGzg2odpER62bBwSLvUeGC+WbRjjyyFhGsKnc8wp/m0+hQsMUvUe3H2V0D5vw0nBdO1hCJoZo5mKeuIQ==" + "resolved" "https://registry.npmjs.org/boxen/-/boxen-4.2.0.tgz" + "version" "4.2.0" + dependencies: + "ansi-align" "^3.0.0" + "camelcase" "^5.3.1" + "chalk" "^3.0.0" + "cli-boxes" "^2.2.0" + "string-width" "^4.1.0" + "term-size" "^2.1.0" + "type-fest" "^0.8.1" + "widest-line" "^3.1.0" + +"brorand@^1.0.1": + "integrity" "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=" + "resolved" "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz" + "version" "1.1.0" + +"browserify-aes@^1.0.0", "browserify-aes@^1.0.4", "browserify-aes@^1.2.0": + "integrity" "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==" + "resolved" "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz" + "version" "1.2.0" + dependencies: + "buffer-xor" "^1.0.3" + "cipher-base" "^1.0.0" + "create-hash" "^1.1.0" + "evp_bytestokey" "^1.0.3" + "inherits" "^2.0.1" + "safe-buffer" "^5.0.1" + +"browserify-cipher@^1.0.0": + "integrity" "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==" + "resolved" "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz" + "version" "1.0.1" + dependencies: + "browserify-aes" "^1.0.4" + "browserify-des" "^1.0.0" + "evp_bytestokey" "^1.0.0" + +"browserify-des@^1.0.0": + "integrity" "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==" + "resolved" "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz" + "version" "1.0.2" + dependencies: + "cipher-base" "^1.0.1" + "des.js" "^1.0.0" + "inherits" "^2.0.1" + "safe-buffer" "^5.1.2" + +"browserify-rsa@^4.0.0", "browserify-rsa@^4.0.1": + "integrity" "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=" + "resolved" "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz" + "version" "4.0.1" + dependencies: + "bn.js" "^4.1.0" + "randombytes" "^2.0.1" + +"browserify-sign@^4.0.0": + "integrity" "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==" + "resolved" "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz" + "version" "4.2.1" + dependencies: + "bn.js" "^5.1.1" + "browserify-rsa" "^4.0.1" + "create-hash" "^1.2.0" + "create-hmac" "^1.1.7" + "elliptic" "^6.5.3" + "inherits" "^2.0.4" + "parse-asn1" "^5.1.5" + "readable-stream" "^3.6.0" + "safe-buffer" "^5.2.0" + +"bs58@^4.0.0": + "integrity" "sha1-vhYedsNU9veIrkBx9j806MTwpCo=" + "resolved" "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz" + "version" "4.0.1" + dependencies: + "base-x" "^3.0.2" + +"bs58check@^2.1.2": + "integrity" "sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA==" + "resolved" "https://registry.npmjs.org/bs58check/-/bs58check-2.1.2.tgz" + "version" "2.1.2" + dependencies: + "bs58" "^4.0.0" + "create-hash" "^1.1.0" + "safe-buffer" "^5.1.2" + +"bson@^1.1.4": + "version" "1.1.5" + +"buffer-equal-constant-time@1.0.1": + "integrity" "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk=" + "resolved" "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz" + "version" "1.0.1" + +"buffer-to-arraybuffer@^0.0.5": + "integrity" "sha1-YGSkD6dutDxyOrqe+PbhIW0QURo=" + "resolved" "https://registry.npmjs.org/buffer-to-arraybuffer/-/buffer-to-arraybuffer-0.0.5.tgz" + "version" "0.0.5" + +"buffer-xor@^1.0.3": + "integrity" "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=" + "resolved" "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz" + "version" "1.0.3" + +"buffer@^5.0.5", "buffer@^5.5.0", "buffer@^5.6.0": + "integrity" "sha512-/gDYp/UtU0eA1ys8bOs9J6a+E/KWIY+DZ+Q2WESNUA0jFRsJOc0SNUO6xJ5SGA1xueg3NL65W6s+NY5l9cunuw==" + "resolved" "https://registry.npmjs.org/buffer/-/buffer-5.6.0.tgz" + "version" "5.6.0" + dependencies: + "base64-js" "^1.0.2" + "ieee754" "^1.1.4" + +"buffer@4.9.2": + "integrity" "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==" + "resolved" "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz" + "version" "4.9.2" + dependencies: + "base64-js" "^1.0.2" + "ieee754" "^1.1.4" + "isarray" "^1.0.0" + +"bufferutil@^4.0.1": + "integrity" "sha512-xowrxvpxojqkagPcWRQVXZl0YXhRhAtBEIq3VoER1NH5Mw1n1o0ojdspp+GS2J//2gCVyrzQDApQ4unGF+QOoA==" + "resolved" "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.1.tgz" + "version" "4.0.1" + dependencies: + "node-gyp-build" "~3.7.0" + +"bytes@3.1.0": + "integrity" "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" + "resolved" "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz" + "version" "3.1.0" + +"cacheable-request@^6.0.0": + "integrity" "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==" + "resolved" "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz" + "version" "6.1.0" + dependencies: + "clone-response" "^1.0.2" + "get-stream" "^5.1.0" + "http-cache-semantics" "^4.0.0" + "keyv" "^3.0.0" + "lowercase-keys" "^2.0.0" + "normalize-url" "^4.1.0" + "responselike" "^1.0.2" + +"callsites@^3.1.0": + "integrity" "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" + "resolved" "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz" + "version" "3.1.0" + +"camelcase@^5.3.1": + "integrity" "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" + "resolved" "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz" + "version" "5.3.1" + +"caseless@~0.12.0": + "integrity" "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" + "resolved" "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz" + "version" "0.12.0" + +"chalk@^2.4.1": + "version" "2.4.2" + dependencies: + "ansi-styles" "^3.2.1" + "escape-string-regexp" "^1.0.5" + "supports-color" "^5.3.0" + +"chalk@^3.0.0": + "integrity" "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==" + "resolved" "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "ansi-styles" "^4.1.0" + "supports-color" "^7.1.0" + +"chownr@^1.1.1": + "integrity" "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" + "resolved" "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz" + "version" "1.1.4" + +"ci-info@^2.0.0": + "integrity" "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==" + "resolved" "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz" + "version" "2.0.0" + +"cids@^0.7.1": + "integrity" "sha512-zT7mPeghoWAu+ppn8+BS1tQ5qGmbMfB4AregnQjA/qHY3GC1m1ptI9GkWNlgeu38r7CuRdXB47uY2XgAYt6QVA==" + "resolved" "https://registry.npmjs.org/cids/-/cids-0.7.5.tgz" + "version" "0.7.5" + dependencies: + "buffer" "^5.5.0" + "class-is" "^1.1.0" + "multibase" "~0.6.0" + "multicodec" "^1.0.0" + "multihashes" "~0.4.15" + +"cipher-base@^1.0.0", "cipher-base@^1.0.1", "cipher-base@^1.0.3": + "integrity" "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==" + "resolved" "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz" + "version" "1.0.4" + dependencies: + "inherits" "^2.0.1" + "safe-buffer" "^5.0.1" + +"class-is@^1.1.0": + "integrity" "sha512-rhjH9AG1fvabIDoGRVH587413LPjTZgmDF9fOFCbFJQV4yuocX1mHxxvXI4g3cGwbVY9wAYIoKlg1N79frJKQw==" + "resolved" "https://registry.npmjs.org/class-is/-/class-is-1.1.0.tgz" + "version" "1.1.0" + +"clear-module@^4.1.1": + "integrity" "sha512-ng0E7LeODcT3QkazOckzZqbca+JByQy/Q2Z6qO24YsTp+pLxCfohGz2gJYJqZS0CWTX3LEUiHOqe5KlYeUbEMw==" + "resolved" "https://registry.npmjs.org/clear-module/-/clear-module-4.1.1.tgz" + "version" "4.1.1" + dependencies: + "parent-module" "^2.0.0" + "resolve-from" "^5.0.0" + +"cli-boxes@^2.2.0": + "integrity" "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==" + "resolved" "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz" + "version" "2.2.1" + +"clone-response@^1.0.2": + "integrity" "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=" + "resolved" "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz" + "version" "1.0.2" + dependencies: + "mimic-response" "^1.0.0" + +"coingecko-api@^1.0.10": + "integrity" "sha512-7YLLC85+daxAw5QlBWoHVBVpJRwoPr4HtwanCr8V/WRjoyHTa1Lb9DQAvv4MDJZHiz4no6HGnDQnddtjV35oRA==" + "resolved" "https://registry.npmjs.org/coingecko-api/-/coingecko-api-1.0.10.tgz" + "version" "1.0.10" + +"color-convert@^1.9.0": + "integrity" "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==" + "resolved" "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz" + "version" "1.9.3" + dependencies: + "color-name" "1.1.3" + +"color-convert@^2.0.1": + "integrity" "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==" + "resolved" "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz" + "version" "2.0.1" + dependencies: + "color-name" "~1.1.4" + +"color-name@~1.1.4": + "integrity" "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + "resolved" "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" + "version" "1.1.4" + +"color-name@1.1.3": + "integrity" "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + "resolved" "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz" + "version" "1.1.3" + +"combined-stream@^1.0.6", "combined-stream@~1.0.6": + "integrity" "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==" + "resolved" "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz" + "version" "1.0.8" + dependencies: + "delayed-stream" "~1.0.0" + +"configstore@^5.0.1": + "integrity" "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==" + "resolved" "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz" + "version" "5.0.1" + dependencies: + "dot-prop" "^5.2.0" + "graceful-fs" "^4.1.2" + "make-dir" "^3.0.0" + "unique-string" "^2.0.0" + "write-file-atomic" "^3.0.0" + "xdg-basedir" "^4.0.0" + +"content-disposition@0.5.3": + "integrity" "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==" + "resolved" "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz" + "version" "0.5.3" + dependencies: + "safe-buffer" "5.1.2" + +"content-hash@^2.5.2": + "integrity" "sha512-FvIQKy0S1JaWV10sMsA7TRx8bpU+pqPkhbsfvOJAdjRXvYxEckAwQWGwtRjiaJfh+E0DvcWUGqcdjwMGFjsSdw==" + "resolved" "https://registry.npmjs.org/content-hash/-/content-hash-2.5.2.tgz" + "version" "2.5.2" + dependencies: + "cids" "^0.7.1" + "multicodec" "^0.5.5" + "multihashes" "^0.4.15" + +"content-type@~1.0.4": + "integrity" "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" + "resolved" "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz" + "version" "1.0.4" + +"cookie-signature@1.0.6": + "integrity" "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" + "resolved" "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz" + "version" "1.0.6" + +"cookie@0.4.0": + "integrity" "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==" + "resolved" "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz" + "version" "0.4.0" + +"cookiejar@^2.1.1": + "integrity" "sha512-Mw+adcfzPxcPeI+0WlvRrr/3lGVO0bD75SxX6811cxSh1Wbxx7xZBGK1eVtDf6si8rg2lhnUjsVLMFMfbRIuwA==" + "resolved" "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.2.tgz" + "version" "2.1.2" + +"core-util-is@~1.0.0", "core-util-is@1.0.2": + "integrity" "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + "resolved" "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" + "version" "1.0.2" + +"cors@^2.8.1", "cors@^2.8.5": + "integrity" "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==" + "resolved" "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz" + "version" "2.8.5" + dependencies: + "object-assign" "^4" + "vary" "^1" + +"create-ecdh@^4.0.0": + "integrity" "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==" + "resolved" "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz" + "version" "4.0.4" + dependencies: + "bn.js" "^4.1.0" + "elliptic" "^6.5.3" + +"create-hash@^1.1.0", "create-hash@^1.1.2", "create-hash@^1.2.0": + "integrity" "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==" + "resolved" "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz" + "version" "1.2.0" + dependencies: + "cipher-base" "^1.0.1" + "inherits" "^2.0.1" + "md5.js" "^1.3.4" + "ripemd160" "^2.0.1" + "sha.js" "^2.4.0" + +"create-hmac@^1.1.0", "create-hmac@^1.1.4", "create-hmac@^1.1.7": + "integrity" "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==" + "resolved" "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz" + "version" "1.1.7" + dependencies: + "cipher-base" "^1.0.3" + "create-hash" "^1.1.0" + "inherits" "^2.0.1" + "ripemd160" "^2.0.0" + "safe-buffer" "^5.0.1" + "sha.js" "^2.4.8" + +"cron-parser@^2.7.3": + "integrity" "sha512-XNJBD1QLFeAMUkZtZQuncAAOgJFWNhBdIbwgD22hZxrcWOImBFMKgPC66GzaXpyoJs7UvYLLgPH/8BRk/7gbZg==" + "resolved" "https://registry.npmjs.org/cron-parser/-/cron-parser-2.16.3.tgz" + "version" "2.16.3" + dependencies: + "is-nan" "^1.3.0" + "moment-timezone" "^0.5.31" + +"cross-spawn@^7.0.0": + "integrity" "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==" + "resolved" "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz" + "version" "7.0.3" + dependencies: + "path-key" "^3.1.0" + "shebang-command" "^2.0.0" + "which" "^2.0.1" + +"crypto-browserify@3.12.0": + "integrity" "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==" + "resolved" "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz" + "version" "3.12.0" + dependencies: + "browserify-cipher" "^1.0.0" + "browserify-sign" "^4.0.0" + "create-ecdh" "^4.0.0" + "create-hash" "^1.1.0" + "create-hmac" "^1.1.0" + "diffie-hellman" "^5.0.0" + "inherits" "^2.0.1" + "pbkdf2" "^3.0.3" + "public-encrypt" "^4.0.0" + "randombytes" "^2.0.0" + "randomfill" "^1.0.3" + +"crypto-random-string@^2.0.0": + "integrity" "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==" + "resolved" "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz" + "version" "2.0.0" + +"cuid@^2.1.8": + "integrity" "sha512-xiEMER6E7TlTPnDxrM4eRiC6TRgjNX9xzEZ5U/Se2YJKr7Mq4pJn/2XEHjl3STcSh96GmkHPcBXLES8M29wyyg==" + "resolved" "https://registry.npmjs.org/cuid/-/cuid-2.1.8.tgz" + "version" "2.1.8" + +"d@^1.0.1", "d@1": + "integrity" "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==" + "resolved" "https://registry.npmjs.org/d/-/d-1.0.1.tgz" + "version" "1.0.1" + dependencies: + "es5-ext" "^0.10.50" + "type" "^1.0.1" + +"dashdash@^1.12.0": + "integrity" "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=" + "resolved" "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz" + "version" "1.14.1" + dependencies: + "assert-plus" "^1.0.0" + +"debug@^2.2.0", "debug@2.6.9": + "integrity" "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==" + "resolved" "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" + "version" "2.6.9" + dependencies: + "ms" "2.0.0" + +"debug@^3.1.1": + "integrity" "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==" + "resolved" "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz" + "version" "3.2.6" + dependencies: + "ms" "^2.1.1" + +"decode-uri-component@^0.2.0": + "integrity" "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=" + "resolved" "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz" + "version" "0.2.0" + +"decompress-response@^3.2.0", "decompress-response@^3.3.0": + "integrity" "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=" + "resolved" "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz" + "version" "3.3.0" + dependencies: + "mimic-response" "^1.0.0" + +"deep-extend@^0.6.0": + "integrity" "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==" + "resolved" "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz" + "version" "0.6.0" + +"defer-to-connect@^1.0.1": + "integrity" "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==" + "resolved" "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz" + "version" "1.1.3" + +"define-properties@^1.1.3": + "integrity" "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==" + "resolved" "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz" + "version" "1.1.3" + dependencies: + "object-keys" "^1.0.12" + +"delay@^4.4.0": + "version" "4.4.0" + +"delayed-stream@~1.0.0": + "integrity" "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" + "resolved" "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz" + "version" "1.0.0" + +"denque@^1.4.1": + "version" "1.4.1" + +"depd@~1.1.2": + "integrity" "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" + "resolved" "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz" + "version" "1.1.2" + +"des.js@^1.0.0": + "integrity" "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==" + "resolved" "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz" + "version" "1.0.1" + dependencies: + "inherits" "^2.0.1" + "minimalistic-assert" "^1.0.0" + +"destroy@~1.0.4": + "integrity" "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" + "resolved" "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz" + "version" "1.0.4" + +"diffie-hellman@^5.0.0": + "integrity" "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==" + "resolved" "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz" + "version" "5.0.3" + dependencies: + "bn.js" "^4.1.0" + "miller-rabin" "^4.0.0" + "randombytes" "^2.0.0" + +"dom-walk@^0.1.0": + "integrity" "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==" + "resolved" "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz" + "version" "0.1.2" + +"dot-prop@^5.2.0": + "integrity" "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==" + "resolved" "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz" + "version" "5.3.0" + dependencies: + "is-obj" "^2.0.0" + +"dotenv@^8.2.0": + "integrity" "sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw==" + "resolved" "https://registry.npmjs.org/dotenv/-/dotenv-8.2.0.tgz" + "version" "8.2.0" + +"duplexer3@^0.1.4": + "integrity" "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=" + "resolved" "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz" + "version" "0.1.4" + +"ecc-jsbn@~0.1.1": + "integrity" "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=" + "resolved" "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz" + "version" "0.1.2" + dependencies: + "jsbn" "~0.1.0" + "safer-buffer" "^2.1.0" + +"ecdsa-sig-formatter@1.0.11": + "integrity" "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==" + "resolved" "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz" + "version" "1.0.11" + dependencies: + "safe-buffer" "^5.0.1" + +"ee-first@1.1.1": + "integrity" "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" + "resolved" "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz" + "version" "1.1.1" + +"elliptic@^6.4.0", "elliptic@^6.5.2", "elliptic@^6.5.3", "elliptic@6.5.3": + "integrity" "sha512-IMqzv5wNQf+E6aHeIqATs0tOLeOTwj1QKbRcS3jBbYkl5oLAserA8yJTT7/VyHUYG91PRmPyeQDObKLPpeS4dw==" + "resolved" "https://registry.npmjs.org/elliptic/-/elliptic-6.5.3.tgz" + "version" "6.5.3" + dependencies: + "bn.js" "^4.4.0" + "brorand" "^1.0.1" + "hash.js" "^1.0.0" + "hmac-drbg" "^1.0.0" + "inherits" "^2.0.1" + "minimalistic-assert" "^1.0.0" + "minimalistic-crypto-utils" "^1.0.0" + +"emoji-regex@^7.0.1": + "integrity" "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" + "resolved" "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz" + "version" "7.0.3" + +"emoji-regex@^8.0.0": + "integrity" "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + "resolved" "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz" + "version" "8.0.0" + +"encodeurl@~1.0.2": + "integrity" "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" + "resolved" "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz" + "version" "1.0.2" + +"end-of-stream@^1.1.0": + "integrity" "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==" + "resolved" "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz" + "version" "1.4.4" + dependencies: + "once" "^1.4.0" + +"es-abstract@^1.17.0-next.1", "es-abstract@^1.17.5": + "integrity" "sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw==" + "resolved" "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.6.tgz" + "version" "1.17.6" + dependencies: + "es-to-primitive" "^1.2.1" + "function-bind" "^1.1.1" + "has" "^1.0.3" + "has-symbols" "^1.0.1" + "is-callable" "^1.2.0" + "is-regex" "^1.1.0" + "object-inspect" "^1.7.0" + "object-keys" "^1.1.1" + "object.assign" "^4.1.0" + "string.prototype.trimend" "^1.0.1" + "string.prototype.trimstart" "^1.0.1" + +"es-abstract@^1.18.0-next.0": + "version" "1.18.0-next.0" + dependencies: + "es-to-primitive" "^1.2.1" + "function-bind" "^1.1.1" + "has" "^1.0.3" + "has-symbols" "^1.0.1" + "is-callable" "^1.2.0" + "is-negative-zero" "^2.0.0" + "is-regex" "^1.1.1" + "object-inspect" "^1.8.0" + "object-keys" "^1.1.1" + "object.assign" "^4.1.0" + "string.prototype.trimend" "^1.0.1" + "string.prototype.trimstart" "^1.0.1" + +"es-to-primitive@^1.2.1": + "integrity" "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==" + "resolved" "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz" + "version" "1.2.1" + dependencies: + "is-callable" "^1.1.4" + "is-date-object" "^1.0.1" + "is-symbol" "^1.0.2" + +"es5-ext@^0.10.35", "es5-ext@^0.10.50": + "integrity" "sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q==" + "resolved" "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz" + "version" "0.10.53" + dependencies: + "es6-iterator" "~2.0.3" + "es6-symbol" "~3.1.3" + "next-tick" "~1.0.0" + +"es6-iterator@~2.0.3": + "integrity" "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=" + "resolved" "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz" + "version" "2.0.3" + dependencies: + "d" "1" + "es5-ext" "^0.10.35" + "es6-symbol" "^3.1.1" + +"es6-symbol@^3.1.1", "es6-symbol@~3.1.3": + "integrity" "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==" + "resolved" "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz" + "version" "3.1.3" + dependencies: + "d" "^1.0.1" + "ext" "^1.1.2" + +"escape-goat@^2.0.0": + "integrity" "sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==" + "resolved" "https://registry.npmjs.org/escape-goat/-/escape-goat-2.1.1.tgz" + "version" "2.1.1" + +"escape-html@~1.0.3": + "integrity" "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" + "resolved" "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz" + "version" "1.0.3" + +"escape-string-regexp@^1.0.5": + "integrity" "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + "resolved" "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" + "version" "1.0.5" + +"etag@~1.8.1": + "integrity" "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" + "resolved" "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz" + "version" "1.8.1" + +"eth-ens-namehash@2.0.8": + "integrity" "sha1-IprEbsqG1S4MmR58sq74P/D2i88=" + "resolved" "https://registry.npmjs.org/eth-ens-namehash/-/eth-ens-namehash-2.0.8.tgz" + "version" "2.0.8" + dependencies: + "idna-uts46-hx" "^2.3.1" + "js-sha3" "^0.5.7" + +"eth-lib@^0.1.26": + "integrity" "sha512-bfttrr3/7gG4E02HoWTDUcDDslN003OlOoBxk9virpAZQ1ja/jDgwkWB8QfJF7ojuEowrqy+lzp9VcJG7/k5bQ==" + "resolved" "https://registry.npmjs.org/eth-lib/-/eth-lib-0.1.29.tgz" + "version" "0.1.29" + dependencies: + "bn.js" "^4.11.6" + "elliptic" "^6.4.0" + "nano-json-stream-parser" "^0.1.2" + "servify" "^0.1.12" + "ws" "^3.0.0" + "xhr-request-promise" "^0.1.2" + +"eth-lib@0.2.8": + "integrity" "sha512-ArJ7x1WcWOlSpzdoTBX8vkwlkSQ85CjjifSZtV4co64vWxSV8geWfPI9x4SVYu3DSxnX4yWFVTtGL+j9DUFLNw==" + "resolved" "https://registry.npmjs.org/eth-lib/-/eth-lib-0.2.8.tgz" + "version" "0.2.8" + dependencies: + "bn.js" "^4.11.6" + "elliptic" "^6.4.0" + "xhr-request-promise" "^0.1.2" + +"ethereum-bloom-filters@^1.0.6": + "integrity" "sha512-cDcJJSJ9GMAcURiAWO3DxIEhTL/uWqlQnvgKpuYQzYPrt/izuGU+1ntQmHt0IRq6ADoSYHFnB+aCEFIldjhkMQ==" + "resolved" "https://registry.npmjs.org/ethereum-bloom-filters/-/ethereum-bloom-filters-1.0.7.tgz" + "version" "1.0.7" + dependencies: + "js-sha3" "^0.8.0" + +"ethereum-cryptography@^0.1.3": + "integrity" "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==" + "resolved" "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz" + "version" "0.1.3" dependencies: "@types/pbkdf2" "^3.0.0" "@types/secp256k1" "^4.0.1" - blakejs "^1.1.0" - browserify-aes "^1.2.0" - bs58check "^2.1.2" - create-hash "^1.2.0" - create-hmac "^1.1.7" - hash.js "^1.1.7" - keccak "^3.0.0" - pbkdf2 "^3.0.17" - randombytes "^2.1.0" - safe-buffer "^5.1.2" - scrypt-js "^3.0.0" - secp256k1 "^4.0.1" - setimmediate "^1.0.5" - -ethereumjs-common@^1.3.2, ethereumjs-common@^1.5.0: - version "1.5.2" - resolved "https://registry.yarnpkg.com/ethereumjs-common/-/ethereumjs-common-1.5.2.tgz#2065dbe9214e850f2e955a80e650cb6999066979" - integrity sha512-hTfZjwGX52GS2jcVO6E2sx4YuFnf0Fhp5ylo4pEPhEffNln7vS59Hr5sLnp3/QCazFLluuBZ+FZ6J5HTp0EqCA== - -ethereumjs-tx@^2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/ethereumjs-tx/-/ethereumjs-tx-2.1.2.tgz#5dfe7688bf177b45c9a23f86cf9104d47ea35fed" - integrity sha512-zZEK1onCeiORb0wyCXUvg94Ve5It/K6GD1K+26KfFKodiBiS6d9lfCXlUKGBBdQ+bv7Day+JK0tj1K+BeNFRAw== - dependencies: - ethereumjs-common "^1.5.0" - ethereumjs-util "^6.0.0" - -ethereumjs-util@^6.0.0: - version "6.2.1" - resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-6.2.1.tgz#fcb4e4dd5ceacb9d2305426ab1a5cd93e3163b69" - integrity sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw== + "blakejs" "^1.1.0" + "browserify-aes" "^1.2.0" + "bs58check" "^2.1.2" + "create-hash" "^1.2.0" + "create-hmac" "^1.1.7" + "hash.js" "^1.1.7" + "keccak" "^3.0.0" + "pbkdf2" "^3.0.17" + "randombytes" "^2.1.0" + "safe-buffer" "^5.1.2" + "scrypt-js" "^3.0.0" + "secp256k1" "^4.0.1" + "setimmediate" "^1.0.5" + +"ethereumjs-common@^1.3.2", "ethereumjs-common@^1.5.0": + "integrity" "sha512-hTfZjwGX52GS2jcVO6E2sx4YuFnf0Fhp5ylo4pEPhEffNln7vS59Hr5sLnp3/QCazFLluuBZ+FZ6J5HTp0EqCA==" + "resolved" "https://registry.npmjs.org/ethereumjs-common/-/ethereumjs-common-1.5.2.tgz" + "version" "1.5.2" + +"ethereumjs-tx@^2.1.1": + "integrity" "sha512-zZEK1onCeiORb0wyCXUvg94Ve5It/K6GD1K+26KfFKodiBiS6d9lfCXlUKGBBdQ+bv7Day+JK0tj1K+BeNFRAw==" + "resolved" "https://registry.npmjs.org/ethereumjs-tx/-/ethereumjs-tx-2.1.2.tgz" + "version" "2.1.2" + dependencies: + "ethereumjs-common" "^1.5.0" + "ethereumjs-util" "^6.0.0" + +"ethereumjs-util@^6.0.0": + "integrity" "sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw==" + "resolved" "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-6.2.1.tgz" + "version" "6.2.1" dependencies: "@types/bn.js" "^4.11.3" - bn.js "^4.11.0" - create-hash "^1.1.2" - elliptic "^6.5.2" - ethereum-cryptography "^0.1.3" - ethjs-util "0.1.6" - rlp "^2.2.3" - -ethjs-unit@0.1.6: - version "0.1.6" - resolved "https://registry.yarnpkg.com/ethjs-unit/-/ethjs-unit-0.1.6.tgz#c665921e476e87bce2a9d588a6fe0405b2c41699" - integrity sha1-xmWSHkduh7ziqdWIpv4EBbLEFpk= - dependencies: - bn.js "4.11.6" - number-to-bn "1.7.0" - -ethjs-util@0.1.6: - version "0.1.6" - resolved "https://registry.yarnpkg.com/ethjs-util/-/ethjs-util-0.1.6.tgz#f308b62f185f9fe6237132fb2a9818866a5cd536" - integrity sha512-CUnVOQq7gSpDHZVVrQW8ExxUETWrnrvXYvYz55wOU8Uj4VCgw56XC2B/fVqQN+f7gmrnRHSLVnFAwsCuNwji8w== - dependencies: - is-hex-prefixed "1.0.0" - strip-hex-prefix "1.0.0" - -eventemitter3@4.0.4: - version "4.0.4" - resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.4.tgz#b5463ace635a083d018bdc7c917b4c5f10a85384" - integrity sha512-rlaVLnVxtxvoyLsQQFBx53YmXHDxRIzzTLbdfxqi4yocpSjAxXwkU0cScM5JgSKMqEhrZpnvQ2D9gjylR0AimQ== - -eventemitter3@^4.0.4: - version "4.0.7" - resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" - integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== - -events@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924" - integrity sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ= - -evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" - integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== - dependencies: - md5.js "^1.3.4" - safe-buffer "^5.1.1" - -execa@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/execa/-/execa-4.0.3.tgz#0a34dabbad6d66100bd6f2c576c8669403f317f2" - integrity sha512-WFDXGHckXPWZX19t1kCsXzOpqX9LWYNqn4C+HqZlk/V0imTkzJZqf87ZBhvpHaftERYknpk0fjSylnXVlVgI0A== - dependencies: - cross-spawn "^7.0.0" - get-stream "^5.0.0" - human-signals "^1.1.1" - is-stream "^2.0.0" - merge-stream "^2.0.0" - npm-run-path "^4.0.0" - onetime "^5.1.0" - signal-exit "^3.0.2" - strip-final-newline "^2.0.0" - -express@^4.14.0: - version "4.17.1" - resolved "https://registry.yarnpkg.com/express/-/express-4.17.1.tgz#4491fc38605cf51f8629d39c2b5d026f98a4c134" - integrity sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g== - dependencies: - accepts "~1.3.7" - array-flatten "1.1.1" - body-parser "1.19.0" - content-disposition "0.5.3" - content-type "~1.0.4" - cookie "0.4.0" - cookie-signature "1.0.6" - debug "2.6.9" - depd "~1.1.2" - encodeurl "~1.0.2" - escape-html "~1.0.3" - etag "~1.8.1" - finalhandler "~1.1.2" - fresh "0.5.2" - merge-descriptors "1.0.1" - methods "~1.1.2" - on-finished "~2.3.0" - parseurl "~1.3.3" - path-to-regexp "0.1.7" - proxy-addr "~2.0.5" - qs "6.7.0" - range-parser "~1.2.1" - safe-buffer "5.1.2" - send "0.17.1" - serve-static "1.14.1" - setprototypeof "1.1.1" - statuses "~1.5.0" - type-is "~1.6.18" - utils-merge "1.0.1" - vary "~1.1.2" - -ext@^1.1.2: - version "1.4.0" - resolved "https://registry.yarnpkg.com/ext/-/ext-1.4.0.tgz#89ae7a07158f79d35517882904324077e4379244" - integrity sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A== - dependencies: - type "^2.0.0" - -extend@^3.0.2, extend@~3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" - integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== - -extsprintf@1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" - integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU= - -extsprintf@^1.2.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" - integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= - -fast-deep-equal@^3.1.1: - version "3.1.3" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" - integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== - -fast-json-stable-stringify@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" - integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== - -finalhandler@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d" - integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA== - dependencies: - debug "2.6.9" - encodeurl "~1.0.2" - escape-html "~1.0.3" - on-finished "~2.3.0" - parseurl "~1.3.3" - statuses "~1.5.0" - unpipe "~1.0.0" - -forever-agent@~0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" - integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= - -form-data@~2.3.2: - version "2.3.3" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" - integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.6" - mime-types "^2.1.12" - -forwarded@~0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84" - integrity sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ= - -fresh@0.5.2: - version "0.5.2" - resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" - integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= - -fs-extra@^4.0.2: - version "4.0.3" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-4.0.3.tgz#0d852122e5bc5beb453fb028e9c0c9bf36340c94" - integrity sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg== - dependencies: - graceful-fs "^4.1.2" - jsonfile "^4.0.0" - universalify "^0.1.0" - -fs-extra@^8.1.0: - version "8.1.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" - integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== - dependencies: - graceful-fs "^4.2.0" - jsonfile "^4.0.0" - universalify "^0.1.0" - -fs-minipass@^1.2.5: - version "1.2.7" - resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.7.tgz#ccff8570841e7fe4265693da88936c55aed7f7c7" - integrity sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA== - dependencies: - minipass "^2.6.0" - -function-bind@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" - integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== - -get-stream@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" - integrity sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ= - -get-stream@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" - integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== - dependencies: - pump "^3.0.0" - -get-stream@^5.0.0, get-stream@^5.1.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" - integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== - dependencies: - pump "^3.0.0" - -getpass@^0.1.1: - version "0.1.7" - resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" - integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo= - dependencies: - assert-plus "^1.0.0" - -global-dirs@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-2.0.1.tgz#acdf3bb6685bcd55cb35e8a052266569e9469201" - integrity sha512-5HqUqdhkEovj2Of/ms3IeS/EekcO54ytHRLV4PEY2rhRwrHXLQjeVEES0Lhka0xwNDtGYn58wyC4s5+MHsOO6A== - dependencies: - ini "^1.3.5" - -global@~4.3.0: - version "4.3.2" - resolved "https://registry.yarnpkg.com/global/-/global-4.3.2.tgz#e76989268a6c74c38908b1305b10fc0e394e9d0f" - integrity sha1-52mJJopsdMOJCLEwWxD8DjlOnQ8= - dependencies: - min-document "^2.19.0" - process "~0.5.1" - -got@9.6.0, got@^9.6.0: - version "9.6.0" - resolved "https://registry.yarnpkg.com/got/-/got-9.6.0.tgz#edf45e7d67f99545705de1f7bbeeeb121765ed85" - integrity sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q== + "bn.js" "^4.11.0" + "create-hash" "^1.1.2" + "elliptic" "^6.5.2" + "ethereum-cryptography" "^0.1.3" + "ethjs-util" "0.1.6" + "rlp" "^2.2.3" + +"ethjs-unit@0.1.6": + "integrity" "sha1-xmWSHkduh7ziqdWIpv4EBbLEFpk=" + "resolved" "https://registry.npmjs.org/ethjs-unit/-/ethjs-unit-0.1.6.tgz" + "version" "0.1.6" + dependencies: + "bn.js" "4.11.6" + "number-to-bn" "1.7.0" + +"ethjs-util@0.1.6": + "integrity" "sha512-CUnVOQq7gSpDHZVVrQW8ExxUETWrnrvXYvYz55wOU8Uj4VCgw56XC2B/fVqQN+f7gmrnRHSLVnFAwsCuNwji8w==" + "resolved" "https://registry.npmjs.org/ethjs-util/-/ethjs-util-0.1.6.tgz" + "version" "0.1.6" + dependencies: + "is-hex-prefixed" "1.0.0" + "strip-hex-prefix" "1.0.0" + +"eventemitter3@^4.0.4", "eventemitter3@4.0.4": + "integrity" "sha512-rlaVLnVxtxvoyLsQQFBx53YmXHDxRIzzTLbdfxqi4yocpSjAxXwkU0cScM5JgSKMqEhrZpnvQ2D9gjylR0AimQ==" + "resolved" "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.4.tgz" + "version" "4.0.4" + +"events@1.1.1": + "integrity" "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=" + "resolved" "https://registry.npmjs.org/events/-/events-1.1.1.tgz" + "version" "1.1.1" + +"evp_bytestokey@^1.0.0", "evp_bytestokey@^1.0.3": + "integrity" "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==" + "resolved" "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz" + "version" "1.0.3" + dependencies: + "md5.js" "^1.3.4" + "safe-buffer" "^5.1.1" + +"execa@^4.0.0": + "integrity" "sha512-WFDXGHckXPWZX19t1kCsXzOpqX9LWYNqn4C+HqZlk/V0imTkzJZqf87ZBhvpHaftERYknpk0fjSylnXVlVgI0A==" + "resolved" "https://registry.npmjs.org/execa/-/execa-4.0.3.tgz" + "version" "4.0.3" + dependencies: + "cross-spawn" "^7.0.0" + "get-stream" "^5.0.0" + "human-signals" "^1.1.1" + "is-stream" "^2.0.0" + "merge-stream" "^2.0.0" + "npm-run-path" "^4.0.0" + "onetime" "^5.1.0" + "signal-exit" "^3.0.2" + "strip-final-newline" "^2.0.0" + +"express@^4.14.0", "express@^4.17.1", "express@>=4.0.0": + "integrity" "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==" + "resolved" "https://registry.npmjs.org/express/-/express-4.17.1.tgz" + "version" "4.17.1" + dependencies: + "accepts" "~1.3.7" + "array-flatten" "1.1.1" + "body-parser" "1.19.0" + "content-disposition" "0.5.3" + "content-type" "~1.0.4" + "cookie" "0.4.0" + "cookie-signature" "1.0.6" + "debug" "2.6.9" + "depd" "~1.1.2" + "encodeurl" "~1.0.2" + "escape-html" "~1.0.3" + "etag" "~1.8.1" + "finalhandler" "~1.1.2" + "fresh" "0.5.2" + "merge-descriptors" "1.0.1" + "methods" "~1.1.2" + "on-finished" "~2.3.0" + "parseurl" "~1.3.3" + "path-to-regexp" "0.1.7" + "proxy-addr" "~2.0.5" + "qs" "6.7.0" + "range-parser" "~1.2.1" + "safe-buffer" "5.1.2" + "send" "0.17.1" + "serve-static" "1.14.1" + "setprototypeof" "1.1.1" + "statuses" "~1.5.0" + "type-is" "~1.6.18" + "utils-merge" "1.0.1" + "vary" "~1.1.2" + +"ext@^1.1.2": + "integrity" "sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A==" + "resolved" "https://registry.npmjs.org/ext/-/ext-1.4.0.tgz" + "version" "1.4.0" + dependencies: + "type" "^2.0.0" + +"extend@^3.0.2", "extend@~3.0.2": + "integrity" "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + "resolved" "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz" + "version" "3.0.2" + +"extsprintf@^1.2.0", "extsprintf@1.3.0": + "integrity" "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" + "resolved" "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz" + "version" "1.3.0" + +"fast-deep-equal@^3.1.1": + "integrity" "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + "resolved" "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz" + "version" "3.1.3" + +"fast-json-stable-stringify@^2.0.0": + "integrity" "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" + "resolved" "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz" + "version" "2.1.0" + +"finalhandler@~1.1.2": + "integrity" "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==" + "resolved" "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz" + "version" "1.1.2" + dependencies: + "debug" "2.6.9" + "encodeurl" "~1.0.2" + "escape-html" "~1.0.3" + "on-finished" "~2.3.0" + "parseurl" "~1.3.3" + "statuses" "~1.5.0" + "unpipe" "~1.0.0" + +"follow-redirects@^1.10.0": + "version" "1.13.0" + +"forever-agent@~0.6.1": + "integrity" "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" + "resolved" "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz" + "version" "0.6.1" + +"form-data@~2.3.2": + "integrity" "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==" + "resolved" "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz" + "version" "2.3.3" + dependencies: + "asynckit" "^0.4.0" + "combined-stream" "^1.0.6" + "mime-types" "^2.1.12" + +"forwarded@~0.1.2": + "integrity" "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=" + "resolved" "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz" + "version" "0.1.2" + +"fresh@0.5.2": + "integrity" "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" + "resolved" "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz" + "version" "0.5.2" + +"fs-extra@^4.0.2": + "integrity" "sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==" + "resolved" "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.3.tgz" + "version" "4.0.3" + dependencies: + "graceful-fs" "^4.1.2" + "jsonfile" "^4.0.0" + "universalify" "^0.1.0" + +"fs-extra@^8.1.0": + "integrity" "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==" + "resolved" "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz" + "version" "8.1.0" + dependencies: + "graceful-fs" "^4.2.0" + "jsonfile" "^4.0.0" + "universalify" "^0.1.0" + +"fs-minipass@^1.2.5": + "integrity" "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==" + "resolved" "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz" + "version" "1.2.7" + dependencies: + "minipass" "^2.6.0" + +"function-bind@^1.1.1": + "integrity" "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + "resolved" "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz" + "version" "1.1.1" + +"get-stream@^3.0.0": + "integrity" "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=" + "resolved" "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz" + "version" "3.0.0" + +"get-stream@^4.1.0": + "integrity" "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==" + "resolved" "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz" + "version" "4.1.0" + dependencies: + "pump" "^3.0.0" + +"get-stream@^5.0.0": + "integrity" "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==" + "resolved" "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz" + "version" "5.2.0" + dependencies: + "pump" "^3.0.0" + +"get-stream@^5.1.0": + "integrity" "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==" + "resolved" "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz" + "version" "5.2.0" + dependencies: + "pump" "^3.0.0" + +"getpass@^0.1.1": + "integrity" "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=" + "resolved" "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz" + "version" "0.1.7" + dependencies: + "assert-plus" "^1.0.0" + +"global-dirs@^2.0.1": + "integrity" "sha512-5HqUqdhkEovj2Of/ms3IeS/EekcO54ytHRLV4PEY2rhRwrHXLQjeVEES0Lhka0xwNDtGYn58wyC4s5+MHsOO6A==" + "resolved" "https://registry.npmjs.org/global-dirs/-/global-dirs-2.0.1.tgz" + "version" "2.0.1" + dependencies: + "ini" "^1.3.5" + +"global@~4.3.0": + "integrity" "sha1-52mJJopsdMOJCLEwWxD8DjlOnQ8=" + "resolved" "https://registry.npmjs.org/global/-/global-4.3.2.tgz" + "version" "4.3.2" + dependencies: + "min-document" "^2.19.0" + "process" "~0.5.1" + +"got@^7.1.0": + "integrity" "sha512-Y5WMo7xKKq1muPsxD+KmrR8DH5auG7fBdDVueZwETwV6VytKyU9OX/ddpq2/1hp1vIPvVb4T81dKQz3BivkNLw==" + "resolved" "https://registry.npmjs.org/got/-/got-7.1.0.tgz" + "version" "7.1.0" + dependencies: + "decompress-response" "^3.2.0" + "duplexer3" "^0.1.4" + "get-stream" "^3.0.0" + "is-plain-obj" "^1.1.0" + "is-retry-allowed" "^1.0.0" + "is-stream" "^1.0.0" + "isurl" "^1.0.0-alpha5" + "lowercase-keys" "^1.0.0" + "p-cancelable" "^0.3.0" + "p-timeout" "^1.1.1" + "safe-buffer" "^5.0.1" + "timed-out" "^4.0.0" + "url-parse-lax" "^1.0.0" + "url-to-options" "^1.0.1" + +"got@^9.6.0", "got@9.6.0": + "integrity" "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==" + "resolved" "https://registry.npmjs.org/got/-/got-9.6.0.tgz" + "version" "9.6.0" dependencies: "@sindresorhus/is" "^0.14.0" "@szmarczak/http-timer" "^1.1.2" - cacheable-request "^6.0.0" - decompress-response "^3.3.0" - duplexer3 "^0.1.4" - get-stream "^4.1.0" - lowercase-keys "^1.0.1" - mimic-response "^1.0.1" - p-cancelable "^1.0.0" - to-readable-stream "^1.0.0" - url-parse-lax "^3.0.0" - -got@^7.1.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/got/-/got-7.1.0.tgz#05450fd84094e6bbea56f451a43a9c289166385a" - integrity sha512-Y5WMo7xKKq1muPsxD+KmrR8DH5auG7fBdDVueZwETwV6VytKyU9OX/ddpq2/1hp1vIPvVb4T81dKQz3BivkNLw== - dependencies: - decompress-response "^3.2.0" - duplexer3 "^0.1.4" - get-stream "^3.0.0" - is-plain-obj "^1.1.0" - is-retry-allowed "^1.0.0" - is-stream "^1.0.0" - isurl "^1.0.0-alpha5" - lowercase-keys "^1.0.0" - p-cancelable "^0.3.0" - p-timeout "^1.1.1" - safe-buffer "^5.0.1" - timed-out "^4.0.0" - url-parse-lax "^1.0.0" - url-to-options "^1.0.1" - -graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0: - version "4.2.4" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb" - integrity sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw== - -har-schema@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" - integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= - -har-validator@~5.1.3: - version "5.1.5" - resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.5.tgz#1f0803b9f8cb20c0fa13822df1ecddb36bde1efd" - integrity sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w== - dependencies: - ajv "^6.12.3" - har-schema "^2.0.0" - -has-flag@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" - integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== - -has-symbol-support-x@^1.4.1: - version "1.4.2" - resolved "https://registry.yarnpkg.com/has-symbol-support-x/-/has-symbol-support-x-1.4.2.tgz#1409f98bc00247da45da67cee0a36f282ff26455" - integrity sha512-3ToOva++HaW+eCpgqZrCfN51IPB+7bJNVT6CUATzueB5Heb8o6Nam0V3HG5dlDvZU1Gn5QLcbahiKw/XVk5JJw== - -has-symbols@^1.0.0, has-symbols@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8" - integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg== - -has-to-string-tag-x@^1.2.0: - version "1.4.1" - resolved "https://registry.yarnpkg.com/has-to-string-tag-x/-/has-to-string-tag-x-1.4.1.tgz#a045ab383d7b4b2012a00148ab0aa5f290044d4d" - integrity sha512-vdbKfmw+3LoOYVr+mtxHaX5a96+0f3DljYd8JOqvOLsf5mw2Otda2qCDT9qRqLAhrjyQ0h7ual5nOiASpsGNFw== - dependencies: - has-symbol-support-x "^1.4.1" - -has-yarn@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/has-yarn/-/has-yarn-2.1.0.tgz#137e11354a7b5bf11aa5cb649cf0c6f3ff2b2e77" - integrity sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw== - -has@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" - integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== - dependencies: - function-bind "^1.1.1" - -hash-base@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33" - integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA== - dependencies: - inherits "^2.0.4" - readable-stream "^3.6.0" - safe-buffer "^5.2.0" - -hash.js@^1.0.0, hash.js@^1.0.3, hash.js@^1.1.7: - version "1.1.7" - resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" - integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== - dependencies: - inherits "^2.0.3" - minimalistic-assert "^1.0.1" - -hmac-drbg@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" - integrity sha1-0nRXAQJabHdabFRXk+1QL8DGSaE= - dependencies: - hash.js "^1.0.3" - minimalistic-assert "^1.0.0" - minimalistic-crypto-utils "^1.0.1" - -http-cache-semantics@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz#49e91c5cbf36c9b94bcfcd71c23d5249ec74e390" - integrity sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ== - -http-errors@1.7.2: - version "1.7.2" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.2.tgz#4f5029cf13239f31036e5b2e55292bcfbcc85c8f" - integrity sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg== - dependencies: - depd "~1.1.2" - inherits "2.0.3" - setprototypeof "1.1.1" - statuses ">= 1.5.0 < 2" - toidentifier "1.0.0" - -http-errors@~1.7.2: - version "1.7.3" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.3.tgz#6c619e4f9c60308c38519498c14fbb10aacebb06" - integrity sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw== - dependencies: - depd "~1.1.2" - inherits "2.0.4" - setprototypeof "1.1.1" - statuses ">= 1.5.0 < 2" - toidentifier "1.0.0" - -http-https@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/http-https/-/http-https-1.0.0.tgz#2f908dd5f1db4068c058cd6e6d4ce392c913389b" - integrity sha1-L5CN1fHbQGjAWM1ubUzjkskTOJs= - -http-signature@~1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" - integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE= - dependencies: - assert-plus "^1.0.0" - jsprim "^1.2.2" - sshpk "^1.7.0" - -human-signals@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3" - integrity sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw== - -iconv-lite@0.4.24: - version "0.4.24" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" - integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== - dependencies: - safer-buffer ">= 2.1.2 < 3" - -idna-uts46-hx@^2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/idna-uts46-hx/-/idna-uts46-hx-2.3.1.tgz#a1dc5c4df37eee522bf66d969cc980e00e8711f9" - integrity sha512-PWoF9Keq6laYdIRwwCdhTPl60xRqAloYNMQLiyUnG42VjT53oW07BXIRM+NK7eQjzXjAk2gUvX9caRxlnF9TAA== - dependencies: - punycode "2.1.0" - -ieee754@1.1.13, ieee754@^1.1.4: - version "1.1.13" - resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.13.tgz#ec168558e95aa181fd87d37f55c32bbcb6708b84" - integrity sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg== - -immediate@~3.0.5: - version "3.0.6" - resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.0.6.tgz#9db1dbd0faf8de6fbe0f5dd5e56bb606280de69b" - integrity sha1-nbHb0Pr43m++D13V5Wu2BigN5ps= - -import-lazy@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-2.1.0.tgz#05698e3d45c88e8d7e9d92cb0584e77f096f3e43" - integrity sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM= - -imurmurhash@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" - integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= - -inherits@2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" - integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= - -inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3: - version "2.0.4" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" - integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== - -ini@^1.3.5, ini@~1.3.0: - version "1.3.5" - resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" - integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== - -ipaddr.js@1.9.1: - version "1.9.1" - resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" - integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== - -is-callable@^1.1.4, is-callable@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.0.tgz#83336560b54a38e35e3a2df7afd0454d691468bb" - integrity sha512-pyVD9AaGLxtg6srb2Ng6ynWJqkHU9bEM087AKck0w8QwDarTfNcpIYoU8x8Hv2Icm8u6kFJM18Dag8lyqGkviw== - -is-ci@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" - integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w== - dependencies: - ci-info "^2.0.0" - -is-date-object@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e" - integrity sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g== - -is-fullwidth-code-point@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" - integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= - -is-fullwidth-code-point@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" - integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== - -is-function@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-function/-/is-function-1.0.2.tgz#4f097f30abf6efadac9833b17ca5dc03f8144e08" - integrity sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ== - -is-hex-prefixed@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz#7d8d37e6ad77e5d127148913c573e082d777f554" - integrity sha1-fY035q135dEnFIkTxXPggtd39VQ= - -is-installed-globally@^0.3.1: - version "0.3.2" - resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.3.2.tgz#fd3efa79ee670d1187233182d5b0a1dd00313141" - integrity sha512-wZ8x1js7Ia0kecP/CHM/3ABkAmujX7WPvQk6uu3Fly/Mk44pySulQpnHG46OMjHGXApINnV4QhY3SWnECO2z5g== - dependencies: - global-dirs "^2.0.1" - is-path-inside "^3.0.1" - -is-nan@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/is-nan/-/is-nan-1.3.0.tgz#85d1f5482f7051c2019f5673ccebdb06f3b0db03" - integrity sha512-z7bbREymOqt2CCaZVly8aC4ML3Xhfi0ekuOnjO2L8vKdl+CttdVoGZQhd4adMFAsxQ5VeRVwORs4tU8RH+HFtQ== - dependencies: - define-properties "^1.1.3" - -is-npm@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-4.0.0.tgz#c90dd8380696df87a7a6d823c20d0b12bbe3c84d" - integrity sha512-96ECIfh9xtDDlPylNPXhzjsykHsMJZ18ASpaWzQyBr4YRTcVjUvzaHayDAES2oU/3KpljhHUjtSRNiDwi0F0ig== - -is-obj@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982" - integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w== - -is-object@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-object/-/is-object-1.0.1.tgz#8952688c5ec2ffd6b03ecc85e769e02903083470" - integrity sha1-iVJojF7C/9awPsyF52ngKQMINHA= - -is-path-inside@^3.0.1: - version "3.0.2" - resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.2.tgz#f5220fc82a3e233757291dddc9c5877f2a1f3017" - integrity sha512-/2UGPSgmtqwo1ktx8NDHjuPwZWmHhO+gj0f93EkhLB5RgW9RZevWYYlIkS6zePc6U2WpOdQYIwHe9YC4DWEBVg== - -is-plain-obj@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" - integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4= - -is-regex@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.1.tgz#c6f98aacc546f6cec5468a07b7b153ab564a57b9" - integrity sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg== - dependencies: - has-symbols "^1.0.1" - -is-retry-allowed@^1.0.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz#d778488bd0a4666a3be8a1482b9f2baafedea8b4" - integrity sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg== - -is-stream@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" - integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= - -is-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3" - integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw== - -is-symbol@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937" - integrity sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ== - dependencies: - has-symbols "^1.0.1" - -is-typedarray@^1.0.0, is-typedarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" - integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= - -is-yarn-global@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/is-yarn-global/-/is-yarn-global-0.3.0.tgz#d502d3382590ea3004893746754c89139973e232" - integrity sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw== - -isarray@^1.0.0, isarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" - integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= - -isexe@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" - integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= - -isstream@~0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" - integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= - -isurl@^1.0.0-alpha5: - version "1.0.0" - resolved "https://registry.yarnpkg.com/isurl/-/isurl-1.0.0.tgz#b27f4f49f3cdaa3ea44a0a5b7f3462e6edc39d67" - integrity sha512-1P/yWsxPlDtn7QeRD+ULKQPaIaN6yF368GZ2vDfv0AL0NwpStafjWCDDdn0k8wgFMWpVAqG7oJhxHnlud42i9w== - dependencies: - has-to-string-tag-x "^1.2.0" - is-object "^1.0.1" - -java-invoke-local@0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/java-invoke-local/-/java-invoke-local-0.0.6.tgz#0e04b20b5e306a1e8384846a9ac286790ee6d868" - integrity sha512-gZmQKe1QrfkkMjCn8Qv9cpyJFyogTYqkP5WCobX5RNaHsJzIV/6NvAnlnouOcwKr29QrxLGDGcqYuJ+ae98s1A== - -jmespath@0.15.0: - version "0.15.0" - resolved "https://registry.yarnpkg.com/jmespath/-/jmespath-0.15.0.tgz#a3f222a9aae9f966f5d27c796510e28091764217" - integrity sha1-o/Iiqarp+Wb10nx5ZRDigJF2Qhc= - -js-sha3@0.5.7, js-sha3@^0.5.7: - version "0.5.7" - resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.5.7.tgz#0d4ffd8002d5333aabaf4a23eed2f6374c9f28e7" - integrity sha1-DU/9gALVMzqrr0oj7tL2N0yfKOc= - -js-sha3@^0.8.0: - version "0.8.0" - resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.8.0.tgz#b9b7a5da73afad7dedd0f8c463954cbde6818840" - integrity sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q== - -js-string-escape@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/js-string-escape/-/js-string-escape-1.0.1.tgz#e2625badbc0d67c7533e9edc1068c587ae4137ef" - integrity sha1-4mJbrbwNZ8dTPp7cEGjFh65BN+8= - -jsbn@~0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" - integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= - -json-buffer@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.0.tgz#5b1f397afc75d677bde8bcfc0e47e1f9a3d9a898" - integrity sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg= - -json-schema-traverse@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" - integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== - -json-schema@0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" - integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM= - -json-stringify-safe@~5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" - integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= - -jsonfile@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" - integrity sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss= + "cacheable-request" "^6.0.0" + "decompress-response" "^3.3.0" + "duplexer3" "^0.1.4" + "get-stream" "^4.1.0" + "lowercase-keys" "^1.0.1" + "mimic-response" "^1.0.1" + "p-cancelable" "^1.0.0" + "to-readable-stream" "^1.0.0" + "url-parse-lax" "^3.0.0" + +"graceful-fs@^4.1.2", "graceful-fs@^4.1.6", "graceful-fs@^4.2.0": + "integrity" "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==" + "resolved" "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz" + "version" "4.2.4" + +"har-schema@^2.0.0": + "integrity" "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" + "resolved" "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz" + "version" "2.0.0" + +"har-validator@~5.1.3": + "integrity" "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==" + "resolved" "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz" + "version" "5.1.5" + dependencies: + "ajv" "^6.12.3" + "har-schema" "^2.0.0" + +"has-flag@^3.0.0": + "integrity" "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + "resolved" "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz" + "version" "3.0.0" + +"has-flag@^4.0.0": + "integrity" "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + "resolved" "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz" + "version" "4.0.0" + +"has-symbol-support-x@^1.4.1": + "integrity" "sha512-3ToOva++HaW+eCpgqZrCfN51IPB+7bJNVT6CUATzueB5Heb8o6Nam0V3HG5dlDvZU1Gn5QLcbahiKw/XVk5JJw==" + "resolved" "https://registry.npmjs.org/has-symbol-support-x/-/has-symbol-support-x-1.4.2.tgz" + "version" "1.4.2" + +"has-symbols@^1.0.1": + "integrity" "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==" + "resolved" "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz" + "version" "1.0.1" + +"has-to-string-tag-x@^1.2.0": + "integrity" "sha512-vdbKfmw+3LoOYVr+mtxHaX5a96+0f3DljYd8JOqvOLsf5mw2Otda2qCDT9qRqLAhrjyQ0h7ual5nOiASpsGNFw==" + "resolved" "https://registry.npmjs.org/has-to-string-tag-x/-/has-to-string-tag-x-1.4.1.tgz" + "version" "1.4.1" + dependencies: + "has-symbol-support-x" "^1.4.1" + +"has-yarn@^2.1.0": + "integrity" "sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==" + "resolved" "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz" + "version" "2.1.0" + +"has@^1.0.3": + "integrity" "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==" + "resolved" "https://registry.npmjs.org/has/-/has-1.0.3.tgz" + "version" "1.0.3" + dependencies: + "function-bind" "^1.1.1" + +"hash-base@^3.0.0": + "integrity" "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==" + "resolved" "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz" + "version" "3.1.0" + dependencies: + "inherits" "^2.0.4" + "readable-stream" "^3.6.0" + "safe-buffer" "^5.2.0" + +"hash.js@^1.0.0", "hash.js@^1.0.3", "hash.js@^1.1.7": + "integrity" "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==" + "resolved" "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz" + "version" "1.1.7" + dependencies: + "inherits" "^2.0.3" + "minimalistic-assert" "^1.0.1" + +"hmac-drbg@^1.0.0": + "integrity" "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=" + "resolved" "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz" + "version" "1.0.1" + dependencies: + "hash.js" "^1.0.3" + "minimalistic-assert" "^1.0.0" + "minimalistic-crypto-utils" "^1.0.1" + +"http-cache-semantics@^4.0.0": + "integrity" "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==" + "resolved" "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz" + "version" "4.1.0" + +"http-errors@~1.7.2", "http-errors@1.7.2": + "integrity" "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==" + "resolved" "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz" + "version" "1.7.2" + dependencies: + "depd" "~1.1.2" + "inherits" "2.0.3" + "setprototypeof" "1.1.1" + "statuses" ">= 1.5.0 < 2" + "toidentifier" "1.0.0" + +"http-https@^1.0.0": + "integrity" "sha1-L5CN1fHbQGjAWM1ubUzjkskTOJs=" + "resolved" "https://registry.npmjs.org/http-https/-/http-https-1.0.0.tgz" + "version" "1.0.0" + +"http-signature@~1.2.0": + "integrity" "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=" + "resolved" "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz" + "version" "1.2.0" + dependencies: + "assert-plus" "^1.0.0" + "jsprim" "^1.2.2" + "sshpk" "^1.7.0" + +"human-signals@^1.1.1": + "integrity" "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==" + "resolved" "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz" + "version" "1.1.1" + +"iconv-lite@0.4.24": + "integrity" "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==" + "resolved" "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz" + "version" "0.4.24" + dependencies: + "safer-buffer" ">= 2.1.2 < 3" + +"idna-uts46-hx@^2.3.1": + "integrity" "sha512-PWoF9Keq6laYdIRwwCdhTPl60xRqAloYNMQLiyUnG42VjT53oW07BXIRM+NK7eQjzXjAk2gUvX9caRxlnF9TAA==" + "resolved" "https://registry.npmjs.org/idna-uts46-hx/-/idna-uts46-hx-2.3.1.tgz" + "version" "2.3.1" + dependencies: + "punycode" "2.1.0" + +"ieee754@^1.1.4", "ieee754@1.1.13": + "integrity" "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==" + "resolved" "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz" + "version" "1.1.13" + +"immediate@~3.0.5": + "integrity" "sha1-nbHb0Pr43m++D13V5Wu2BigN5ps=" + "resolved" "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz" + "version" "3.0.6" + +"import-lazy@^2.1.0": + "integrity" "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=" + "resolved" "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz" + "version" "2.1.0" + +"imurmurhash@^0.1.4": + "integrity" "sha1-khi5srkoojixPcT7a21XbyMUU+o=" + "resolved" "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz" + "version" "0.1.4" + +"inherits@^2.0.1", "inherits@^2.0.3", "inherits@^2.0.4", "inherits@~2.0.3": + "integrity" "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + "resolved" "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" + "version" "2.0.4" + +"inherits@2.0.3": + "integrity" "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + "resolved" "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz" + "version" "2.0.3" + +"ini@^1.3.5", "ini@~1.3.0": + "integrity" "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==" + "resolved" "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz" + "version" "1.3.5" + +"ipaddr.js@1.9.1": + "integrity" "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" + "resolved" "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz" + "version" "1.9.1" + +"is-callable@^1.1.4", "is-callable@^1.2.0": + "version" "1.2.1" + +"is-ci@^2.0.0": + "integrity" "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==" + "resolved" "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz" + "version" "2.0.0" + dependencies: + "ci-info" "^2.0.0" + +"is-date-object@^1.0.1": + "integrity" "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==" + "resolved" "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz" + "version" "1.0.2" + +"is-fullwidth-code-point@^2.0.0": + "integrity" "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + "resolved" "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz" + "version" "2.0.0" + +"is-fullwidth-code-point@^3.0.0": + "integrity" "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" + "resolved" "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz" + "version" "3.0.0" + +"is-function@^1.0.1": + "integrity" "sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ==" + "resolved" "https://registry.npmjs.org/is-function/-/is-function-1.0.2.tgz" + "version" "1.0.2" + +"is-hex-prefixed@1.0.0": + "integrity" "sha1-fY035q135dEnFIkTxXPggtd39VQ=" + "resolved" "https://registry.npmjs.org/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz" + "version" "1.0.0" + +"is-installed-globally@^0.3.1": + "integrity" "sha512-wZ8x1js7Ia0kecP/CHM/3ABkAmujX7WPvQk6uu3Fly/Mk44pySulQpnHG46OMjHGXApINnV4QhY3SWnECO2z5g==" + "resolved" "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.3.2.tgz" + "version" "0.3.2" + dependencies: + "global-dirs" "^2.0.1" + "is-path-inside" "^3.0.1" + +"is-nan@^1.3.0": + "integrity" "sha512-z7bbREymOqt2CCaZVly8aC4ML3Xhfi0ekuOnjO2L8vKdl+CttdVoGZQhd4adMFAsxQ5VeRVwORs4tU8RH+HFtQ==" + "resolved" "https://registry.npmjs.org/is-nan/-/is-nan-1.3.0.tgz" + "version" "1.3.0" + dependencies: + "define-properties" "^1.1.3" + +"is-negative-zero@^2.0.0": + "version" "2.0.0" + +"is-npm@^4.0.0": + "integrity" "sha512-96ECIfh9xtDDlPylNPXhzjsykHsMJZ18ASpaWzQyBr4YRTcVjUvzaHayDAES2oU/3KpljhHUjtSRNiDwi0F0ig==" + "resolved" "https://registry.npmjs.org/is-npm/-/is-npm-4.0.0.tgz" + "version" "4.0.0" + +"is-obj@^2.0.0": + "integrity" "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==" + "resolved" "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz" + "version" "2.0.0" + +"is-object@^1.0.1": + "integrity" "sha1-iVJojF7C/9awPsyF52ngKQMINHA=" + "resolved" "https://registry.npmjs.org/is-object/-/is-object-1.0.1.tgz" + "version" "1.0.1" + +"is-path-inside@^3.0.1": + "integrity" "sha512-/2UGPSgmtqwo1ktx8NDHjuPwZWmHhO+gj0f93EkhLB5RgW9RZevWYYlIkS6zePc6U2WpOdQYIwHe9YC4DWEBVg==" + "resolved" "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.2.tgz" + "version" "3.0.2" + +"is-plain-obj@^1.1.0": + "integrity" "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=" + "resolved" "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz" + "version" "1.1.0" + +"is-regex@^1.1.0", "is-regex@^1.1.1": + "integrity" "sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg==" + "resolved" "https://registry.npmjs.org/is-regex/-/is-regex-1.1.1.tgz" + "version" "1.1.1" + dependencies: + "has-symbols" "^1.0.1" + +"is-retry-allowed@^1.0.0": + "integrity" "sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg==" + "resolved" "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz" + "version" "1.2.0" + +"is-stream@^1.0.0": + "integrity" "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" + "resolved" "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz" + "version" "1.1.0" + +"is-stream@^2.0.0": + "integrity" "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==" + "resolved" "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz" + "version" "2.0.0" + +"is-symbol@^1.0.2": + "integrity" "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==" + "resolved" "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz" + "version" "1.0.3" + dependencies: + "has-symbols" "^1.0.1" + +"is-typedarray@^1.0.0", "is-typedarray@~1.0.0": + "integrity" "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" + "resolved" "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz" + "version" "1.0.0" + +"is-yarn-global@^0.3.0": + "integrity" "sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==" + "resolved" "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.3.0.tgz" + "version" "0.3.0" + +"isarray@^1.0.0", "isarray@~1.0.0": + "integrity" "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + "resolved" "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" + "version" "1.0.0" + +"isexe@^2.0.0": + "integrity" "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" + "resolved" "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz" + "version" "2.0.0" + +"isstream@~0.1.2": + "integrity" "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" + "resolved" "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz" + "version" "0.1.2" + +"isurl@^1.0.0-alpha5": + "integrity" "sha512-1P/yWsxPlDtn7QeRD+ULKQPaIaN6yF368GZ2vDfv0AL0NwpStafjWCDDdn0k8wgFMWpVAqG7oJhxHnlud42i9w==" + "resolved" "https://registry.npmjs.org/isurl/-/isurl-1.0.0.tgz" + "version" "1.0.0" + dependencies: + "has-to-string-tag-x" "^1.2.0" + "is-object" "^1.0.1" + +"java-invoke-local@0.0.6": + "integrity" "sha512-gZmQKe1QrfkkMjCn8Qv9cpyJFyogTYqkP5WCobX5RNaHsJzIV/6NvAnlnouOcwKr29QrxLGDGcqYuJ+ae98s1A==" + "resolved" "https://registry.npmjs.org/java-invoke-local/-/java-invoke-local-0.0.6.tgz" + "version" "0.0.6" + +"jmespath@0.15.0": + "integrity" "sha1-o/Iiqarp+Wb10nx5ZRDigJF2Qhc=" + "resolved" "https://registry.npmjs.org/jmespath/-/jmespath-0.15.0.tgz" + "version" "0.15.0" + +"js-sha3@^0.5.7": + "integrity" "sha1-DU/9gALVMzqrr0oj7tL2N0yfKOc=" + "resolved" "https://registry.npmjs.org/js-sha3/-/js-sha3-0.5.7.tgz" + "version" "0.5.7" + +"js-sha3@^0.8.0": + "integrity" "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==" + "resolved" "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz" + "version" "0.8.0" + +"js-sha3@0.5.7": + "integrity" "sha1-DU/9gALVMzqrr0oj7tL2N0yfKOc=" + "resolved" "https://registry.npmjs.org/js-sha3/-/js-sha3-0.5.7.tgz" + "version" "0.5.7" + +"js-string-escape@^1.0.1": + "integrity" "sha1-4mJbrbwNZ8dTPp7cEGjFh65BN+8=" + "resolved" "https://registry.npmjs.org/js-string-escape/-/js-string-escape-1.0.1.tgz" + "version" "1.0.1" + +"jsbn@~0.1.0": + "integrity" "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" + "resolved" "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz" + "version" "0.1.1" + +"json-buffer@3.0.0": + "integrity" "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=" + "resolved" "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz" + "version" "3.0.0" + +"json-schema-traverse@^0.4.1": + "integrity" "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + "resolved" "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz" + "version" "0.4.1" + +"json-schema@0.2.3": + "integrity" "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" + "resolved" "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz" + "version" "0.2.3" + +"json-stringify-safe@~5.0.1": + "integrity" "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" + "resolved" "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz" + "version" "5.0.1" + +"jsonfile@^4.0.0": + "integrity" "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=" + "resolved" "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz" + "version" "4.0.0" + optionalDependencies: + "graceful-fs" "^4.1.6" + +"jsonpath-plus@^3.0.0": + "integrity" "sha512-WQwgWEBgn+SJU1tlDa/GiY5/ngRpa9yrSj8n4BYPHcwoxTDaMEaYCHMOn42hIHHDd3CrUoRr3+HpsK0hCKoxzA==" + "resolved" "https://registry.npmjs.org/jsonpath-plus/-/jsonpath-plus-3.0.0.tgz" + "version" "3.0.0" + +"jsonschema@^1.2.6": + "integrity" "sha512-SqhURKZG07JyKKeo/ir24QnS4/BV7a6gQy93bUSe4lUdNp0QNpIz2c9elWJQ9dpc5cQYY6cvCzgRwy0MQCLyqA==" + "resolved" "https://registry.npmjs.org/jsonschema/-/jsonschema-1.2.6.tgz" + "version" "1.2.6" + +"jsonwebtoken@^8.5.1": + "integrity" "sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==" + "resolved" "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz" + "version" "8.5.1" + dependencies: + "jws" "^3.2.2" + "lodash.includes" "^4.3.0" + "lodash.isboolean" "^3.0.3" + "lodash.isinteger" "^4.0.4" + "lodash.isnumber" "^3.0.3" + "lodash.isplainobject" "^4.0.6" + "lodash.isstring" "^4.0.1" + "lodash.once" "^4.0.0" + "ms" "^2.1.1" + "semver" "^5.6.0" + +"jsprim@^1.2.2": + "integrity" "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=" + "resolved" "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz" + "version" "1.4.1" + dependencies: + "assert-plus" "1.0.0" + "extsprintf" "1.3.0" + "json-schema" "0.2.3" + "verror" "1.10.0" + +"jszip@^3.2.2": + "integrity" "sha512-WRtu7TPCmYePR1nazfrtuF216cIVon/3GWOvHS9QR5bIwSbnxtdpma6un3jyGGNhHsKCSzn5Ypk+EkDRvTGiFA==" + "resolved" "https://registry.npmjs.org/jszip/-/jszip-3.5.0.tgz" + "version" "3.5.0" + dependencies: + "lie" "~3.3.0" + "pako" "~1.0.2" + "readable-stream" "~2.3.6" + "set-immediate-shim" "~1.0.1" + +"jwa@^1.4.1": + "integrity" "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==" + "resolved" "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz" + "version" "1.4.1" + dependencies: + "buffer-equal-constant-time" "1.0.1" + "ecdsa-sig-formatter" "1.0.11" + "safe-buffer" "^5.0.1" + +"jws@^3.2.2": + "integrity" "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==" + "resolved" "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz" + "version" "3.2.2" + dependencies: + "jwa" "^1.4.1" + "safe-buffer" "^5.0.1" + +"keccak@^3.0.0": + "integrity" "sha512-epq90L9jlFWCW7+pQa6JOnKn2Xgl2mtI664seYR6MHskvI9agt7AnDqmAlp9TqU4/caMYbA08Hi5DMZAl5zdkA==" + "resolved" "https://registry.npmjs.org/keccak/-/keccak-3.0.1.tgz" + "version" "3.0.1" + dependencies: + "node-addon-api" "^2.0.0" + "node-gyp-build" "^4.2.0" + +"keyv@^3.0.0": + "integrity" "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==" + "resolved" "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz" + "version" "3.1.0" + dependencies: + "json-buffer" "3.0.0" + +"latest-version@^5.0.0": + "integrity" "sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==" + "resolved" "https://registry.npmjs.org/latest-version/-/latest-version-5.1.0.tgz" + "version" "5.1.0" + dependencies: + "package-json" "^6.3.0" + +"lie@~3.3.0": + "integrity" "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==" + "resolved" "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz" + "version" "3.3.0" + dependencies: + "immediate" "~3.0.5" + +"lodash.includes@^4.3.0": + "integrity" "sha1-YLuYqHy5I8aMoeUTJUgzFISfVT8=" + "resolved" "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz" + "version" "4.3.0" + +"lodash.isboolean@^3.0.3": + "integrity" "sha1-bC4XHbKiV82WgC/UOwGyDV9YcPY=" + "resolved" "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz" + "version" "3.0.3" + +"lodash.isinteger@^4.0.4": + "integrity" "sha1-YZwK89A/iwTDH1iChAt3sRzWg0M=" + "resolved" "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz" + "version" "4.0.4" + +"lodash.isnumber@^3.0.3": + "integrity" "sha1-POdoEMWSjQM1IwGsKHMX8RwLH/w=" + "resolved" "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz" + "version" "3.0.3" + +"lodash.isplainobject@^4.0.6": + "integrity" "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=" + "resolved" "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz" + "version" "4.0.6" + +"lodash.isstring@^4.0.1": + "integrity" "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=" + "resolved" "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz" + "version" "4.0.1" + +"lodash.once@^4.0.0": + "integrity" "sha1-DdOXEhPHxW34gJd9UEyI+0cal6w=" + "resolved" "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz" + "version" "4.1.1" + +"lodash@^4.17.14", "lodash@^4.17.20": + "integrity" "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==" + "resolved" "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz" + "version" "4.17.20" + +"long-timeout@0.1.1": + "integrity" "sha1-lyHXiLR+C8taJMLivuGg2lXatRQ=" + "resolved" "https://registry.npmjs.org/long-timeout/-/long-timeout-0.1.1.tgz" + "version" "0.1.1" + +"lowercase-keys@^1.0.0", "lowercase-keys@^1.0.1": + "integrity" "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==" + "resolved" "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz" + "version" "1.0.1" + +"lowercase-keys@^2.0.0": + "integrity" "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==" + "resolved" "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz" + "version" "2.0.0" + +"luxon@^1.22.0": + "integrity" "sha512-hEgLurSH8kQRjY6i4YLey+mcKVAWXbDNlZRmM6AgWDJ1cY3atl8Ztf5wEY7VBReFbmGnwQPz7KYJblL8B2k0jQ==" + "resolved" "https://registry.npmjs.org/luxon/-/luxon-1.25.0.tgz" + "version" "1.25.0" + +"make-dir@^3.0.0": + "integrity" "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==" + "resolved" "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz" + "version" "3.1.0" + dependencies: + "semver" "^6.0.0" + +"map-age-cleaner@^0.1.3": + "integrity" "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==" + "resolved" "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz" + "version" "0.1.3" + dependencies: + "p-defer" "^1.0.0" + +"md5.js@^1.3.4": + "integrity" "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==" + "resolved" "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz" + "version" "1.3.5" + dependencies: + "hash-base" "^3.0.0" + "inherits" "^2.0.1" + "safe-buffer" "^5.1.2" + +"media-typer@0.3.0": + "integrity" "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" + "resolved" "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz" + "version" "0.3.0" + +"mem@^6.0.1": + "integrity" "sha512-Ci6bIfq/UgcxPTYa8dQQ5FY3BzKkT894bwXWXxC/zqs0XgMO2cT20CGkOqda7gZNkmK5VP4x89IGZ6K7hfbn3Q==" + "resolved" "https://registry.npmjs.org/mem/-/mem-6.1.1.tgz" + "version" "6.1.1" + dependencies: + "map-age-cleaner" "^0.1.3" + "mimic-fn" "^3.0.0" + +"memory-pager@^1.0.2": + "integrity" "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==" + "resolved" "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz" + "version" "1.5.0" + +"merge-descriptors@1.0.1": + "integrity" "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" + "resolved" "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz" + "version" "1.0.1" + +"merge-stream@^2.0.0": + "integrity" "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" + "resolved" "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz" + "version" "2.0.0" + +"methods@~1.1.2": + "integrity" "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" + "resolved" "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz" + "version" "1.1.2" + +"miller-rabin@^4.0.0": + "integrity" "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==" + "resolved" "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz" + "version" "4.0.1" + dependencies: + "bn.js" "^4.0.0" + "brorand" "^1.0.1" + +"mime-db@1.44.0", "mime-db@1.x.x": + "integrity" "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==" + "resolved" "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz" + "version" "1.44.0" + +"mime-types@^2.1.12", "mime-types@^2.1.16", "mime-types@~2.1.19", "mime-types@~2.1.24": + "integrity" "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==" + "resolved" "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz" + "version" "2.1.27" + dependencies: + "mime-db" "1.44.0" + +"mime@1.6.0": + "integrity" "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" + "resolved" "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz" + "version" "1.6.0" + +"mimic-fn@^2.1.0": + "integrity" "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" + "resolved" "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz" + "version" "2.1.0" + +"mimic-fn@^3.0.0": + "integrity" "sha512-Ysbi9uYW9hFyfrThdDEQuykN4Ey6BuwPD2kpI5ES/nFTDn/98yxYNLZJcgUAKPT/mcrLLKaGzJR9YVxJrIdASQ==" + "resolved" "https://registry.npmjs.org/mimic-fn/-/mimic-fn-3.1.0.tgz" + "version" "3.1.0" + +"mimic-response@^1.0.0", "mimic-response@^1.0.1": + "integrity" "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==" + "resolved" "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz" + "version" "1.0.1" + +"min-document@^2.19.0": + "integrity" "sha1-e9KC4/WELtKVu3SM3Z8f+iyCRoU=" + "resolved" "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz" + "version" "2.19.0" + dependencies: + "dom-walk" "^0.1.0" + +"minimalistic-assert@^1.0.0", "minimalistic-assert@^1.0.1": + "integrity" "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" + "resolved" "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz" + "version" "1.0.1" + +"minimalistic-crypto-utils@^1.0.0", "minimalistic-crypto-utils@^1.0.1": + "integrity" "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=" + "resolved" "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz" + "version" "1.0.1" + +"minimist@^1.2.0", "minimist@^1.2.5": + "integrity" "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" + "resolved" "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz" + "version" "1.2.5" + +"minipass@^2.6.0", "minipass@^2.8.6", "minipass@^2.9.0": + "integrity" "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==" + "resolved" "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz" + "version" "2.9.0" + dependencies: + "safe-buffer" "^5.1.2" + "yallist" "^3.0.0" + +"minizlib@^1.2.1": + "integrity" "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==" + "resolved" "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz" + "version" "1.3.3" + dependencies: + "minipass" "^2.9.0" + +"mkdirp-promise@^5.0.1": + "integrity" "sha1-6bj2jlUsaKnBcTuEiD96HdA5uKE=" + "resolved" "https://registry.npmjs.org/mkdirp-promise/-/mkdirp-promise-5.0.1.tgz" + "version" "5.0.1" + dependencies: + "mkdirp" "*" + +"mkdirp@*": + "integrity" "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==" + "resolved" "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz" + "version" "1.0.4" + +"mkdirp@^0.5.0": + "integrity" "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==" + "resolved" "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz" + "version" "0.5.5" + dependencies: + "minimist" "^1.2.5" + +"mkdirp@^0.5.5": + "integrity" "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==" + "resolved" "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz" + "version" "0.5.5" + dependencies: + "minimist" "^1.2.5" + +"mock-fs@^4.1.0": + "integrity" "sha512-DD0vOdofJdoaRNtnWcrXe6RQbpHkPPmtqGq14uRX0F8ZKJ5nv89CVTYl/BZdppDxBDaV0hl75htg3abpEWlPZA==" + "resolved" "https://registry.npmjs.org/mock-fs/-/mock-fs-4.13.0.tgz" + "version" "4.13.0" + +"moment-timezone@^0.5.31": + "integrity" "sha512-+GgHNg8xRhMXfEbv81iDtrVeTcWt0kWmTEY1XQK14dICTXnWJnT0dxdlPspwqF3keKMVPXwayEsk1DI0AA/jdA==" + "resolved" "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.31.tgz" + "version" "0.5.31" + dependencies: + "moment" ">= 2.9.0" + +"moment@^2.28.0", "moment@>= 2.9.0": + "version" "2.28.0" + +"mongodb@^3.6.3": + "version" "3.6.3" + dependencies: + "bl" "^2.2.1" + "bson" "^1.1.4" + "denque" "^1.4.1" + "require_optional" "^1.0.1" + "safe-buffer" "^5.1.2" optionalDependencies: - graceful-fs "^4.1.6" - -jsonpath-plus@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/jsonpath-plus/-/jsonpath-plus-3.0.0.tgz#194ab4792a5e9b4ed27bf442188c8eb7e697a04b" - integrity sha512-WQwgWEBgn+SJU1tlDa/GiY5/ngRpa9yrSj8n4BYPHcwoxTDaMEaYCHMOn42hIHHDd3CrUoRr3+HpsK0hCKoxzA== - -jsonschema@^1.2.6: - version "1.2.6" - resolved "https://registry.yarnpkg.com/jsonschema/-/jsonschema-1.2.6.tgz#52b0a8e9dc06bbae7295249d03e4b9faee8a0c0b" - integrity sha512-SqhURKZG07JyKKeo/ir24QnS4/BV7a6gQy93bUSe4lUdNp0QNpIz2c9elWJQ9dpc5cQYY6cvCzgRwy0MQCLyqA== - -jsonwebtoken@^8.5.1: - version "8.5.1" - resolved "https://registry.yarnpkg.com/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz#00e71e0b8df54c2121a1f26137df2280673bcc0d" - integrity sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w== - dependencies: - jws "^3.2.2" - lodash.includes "^4.3.0" - lodash.isboolean "^3.0.3" - lodash.isinteger "^4.0.4" - lodash.isnumber "^3.0.3" - lodash.isplainobject "^4.0.6" - lodash.isstring "^4.0.1" - lodash.once "^4.0.0" - ms "^2.1.1" - semver "^5.6.0" - -jsprim@^1.2.2: - version "1.4.1" - resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" - integrity sha1-MT5mvB5cwG5Di8G3SZwuXFastqI= - dependencies: - assert-plus "1.0.0" - extsprintf "1.3.0" - json-schema "0.2.3" - verror "1.10.0" - -jszip@^3.2.2: - version "3.5.0" - resolved "https://registry.yarnpkg.com/jszip/-/jszip-3.5.0.tgz#b4fd1f368245346658e781fec9675802489e15f6" - integrity sha512-WRtu7TPCmYePR1nazfrtuF216cIVon/3GWOvHS9QR5bIwSbnxtdpma6un3jyGGNhHsKCSzn5Ypk+EkDRvTGiFA== - dependencies: - lie "~3.3.0" - pako "~1.0.2" - readable-stream "~2.3.6" - set-immediate-shim "~1.0.1" - -jwa@^1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/jwa/-/jwa-1.4.1.tgz#743c32985cb9e98655530d53641b66c8645b039a" - integrity sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA== - dependencies: - buffer-equal-constant-time "1.0.1" - ecdsa-sig-formatter "1.0.11" - safe-buffer "^5.0.1" - -jws@^3.2.2: - version "3.2.2" - resolved "https://registry.yarnpkg.com/jws/-/jws-3.2.2.tgz#001099f3639468c9414000e99995fa52fb478304" - integrity sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA== - dependencies: - jwa "^1.4.1" - safe-buffer "^5.0.1" - -keccak@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/keccak/-/keccak-3.0.1.tgz#ae30a0e94dbe43414f741375cff6d64c8bea0bff" - integrity sha512-epq90L9jlFWCW7+pQa6JOnKn2Xgl2mtI664seYR6MHskvI9agt7AnDqmAlp9TqU4/caMYbA08Hi5DMZAl5zdkA== - dependencies: - node-addon-api "^2.0.0" - node-gyp-build "^4.2.0" - -keyv@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/keyv/-/keyv-3.1.0.tgz#ecc228486f69991e49e9476485a5be1e8fc5c4d9" - integrity sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA== - dependencies: - json-buffer "3.0.0" - -latest-version@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-5.1.0.tgz#119dfe908fe38d15dfa43ecd13fa12ec8832face" - integrity sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA== - dependencies: - package-json "^6.3.0" - -lie@~3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/lie/-/lie-3.3.0.tgz#dcf82dee545f46074daf200c7c1c5a08e0f40f6a" - integrity sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ== - dependencies: - immediate "~3.0.5" - -lodash.includes@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/lodash.includes/-/lodash.includes-4.3.0.tgz#60bb98a87cb923c68ca1e51325483314849f553f" - integrity sha1-YLuYqHy5I8aMoeUTJUgzFISfVT8= - -lodash.isboolean@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz#6c2e171db2a257cd96802fd43b01b20d5f5870f6" - integrity sha1-bC4XHbKiV82WgC/UOwGyDV9YcPY= - -lodash.isinteger@^4.0.4: - version "4.0.4" - resolved "https://registry.yarnpkg.com/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz#619c0af3d03f8b04c31f5882840b77b11cd68343" - integrity sha1-YZwK89A/iwTDH1iChAt3sRzWg0M= - -lodash.isnumber@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz#3ce76810c5928d03352301ac287317f11c0b1ffc" - integrity sha1-POdoEMWSjQM1IwGsKHMX8RwLH/w= - -lodash.isplainobject@^4.0.6: - version "4.0.6" - resolved "https://registry.yarnpkg.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz#7c526a52d89b45c45cc690b88163be0497f550cb" - integrity sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs= - -lodash.isstring@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/lodash.isstring/-/lodash.isstring-4.0.1.tgz#d527dfb5456eca7cc9bb95d5daeaf88ba54a5451" - integrity sha1-1SfftUVuynzJu5XV2ur4i6VKVFE= - -lodash.once@^4.0.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/lodash.once/-/lodash.once-4.1.1.tgz#0dd3971213c7c56df880977d504c88fb471a97ac" - integrity sha1-DdOXEhPHxW34gJd9UEyI+0cal6w= - -lodash@^4.17.14: - version "4.17.20" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52" - integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA== - -long-timeout@0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/long-timeout/-/long-timeout-0.1.1.tgz#9721d788b47e0bcb5a24c2e2bee1a0da55dab514" - integrity sha1-lyHXiLR+C8taJMLivuGg2lXatRQ= - -lowercase-keys@^1.0.0, lowercase-keys@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f" - integrity sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA== - -lowercase-keys@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479" - integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA== - -luxon@^1.22.0: - version "1.25.0" - resolved "https://registry.yarnpkg.com/luxon/-/luxon-1.25.0.tgz#d86219e90bc0102c0eb299d65b2f5e95efe1fe72" - integrity sha512-hEgLurSH8kQRjY6i4YLey+mcKVAWXbDNlZRmM6AgWDJ1cY3atl8Ztf5wEY7VBReFbmGnwQPz7KYJblL8B2k0jQ== - -make-dir@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" - integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== - dependencies: - semver "^6.0.0" - -map-age-cleaner@^0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz#7d583a7306434c055fe474b0f45078e6e1b4b92a" - integrity sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w== - dependencies: - p-defer "^1.0.0" - -md5.js@^1.3.4: - version "1.3.5" - resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" - integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== - dependencies: - hash-base "^3.0.0" - inherits "^2.0.1" - safe-buffer "^5.1.2" - -media-typer@0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" - integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= - -mem@^6.0.1: - version "6.1.1" - resolved "https://registry.yarnpkg.com/mem/-/mem-6.1.1.tgz#ea110c2ebc079eca3022e6b08c85a795e77f6318" - integrity sha512-Ci6bIfq/UgcxPTYa8dQQ5FY3BzKkT894bwXWXxC/zqs0XgMO2cT20CGkOqda7gZNkmK5VP4x89IGZ6K7hfbn3Q== - dependencies: - map-age-cleaner "^0.1.3" - mimic-fn "^3.0.0" - -merge-descriptors@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" - integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E= - -merge-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" - integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== - -methods@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" - integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= - -miller-rabin@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" - integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA== - dependencies: - bn.js "^4.0.0" - brorand "^1.0.1" - -mime-db@1.44.0, mime-db@1.x.x: - version "1.44.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.44.0.tgz#fa11c5eb0aca1334b4233cb4d52f10c5a6272f92" - integrity sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg== - -mime-types@^2.1.12, mime-types@^2.1.16, mime-types@~2.1.19, mime-types@~2.1.24: - version "2.1.27" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.27.tgz#47949f98e279ea53119f5722e0f34e529bec009f" - integrity sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w== - dependencies: - mime-db "1.44.0" - -mime@1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" - integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== - -mimic-fn@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" - integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== - -mimic-fn@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-3.1.0.tgz#65755145bbf3e36954b949c16450427451d5ca74" - integrity sha512-Ysbi9uYW9hFyfrThdDEQuykN4Ey6BuwPD2kpI5ES/nFTDn/98yxYNLZJcgUAKPT/mcrLLKaGzJR9YVxJrIdASQ== - -mimic-response@^1.0.0, mimic-response@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" - integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ== - -min-document@^2.19.0: - version "2.19.0" - resolved "https://registry.yarnpkg.com/min-document/-/min-document-2.19.0.tgz#7bd282e3f5842ed295bb748cdd9f1ffa2c824685" - integrity sha1-e9KC4/WELtKVu3SM3Z8f+iyCRoU= - dependencies: - dom-walk "^0.1.0" - -minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" - integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== - -minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" - integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= - -minimist@^1.2.0, minimist@^1.2.5: - version "1.2.5" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" - integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== - -minipass@^2.6.0, minipass@^2.8.6, minipass@^2.9.0: - version "2.9.0" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.9.0.tgz#e713762e7d3e32fed803115cf93e04bca9fcc9a6" - integrity sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg== - dependencies: - safe-buffer "^5.1.2" - yallist "^3.0.0" - -minizlib@^1.2.1: - version "1.3.3" - resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.3.3.tgz#2290de96818a34c29551c8a8d301216bd65a861d" - integrity sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q== - dependencies: - minipass "^2.9.0" - -mkdirp-promise@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/mkdirp-promise/-/mkdirp-promise-5.0.1.tgz#e9b8f68e552c68a9c1713b84883f7a1dd039b8a1" - integrity sha1-6bj2jlUsaKnBcTuEiD96HdA5uKE= - dependencies: - mkdirp "*" - -mkdirp@*: - version "1.0.4" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" - integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== - -mkdirp@^0.5.0, mkdirp@^0.5.5: - version "0.5.5" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" - integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== - dependencies: - minimist "^1.2.5" - -mock-fs@^4.1.0: - version "4.13.0" - resolved "https://registry.yarnpkg.com/mock-fs/-/mock-fs-4.13.0.tgz#31c02263673ec3789f90eb7b6963676aa407a598" - integrity sha512-DD0vOdofJdoaRNtnWcrXe6RQbpHkPPmtqGq14uRX0F8ZKJ5nv89CVTYl/BZdppDxBDaV0hl75htg3abpEWlPZA== - -moment-timezone@^0.5.31: - version "0.5.31" - resolved "https://registry.yarnpkg.com/moment-timezone/-/moment-timezone-0.5.31.tgz#9c40d8c5026f0c7ab46eda3d63e49c155148de05" - integrity sha512-+GgHNg8xRhMXfEbv81iDtrVeTcWt0kWmTEY1XQK14dICTXnWJnT0dxdlPspwqF3keKMVPXwayEsk1DI0AA/jdA== - dependencies: - moment ">= 2.9.0" - -"moment@>= 2.9.0": - version "2.27.0" - resolved "https://registry.yarnpkg.com/moment/-/moment-2.27.0.tgz#8bff4e3e26a236220dfe3e36de756b6ebaa0105d" - integrity sha512-al0MUK7cpIcglMv3YF13qSgdAIqxHTO7brRtaz3DlSULbqfazqkc5kEjNrLDOM7fsjshoFIihnU8snrP7zUvhQ== - -ms@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" - integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= - -ms@2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" - integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== - -ms@^2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" - integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== - -multibase@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/multibase/-/multibase-0.7.0.tgz#1adfc1c50abe05eefeb5091ac0c2728d6b84581b" - integrity sha512-TW8q03O0f6PNFTQDvh3xxH03c8CjGaaYrjkl9UQPG6rz53TQzzxJVCIWVjzcbN/Q5Y53Zd0IBQBMVktVgNx4Fg== - dependencies: - base-x "^3.0.8" - buffer "^5.5.0" - -multibase@~0.6.0: - version "0.6.1" - resolved "https://registry.yarnpkg.com/multibase/-/multibase-0.6.1.tgz#b76df6298536cc17b9f6a6db53ec88f85f8cc12b" - integrity sha512-pFfAwyTjbbQgNc3G7D48JkJxWtoJoBMaR4xQUOuB8RnCgRqaYmWNFeJTTvrJ2w51bjLq2zTby6Rqj9TQ9elSUw== - dependencies: - base-x "^3.0.8" - buffer "^5.5.0" - -multicodec@^0.5.5: - version "0.5.7" - resolved "https://registry.yarnpkg.com/multicodec/-/multicodec-0.5.7.tgz#1fb3f9dd866a10a55d226e194abba2dcc1ee9ffd" - integrity sha512-PscoRxm3f+88fAtELwUnZxGDkduE2HD9Q6GHUOywQLjOGT/HAdhjLDYNZ1e7VR0s0TP0EwZ16LNUTFpoBGivOA== - dependencies: - varint "^5.0.0" - -multicodec@^1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/multicodec/-/multicodec-1.0.4.tgz#46ac064657c40380c28367c90304d8ed175a714f" - integrity sha512-NDd7FeS3QamVtbgfvu5h7fd1IlbaC4EQ0/pgU4zqE2vdHCmBGsUa0TiM8/TdSeG6BMPC92OOCf8F1ocE/Wkrrg== - dependencies: - buffer "^5.6.0" - varint "^5.0.0" - -multihashes@^0.4.15, multihashes@~0.4.15: - version "0.4.21" - resolved "https://registry.yarnpkg.com/multihashes/-/multihashes-0.4.21.tgz#dc02d525579f334a7909ade8a122dabb58ccfcb5" - integrity sha512-uVSvmeCWf36pU2nB4/1kzYZjsXD9vofZKpgudqkceYY5g2aZZXJ5r9lxuzoRLl1OAp28XljXsEJ/X/85ZsKmKw== - dependencies: - buffer "^5.5.0" - multibase "^0.7.0" - varint "^5.0.0" - -nano-json-stream-parser@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/nano-json-stream-parser/-/nano-json-stream-parser-0.1.2.tgz#0cc8f6d0e2b622b479c40d499c46d64b755c6f5f" - integrity sha1-DMj20OK2IrR5xA1JnEbWS3Vcb18= - -negotiator@0.6.2: - version "0.6.2" - resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" - integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== - -next-tick@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.0.0.tgz#ca86d1fe8828169b0120208e3dc8424b9db8342c" - integrity sha1-yobR/ogoFpsBICCOPchCS524NCw= - -node-addon-api@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-2.0.2.tgz#432cfa82962ce494b132e9d72a15b29f71ff5d32" - integrity sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA== - -node-fetch@^2.6.0, node-fetch@^2.6.1: - version "2.6.1" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052" - integrity sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw== - -node-gyp-build@^4.2.0: - version "4.2.3" - resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.2.3.tgz#ce6277f853835f718829efb47db20f3e4d9c4739" - integrity sha512-MN6ZpzmfNCRM+3t57PTJHgHyw/h4OWnZ6mR8P5j/uZtqQr46RRuDE/P+g3n0YR/AiYXeWixZZzaip77gdICfRg== - -node-gyp-build@~3.7.0: - version "3.7.0" - resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-3.7.0.tgz#daa77a4f547b9aed3e2aac779eaf151afd60ec8d" - integrity sha512-L/Eg02Epx6Si2NXmedx+Okg+4UHqmaf3TNcxd50SF9NQGcJaON3AtU++kax69XV7YWz4tUspqZSAsVofhFKG2w== - -node-schedule@^1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/node-schedule/-/node-schedule-1.3.2.tgz#d774b383e2a6f6ade59eecc62254aea07cd758cb" - integrity sha512-GIND2pHMHiReSZSvS6dpZcDH7pGPGFfWBIEud6S00Q8zEIzAs9ommdyRK1ZbQt8y1LyZsJYZgPnyi7gpU2lcdw== - dependencies: - cron-parser "^2.7.3" - long-timeout "0.1.1" - sorted-array-functions "^1.0.0" - -normalize-url@^4.1.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-4.5.0.tgz#453354087e6ca96957bd8f5baf753f5982142129" - integrity sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ== - -npm-run-path@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" - integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== - dependencies: - path-key "^3.0.0" - -number-to-bn@1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/number-to-bn/-/number-to-bn-1.7.0.tgz#bb3623592f7e5f9e0030b1977bd41a0c53fe1ea0" - integrity sha1-uzYjWS9+X54AMLGXe9QaDFP+HqA= - dependencies: - bn.js "4.11.6" - strip-hex-prefix "1.0.0" - -oauth-sign@~0.9.0: - version "0.9.0" - resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" - integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== - -object-assign@^4, object-assign@^4.1.0, object-assign@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" - integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= - -object-inspect@^1.7.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.8.0.tgz#df807e5ecf53a609cc6bfe93eac3cc7be5b3a9d0" - integrity sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA== - -object-keys@^1.0.11, object-keys@^1.0.12, object-keys@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" - integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== - -object.assign@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da" - integrity sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w== - dependencies: - define-properties "^1.1.2" - function-bind "^1.1.1" - has-symbols "^1.0.0" - object-keys "^1.0.11" - -object.fromentries@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.2.tgz#4a09c9b9bb3843dd0f89acdb517a794d4f355ac9" - integrity sha512-r3ZiBH7MQppDJVLx6fhD618GKNG40CZYH9wgwdhKxBDDbQgjeWGGd4AtkZad84d291YxvWe7bJGuE65Anh0dxQ== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.0-next.1" - function-bind "^1.1.1" - has "^1.0.3" - -oboe@2.1.4: - version "2.1.4" - resolved "https://registry.yarnpkg.com/oboe/-/oboe-2.1.4.tgz#20c88cdb0c15371bb04119257d4fdd34b0aa49f6" - integrity sha1-IMiM2wwVNxuwQRklfU/dNLCqSfY= - dependencies: - http-https "^1.0.0" - -on-finished@~2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" - integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc= - dependencies: - ee-first "1.1.1" - -once@^1.3.1, once@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= - dependencies: - wrappy "1" - -onetime@^5.1.0: - version "5.1.2" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" - integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== - dependencies: - mimic-fn "^2.1.0" - -p-cancelable@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-0.3.0.tgz#b9e123800bcebb7ac13a479be195b507b98d30fa" - integrity sha512-RVbZPLso8+jFeq1MfNvgXtCRED2raz/dKpacfTNxsx6pLEpEomM7gah6VeHSYV3+vo0OAi4MkArtQcWWXuQoyw== - -p-cancelable@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-1.1.0.tgz#d078d15a3af409220c886f1d9a0ca2e441ab26cc" - integrity sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw== - -p-defer@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c" - integrity sha1-n26xgvbJqozXQwBKfU+WsZaw+ww= - -p-finally@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" - integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= - -p-memoize@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/p-memoize/-/p-memoize-4.0.0.tgz#1f955b6c38aaa4b74d243e354eae51a7ecb48e94" - integrity sha512-oMxCJKVS75Bf2RWtXJNQNaX2K1G0FYpllOh2iTsPXZqnf9dWMcis3BL+pRdLeQY8lIdwwL01k/UV5LBdcVhZzg== - dependencies: - mem "^6.0.1" - mimic-fn "^3.0.0" - -p-queue@^6.3.0: - version "6.6.1" - resolved "https://registry.yarnpkg.com/p-queue/-/p-queue-6.6.1.tgz#578891ada028a61371ec2692b26614d1b7d2b10a" - integrity sha512-miQiSxLYPYBxGkrldecZC18OTLjdUqnlRebGzPRiVxB8mco7usCmm7hFuxiTvp93K18JnLtE4KMMycjAu/cQQg== - dependencies: - eventemitter3 "^4.0.4" - p-timeout "^3.1.0" - -p-retry@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-4.2.0.tgz#ea9066c6b44f23cab4cd42f6147cdbbc6604da5d" - integrity sha512-jPH38/MRh263KKcq0wBNOGFJbm+U6784RilTmHjB/HM9kH9V8WlCpVUcdOmip9cjXOh6MxZ5yk1z2SjDUJfWmA== + "saslprep" "^1.0.0" + +"ms@^2.1.1": + "integrity" "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + "resolved" "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz" + "version" "2.1.2" + +"ms@2.0.0": + "integrity" "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + "resolved" "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz" + "version" "2.0.0" + +"ms@2.1.1": + "integrity" "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" + "resolved" "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz" + "version" "2.1.1" + +"multibase@^0.7.0": + "integrity" "sha512-TW8q03O0f6PNFTQDvh3xxH03c8CjGaaYrjkl9UQPG6rz53TQzzxJVCIWVjzcbN/Q5Y53Zd0IBQBMVktVgNx4Fg==" + "resolved" "https://registry.npmjs.org/multibase/-/multibase-0.7.0.tgz" + "version" "0.7.0" + dependencies: + "base-x" "^3.0.8" + "buffer" "^5.5.0" + +"multibase@~0.6.0": + "integrity" "sha512-pFfAwyTjbbQgNc3G7D48JkJxWtoJoBMaR4xQUOuB8RnCgRqaYmWNFeJTTvrJ2w51bjLq2zTby6Rqj9TQ9elSUw==" + "resolved" "https://registry.npmjs.org/multibase/-/multibase-0.6.1.tgz" + "version" "0.6.1" + dependencies: + "base-x" "^3.0.8" + "buffer" "^5.5.0" + +"multicodec@^0.5.5": + "integrity" "sha512-PscoRxm3f+88fAtELwUnZxGDkduE2HD9Q6GHUOywQLjOGT/HAdhjLDYNZ1e7VR0s0TP0EwZ16LNUTFpoBGivOA==" + "resolved" "https://registry.npmjs.org/multicodec/-/multicodec-0.5.7.tgz" + "version" "0.5.7" + dependencies: + "varint" "^5.0.0" + +"multicodec@^1.0.0": + "integrity" "sha512-NDd7FeS3QamVtbgfvu5h7fd1IlbaC4EQ0/pgU4zqE2vdHCmBGsUa0TiM8/TdSeG6BMPC92OOCf8F1ocE/Wkrrg==" + "resolved" "https://registry.npmjs.org/multicodec/-/multicodec-1.0.4.tgz" + "version" "1.0.4" + dependencies: + "buffer" "^5.6.0" + "varint" "^5.0.0" + +"multihashes@^0.4.15", "multihashes@~0.4.15": + "integrity" "sha512-uVSvmeCWf36pU2nB4/1kzYZjsXD9vofZKpgudqkceYY5g2aZZXJ5r9lxuzoRLl1OAp28XljXsEJ/X/85ZsKmKw==" + "resolved" "https://registry.npmjs.org/multihashes/-/multihashes-0.4.21.tgz" + "version" "0.4.21" + dependencies: + "buffer" "^5.5.0" + "multibase" "^0.7.0" + "varint" "^5.0.0" + +"nano-json-stream-parser@^0.1.2": + "integrity" "sha1-DMj20OK2IrR5xA1JnEbWS3Vcb18=" + "resolved" "https://registry.npmjs.org/nano-json-stream-parser/-/nano-json-stream-parser-0.1.2.tgz" + "version" "0.1.2" + +"negotiator@0.6.2": + "integrity" "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==" + "resolved" "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz" + "version" "0.6.2" + +"next-tick@~1.0.0": + "integrity" "sha1-yobR/ogoFpsBICCOPchCS524NCw=" + "resolved" "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz" + "version" "1.0.0" + +"node-addon-api@^2.0.0": + "integrity" "sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==" + "resolved" "https://registry.npmjs.org/node-addon-api/-/node-addon-api-2.0.2.tgz" + "version" "2.0.2" + +"node-cron@^2.0.3": + "integrity" "sha512-eJI+QitXlwcgiZwNNSRbqsjeZMp5shyajMR81RZCqeW0ZDEj4zU9tpd4nTh/1JsBiKbF8d08FCewiipDmVIYjg==" + "resolved" "https://registry.npmjs.org/node-cron/-/node-cron-2.0.3.tgz" + "version" "2.0.3" + dependencies: + "opencollective-postinstall" "^2.0.0" + "tz-offset" "0.0.1" + +"node-fetch@^2.6.0", "node-fetch@^2.6.1": + "integrity" "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==" + "resolved" "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz" + "version" "2.6.1" + +"node-gyp-build@^4.2.0": + "integrity" "sha512-MN6ZpzmfNCRM+3t57PTJHgHyw/h4OWnZ6mR8P5j/uZtqQr46RRuDE/P+g3n0YR/AiYXeWixZZzaip77gdICfRg==" + "resolved" "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.2.3.tgz" + "version" "4.2.3" + +"node-gyp-build@~3.7.0": + "integrity" "sha512-L/Eg02Epx6Si2NXmedx+Okg+4UHqmaf3TNcxd50SF9NQGcJaON3AtU++kax69XV7YWz4tUspqZSAsVofhFKG2w==" + "resolved" "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-3.7.0.tgz" + "version" "3.7.0" + +"node-schedule@^1.3.2": + "integrity" "sha512-GIND2pHMHiReSZSvS6dpZcDH7pGPGFfWBIEud6S00Q8zEIzAs9ommdyRK1ZbQt8y1LyZsJYZgPnyi7gpU2lcdw==" + "resolved" "https://registry.npmjs.org/node-schedule/-/node-schedule-1.3.2.tgz" + "version" "1.3.2" + dependencies: + "cron-parser" "^2.7.3" + "long-timeout" "0.1.1" + "sorted-array-functions" "^1.0.0" + +"normalize-url@^4.1.0": + "integrity" "sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ==" + "resolved" "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.0.tgz" + "version" "4.5.0" + +"npm-run-path@^4.0.0": + "integrity" "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==" + "resolved" "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz" + "version" "4.0.1" + dependencies: + "path-key" "^3.0.0" + +"number-to-bn@1.7.0": + "integrity" "sha1-uzYjWS9+X54AMLGXe9QaDFP+HqA=" + "resolved" "https://registry.npmjs.org/number-to-bn/-/number-to-bn-1.7.0.tgz" + "version" "1.7.0" + dependencies: + "bn.js" "4.11.6" + "strip-hex-prefix" "1.0.0" + +"oauth-sign@~0.9.0": + "integrity" "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" + "resolved" "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz" + "version" "0.9.0" + +"object-assign@^4", "object-assign@^4.1.0", "object-assign@^4.1.1": + "integrity" "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + "resolved" "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz" + "version" "4.1.1" + +"object-hash@^1.1.7": + "integrity" "sha512-OSuu/pU4ENM9kmREg0BdNrUDIl1heYa4mBZacJc+vVWz4GtAwu7jO8s4AIt2aGRUTqxykpWzI3Oqnsm13tTMDA==" + "resolved" "https://registry.npmjs.org/object-hash/-/object-hash-1.3.1.tgz" + "version" "1.3.1" + +"object-inspect@^1.7.0", "object-inspect@^1.8.0": + "integrity" "sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA==" + "resolved" "https://registry.npmjs.org/object-inspect/-/object-inspect-1.8.0.tgz" + "version" "1.8.0" + +"object-keys@^1.0.12", "object-keys@^1.1.1": + "integrity" "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" + "resolved" "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz" + "version" "1.1.1" + +"object.assign@^4.1.0": + "version" "4.1.1" + dependencies: + "define-properties" "^1.1.3" + "es-abstract" "^1.18.0-next.0" + "has-symbols" "^1.0.1" + "object-keys" "^1.1.1" + +"object.fromentries@^2.0.2": + "integrity" "sha512-r3ZiBH7MQppDJVLx6fhD618GKNG40CZYH9wgwdhKxBDDbQgjeWGGd4AtkZad84d291YxvWe7bJGuE65Anh0dxQ==" + "resolved" "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.2.tgz" + "version" "2.0.2" + dependencies: + "define-properties" "^1.1.3" + "es-abstract" "^1.17.0-next.1" + "function-bind" "^1.1.1" + "has" "^1.0.3" + +"oboe@2.1.5": + "integrity" "sha1-VVQoTFQ6ImbXo48X4HOCH73jk80=" + "resolved" "https://registry.npmjs.org/oboe/-/oboe-2.1.5.tgz" + "version" "2.1.5" + dependencies: + "http-https" "^1.0.0" + +"on-finished@~2.3.0": + "integrity" "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=" + "resolved" "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz" + "version" "2.3.0" + dependencies: + "ee-first" "1.1.1" + +"once@^1.3.1", "once@^1.4.0": + "integrity" "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=" + "resolved" "https://registry.npmjs.org/once/-/once-1.4.0.tgz" + "version" "1.4.0" + dependencies: + "wrappy" "1" + +"onetime@^5.1.0": + "integrity" "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==" + "resolved" "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz" + "version" "5.1.2" + dependencies: + "mimic-fn" "^2.1.0" + +"opencollective-postinstall@^2.0.0": + "integrity" "sha512-8AV/sCtuzUeTo8gQK5qDZzARrulB3egtLzFgteqB2tcT4Mw7B8Kt7JcDHmltjz6FOAHsvTevk70gZEbhM4ZS9Q==" + "resolved" "https://registry.npmjs.org/opencollective-postinstall/-/opencollective-postinstall-2.0.3.tgz" + "version" "2.0.3" + +"p-cancelable@^0.3.0": + "integrity" "sha512-RVbZPLso8+jFeq1MfNvgXtCRED2raz/dKpacfTNxsx6pLEpEomM7gah6VeHSYV3+vo0OAi4MkArtQcWWXuQoyw==" + "resolved" "https://registry.npmjs.org/p-cancelable/-/p-cancelable-0.3.0.tgz" + "version" "0.3.0" + +"p-cancelable@^1.0.0": + "integrity" "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==" + "resolved" "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz" + "version" "1.1.0" + +"p-defer@^1.0.0": + "integrity" "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=" + "resolved" "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz" + "version" "1.0.0" + +"p-finally@^1.0.0": + "integrity" "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=" + "resolved" "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz" + "version" "1.0.0" + +"p-memoize@^4.0.0": + "integrity" "sha512-oMxCJKVS75Bf2RWtXJNQNaX2K1G0FYpllOh2iTsPXZqnf9dWMcis3BL+pRdLeQY8lIdwwL01k/UV5LBdcVhZzg==" + "resolved" "https://registry.npmjs.org/p-memoize/-/p-memoize-4.0.0.tgz" + "version" "4.0.0" + dependencies: + "mem" "^6.0.1" + "mimic-fn" "^3.0.0" + +"p-queue@^6.3.0": + "integrity" "sha512-miQiSxLYPYBxGkrldecZC18OTLjdUqnlRebGzPRiVxB8mco7usCmm7hFuxiTvp93K18JnLtE4KMMycjAu/cQQg==" + "resolved" "https://registry.npmjs.org/p-queue/-/p-queue-6.6.1.tgz" + "version" "6.6.1" + dependencies: + "eventemitter3" "^4.0.4" + "p-timeout" "^3.1.0" + +"p-retry@^4.2.0": + "integrity" "sha512-jPH38/MRh263KKcq0wBNOGFJbm+U6784RilTmHjB/HM9kH9V8WlCpVUcdOmip9cjXOh6MxZ5yk1z2SjDUJfWmA==" + "resolved" "https://registry.npmjs.org/p-retry/-/p-retry-4.2.0.tgz" + "version" "4.2.0" dependencies: "@types/retry" "^0.12.0" - retry "^0.12.0" - -p-timeout@^1.1.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-1.2.1.tgz#5eb3b353b7fce99f101a1038880bb054ebbea386" - integrity sha1-XrOzU7f86Z8QGhA4iAuwVOu+o4Y= - dependencies: - p-finally "^1.0.0" - -p-timeout@^3.1.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-3.2.0.tgz#c7e17abc971d2a7962ef83626b35d635acf23dfe" - integrity sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg== - dependencies: - p-finally "^1.0.0" - -package-json@^6.3.0: - version "6.5.0" - resolved "https://registry.yarnpkg.com/package-json/-/package-json-6.5.0.tgz#6feedaca35e75725876d0b0e64974697fed145b0" - integrity sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ== - dependencies: - got "^9.6.0" - registry-auth-token "^4.0.0" - registry-url "^5.0.0" - semver "^6.2.0" - -pako@~1.0.2: - version "1.0.11" - resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" - integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== - -parent-module@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-2.0.0.tgz#fa71f88ff1a50c27e15d8ff74e0e3a9523bf8708" - integrity sha512-uo0Z9JJeWzv8BG+tRcapBKNJ0dro9cLyczGzulS6EfeyAdeC9sbojtW6XwvYxJkEne9En+J2XEl4zyglVeIwFg== - dependencies: - callsites "^3.1.0" - -parse-asn1@^5.0.0, parse-asn1@^5.1.5: - version "5.1.6" - resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.6.tgz#385080a3ec13cb62a62d39409cb3e88844cdaed4" - integrity sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw== - dependencies: - asn1.js "^5.2.0" - browserify-aes "^1.0.0" - evp_bytestokey "^1.0.0" - pbkdf2 "^3.0.3" - safe-buffer "^5.1.1" - -parse-headers@^2.0.0: - version "2.0.3" - resolved "https://registry.yarnpkg.com/parse-headers/-/parse-headers-2.0.3.tgz#5e8e7512383d140ba02f0c7aa9f49b4399c92515" - integrity sha512-QhhZ+DCCit2Coi2vmAKbq5RGTRcQUOE2+REgv8vdyu7MnYx2eZztegqtTx99TZ86GTIwqiy3+4nQTWZ2tgmdCA== - -parseurl@~1.3.3: - version "1.3.3" - resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" - integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== - -path-key@^3.0.0, path-key@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" - integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== - -path-to-regexp@0.1.7: - version "0.1.7" - resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" - integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w= - -pbkdf2@^3.0.17, pbkdf2@^3.0.3: - version "3.1.1" - resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.1.tgz#cb8724b0fada984596856d1a6ebafd3584654b94" - integrity sha512-4Ejy1OPxi9f2tt1rRV7Go7zmfDQ+ZectEQz3VGUQhgq62HtIRPDyG/JtnwIxs6x3uNMwo2V7q1fMvKjb+Tnpqg== - dependencies: - create-hash "^1.1.2" - create-hmac "^1.1.4" - ripemd160 "^2.0.1" - safe-buffer "^5.0.1" - sha.js "^2.4.8" - -performance-now@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" - integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= - -please-upgrade-node@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz#aeddd3f994c933e4ad98b99d9a556efa0e2fe942" - integrity sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg== - dependencies: - semver-compare "^1.0.0" - -portfinder@^1.0.25: - version "1.0.28" - resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.28.tgz#67c4622852bd5374dd1dd900f779f53462fac778" - integrity sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA== - dependencies: - async "^2.6.2" - debug "^3.1.1" - mkdirp "^0.5.5" - -prepend-http@^1.0.1: - version "1.0.4" - resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" - integrity sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw= - -prepend-http@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897" - integrity sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc= - -process-nextick-args@~2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" - integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== - -process@~0.5.1: - version "0.5.2" - resolved "https://registry.yarnpkg.com/process/-/process-0.5.2.tgz#1638d8a8e34c2f440a91db95ab9aeb677fc185cf" - integrity sha1-FjjYqONML0QKkduVq5rrZ3/Bhc8= - -proxy-addr@~2.0.5: - version "2.0.6" - resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.6.tgz#fdc2336505447d3f2f2c638ed272caf614bbb2bf" - integrity sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw== - dependencies: - forwarded "~0.1.2" - ipaddr.js "1.9.1" - -psl@^1.1.28: - version "1.8.0" - resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" - integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== - -public-encrypt@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0" - integrity sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q== - dependencies: - bn.js "^4.1.0" - browserify-rsa "^4.0.0" - create-hash "^1.1.0" - parse-asn1 "^5.0.0" - randombytes "^2.0.1" - safe-buffer "^5.1.2" - -pump@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" - integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== - dependencies: - end-of-stream "^1.1.0" - once "^1.3.1" - -punycode@1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" - integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0= - -punycode@2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.0.tgz#5f863edc89b96db09074bad7947bf09056ca4e7d" - integrity sha1-X4Y+3Im5bbCQdLrXlHvwkFbKTn0= - -punycode@^2.1.0, punycode@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" - integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== - -pupa@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/pupa/-/pupa-2.0.1.tgz#dbdc9ff48ffbea4a26a069b6f9f7abb051008726" - integrity sha512-hEJH0s8PXLY/cdXh66tNEQGndDrIKNqNC5xmrysZy3i5C3oEoLna7YAOad+7u125+zH1HNXUmGEkrhb3c2VriA== - dependencies: - escape-goat "^2.0.0" - -qs@6.7.0: - version "6.7.0" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc" - integrity sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ== - -qs@~6.5.2: - version "6.5.2" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" - integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== - -query-string@^5.0.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/query-string/-/query-string-5.1.1.tgz#a78c012b71c17e05f2e3fa2319dd330682efb3cb" - integrity sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw== - dependencies: - decode-uri-component "^0.2.0" - object-assign "^4.1.0" - strict-uri-encode "^1.0.0" - -querystring@0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" - integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= - -ramda@^0.27.1: - version "0.27.1" - resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.27.1.tgz#66fc2df3ef873874ffc2da6aa8984658abacf5c9" - integrity sha512-PgIdVpn5y5Yns8vqb8FzBUEYn98V3xcPgawAkkgj0YJ0qDsnHCiNmZYfOGMgOvoB0eWFLpYbhxUR3mxfDIMvpw== - -randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" - integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== - dependencies: - safe-buffer "^5.1.0" - -randomfill@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458" - integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw== - dependencies: - randombytes "^2.0.5" - safe-buffer "^5.1.0" - -range-parser@~1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" - integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== - -raw-body@2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.0.tgz#a1ce6fb9c9bc356ca52e89256ab59059e13d0332" - integrity sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q== - dependencies: - bytes "3.1.0" - http-errors "1.7.2" - iconv-lite "0.4.24" - unpipe "1.0.0" - -rc@^1.2.8: - version "1.2.8" - resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" - integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== - dependencies: - deep-extend "^0.6.0" - ini "~1.3.0" - minimist "^1.2.0" - strip-json-comments "~2.0.1" - -readable-stream@^3.6.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" - integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== - dependencies: - inherits "^2.0.3" - string_decoder "^1.1.1" - util-deprecate "^1.0.1" - -readable-stream@~2.3.6: - version "2.3.7" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" - integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.3" - isarray "~1.0.0" - process-nextick-args "~2.0.0" - safe-buffer "~5.1.1" - string_decoder "~1.1.1" - util-deprecate "~1.0.1" - -registry-auth-token@^4.0.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-4.2.0.tgz#1d37dffda72bbecd0f581e4715540213a65eb7da" - integrity sha512-P+lWzPrsgfN+UEpDS3U8AQKg/UjZX6mQSJueZj3EK+vNESoqBSpBUD3gmu4sF9lOsjXWjF11dQKUqemf3veq1w== - dependencies: - rc "^1.2.8" - -registry-url@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/registry-url/-/registry-url-5.1.0.tgz#e98334b50d5434b81136b44ec638d9c2009c5009" - integrity sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw== - dependencies: - rc "^1.2.8" - -request@^2.79.0: - version "2.88.2" - resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" - integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== - dependencies: - aws-sign2 "~0.7.0" - aws4 "^1.8.0" - caseless "~0.12.0" - combined-stream "~1.0.6" - extend "~3.0.2" - forever-agent "~0.6.1" - form-data "~2.3.2" - har-validator "~5.1.3" - http-signature "~1.2.0" - is-typedarray "~1.0.0" - isstream "~0.1.2" - json-stringify-safe "~5.0.1" - mime-types "~2.1.19" - oauth-sign "~0.9.0" - performance-now "^2.1.0" - qs "~6.5.2" - safe-buffer "^5.1.2" - tough-cookie "~2.5.0" - tunnel-agent "^0.6.0" - uuid "^3.3.2" - -resolve-from@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" - integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== - -responselike@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/responselike/-/responselike-1.0.2.tgz#918720ef3b631c5642be068f15ade5a46f4ba1e7" - integrity sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec= - dependencies: - lowercase-keys "^1.0.0" - -retry@^0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b" - integrity sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs= - -ripemd160@^2.0.0, ripemd160@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" - integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== - dependencies: - hash-base "^3.0.0" - inherits "^2.0.1" - -rlp@^2.2.3: - version "2.2.6" - resolved "https://registry.yarnpkg.com/rlp/-/rlp-2.2.6.tgz#c80ba6266ac7a483ef1e69e8e2f056656de2fb2c" - integrity sha512-HAfAmL6SDYNWPUOJNrM500x4Thn4PZsEy5pijPh40U9WfNk0z15hUYzO9xVIMAdIHdFtD8CBDHd75Td1g36Mjg== - dependencies: - bn.js "^4.11.1" - -safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: - version "5.1.2" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" - integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== - -safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@~5.2.0: - version "5.2.1" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" - integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== - -"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: - version "2.1.2" - resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" - integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== - -sax@1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.1.tgz#7b8e656190b228e81a66aea748480d828cd2d37a" - integrity sha1-e45lYZCyKOgaZq6nSEgNgozS03o= - -sax@>=0.6.0: - version "1.2.4" - resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" - integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== - -scrypt-js@^3.0.0, scrypt-js@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/scrypt-js/-/scrypt-js-3.0.1.tgz#d314a57c2aef69d1ad98a138a21fe9eafa9ee312" - integrity sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA== - -secp256k1@^4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/secp256k1/-/secp256k1-4.0.2.tgz#15dd57d0f0b9fdb54ac1fa1694f40e5e9a54f4a1" - integrity sha512-UDar4sKvWAksIlfX3xIaQReADn+WFnHvbVujpcbr+9Sf/69odMwy2MUsz5CKLQgX9nsIyrjuxL2imVyoNHa3fg== - dependencies: - elliptic "^6.5.2" - node-addon-api "^2.0.0" - node-gyp-build "^4.2.0" - -semver-compare@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/semver-compare/-/semver-compare-1.0.0.tgz#0dee216a1c941ab37e9efb1788f6afc5ff5537fc" - integrity sha1-De4hahyUGrN+nvsXiPavxf9VN/w= - -semver-diff@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-3.1.1.tgz#05f77ce59f325e00e2706afd67bb506ddb1ca32b" - integrity sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg== - dependencies: - semver "^6.3.0" - -semver@^5.6.0: - version "5.7.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" - integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== - -semver@^6.0.0, semver@^6.2.0, semver@^6.3.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" - integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== - -semver@^7.1.3: - version "7.3.2" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.2.tgz#604962b052b81ed0786aae84389ffba70ffd3938" - integrity sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ== - -send@0.17.1: - version "0.17.1" - resolved "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8" - integrity sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg== - dependencies: - debug "2.6.9" - depd "~1.1.2" - destroy "~1.0.4" - encodeurl "~1.0.2" - escape-html "~1.0.3" - etag "~1.8.1" - fresh "0.5.2" - http-errors "~1.7.2" - mime "1.6.0" - ms "2.1.1" - on-finished "~2.3.0" - range-parser "~1.2.1" - statuses "~1.5.0" - -serve-static@1.14.1: - version "1.14.1" - resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.14.1.tgz#666e636dc4f010f7ef29970a88a674320898b2f9" - integrity sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg== - dependencies: - encodeurl "~1.0.2" - escape-html "~1.0.3" - parseurl "~1.3.3" - send "0.17.1" - -serverless-offline@^6.7.0: - version "6.7.0" - resolved "https://registry.yarnpkg.com/serverless-offline/-/serverless-offline-6.7.0.tgz#8873630e400e8f4314e12bb339d49ddb0dc1bce4" - integrity sha512-N/5vUk8PzSzViwRjeLIM/o5LYk6NudaSEoZRlwQFSGeLuQSHZuFUvNZlCSK3e4N3gs1CLKMP0Ks1H0/jHD/8gQ== + "retry" "^0.12.0" + +"p-timeout@^1.1.1": + "integrity" "sha1-XrOzU7f86Z8QGhA4iAuwVOu+o4Y=" + "resolved" "https://registry.npmjs.org/p-timeout/-/p-timeout-1.2.1.tgz" + "version" "1.2.1" + dependencies: + "p-finally" "^1.0.0" + +"p-timeout@^3.1.0": + "integrity" "sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==" + "resolved" "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz" + "version" "3.2.0" + dependencies: + "p-finally" "^1.0.0" + +"package-json@^6.3.0": + "integrity" "sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==" + "resolved" "https://registry.npmjs.org/package-json/-/package-json-6.5.0.tgz" + "version" "6.5.0" + dependencies: + "got" "^9.6.0" + "registry-auth-token" "^4.0.0" + "registry-url" "^5.0.0" + "semver" "^6.2.0" + +"pako@~1.0.2": + "integrity" "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" + "resolved" "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz" + "version" "1.0.11" + +"parent-module@^2.0.0": + "integrity" "sha512-uo0Z9JJeWzv8BG+tRcapBKNJ0dro9cLyczGzulS6EfeyAdeC9sbojtW6XwvYxJkEne9En+J2XEl4zyglVeIwFg==" + "resolved" "https://registry.npmjs.org/parent-module/-/parent-module-2.0.0.tgz" + "version" "2.0.0" + dependencies: + "callsites" "^3.1.0" + +"parse-asn1@^5.0.0", "parse-asn1@^5.1.5": + "integrity" "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==" + "resolved" "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz" + "version" "5.1.6" + dependencies: + "asn1.js" "^5.2.0" + "browserify-aes" "^1.0.0" + "evp_bytestokey" "^1.0.0" + "pbkdf2" "^3.0.3" + "safe-buffer" "^5.1.1" + +"parse-headers@^2.0.0": + "integrity" "sha512-QhhZ+DCCit2Coi2vmAKbq5RGTRcQUOE2+REgv8vdyu7MnYx2eZztegqtTx99TZ86GTIwqiy3+4nQTWZ2tgmdCA==" + "resolved" "https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.3.tgz" + "version" "2.0.3" + +"parseurl@~1.3.3": + "integrity" "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" + "resolved" "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz" + "version" "1.3.3" + +"path-key@^3.0.0", "path-key@^3.1.0": + "integrity" "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" + "resolved" "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz" + "version" "3.1.1" + +"path-to-regexp@0.1.7": + "integrity" "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" + "resolved" "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz" + "version" "0.1.7" + +"pbkdf2@^3.0.17", "pbkdf2@^3.0.3": + "integrity" "sha512-4Ejy1OPxi9f2tt1rRV7Go7zmfDQ+ZectEQz3VGUQhgq62HtIRPDyG/JtnwIxs6x3uNMwo2V7q1fMvKjb+Tnpqg==" + "resolved" "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.1.tgz" + "version" "3.1.1" + dependencies: + "create-hash" "^1.1.2" + "create-hmac" "^1.1.4" + "ripemd160" "^2.0.1" + "safe-buffer" "^5.0.1" + "sha.js" "^2.4.8" + +"performance-now@^2.1.0": + "integrity" "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" + "resolved" "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz" + "version" "2.1.0" + +"please-upgrade-node@^3.2.0": + "integrity" "sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg==" + "resolved" "https://registry.npmjs.org/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz" + "version" "3.2.0" + dependencies: + "semver-compare" "^1.0.0" + +"portfinder@^1.0.25": + "integrity" "sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA==" + "resolved" "https://registry.npmjs.org/portfinder/-/portfinder-1.0.28.tgz" + "version" "1.0.28" + dependencies: + "async" "^2.6.2" + "debug" "^3.1.1" + "mkdirp" "^0.5.5" + +"prepend-http@^1.0.1": + "integrity" "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=" + "resolved" "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz" + "version" "1.0.4" + +"prepend-http@^2.0.0": + "integrity" "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=" + "resolved" "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz" + "version" "2.0.0" + +"process-nextick-args@~2.0.0": + "integrity" "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + "resolved" "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz" + "version" "2.0.1" + +"process@~0.5.1": + "integrity" "sha1-FjjYqONML0QKkduVq5rrZ3/Bhc8=" + "resolved" "https://registry.npmjs.org/process/-/process-0.5.2.tgz" + "version" "0.5.2" + +"proxy-addr@~2.0.5": + "integrity" "sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==" + "resolved" "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz" + "version" "2.0.6" + dependencies: + "forwarded" "~0.1.2" + "ipaddr.js" "1.9.1" + +"psl@^1.1.28": + "integrity" "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==" + "resolved" "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz" + "version" "1.8.0" + +"public-encrypt@^4.0.0": + "integrity" "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==" + "resolved" "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz" + "version" "4.0.3" + dependencies: + "bn.js" "^4.1.0" + "browserify-rsa" "^4.0.0" + "create-hash" "^1.1.0" + "parse-asn1" "^5.0.0" + "randombytes" "^2.0.1" + "safe-buffer" "^5.1.2" + +"pump@^3.0.0": + "integrity" "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==" + "resolved" "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "end-of-stream" "^1.1.0" + "once" "^1.3.1" + +"punycode@^2.1.0", "punycode@^2.1.1": + "integrity" "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" + "resolved" "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz" + "version" "2.1.1" + +"punycode@1.3.2": + "integrity" "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=" + "resolved" "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz" + "version" "1.3.2" + +"punycode@2.1.0": + "integrity" "sha1-X4Y+3Im5bbCQdLrXlHvwkFbKTn0=" + "resolved" "https://registry.npmjs.org/punycode/-/punycode-2.1.0.tgz" + "version" "2.1.0" + +"pupa@^2.0.1": + "integrity" "sha512-hEJH0s8PXLY/cdXh66tNEQGndDrIKNqNC5xmrysZy3i5C3oEoLna7YAOad+7u125+zH1HNXUmGEkrhb3c2VriA==" + "resolved" "https://registry.npmjs.org/pupa/-/pupa-2.0.1.tgz" + "version" "2.0.1" + dependencies: + "escape-goat" "^2.0.0" + +"qs@~6.5.2": + "integrity" "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" + "resolved" "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz" + "version" "6.5.2" + +"qs@6.7.0": + "integrity" "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" + "resolved" "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz" + "version" "6.7.0" + +"query-string@^5.0.1": + "integrity" "sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw==" + "resolved" "https://registry.npmjs.org/query-string/-/query-string-5.1.1.tgz" + "version" "5.1.1" + dependencies: + "decode-uri-component" "^0.2.0" + "object-assign" "^4.1.0" + "strict-uri-encode" "^1.0.0" + +"querystring@0.2.0": + "integrity" "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=" + "resolved" "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz" + "version" "0.2.0" + +"ramda@^0.27.1": + "integrity" "sha512-PgIdVpn5y5Yns8vqb8FzBUEYn98V3xcPgawAkkgj0YJ0qDsnHCiNmZYfOGMgOvoB0eWFLpYbhxUR3mxfDIMvpw==" + "resolved" "https://registry.npmjs.org/ramda/-/ramda-0.27.1.tgz" + "version" "0.27.1" + +"randombytes@^2.0.0", "randombytes@^2.0.1", "randombytes@^2.0.5", "randombytes@^2.1.0": + "integrity" "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==" + "resolved" "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz" + "version" "2.1.0" + dependencies: + "safe-buffer" "^5.1.0" + +"randomfill@^1.0.3": + "integrity" "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==" + "resolved" "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz" + "version" "1.0.4" + dependencies: + "randombytes" "^2.0.5" + "safe-buffer" "^5.1.0" + +"range-parser@~1.2.1": + "integrity" "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" + "resolved" "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz" + "version" "1.2.1" + +"raw-body@2.4.0": + "integrity" "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==" + "resolved" "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz" + "version" "2.4.0" + dependencies: + "bytes" "3.1.0" + "http-errors" "1.7.2" + "iconv-lite" "0.4.24" + "unpipe" "1.0.0" + +"rc@^1.2.8": + "integrity" "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==" + "resolved" "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz" + "version" "1.2.8" + dependencies: + "deep-extend" "^0.6.0" + "ini" "~1.3.0" + "minimist" "^1.2.0" + "strip-json-comments" "~2.0.1" + +"readable-stream@^2.3.5": + "integrity" "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==" + "resolved" "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz" + "version" "2.3.7" + dependencies: + "core-util-is" "~1.0.0" + "inherits" "~2.0.3" + "isarray" "~1.0.0" + "process-nextick-args" "~2.0.0" + "safe-buffer" "~5.1.1" + "string_decoder" "~1.1.1" + "util-deprecate" "~1.0.1" + +"readable-stream@^3.6.0": + "integrity" "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==" + "resolved" "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz" + "version" "3.6.0" + dependencies: + "inherits" "^2.0.3" + "string_decoder" "^1.1.1" + "util-deprecate" "^1.0.1" + +"readable-stream@~2.3.6": + "integrity" "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==" + "resolved" "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz" + "version" "2.3.7" + dependencies: + "core-util-is" "~1.0.0" + "inherits" "~2.0.3" + "isarray" "~1.0.0" + "process-nextick-args" "~2.0.0" + "safe-buffer" "~5.1.1" + "string_decoder" "~1.1.1" + "util-deprecate" "~1.0.1" + +"registry-auth-token@^4.0.0": + "integrity" "sha512-P+lWzPrsgfN+UEpDS3U8AQKg/UjZX6mQSJueZj3EK+vNESoqBSpBUD3gmu4sF9lOsjXWjF11dQKUqemf3veq1w==" + "resolved" "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.0.tgz" + "version" "4.2.0" + dependencies: + "rc" "^1.2.8" + +"registry-url@^5.0.0": + "integrity" "sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==" + "resolved" "https://registry.npmjs.org/registry-url/-/registry-url-5.1.0.tgz" + "version" "5.1.0" + dependencies: + "rc" "^1.2.8" + +"request@^2.79.0": + "integrity" "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==" + "resolved" "https://registry.npmjs.org/request/-/request-2.88.2.tgz" + "version" "2.88.2" + dependencies: + "aws-sign2" "~0.7.0" + "aws4" "^1.8.0" + "caseless" "~0.12.0" + "combined-stream" "~1.0.6" + "extend" "~3.0.2" + "forever-agent" "~0.6.1" + "form-data" "~2.3.2" + "har-validator" "~5.1.3" + "http-signature" "~1.2.0" + "is-typedarray" "~1.0.0" + "isstream" "~0.1.2" + "json-stringify-safe" "~5.0.1" + "mime-types" "~2.1.19" + "oauth-sign" "~0.9.0" + "performance-now" "^2.1.0" + "qs" "~6.5.2" + "safe-buffer" "^5.1.2" + "tough-cookie" "~2.5.0" + "tunnel-agent" "^0.6.0" + "uuid" "^3.3.2" + +"require_optional@^1.0.1": + "version" "1.0.1" + dependencies: + "resolve-from" "^2.0.0" + "semver" "^5.1.0" + +"resolve-from@^2.0.0": + "version" "2.0.0" + +"resolve-from@^5.0.0": + "integrity" "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==" + "resolved" "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz" + "version" "5.0.0" + +"responselike@^1.0.2": + "integrity" "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=" + "resolved" "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz" + "version" "1.0.2" + dependencies: + "lowercase-keys" "^1.0.0" + +"retry@^0.12.0": + "integrity" "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=" + "resolved" "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz" + "version" "0.12.0" + +"ripemd160@^2.0.0", "ripemd160@^2.0.1": + "integrity" "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==" + "resolved" "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz" + "version" "2.0.2" + dependencies: + "hash-base" "^3.0.0" + "inherits" "^2.0.1" + +"rlp@^2.2.3": + "integrity" "sha512-HAfAmL6SDYNWPUOJNrM500x4Thn4PZsEy5pijPh40U9WfNk0z15hUYzO9xVIMAdIHdFtD8CBDHd75Td1g36Mjg==" + "resolved" "https://registry.npmjs.org/rlp/-/rlp-2.2.6.tgz" + "version" "2.2.6" + dependencies: + "bn.js" "^4.11.1" + +"safe-buffer@^5.0.1", "safe-buffer@^5.1.0", "safe-buffer@^5.1.1", "safe-buffer@^5.1.2", "safe-buffer@~5.1.0", "safe-buffer@~5.1.1", "safe-buffer@5.1.2": + "integrity" "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + "resolved" "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" + "version" "5.1.2" + +"safe-buffer@^5.2.0": + "integrity" "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + "resolved" "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" + "version" "5.2.1" + +"safe-buffer@~5.2.0": + "integrity" "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + "resolved" "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" + "version" "5.2.1" + +"safer-buffer@^2.0.2", "safer-buffer@^2.1.0", "safer-buffer@>= 2.1.2 < 3", "safer-buffer@~2.1.0": + "integrity" "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + "resolved" "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz" + "version" "2.1.2" + +"saslprep@^1.0.0": + "integrity" "sha512-/MY/PEMbk2SuY5sScONwhUDsV2p77Znkb/q3nSVstq/yQzYJOH/Azh29p9oJLsl3LnQwSvZDKagDGBsBwSooag==" + "resolved" "https://registry.npmjs.org/saslprep/-/saslprep-1.0.3.tgz" + "version" "1.0.3" + dependencies: + "sparse-bitfield" "^3.0.3" + +"sax@>=0.6.0", "sax@1.2.1": + "integrity" "sha1-e45lYZCyKOgaZq6nSEgNgozS03o=" + "resolved" "https://registry.npmjs.org/sax/-/sax-1.2.1.tgz" + "version" "1.2.1" + +"scrypt-js@^3.0.0", "scrypt-js@^3.0.1": + "integrity" "sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==" + "resolved" "https://registry.npmjs.org/scrypt-js/-/scrypt-js-3.0.1.tgz" + "version" "3.0.1" + +"secp256k1@^4.0.1": + "integrity" "sha512-UDar4sKvWAksIlfX3xIaQReADn+WFnHvbVujpcbr+9Sf/69odMwy2MUsz5CKLQgX9nsIyrjuxL2imVyoNHa3fg==" + "resolved" "https://registry.npmjs.org/secp256k1/-/secp256k1-4.0.2.tgz" + "version" "4.0.2" + dependencies: + "elliptic" "^6.5.2" + "node-addon-api" "^2.0.0" + "node-gyp-build" "^4.2.0" + +"semver-compare@^1.0.0": + "integrity" "sha1-De4hahyUGrN+nvsXiPavxf9VN/w=" + "resolved" "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz" + "version" "1.0.0" + +"semver-diff@^3.1.1": + "integrity" "sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==" + "resolved" "https://registry.npmjs.org/semver-diff/-/semver-diff-3.1.1.tgz" + "version" "3.1.1" + dependencies: + "semver" "^6.3.0" + +"semver@^5.1.0": + "version" "5.7.1" + +"semver@^5.6.0": + "integrity" "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + "resolved" "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz" + "version" "5.7.1" + +"semver@^6.0.0": + "integrity" "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + "resolved" "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz" + "version" "6.3.0" + +"semver@^6.2.0": + "integrity" "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + "resolved" "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz" + "version" "6.3.0" + +"semver@^6.3.0": + "integrity" "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + "resolved" "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz" + "version" "6.3.0" + +"semver@^7.1.3": + "integrity" "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==" + "resolved" "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz" + "version" "7.3.2" + +"send@0.17.1": + "integrity" "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==" + "resolved" "https://registry.npmjs.org/send/-/send-0.17.1.tgz" + "version" "0.17.1" + dependencies: + "debug" "2.6.9" + "depd" "~1.1.2" + "destroy" "~1.0.4" + "encodeurl" "~1.0.2" + "escape-html" "~1.0.3" + "etag" "~1.8.1" + "fresh" "0.5.2" + "http-errors" "~1.7.2" + "mime" "1.6.0" + "ms" "2.1.1" + "on-finished" "~2.3.0" + "range-parser" "~1.2.1" + "statuses" "~1.5.0" + +"serve-static@1.14.1": + "integrity" "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==" + "resolved" "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz" + "version" "1.14.1" + dependencies: + "encodeurl" "~1.0.2" + "escape-html" "~1.0.3" + "parseurl" "~1.3.3" + "send" "0.17.1" + +"serverless-aws-documentation@^1.1.0": + "integrity" "sha512-b2iM1eZIWxQjAa6RNnARq+iXgiffbtSmKnZUh7l8KOkaD/BapqfOkKKi6MGxp3KxQFkW31sVsAiqJ0NQSSyXOw==" + "resolved" "https://registry.npmjs.org/serverless-aws-documentation/-/serverless-aws-documentation-1.1.0.tgz" + "version" "1.1.0" + dependencies: + "object-hash" "^1.1.7" + +"serverless-domain-manager@^4.2.0": + "version" "4.2.0" + dependencies: + "aws-sdk" "^2.490.0" + "chalk" "^2.4.1" + +"serverless-export-swagger@^2.0.0": + "integrity" "sha512-X4Hi8tftfzyOF6nol122LyKwM4zWgrvdV9MP6gIuJ2XeMaQo5wkHgsi+rHnuWGjyVb4BpIL/BGOMWMpPK3j//A==" + "resolved" "https://registry.npmjs.org/serverless-export-swagger/-/serverless-export-swagger-2.0.0.tgz" + "version" "2.0.0" + dependencies: + "aws-sdk" "^2.385.0" + +"serverless-offline@^6.7.0": + "integrity" "sha512-N/5vUk8PzSzViwRjeLIM/o5LYk6NudaSEoZRlwQFSGeLuQSHZuFUvNZlCSK3e4N3gs1CLKMP0Ks1H0/jHD/8gQ==" + "resolved" "https://registry.npmjs.org/serverless-offline/-/serverless-offline-6.7.0.tgz" + "version" "6.7.0" dependencies: "@hapi/boom" "^7.4.11" "@hapi/h2o2" "^8.3.2" "@hapi/hapi" "^18.4.1" - aws-sdk "^2.624.0" - boxen "^4.2.0" - chalk "^3.0.0" - clear-module "^4.1.1" - cuid "^2.1.8" - execa "^4.0.0" - extend "^3.0.2" - fs-extra "^8.1.0" - java-invoke-local "0.0.6" - js-string-escape "^1.0.1" - jsonpath-plus "^3.0.0" - jsonschema "^1.2.6" - jsonwebtoken "^8.5.1" - jszip "^3.2.2" - luxon "^1.22.0" - node-fetch "^2.6.0" - node-schedule "^1.3.2" - object.fromentries "^2.0.2" - p-memoize "^4.0.0" - p-queue "^6.3.0" - p-retry "^4.2.0" - please-upgrade-node "^3.2.0" - portfinder "^1.0.25" - semver "^7.1.3" - update-notifier "^4.1.0" - velocityjs "^2.0.0" - ws "^7.2.1" - -servify@^0.1.12: - version "0.1.12" - resolved "https://registry.yarnpkg.com/servify/-/servify-0.1.12.tgz#142ab7bee1f1d033b66d0707086085b17c06db95" - integrity sha512-/xE6GvsKKqyo1BAY+KxOWXcLpPsUUyji7Qg3bVD7hh1eRze5bR1uYiuDA/k3Gof1s9BTzQZEJK8sNcNGFIzeWw== - dependencies: - body-parser "^1.16.0" - cors "^2.8.1" - express "^4.14.0" - request "^2.79.0" - xhr "^2.3.3" - -set-immediate-shim@~1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61" - integrity sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E= - -setimmediate@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" - integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU= - -setprototypeof@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683" - integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw== - -sha.js@^2.4.0, sha.js@^2.4.8: - version "2.4.11" - resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" - integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== - dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" - -shebang-command@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" - integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== - dependencies: - shebang-regex "^3.0.0" - -shebang-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" - integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== - -signal-exit@^3.0.2: - version "3.0.3" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" - integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== - -simple-concat@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/simple-concat/-/simple-concat-1.0.1.tgz#f46976082ba35c2263f1c8ab5edfe26c41c9552f" - integrity sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q== - -simple-get@^2.7.0: - version "2.8.1" - resolved "https://registry.yarnpkg.com/simple-get/-/simple-get-2.8.1.tgz#0e22e91d4575d87620620bc91308d57a77f44b5d" - integrity sha512-lSSHRSw3mQNUGPAYRqo7xy9dhKmxFXIjLjp4KHpf99GEH2VH7C3AM+Qfx6du6jhfUi6Vm7XnbEVEf7Wb6N8jRw== - dependencies: - decompress-response "^3.3.0" - once "^1.3.1" - simple-concat "^1.0.0" - -sorted-array-functions@^1.0.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/sorted-array-functions/-/sorted-array-functions-1.3.0.tgz#8605695563294dffb2c9796d602bd8459f7a0dd5" - integrity sha512-2sqgzeFlid6N4Z2fUQ1cvFmTOLRi/sEDzSQ0OKYchqgoPmQBVyM3959qYx3fpS6Esef80KjmpgPeEr028dP3OA== - -sshpk@^1.7.0: - version "1.16.1" - resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877" - integrity sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg== - dependencies: - asn1 "~0.2.3" - assert-plus "^1.0.0" - bcrypt-pbkdf "^1.0.0" - dashdash "^1.12.0" - ecc-jsbn "~0.1.1" - getpass "^0.1.1" - jsbn "~0.1.0" - safer-buffer "^2.0.2" - tweetnacl "~0.14.0" - -"statuses@>= 1.5.0 < 2", statuses@~1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" - integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= - -strict-uri-encode@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" - integrity sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM= - -string-width@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" - integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== - dependencies: - emoji-regex "^7.0.1" - is-fullwidth-code-point "^2.0.0" - strip-ansi "^5.1.0" - -string-width@^4.0.0, string-width@^4.1.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5" - integrity sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.0" - -string.prototype.trimend@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz#85812a6b847ac002270f5808146064c995fb6913" - integrity sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.5" - -string.prototype.trimstart@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz#14af6d9f34b053f7cfc89b72f8f2ee14b9039a54" - integrity sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.5" - -string_decoder@^1.1.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" - integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== - dependencies: - safe-buffer "~5.2.0" - -string_decoder@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" - integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== - dependencies: - safe-buffer "~5.1.0" - -strip-ansi@^5.1.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" - integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== - dependencies: - ansi-regex "^4.1.0" - -strip-ansi@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" - integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== - dependencies: - ansi-regex "^5.0.0" - -strip-final-newline@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" - integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== - -strip-hex-prefix@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/strip-hex-prefix/-/strip-hex-prefix-1.0.0.tgz#0c5f155fef1151373377de9dbb588da05500e36f" - integrity sha1-DF8VX+8RUTczd96du1iNoFUA428= - dependencies: - is-hex-prefixed "1.0.0" - -strip-json-comments@~2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" - integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= - -supports-color@^7.1.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" - integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== - dependencies: - has-flag "^4.0.0" - -swarm-js@^0.1.40: - version "0.1.40" - resolved "https://registry.yarnpkg.com/swarm-js/-/swarm-js-0.1.40.tgz#b1bc7b6dcc76061f6c772203e004c11997e06b99" - integrity sha512-yqiOCEoA4/IShXkY3WKwP5PvZhmoOOD8clsKA7EEcRILMkTEYHCQ21HDCAcVpmIxZq4LyZvWeRJ6quIyHk1caA== - dependencies: - bluebird "^3.5.0" - buffer "^5.0.5" - eth-lib "^0.1.26" - fs-extra "^4.0.2" - got "^7.1.0" - mime-types "^2.1.16" - mkdirp-promise "^5.0.1" - mock-fs "^4.1.0" - setimmediate "^1.0.5" - tar "^4.0.2" - xhr-request "^1.0.1" - -tar@^4.0.2: - version "4.4.13" - resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.13.tgz#43b364bc52888d555298637b10d60790254ab525" - integrity sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA== - dependencies: - chownr "^1.1.1" - fs-minipass "^1.2.5" - minipass "^2.8.6" - minizlib "^1.2.1" - mkdirp "^0.5.0" - safe-buffer "^5.1.2" - yallist "^3.0.3" - -term-size@^2.1.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/term-size/-/term-size-2.2.0.tgz#1f16adedfe9bdc18800e1776821734086fcc6753" - integrity sha512-a6sumDlzyHVJWb8+YofY4TW112G6p2FCPEAFk+59gIYHv3XHRhm9ltVQ9kli4hNWeQBwSpe8cRN25x0ROunMOw== - -timed-out@^4.0.0, timed-out@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f" - integrity sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8= - -to-readable-stream@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/to-readable-stream/-/to-readable-stream-1.0.0.tgz#ce0aa0c2f3df6adf852efb404a783e77c0475771" - integrity sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q== - -toidentifier@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" - integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== - -tough-cookie@~2.5.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" - integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== - dependencies: - psl "^1.1.28" - punycode "^2.1.1" - -tunnel-agent@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" - integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0= - dependencies: - safe-buffer "^5.0.1" - -tweetnacl@^0.14.3, tweetnacl@~0.14.0: - version "0.14.5" - resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" - integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= - -type-fest@^0.8.1: - version "0.8.1" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" - integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== - -type-is@~1.6.17, type-is@~1.6.18: - version "1.6.18" - resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" - integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== - dependencies: - media-typer "0.3.0" - mime-types "~2.1.24" - -type@^1.0.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/type/-/type-1.2.0.tgz#848dd7698dafa3e54a6c479e759c4bc3f18847a0" - integrity sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg== - -type@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/type/-/type-2.1.0.tgz#9bdc22c648cf8cf86dd23d32336a41cfb6475e3f" - integrity sha512-G9absDWvhAWCV2gmF1zKud3OyC61nZDwWvBL2DApaVFogI07CprggiQAOOjvp2NRjYWFzPyu7vwtDrQFq8jeSA== - -typedarray-to-buffer@^3.1.5: - version "3.1.5" - resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" - integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== - dependencies: - is-typedarray "^1.0.0" - -ultron@~1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.1.1.tgz#9fe1536a10a664a65266a1e3ccf85fd36302bc9c" - integrity sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og== - -underscore@1.9.1: - version "1.9.1" - resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.9.1.tgz#06dce34a0e68a7babc29b365b8e74b8925203961" - integrity sha512-5/4etnCkd9c8gwgowi5/om/mYO5ajCaOgdzj/oW+0eQV9WxKBDZw5+ycmKmeaTXjInS/W0BzpGLo2xR2aBwZdg== - -unique-string@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-2.0.0.tgz#39c6451f81afb2749de2b233e3f7c5e8843bd89d" - integrity sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg== - dependencies: - crypto-random-string "^2.0.0" - -universalify@^0.1.0: - version "0.1.2" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" - integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== - -unpipe@1.0.0, unpipe@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" - integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= - -update-notifier@^4.1.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-4.1.1.tgz#895fc8562bbe666179500f9f2cebac4f26323746" - integrity sha512-9y+Kds0+LoLG6yN802wVXoIfxYEwh3FlZwzMwpCZp62S2i1/Jzeqb9Eeeju3NSHccGGasfGlK5/vEHbAifYRDg== - dependencies: - boxen "^4.2.0" - chalk "^3.0.0" - configstore "^5.0.1" - has-yarn "^2.1.0" - import-lazy "^2.1.0" - is-ci "^2.0.0" - is-installed-globally "^0.3.1" - is-npm "^4.0.0" - is-yarn-global "^0.3.0" - latest-version "^5.0.0" - pupa "^2.0.1" - semver-diff "^3.1.1" - xdg-basedir "^4.0.0" - -uri-js@^4.2.2: - version "4.4.0" - resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.0.tgz#aa714261de793e8a82347a7bcc9ce74e86f28602" - integrity sha512-B0yRTzYdUCCn9n+F4+Gh4yIDtMQcaJsmYBDsTSG8g/OejKBodLQ2IHfN3bM7jUsRXndopT7OIXWdYqc1fjmV6g== - dependencies: - punycode "^2.1.0" - -url-parse-lax@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-1.0.0.tgz#7af8f303645e9bd79a272e7a14ac68bc0609da73" - integrity sha1-evjzA2Rem9eaJy56FKxovAYJ2nM= - dependencies: - prepend-http "^1.0.1" - -url-parse-lax@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-3.0.0.tgz#16b5cafc07dbe3676c1b1999177823d6503acb0c" - integrity sha1-FrXK/Afb42dsGxmZF3gj1lA6yww= - dependencies: - prepend-http "^2.0.0" - -url-set-query@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/url-set-query/-/url-set-query-1.0.0.tgz#016e8cfd7c20ee05cafe7795e892bd0702faa339" - integrity sha1-AW6M/Xwg7gXK/neV6JK9BwL6ozk= - -url-to-options@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/url-to-options/-/url-to-options-1.0.1.tgz#1505a03a289a48cbd7a434efbaeec5055f5633a9" - integrity sha1-FQWgOiiaSMvXpDTvuu7FBV9WM6k= - -url@0.10.3: - version "0.10.3" - resolved "https://registry.yarnpkg.com/url/-/url-0.10.3.tgz#021e4d9c7705f21bbf37d03ceb58767402774c64" - integrity sha1-Ah5NnHcF8hu/N9A861h2dAJ3TGQ= - dependencies: - punycode "1.3.2" - querystring "0.2.0" - -utf-8-validate@^5.0.2: - version "5.0.2" - resolved "https://registry.yarnpkg.com/utf-8-validate/-/utf-8-validate-5.0.2.tgz#63cfbccd85dc1f2b66cf7a1d0eebc08ed056bfb3" - integrity sha512-SwV++i2gTD5qh2XqaPzBnNX88N6HdyhQrNNRykvcS0QKvItV9u3vPEJr+X5Hhfb1JC0r0e1alL0iB09rY8+nmw== - dependencies: - node-gyp-build "~3.7.0" - -utf8@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/utf8/-/utf8-3.0.0.tgz#f052eed1364d696e769ef058b183df88c87f69d1" - integrity sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ== - -util-deprecate@^1.0.1, util-deprecate@~1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" - integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= - -utils-merge@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" - integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= - -uuid@3.3.2: - version "3.3.2" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131" - integrity sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA== - -uuid@^3.3.2: - version "3.4.0" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" - integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== - -varint@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/varint/-/varint-5.0.0.tgz#d826b89f7490732fabc0c0ed693ed475dcb29ebf" - integrity sha1-2Ca4n3SQcy+rwMDtaT7Uddyynr8= - -vary@^1, vary@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" - integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= - -velocityjs@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/velocityjs/-/velocityjs-2.0.1.tgz#078c73d22a53f085cf3a52a56a8271c820ac23dd" - integrity sha512-KXVGRAOPCm8DhMdrhHqXyELIZNs3CTe2Vz1Kg09zzSycEmE9VzjiSnG50n3rs3FuiL9ek7c36sYJg+R+8EO2Zg== - -verror@1.10.0: - version "1.10.0" - resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" - integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA= - dependencies: - assert-plus "^1.0.0" - core-util-is "1.0.2" - extsprintf "^1.2.0" - -web3-bzz@1.2.11: - version "1.2.11" - resolved "https://registry.yarnpkg.com/web3-bzz/-/web3-bzz-1.2.11.tgz#41bc19a77444bd5365744596d778b811880f707f" - integrity sha512-XGpWUEElGypBjeFyUhTkiPXFbDVD6Nr/S5jznE3t8cWUA0FxRf1n3n/NuIZeb0H9RkN2Ctd/jNma/k8XGa3YKg== + "aws-sdk" "^2.624.0" + "boxen" "^4.2.0" + "chalk" "^3.0.0" + "clear-module" "^4.1.1" + "cuid" "^2.1.8" + "execa" "^4.0.0" + "extend" "^3.0.2" + "fs-extra" "^8.1.0" + "java-invoke-local" "0.0.6" + "js-string-escape" "^1.0.1" + "jsonpath-plus" "^3.0.0" + "jsonschema" "^1.2.6" + "jsonwebtoken" "^8.5.1" + "jszip" "^3.2.2" + "luxon" "^1.22.0" + "node-fetch" "^2.6.0" + "node-schedule" "^1.3.2" + "object.fromentries" "^2.0.2" + "p-memoize" "^4.0.0" + "p-queue" "^6.3.0" + "p-retry" "^4.2.0" + "please-upgrade-node" "^3.2.0" + "portfinder" "^1.0.25" + "semver" "^7.1.3" + "update-notifier" "^4.1.0" + "velocityjs" "^2.0.0" + "ws" "^7.2.1" + +"servify@^0.1.12": + "integrity" "sha512-/xE6GvsKKqyo1BAY+KxOWXcLpPsUUyji7Qg3bVD7hh1eRze5bR1uYiuDA/k3Gof1s9BTzQZEJK8sNcNGFIzeWw==" + "resolved" "https://registry.npmjs.org/servify/-/servify-0.1.12.tgz" + "version" "0.1.12" + dependencies: + "body-parser" "^1.16.0" + "cors" "^2.8.1" + "express" "^4.14.0" + "request" "^2.79.0" + "xhr" "^2.3.3" + +"set-immediate-shim@~1.0.1": + "integrity" "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=" + "resolved" "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz" + "version" "1.0.1" + +"setimmediate@^1.0.5": + "integrity" "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=" + "resolved" "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz" + "version" "1.0.5" + +"setprototypeof@1.1.1": + "integrity" "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" + "resolved" "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz" + "version" "1.1.1" + +"sha.js@^2.4.0", "sha.js@^2.4.8": + "integrity" "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==" + "resolved" "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz" + "version" "2.4.11" + dependencies: + "inherits" "^2.0.1" + "safe-buffer" "^5.0.1" + +"shebang-command@^2.0.0": + "integrity" "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==" + "resolved" "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz" + "version" "2.0.0" + dependencies: + "shebang-regex" "^3.0.0" + +"shebang-regex@^3.0.0": + "integrity" "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" + "resolved" "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz" + "version" "3.0.0" + +"signal-exit@^3.0.2": + "integrity" "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==" + "resolved" "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz" + "version" "3.0.3" + +"simple-concat@^1.0.0": + "integrity" "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==" + "resolved" "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz" + "version" "1.0.1" + +"simple-get@^2.7.0": + "integrity" "sha512-lSSHRSw3mQNUGPAYRqo7xy9dhKmxFXIjLjp4KHpf99GEH2VH7C3AM+Qfx6du6jhfUi6Vm7XnbEVEf7Wb6N8jRw==" + "resolved" "https://registry.npmjs.org/simple-get/-/simple-get-2.8.1.tgz" + "version" "2.8.1" + dependencies: + "decompress-response" "^3.3.0" + "once" "^1.3.1" + "simple-concat" "^1.0.0" + +"sorted-array-functions@^1.0.0": + "integrity" "sha512-2sqgzeFlid6N4Z2fUQ1cvFmTOLRi/sEDzSQ0OKYchqgoPmQBVyM3959qYx3fpS6Esef80KjmpgPeEr028dP3OA==" + "resolved" "https://registry.npmjs.org/sorted-array-functions/-/sorted-array-functions-1.3.0.tgz" + "version" "1.3.0" + +"sparse-bitfield@^3.0.3": + "integrity" "sha1-/0rm5oZWBWuks+eSqzM004JzyhE=" + "resolved" "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz" + "version" "3.0.3" + dependencies: + "memory-pager" "^1.0.2" + +"sshpk@^1.7.0": + "integrity" "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==" + "resolved" "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz" + "version" "1.16.1" + dependencies: + "asn1" "~0.2.3" + "assert-plus" "^1.0.0" + "bcrypt-pbkdf" "^1.0.0" + "dashdash" "^1.12.0" + "ecc-jsbn" "~0.1.1" + "getpass" "^0.1.1" + "jsbn" "~0.1.0" + "safer-buffer" "^2.0.2" + "tweetnacl" "~0.14.0" + +"statuses@>= 1.5.0 < 2", "statuses@~1.5.0": + "integrity" "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" + "resolved" "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz" + "version" "1.5.0" + +"strict-uri-encode@^1.0.0": + "integrity" "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=" + "resolved" "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz" + "version" "1.1.0" + +"string_decoder@^1.1.1": + "integrity" "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==" + "resolved" "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz" + "version" "1.3.0" + dependencies: + "safe-buffer" "~5.2.0" + +"string_decoder@~1.1.1": + "integrity" "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==" + "resolved" "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz" + "version" "1.1.1" + dependencies: + "safe-buffer" "~5.1.0" + +"string-width@^3.0.0": + "integrity" "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==" + "resolved" "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz" + "version" "3.1.0" + dependencies: + "emoji-regex" "^7.0.1" + "is-fullwidth-code-point" "^2.0.0" + "strip-ansi" "^5.1.0" + +"string-width@^4.0.0", "string-width@^4.1.0": + "integrity" "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==" + "resolved" "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz" + "version" "4.2.0" + dependencies: + "emoji-regex" "^8.0.0" + "is-fullwidth-code-point" "^3.0.0" + "strip-ansi" "^6.0.0" + +"string.prototype.trimend@^1.0.1": + "integrity" "sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g==" + "resolved" "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz" + "version" "1.0.1" + dependencies: + "define-properties" "^1.1.3" + "es-abstract" "^1.17.5" + +"string.prototype.trimstart@^1.0.1": + "integrity" "sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw==" + "resolved" "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz" + "version" "1.0.1" + dependencies: + "define-properties" "^1.1.3" + "es-abstract" "^1.17.5" + +"strip-ansi@^5.1.0": + "integrity" "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==" + "resolved" "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz" + "version" "5.2.0" + dependencies: + "ansi-regex" "^4.1.0" + +"strip-ansi@^6.0.0": + "integrity" "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==" + "resolved" "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz" + "version" "6.0.0" + dependencies: + "ansi-regex" "^5.0.0" + +"strip-final-newline@^2.0.0": + "integrity" "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==" + "resolved" "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz" + "version" "2.0.0" + +"strip-hex-prefix@1.0.0": + "integrity" "sha1-DF8VX+8RUTczd96du1iNoFUA428=" + "resolved" "https://registry.npmjs.org/strip-hex-prefix/-/strip-hex-prefix-1.0.0.tgz" + "version" "1.0.0" + dependencies: + "is-hex-prefixed" "1.0.0" + +"strip-json-comments@~2.0.1": + "integrity" "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" + "resolved" "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz" + "version" "2.0.1" + +"supports-color@^5.3.0": + "integrity" "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==" + "resolved" "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz" + "version" "5.5.0" + dependencies: + "has-flag" "^3.0.0" + +"supports-color@^7.1.0": + "integrity" "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==" + "resolved" "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz" + "version" "7.2.0" + dependencies: + "has-flag" "^4.0.0" + +"swagger-ui-dist@^3.18.1": + "version" "3.48.0" + +"swagger-ui-express@^4.1.6": + "integrity" "sha512-Xs2BGGudvDBtL7RXcYtNvHsFtP1DBFPMJFRxHe5ez/VG/rzVOEjazJOOSc/kSCyxreCTKfJrII6MJlL9a6t8vw==" + "resolved" "https://registry.npmjs.org/swagger-ui-express/-/swagger-ui-express-4.1.6.tgz" + "version" "4.1.6" + dependencies: + "swagger-ui-dist" "^3.18.1" + +"swarm-js@^0.1.40": + "integrity" "sha512-yqiOCEoA4/IShXkY3WKwP5PvZhmoOOD8clsKA7EEcRILMkTEYHCQ21HDCAcVpmIxZq4LyZvWeRJ6quIyHk1caA==" + "resolved" "https://registry.npmjs.org/swarm-js/-/swarm-js-0.1.40.tgz" + "version" "0.1.40" + dependencies: + "bluebird" "^3.5.0" + "buffer" "^5.0.5" + "eth-lib" "^0.1.26" + "fs-extra" "^4.0.2" + "got" "^7.1.0" + "mime-types" "^2.1.16" + "mkdirp-promise" "^5.0.1" + "mock-fs" "^4.1.0" + "setimmediate" "^1.0.5" + "tar" "^4.0.2" + "xhr-request" "^1.0.1" + +"tar@^4.0.2": + "integrity" "sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA==" + "resolved" "https://registry.npmjs.org/tar/-/tar-4.4.13.tgz" + "version" "4.4.13" + dependencies: + "chownr" "^1.1.1" + "fs-minipass" "^1.2.5" + "minipass" "^2.8.6" + "minizlib" "^1.2.1" + "mkdirp" "^0.5.0" + "safe-buffer" "^5.1.2" + "yallist" "^3.0.3" + +"term-size@^2.1.0": + "integrity" "sha512-a6sumDlzyHVJWb8+YofY4TW112G6p2FCPEAFk+59gIYHv3XHRhm9ltVQ9kli4hNWeQBwSpe8cRN25x0ROunMOw==" + "resolved" "https://registry.npmjs.org/term-size/-/term-size-2.2.0.tgz" + "version" "2.2.0" + +"timed-out@^4.0.0", "timed-out@^4.0.1": + "integrity" "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=" + "resolved" "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz" + "version" "4.0.1" + +"to-readable-stream@^1.0.0": + "integrity" "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==" + "resolved" "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz" + "version" "1.0.0" + +"toidentifier@1.0.0": + "integrity" "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==" + "resolved" "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz" + "version" "1.0.0" + +"tough-cookie@~2.5.0": + "integrity" "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==" + "resolved" "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz" + "version" "2.5.0" + dependencies: + "psl" "^1.1.28" + "punycode" "^2.1.1" + +"tunnel-agent@^0.6.0": + "integrity" "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=" + "resolved" "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz" + "version" "0.6.0" + dependencies: + "safe-buffer" "^5.0.1" + +"tweetnacl@^0.14.3", "tweetnacl@~0.14.0": + "integrity" "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" + "resolved" "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz" + "version" "0.14.5" + +"type-fest@^0.8.1": + "integrity" "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==" + "resolved" "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz" + "version" "0.8.1" + +"type-is@~1.6.17", "type-is@~1.6.18": + "integrity" "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==" + "resolved" "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz" + "version" "1.6.18" + dependencies: + "media-typer" "0.3.0" + "mime-types" "~2.1.24" + +"type@^1.0.1": + "integrity" "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==" + "resolved" "https://registry.npmjs.org/type/-/type-1.2.0.tgz" + "version" "1.2.0" + +"type@^2.0.0": + "integrity" "sha512-G9absDWvhAWCV2gmF1zKud3OyC61nZDwWvBL2DApaVFogI07CprggiQAOOjvp2NRjYWFzPyu7vwtDrQFq8jeSA==" + "resolved" "https://registry.npmjs.org/type/-/type-2.1.0.tgz" + "version" "2.1.0" + +"typedarray-to-buffer@^3.1.5": + "integrity" "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==" + "resolved" "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz" + "version" "3.1.5" + dependencies: + "is-typedarray" "^1.0.0" + +"tz-offset@0.0.1": + "integrity" "sha512-kMBmblijHJXyOpKzgDhKx9INYU4u4E1RPMB0HqmKSgWG8vEcf3exEfLh4FFfzd3xdQOw9EuIy/cP0akY6rHopQ==" + "resolved" "https://registry.npmjs.org/tz-offset/-/tz-offset-0.0.1.tgz" + "version" "0.0.1" + +"ultron@~1.1.0": + "integrity" "sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og==" + "resolved" "https://registry.npmjs.org/ultron/-/ultron-1.1.1.tgz" + "version" "1.1.1" + +"underscore@1.9.1": + "version" "1.9.1" + +"unique-string@^2.0.0": + "integrity" "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==" + "resolved" "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz" + "version" "2.0.0" + dependencies: + "crypto-random-string" "^2.0.0" + +"universalify@^0.1.0": + "integrity" "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==" + "resolved" "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz" + "version" "0.1.2" + +"unpipe@~1.0.0", "unpipe@1.0.0": + "integrity" "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" + "resolved" "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz" + "version" "1.0.0" + +"update-notifier@^4.1.0": + "integrity" "sha512-9y+Kds0+LoLG6yN802wVXoIfxYEwh3FlZwzMwpCZp62S2i1/Jzeqb9Eeeju3NSHccGGasfGlK5/vEHbAifYRDg==" + "resolved" "https://registry.npmjs.org/update-notifier/-/update-notifier-4.1.1.tgz" + "version" "4.1.1" + dependencies: + "boxen" "^4.2.0" + "chalk" "^3.0.0" + "configstore" "^5.0.1" + "has-yarn" "^2.1.0" + "import-lazy" "^2.1.0" + "is-ci" "^2.0.0" + "is-installed-globally" "^0.3.1" + "is-npm" "^4.0.0" + "is-yarn-global" "^0.3.0" + "latest-version" "^5.0.0" + "pupa" "^2.0.1" + "semver-diff" "^3.1.1" + "xdg-basedir" "^4.0.0" + +"uri-js@^4.2.2": + "integrity" "sha512-B0yRTzYdUCCn9n+F4+Gh4yIDtMQcaJsmYBDsTSG8g/OejKBodLQ2IHfN3bM7jUsRXndopT7OIXWdYqc1fjmV6g==" + "resolved" "https://registry.npmjs.org/uri-js/-/uri-js-4.4.0.tgz" + "version" "4.4.0" + dependencies: + "punycode" "^2.1.0" + +"url-parse-lax@^1.0.0": + "integrity" "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=" + "resolved" "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz" + "version" "1.0.0" + dependencies: + "prepend-http" "^1.0.1" + +"url-parse-lax@^3.0.0": + "integrity" "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=" + "resolved" "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "prepend-http" "^2.0.0" + +"url-set-query@^1.0.0": + "integrity" "sha1-AW6M/Xwg7gXK/neV6JK9BwL6ozk=" + "resolved" "https://registry.npmjs.org/url-set-query/-/url-set-query-1.0.0.tgz" + "version" "1.0.0" + +"url-to-options@^1.0.1": + "integrity" "sha1-FQWgOiiaSMvXpDTvuu7FBV9WM6k=" + "resolved" "https://registry.npmjs.org/url-to-options/-/url-to-options-1.0.1.tgz" + "version" "1.0.1" + +"url@0.10.3": + "integrity" "sha1-Ah5NnHcF8hu/N9A861h2dAJ3TGQ=" + "resolved" "https://registry.npmjs.org/url/-/url-0.10.3.tgz" + "version" "0.10.3" + dependencies: + "punycode" "1.3.2" + "querystring" "0.2.0" + +"utf-8-validate@^5.0.2": + "integrity" "sha512-SwV++i2gTD5qh2XqaPzBnNX88N6HdyhQrNNRykvcS0QKvItV9u3vPEJr+X5Hhfb1JC0r0e1alL0iB09rY8+nmw==" + "resolved" "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.2.tgz" + "version" "5.0.2" + dependencies: + "node-gyp-build" "~3.7.0" + +"utf8@3.0.0": + "integrity" "sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ==" + "resolved" "https://registry.npmjs.org/utf8/-/utf8-3.0.0.tgz" + "version" "3.0.0" + +"util-deprecate@^1.0.1", "util-deprecate@~1.0.1": + "integrity" "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + "resolved" "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" + "version" "1.0.2" + +"utils-merge@1.0.1": + "integrity" "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" + "resolved" "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz" + "version" "1.0.1" + +"uuid@^3.3.2": + "integrity" "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" + "resolved" "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz" + "version" "3.4.0" + +"uuid@3.3.2": + "integrity" "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==" + "resolved" "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz" + "version" "3.3.2" + +"varint@^5.0.0": + "integrity" "sha1-2Ca4n3SQcy+rwMDtaT7Uddyynr8=" + "resolved" "https://registry.npmjs.org/varint/-/varint-5.0.0.tgz" + "version" "5.0.0" + +"vary@^1", "vary@~1.1.2": + "integrity" "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" + "resolved" "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz" + "version" "1.1.2" + +"velocityjs@^2.0.0": + "integrity" "sha512-KXVGRAOPCm8DhMdrhHqXyELIZNs3CTe2Vz1Kg09zzSycEmE9VzjiSnG50n3rs3FuiL9ek7c36sYJg+R+8EO2Zg==" + "resolved" "https://registry.npmjs.org/velocityjs/-/velocityjs-2.0.1.tgz" + "version" "2.0.1" + +"verror@1.10.0": + "integrity" "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=" + "resolved" "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz" + "version" "1.10.0" + dependencies: + "assert-plus" "^1.0.0" + "core-util-is" "1.0.2" + "extsprintf" "^1.2.0" + +"web3-bzz@1.3.0": + "version" "1.3.0" dependencies: "@types/node" "^12.12.6" - got "9.6.0" - swarm-js "^0.1.40" - underscore "1.9.1" + "got" "9.6.0" + "swarm-js" "^0.1.40" + "underscore" "1.9.1" -web3-core-helpers@1.2.11: - version "1.2.11" - resolved "https://registry.yarnpkg.com/web3-core-helpers/-/web3-core-helpers-1.2.11.tgz#84c681ed0b942c0203f3b324a245a127e8c67a99" - integrity sha512-PEPoAoZd5ME7UfbnCZBdzIerpe74GEvlwT4AjOmHeCVZoIFk7EqvOZDejJHt+feJA6kMVTdd0xzRNN295UhC1A== +"web3-core-helpers@1.3.0": + "version" "1.3.0" dependencies: - underscore "1.9.1" - web3-eth-iban "1.2.11" - web3-utils "1.2.11" + "underscore" "1.9.1" + "web3-eth-iban" "1.3.0" + "web3-utils" "1.3.0" -web3-core-method@1.2.11: - version "1.2.11" - resolved "https://registry.yarnpkg.com/web3-core-method/-/web3-core-method-1.2.11.tgz#f880137d1507a0124912bf052534f168b8d8fbb6" - integrity sha512-ff0q76Cde94HAxLDZ6DbdmKniYCQVtvuaYh+rtOUMB6kssa5FX0q3vPmixi7NPooFnbKmmZCM6NvXg4IreTPIw== +"web3-core-method@1.3.0": + "version" "1.3.0" dependencies: "@ethersproject/transactions" "^5.0.0-beta.135" - underscore "1.9.1" - web3-core-helpers "1.2.11" - web3-core-promievent "1.2.11" - web3-core-subscriptions "1.2.11" - web3-utils "1.2.11" - -web3-core-promievent@1.2.11: - version "1.2.11" - resolved "https://registry.yarnpkg.com/web3-core-promievent/-/web3-core-promievent-1.2.11.tgz#51fe97ca0ddec2f99bf8c3306a7a8e4b094ea3cf" - integrity sha512-il4McoDa/Ox9Agh4kyfQ8Ak/9ABYpnF8poBLL33R/EnxLsJOGQG2nZhkJa3I067hocrPSjEdlPt/0bHXsln4qA== - dependencies: - eventemitter3 "4.0.4" - -web3-core-requestmanager@1.2.11: - version "1.2.11" - resolved "https://registry.yarnpkg.com/web3-core-requestmanager/-/web3-core-requestmanager-1.2.11.tgz#fe6eb603fbaee18530293a91f8cf26d8ae28c45a" - integrity sha512-oFhBtLfOiIbmfl6T6gYjjj9igOvtyxJ+fjS+byRxiwFJyJ5BQOz4/9/17gWR1Cq74paTlI7vDGxYfuvfE/mKvA== - dependencies: - underscore "1.9.1" - web3-core-helpers "1.2.11" - web3-providers-http "1.2.11" - web3-providers-ipc "1.2.11" - web3-providers-ws "1.2.11" - -web3-core-subscriptions@1.2.11: - version "1.2.11" - resolved "https://registry.yarnpkg.com/web3-core-subscriptions/-/web3-core-subscriptions-1.2.11.tgz#beca908fbfcb050c16f45f3f0f4c205e8505accd" - integrity sha512-qEF/OVqkCvQ7MPs1JylIZCZkin0aKK9lDxpAtQ1F8niEDGFqn7DT8E/vzbIa0GsOjL2fZjDhWJsaW+BSoAW1gg== - dependencies: - eventemitter3 "4.0.4" - underscore "1.9.1" - web3-core-helpers "1.2.11" - -web3-core@1.2.11: - version "1.2.11" - resolved "https://registry.yarnpkg.com/web3-core/-/web3-core-1.2.11.tgz#1043cacc1becb80638453cc5b2a14be9050288a7" - integrity sha512-CN7MEYOY5ryo5iVleIWRE3a3cZqVaLlIbIzDPsvQRUfzYnvzZQRZBm9Mq+ttDi2STOOzc1MKylspz/o3yq/LjQ== + "underscore" "1.9.1" + "web3-core-helpers" "1.3.0" + "web3-core-promievent" "1.3.0" + "web3-core-subscriptions" "1.3.0" + "web3-utils" "1.3.0" + +"web3-core-promievent@1.3.0": + "version" "1.3.0" + dependencies: + "eventemitter3" "4.0.4" + +"web3-core-requestmanager@1.3.0": + "version" "1.3.0" + dependencies: + "underscore" "1.9.1" + "web3-core-helpers" "1.3.0" + "web3-providers-http" "1.3.0" + "web3-providers-ipc" "1.3.0" + "web3-providers-ws" "1.3.0" + +"web3-core-subscriptions@1.3.0": + "version" "1.3.0" + dependencies: + "eventemitter3" "4.0.4" + "underscore" "1.9.1" + "web3-core-helpers" "1.3.0" + +"web3-core@1.3.0": + "version" "1.3.0" dependencies: "@types/bn.js" "^4.11.5" "@types/node" "^12.12.6" - bignumber.js "^9.0.0" - web3-core-helpers "1.2.11" - web3-core-method "1.2.11" - web3-core-requestmanager "1.2.11" - web3-utils "1.2.11" + "bignumber.js" "^9.0.0" + "web3-core-helpers" "1.3.0" + "web3-core-method" "1.3.0" + "web3-core-requestmanager" "1.3.0" + "web3-utils" "1.3.0" -web3-eth-abi@1.2.11: - version "1.2.11" - resolved "https://registry.yarnpkg.com/web3-eth-abi/-/web3-eth-abi-1.2.11.tgz#a887494e5d447c2926d557a3834edd66e17af9b0" - integrity sha512-PkRYc0+MjuLSgg03QVWqWlQivJqRwKItKtEpRUaxUAeLE7i/uU39gmzm2keHGcQXo3POXAbOnMqkDvOep89Crg== +"web3-eth-abi@1.3.0": + "version" "1.3.0" dependencies: "@ethersproject/abi" "5.0.0-beta.153" - underscore "1.9.1" - web3-utils "1.2.11" - -web3-eth-accounts@1.2.11: - version "1.2.11" - resolved "https://registry.yarnpkg.com/web3-eth-accounts/-/web3-eth-accounts-1.2.11.tgz#a9e3044da442d31903a7ce035a86d8fa33f90520" - integrity sha512-6FwPqEpCfKIh3nSSGeo3uBm2iFSnFJDfwL3oS9pyegRBXNsGRVpgiW63yhNzL0796StsvjHWwQnQHsZNxWAkGw== - dependencies: - crypto-browserify "3.12.0" - eth-lib "0.2.8" - ethereumjs-common "^1.3.2" - ethereumjs-tx "^2.1.1" - scrypt-js "^3.0.1" - underscore "1.9.1" - uuid "3.3.2" - web3-core "1.2.11" - web3-core-helpers "1.2.11" - web3-core-method "1.2.11" - web3-utils "1.2.11" - -web3-eth-contract@1.2.11: - version "1.2.11" - resolved "https://registry.yarnpkg.com/web3-eth-contract/-/web3-eth-contract-1.2.11.tgz#917065902bc27ce89da9a1da26e62ef663663b90" - integrity sha512-MzYuI/Rq2o6gn7vCGcnQgco63isPNK5lMAan2E51AJLknjSLnOxwNY3gM8BcKoy4Z+v5Dv00a03Xuk78JowFow== + "underscore" "1.9.1" + "web3-utils" "1.3.0" + +"web3-eth-accounts@1.3.0": + "version" "1.3.0" + dependencies: + "crypto-browserify" "3.12.0" + "eth-lib" "0.2.8" + "ethereumjs-common" "^1.3.2" + "ethereumjs-tx" "^2.1.1" + "scrypt-js" "^3.0.1" + "underscore" "1.9.1" + "uuid" "3.3.2" + "web3-core" "1.3.0" + "web3-core-helpers" "1.3.0" + "web3-core-method" "1.3.0" + "web3-utils" "1.3.0" + +"web3-eth-contract@1.3.0": + "version" "1.3.0" dependencies: "@types/bn.js" "^4.11.5" - underscore "1.9.1" - web3-core "1.2.11" - web3-core-helpers "1.2.11" - web3-core-method "1.2.11" - web3-core-promievent "1.2.11" - web3-core-subscriptions "1.2.11" - web3-eth-abi "1.2.11" - web3-utils "1.2.11" - -web3-eth-ens@1.2.11: - version "1.2.11" - resolved "https://registry.yarnpkg.com/web3-eth-ens/-/web3-eth-ens-1.2.11.tgz#26d4d7f16d6cbcfff918e39832b939edc3162532" - integrity sha512-dbW7dXP6HqT1EAPvnniZVnmw6TmQEKF6/1KgAxbo8iBBYrVTMDGFQUUnZ+C4VETGrwwaqtX4L9d/FrQhZ6SUiA== - dependencies: - content-hash "^2.5.2" - eth-ens-namehash "2.0.8" - underscore "1.9.1" - web3-core "1.2.11" - web3-core-helpers "1.2.11" - web3-core-promievent "1.2.11" - web3-eth-abi "1.2.11" - web3-eth-contract "1.2.11" - web3-utils "1.2.11" - -web3-eth-iban@1.2.11: - version "1.2.11" - resolved "https://registry.yarnpkg.com/web3-eth-iban/-/web3-eth-iban-1.2.11.tgz#f5f73298305bc7392e2f188bf38a7362b42144ef" - integrity sha512-ozuVlZ5jwFC2hJY4+fH9pIcuH1xP0HEFhtWsR69u9uDIANHLPQQtWYmdj7xQ3p2YT4bQLq/axKhZi7EZVetmxQ== - dependencies: - bn.js "^4.11.9" - web3-utils "1.2.11" - -web3-eth-personal@1.2.11: - version "1.2.11" - resolved "https://registry.yarnpkg.com/web3-eth-personal/-/web3-eth-personal-1.2.11.tgz#a38b3942a1d87a62070ce0622a941553c3d5aa70" - integrity sha512-42IzUtKq9iHZ8K9VN0vAI50iSU9tOA1V7XU2BhF/tb7We2iKBVdkley2fg26TxlOcKNEHm7o6HRtiiFsVK4Ifw== + "underscore" "1.9.1" + "web3-core" "1.3.0" + "web3-core-helpers" "1.3.0" + "web3-core-method" "1.3.0" + "web3-core-promievent" "1.3.0" + "web3-core-subscriptions" "1.3.0" + "web3-eth-abi" "1.3.0" + "web3-utils" "1.3.0" + +"web3-eth-ens@1.3.0": + "version" "1.3.0" + dependencies: + "content-hash" "^2.5.2" + "eth-ens-namehash" "2.0.8" + "underscore" "1.9.1" + "web3-core" "1.3.0" + "web3-core-helpers" "1.3.0" + "web3-core-promievent" "1.3.0" + "web3-eth-abi" "1.3.0" + "web3-eth-contract" "1.3.0" + "web3-utils" "1.3.0" + +"web3-eth-iban@1.3.0": + "version" "1.3.0" + dependencies: + "bn.js" "^4.11.9" + "web3-utils" "1.3.0" + +"web3-eth-personal@1.3.0": + "version" "1.3.0" dependencies: "@types/node" "^12.12.6" - web3-core "1.2.11" - web3-core-helpers "1.2.11" - web3-core-method "1.2.11" - web3-net "1.2.11" - web3-utils "1.2.11" - -web3-eth@1.2.11: - version "1.2.11" - resolved "https://registry.yarnpkg.com/web3-eth/-/web3-eth-1.2.11.tgz#4c81fcb6285b8caf544058fba3ae802968fdc793" - integrity sha512-REvxW1wJ58AgHPcXPJOL49d1K/dPmuw4LjPLBPStOVkQjzDTVmJEIsiLwn2YeuNDd4pfakBwT8L3bz1G1/wVsQ== - dependencies: - underscore "1.9.1" - web3-core "1.2.11" - web3-core-helpers "1.2.11" - web3-core-method "1.2.11" - web3-core-subscriptions "1.2.11" - web3-eth-abi "1.2.11" - web3-eth-accounts "1.2.11" - web3-eth-contract "1.2.11" - web3-eth-ens "1.2.11" - web3-eth-iban "1.2.11" - web3-eth-personal "1.2.11" - web3-net "1.2.11" - web3-utils "1.2.11" - -web3-net@1.2.11: - version "1.2.11" - resolved "https://registry.yarnpkg.com/web3-net/-/web3-net-1.2.11.tgz#eda68ef25e5cdb64c96c39085cdb74669aabbe1b" - integrity sha512-sjrSDj0pTfZouR5BSTItCuZ5K/oZPVdVciPQ6981PPPIwJJkCMeVjD7I4zO3qDPCnBjBSbWvVnLdwqUBPtHxyg== - dependencies: - web3-core "1.2.11" - web3-core-method "1.2.11" - web3-utils "1.2.11" - -web3-providers-http@1.2.11: - version "1.2.11" - resolved "https://registry.yarnpkg.com/web3-providers-http/-/web3-providers-http-1.2.11.tgz#1cd03442c61670572d40e4dcdf1faff8bd91e7c6" - integrity sha512-psh4hYGb1+ijWywfwpB2cvvOIMISlR44F/rJtYkRmQ5jMvG4FOCPlQJPiHQZo+2cc3HbktvvSJzIhkWQJdmvrA== - dependencies: - web3-core-helpers "1.2.11" - xhr2-cookies "1.1.0" - -web3-providers-ipc@1.2.11: - version "1.2.11" - resolved "https://registry.yarnpkg.com/web3-providers-ipc/-/web3-providers-ipc-1.2.11.tgz#d16d6c9be1be6e0b4f4536c4acc16b0f4f27ef21" - integrity sha512-yhc7Y/k8hBV/KlELxynWjJDzmgDEDjIjBzXK+e0rHBsYEhdCNdIH5Psa456c+l0qTEU2YzycF8VAjYpWfPnBpQ== - dependencies: - oboe "2.1.4" - underscore "1.9.1" - web3-core-helpers "1.2.11" - -web3-providers-ws@1.2.11: - version "1.2.11" - resolved "https://registry.yarnpkg.com/web3-providers-ws/-/web3-providers-ws-1.2.11.tgz#a1dfd6d9778d840561d9ec13dd453046451a96bb" - integrity sha512-ZxnjIY1Er8Ty+cE4migzr43zA/+72AF1myzsLaU5eVgdsfV7Jqx7Dix1hbevNZDKFlSoEyq/3j/jYalh3So1Zg== - dependencies: - eventemitter3 "4.0.4" - underscore "1.9.1" - web3-core-helpers "1.2.11" - websocket "^1.0.31" - -web3-shh@1.2.11: - version "1.2.11" - resolved "https://registry.yarnpkg.com/web3-shh/-/web3-shh-1.2.11.tgz#f5d086f9621c9a47e98d438010385b5f059fd88f" - integrity sha512-B3OrO3oG1L+bv3E1sTwCx66injW1A8hhwpknDUbV+sw3fehFazA06z9SGXUefuFI1kVs4q2vRi0n4oCcI4dZDg== - dependencies: - web3-core "1.2.11" - web3-core-method "1.2.11" - web3-core-subscriptions "1.2.11" - web3-net "1.2.11" - -web3-utils@1.2.11: - version "1.2.11" - resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.2.11.tgz#af1942aead3fb166ae851a985bed8ef2c2d95a82" - integrity sha512-3Tq09izhD+ThqHEaWYX4VOT7dNPdZiO+c/1QMA0s5X2lDFKK/xHJb7cyTRRVzN2LvlHbR7baS1tmQhSua51TcQ== - dependencies: - bn.js "^4.11.9" - eth-lib "0.2.8" - ethereum-bloom-filters "^1.0.6" - ethjs-unit "0.1.6" - number-to-bn "1.7.0" - randombytes "^2.1.0" - underscore "1.9.1" - utf8 "3.0.0" - -web3@^1.2.11: - version "1.2.11" - resolved "https://registry.yarnpkg.com/web3/-/web3-1.2.11.tgz#50f458b2e8b11aa37302071c170ed61cff332975" - integrity sha512-mjQ8HeU41G6hgOYm1pmeH0mRAeNKJGnJEUzDMoerkpw7QUQT4exVREgF1MYPvL/z6vAshOXei25LE/t/Bxl8yQ== - dependencies: - web3-bzz "1.2.11" - web3-core "1.2.11" - web3-eth "1.2.11" - web3-eth-personal "1.2.11" - web3-net "1.2.11" - web3-shh "1.2.11" - web3-utils "1.2.11" - -websocket@^1.0.31: - version "1.0.32" - resolved "https://registry.yarnpkg.com/websocket/-/websocket-1.0.32.tgz#1f16ddab3a21a2d929dec1687ab21cfdc6d3dbb1" - integrity sha512-i4yhcllSP4wrpoPMU2N0TQ/q0O94LRG/eUQjEAamRltjQ1oT1PFFKOG4i877OlJgCG8rw6LrrowJp+TYCEWF7Q== - dependencies: - bufferutil "^4.0.1" - debug "^2.2.0" - es5-ext "^0.10.50" - typedarray-to-buffer "^3.1.5" - utf-8-validate "^5.0.2" - yaeti "^0.0.6" - -which@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" - integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== - dependencies: - isexe "^2.0.0" - -widest-line@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-3.1.0.tgz#8292333bbf66cb45ff0de1603b136b7ae1496eca" - integrity sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg== - dependencies: - string-width "^4.0.0" - -wrappy@1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= - -write-file-atomic@^3.0.0: - version "3.0.3" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8" - integrity sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q== - dependencies: - imurmurhash "^0.1.4" - is-typedarray "^1.0.0" - signal-exit "^3.0.2" - typedarray-to-buffer "^3.1.5" - -ws@^3.0.0: - version "3.3.3" - resolved "https://registry.yarnpkg.com/ws/-/ws-3.3.3.tgz#f1cf84fe2d5e901ebce94efaece785f187a228f2" - integrity sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA== - dependencies: - async-limiter "~1.0.0" - safe-buffer "~5.1.0" - ultron "~1.1.0" - -ws@^7.2.1: - version "7.3.1" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.3.1.tgz#d0547bf67f7ce4f12a72dfe31262c68d7dc551c8" - integrity sha512-D3RuNkynyHmEJIpD2qrgVkc9DQ23OrN/moAwZX4L8DfvszsJxpjQuUq3LMx6HoYji9fbIOBY18XWBsAux1ZZUA== - -xdg-basedir@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-4.0.0.tgz#4bc8d9984403696225ef83a1573cbbcb4e79db13" - integrity sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q== - -xhr-request-promise@^0.1.2: - version "0.1.3" - resolved "https://registry.yarnpkg.com/xhr-request-promise/-/xhr-request-promise-0.1.3.tgz#2d5f4b16d8c6c893be97f1a62b0ed4cf3ca5f96c" - integrity sha512-YUBytBsuwgitWtdRzXDDkWAXzhdGB8bYm0sSzMPZT7Z2MBjMSTHFsyCT1yCRATY+XC69DUrQraRAEgcoCRaIPg== - dependencies: - xhr-request "^1.1.0" - -xhr-request@^1.0.1, xhr-request@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/xhr-request/-/xhr-request-1.1.0.tgz#f4a7c1868b9f198723444d82dcae317643f2e2ed" - integrity sha512-Y7qzEaR3FDtL3fP30k9wO/e+FBnBByZeybKOhASsGP30NIkRAAkKD/sCnLvgEfAIEC1rcmK7YG8f4oEnIrrWzA== - dependencies: - buffer-to-arraybuffer "^0.0.5" - object-assign "^4.1.1" - query-string "^5.0.1" - simple-get "^2.7.0" - timed-out "^4.0.1" - url-set-query "^1.0.0" - xhr "^2.0.4" - -xhr2-cookies@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/xhr2-cookies/-/xhr2-cookies-1.1.0.tgz#7d77449d0999197f155cb73b23df72505ed89d48" - integrity sha1-fXdEnQmZGX8VXLc7I99yUF7YnUg= - dependencies: - cookiejar "^2.1.1" - -xhr@^2.0.4, xhr@^2.3.3: - version "2.5.0" - resolved "https://registry.yarnpkg.com/xhr/-/xhr-2.5.0.tgz#bed8d1676d5ca36108667692b74b316c496e49dd" - integrity sha512-4nlO/14t3BNUZRXIXfXe+3N6w3s1KoxcJUUURctd64BLRe67E4gRwp4PjywtDY72fXpZ1y6Ch0VZQRY/gMPzzQ== - dependencies: - global "~4.3.0" - is-function "^1.0.1" - parse-headers "^2.0.0" - xtend "^4.0.0" - -xml2js@0.4.19: - version "0.4.19" - resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.4.19.tgz#686c20f213209e94abf0d1bcf1efaa291c7827a7" - integrity sha512-esZnJZJOiJR9wWKMyuvSE1y6Dq5LCuJanqhxslH2bxM6duahNZ+HMpCLhBQGZkbX6xRf8x1Y2eJlgt2q3qo49Q== - dependencies: - sax ">=0.6.0" - xmlbuilder "~9.0.1" - -xmlbuilder@~9.0.1: - version "9.0.7" - resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-9.0.7.tgz#132ee63d2ec5565c557e20f4c22df9aca686b10d" - integrity sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0= - -xtend@^4.0.0: - version "4.0.2" - resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" - integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== - -yaeti@^0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/yaeti/-/yaeti-0.0.6.tgz#f26f484d72684cf42bedfb76970aa1608fbf9577" - integrity sha1-8m9ITXJoTPQr7ft2lwqhYI+/lXc= - -yallist@^3.0.0, yallist@^3.0.3: - version "3.1.1" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" - integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== + "web3-core" "1.3.0" + "web3-core-helpers" "1.3.0" + "web3-core-method" "1.3.0" + "web3-net" "1.3.0" + "web3-utils" "1.3.0" + +"web3-eth@1.3.0": + "version" "1.3.0" + dependencies: + "underscore" "1.9.1" + "web3-core" "1.3.0" + "web3-core-helpers" "1.3.0" + "web3-core-method" "1.3.0" + "web3-core-subscriptions" "1.3.0" + "web3-eth-abi" "1.3.0" + "web3-eth-accounts" "1.3.0" + "web3-eth-contract" "1.3.0" + "web3-eth-ens" "1.3.0" + "web3-eth-iban" "1.3.0" + "web3-eth-personal" "1.3.0" + "web3-net" "1.3.0" + "web3-utils" "1.3.0" + +"web3-net@1.3.0": + "version" "1.3.0" + dependencies: + "web3-core" "1.3.0" + "web3-core-method" "1.3.0" + "web3-utils" "1.3.0" + +"web3-providers-http@1.3.0": + "version" "1.3.0" + dependencies: + "web3-core-helpers" "1.3.0" + "xhr2-cookies" "1.1.0" + +"web3-providers-ipc@1.3.0": + "version" "1.3.0" + dependencies: + "oboe" "2.1.5" + "underscore" "1.9.1" + "web3-core-helpers" "1.3.0" + +"web3-providers-ws@1.3.0": + "version" "1.3.0" + dependencies: + "eventemitter3" "4.0.4" + "underscore" "1.9.1" + "web3-core-helpers" "1.3.0" + "websocket" "^1.0.32" + +"web3-shh@1.3.0": + "version" "1.3.0" + dependencies: + "web3-core" "1.3.0" + "web3-core-method" "1.3.0" + "web3-core-subscriptions" "1.3.0" + "web3-net" "1.3.0" + +"web3-utils@1.3.0": + "version" "1.3.0" + dependencies: + "bn.js" "^4.11.9" + "eth-lib" "0.2.8" + "ethereum-bloom-filters" "^1.0.6" + "ethjs-unit" "0.1.6" + "number-to-bn" "1.7.0" + "randombytes" "^2.1.0" + "underscore" "1.9.1" + "utf8" "3.0.0" + +"web3@^1.3.0": + "version" "1.3.0" + dependencies: + "web3-bzz" "1.3.0" + "web3-core" "1.3.0" + "web3-eth" "1.3.0" + "web3-eth-personal" "1.3.0" + "web3-net" "1.3.0" + "web3-shh" "1.3.0" + "web3-utils" "1.3.0" + +"websocket@^1.0.32": + "version" "1.0.32" + dependencies: + "bufferutil" "^4.0.1" + "debug" "^2.2.0" + "es5-ext" "^0.10.50" + "typedarray-to-buffer" "^3.1.5" + "utf-8-validate" "^5.0.2" + "yaeti" "^0.0.6" + +"which@^2.0.1": + "integrity" "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==" + "resolved" "https://registry.npmjs.org/which/-/which-2.0.2.tgz" + "version" "2.0.2" + dependencies: + "isexe" "^2.0.0" + +"widest-line@^3.1.0": + "integrity" "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==" + "resolved" "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz" + "version" "3.1.0" + dependencies: + "string-width" "^4.0.0" + +"wrappy@1": + "integrity" "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + "resolved" "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" + "version" "1.0.2" + +"write-file-atomic@^3.0.0": + "integrity" "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==" + "resolved" "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz" + "version" "3.0.3" + dependencies: + "imurmurhash" "^0.1.4" + "is-typedarray" "^1.0.0" + "signal-exit" "^3.0.2" + "typedarray-to-buffer" "^3.1.5" + +"ws@^3.0.0": + "integrity" "sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==" + "resolved" "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz" + "version" "3.3.3" + dependencies: + "async-limiter" "~1.0.0" + "safe-buffer" "~5.1.0" + "ultron" "~1.1.0" + +"ws@^7.2.1": + "integrity" "sha512-D3RuNkynyHmEJIpD2qrgVkc9DQ23OrN/moAwZX4L8DfvszsJxpjQuUq3LMx6HoYji9fbIOBY18XWBsAux1ZZUA==" + "resolved" "https://registry.npmjs.org/ws/-/ws-7.3.1.tgz" + "version" "7.3.1" + +"xdg-basedir@^4.0.0": + "integrity" "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==" + "resolved" "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz" + "version" "4.0.0" + +"xhr-request-promise@^0.1.2": + "integrity" "sha512-YUBytBsuwgitWtdRzXDDkWAXzhdGB8bYm0sSzMPZT7Z2MBjMSTHFsyCT1yCRATY+XC69DUrQraRAEgcoCRaIPg==" + "resolved" "https://registry.npmjs.org/xhr-request-promise/-/xhr-request-promise-0.1.3.tgz" + "version" "0.1.3" + dependencies: + "xhr-request" "^1.1.0" + +"xhr-request@^1.0.1", "xhr-request@^1.1.0": + "integrity" "sha512-Y7qzEaR3FDtL3fP30k9wO/e+FBnBByZeybKOhASsGP30NIkRAAkKD/sCnLvgEfAIEC1rcmK7YG8f4oEnIrrWzA==" + "resolved" "https://registry.npmjs.org/xhr-request/-/xhr-request-1.1.0.tgz" + "version" "1.1.0" + dependencies: + "buffer-to-arraybuffer" "^0.0.5" + "object-assign" "^4.1.1" + "query-string" "^5.0.1" + "simple-get" "^2.7.0" + "timed-out" "^4.0.1" + "url-set-query" "^1.0.0" + "xhr" "^2.0.4" + +"xhr@^2.0.4", "xhr@^2.3.3": + "integrity" "sha512-4nlO/14t3BNUZRXIXfXe+3N6w3s1KoxcJUUURctd64BLRe67E4gRwp4PjywtDY72fXpZ1y6Ch0VZQRY/gMPzzQ==" + "resolved" "https://registry.npmjs.org/xhr/-/xhr-2.5.0.tgz" + "version" "2.5.0" + dependencies: + "global" "~4.3.0" + "is-function" "^1.0.1" + "parse-headers" "^2.0.0" + "xtend" "^4.0.0" + +"xhr2-cookies@1.1.0": + "integrity" "sha1-fXdEnQmZGX8VXLc7I99yUF7YnUg=" + "resolved" "https://registry.npmjs.org/xhr2-cookies/-/xhr2-cookies-1.1.0.tgz" + "version" "1.1.0" + dependencies: + "cookiejar" "^2.1.1" + +"xml2js@0.4.19": + "integrity" "sha512-esZnJZJOiJR9wWKMyuvSE1y6Dq5LCuJanqhxslH2bxM6duahNZ+HMpCLhBQGZkbX6xRf8x1Y2eJlgt2q3qo49Q==" + "resolved" "https://registry.npmjs.org/xml2js/-/xml2js-0.4.19.tgz" + "version" "0.4.19" + dependencies: + "sax" ">=0.6.0" + "xmlbuilder" "~9.0.1" + +"xmlbuilder@~9.0.1": + "integrity" "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=" + "resolved" "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz" + "version" "9.0.7" + +"xtend@^4.0.0": + "integrity" "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" + "resolved" "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz" + "version" "4.0.2" + +"yaeti@^0.0.6": + "integrity" "sha1-8m9ITXJoTPQr7ft2lwqhYI+/lXc=" + "resolved" "https://registry.npmjs.org/yaeti/-/yaeti-0.0.6.tgz" + "version" "0.0.6" + +"yallist@^3.0.0", "yallist@^3.0.3": + "integrity" "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" + "resolved" "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz" + "version" "3.1.1"