diff --git a/.gitignore b/.gitignore index 35c963e..a38fc8c 100644 --- a/.gitignore +++ b/.gitignore @@ -1,12 +1,7 @@ -**/node_modules -**/build -**/generated +node_modules +build +build-gc +generated +generated-gc **/.DS_Store -**/artifacts/ -**/env/ -**/.env -**/.history -**/coverage* -**/deployments -.devcontainer -**/.bin/ +tests/.bin diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 0000000..efe259a --- /dev/null +++ b/.prettierrc @@ -0,0 +1,5 @@ +{ + "tabWidth": 2, + "singleQuote": false, + "trailingComma": "es5" +} diff --git a/README.md b/README.md index 98aa4b2..ad13ee1 100644 --- a/README.md +++ b/README.md @@ -1,21 +1,23 @@ # GNO Voting Power -This repo is a collection of subgraphs which aggregate the balance of GNO held in multiple multiple contracts on several networks. + +This repo is a collection of subgraphs which aggregate the balance of GNO held in multiple contracts on several networks. Currently, it tracks GNO balances in: -* Ethereum Mainnet: - - [ ] GNO - - [ ] lGNO - - [ ] Uniswap v3 - - [ ] Balancer -* Gnosis Chain: + +- Ethereum Mainnet: + - [x] GNO + - [x] LGNO + - [x] Uniswap v3 + - [x] Balancer +- Gnosis Chain: - [x] GNO - - [x] mgno - - [x] lgno - - [x] staking deposits + - [x] mGNO + - [x] sGNO + - [x] LGNO + - [x] Beacon Chain validator deposits - [x] 1Hive - - [x] swapper - - [x] sushiswap - - [x] elk - - [x] baoswap - - [ ] symetric - - [ ] agave \ No newline at end of file + - [x] Swapper + - [x] SushiSwap + - [x] Elk + - [x] Baoswap + - [x] Symmetric diff --git a/packages/subgraph-base/abis/ERC20.json b/abis/ERC20.json similarity index 100% rename from packages/subgraph-base/abis/ERC20.json rename to abis/ERC20.json diff --git a/abis/SBCDepositContract.json b/abis/SBCDepositContract.json new file mode 100644 index 0000000..d8186b4 --- /dev/null +++ b/abis/SBCDepositContract.json @@ -0,0 +1,194 @@ +[ + { + "type": "constructor", + "stateMutability": "nonpayable", + "inputs": [ + { "type": "address", "name": "_token", "internalType": "address" } + ] + }, + { + "type": "event", + "name": "DepositEvent", + "inputs": [ + { + "type": "bytes", + "name": "pubkey", + "internalType": "bytes", + "indexed": false + }, + { + "type": "bytes", + "name": "withdrawal_credentials", + "internalType": "bytes", + "indexed": false + }, + { + "type": "bytes", + "name": "amount", + "internalType": "bytes", + "indexed": false + }, + { + "type": "bytes", + "name": "signature", + "internalType": "bytes", + "indexed": false + }, + { + "type": "bytes", + "name": "index", + "internalType": "bytes", + "indexed": false + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "Paused", + "inputs": [ + { + "type": "address", + "name": "account", + "internalType": "address", + "indexed": false + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "Unpaused", + "inputs": [ + { + "type": "address", + "name": "account", + "internalType": "address", + "indexed": false + } + ], + "anonymous": false + }, + { + "type": "function", + "stateMutability": "nonpayable", + "outputs": [], + "name": "batchDeposit", + "inputs": [ + { "type": "bytes", "name": "pubkeys", "internalType": "bytes" }, + { + "type": "bytes", + "name": "withdrawal_credentials", + "internalType": "bytes" + }, + { "type": "bytes", "name": "signatures", "internalType": "bytes" }, + { + "type": "bytes32[]", + "name": "deposit_data_roots", + "internalType": "bytes32[]" + } + ] + }, + { + "type": "function", + "stateMutability": "nonpayable", + "outputs": [], + "name": "claimTokens", + "inputs": [ + { "type": "address", "name": "_token", "internalType": "address" }, + { "type": "address", "name": "_to", "internalType": "address" } + ] + }, + { + "type": "function", + "stateMutability": "nonpayable", + "outputs": [], + "name": "deposit", + "inputs": [ + { "type": "bytes", "name": "pubkey", "internalType": "bytes" }, + { + "type": "bytes", + "name": "withdrawal_credentials", + "internalType": "bytes" + }, + { "type": "bytes", "name": "signature", "internalType": "bytes" }, + { + "type": "bytes32", + "name": "deposit_data_root", + "internalType": "bytes32" + }, + { "type": "uint256", "name": "stake_amount", "internalType": "uint256" } + ] + }, + { + "type": "function", + "stateMutability": "view", + "outputs": [{ "type": "bytes", "name": "", "internalType": "bytes" }], + "name": "get_deposit_count", + "inputs": [] + }, + { + "type": "function", + "stateMutability": "view", + "outputs": [{ "type": "bytes32", "name": "", "internalType": "bytes32" }], + "name": "get_deposit_root", + "inputs": [] + }, + { + "type": "function", + "stateMutability": "nonpayable", + "outputs": [{ "type": "bool", "name": "", "internalType": "bool" }], + "name": "onTokenTransfer", + "inputs": [ + { "type": "address", "name": "", "internalType": "address" }, + { "type": "uint256", "name": "stake_amount", "internalType": "uint256" }, + { "type": "bytes", "name": "data", "internalType": "bytes" } + ] + }, + { + "type": "function", + "stateMutability": "nonpayable", + "outputs": [], + "name": "pause", + "inputs": [] + }, + { + "type": "function", + "stateMutability": "view", + "outputs": [{ "type": "bool", "name": "", "internalType": "bool" }], + "name": "paused", + "inputs": [] + }, + { + "type": "function", + "stateMutability": "view", + "outputs": [ + { "type": "address", "name": "", "internalType": "contract IERC20" } + ], + "name": "stake_token", + "inputs": [] + }, + { + "type": "function", + "stateMutability": "pure", + "outputs": [{ "type": "bool", "name": "", "internalType": "bool" }], + "name": "supportsInterface", + "inputs": [ + { "type": "bytes4", "name": "interfaceId", "internalType": "bytes4" } + ] + }, + { + "type": "function", + "stateMutability": "nonpayable", + "outputs": [], + "name": "unpause", + "inputs": [] + }, + { + "type": "function", + "stateMutability": "view", + "outputs": [{ "type": "bytes32", "name": "", "internalType": "bytes32" }], + "name": "validator_withdrawal_credentials", + "inputs": [{ "type": "bytes", "name": "", "internalType": "bytes" }] + } +] diff --git a/packages/subgraph-base/abis/SBCToken.json b/abis/SBCToken.json similarity index 100% rename from packages/subgraph-base/abis/SBCToken.json rename to abis/SBCToken.json diff --git a/abis/balancerV1/BFactory.json b/abis/balancerV1/BFactory.json new file mode 100644 index 0000000..bf97f3b --- /dev/null +++ b/abis/balancerV1/BFactory.json @@ -0,0 +1,115 @@ +{ + "contractName": "BFactory", + "abi": [{ + "inputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, { + "anonymous": false, + "inputs": [{ + "indexed": true, + "internalType": "address", + "name": "caller", + "type": "address" + }, { + "indexed": true, + "internalType": "address", + "name": "blabs", + "type": "address" + }], + "name": "LOG_BLABS", + "type": "event" + }, { + "anonymous": false, + "inputs": [{ + "indexed": true, + "internalType": "address", + "name": "caller", + "type": "address" + }, { + "indexed": true, + "internalType": "address", + "name": "pool", + "type": "address" + }], + "name": "LOG_NEW_POOL", + "type": "event" + }, { + "constant": false, + "inputs": [{ + "internalType": "contract BPool", + "name": "pool", + "type": "address" + }], + "name": "collect", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, { + "constant": true, + "inputs": [], + "name": "getBLabs", + "outputs": [{ + "internalType": "address", + "name": "", + "type": "address" + }], + "payable": false, + "stateMutability": "view", + "type": "function" + }, { + "constant": true, + "inputs": [], + "name": "getColor", + "outputs": [{ + "internalType": "bytes32", + "name": "", + "type": "bytes32" + }], + "payable": false, + "stateMutability": "view", + "type": "function" + }, { + "constant": true, + "inputs": [{ + "internalType": "address", + "name": "b", + "type": "address" + }], + "name": "isBPool", + "outputs": [{ + "internalType": "bool", + "name": "", + "type": "bool" + }], + "payable": false, + "stateMutability": "view", + "type": "function" + }, { + "constant": false, + "inputs": [], + "name": "newBPool", + "outputs": [{ + "internalType": "contract BPool", + "name": "", + "type": "address" + }], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, { + "constant": false, + "inputs": [{ + "internalType": "address", + "name": "b", + "type": "address" + }], + "name": "setBLabs", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }] +} \ No newline at end of file diff --git a/abis/balancerV1/BPool.json b/abis/balancerV1/BPool.json new file mode 100644 index 0000000..71513d3 --- /dev/null +++ b/abis/balancerV1/BPool.json @@ -0,0 +1,1602 @@ +{ + "contractName": "BPool", + "abi": [ + { + "inputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "src", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "dst", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amt", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": true, + "inputs": [ + { + "indexed": true, + "internalType": "bytes4", + "name": "sig", + "type": "bytes4" + }, + { + "indexed": true, + "internalType": "address", + "name": "caller", + "type": "address" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "LOG_CALL", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "caller", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "tokenOut", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "tokenAmountOut", + "type": "uint256" + } + ], + "name": "LOG_EXIT", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "caller", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "tokenIn", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "tokenAmountIn", + "type": "uint256" + } + ], + "name": "LOG_JOIN", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "caller", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "tokenIn", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "tokenOut", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "tokenAmountIn", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "tokenAmountOut", + "type": "uint256" + } + ], + "name": "LOG_SWAP", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "src", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "dst", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amt", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "constant": true, + "inputs": [], + "name": "BONE", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "BPOW_PRECISION", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "EXIT_FEE", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "INIT_POOL_SUPPLY", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "MAX_BOUND_TOKENS", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "MAX_BPOW_BASE", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "MAX_FEE", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "MAX_TOTAL_WEIGHT", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "MAX_WEIGHT", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "MIN_BALANCE", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "MIN_BOUND_TOKENS", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "MIN_BPOW_BASE", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "MIN_FEE", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "MIN_WEIGHT", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "src", + "type": "address" + }, + { + "internalType": "address", + "name": "dst", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "dst", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amt", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "whom", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "denorm", + "type": "uint256" + } + ], + "name": "bind", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "uint256", + "name": "tokenBalanceIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "tokenWeightIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "tokenBalanceOut", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "tokenWeightOut", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "tokenAmountOut", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "swapFee", + "type": "uint256" + } + ], + "name": "calcInGivenOut", + "outputs": [ + { + "internalType": "uint256", + "name": "tokenAmountIn", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "pure", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "uint256", + "name": "tokenBalanceIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "tokenWeightIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "tokenBalanceOut", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "tokenWeightOut", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "tokenAmountIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "swapFee", + "type": "uint256" + } + ], + "name": "calcOutGivenIn", + "outputs": [ + { + "internalType": "uint256", + "name": "tokenAmountOut", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "pure", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "uint256", + "name": "tokenBalanceOut", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "tokenWeightOut", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "poolSupply", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "totalWeight", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "tokenAmountOut", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "swapFee", + "type": "uint256" + } + ], + "name": "calcPoolInGivenSingleOut", + "outputs": [ + { + "internalType": "uint256", + "name": "poolAmountIn", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "pure", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "uint256", + "name": "tokenBalanceIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "tokenWeightIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "poolSupply", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "totalWeight", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "tokenAmountIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "swapFee", + "type": "uint256" + } + ], + "name": "calcPoolOutGivenSingleIn", + "outputs": [ + { + "internalType": "uint256", + "name": "poolAmountOut", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "pure", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "uint256", + "name": "tokenBalanceIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "tokenWeightIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "poolSupply", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "totalWeight", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "poolAmountOut", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "swapFee", + "type": "uint256" + } + ], + "name": "calcSingleInGivenPoolOut", + "outputs": [ + { + "internalType": "uint256", + "name": "tokenAmountIn", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "pure", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "uint256", + "name": "tokenBalanceOut", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "tokenWeightOut", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "poolSupply", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "totalWeight", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "poolAmountIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "swapFee", + "type": "uint256" + } + ], + "name": "calcSingleOutGivenPoolIn", + "outputs": [ + { + "internalType": "uint256", + "name": "tokenAmountOut", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "pure", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "uint256", + "name": "tokenBalanceIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "tokenWeightIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "tokenBalanceOut", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "tokenWeightOut", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "swapFee", + "type": "uint256" + } + ], + "name": "calcSpotPrice", + "outputs": [ + { + "internalType": "uint256", + "name": "spotPrice", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "pure", + "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": "dst", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amt", + "type": "uint256" + } + ], + "name": "decreaseApproval", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "poolAmountIn", + "type": "uint256" + }, + { + "internalType": "uint256[]", + "name": "minAmountsOut", + "type": "uint256[]" + } + ], + "name": "exitPool", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "tokenOut", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenAmountOut", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "maxPoolAmountIn", + "type": "uint256" + } + ], + "name": "exitswapExternAmountOut", + "outputs": [ + { + "internalType": "uint256", + "name": "poolAmountIn", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "tokenOut", + "type": "address" + }, + { + "internalType": "uint256", + "name": "poolAmountIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "minAmountOut", + "type": "uint256" + } + ], + "name": "exitswapPoolAmountIn", + "outputs": [ + { + "internalType": "uint256", + "name": "tokenAmountOut", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "finalize", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "name": "getBalance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "getColor", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "getController", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "getCurrentTokens", + "outputs": [ + { + "internalType": "address[]", + "name": "tokens", + "type": "address[]" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "name": "getDenormalizedWeight", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "getFinalTokens", + "outputs": [ + { + "internalType": "address[]", + "name": "tokens", + "type": "address[]" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "name": "getNormalizedWeight", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "getNumTokens", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "tokenIn", + "type": "address" + }, + { + "internalType": "address", + "name": "tokenOut", + "type": "address" + } + ], + "name": "getSpotPrice", + "outputs": [ + { + "internalType": "uint256", + "name": "spotPrice", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "tokenIn", + "type": "address" + }, + { + "internalType": "address", + "name": "tokenOut", + "type": "address" + } + ], + "name": "getSpotPriceSansFee", + "outputs": [ + { + "internalType": "uint256", + "name": "spotPrice", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "getSwapFee", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "getTotalDenormalizedWeight", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "name": "gulp", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "dst", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amt", + "type": "uint256" + } + ], + "name": "increaseApproval", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "t", + "type": "address" + } + ], + "name": "isBound", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "isFinalized", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "isPublicSwap", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "poolAmountOut", + "type": "uint256" + }, + { + "internalType": "uint256[]", + "name": "maxAmountsIn", + "type": "uint256[]" + } + ], + "name": "joinPool", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "tokenIn", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenAmountIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "minPoolAmountOut", + "type": "uint256" + } + ], + "name": "joinswapExternAmountIn", + "outputs": [ + { + "internalType": "uint256", + "name": "poolAmountOut", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "tokenIn", + "type": "address" + }, + { + "internalType": "uint256", + "name": "poolAmountOut", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "maxAmountIn", + "type": "uint256" + } + ], + "name": "joinswapPoolAmountOut", + "outputs": [ + { + "internalType": "uint256", + "name": "tokenAmountIn", + "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": false, + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "denorm", + "type": "uint256" + } + ], + "name": "rebind", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "manager", + "type": "address" + } + ], + "name": "setController", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "bool", + "name": "public_", + "type": "bool" + } + ], + "name": "setPublicSwap", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "swapFee", + "type": "uint256" + } + ], + "name": "setSwapFee", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "tokenIn", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenAmountIn", + "type": "uint256" + }, + { + "internalType": "address", + "name": "tokenOut", + "type": "address" + }, + { + "internalType": "uint256", + "name": "minAmountOut", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "maxPrice", + "type": "uint256" + } + ], + "name": "swapExactAmountIn", + "outputs": [ + { + "internalType": "uint256", + "name": "tokenAmountOut", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "spotPriceAfter", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "tokenIn", + "type": "address" + }, + { + "internalType": "uint256", + "name": "maxAmountIn", + "type": "uint256" + }, + { + "internalType": "address", + "name": "tokenOut", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenAmountOut", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "maxPrice", + "type": "uint256" + } + ], + "name": "swapExactAmountOut", + "outputs": [ + { + "internalType": "uint256", + "name": "tokenAmountIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "spotPriceAfter", + "type": "uint256" + } + ], + "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": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "dst", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amt", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "src", + "type": "address" + }, + { + "internalType": "address", + "name": "dst", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amt", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "name": "unbind", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }] +} \ No newline at end of file diff --git a/abis/balancerV1/CRPFactory.json b/abis/balancerV1/CRPFactory.json new file mode 100644 index 0000000..689fb0f --- /dev/null +++ b/abis/balancerV1/CRPFactory.json @@ -0,0 +1,3467 @@ +{ + "contractName": "CRPFactory", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "caller", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "pool", + "type": "address" + } + ], + "name": "LogNewCrp", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "addr", + "type": "address" + } + ], + "name": "isCrp", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "factoryAddress", + "type": "address" + }, + { + "internalType": "string", + "name": "symbol", + "type": "string" + }, + { + "internalType": "address[]", + "name": "tokens", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "startBalances", + "type": "uint256[]" + }, + { + "internalType": "uint256[]", + "name": "startWeights", + "type": "uint256[]" + }, + { + "internalType": "uint256", + "name": "swapFee", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "bool", + "name": "canPauseSwapping", + "type": "bool" + }, + { + "internalType": "bool", + "name": "canChangeSwapFee", + "type": "bool" + }, + { + "internalType": "bool", + "name": "canChangeWeights", + "type": "bool" + }, + { + "internalType": "bool", + "name": "canAddRemoveTokens", + "type": "bool" + }, + { + "internalType": "bool", + "name": "canWhitelistLPs", + "type": "bool" + }, + { + "internalType": "bool", + "name": "canChangeCap", + "type": "bool" + } + ], + "internalType": "struct RightsManager.Rights", + "name": "rights", + "type": "tuple" + } + ], + "name": "newCrp", + "outputs": [ + { + "internalType": "contract ConfigurableRightsPool", + "name": "", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"LogNewCrp\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"isCrp\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"factoryAddress\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"},{\"internalType\":\"address[]\",\"name\":\"tokens\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"startBalances\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"startWeights\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"swapFee\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"canPauseSwapping\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"canChangeSwapFee\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"canChangeWeights\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"canAddRemoveTokens\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"canWhitelistLPs\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"canChangeCap\",\"type\":\"bool\"}],\"internalType\":\"struct RightsManager.Rights\",\"name\":\"rights\",\"type\":\"tuple\"}],\"name\":\"newCrp\",\"outputs\":[{\"internalType\":\"contract ConfigurableRightsPool\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Balancer Labs\",\"details\":\"Rights are held in a corresponding struct in ConfigurableRightsPool Index values are as follows: 0: canPauseSwapping - can setPublicSwap back to false after turning it on by default, it is off on initialization and can only be turned on 1: canChangeSwapFee - can setSwapFee after initialization (by default, it is fixed at create time) 2: canChangeWeights - can bind new token weights (allowed by default in base pool) 3: canAddRemoveTokens - can bind/unbind tokens (allowed by default in base pool) 4: canWhitelistLPs - if set, only whitelisted addresses can join pools (enables private pools with more than one LP)\",\"kind\":\"dev\",\"methods\":{\"isCrp(address)\":{\"params\":{\"addr\":\"- address to check\"},\"returns\":{\"_0\":\"boolean indicating whether it is a CRP\"}},\"newCrp(address,string,address[],uint256[],uint256[],uint256,(bool,bool,bool,bool,bool,bool))\":{\"details\":\"emits a LogNewCRP event\",\"params\":{\"factoryAddress\":\"- the BFactory instance used to create the underlying pool\",\"rights\":\"- struct of permissions, configuring this CRP instance (see above for definitions)\",\"startBalances\":\"- initial balances (parallel array)\",\"startWeights\":\"- initial weights (parallal array)\",\"swapFee\":\"- initial swap fee\",\"tokens\":\"- initial set of tokens\"}}},\"title\":\"Configurable Rights Pool Factory - create parameterized smart pools\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"isCrp(address)\":{\"notice\":\"Check to see if a given address is a CRP\"},\"newCrp(address,string,address[],uint256[],uint256[],uint256,(bool,bool,bool,bool,bool,bool))\":{\"notice\":\"Create a new CRP\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"/Users/fabien/WebstormProjects/balancer/configurable-rights-pool/contracts/CRPFactory.sol\":\"CRPFactory\"},\"evmVersion\":\"byzantium\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":30},\"remappings\":[]},\"sources\":{\"/Users/fabien/WebstormProjects/balancer/configurable-rights-pool/contracts/CRPFactory.sol\":{\"keccak256\":\"0xb8bb049352ca13059b821cae91d59377a26a759e370cedd2497f8a1cacd749c6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://f5460b2858e0f2d3ca9c44007f267375d39ec84dce91e7bb691067dc992826bd\",\"dweb:/ipfs/QmT7EY84Vsej3NVazN6a83tf3VRibqYkahBh36Dgox3cz7\"]},\"/Users/fabien/WebstormProjects/balancer/configurable-rights-pool/contracts/ConfigurableRightsPool.sol\":{\"keccak256\":\"0x0a93e9132709789e44ed593c90d0f2b59c22b1cea8ea1bf20b610ad2d000162a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://1af4c703a8f0c0d8332f49a1e30e6730d3857183e315eb135b3044783efb83d5\",\"dweb:/ipfs/QmTw6wGiKESQZ3nu5RTton9mdNeiHBPG9ASsYxn9e8XU7r\"]},\"/Users/fabien/WebstormProjects/balancer/configurable-rights-pool/contracts/IBFactory.sol\":{\"keccak256\":\"0x6f433d6961b745bee94691a67d68a9d08adb13b62217e0edab604460078aedc5\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6ac76bbbce89737ff76900e164d13aa2fff283420a9fb9196fa23a72d308c759\",\"dweb:/ipfs/QmfL7TepHG39Ccu9VZs3DmxxrSHK9XGvB36ySZcjEuUXo5\"]},\"/Users/fabien/WebstormProjects/balancer/configurable-rights-pool/contracts/PCToken.sol\":{\"keccak256\":\"0x4549a447718e817ab3d4fc7eac834c394a13689f9862e9b679a7056e7fb393ce\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://67e8bfafcb24e9a0824733252e1ecd02acddac6df129d380e9ee900a1be057e2\",\"dweb:/ipfs/QmPVZmvbD9zTL4NgBwvRd7hRgP3c7N6ywWGrpbe3Mvu9Vm\"]},\"/Users/fabien/WebstormProjects/balancer/configurable-rights-pool/contracts/utils/BalancerOwnable.sol\":{\"keccak256\":\"0x9d7c9c243b88c97d2109db7910b71ece79a7675f33744168a0705845e1cb700a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e5c226d0d0e161891482ab53736e2d016c7f9bfd41ed51631360eaa53a130878\",\"dweb:/ipfs/QmcwpNgoyCoLuMc8B4iSwsPXDSBKzRGKyFQeP1ryH881mc\"]},\"/Users/fabien/WebstormProjects/balancer/configurable-rights-pool/contracts/utils/BalancerReentrancyGuard.sol\":{\"keccak256\":\"0x0fc8166298c269c9718ca1b98832d501261e61331f6ed684159488b62a513b73\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://232e31d99bcde73b39fd11cd6fd71ce3528b2baf669c4d2e58b9838274442b45\",\"dweb:/ipfs/QmXoxwg8QKCug1y3WY5NxnAR6mE5h9S4YtUBZsWzasTvij\"]},\"/Users/fabien/WebstormProjects/balancer/configurable-rights-pool/libraries/BalancerConstants.sol\":{\"keccak256\":\"0xc56bc238b6a612a4777bb1fe62014d33863c65fbe5fd1fee3e578287243db37a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://9646707aad46a5cd946de9d73996963c9410600527ba6bf84615a11b8193e832\",\"dweb:/ipfs/QmYRZb3qtjG9rwZ9zARi3B2izgZgJ8poNeqj6f96KRXU98\"]},\"/Users/fabien/WebstormProjects/balancer/configurable-rights-pool/libraries/BalancerSafeMath.sol\":{\"keccak256\":\"0x4f63e5431c2af366d3014c7c1ac662db1b3d81abec8f66452c3d8ceeb6d3fc42\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://cda0f32f8096f523cef25dbc239cd9fdf8437541788776f614ddc69daf50b182\",\"dweb:/ipfs/QmRde4sYKDLMih4vapFMoYk6jxRffmYM4aFwJtUzV6q5J1\"]},\"/Users/fabien/WebstormProjects/balancer/configurable-rights-pool/libraries/RightsManager.sol\":{\"keccak256\":\"0xa2d08bbba1a181eb4220ae91871c9e988c66d8628db9b675a6b69d8d7dcbeb8d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://ad5d966d86f71d8c60c8b6cd1d202ae566be3f4bdef4eaec635a0c3cfb85fc9c\",\"dweb:/ipfs/QmRcP5QGnMEoekQZVXftrvj5sYzjJ6GRKtHxLiYuun5kZV\"]},\"/Users/fabien/WebstormProjects/balancer/configurable-rights-pool/libraries/SmartPoolManager.sol\":{\"keccak256\":\"0xf56a29d8e2ca9e06276e2e2be8a4c4094ce78652bd02f51c55de519a58abdb5b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c2d7686a34c46ab04c9f92d1fef7d3acb8ccedf55ca0d0741d9533830bac7bcf\",\"dweb:/ipfs/QmdURGHBL7prXbZ9g3VMdMrpKS8qaiUNNJL9xEEStUNiXJ\"]}},\"version\":1}", + "bytecode": "0x608060405234801561001057600080fd5b50615ff5806100206000396000f3fe60806040523480156200001157600080fd5b50600436106200003d5760e060020a60003504635f93074c811462000042578063dc19e8421462000071575b600080fd5b62000059620000533660046200033f565b62000097565b60405162000068919062000511565b60405180910390f35b62000088620000823660046200031a565b62000229565b60405162000068919062000608565b60006002881015620000c95760405160e560020a62461bcd028152600401620000c09062000681565b60405180910390fd5b858814620000ee5760405160e560020a62461bcd028152600401620000c0906200064a565b838814620001135760405160e560020a62461bcd028152600401620000c09062000613565b60008c8c8c8c8c8c8c8c8c8c8c6040516200012e9062000247565b620001449b9a9998979695949392919062000525565b604051809103906000f08015801562000161573d6000803e3d6000fd5b50600160a060020a03811660008181526020819052604090819020805460ff191660011790555160e060020a6392eefe9b028152919250906392eefe9b90620001af90339060040162000511565b600060405180830381600087803b158015620001ca57600080fd5b505af1158015620001df573d6000803e3d6000fd5b5050604051600160a060020a03841692503391507f8aaa45dbe91f274e1c80489691f3d62dbf595d587fcc6a989fa27696e7c2a23290600090a39c9b505050505050505050505050565b600160a060020a031660009081526020819052604090205460ff1690565b6158e080620006e083390190565b8035600160a060020a03811681146200026d57600080fd5b92915050565b60008083601f84011262000285578182fd5b50813567ffffffffffffffff8111156200029d578182fd5b6020830191508360208083028501011115620002b857600080fd5b9250929050565b60008083601f840112620002d1578182fd5b50813567ffffffffffffffff811115620002e9578182fd5b602083019150836020828501011115620002b857600080fd5b600060c0828403121562000314578081fd5b50919050565b6000602082840312156200032c578081fd5b62000338838362000255565b9392505050565b60008060008060008060008060008060006101808c8e03121562000361578687fd5b6200036d8d8d62000255565b9a5067ffffffffffffffff8060208e0135111562000389578788fd5b6200039b8e60208f01358f01620002bf565b909b50995060408d0135811015620003b1578788fd5b620003c38e60408f01358f0162000273565b909950975060608d0135811015620003d9578687fd5b620003eb8e60608f01358f0162000273565b909750955060808d013581101562000401578485fd5b50620004148d60808e01358e0162000273565b909450925060a08c013591506200042f8d60c08e0162000302565b90509295989b509295989b9093969950565b600160a060020a0316815260200190565b8183526000600160fb60020a038311156200046b578081fd5b6020830280836020870137939093016020019283525090919050565b80356200049481620006cd565b151582526020810135620004a881620006cd565b151560208301526040810135620004bf81620006cd565b151560408301526060810135620004d681620006cd565b151560608301526080810135620004ed81620006cd565b1515608083015260a08101356200050481620006cd565b80151560a0840152505050565b600160a060020a0391909116815260200190565b600160a060020a038c168152610180602082018190526000906200054c8c848301620006b8565b90506200055b8c828f620006c1565b601f8c01601f191601828103604084015280620005798b82620006b8565b90508b9150825b8b811015620005b25760208301620005a4836200059e838762000255565b62000441565b909350915060010162000580565b508381036060850152620005c8818a8c62000452565b9150508281036080840152620005e081878962000452565b9150508360a0830152620005f860c083018462000487565b9c9b505050505050505050505050565b901515815260200190565b6020808252601a908201527f4552525f53544152545f574549474854535f4d49534d41544348000000000000604082015260600190565b6020808252601b908201527f4552525f53544152545f42414c414e4345535f4d49534d415443480000000000604082015260600190565b60208082526012908201527f4552525f544f4f5f4645575f544f4b454e530000000000000000000000000000604082015260600190565b90815260200190565b82818337506000910152565b8015158114620006dc57600080fd5b5056fe60806040523480156200001157600080fd5b50604051620058e0380380620058e083398101604081905262000034916200069f565b855186906200004b9060039060208401906200030f565b505060048054600160a060020a031916331790556001600555620f4240670de0b6b3a764000004821015620000b7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620000ae906200082a565b60405180910390fd5b67016345785d8a0000821115620000fc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620000ae906200082a565b84518451146200013a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620000ae90620007bc565b845183511462000178576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620000ae9062000785565b600285511015620001b7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620000ae90620007f3565b600885511115620001f6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620000ae9062000861565b60068054600160a060020a031916600160a060020a03891617905580516008805460208085015160408601516060870151608088015160a089015160ff199096169715159790971761ff001916610100931515939093029290921762ff0000191662010000911515919091021763ff00000019166301000000911515919091021764ff000000001916640100000000941515949094029390931765ff0000000000191665010000000000911515919091021790558551620002be91600e919088019062000394565b508351620002d490600f906020870190620003fa565b508251620002ea906012906020860190620003fa565b5050600d555050600a60148190556015555050600060105550600019601755620008f1565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200035257805160ff191683800117855562000382565b8280016001018555821562000382579182015b828111156200038257825182559160200191906001019062000365565b506200039092915062000437565b5090565b828054828255906000526020600020908101928215620003ec579160200282015b82811115620003ec5782518254600160a060020a031916600160a060020a03909116178255602090920191600190910190620003b5565b50620003909291506200044e565b8280548282559060005260206000209081019282156200038257916020028201828111156200038257825182559160200191906001019062000365565b5b8082111562000390576000815560010162000438565b5b8082111562000390578054600160a060020a03191681556001016200044f565b8051600160a060020a03811681146200048757600080fd5b92915050565b600082601f8301126200049e578081fd5b8151620004b5620004af82620008bf565b62000898565b818152915060208083019084810181840286018201871015620004d757600080fd5b60005b848110156200050257620004ef88836200046f565b84529282019290820190600101620004da565b505050505092915050565b600082601f8301126200051e578081fd5b81516200052f620004af82620008bf565b8181529150602080830190848101818402860182018710156200055157600080fd5b60005b84811015620005025781518452928201929082019060010162000554565b600082601f83011262000583578081fd5b81516001604060020a0381111562000599578182fd5b6020620005af601f8301601f1916820162000898565b92508183528481838601011115620005c657600080fd5b60005b82811015620005e6578481018201518482018301528101620005c9565b82811115620005f85760008284860101525b50505092915050565b600060c0828403121562000613578081fd5b6200061f60c062000898565b905081516200062e81620008df565b815260208201516200064081620008df565b602082015260408201516200065581620008df565b604082015260608201516200066a81620008df565b606082015260808201516200067f81620008df565b608082015260a08201516200069481620008df565b60a082015292915050565b6000806000806000806000610180888a031215620006bb578283fd5b620006c789896200046f565b965060208801516001604060020a0380821115620006e3578485fd5b620006f18b838c0162000572565b975060408a015191508082111562000707578485fd5b620007158b838c016200048d565b965060608a01519150808211156200072b578485fd5b620007398b838c016200050d565b955060808a01519150808211156200074f578485fd5b506200075e8a828b016200050d565b93505060a08801519150620007778960c08a0162000601565b905092959891949750929550565b6020808252601a908201527f4552525f53544152545f574549474854535f4d49534d41544348000000000000604082015260600190565b6020808252601b908201527f4552525f53544152545f42414c414e4345535f4d49534d415443480000000000604082015260600190565b60208082526012908201527f4552525f544f4f5f4645575f544f4b454e530000000000000000000000000000604082015260600190565b60208082526014908201527f4552525f494e56414c49445f535741505f464545000000000000000000000000604082015260600190565b60208082526013908201527f4552525f544f4f5f4d414e595f544f4b454e5300000000000000000000000000604082015260600190565b6040518181016001604060020a0381118282101715620008b757600080fd5b604052919050565b60006001604060020a03821115620008d5578081fd5b5060209081020190565b8015158114620008ee57600080fd5b50565b614fdf80620009016000396000f3fe608060405234801561001057600080fd5b50600436106102855760003560e060020a900480636d06dfa011610161578063a835a0de116100cd578063a835a0de1461052b578063a9059cbb14610533578063b02f0b7314610546578063b64ef17b14610559578063c275d81b14610561578063c3391d2714610569578063c83a1c2d1461057c578063d73dd6231461058f578063dd62ed3e146105a2578063e211b875146105b5578063e2762d4b146105bd578063f226b5281461052b578063fde924f7146105d057610285565b80636d06dfa01461046457806370a082311461047757806374983a0d1461048a578063806c6f87146104925780638259e6a0146104a557806392eefe9b146104b8578063948d8ce6146104cb57806395d89b41146104de5780639776e94b146104e6578063980e8db6146104f95780639a82417e146105135780639d829c2b1461051b578063a3f4df7e1461052357610285565b806334e199071161020057806334e199071461037857806337c6f4d91461038b57806346ab38f11461039e57806347786d37146103b157806349b59552146103c45780634ba57882146103d75780634c20d209146103ea5780634f69c0d4146103fd578063554d578d1461041057806355c32a23146104185780635db342771461042b5780635fa7b5841461043e578063661884631461045157610285565b806302c967481461028a57806306fdde03146102b3578063095dcccc146102c8578063095ea7b3146102dd5780630a165940146102fd57806318160ddd14610312578063220eb7601461031a57806323b872dd1461032d578063246bc19b146103405780632e0f2625146103535780633018205f14610368578063313ce56714610370575b600080fd5b61029d61029836600461416f565b6105d8565b6040516102aa9190614e9a565b60405180910390f35b6102bb610796565b6040516102aa91906147a3565b6102db6102d6366004614144565b6107c6565b005b6102f06102eb366004614144565b6107f6565b6040516102aa919061458b565b61030561084e565b6040516102aa9190614519565b61029d61085d565b6102db610328366004614339565b610863565b6102f061033b366004614104565b610891565b6102db61034e36600461423c565b6109c5565b61035b610c73565b6040516102aa9190614eb1565b610305610c78565b61035b610c87565b6102db610386366004614339565b610c8c565b6102f061039936600461431a565b610de5565b61029d6103ac36600461416f565b610e7d565b6102db6103bf366004614339565b611022565b6102db6103d23660046142c6565b61115c565b6102db6103e5366004614339565b611271565b6102db6103f836600461416f565b611334565b6102db61040b366004614369565b6114c8565b61029d611818565b6102db610426366004614144565b61184c565b61029d61043936600461416f565b611878565b6102db61044c3660046140b0565b611ad0565b6102f061045f366004614144565b611d14565b61029d61047236600461416f565b611dee565b61029d6104853660046140b0565b611fae565b610305611fc9565b6102f06104a03660046140b0565b611fe1565b6102db6104b3366004614339565b61202b565b6102db6104c63660046140b0565b612596565b61029d6104d93660046140b0565b612648565b6102bb61271e565b6102db6104f4366004614144565b6127b4565b61050161290c565b6040516102aa96959493929190614596565b610305612948565b610305612960565b6102bb612978565b61029d6129aa565b6102f0610541366004614144565b6129af565b6102db610554366004614369565b6129ee565b610305612c66565b6102db612c75565b6102db610577366004614469565b612de3565b6102db61058a3660046140b0565b6133b2565b6102f061059d366004614144565b6134b2565b61029d6105b03660046140cc565b613526565b6102db613551565b6102db6105cb3660046140b0565b61369c565b6102f06137d3565b6040516000903390600160e060020a0319833516906105fa90849036906145c6565b60405180910390a2600260055414156106315760405160e560020a62461bcd02815260040161062890614af6565b60405180910390fd5b6002600555600754600160a060020a03166106615760405160e560020a62461bcd02815260040161062890614a51565b60075460405160e260020a631ce1a8c9028152600091829173__SmartPoolManager______________________91637386a324916106b5913091600160a060020a03909116908b908b908b90600401614642565b604080518083038186803b1580156106cc57600080fd5b505af41580156106e0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061070491906143f8565b91509150809250600061071784846138e6565b905086600160a060020a031633600160a060020a0316600080516020614f2a8339815191528860405161074a9190614e9a565b60405180910390a361075c338561186e565b61076581610885565b60065461077b90600160a060020a0316846107e8565b610786873388613922565b5050505b60016005559392505050565b6040805180820190915260138152606a60020a7210985b185b98d95c8814db585c9d08141bdbdb02602082015290565b3330146107e85760405160e560020a62461bcd028152600401610628906147f6565b6107f28282613b7d565b5050565b336000818152600260209081526040808320600160a060020a03871680855292528083208590555191929091600080516020614f6a8339815191529061083d908690614e9a565b60405180910390a350600192915050565b600654600160a060020a031681565b60005490565b3330146108855760405160e560020a62461bcd028152600401610628906147f6565b61088e81613b88565b50565b6000600160a060020a0383166108bc5760405160e560020a62461bcd02815260040161062890614975565b33600160a060020a03851614806108f65750600160a060020a03841660009081526002602090815260408083203384529091529020548211155b6109155760405160e560020a62461bcd02815260040161062890614c31565b610920848484613bf0565b600160a060020a038416600081815260026020908152604080832033808552925290912054911480159061095657506000198114155b156109b85761096581846138e6565b600160a060020a038681166000908152600260209081526040808320338085529252918290208490559051918716929091600080516020614f6a833981519152916109af91614e9a565b60405180910390a35b60019150505b9392505050565b33600160a060020a0316600035600160e060020a031916600160e060020a0319166000366040516109f79291906145c6565b60405180910390a260026005541415610a255760405160e560020a62461bcd02815260040161062890614af6565b6002600555600454600160a060020a03163314610a575760405160e560020a62461bcd028152600401610628906147f6565b600754600160a060020a0316610a825760405160e560020a62461bcd02815260040161062890614a51565b60085462010000900460ff16610aad5760405160e560020a62461bcd028152600401610628906149e3565b6007546040805160e060020a63cc77828d0281529051606092600160a060020a03169163cc77828d916004808301926000929190829003018186803b158015610af557600080fd5b505afa158015610b09573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610b3191908101906141a3565b80519091508414610b575760405160e560020a62461bcd028152600401610628906148d0565b60075460145460405160e260020a630500fe7b02815260009260609273__SmartPoolManager______________________92631403f9ec92610bb392600160a060020a03909116916009918d918d918d918d919060040161470f565b60006040518083038186803b158015610bcb57600080fd5b505af4158015610bdf573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610c0791908101906143b3565b601082905560118690559092509050610c2260138888613fa0565b5060005b8351811015610c6457818181518110610c3b57fe5b602002602001015160128281548110610c5057fe5b600091825260209091200155600101610c26565b50506001600555505050505050565b601281565b600454600160a060020a031690565b601290565b33600160a060020a0316600035600160e060020a031916600160e060020a031916600036604051610cbe9291906145c6565b60405180910390a260026005541415610cec5760405160e560020a62461bcd02815260040161062890614af6565b6002600555600454600160a060020a03163314610d1e5760405160e560020a62461bcd028152600401610628906147f6565b600754600160a060020a0316610d495760405160e560020a62461bcd02815260040161062890614a51565b600854610100900460ff16610d735760405160e560020a62461bcd02815260040161062890614db2565b600d81905560075460405160e060020a6334e19907028152600160a060020a03909116906334e1990790610dab908490600401614e9a565b600060405180830381600087803b158015610dc557600080fd5b505af1158015610dd9573d6000803e3d6000fd5b50506001600555505050565b60405160e160020a6322c1aa2502815260009073__RightsManager_________________________90634583544a90610e25906008908690600401614e20565b60206040518083038186803b158015610e3d57600080fd5b505af4158015610e51573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e7591906142e2565b90505b919050565b6040516000903390600160e060020a031983351690610e9f90849036906145c6565b60405180910390a260026005541415610ecd5760405160e560020a62461bcd02815260040161062890614af6565b6002600555600754600160a060020a0316610efd5760405160e560020a62461bcd02815260040161062890614a51565b60075460405160e160020a633461ee95028152600091829173__SmartPoolManager______________________916368c3dd2a91610f51913091600160a060020a03909116908b908b908b90600401614642565b604080518083038186803b158015610f6857600080fd5b505af4158015610f7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fa091906143f8565b915091508092506000610fb386846138e6565b905086600160a060020a031633600160a060020a0316600080516020614f2a83398151915286604051610fe69190614e9a565b60405180910390a3610ff8338761186e565b61100181610885565b60065461101790600160a060020a0316846107e8565b610786873386613922565b33600160a060020a0316600035600160e060020a031916600160e060020a0319166000366040516110549291906145c6565b60405180910390a2600260055414156110825760405160e560020a62461bcd02815260040161062890614af6565b6002600555600754600160a060020a03166110b25760405160e560020a62461bcd02815260040161062890614a51565b600454600160a060020a031633146110df5760405160e560020a62461bcd028152600401610628906147f6565b60085465010000000000900460ff1661110d5760405160e560020a62461bcd02815260040161062890614b8c565b33600160a060020a03167f6bc200110c7794738d401810b22ef824a2044a8ccb022d4ad8769840370331f56017548360405161114a929190614ea3565b60405180910390a26017556001600555565b33600160a060020a0316600035600160e060020a031916600160e060020a03191660003660405161118e9291906145c6565b60405180910390a2600260055414156111bc5760405160e560020a62461bcd02815260040161062890614af6565b6002600555600454600160a060020a031633146111ee5760405160e560020a62461bcd028152600401610628906147f6565b600754600160a060020a03166112195760405160e560020a62461bcd02815260040161062890614a51565b60085460ff1661123e5760405160e560020a62461bcd02815260040161062890614d0d565b60075460405160e160020a6324dacaa9028152600160a060020a03909116906349b5955290610dab90849060040161458b565b3330146112935760405160e560020a62461bcd028152600401610628906147f6565b61129c81613c8f565b60175430600160a060020a03166318160ddd6040518163ffffffff1660e060020a02815260040160206040518083038186803b1580156112db57600080fd5b505afa1580156112ef573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113139190614351565b111561088e5760405160e560020a62461bcd02815260040161062890614bfa565b33600160a060020a0316600035600160e060020a031916600160e060020a0319166000366040516113669291906145c6565b60405180910390a2600260055414156113945760405160e560020a62461bcd02815260040161062890614af6565b6002600555600454600160a060020a031633146113c65760405160e560020a62461bcd028152600401610628906147f6565b600754600160a060020a03166113f15760405160e560020a62461bcd02815260040161062890614a51565b6008546301000000900460ff1661141d5760405160e560020a62461bcd0281526004016106289061482d565b601054156114405760405160e560020a62461bcd02815260040161062890614de9565b60075460405160e260020a6307f9f55902815273__SmartPoolManager______________________91631fe7d5649161148e91600160a060020a0316908790879087906009906004016146de565b60006040518083038186803b1580156114a657600080fd5b505af41580156114ba573d6000803e3d6000fd5b505060016005555050505050565b33600160a060020a0316600035600160e060020a031916600160e060020a0319166000366040516114fa9291906145c6565b60405180910390a2600260055414156115285760405160e560020a62461bcd02815260040161062890614af6565b6002600555600754600160a060020a03166115585760405160e560020a62461bcd02815260040161062890614a51565b600854640100000000900460ff16158061158157503360009081526016602052604090205460ff165b6115a05760405160e560020a62461bcd0281526004016106289061493e565b60075460405160e560020a6289af5d02815260609173__SmartPoolManager______________________91631135eba0916115ef913091600160a060020a031690899089908990600401614676565b60006040518083038186803b15801561160757600080fd5b505af415801561161b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611643919081019061428b565b90506060600760009054906101000a9004600160a060020a0316600160a060020a031663cc77828d6040518163ffffffff1660e060020a02815260040160006040518083038186803b15801561169857600080fd5b505afa1580156116ac573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526116d491908101906141a3565b905060005b81518110156117605760008282815181106116f057fe5b60200260200101519050600084838151811061170857fe5b6020026020010151905081600160a060020a031633600160a060020a0316600080516020614f8a833981519152836040516117439190614e9a565b60405180910390a3611756823383613ced565b50506001016116d9565b5061176a85611293565b61177433866107e8565b505060175430600160a060020a03166318160ddd6040518163ffffffff1660e060020a02815260040160206040518083038186803b1580156117b557600080fd5b505afa1580156117c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117ed9190614351565b111561180e5760405160e560020a62461bcd02815260040161062890614bfa565b5050600160055550565b6000600260055414156118405760405160e560020a62461bcd02815260040161062890614af6565b50601754600160055590565b33301461186e5760405160e560020a62461bcd028152600401610628906147f6565b6107f28282613f48565b6040516000903390600160e060020a03198335169061189a90849036906145c6565b60405180910390a2600260055414156118c85760405160e560020a62461bcd02815260040161062890614af6565b6002600555600754600160a060020a03166118f85760405160e560020a62461bcd02815260040161062890614a51565b600854640100000000900460ff16158061192157503360009081526016602052604090205460ff165b6119405760405160e560020a62461bcd0281526004016106289061493e565b60075460405160e060020a636f50bd5d02815273__SmartPoolManager______________________91636f50bd5d9161198f913091600160a060020a0390911690899089908990600401614642565b60206040518083038186803b1580156119a757600080fd5b505af41580156119bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119df9190614351565b905083600160a060020a031633600160a060020a0316600080516020614f8a83398151915285604051611a129190614e9a565b60405180910390a3611a2381611293565b611a2d33826107e8565b611a38843385613ced565b60175430600160a060020a03166318160ddd6040518163ffffffff1660e060020a02815260040160206040518083038186803b158015611a7757600080fd5b505afa158015611a8b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611aaf9190614351565b111561078a5760405160e560020a62461bcd02815260040161062890614bfa565b33600160a060020a0316600035600160e060020a031916600160e060020a031916600036604051611b029291906145c6565b60405180910390a260026005541415611b305760405160e560020a62461bcd02815260040161062890614af6565b6002600555600454600160a060020a03163314611b625760405160e560020a62461bcd028152600401610628906147f6565b600754600160a060020a0316611b8d5760405160e560020a62461bcd02815260040161062890614a51565b6008546301000000900460ff16611bb95760405160e560020a62461bcd0281526004016106289061482d565b6007546040805160e060020a63cc77828d0281529051606092600160a060020a03169163cc77828d916004808301926000929190829003018186803b158015611c0157600080fd5b505afa158015611c15573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611c3d91908101906141a3565b90506002815111611c635760405160e560020a62461bcd02815260040161062890614c68565b60095460a060020a900460ff1615611c905760405160e560020a62461bcd02815260040161062890614c9f565b60075460405160e060020a63cfc3120902815273__SmartPoolManager______________________9163cfc3120991611cdb913091600160a060020a039091169087906004016145f5565b60006040518083038186803b158015611cf357600080fd5b505af4158015611d07573d6000803e3d6000fd5b5050600160055550505050565b336000908152600260209081526040808320600160a060020a0386168452909152812054808310611d6857336000908152600260209081526040808320600160a060020a0388168452909152812055611d97565b611d7281846138e6565b336000908152600260209081526040808320600160a060020a03891684529091529020555b336000818152600260209081526040808320600160a060020a038916808552925291829020549151909291600080516020614f6a83398151915291611ddc9190614e9a565b60405180910390a35060019392505050565b6040516000903390600160e060020a031983351690611e1090849036906145c6565b60405180910390a260026005541415611e3e5760405160e560020a62461bcd02815260040161062890614af6565b6002600555600754600160a060020a0316611e6e5760405160e560020a62461bcd02815260040161062890614a51565b600854640100000000900460ff161580611e9757503360009081526016602052604090205460ff165b611eb65760405160e560020a62461bcd0281526004016106289061493e565b60075460405160e060020a63c8ebc9ab02815273__SmartPoolManager______________________9163c8ebc9ab91611f05913091600160a060020a0390911690899089908990600401614642565b60206040518083038186803b158015611f1d57600080fd5b505af4158015611f31573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f559190614351565b905083600160a060020a031633600160a060020a0316600080516020614f8a83398151915283604051611f889190614e9a565b60405180910390a3611f9983611293565b611fa333846107e8565b611a38843383613ced565b600160a060020a031660009081526001602052604090205490565b73__RightsManager_________________________90565b600854600090640100000000900460ff16156120195750600160a060020a03811660009081526016602052604090205460ff16610e78565b50600160a060020a0381161515610e78565b33600160a060020a0316600035600160e060020a031916600160e060020a03191660003660405161205d9291906145c6565b60405180910390a26002600554141561208b5760405160e560020a62461bcd02815260040161062890614af6565b6002600555600754600160a060020a0316156120bc5760405160e560020a62461bcd02815260040161062890614a88565b600081116120df5760405160e560020a62461bcd02815260040161062890614907565b600660009054906101000a9004600160a060020a0316600160a060020a031663d556c5dc6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561213257600080fd5b505af1158015612146573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061216a91906142fe565b60078054600160a060020a031916600160a060020a0392831617908190556040805160e160020a63632c06890281529051919092169163c6580d12916004808301926020929190829003018186803b1580156121c557600080fd5b505afa1580156121d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121fd9190614351565b1561221d5760405160e560020a62461bcd02815260040161062890614bc3565b600754600d5460405160e060020a6334e19907028152600160a060020a03909216916334e199079161225191600401614e9a565b600060405180830381600087803b15801561226b57600080fd5b505af115801561227f573d6000803e3d6000fd5b505060085465010000000000900460ff1615915061229f90505760178190555b60005b600e548110156124d9576000600e82815481106122bb57fe5b6000918252602082200154600f8054600160a060020a03909216935090849081106122e257fe5b906000526020600020015490506000601284815481106122fe57fe5b600091825260208220015460405160e060020a6323b872dd028152909250600160a060020a038516906323b872dd9061233f9033903090889060040161452d565b602060405180830381600087803b15801561235957600080fd5b505af115801561236d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061239191906142e2565b9050806123b35760405160e560020a62461bcd02815260040161062890614cd6565b60075460405160e060020a63095ea7b3028152600160a060020a038681169263095ea7b3926123ec929091169060001990600401614551565b602060405180830381600087803b15801561240657600080fd5b505af115801561241a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061243e91906142e2565b9050806124605760405160e560020a62461bcd02815260040161062890614cd6565b60075460405160e360020a631c9c3ca7028152600160a060020a039091169063e4e1e538906124979087908790879060040161456a565b600060405180830381600087803b1580156124b157600080fd5b505af11580156124c5573d6000803e3d6000fd5b5050600190960195506122a2945050505050565b505b600e541561251557600e8054806124ee57fe5b60008281526020902081016000199081018054600160a060020a03191690550190556124db565b60075460405160e160020a6324dacaa9028152600160a060020a03909116906349b59552906125499060019060040161458b565b600060405180830381600087803b15801561256357600080fd5b505af1158015612577573d6000803e3d6000fd5b5050505061258481611293565b61258e33826107e8565b506001600555565b600454600160a060020a031633146125c35760405160e560020a62461bcd028152600401610628906147f6565b600160a060020a0381166125ec5760405160e560020a62461bcd02815260040161062890614975565b600454604051600160a060020a038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a360048054600160a060020a031916600160a060020a0392909216919091179055565b6000600260055414156126705760405160e560020a62461bcd02815260040161062890614b1e565b600754600160a060020a031661269b5760405160e560020a62461bcd02815260040161062890614a51565b60075460405160e160020a634a46c673028152600160a060020a039091169063948d8ce6906126ce908590600401614519565b60206040518083038186803b1580156126e657600080fd5b505afa1580156126fa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e759190614351565b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156127aa5780601f1061277f576101008083540402835291602001916127aa565b820191906000526020600020905b81548152906001019060200180831161278d57829003601f168201915b5050505050905090565b33600160a060020a0316600035600160e060020a031916600160e060020a0319166000366040516127e69291906145c6565b60405180910390a2600260055414156128145760405160e560020a62461bcd02815260040161062890614af6565b6002600555600454600160a060020a031633146128465760405160e560020a62461bcd028152600401610628906147f6565b600754600160a060020a03166128715760405160e560020a62461bcd02815260040161062890614a51565b60085462010000900460ff1661289c5760405160e560020a62461bcd028152600401610628906149e3565b601054156128bf5760405160e560020a62461bcd02815260040161062890614de9565b60075460405160e360020a63089d8f8d02815273__SmartPoolManager______________________916344ec7c6891611cdb913091600160a060020a039091169087908790600401614618565b60085460ff8082169161010081048216916201000082048116916301000000810482169164010000000082048116916501000000000090041686565b73__BalancerSafeMath______________________90565b73__SmartPoolManager______________________90565b604051806040016040528060138152602001606a60020a7210985b185b98d95c8814db585c9d08141bdbdb0281525081565b600a81565b6000600160a060020a0383166129da5760405160e560020a62461bcd02815260040161062890614975565b6129e5338484613bf0565b50600192915050565b33600160a060020a0316600035600160e060020a031916600160e060020a031916600036604051612a209291906145c6565b60405180910390a260026005541415612a4e5760405160e560020a62461bcd02815260040161062890614af6565b6002600555600754600160a060020a0316612a7e5760405160e560020a62461bcd02815260040161062890614a51565b60075460405160e160020a63747591bb028152600091829160609173__SmartPoolManager______________________9163e8eb237691612ad3913091600160a060020a0316908b908b908b90600401614676565b60006040518083038186803b158015612aeb57600080fd5b505af4158015612aff573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612b27919081019061441b565b925092509250612b37338761186e565b600654612b4d90600160a060020a0316846107e8565b612b5682610885565b6007546040805160e060020a63cc77828d0281529051606092600160a060020a03169163cc77828d916004808301926000929190829003018186803b158015612b9e57600080fd5b505afa158015612bb2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612bda91908101906141a3565b905060005b8151811015610c64576000828281518110612bf657fe5b602002602001015190506000848381518110612c0e57fe5b6020026020010151905081600160a060020a031633600160a060020a0316600080516020614f2a83398151915283604051612c499190614e9a565b60405180910390a3612c5c823383613922565b5050600101612bdf565b600754600160a060020a031681565b33600160a060020a0316600035600160e060020a031916600160e060020a031916600036604051612ca79291906145c6565b60405180910390a260026005541415612cd55760405160e560020a62461bcd02815260040161062890614af6565b6002600555600454600160a060020a03163314612d075760405160e560020a62461bcd028152600401610628906147f6565b600754600160a060020a0316612d325760405160e560020a62461bcd02815260040161062890614a51565b6008546301000000900460ff16612d5e5760405160e560020a62461bcd0281526004016106289061482d565b60075460155460405160e260020a632235713502815273__SmartPoolManager______________________926388d5c4d492612dac923092600160a060020a031691906009906004016146b5565b60006040518083038186803b158015612dc457600080fd5b505af4158015612dd8573d6000803e3d6000fd5b505060016005555050565b33600160a060020a0316600035600160e060020a031916600160e060020a031916600036604051612e159291906145c6565b60405180910390a260026005541415612e435760405160e560020a62461bcd02815260040161062890614af6565b6002600555600754600160a060020a031615612e745760405160e560020a62461bcd02815260040161062890614a88565b60008311612e975760405160e560020a62461bcd02815260040161062890614907565b600a821015612ebb5760405160e560020a62461bcd02815260040161062890614899565b81811115612ede5760405160e560020a62461bcd02815260040161062890614864565b600a811015612f025760405160e560020a62461bcd02815260040161062890614abf565b601482905560158190556006546040805160e260020a633555b1770281529051600160a060020a039092169163d556c5dc916004808201926020929091908290030181600087803b158015612f5657600080fd5b505af1158015612f6a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f8e91906142fe565b60078054600160a060020a031916600160a060020a0392831617908190556040805160e160020a63632c06890281529051919092169163c6580d12916004808301926020929190829003018186803b158015612fe957600080fd5b505afa158015612ffd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130219190614351565b156130415760405160e560020a62461bcd02815260040161062890614bc3565b600754600d5460405160e060020a6334e19907028152600160a060020a03909216916334e199079161307591600401614e9a565b600060405180830381600087803b15801561308f57600080fd5b505af11580156130a3573d6000803e3d6000fd5b505060085465010000000000900460ff161591506130c390505760178390555b60005b600e548110156132fd576000600e82815481106130df57fe5b6000918252602082200154600f8054600160a060020a039092169350908490811061310657fe5b9060005260206000200154905060006012848154811061312257fe5b600091825260208220015460405160e060020a6323b872dd028152909250600160a060020a038516906323b872dd906131639033903090889060040161452d565b602060405180830381600087803b15801561317d57600080fd5b505af1158015613191573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131b591906142e2565b9050806131d75760405160e560020a62461bcd02815260040161062890614cd6565b60075460405160e060020a63095ea7b3028152600160a060020a038681169263095ea7b392613210929091169060001990600401614551565b602060405180830381600087803b15801561322a57600080fd5b505af115801561323e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061326291906142e2565b9050806132845760405160e560020a62461bcd02815260040161062890614cd6565b60075460405160e360020a631c9c3ca7028152600160a060020a039091169063e4e1e538906132bb9087908790879060040161456a565b600060405180830381600087803b1580156132d557600080fd5b505af11580156132e9573d6000803e3d6000fd5b5050600190960195506130c6945050505050565b505b600e541561333957600e80548061331257fe5b60008281526020902081016000199081018054600160a060020a03191690550190556132ff565b60075460405160e160020a6324dacaa9028152600160a060020a03909116906349b595529061336d9060019060040161458b565b600060405180830381600087803b15801561338757600080fd5b505af115801561339b573d6000803e3d6000fd5b505050506133a883611293565b61180e33846107e8565b600454600160a060020a031633146133df5760405160e560020a62461bcd028152600401610628906147f6565b600260055414156134055760405160e560020a62461bcd02815260040161062890614af6565b6002600555604051339060008035600160e060020a0319169161342a919036906145c6565b60405180910390a2600854640100000000900460ff1661345f5760405160e560020a62461bcd028152600401610628906149ac565b600160a060020a0381166134885760405160e560020a62461bcd02815260040161062890614b55565b600160a060020a03166000908152601660205260409020805460ff19166001908117909155600555565b336000908152600260209081526040808320600160a060020a03861684529091528120546134e09083613f53565b336000818152600260209081526040808320600160a060020a03891680855292529182902084905590519092600080516020614f6a8339815191529161083d9190614e9a565b600160a060020a03918216600090815260026020908152604080832093909416825291909152205490565b33600160a060020a0316600035600160e060020a031916600160e060020a0319166000366040516135839291906145c6565b60405180910390a2600260055414156135b15760405160e560020a62461bcd02815260040161062890614af6565b6002600555600754600160a060020a03166135e15760405160e560020a62461bcd02815260040161062890614a51565b60085462010000900460ff1661360c5760405160e560020a62461bcd028152600401610628906149e3565b601054601154431061361e5760006010555b60075460115460405160e360020a6281bd0502815273__SmartPoolManager______________________9263040de8289261367092600160a060020a0390921691869190601290601390600401614757565b60006040518083038186803b15801561368857600080fd5b505af4158015610dd9573d6000803e3d6000fd5b600454600160a060020a031633146136c95760405160e560020a62461bcd028152600401610628906147f6565b600260055414156136ef5760405160e560020a62461bcd02815260040161062890614af6565b6002600555604051339060008035600160e060020a03191691613714919036906145c6565b60405180910390a2600854640100000000900460ff166137495760405160e560020a62461bcd028152600401610628906149ac565b600160a060020a03811660009081526016602052604090205460ff166137845760405160e560020a62461bcd02815260040161062890614a1a565b600160a060020a0381166137ad5760405160e560020a62461bcd02815260040161062890614b55565b600160a060020a03166000908152601660205260409020805460ff191690556001600555565b6040516000903390600160e060020a0319833516906137f590849036906145c6565b60405180910390a2600260055414156138235760405160e560020a62461bcd02815260040161062890614af6565b6002600555600754600160a060020a03166138535760405160e560020a62461bcd02815260040161062890614a51565b600760009054906101000a9004600160a060020a0316600160a060020a031663fde924f76040518163ffffffff1660e060020a02815260040160206040518083038186803b1580156138a457600080fd5b505afa1580156138b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138dc91906142e2565b9050600160055590565b60008060006138f58585613f7b565b91509150801561391a5760405160e560020a62461bcd02815260040161062890614d44565b509392505050565b600754600160a060020a031661394d5760405160e560020a62461bcd02815260040161062890614a51565b60075460405160e060020a63f8b2cb4f028152600091600160a060020a03169063f8b2cb4f90613981908790600401614519565b60206040518083038186803b15801561399957600080fd5b505afa1580156139ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139d19190614351565b60075460405160e160020a634a46c673028152919250600091600160a060020a039091169063948d8ce690613a0a908890600401614519565b60206040518083038186803b158015613a2257600080fd5b505afa158015613a36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a5a9190614351565b600754909150600160a060020a0316633fdddaa286613a7985876138e6565b846040518463ffffffff1660e060020a028152600401613a9b9392919061456a565b600060405180830381600087803b158015613ab557600080fd5b505af1158015613ac9573d6000803e3d6000fd5b505060405160e060020a63a9059cbb02815260009250600160a060020a038816915063a9059cbb90613b019088908890600401614551565b602060405180830381600087803b158015613b1b57600080fd5b505af1158015613b2f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b5391906142e2565b905080613b755760405160e560020a62461bcd02815260040161062890614cd6565b505050505050565b6107f2308383613bf0565b30600090815260016020526040902054613ba290826138e6565b3060009081526001602052604081209190915554613bc090826138e6565b60009081556040513090600080516020614f4a83398151915290613be5908590614e9a565b60405180910390a350565b600160a060020a038316600090815260016020526040902054613c1390826138e6565b600160a060020a038085166000908152600160205260408082209390935590841681522054613c429082613f53565b600160a060020a038084166000818152600160205260409081902093909355915190851690600080516020614f4a83398151915290613c82908590614e9a565b60405180910390a3505050565b30600090815260016020526040902054613ca99082613f53565b3060009081526001602052604081209190915554613cc79082613f53565b6000908155604051309190600080516020614f4a83398151915290613be5908590614e9a565b600754600160a060020a0316613d185760405160e560020a62461bcd02815260040161062890614a51565b60075460405160e060020a63f8b2cb4f028152600091600160a060020a03169063f8b2cb4f90613d4c908790600401614519565b60206040518083038186803b158015613d6457600080fd5b505afa158015613d78573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d9c9190614351565b60075460405160e160020a634a46c673028152919250600091600160a060020a039091169063948d8ce690613dd5908890600401614519565b60206040518083038186803b158015613ded57600080fd5b505afa158015613e01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e259190614351565b9050600085600160a060020a03166323b872dd8630876040518463ffffffff1660e060020a028152600401613e5c9392919061452d565b602060405180830381600087803b158015613e7657600080fd5b505af1158015613e8a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613eae91906142e2565b905080613ed05760405160e560020a62461bcd02815260040161062890614cd6565b600754600160a060020a0316633fdddaa287613eec8688613f53565b856040518463ffffffff1660e060020a028152600401613f0e9392919061456a565b600060405180830381600087803b158015613f2857600080fd5b505af1158015613f3c573d6000803e3d6000fd5b50505050505050505050565b6107f2823083613bf0565b6000828201838110156109be5760405160e560020a62461bcd02815260040161062890614d7b565b600080838311613f915750508082036000613f99565b505081810360015b9250929050565b828054828255906000526020600020908101928215613fdb579160200282015b82811115613fdb578235825591602001919060010190613fc0565b50613fe7929150613feb565b5090565b5b80821115613fe75760008155600101613fec565b60008083601f840112614011578081fd5b50813567ffffffffffffffff811115614028578182fd5b6020830191508360208083028501011115613f9957600080fd5b600082601f830112614052578081fd5b815161406561406082614ee6565b614ebf565b81815291506020808301908481018184028601820187101561408657600080fd5b60005b848110156140a557815184529282019290820190600101614089565b505050505092915050565b6000602082840312156140c1578081fd5b81356109be81614f06565b600080604083850312156140de578081fd5b82356140e981614f06565b915060208301356140f981614f06565b809150509250929050565b600080600060608486031215614118578081fd5b833561412381614f06565b9250602084013561413381614f06565b929592945050506040919091013590565b60008060408385031215614156578182fd5b823561416181614f06565b946020939093013593505050565b600080600060608486031215614183578283fd5b833561418e81614f06565b95602085013595506040909401359392505050565b600060208083850312156141b5578182fd5b825167ffffffffffffffff8111156141cb578283fd5b8301601f810185136141db578283fd5b80516141e961406082614ee6565b8181528381019083850185840285018601891015614205578687fd5b8694505b8385101561423057805161421c81614f06565b835260019490940193918501918501614209565b50979650505050505050565b60008060008060608587031215614251578081fd5b843567ffffffffffffffff811115614267578182fd5b61427387828801614000565b90989097506020870135966040013595509350505050565b60006020828403121561429c578081fd5b815167ffffffffffffffff8111156142b2578182fd5b6142be84828501614042565b949350505050565b6000602082840312156142d7578081fd5b81356109be81614f1b565b6000602082840312156142f3578081fd5b81516109be81614f1b565b60006020828403121561430f578081fd5b81516109be81614f06565b60006020828403121561432b578081fd5b8135600681106109be578182fd5b60006020828403121561434a578081fd5b5035919050565b600060208284031215614362578081fd5b5051919050565b60008060006040848603121561437d578081fd5b83359250602084013567ffffffffffffffff81111561439a578182fd5b6143a686828701614000565b9497909650939450505050565b600080604083850312156143c5578182fd5b82519150602083015167ffffffffffffffff8111156143e2578182fd5b6143ee85828601614042565b9150509250929050565b6000806040838503121561440a578182fd5b505080516020909101519092909150565b60008060006060848603121561442f578081fd5b8351925060208401519150604084015167ffffffffffffffff811115614453578182fd5b61445f86828701614042565b9150509250925092565b60008060006060848603121561447d578081fd5b505081359360208301359350604090920135919050565b8183526000600160fb60020a038311156144ac578081fd5b6020830280836020870137939093016020019283525090919050565b6000815480845260208085019450838352808320835b838110156144fa578154875295820195600191820191016144de565b509495945050505050565b15159052565b6006811061451557fe5b9052565b600160a060020a0391909116815260200190565b600160a060020a039384168152919092166020820152604081019190915260600190565b600160a060020a03929092168252602082015260400190565b600160a060020a039390931683526020830191909152604082015260600190565b901515815260200190565b9515158652931515602086015291151560408501521515606084015215156080830152151560a082015260c00190565b60006020825282602083015282846040840137818301604090810191909152601f909201601f19160101919050565b600160a060020a0393841681529183166020830152909116604082015260600190565b600160a060020a039485168152928416602084015292166040820152606081019190915260800190565b600160a060020a03958616815293851660208501529190931660408301526060820192909252608081019190915260a00190565b600160a060020a03868116825285166020820152604081018490526080606082018190526000906146aa9083018486614494565b979650505050505050565b600160a060020a0394851681529290931660208301526040820152606081019190915260800190565b600160a060020a03958616815293909416602084015260408301919091526060820152608081019190915260a00190565b6000600160a060020a038916825287602083015260c0604083015261473860c083018789614494565b606083019590955250608081019290925260a090910152949350505050565b6000600160a060020a038716825285602083015284604083015260a0606083015261478560a08301856144c8565b828103608084015261479781856144c8565b98975050505050505050565b6000602080835283518082850152825b818110156147cf578581018301518582016040015282016147b3565b818111156147e05783604083870101525b50601f01601f1916929092016040019392505050565b60208082526012908201527f4552525f4e4f545f434f4e54524f4c4c45520000000000000000000000000000604082015260600190565b6020808252601c908201527f4552525f43414e4e4f545f4144445f52454d4f56455f544f4b454e5300000000604082015260600190565b6020808252818101527f4552525f494e434f4e53495354454e545f544f4b454e5f54494d455f4c4f434b604082015260600190565b60208082526018908201527f4552525f494e56414c49445f424c4f434b5f504552494f440000000000000000604082015260600190565b6020808252601a908201527f4552525f53544152545f574549474854535f4d49534d41544348000000000000604082015260600190565b6020808252600f908201527f4552525f494e49545f535550504c590000000000000000000000000000000000604082015260600190565b60208082526014908201527f4552525f4e4f545f4f4e5f57484954454c495354000000000000000000000000604082015260600190565b60208082526010908201527f4552525f5a45524f5f4144445245535300000000000000000000000000000000604082015260600190565b60208082526018908201527f4552525f43414e4e4f545f57484954454c4953545f4c50530000000000000000604082015260600190565b6020808252601c908201527f4552525f4e4f545f434f4e464947555241424c455f5745494748545300000000604082015260600190565b60208082526016908201527f4552525f4c505f4e4f545f57484954454c495354454400000000000000000000604082015260600190565b6020808252600f908201527f4552525f4e4f545f435245415445440000000000000000000000000000000000604082015260600190565b6020808252600e908201527f4552525f49535f43524541544544000000000000000000000000000000000000604082015260600190565b6020808252601b908201527f4552525f494e56414c49445f544f4b454e5f54494d455f4c4f434b0000000000604082015260600190565b6020808252600b9082015260a860020a6a4552525f5245454e54525902604082015260600190565b60208082526010908201527f4552525f5245454e5452595f5649455700000000000000000000000000000000604082015260600190565b60208082526013908201527f4552525f494e56414c49445f4144445245535300000000000000000000000000604082015260600190565b60208082526015908201527f4552525f43414e4e4f545f4348414e47455f4341500000000000000000000000604082015260600190565b60208082526014908201527f4552525f4e4f4e5a45524f5f455849545f464545000000000000000000000000604082015260600190565b60208082526015908201527f4552525f4341505f4c494d49545f524541434845440000000000000000000000604082015260600190565b60208082526016908201527f4552525f5043544f4b454e5f4241445f43414c4c455200000000000000000000604082015260600190565b60208082526012908201527f4552525f544f4f5f4645575f544f4b454e530000000000000000000000000000604082015260600190565b6020808252601b908201527f4552525f52454d4f56455f574954485f4144445f50454e44494e470000000000604082015260600190565b6020808252600f908201527f4552525f45524332305f46414c53450000000000000000000000000000000000604082015260600190565b60208082526015908201527f4552525f4e4f545f5041555341424c455f535741500000000000000000000000604082015260600190565b60208082526011908201527f4552525f5355425f554e444552464c4f57000000000000000000000000000000604082015260600190565b60208082526010908201527f4552525f4144445f4f564552464c4f5700000000000000000000000000000000604082015260600190565b6020808252601d908201527f4552525f4e4f545f434f4e464947555241424c455f535741505f464545000000604082015260600190565b6020808252601c908201527f4552525f4e4f5f5550444154455f445552494e475f4752414455414c00000000604082015260600190565b825460ff8082161515835261010082048116151560208401526201000082048116151560408401526301000000820481161515606084015260e083019190614e746080850164010000000084048316614505565b614e8b60a085018265010000000000850416614505565b50506109be60c083018461450b565b90815260200190565b918252602082015260400190565b60ff91909116815260200190565b60405181810167ffffffffffffffff81118282101715614ede57600080fd5b604052919050565b600067ffffffffffffffff821115614efc578081fd5b5060209081020190565b600160a060020a038116811461088e57600080fd5b801515811461088e57600080fdfec62fc35ac75e3bff532648e2859a3e1694002cfa357614ae8e034df7f83db5e9ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925ea39e3b35c5cd8937999ed5f7fbab30acd562a931fc4a887fed2a47c3074aa72a26469706673582212206f7279e6e8504244affac06b582aa204d969ed5567556585dd3f08a00375a93764736f6c634300060c0033a2646970667358221220dd78372f8d11f441a9a3684d7385ea079cbbd2f4aafd6ef19a277ed1ca98f77364736f6c634300060c0033", + "deployedBytecode": "0x60806040523480156200001157600080fd5b50600436106200003d5760e060020a60003504635f93074c811462000042578063dc19e8421462000071575b600080fd5b62000059620000533660046200033f565b62000097565b60405162000068919062000511565b60405180910390f35b62000088620000823660046200031a565b62000229565b60405162000068919062000608565b60006002881015620000c95760405160e560020a62461bcd028152600401620000c09062000681565b60405180910390fd5b858814620000ee5760405160e560020a62461bcd028152600401620000c0906200064a565b838814620001135760405160e560020a62461bcd028152600401620000c09062000613565b60008c8c8c8c8c8c8c8c8c8c8c6040516200012e9062000247565b620001449b9a9998979695949392919062000525565b604051809103906000f08015801562000161573d6000803e3d6000fd5b50600160a060020a03811660008181526020819052604090819020805460ff191660011790555160e060020a6392eefe9b028152919250906392eefe9b90620001af90339060040162000511565b600060405180830381600087803b158015620001ca57600080fd5b505af1158015620001df573d6000803e3d6000fd5b5050604051600160a060020a03841692503391507f8aaa45dbe91f274e1c80489691f3d62dbf595d587fcc6a989fa27696e7c2a23290600090a39c9b505050505050505050505050565b600160a060020a031660009081526020819052604090205460ff1690565b6158e080620006e083390190565b8035600160a060020a03811681146200026d57600080fd5b92915050565b60008083601f84011262000285578182fd5b50813567ffffffffffffffff8111156200029d578182fd5b6020830191508360208083028501011115620002b857600080fd5b9250929050565b60008083601f840112620002d1578182fd5b50813567ffffffffffffffff811115620002e9578182fd5b602083019150836020828501011115620002b857600080fd5b600060c0828403121562000314578081fd5b50919050565b6000602082840312156200032c578081fd5b62000338838362000255565b9392505050565b60008060008060008060008060008060006101808c8e03121562000361578687fd5b6200036d8d8d62000255565b9a5067ffffffffffffffff8060208e0135111562000389578788fd5b6200039b8e60208f01358f01620002bf565b909b50995060408d0135811015620003b1578788fd5b620003c38e60408f01358f0162000273565b909950975060608d0135811015620003d9578687fd5b620003eb8e60608f01358f0162000273565b909750955060808d013581101562000401578485fd5b50620004148d60808e01358e0162000273565b909450925060a08c013591506200042f8d60c08e0162000302565b90509295989b509295989b9093969950565b600160a060020a0316815260200190565b8183526000600160fb60020a038311156200046b578081fd5b6020830280836020870137939093016020019283525090919050565b80356200049481620006cd565b151582526020810135620004a881620006cd565b151560208301526040810135620004bf81620006cd565b151560408301526060810135620004d681620006cd565b151560608301526080810135620004ed81620006cd565b1515608083015260a08101356200050481620006cd565b80151560a0840152505050565b600160a060020a0391909116815260200190565b600160a060020a038c168152610180602082018190526000906200054c8c848301620006b8565b90506200055b8c828f620006c1565b601f8c01601f191601828103604084015280620005798b82620006b8565b90508b9150825b8b811015620005b25760208301620005a4836200059e838762000255565b62000441565b909350915060010162000580565b508381036060850152620005c8818a8c62000452565b9150508281036080840152620005e081878962000452565b9150508360a0830152620005f860c083018462000487565b9c9b505050505050505050505050565b901515815260200190565b6020808252601a908201527f4552525f53544152545f574549474854535f4d49534d41544348000000000000604082015260600190565b6020808252601b908201527f4552525f53544152545f42414c414e4345535f4d49534d415443480000000000604082015260600190565b60208082526012908201527f4552525f544f4f5f4645575f544f4b454e530000000000000000000000000000604082015260600190565b90815260200190565b82818337506000910152565b8015158114620006dc57600080fd5b5056fe60806040523480156200001157600080fd5b50604051620058e0380380620058e083398101604081905262000034916200069f565b855186906200004b9060039060208401906200030f565b505060048054600160a060020a031916331790556001600555620f4240670de0b6b3a764000004821015620000b7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620000ae906200082a565b60405180910390fd5b67016345785d8a0000821115620000fc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620000ae906200082a565b84518451146200013a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620000ae90620007bc565b845183511462000178576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620000ae9062000785565b600285511015620001b7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620000ae90620007f3565b600885511115620001f6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620000ae9062000861565b60068054600160a060020a031916600160a060020a03891617905580516008805460208085015160408601516060870151608088015160a089015160ff199096169715159790971761ff001916610100931515939093029290921762ff0000191662010000911515919091021763ff00000019166301000000911515919091021764ff000000001916640100000000941515949094029390931765ff0000000000191665010000000000911515919091021790558551620002be91600e919088019062000394565b508351620002d490600f906020870190620003fa565b508251620002ea906012906020860190620003fa565b5050600d555050600a60148190556015555050600060105550600019601755620008f1565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200035257805160ff191683800117855562000382565b8280016001018555821562000382579182015b828111156200038257825182559160200191906001019062000365565b506200039092915062000437565b5090565b828054828255906000526020600020908101928215620003ec579160200282015b82811115620003ec5782518254600160a060020a031916600160a060020a03909116178255602090920191600190910190620003b5565b50620003909291506200044e565b8280548282559060005260206000209081019282156200038257916020028201828111156200038257825182559160200191906001019062000365565b5b8082111562000390576000815560010162000438565b5b8082111562000390578054600160a060020a03191681556001016200044f565b8051600160a060020a03811681146200048757600080fd5b92915050565b600082601f8301126200049e578081fd5b8151620004b5620004af82620008bf565b62000898565b818152915060208083019084810181840286018201871015620004d757600080fd5b60005b848110156200050257620004ef88836200046f565b84529282019290820190600101620004da565b505050505092915050565b600082601f8301126200051e578081fd5b81516200052f620004af82620008bf565b8181529150602080830190848101818402860182018710156200055157600080fd5b60005b84811015620005025781518452928201929082019060010162000554565b600082601f83011262000583578081fd5b81516001604060020a0381111562000599578182fd5b6020620005af601f8301601f1916820162000898565b92508183528481838601011115620005c657600080fd5b60005b82811015620005e6578481018201518482018301528101620005c9565b82811115620005f85760008284860101525b50505092915050565b600060c0828403121562000613578081fd5b6200061f60c062000898565b905081516200062e81620008df565b815260208201516200064081620008df565b602082015260408201516200065581620008df565b604082015260608201516200066a81620008df565b606082015260808201516200067f81620008df565b608082015260a08201516200069481620008df565b60a082015292915050565b6000806000806000806000610180888a031215620006bb578283fd5b620006c789896200046f565b965060208801516001604060020a0380821115620006e3578485fd5b620006f18b838c0162000572565b975060408a015191508082111562000707578485fd5b620007158b838c016200048d565b965060608a01519150808211156200072b578485fd5b620007398b838c016200050d565b955060808a01519150808211156200074f578485fd5b506200075e8a828b016200050d565b93505060a08801519150620007778960c08a0162000601565b905092959891949750929550565b6020808252601a908201527f4552525f53544152545f574549474854535f4d49534d41544348000000000000604082015260600190565b6020808252601b908201527f4552525f53544152545f42414c414e4345535f4d49534d415443480000000000604082015260600190565b60208082526012908201527f4552525f544f4f5f4645575f544f4b454e530000000000000000000000000000604082015260600190565b60208082526014908201527f4552525f494e56414c49445f535741505f464545000000000000000000000000604082015260600190565b60208082526013908201527f4552525f544f4f5f4d414e595f544f4b454e5300000000000000000000000000604082015260600190565b6040518181016001604060020a0381118282101715620008b757600080fd5b604052919050565b60006001604060020a03821115620008d5578081fd5b5060209081020190565b8015158114620008ee57600080fd5b50565b614fdf80620009016000396000f3fe608060405234801561001057600080fd5b50600436106102855760003560e060020a900480636d06dfa011610161578063a835a0de116100cd578063a835a0de1461052b578063a9059cbb14610533578063b02f0b7314610546578063b64ef17b14610559578063c275d81b14610561578063c3391d2714610569578063c83a1c2d1461057c578063d73dd6231461058f578063dd62ed3e146105a2578063e211b875146105b5578063e2762d4b146105bd578063f226b5281461052b578063fde924f7146105d057610285565b80636d06dfa01461046457806370a082311461047757806374983a0d1461048a578063806c6f87146104925780638259e6a0146104a557806392eefe9b146104b8578063948d8ce6146104cb57806395d89b41146104de5780639776e94b146104e6578063980e8db6146104f95780639a82417e146105135780639d829c2b1461051b578063a3f4df7e1461052357610285565b806334e199071161020057806334e199071461037857806337c6f4d91461038b57806346ab38f11461039e57806347786d37146103b157806349b59552146103c45780634ba57882146103d75780634c20d209146103ea5780634f69c0d4146103fd578063554d578d1461041057806355c32a23146104185780635db342771461042b5780635fa7b5841461043e578063661884631461045157610285565b806302c967481461028a57806306fdde03146102b3578063095dcccc146102c8578063095ea7b3146102dd5780630a165940146102fd57806318160ddd14610312578063220eb7601461031a57806323b872dd1461032d578063246bc19b146103405780632e0f2625146103535780633018205f14610368578063313ce56714610370575b600080fd5b61029d61029836600461416f565b6105d8565b6040516102aa9190614e9a565b60405180910390f35b6102bb610796565b6040516102aa91906147a3565b6102db6102d6366004614144565b6107c6565b005b6102f06102eb366004614144565b6107f6565b6040516102aa919061458b565b61030561084e565b6040516102aa9190614519565b61029d61085d565b6102db610328366004614339565b610863565b6102f061033b366004614104565b610891565b6102db61034e36600461423c565b6109c5565b61035b610c73565b6040516102aa9190614eb1565b610305610c78565b61035b610c87565b6102db610386366004614339565b610c8c565b6102f061039936600461431a565b610de5565b61029d6103ac36600461416f565b610e7d565b6102db6103bf366004614339565b611022565b6102db6103d23660046142c6565b61115c565b6102db6103e5366004614339565b611271565b6102db6103f836600461416f565b611334565b6102db61040b366004614369565b6114c8565b61029d611818565b6102db610426366004614144565b61184c565b61029d61043936600461416f565b611878565b6102db61044c3660046140b0565b611ad0565b6102f061045f366004614144565b611d14565b61029d61047236600461416f565b611dee565b61029d6104853660046140b0565b611fae565b610305611fc9565b6102f06104a03660046140b0565b611fe1565b6102db6104b3366004614339565b61202b565b6102db6104c63660046140b0565b612596565b61029d6104d93660046140b0565b612648565b6102bb61271e565b6102db6104f4366004614144565b6127b4565b61050161290c565b6040516102aa96959493929190614596565b610305612948565b610305612960565b6102bb612978565b61029d6129aa565b6102f0610541366004614144565b6129af565b6102db610554366004614369565b6129ee565b610305612c66565b6102db612c75565b6102db610577366004614469565b612de3565b6102db61058a3660046140b0565b6133b2565b6102f061059d366004614144565b6134b2565b61029d6105b03660046140cc565b613526565b6102db613551565b6102db6105cb3660046140b0565b61369c565b6102f06137d3565b6040516000903390600160e060020a0319833516906105fa90849036906145c6565b60405180910390a2600260055414156106315760405160e560020a62461bcd02815260040161062890614af6565b60405180910390fd5b6002600555600754600160a060020a03166106615760405160e560020a62461bcd02815260040161062890614a51565b60075460405160e260020a631ce1a8c9028152600091829173__SmartPoolManager______________________91637386a324916106b5913091600160a060020a03909116908b908b908b90600401614642565b604080518083038186803b1580156106cc57600080fd5b505af41580156106e0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061070491906143f8565b91509150809250600061071784846138e6565b905086600160a060020a031633600160a060020a0316600080516020614f2a8339815191528860405161074a9190614e9a565b60405180910390a361075c338561186e565b61076581610885565b60065461077b90600160a060020a0316846107e8565b610786873388613922565b5050505b60016005559392505050565b6040805180820190915260138152606a60020a7210985b185b98d95c8814db585c9d08141bdbdb02602082015290565b3330146107e85760405160e560020a62461bcd028152600401610628906147f6565b6107f28282613b7d565b5050565b336000818152600260209081526040808320600160a060020a03871680855292528083208590555191929091600080516020614f6a8339815191529061083d908690614e9a565b60405180910390a350600192915050565b600654600160a060020a031681565b60005490565b3330146108855760405160e560020a62461bcd028152600401610628906147f6565b61088e81613b88565b50565b6000600160a060020a0383166108bc5760405160e560020a62461bcd02815260040161062890614975565b33600160a060020a03851614806108f65750600160a060020a03841660009081526002602090815260408083203384529091529020548211155b6109155760405160e560020a62461bcd02815260040161062890614c31565b610920848484613bf0565b600160a060020a038416600081815260026020908152604080832033808552925290912054911480159061095657506000198114155b156109b85761096581846138e6565b600160a060020a038681166000908152600260209081526040808320338085529252918290208490559051918716929091600080516020614f6a833981519152916109af91614e9a565b60405180910390a35b60019150505b9392505050565b33600160a060020a0316600035600160e060020a031916600160e060020a0319166000366040516109f79291906145c6565b60405180910390a260026005541415610a255760405160e560020a62461bcd02815260040161062890614af6565b6002600555600454600160a060020a03163314610a575760405160e560020a62461bcd028152600401610628906147f6565b600754600160a060020a0316610a825760405160e560020a62461bcd02815260040161062890614a51565b60085462010000900460ff16610aad5760405160e560020a62461bcd028152600401610628906149e3565b6007546040805160e060020a63cc77828d0281529051606092600160a060020a03169163cc77828d916004808301926000929190829003018186803b158015610af557600080fd5b505afa158015610b09573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610b3191908101906141a3565b80519091508414610b575760405160e560020a62461bcd028152600401610628906148d0565b60075460145460405160e260020a630500fe7b02815260009260609273__SmartPoolManager______________________92631403f9ec92610bb392600160a060020a03909116916009918d918d918d918d919060040161470f565b60006040518083038186803b158015610bcb57600080fd5b505af4158015610bdf573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610c0791908101906143b3565b601082905560118690559092509050610c2260138888613fa0565b5060005b8351811015610c6457818181518110610c3b57fe5b602002602001015160128281548110610c5057fe5b600091825260209091200155600101610c26565b50506001600555505050505050565b601281565b600454600160a060020a031690565b601290565b33600160a060020a0316600035600160e060020a031916600160e060020a031916600036604051610cbe9291906145c6565b60405180910390a260026005541415610cec5760405160e560020a62461bcd02815260040161062890614af6565b6002600555600454600160a060020a03163314610d1e5760405160e560020a62461bcd028152600401610628906147f6565b600754600160a060020a0316610d495760405160e560020a62461bcd02815260040161062890614a51565b600854610100900460ff16610d735760405160e560020a62461bcd02815260040161062890614db2565b600d81905560075460405160e060020a6334e19907028152600160a060020a03909116906334e1990790610dab908490600401614e9a565b600060405180830381600087803b158015610dc557600080fd5b505af1158015610dd9573d6000803e3d6000fd5b50506001600555505050565b60405160e160020a6322c1aa2502815260009073__RightsManager_________________________90634583544a90610e25906008908690600401614e20565b60206040518083038186803b158015610e3d57600080fd5b505af4158015610e51573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e7591906142e2565b90505b919050565b6040516000903390600160e060020a031983351690610e9f90849036906145c6565b60405180910390a260026005541415610ecd5760405160e560020a62461bcd02815260040161062890614af6565b6002600555600754600160a060020a0316610efd5760405160e560020a62461bcd02815260040161062890614a51565b60075460405160e160020a633461ee95028152600091829173__SmartPoolManager______________________916368c3dd2a91610f51913091600160a060020a03909116908b908b908b90600401614642565b604080518083038186803b158015610f6857600080fd5b505af4158015610f7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fa091906143f8565b915091508092506000610fb386846138e6565b905086600160a060020a031633600160a060020a0316600080516020614f2a83398151915286604051610fe69190614e9a565b60405180910390a3610ff8338761186e565b61100181610885565b60065461101790600160a060020a0316846107e8565b610786873386613922565b33600160a060020a0316600035600160e060020a031916600160e060020a0319166000366040516110549291906145c6565b60405180910390a2600260055414156110825760405160e560020a62461bcd02815260040161062890614af6565b6002600555600754600160a060020a03166110b25760405160e560020a62461bcd02815260040161062890614a51565b600454600160a060020a031633146110df5760405160e560020a62461bcd028152600401610628906147f6565b60085465010000000000900460ff1661110d5760405160e560020a62461bcd02815260040161062890614b8c565b33600160a060020a03167f6bc200110c7794738d401810b22ef824a2044a8ccb022d4ad8769840370331f56017548360405161114a929190614ea3565b60405180910390a26017556001600555565b33600160a060020a0316600035600160e060020a031916600160e060020a03191660003660405161118e9291906145c6565b60405180910390a2600260055414156111bc5760405160e560020a62461bcd02815260040161062890614af6565b6002600555600454600160a060020a031633146111ee5760405160e560020a62461bcd028152600401610628906147f6565b600754600160a060020a03166112195760405160e560020a62461bcd02815260040161062890614a51565b60085460ff1661123e5760405160e560020a62461bcd02815260040161062890614d0d565b60075460405160e160020a6324dacaa9028152600160a060020a03909116906349b5955290610dab90849060040161458b565b3330146112935760405160e560020a62461bcd028152600401610628906147f6565b61129c81613c8f565b60175430600160a060020a03166318160ddd6040518163ffffffff1660e060020a02815260040160206040518083038186803b1580156112db57600080fd5b505afa1580156112ef573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113139190614351565b111561088e5760405160e560020a62461bcd02815260040161062890614bfa565b33600160a060020a0316600035600160e060020a031916600160e060020a0319166000366040516113669291906145c6565b60405180910390a2600260055414156113945760405160e560020a62461bcd02815260040161062890614af6565b6002600555600454600160a060020a031633146113c65760405160e560020a62461bcd028152600401610628906147f6565b600754600160a060020a03166113f15760405160e560020a62461bcd02815260040161062890614a51565b6008546301000000900460ff1661141d5760405160e560020a62461bcd0281526004016106289061482d565b601054156114405760405160e560020a62461bcd02815260040161062890614de9565b60075460405160e260020a6307f9f55902815273__SmartPoolManager______________________91631fe7d5649161148e91600160a060020a0316908790879087906009906004016146de565b60006040518083038186803b1580156114a657600080fd5b505af41580156114ba573d6000803e3d6000fd5b505060016005555050505050565b33600160a060020a0316600035600160e060020a031916600160e060020a0319166000366040516114fa9291906145c6565b60405180910390a2600260055414156115285760405160e560020a62461bcd02815260040161062890614af6565b6002600555600754600160a060020a03166115585760405160e560020a62461bcd02815260040161062890614a51565b600854640100000000900460ff16158061158157503360009081526016602052604090205460ff165b6115a05760405160e560020a62461bcd0281526004016106289061493e565b60075460405160e560020a6289af5d02815260609173__SmartPoolManager______________________91631135eba0916115ef913091600160a060020a031690899089908990600401614676565b60006040518083038186803b15801561160757600080fd5b505af415801561161b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611643919081019061428b565b90506060600760009054906101000a9004600160a060020a0316600160a060020a031663cc77828d6040518163ffffffff1660e060020a02815260040160006040518083038186803b15801561169857600080fd5b505afa1580156116ac573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526116d491908101906141a3565b905060005b81518110156117605760008282815181106116f057fe5b60200260200101519050600084838151811061170857fe5b6020026020010151905081600160a060020a031633600160a060020a0316600080516020614f8a833981519152836040516117439190614e9a565b60405180910390a3611756823383613ced565b50506001016116d9565b5061176a85611293565b61177433866107e8565b505060175430600160a060020a03166318160ddd6040518163ffffffff1660e060020a02815260040160206040518083038186803b1580156117b557600080fd5b505afa1580156117c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117ed9190614351565b111561180e5760405160e560020a62461bcd02815260040161062890614bfa565b5050600160055550565b6000600260055414156118405760405160e560020a62461bcd02815260040161062890614af6565b50601754600160055590565b33301461186e5760405160e560020a62461bcd028152600401610628906147f6565b6107f28282613f48565b6040516000903390600160e060020a03198335169061189a90849036906145c6565b60405180910390a2600260055414156118c85760405160e560020a62461bcd02815260040161062890614af6565b6002600555600754600160a060020a03166118f85760405160e560020a62461bcd02815260040161062890614a51565b600854640100000000900460ff16158061192157503360009081526016602052604090205460ff165b6119405760405160e560020a62461bcd0281526004016106289061493e565b60075460405160e060020a636f50bd5d02815273__SmartPoolManager______________________91636f50bd5d9161198f913091600160a060020a0390911690899089908990600401614642565b60206040518083038186803b1580156119a757600080fd5b505af41580156119bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119df9190614351565b905083600160a060020a031633600160a060020a0316600080516020614f8a83398151915285604051611a129190614e9a565b60405180910390a3611a2381611293565b611a2d33826107e8565b611a38843385613ced565b60175430600160a060020a03166318160ddd6040518163ffffffff1660e060020a02815260040160206040518083038186803b158015611a7757600080fd5b505afa158015611a8b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611aaf9190614351565b111561078a5760405160e560020a62461bcd02815260040161062890614bfa565b33600160a060020a0316600035600160e060020a031916600160e060020a031916600036604051611b029291906145c6565b60405180910390a260026005541415611b305760405160e560020a62461bcd02815260040161062890614af6565b6002600555600454600160a060020a03163314611b625760405160e560020a62461bcd028152600401610628906147f6565b600754600160a060020a0316611b8d5760405160e560020a62461bcd02815260040161062890614a51565b6008546301000000900460ff16611bb95760405160e560020a62461bcd0281526004016106289061482d565b6007546040805160e060020a63cc77828d0281529051606092600160a060020a03169163cc77828d916004808301926000929190829003018186803b158015611c0157600080fd5b505afa158015611c15573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611c3d91908101906141a3565b90506002815111611c635760405160e560020a62461bcd02815260040161062890614c68565b60095460a060020a900460ff1615611c905760405160e560020a62461bcd02815260040161062890614c9f565b60075460405160e060020a63cfc3120902815273__SmartPoolManager______________________9163cfc3120991611cdb913091600160a060020a039091169087906004016145f5565b60006040518083038186803b158015611cf357600080fd5b505af4158015611d07573d6000803e3d6000fd5b5050600160055550505050565b336000908152600260209081526040808320600160a060020a0386168452909152812054808310611d6857336000908152600260209081526040808320600160a060020a0388168452909152812055611d97565b611d7281846138e6565b336000908152600260209081526040808320600160a060020a03891684529091529020555b336000818152600260209081526040808320600160a060020a038916808552925291829020549151909291600080516020614f6a83398151915291611ddc9190614e9a565b60405180910390a35060019392505050565b6040516000903390600160e060020a031983351690611e1090849036906145c6565b60405180910390a260026005541415611e3e5760405160e560020a62461bcd02815260040161062890614af6565b6002600555600754600160a060020a0316611e6e5760405160e560020a62461bcd02815260040161062890614a51565b600854640100000000900460ff161580611e9757503360009081526016602052604090205460ff165b611eb65760405160e560020a62461bcd0281526004016106289061493e565b60075460405160e060020a63c8ebc9ab02815273__SmartPoolManager______________________9163c8ebc9ab91611f05913091600160a060020a0390911690899089908990600401614642565b60206040518083038186803b158015611f1d57600080fd5b505af4158015611f31573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f559190614351565b905083600160a060020a031633600160a060020a0316600080516020614f8a83398151915283604051611f889190614e9a565b60405180910390a3611f9983611293565b611fa333846107e8565b611a38843383613ced565b600160a060020a031660009081526001602052604090205490565b73__RightsManager_________________________90565b600854600090640100000000900460ff16156120195750600160a060020a03811660009081526016602052604090205460ff16610e78565b50600160a060020a0381161515610e78565b33600160a060020a0316600035600160e060020a031916600160e060020a03191660003660405161205d9291906145c6565b60405180910390a26002600554141561208b5760405160e560020a62461bcd02815260040161062890614af6565b6002600555600754600160a060020a0316156120bc5760405160e560020a62461bcd02815260040161062890614a88565b600081116120df5760405160e560020a62461bcd02815260040161062890614907565b600660009054906101000a9004600160a060020a0316600160a060020a031663d556c5dc6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561213257600080fd5b505af1158015612146573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061216a91906142fe565b60078054600160a060020a031916600160a060020a0392831617908190556040805160e160020a63632c06890281529051919092169163c6580d12916004808301926020929190829003018186803b1580156121c557600080fd5b505afa1580156121d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121fd9190614351565b1561221d5760405160e560020a62461bcd02815260040161062890614bc3565b600754600d5460405160e060020a6334e19907028152600160a060020a03909216916334e199079161225191600401614e9a565b600060405180830381600087803b15801561226b57600080fd5b505af115801561227f573d6000803e3d6000fd5b505060085465010000000000900460ff1615915061229f90505760178190555b60005b600e548110156124d9576000600e82815481106122bb57fe5b6000918252602082200154600f8054600160a060020a03909216935090849081106122e257fe5b906000526020600020015490506000601284815481106122fe57fe5b600091825260208220015460405160e060020a6323b872dd028152909250600160a060020a038516906323b872dd9061233f9033903090889060040161452d565b602060405180830381600087803b15801561235957600080fd5b505af115801561236d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061239191906142e2565b9050806123b35760405160e560020a62461bcd02815260040161062890614cd6565b60075460405160e060020a63095ea7b3028152600160a060020a038681169263095ea7b3926123ec929091169060001990600401614551565b602060405180830381600087803b15801561240657600080fd5b505af115801561241a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061243e91906142e2565b9050806124605760405160e560020a62461bcd02815260040161062890614cd6565b60075460405160e360020a631c9c3ca7028152600160a060020a039091169063e4e1e538906124979087908790879060040161456a565b600060405180830381600087803b1580156124b157600080fd5b505af11580156124c5573d6000803e3d6000fd5b5050600190960195506122a2945050505050565b505b600e541561251557600e8054806124ee57fe5b60008281526020902081016000199081018054600160a060020a03191690550190556124db565b60075460405160e160020a6324dacaa9028152600160a060020a03909116906349b59552906125499060019060040161458b565b600060405180830381600087803b15801561256357600080fd5b505af1158015612577573d6000803e3d6000fd5b5050505061258481611293565b61258e33826107e8565b506001600555565b600454600160a060020a031633146125c35760405160e560020a62461bcd028152600401610628906147f6565b600160a060020a0381166125ec5760405160e560020a62461bcd02815260040161062890614975565b600454604051600160a060020a038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a360048054600160a060020a031916600160a060020a0392909216919091179055565b6000600260055414156126705760405160e560020a62461bcd02815260040161062890614b1e565b600754600160a060020a031661269b5760405160e560020a62461bcd02815260040161062890614a51565b60075460405160e160020a634a46c673028152600160a060020a039091169063948d8ce6906126ce908590600401614519565b60206040518083038186803b1580156126e657600080fd5b505afa1580156126fa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e759190614351565b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156127aa5780601f1061277f576101008083540402835291602001916127aa565b820191906000526020600020905b81548152906001019060200180831161278d57829003601f168201915b5050505050905090565b33600160a060020a0316600035600160e060020a031916600160e060020a0319166000366040516127e69291906145c6565b60405180910390a2600260055414156128145760405160e560020a62461bcd02815260040161062890614af6565b6002600555600454600160a060020a031633146128465760405160e560020a62461bcd028152600401610628906147f6565b600754600160a060020a03166128715760405160e560020a62461bcd02815260040161062890614a51565b60085462010000900460ff1661289c5760405160e560020a62461bcd028152600401610628906149e3565b601054156128bf5760405160e560020a62461bcd02815260040161062890614de9565b60075460405160e360020a63089d8f8d02815273__SmartPoolManager______________________916344ec7c6891611cdb913091600160a060020a039091169087908790600401614618565b60085460ff8082169161010081048216916201000082048116916301000000810482169164010000000082048116916501000000000090041686565b73__BalancerSafeMath______________________90565b73__SmartPoolManager______________________90565b604051806040016040528060138152602001606a60020a7210985b185b98d95c8814db585c9d08141bdbdb0281525081565b600a81565b6000600160a060020a0383166129da5760405160e560020a62461bcd02815260040161062890614975565b6129e5338484613bf0565b50600192915050565b33600160a060020a0316600035600160e060020a031916600160e060020a031916600036604051612a209291906145c6565b60405180910390a260026005541415612a4e5760405160e560020a62461bcd02815260040161062890614af6565b6002600555600754600160a060020a0316612a7e5760405160e560020a62461bcd02815260040161062890614a51565b60075460405160e160020a63747591bb028152600091829160609173__SmartPoolManager______________________9163e8eb237691612ad3913091600160a060020a0316908b908b908b90600401614676565b60006040518083038186803b158015612aeb57600080fd5b505af4158015612aff573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612b27919081019061441b565b925092509250612b37338761186e565b600654612b4d90600160a060020a0316846107e8565b612b5682610885565b6007546040805160e060020a63cc77828d0281529051606092600160a060020a03169163cc77828d916004808301926000929190829003018186803b158015612b9e57600080fd5b505afa158015612bb2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612bda91908101906141a3565b905060005b8151811015610c64576000828281518110612bf657fe5b602002602001015190506000848381518110612c0e57fe5b6020026020010151905081600160a060020a031633600160a060020a0316600080516020614f2a83398151915283604051612c499190614e9a565b60405180910390a3612c5c823383613922565b5050600101612bdf565b600754600160a060020a031681565b33600160a060020a0316600035600160e060020a031916600160e060020a031916600036604051612ca79291906145c6565b60405180910390a260026005541415612cd55760405160e560020a62461bcd02815260040161062890614af6565b6002600555600454600160a060020a03163314612d075760405160e560020a62461bcd028152600401610628906147f6565b600754600160a060020a0316612d325760405160e560020a62461bcd02815260040161062890614a51565b6008546301000000900460ff16612d5e5760405160e560020a62461bcd0281526004016106289061482d565b60075460155460405160e260020a632235713502815273__SmartPoolManager______________________926388d5c4d492612dac923092600160a060020a031691906009906004016146b5565b60006040518083038186803b158015612dc457600080fd5b505af4158015612dd8573d6000803e3d6000fd5b505060016005555050565b33600160a060020a0316600035600160e060020a031916600160e060020a031916600036604051612e159291906145c6565b60405180910390a260026005541415612e435760405160e560020a62461bcd02815260040161062890614af6565b6002600555600754600160a060020a031615612e745760405160e560020a62461bcd02815260040161062890614a88565b60008311612e975760405160e560020a62461bcd02815260040161062890614907565b600a821015612ebb5760405160e560020a62461bcd02815260040161062890614899565b81811115612ede5760405160e560020a62461bcd02815260040161062890614864565b600a811015612f025760405160e560020a62461bcd02815260040161062890614abf565b601482905560158190556006546040805160e260020a633555b1770281529051600160a060020a039092169163d556c5dc916004808201926020929091908290030181600087803b158015612f5657600080fd5b505af1158015612f6a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f8e91906142fe565b60078054600160a060020a031916600160a060020a0392831617908190556040805160e160020a63632c06890281529051919092169163c6580d12916004808301926020929190829003018186803b158015612fe957600080fd5b505afa158015612ffd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130219190614351565b156130415760405160e560020a62461bcd02815260040161062890614bc3565b600754600d5460405160e060020a6334e19907028152600160a060020a03909216916334e199079161307591600401614e9a565b600060405180830381600087803b15801561308f57600080fd5b505af11580156130a3573d6000803e3d6000fd5b505060085465010000000000900460ff161591506130c390505760178390555b60005b600e548110156132fd576000600e82815481106130df57fe5b6000918252602082200154600f8054600160a060020a039092169350908490811061310657fe5b9060005260206000200154905060006012848154811061312257fe5b600091825260208220015460405160e060020a6323b872dd028152909250600160a060020a038516906323b872dd906131639033903090889060040161452d565b602060405180830381600087803b15801561317d57600080fd5b505af1158015613191573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131b591906142e2565b9050806131d75760405160e560020a62461bcd02815260040161062890614cd6565b60075460405160e060020a63095ea7b3028152600160a060020a038681169263095ea7b392613210929091169060001990600401614551565b602060405180830381600087803b15801561322a57600080fd5b505af115801561323e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061326291906142e2565b9050806132845760405160e560020a62461bcd02815260040161062890614cd6565b60075460405160e360020a631c9c3ca7028152600160a060020a039091169063e4e1e538906132bb9087908790879060040161456a565b600060405180830381600087803b1580156132d557600080fd5b505af11580156132e9573d6000803e3d6000fd5b5050600190960195506130c6945050505050565b505b600e541561333957600e80548061331257fe5b60008281526020902081016000199081018054600160a060020a03191690550190556132ff565b60075460405160e160020a6324dacaa9028152600160a060020a03909116906349b595529061336d9060019060040161458b565b600060405180830381600087803b15801561338757600080fd5b505af115801561339b573d6000803e3d6000fd5b505050506133a883611293565b61180e33846107e8565b600454600160a060020a031633146133df5760405160e560020a62461bcd028152600401610628906147f6565b600260055414156134055760405160e560020a62461bcd02815260040161062890614af6565b6002600555604051339060008035600160e060020a0319169161342a919036906145c6565b60405180910390a2600854640100000000900460ff1661345f5760405160e560020a62461bcd028152600401610628906149ac565b600160a060020a0381166134885760405160e560020a62461bcd02815260040161062890614b55565b600160a060020a03166000908152601660205260409020805460ff19166001908117909155600555565b336000908152600260209081526040808320600160a060020a03861684529091528120546134e09083613f53565b336000818152600260209081526040808320600160a060020a03891680855292529182902084905590519092600080516020614f6a8339815191529161083d9190614e9a565b600160a060020a03918216600090815260026020908152604080832093909416825291909152205490565b33600160a060020a0316600035600160e060020a031916600160e060020a0319166000366040516135839291906145c6565b60405180910390a2600260055414156135b15760405160e560020a62461bcd02815260040161062890614af6565b6002600555600754600160a060020a03166135e15760405160e560020a62461bcd02815260040161062890614a51565b60085462010000900460ff1661360c5760405160e560020a62461bcd028152600401610628906149e3565b601054601154431061361e5760006010555b60075460115460405160e360020a6281bd0502815273__SmartPoolManager______________________9263040de8289261367092600160a060020a0390921691869190601290601390600401614757565b60006040518083038186803b15801561368857600080fd5b505af4158015610dd9573d6000803e3d6000fd5b600454600160a060020a031633146136c95760405160e560020a62461bcd028152600401610628906147f6565b600260055414156136ef5760405160e560020a62461bcd02815260040161062890614af6565b6002600555604051339060008035600160e060020a03191691613714919036906145c6565b60405180910390a2600854640100000000900460ff166137495760405160e560020a62461bcd028152600401610628906149ac565b600160a060020a03811660009081526016602052604090205460ff166137845760405160e560020a62461bcd02815260040161062890614a1a565b600160a060020a0381166137ad5760405160e560020a62461bcd02815260040161062890614b55565b600160a060020a03166000908152601660205260409020805460ff191690556001600555565b6040516000903390600160e060020a0319833516906137f590849036906145c6565b60405180910390a2600260055414156138235760405160e560020a62461bcd02815260040161062890614af6565b6002600555600754600160a060020a03166138535760405160e560020a62461bcd02815260040161062890614a51565b600760009054906101000a9004600160a060020a0316600160a060020a031663fde924f76040518163ffffffff1660e060020a02815260040160206040518083038186803b1580156138a457600080fd5b505afa1580156138b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138dc91906142e2565b9050600160055590565b60008060006138f58585613f7b565b91509150801561391a5760405160e560020a62461bcd02815260040161062890614d44565b509392505050565b600754600160a060020a031661394d5760405160e560020a62461bcd02815260040161062890614a51565b60075460405160e060020a63f8b2cb4f028152600091600160a060020a03169063f8b2cb4f90613981908790600401614519565b60206040518083038186803b15801561399957600080fd5b505afa1580156139ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139d19190614351565b60075460405160e160020a634a46c673028152919250600091600160a060020a039091169063948d8ce690613a0a908890600401614519565b60206040518083038186803b158015613a2257600080fd5b505afa158015613a36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a5a9190614351565b600754909150600160a060020a0316633fdddaa286613a7985876138e6565b846040518463ffffffff1660e060020a028152600401613a9b9392919061456a565b600060405180830381600087803b158015613ab557600080fd5b505af1158015613ac9573d6000803e3d6000fd5b505060405160e060020a63a9059cbb02815260009250600160a060020a038816915063a9059cbb90613b019088908890600401614551565b602060405180830381600087803b158015613b1b57600080fd5b505af1158015613b2f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b5391906142e2565b905080613b755760405160e560020a62461bcd02815260040161062890614cd6565b505050505050565b6107f2308383613bf0565b30600090815260016020526040902054613ba290826138e6565b3060009081526001602052604081209190915554613bc090826138e6565b60009081556040513090600080516020614f4a83398151915290613be5908590614e9a565b60405180910390a350565b600160a060020a038316600090815260016020526040902054613c1390826138e6565b600160a060020a038085166000908152600160205260408082209390935590841681522054613c429082613f53565b600160a060020a038084166000818152600160205260409081902093909355915190851690600080516020614f4a83398151915290613c82908590614e9a565b60405180910390a3505050565b30600090815260016020526040902054613ca99082613f53565b3060009081526001602052604081209190915554613cc79082613f53565b6000908155604051309190600080516020614f4a83398151915290613be5908590614e9a565b600754600160a060020a0316613d185760405160e560020a62461bcd02815260040161062890614a51565b60075460405160e060020a63f8b2cb4f028152600091600160a060020a03169063f8b2cb4f90613d4c908790600401614519565b60206040518083038186803b158015613d6457600080fd5b505afa158015613d78573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d9c9190614351565b60075460405160e160020a634a46c673028152919250600091600160a060020a039091169063948d8ce690613dd5908890600401614519565b60206040518083038186803b158015613ded57600080fd5b505afa158015613e01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e259190614351565b9050600085600160a060020a03166323b872dd8630876040518463ffffffff1660e060020a028152600401613e5c9392919061452d565b602060405180830381600087803b158015613e7657600080fd5b505af1158015613e8a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613eae91906142e2565b905080613ed05760405160e560020a62461bcd02815260040161062890614cd6565b600754600160a060020a0316633fdddaa287613eec8688613f53565b856040518463ffffffff1660e060020a028152600401613f0e9392919061456a565b600060405180830381600087803b158015613f2857600080fd5b505af1158015613f3c573d6000803e3d6000fd5b50505050505050505050565b6107f2823083613bf0565b6000828201838110156109be5760405160e560020a62461bcd02815260040161062890614d7b565b600080838311613f915750508082036000613f99565b505081810360015b9250929050565b828054828255906000526020600020908101928215613fdb579160200282015b82811115613fdb578235825591602001919060010190613fc0565b50613fe7929150613feb565b5090565b5b80821115613fe75760008155600101613fec565b60008083601f840112614011578081fd5b50813567ffffffffffffffff811115614028578182fd5b6020830191508360208083028501011115613f9957600080fd5b600082601f830112614052578081fd5b815161406561406082614ee6565b614ebf565b81815291506020808301908481018184028601820187101561408657600080fd5b60005b848110156140a557815184529282019290820190600101614089565b505050505092915050565b6000602082840312156140c1578081fd5b81356109be81614f06565b600080604083850312156140de578081fd5b82356140e981614f06565b915060208301356140f981614f06565b809150509250929050565b600080600060608486031215614118578081fd5b833561412381614f06565b9250602084013561413381614f06565b929592945050506040919091013590565b60008060408385031215614156578182fd5b823561416181614f06565b946020939093013593505050565b600080600060608486031215614183578283fd5b833561418e81614f06565b95602085013595506040909401359392505050565b600060208083850312156141b5578182fd5b825167ffffffffffffffff8111156141cb578283fd5b8301601f810185136141db578283fd5b80516141e961406082614ee6565b8181528381019083850185840285018601891015614205578687fd5b8694505b8385101561423057805161421c81614f06565b835260019490940193918501918501614209565b50979650505050505050565b60008060008060608587031215614251578081fd5b843567ffffffffffffffff811115614267578182fd5b61427387828801614000565b90989097506020870135966040013595509350505050565b60006020828403121561429c578081fd5b815167ffffffffffffffff8111156142b2578182fd5b6142be84828501614042565b949350505050565b6000602082840312156142d7578081fd5b81356109be81614f1b565b6000602082840312156142f3578081fd5b81516109be81614f1b565b60006020828403121561430f578081fd5b81516109be81614f06565b60006020828403121561432b578081fd5b8135600681106109be578182fd5b60006020828403121561434a578081fd5b5035919050565b600060208284031215614362578081fd5b5051919050565b60008060006040848603121561437d578081fd5b83359250602084013567ffffffffffffffff81111561439a578182fd5b6143a686828701614000565b9497909650939450505050565b600080604083850312156143c5578182fd5b82519150602083015167ffffffffffffffff8111156143e2578182fd5b6143ee85828601614042565b9150509250929050565b6000806040838503121561440a578182fd5b505080516020909101519092909150565b60008060006060848603121561442f578081fd5b8351925060208401519150604084015167ffffffffffffffff811115614453578182fd5b61445f86828701614042565b9150509250925092565b60008060006060848603121561447d578081fd5b505081359360208301359350604090920135919050565b8183526000600160fb60020a038311156144ac578081fd5b6020830280836020870137939093016020019283525090919050565b6000815480845260208085019450838352808320835b838110156144fa578154875295820195600191820191016144de565b509495945050505050565b15159052565b6006811061451557fe5b9052565b600160a060020a0391909116815260200190565b600160a060020a039384168152919092166020820152604081019190915260600190565b600160a060020a03929092168252602082015260400190565b600160a060020a039390931683526020830191909152604082015260600190565b901515815260200190565b9515158652931515602086015291151560408501521515606084015215156080830152151560a082015260c00190565b60006020825282602083015282846040840137818301604090810191909152601f909201601f19160101919050565b600160a060020a0393841681529183166020830152909116604082015260600190565b600160a060020a039485168152928416602084015292166040820152606081019190915260800190565b600160a060020a03958616815293851660208501529190931660408301526060820192909252608081019190915260a00190565b600160a060020a03868116825285166020820152604081018490526080606082018190526000906146aa9083018486614494565b979650505050505050565b600160a060020a0394851681529290931660208301526040820152606081019190915260800190565b600160a060020a03958616815293909416602084015260408301919091526060820152608081019190915260a00190565b6000600160a060020a038916825287602083015260c0604083015261473860c083018789614494565b606083019590955250608081019290925260a090910152949350505050565b6000600160a060020a038716825285602083015284604083015260a0606083015261478560a08301856144c8565b828103608084015261479781856144c8565b98975050505050505050565b6000602080835283518082850152825b818110156147cf578581018301518582016040015282016147b3565b818111156147e05783604083870101525b50601f01601f1916929092016040019392505050565b60208082526012908201527f4552525f4e4f545f434f4e54524f4c4c45520000000000000000000000000000604082015260600190565b6020808252601c908201527f4552525f43414e4e4f545f4144445f52454d4f56455f544f4b454e5300000000604082015260600190565b6020808252818101527f4552525f494e434f4e53495354454e545f544f4b454e5f54494d455f4c4f434b604082015260600190565b60208082526018908201527f4552525f494e56414c49445f424c4f434b5f504552494f440000000000000000604082015260600190565b6020808252601a908201527f4552525f53544152545f574549474854535f4d49534d41544348000000000000604082015260600190565b6020808252600f908201527f4552525f494e49545f535550504c590000000000000000000000000000000000604082015260600190565b60208082526014908201527f4552525f4e4f545f4f4e5f57484954454c495354000000000000000000000000604082015260600190565b60208082526010908201527f4552525f5a45524f5f4144445245535300000000000000000000000000000000604082015260600190565b60208082526018908201527f4552525f43414e4e4f545f57484954454c4953545f4c50530000000000000000604082015260600190565b6020808252601c908201527f4552525f4e4f545f434f4e464947555241424c455f5745494748545300000000604082015260600190565b60208082526016908201527f4552525f4c505f4e4f545f57484954454c495354454400000000000000000000604082015260600190565b6020808252600f908201527f4552525f4e4f545f435245415445440000000000000000000000000000000000604082015260600190565b6020808252600e908201527f4552525f49535f43524541544544000000000000000000000000000000000000604082015260600190565b6020808252601b908201527f4552525f494e56414c49445f544f4b454e5f54494d455f4c4f434b0000000000604082015260600190565b6020808252600b9082015260a860020a6a4552525f5245454e54525902604082015260600190565b60208082526010908201527f4552525f5245454e5452595f5649455700000000000000000000000000000000604082015260600190565b60208082526013908201527f4552525f494e56414c49445f4144445245535300000000000000000000000000604082015260600190565b60208082526015908201527f4552525f43414e4e4f545f4348414e47455f4341500000000000000000000000604082015260600190565b60208082526014908201527f4552525f4e4f4e5a45524f5f455849545f464545000000000000000000000000604082015260600190565b60208082526015908201527f4552525f4341505f4c494d49545f524541434845440000000000000000000000604082015260600190565b60208082526016908201527f4552525f5043544f4b454e5f4241445f43414c4c455200000000000000000000604082015260600190565b60208082526012908201527f4552525f544f4f5f4645575f544f4b454e530000000000000000000000000000604082015260600190565b6020808252601b908201527f4552525f52454d4f56455f574954485f4144445f50454e44494e470000000000604082015260600190565b6020808252600f908201527f4552525f45524332305f46414c53450000000000000000000000000000000000604082015260600190565b60208082526015908201527f4552525f4e4f545f5041555341424c455f535741500000000000000000000000604082015260600190565b60208082526011908201527f4552525f5355425f554e444552464c4f57000000000000000000000000000000604082015260600190565b60208082526010908201527f4552525f4144445f4f564552464c4f5700000000000000000000000000000000604082015260600190565b6020808252601d908201527f4552525f4e4f545f434f4e464947555241424c455f535741505f464545000000604082015260600190565b6020808252601c908201527f4552525f4e4f5f5550444154455f445552494e475f4752414455414c00000000604082015260600190565b825460ff8082161515835261010082048116151560208401526201000082048116151560408401526301000000820481161515606084015260e083019190614e746080850164010000000084048316614505565b614e8b60a085018265010000000000850416614505565b50506109be60c083018461450b565b90815260200190565b918252602082015260400190565b60ff91909116815260200190565b60405181810167ffffffffffffffff81118282101715614ede57600080fd5b604052919050565b600067ffffffffffffffff821115614efc578081fd5b5060209081020190565b600160a060020a038116811461088e57600080fd5b801515811461088e57600080fdfec62fc35ac75e3bff532648e2859a3e1694002cfa357614ae8e034df7f83db5e9ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925ea39e3b35c5cd8937999ed5f7fbab30acd562a931fc4a887fed2a47c3074aa72a26469706673582212206f7279e6e8504244affac06b582aa204d969ed5567556585dd3f08a00375a93764736f6c634300060c0033a2646970667358221220dd78372f8d11f441a9a3684d7385ea079cbbd2f4aafd6ef19a277ed1ca98f77364736f6c634300060c0033", + "immutableReferences": {}, + "sourceMap": "1056:2131:0:-:0;;;;;;;;;;;;;;;;;;;", + "deployedSourceMap": "1056:2131:0:-:0;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1056:2131:0;;;;;;;;;;;;;;;;;2164:1021;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1576:94;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;2164:1021::-;2464:22;1116:1:18;2510:50:0;;;2502:81;;;;-1:-1:-1;;;;;2502:81:0;;;;;;;:::i;:::-;;;;;;;;;2637:37;;;2629:77;;;;-1:-1:-1;;;;;2629:77:0;;;;;;;:::i;:::-;2724:36;;;2716:75;;;;-1:-1:-1;;;;;2716:75:0;;;;;;;:::i;:::-;2802:26;2871:14;2899:6;;2919;;2939:13;;2966:12;;2992:7;3013:6;2831:198;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;3040:20:0;;:6;:20;;;;;;;;;;;;:27;;-1:-1:-1;;3040:27:0;3063:4;3040:27;;;3077:29;-1:-1:-1;;;;;3077:29:0;;2802:227;;-1:-1:-1;3040:20:0;3077:17;;:29;;3095:10;;3077:29;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3122:35:0;;-1:-1:-1;;;;;3122:35:0;;;-1:-1:-1;3132:10:0;;-1:-1:-1;3122:35:0;;;;;3175:3;2164:1021;-1:-1:-1;;;;;;;;;;;;2164:1021:0:o;1576:94::-;-1:-1:-1;;;;;1651:12:0;1628:4;1651:12;;;;;;;;;;;;;;1576:94::o;-1:-1:-1:-;;;;;;;;:::o;5:130::-;72:20;;-1:-1;;;;;13520:54;;14698:35;;14688:2;;14747:1;;14737:12;14688:2;57:78;;;;:::o;160:352::-;;;290:3;283:4;275:6;271:17;267:27;257:2;;-1:-1;;298:12;257:2;-1:-1;328:20;;368:18;357:30;;354:2;;;-1:-1;;390:12;354:2;434:4;426:6;422:17;410:29;;485:3;434:4;;469:6;465:17;426:6;451:32;;448:41;445:2;;;502:1;;492:12;445:2;250:262;;;;;:::o;1044:337::-;;;1159:3;1152:4;1144:6;1140:17;1136:27;1126:2;;-1:-1;;1167:12;1126:2;-1:-1;1197:20;;1237:18;1226:30;;1223:2;;;-1:-1;;1259:12;1223:2;1303:4;1295:6;1291:17;1279:29;;1354:3;1303:4;1334:17;1295:6;1320:32;;1317:41;1314:2;;;1371:1;;1361:12;1425:158;;1535:3;1526:6;1521:3;1517:16;1513:26;1510:2;;;-1:-1;;1542:12;1510:2;-1:-1;1562:15;1503:80;-1:-1;1503:80::o;1727:241::-;;1831:2;1819:9;1810:7;1806:23;1802:32;1799:2;;;-1:-1;;1837:12;1799:2;1899:53;1944:7;1920:22;1899:53;:::i;:::-;1889:63;1793:175;-1:-1;;;1793:175::o;1975:1643::-;;;;;;;;;;;;2333:3;2321:9;2312:7;2308:23;2304:33;2301:2;;;-1:-1;;2340:12;2301:2;2402:53;2447:7;2423:22;2402:53;:::i;:::-;2392:63;;2544:18;;2520:2;2509:9;2505:18;2492:32;2533:30;2530:2;;;-1:-1;;2566:12;2530:2;2604:65;2661:7;2520:2;2509:9;2505:18;2492:32;2641:9;2637:22;2604:65;:::i;:::-;2586:83;;-1:-1;2586:83;-1:-1;2734:2;2719:18;;2706:32;2747:30;-1:-1;2744:2;;;-1:-1;;2780:12;2744:2;2818:80;2890:7;2734:2;2723:9;2719:18;2706:32;2870:9;2866:22;2818:80;:::i;:::-;2800:98;;-1:-1;2800:98;-1:-1;2963:2;2948:18;;2935:32;2976:30;-1:-1;2973:2;;;-1:-1;;3009:12;2973:2;3047:80;3119:7;2963:2;2952:9;2948:18;2935:32;3099:9;3095:22;3047:80;:::i;:::-;3029:98;;-1:-1;3029:98;-1:-1;3192:3;3177:19;;3164:33;3206:30;-1:-1;3203:2;;;-1:-1;;3239:12;3203:2;;3277:80;3349:7;3192:3;3181:9;3177:19;3164:33;3329:9;3325:22;3277:80;:::i;:::-;3259:98;;-1:-1;3259:98;-1:-1;3394:3;3434:22;;1657:20;;-1:-1;3523:79;3594:7;3503:3;3570:22;;3523:79;:::i;:::-;3512:90;;2295:1323;;;;;;;;;;;;;;:::o;3626:173::-;-1:-1;;;;;13520:54;4017:37;;3788:4;3779:14;;3706:93::o;4921:467::-;12591:19;;;4921:467;-1:-1;;;;;5169:78;;5166:2;;;-1:-1;;5250:12;5166:2;12640:4;5285:6;5281:17;14462:6;14457:3;12640:4;12635:3;12631:14;14439:30;14500:16;;;;12640:4;14500:16;14493:27;;;-1:-1;14500:16;;5053:335;-1:-1;5053:335::o;7199:1269::-;975:6;962:20;987:30;1011:5;987:30;:::i;:::-;13432:13;13425:21;5451:34;;13250:2;13241:12;;962:20;987:30;962:20;987:30;:::i;:::-;13432:13;13425:21;13250:2;7699:14;;5451:34;7829:4;7818:16;;962:20;987:30;962:20;987:30;:::i;:::-;13432:13;13425:21;7829:4;7883:14;;5451:34;8015:4;8004:16;;962:20;987:30;962:20;987:30;:::i;:::-;13432:13;13425:21;8015:4;8069:14;;5451:34;8198:4;8187:16;;962:20;987:30;962:20;987:30;:::i;:::-;13432:13;13425:21;8198:4;8252:14;;5451:34;8378:4;8367:16;;962:20;987:30;962:20;987:30;:::i;:::-;5478:5;13432:13;13425:21;8378:4;8436:3;8432:14;5451:34;;7315:1153;;:::o;8595:238::-;-1:-1;;;;;13520:54;;;;3886:58;;8730:2;8715:18;;8701:132::o;8840:1606::-;-1:-1;;;;;13520:54;;4017:37;;9396:3;9515:2;9500:18;;9493:48;;;8840:1606;;5944:71;6008:6;9381:19;;;5944:71;:::i;:::-;5937:78;;6027:43;6063:6;6058:3;6051:5;6027:43;:::i;:::-;14618:7;14602:14;;-1:-1;;14598:28;6083:39;9681:20;;;9676:2;9661:18;;9654:48;6083:39;4371:86;4450:6;6083:39;4371:86;:::i;:::-;4364:93;;4542:21;;;-1:-1;4569:291;4594:6;4591:1;4588:13;4569:291;;;9515:2;4690:6;13119:12;4711:63;4770:3;13093:39;13119:12;4690:6;13093:39;:::i;:::-;4711:63;:::i;:::-;4781:72;;-1:-1;4704:70;-1:-1;4616:1;4609:9;4569:291;;;4573:14;9882:9;9876:4;9872:20;9867:2;9856:9;9852:18;9845:48;9907:118;10020:4;10011:6;10003;9907:118;:::i;:::-;9899:126;;;10074:9;10068:4;10064:20;10058:3;10047:9;10043:19;10036:49;10099:118;10212:4;10203:6;10195;10099:118;:::i;:::-;10091:126;;;8576:5;10296:3;10285:9;10281:19;8546:37;10312:124;10431:3;10420:9;10416:19;10406:7;10312:124;:::i;:::-;9367:1079;;;;;;;;;;;;;;:::o;10453:210::-;13432:13;;13425:21;5451:34;;10574:2;10559:18;;10545:118::o;10961:416::-;11161:2;11175:47;;;6361:2;11146:18;;;12591:19;6397:28;12631:14;;;6377:49;6445:12;;;11132:245::o;11384:416::-;11584:2;11598:47;;;6696:2;11569:18;;;12591:19;6732:29;12631:14;;;6712:50;6781:12;;;11555:245::o;11807:416::-;12007:2;12021:47;;;7032:2;11992:18;;;12591:19;7068:20;12631:14;;;7048:41;7108:12;;;11978:245::o;12473:178::-;12591:19;;;12640:4;12631:14;;12584:67::o;14381:145::-;14462:6;14457:3;14452;14439:30;-1:-1;14518:1;14500:16;;14493:27;14432:94::o;14763:111::-;14844:5;13432:13;13425:21;14822:5;14819:32;14809:2;;14865:1;;14855:12;14809:2;14803:71;:::o", + "source": "// SPDX-License-Identifier: GPL-3.0-or-later\npragma solidity ^0.6.6;\n\n// Needed to handle structures externally\npragma experimental ABIEncoderV2;\n\n// Imports\n\nimport \"./ConfigurableRightsPool.sol\";\n\n// Contracts\n\n/**\n * @author Balancer Labs\n * @title Configurable Rights Pool Factory - create parameterized smart pools\n * @dev Rights are held in a corresponding struct in ConfigurableRightsPool\n * Index values are as follows:\n * 0: canPauseSwapping - can setPublicSwap back to false after turning it on\n * by default, it is off on initialization and can only be turned on\n * 1: canChangeSwapFee - can setSwapFee after initialization (by default, it is fixed at create time)\n * 2: canChangeWeights - can bind new token weights (allowed by default in base pool)\n * 3: canAddRemoveTokens - can bind/unbind tokens (allowed by default in base pool)\n * 4: canWhitelistLPs - if set, only whitelisted addresses can join pools\n * (enables private pools with more than one LP)\n */\ncontract CRPFactory {\n // State variables\n\n // Keep a list of all Configurable Rights Pools\n mapping(address=>bool) private _isCrp;\n\n // Event declarations\n\n // Log the address of each new smart pool, and its creator\n event LogNewCrp(\n address indexed caller,\n address indexed pool\n );\n\n // Function declarations\n\n /**\n * @notice Check to see if a given address is a CRP\n * @param addr - address to check\n * @return boolean indicating whether it is a CRP\n */\n function isCrp(address addr) external view returns (bool) {\n return _isCrp[addr];\n }\n\n /**\n * @notice Create a new CRP\n * @dev emits a LogNewCRP event\n * @param factoryAddress - the BFactory instance used to create the underlying pool\n * @param tokens - initial set of tokens\n * @param startBalances - initial balances (parallel array)\n * @param startWeights - initial weights (parallal array)\n * @param swapFee - initial swap fee\n * @param rights - struct of permissions, configuring this CRP instance (see above for definitions)\n */\n function newCrp(\n address factoryAddress,\n string calldata symbol,\n address[] calldata tokens,\n uint[] calldata startBalances,\n uint[] calldata startWeights,\n uint swapFee,\n RightsManager.Rights calldata rights\n )\n external\n returns (ConfigurableRightsPool)\n {\n require(tokens.length >= BalancerConstants.MIN_ASSET_LIMIT, \"ERR_TOO_FEW_TOKENS\");\n\n // Arrays must be parallel\n require(startBalances.length == tokens.length, \"ERR_START_BALANCES_MISMATCH\");\n require(startWeights.length == tokens.length, \"ERR_START_WEIGHTS_MISMATCH\");\n\n ConfigurableRightsPool crp = new ConfigurableRightsPool(\n factoryAddress,\n symbol,\n tokens,\n startBalances,\n startWeights,\n swapFee,\n rights\n );\n\n _isCrp[address(crp)] = true;\n crp.setController(msg.sender);\n\n emit LogNewCrp(msg.sender, address(crp));\n\n return crp;\n }\n}\n", + "sourcePath": "/Users/fabien/WebstormProjects/balancer/configurable-rights-pool/contracts/CRPFactory.sol", + "ast": { + "absolutePath": "/Users/fabien/WebstormProjects/balancer/configurable-rights-pool/contracts/CRPFactory.sol", + "exportedSymbols": { + "CRPFactory": [ + 119 + ] + }, + "id": 120, + "license": "GPL-3.0-or-later", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1, + "literals": [ + "solidity", + "^", + "0.6", + ".6" + ], + "nodeType": "PragmaDirective", + "src": "45:23:0" + }, + { + "id": 2, + "literals": [ + "experimental", + "ABIEncoderV2" + ], + "nodeType": "PragmaDirective", + "src": "112:33:0" + }, + { + "absolutePath": "/Users/fabien/WebstormProjects/balancer/configurable-rights-pool/contracts/ConfigurableRightsPool.sol", + "file": "./ConfigurableRightsPool.sol", + "id": 3, + "nodeType": "ImportDirective", + "scope": 120, + "sourceUnit": 2096, + "src": "159:38:0", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [], + "contractDependencies": [ + 2095 + ], + "contractKind": "contract", + "documentation": { + "id": 4, + "nodeType": "StructuredDocumentation", + "src": "213:842:0", + "text": " @author Balancer Labs\n @title Configurable Rights Pool Factory - create parameterized smart pools\n @dev Rights are held in a corresponding struct in ConfigurableRightsPool\n Index values are as follows:\n 0: canPauseSwapping - can setPublicSwap back to false after turning it on\n by default, it is off on initialization and can only be turned on\n 1: canChangeSwapFee - can setSwapFee after initialization (by default, it is fixed at create time)\n 2: canChangeWeights - can bind new token weights (allowed by default in base pool)\n 3: canAddRemoveTokens - can bind/unbind tokens (allowed by default in base pool)\n 4: canWhitelistLPs - if set, only whitelisted addresses can join pools\n (enables private pools with more than one LP)" + }, + "fullyImplemented": true, + "id": 119, + "linearizedBaseContracts": [ + 119 + ], + "name": "CRPFactory", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": false, + "id": 8, + "mutability": "mutable", + "name": "_isCrp", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 119, + "src": "1158:37:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + }, + "typeName": { + "id": 7, + "keyType": { + "id": 5, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1166:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "1158:22:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + }, + "valueType": { + "id": 6, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1175:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + "value": null, + "visibility": "private" + }, + { + "anonymous": false, + "documentation": null, + "id": 14, + "name": "LogNewCrp", + "nodeType": "EventDefinition", + "parameters": { + "id": 13, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10, + "indexed": true, + "mutability": "mutable", + "name": "caller", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 14, + "src": "1317:22:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 9, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1317:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 12, + "indexed": true, + "mutability": "mutable", + "name": "pool", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 14, + "src": "1349:20:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1349:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1307:68:0" + }, + "src": "1292:84:0" + }, + { + "body": { + "id": 26, + "nodeType": "Block", + "src": "1634:36:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 22, + "name": "_isCrp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8, + "src": "1651:6:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 24, + "indexExpression": { + "argumentTypes": null, + "id": 23, + "name": "addr", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17, + "src": "1658:4:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1651:12:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 21, + "id": 25, + "nodeType": "Return", + "src": "1644:19:0" + } + ] + }, + "documentation": { + "id": 15, + "nodeType": "StructuredDocumentation", + "src": "1412:159:0", + "text": " @notice Check to see if a given address is a CRP\n @param addr - address to check\n @return boolean indicating whether it is a CRP" + }, + "functionSelector": "dc19e842", + "id": 27, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "isCrp", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 18, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 17, + "mutability": "mutable", + "name": "addr", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 27, + "src": "1591:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 16, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1591:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1590:14:0" + }, + "returnParameters": { + "id": 21, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 20, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 27, + "src": "1628:4:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 19, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1628:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1627:6:0" + }, + "scope": 119, + "src": "1576:94:0", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 117, + "nodeType": "Block", + "src": "2492:693:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 55, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 51, + "name": "tokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 35, + "src": "2510:6:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[] calldata" + } + }, + "id": 52, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2510:13:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 53, + "name": "BalancerConstants", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8223, + "src": "2527:17:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_BalancerConstants_$8223_$", + "typeString": "type(library BalancerConstants)" + } + }, + "id": 54, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "MIN_ASSET_LIMIT", + "nodeType": "MemberAccess", + "referencedDeclaration": 8206, + "src": "2527:33:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2510:50:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552525f544f4f5f4645575f544f4b454e53", + "id": 56, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2562:20:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c66fc8e373d3f5684badc6f480386803cc92f3179419beb5482d8d0d61d61093", + "typeString": "literal_string \"ERR_TOO_FEW_TOKENS\"" + }, + "value": "ERR_TOO_FEW_TOKENS" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_c66fc8e373d3f5684badc6f480386803cc92f3179419beb5482d8d0d61d61093", + "typeString": "literal_string \"ERR_TOO_FEW_TOKENS\"" + } + ], + "id": 50, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "2502:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 57, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2502:81:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 58, + "nodeType": "ExpressionStatement", + "src": "2502:81:0" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 64, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 60, + "name": "startBalances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 38, + "src": "2637:13:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[] calldata" + } + }, + "id": 61, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2637:20:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 62, + "name": "tokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 35, + "src": "2661:6:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[] calldata" + } + }, + "id": 63, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2661:13:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2637:37:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552525f53544152545f42414c414e4345535f4d49534d41544348", + "id": 65, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2676:29:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_6b4288ec12dc44cb6f3f1fea87e9f964d4f16c5c11b2118209769221c3d24566", + "typeString": "literal_string \"ERR_START_BALANCES_MISMATCH\"" + }, + "value": "ERR_START_BALANCES_MISMATCH" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_6b4288ec12dc44cb6f3f1fea87e9f964d4f16c5c11b2118209769221c3d24566", + "typeString": "literal_string \"ERR_START_BALANCES_MISMATCH\"" + } + ], + "id": 59, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "2629:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 66, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2629:77:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 67, + "nodeType": "ExpressionStatement", + "src": "2629:77:0" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 73, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 69, + "name": "startWeights", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 41, + "src": "2724:12:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[] calldata" + } + }, + "id": 70, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2724:19:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 71, + "name": "tokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 35, + "src": "2747:6:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[] calldata" + } + }, + "id": 72, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2747:13:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2724:36:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552525f53544152545f574549474854535f4d49534d41544348", + "id": 74, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2762:28:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_2621dad9e42b67f637d979efad333e4d7c412f0b27bcffbae38120716d390931", + "typeString": "literal_string \"ERR_START_WEIGHTS_MISMATCH\"" + }, + "value": "ERR_START_WEIGHTS_MISMATCH" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_2621dad9e42b67f637d979efad333e4d7c412f0b27bcffbae38120716d390931", + "typeString": "literal_string \"ERR_START_WEIGHTS_MISMATCH\"" + } + ], + "id": 68, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "2716:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 75, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2716:75:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 76, + "nodeType": "ExpressionStatement", + "src": "2716:75:0" + }, + { + "assignments": [ + 78 + ], + "declarations": [ + { + "constant": false, + "id": 78, + "mutability": "mutable", + "name": "crp", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 117, + "src": "2802:26:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ConfigurableRightsPool_$2095", + "typeString": "contract ConfigurableRightsPool" + }, + "typeName": { + "contractScope": null, + "id": 77, + "name": "ConfigurableRightsPool", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 2095, + "src": "2802:22:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ConfigurableRightsPool_$2095", + "typeString": "contract ConfigurableRightsPool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 89, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 81, + "name": "factoryAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 30, + "src": "2871:14:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 82, + "name": "symbol", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 32, + "src": "2899:6:0", + "typeDescriptions": { + "typeIdentifier": "t_string_calldata_ptr", + "typeString": "string calldata" + } + }, + { + "argumentTypes": null, + "id": 83, + "name": "tokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 35, + "src": "2919:6:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[] calldata" + } + }, + { + "argumentTypes": null, + "id": 84, + "name": "startBalances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 38, + "src": "2939:13:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[] calldata" + } + }, + { + "argumentTypes": null, + "id": 85, + "name": "startWeights", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 41, + "src": "2966:12:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[] calldata" + } + }, + { + "argumentTypes": null, + "id": 86, + "name": "swapFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43, + "src": "2992:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 87, + "name": "rights", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45, + "src": "3013:6:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Rights_$8553_calldata_ptr", + "typeString": "struct RightsManager.Rights calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_string_calldata_ptr", + "typeString": "string calldata" + }, + { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[] calldata" + }, + { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[] calldata" + }, + { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[] calldata" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_struct$_Rights_$8553_calldata_ptr", + "typeString": "struct RightsManager.Rights calldata" + } + ], + "id": 80, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "NewExpression", + "src": "2831:26:0", + "typeDescriptions": { + "typeIdentifier": "t_function_creation_nonpayable$_t_address_$_t_string_memory_ptr_$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$_t_struct$_Rights_$8553_memory_ptr_$returns$_t_contract$_ConfigurableRightsPool_$2095_$", + "typeString": "function (address,string memory,address[] memory,uint256[] memory,uint256[] memory,uint256,struct RightsManager.Rights memory) returns (contract ConfigurableRightsPool)" + }, + "typeName": { + "contractScope": null, + "id": 79, + "name": "ConfigurableRightsPool", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 2095, + "src": "2835:22:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ConfigurableRightsPool_$2095", + "typeString": "contract ConfigurableRightsPool" + } + } + }, + "id": 88, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2831:198:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_ConfigurableRightsPool_$2095", + "typeString": "contract ConfigurableRightsPool" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2802:227:0" + }, + { + "expression": { + "argumentTypes": null, + "id": 97, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 90, + "name": "_isCrp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8, + "src": "3040:6:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 95, + "indexExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 93, + "name": "crp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 78, + "src": "3055:3:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ConfigurableRightsPool_$2095", + "typeString": "contract ConfigurableRightsPool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ConfigurableRightsPool_$2095", + "typeString": "contract ConfigurableRightsPool" + } + ], + "id": 92, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3047:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 91, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3047:7:0", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 94, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3047:12:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "3040:20:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 96, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3063:4:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "3040:27:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 98, + "nodeType": "ExpressionStatement", + "src": "3040:27:0" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 102, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "3095:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 103, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3095:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "expression": { + "argumentTypes": null, + "id": 99, + "name": "crp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 78, + "src": "3077:3:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ConfigurableRightsPool_$2095", + "typeString": "contract ConfigurableRightsPool" + } + }, + "id": 101, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "setController", + "nodeType": "MemberAccess", + "referencedDeclaration": 8075, + "src": "3077:17:0", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$", + "typeString": "function (address) external" + } + }, + "id": 104, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3077:29:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 105, + "nodeType": "ExpressionStatement", + "src": "3077:29:0" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 107, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "3132:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 108, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3132:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 111, + "name": "crp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 78, + "src": "3152:3:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ConfigurableRightsPool_$2095", + "typeString": "contract ConfigurableRightsPool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ConfigurableRightsPool_$2095", + "typeString": "contract ConfigurableRightsPool" + } + ], + "id": 110, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3144:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 109, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3144:7:0", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 112, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3144:12:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 106, + "name": "LogNewCrp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14, + "src": "3122:9:0", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$", + "typeString": "function (address,address)" + } + }, + "id": 113, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3122:35:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 114, + "nodeType": "EmitStatement", + "src": "3117:40:0" + }, + { + "expression": { + "argumentTypes": null, + "id": 115, + "name": "crp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 78, + "src": "3175:3:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ConfigurableRightsPool_$2095", + "typeString": "contract ConfigurableRightsPool" + } + }, + "functionReturnParameters": 49, + "id": 116, + "nodeType": "Return", + "src": "3168:10:0" + } + ] + }, + "documentation": { + "id": 28, + "nodeType": "StructuredDocumentation", + "src": "1676:483:0", + "text": " @notice Create a new CRP\n @dev emits a LogNewCRP event\n @param factoryAddress - the BFactory instance used to create the underlying pool\n @param tokens - initial set of tokens\n @param startBalances - initial balances (parallel array)\n @param startWeights - initial weights (parallal array)\n @param swapFee - initial swap fee\n @param rights - struct of permissions, configuring this CRP instance (see above for definitions)" + }, + "functionSelector": "5f93074c", + "id": 118, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "newCrp", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 46, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 30, + "mutability": "mutable", + "name": "factoryAddress", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 118, + "src": "2189:22:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 29, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2189:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 32, + "mutability": "mutable", + "name": "symbol", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 118, + "src": "2221:22:0", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_string_calldata_ptr", + "typeString": "string" + }, + "typeName": { + "id": 31, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "2221:6:0", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 35, + "mutability": "mutable", + "name": "tokens", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 118, + "src": "2253:25:0", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 33, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2253:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 34, + "length": null, + "nodeType": "ArrayTypeName", + "src": "2253:9:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 38, + "mutability": "mutable", + "name": "startBalances", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 118, + "src": "2288:29:0", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 36, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "2288:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 37, + "length": null, + "nodeType": "ArrayTypeName", + "src": "2288:6:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 41, + "mutability": "mutable", + "name": "startWeights", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 118, + "src": "2327:28:0", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 39, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "2327:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 40, + "length": null, + "nodeType": "ArrayTypeName", + "src": "2327:6:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 43, + "mutability": "mutable", + "name": "swapFee", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 118, + "src": "2365:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 42, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "2365:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 45, + "mutability": "mutable", + "name": "rights", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 118, + "src": "2387:36:0", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Rights_$8553_calldata_ptr", + "typeString": "struct RightsManager.Rights" + }, + "typeName": { + "contractScope": null, + "id": 44, + "name": "RightsManager.Rights", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 8553, + "src": "2387:20:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Rights_$8553_storage_ptr", + "typeString": "struct RightsManager.Rights" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2179:250:0" + }, + "returnParameters": { + "id": 49, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 48, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 118, + "src": "2464:22:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ConfigurableRightsPool_$2095", + "typeString": "contract ConfigurableRightsPool" + }, + "typeName": { + "contractScope": null, + "id": 47, + "name": "ConfigurableRightsPool", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 2095, + "src": "2464:22:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ConfigurableRightsPool_$2095", + "typeString": "contract ConfigurableRightsPool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2463:24:0" + }, + "scope": 119, + "src": "2164:1021:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + } + ], + "scope": 120, + "src": "1056:2131:0" + } + ], + "src": "45:3143:0" + }, + "legacyAST": { + "absolutePath": "/Users/fabien/WebstormProjects/balancer/configurable-rights-pool/contracts/CRPFactory.sol", + "exportedSymbols": { + "CRPFactory": [ + 119 + ] + }, + "id": 120, + "license": "GPL-3.0-or-later", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1, + "literals": [ + "solidity", + "^", + "0.6", + ".6" + ], + "nodeType": "PragmaDirective", + "src": "45:23:0" + }, + { + "id": 2, + "literals": [ + "experimental", + "ABIEncoderV2" + ], + "nodeType": "PragmaDirective", + "src": "112:33:0" + }, + { + "absolutePath": "/Users/fabien/WebstormProjects/balancer/configurable-rights-pool/contracts/ConfigurableRightsPool.sol", + "file": "./ConfigurableRightsPool.sol", + "id": 3, + "nodeType": "ImportDirective", + "scope": 120, + "sourceUnit": 2096, + "src": "159:38:0", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [], + "contractDependencies": [ + 2095 + ], + "contractKind": "contract", + "documentation": { + "id": 4, + "nodeType": "StructuredDocumentation", + "src": "213:842:0", + "text": " @author Balancer Labs\n @title Configurable Rights Pool Factory - create parameterized smart pools\n @dev Rights are held in a corresponding struct in ConfigurableRightsPool\n Index values are as follows:\n 0: canPauseSwapping - can setPublicSwap back to false after turning it on\n by default, it is off on initialization and can only be turned on\n 1: canChangeSwapFee - can setSwapFee after initialization (by default, it is fixed at create time)\n 2: canChangeWeights - can bind new token weights (allowed by default in base pool)\n 3: canAddRemoveTokens - can bind/unbind tokens (allowed by default in base pool)\n 4: canWhitelistLPs - if set, only whitelisted addresses can join pools\n (enables private pools with more than one LP)" + }, + "fullyImplemented": true, + "id": 119, + "linearizedBaseContracts": [ + 119 + ], + "name": "CRPFactory", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": false, + "id": 8, + "mutability": "mutable", + "name": "_isCrp", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 119, + "src": "1158:37:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + }, + "typeName": { + "id": 7, + "keyType": { + "id": 5, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1166:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "1158:22:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + }, + "valueType": { + "id": 6, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1175:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + "value": null, + "visibility": "private" + }, + { + "anonymous": false, + "documentation": null, + "id": 14, + "name": "LogNewCrp", + "nodeType": "EventDefinition", + "parameters": { + "id": 13, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10, + "indexed": true, + "mutability": "mutable", + "name": "caller", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 14, + "src": "1317:22:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 9, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1317:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 12, + "indexed": true, + "mutability": "mutable", + "name": "pool", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 14, + "src": "1349:20:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1349:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1307:68:0" + }, + "src": "1292:84:0" + }, + { + "body": { + "id": 26, + "nodeType": "Block", + "src": "1634:36:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 22, + "name": "_isCrp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8, + "src": "1651:6:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 24, + "indexExpression": { + "argumentTypes": null, + "id": 23, + "name": "addr", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17, + "src": "1658:4:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1651:12:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 21, + "id": 25, + "nodeType": "Return", + "src": "1644:19:0" + } + ] + }, + "documentation": { + "id": 15, + "nodeType": "StructuredDocumentation", + "src": "1412:159:0", + "text": " @notice Check to see if a given address is a CRP\n @param addr - address to check\n @return boolean indicating whether it is a CRP" + }, + "functionSelector": "dc19e842", + "id": 27, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "isCrp", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 18, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 17, + "mutability": "mutable", + "name": "addr", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 27, + "src": "1591:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 16, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1591:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1590:14:0" + }, + "returnParameters": { + "id": 21, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 20, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 27, + "src": "1628:4:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 19, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1628:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1627:6:0" + }, + "scope": 119, + "src": "1576:94:0", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 117, + "nodeType": "Block", + "src": "2492:693:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 55, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 51, + "name": "tokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 35, + "src": "2510:6:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[] calldata" + } + }, + "id": 52, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2510:13:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 53, + "name": "BalancerConstants", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8223, + "src": "2527:17:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_BalancerConstants_$8223_$", + "typeString": "type(library BalancerConstants)" + } + }, + "id": 54, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "MIN_ASSET_LIMIT", + "nodeType": "MemberAccess", + "referencedDeclaration": 8206, + "src": "2527:33:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2510:50:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552525f544f4f5f4645575f544f4b454e53", + "id": 56, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2562:20:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c66fc8e373d3f5684badc6f480386803cc92f3179419beb5482d8d0d61d61093", + "typeString": "literal_string \"ERR_TOO_FEW_TOKENS\"" + }, + "value": "ERR_TOO_FEW_TOKENS" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_c66fc8e373d3f5684badc6f480386803cc92f3179419beb5482d8d0d61d61093", + "typeString": "literal_string \"ERR_TOO_FEW_TOKENS\"" + } + ], + "id": 50, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "2502:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 57, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2502:81:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 58, + "nodeType": "ExpressionStatement", + "src": "2502:81:0" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 64, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 60, + "name": "startBalances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 38, + "src": "2637:13:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[] calldata" + } + }, + "id": 61, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2637:20:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 62, + "name": "tokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 35, + "src": "2661:6:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[] calldata" + } + }, + "id": 63, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2661:13:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2637:37:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552525f53544152545f42414c414e4345535f4d49534d41544348", + "id": 65, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2676:29:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_6b4288ec12dc44cb6f3f1fea87e9f964d4f16c5c11b2118209769221c3d24566", + "typeString": "literal_string \"ERR_START_BALANCES_MISMATCH\"" + }, + "value": "ERR_START_BALANCES_MISMATCH" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_6b4288ec12dc44cb6f3f1fea87e9f964d4f16c5c11b2118209769221c3d24566", + "typeString": "literal_string \"ERR_START_BALANCES_MISMATCH\"" + } + ], + "id": 59, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "2629:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 66, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2629:77:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 67, + "nodeType": "ExpressionStatement", + "src": "2629:77:0" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 73, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 69, + "name": "startWeights", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 41, + "src": "2724:12:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[] calldata" + } + }, + "id": 70, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2724:19:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 71, + "name": "tokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 35, + "src": "2747:6:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[] calldata" + } + }, + "id": 72, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2747:13:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2724:36:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552525f53544152545f574549474854535f4d49534d41544348", + "id": 74, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2762:28:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_2621dad9e42b67f637d979efad333e4d7c412f0b27bcffbae38120716d390931", + "typeString": "literal_string \"ERR_START_WEIGHTS_MISMATCH\"" + }, + "value": "ERR_START_WEIGHTS_MISMATCH" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_2621dad9e42b67f637d979efad333e4d7c412f0b27bcffbae38120716d390931", + "typeString": "literal_string \"ERR_START_WEIGHTS_MISMATCH\"" + } + ], + "id": 68, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "2716:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 75, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2716:75:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 76, + "nodeType": "ExpressionStatement", + "src": "2716:75:0" + }, + { + "assignments": [ + 78 + ], + "declarations": [ + { + "constant": false, + "id": 78, + "mutability": "mutable", + "name": "crp", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 117, + "src": "2802:26:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ConfigurableRightsPool_$2095", + "typeString": "contract ConfigurableRightsPool" + }, + "typeName": { + "contractScope": null, + "id": 77, + "name": "ConfigurableRightsPool", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 2095, + "src": "2802:22:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ConfigurableRightsPool_$2095", + "typeString": "contract ConfigurableRightsPool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 89, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 81, + "name": "factoryAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 30, + "src": "2871:14:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 82, + "name": "symbol", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 32, + "src": "2899:6:0", + "typeDescriptions": { + "typeIdentifier": "t_string_calldata_ptr", + "typeString": "string calldata" + } + }, + { + "argumentTypes": null, + "id": 83, + "name": "tokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 35, + "src": "2919:6:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[] calldata" + } + }, + { + "argumentTypes": null, + "id": 84, + "name": "startBalances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 38, + "src": "2939:13:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[] calldata" + } + }, + { + "argumentTypes": null, + "id": 85, + "name": "startWeights", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 41, + "src": "2966:12:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[] calldata" + } + }, + { + "argumentTypes": null, + "id": 86, + "name": "swapFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43, + "src": "2992:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 87, + "name": "rights", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45, + "src": "3013:6:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Rights_$8553_calldata_ptr", + "typeString": "struct RightsManager.Rights calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_string_calldata_ptr", + "typeString": "string calldata" + }, + { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[] calldata" + }, + { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[] calldata" + }, + { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[] calldata" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_struct$_Rights_$8553_calldata_ptr", + "typeString": "struct RightsManager.Rights calldata" + } + ], + "id": 80, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "NewExpression", + "src": "2831:26:0", + "typeDescriptions": { + "typeIdentifier": "t_function_creation_nonpayable$_t_address_$_t_string_memory_ptr_$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$_t_struct$_Rights_$8553_memory_ptr_$returns$_t_contract$_ConfigurableRightsPool_$2095_$", + "typeString": "function (address,string memory,address[] memory,uint256[] memory,uint256[] memory,uint256,struct RightsManager.Rights memory) returns (contract ConfigurableRightsPool)" + }, + "typeName": { + "contractScope": null, + "id": 79, + "name": "ConfigurableRightsPool", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 2095, + "src": "2835:22:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ConfigurableRightsPool_$2095", + "typeString": "contract ConfigurableRightsPool" + } + } + }, + "id": 88, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2831:198:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_ConfigurableRightsPool_$2095", + "typeString": "contract ConfigurableRightsPool" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2802:227:0" + }, + { + "expression": { + "argumentTypes": null, + "id": 97, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 90, + "name": "_isCrp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8, + "src": "3040:6:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 95, + "indexExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 93, + "name": "crp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 78, + "src": "3055:3:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ConfigurableRightsPool_$2095", + "typeString": "contract ConfigurableRightsPool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ConfigurableRightsPool_$2095", + "typeString": "contract ConfigurableRightsPool" + } + ], + "id": 92, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3047:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 91, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3047:7:0", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 94, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3047:12:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "3040:20:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 96, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3063:4:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "3040:27:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 98, + "nodeType": "ExpressionStatement", + "src": "3040:27:0" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 102, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "3095:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 103, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3095:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "expression": { + "argumentTypes": null, + "id": 99, + "name": "crp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 78, + "src": "3077:3:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ConfigurableRightsPool_$2095", + "typeString": "contract ConfigurableRightsPool" + } + }, + "id": 101, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "setController", + "nodeType": "MemberAccess", + "referencedDeclaration": 8075, + "src": "3077:17:0", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$", + "typeString": "function (address) external" + } + }, + "id": 104, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3077:29:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 105, + "nodeType": "ExpressionStatement", + "src": "3077:29:0" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 107, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "3132:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 108, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3132:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 111, + "name": "crp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 78, + "src": "3152:3:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ConfigurableRightsPool_$2095", + "typeString": "contract ConfigurableRightsPool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ConfigurableRightsPool_$2095", + "typeString": "contract ConfigurableRightsPool" + } + ], + "id": 110, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3144:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 109, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3144:7:0", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 112, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3144:12:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 106, + "name": "LogNewCrp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14, + "src": "3122:9:0", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$", + "typeString": "function (address,address)" + } + }, + "id": 113, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3122:35:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 114, + "nodeType": "EmitStatement", + "src": "3117:40:0" + }, + { + "expression": { + "argumentTypes": null, + "id": 115, + "name": "crp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 78, + "src": "3175:3:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ConfigurableRightsPool_$2095", + "typeString": "contract ConfigurableRightsPool" + } + }, + "functionReturnParameters": 49, + "id": 116, + "nodeType": "Return", + "src": "3168:10:0" + } + ] + }, + "documentation": { + "id": 28, + "nodeType": "StructuredDocumentation", + "src": "1676:483:0", + "text": " @notice Create a new CRP\n @dev emits a LogNewCRP event\n @param factoryAddress - the BFactory instance used to create the underlying pool\n @param tokens - initial set of tokens\n @param startBalances - initial balances (parallel array)\n @param startWeights - initial weights (parallal array)\n @param swapFee - initial swap fee\n @param rights - struct of permissions, configuring this CRP instance (see above for definitions)" + }, + "functionSelector": "5f93074c", + "id": 118, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "newCrp", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 46, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 30, + "mutability": "mutable", + "name": "factoryAddress", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 118, + "src": "2189:22:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 29, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2189:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 32, + "mutability": "mutable", + "name": "symbol", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 118, + "src": "2221:22:0", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_string_calldata_ptr", + "typeString": "string" + }, + "typeName": { + "id": 31, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "2221:6:0", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 35, + "mutability": "mutable", + "name": "tokens", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 118, + "src": "2253:25:0", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 33, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2253:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 34, + "length": null, + "nodeType": "ArrayTypeName", + "src": "2253:9:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 38, + "mutability": "mutable", + "name": "startBalances", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 118, + "src": "2288:29:0", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 36, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "2288:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 37, + "length": null, + "nodeType": "ArrayTypeName", + "src": "2288:6:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 41, + "mutability": "mutable", + "name": "startWeights", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 118, + "src": "2327:28:0", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 39, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "2327:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 40, + "length": null, + "nodeType": "ArrayTypeName", + "src": "2327:6:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 43, + "mutability": "mutable", + "name": "swapFee", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 118, + "src": "2365:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 42, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "2365:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 45, + "mutability": "mutable", + "name": "rights", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 118, + "src": "2387:36:0", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Rights_$8553_calldata_ptr", + "typeString": "struct RightsManager.Rights" + }, + "typeName": { + "contractScope": null, + "id": 44, + "name": "RightsManager.Rights", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 8553, + "src": "2387:20:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Rights_$8553_storage_ptr", + "typeString": "struct RightsManager.Rights" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2179:250:0" + }, + "returnParameters": { + "id": 49, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 48, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 118, + "src": "2464:22:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ConfigurableRightsPool_$2095", + "typeString": "contract ConfigurableRightsPool" + }, + "typeName": { + "contractScope": null, + "id": 47, + "name": "ConfigurableRightsPool", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 2095, + "src": "2464:22:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ConfigurableRightsPool_$2095", + "typeString": "contract ConfigurableRightsPool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2463:24:0" + }, + "scope": 119, + "src": "2164:1021:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + } + ], + "scope": 120, + "src": "1056:2131:0" + } + ], + "src": "45:3143:0" + }, + "compiler": { + "name": "solc", + "version": "0.6.12+commit.27d51765.Emscripten.clang" + }, + "networks": {}, + "schemaVersion": "3.1.0", + "updatedAt": "2020-08-18T20:00:26.277Z", + "devdoc": { + "author": "Balancer Labs", + "details": "Rights are held in a corresponding struct in ConfigurableRightsPool Index values are as follows: 0: canPauseSwapping - can setPublicSwap back to false after turning it on by default, it is off on initialization and can only be turned on 1: canChangeSwapFee - can setSwapFee after initialization (by default, it is fixed at create time) 2: canChangeWeights - can bind new token weights (allowed by default in base pool) 3: canAddRemoveTokens - can bind/unbind tokens (allowed by default in base pool) 4: canWhitelistLPs - if set, only whitelisted addresses can join pools (enables private pools with more than one LP)", + "kind": "dev", + "methods": { + "isCrp(address)": { + "params": { + "addr": "- address to check" + }, + "returns": { + "_0": "boolean indicating whether it is a CRP" + } + }, + "newCrp(address,string,address[],uint256[],uint256[],uint256,(bool,bool,bool,bool,bool,bool))": { + "details": "emits a LogNewCRP event", + "params": { + "factoryAddress": "- the BFactory instance used to create the underlying pool", + "rights": "- struct of permissions, configuring this CRP instance (see above for definitions)", + "startBalances": "- initial balances (parallel array)", + "startWeights": "- initial weights (parallal array)", + "swapFee": "- initial swap fee", + "tokens": "- initial set of tokens" + } + } + }, + "title": "Configurable Rights Pool Factory - create parameterized smart pools", + "version": 1 + }, + "userdoc": { + "kind": "user", + "methods": { + "isCrp(address)": { + "notice": "Check to see if a given address is a CRP" + }, + "newCrp(address,string,address[],uint256[],uint256[],uint256,(bool,bool,bool,bool,bool,bool))": { + "notice": "Create a new CRP" + } + }, + "version": 1 + } +} \ No newline at end of file diff --git a/abis/balancerV1/CToken.json b/abis/balancerV1/CToken.json new file mode 100644 index 0000000..6a8f478 --- /dev/null +++ b/abis/balancerV1/CToken.json @@ -0,0 +1,519 @@ +[ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "src", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "dst", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amt", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "src", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "dst", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amt", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "constant": true, + "inputs": [], + "name": "BONE", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "BPOW_PRECISION", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "EXIT_FEE", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "INIT_POOL_SUPPLY", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "MAX_BOUND_TOKENS", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "MAX_BPOW_BASE", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "MAX_FEE", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "MAX_TOTAL_WEIGHT", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "MAX_WEIGHT", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "MIN_BALANCE", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "MIN_BOUND_TOKENS", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "MIN_BPOW_BASE", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "MIN_FEE", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "MIN_WEIGHT", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "src", + "type": "address" + }, + { + "internalType": "address", + "name": "dst", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "dst", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amt", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "whom", + "type": "address" + } + ], + "name": "balanceOf", + "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": "dst", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amt", + "type": "uint256" + } + ], + "name": "decreaseApproval", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "getColor", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "dst", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amt", + "type": "uint256" + } + ], + "name": "increaseApproval", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "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": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "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": "dst", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amt", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "src", + "type": "address" + }, + { + "internalType": "address", + "name": "dst", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amt", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + } +] diff --git a/packages/subgraph-gnosis-chain/abis/pair.json b/abis/balancerV1/CTokenBytes32.json similarity index 60% rename from packages/subgraph-gnosis-chain/abis/pair.json rename to abis/balancerV1/CTokenBytes32.json index 53582c1..f35ca1b 100644 --- a/packages/subgraph-gnosis-chain/abis/pair.json +++ b/abis/balancerV1/CTokenBytes32.json @@ -1,29 +1,23 @@ [ - { - "inputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "constructor" - }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", - "name": "owner", + "name": "src", "type": "address" }, { "indexed": true, "internalType": "address", - "name": "spender", + "name": "dst", "type": "address" }, { "indexed": false, "internalType": "uint256", - "name": "value", + "name": "amt", "type": "uint256" } ], @@ -36,137 +30,19 @@ { "indexed": true, "internalType": "address", - "name": "sender", + "name": "src", "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", + "name": "dst", "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", + "name": "amt", "type": "uint256" } ], @@ -176,12 +52,12 @@ { "constant": true, "inputs": [], - "name": "DOMAIN_SEPARATOR", + "name": "BONE", "outputs": [ { - "internalType": "bytes32", + "internalType": "uint256", "name": "", - "type": "bytes32" + "type": "uint256" } ], "payable": false, @@ -191,7 +67,7 @@ { "constant": true, "inputs": [], - "name": "MINIMUM_LIQUIDITY", + "name": "BPOW_PRECISION", "outputs": [ { "internalType": "uint256", @@ -206,12 +82,12 @@ { "constant": true, "inputs": [], - "name": "PERMIT_TYPEHASH", + "name": "EXIT_FEE", "outputs": [ { - "internalType": "bytes32", + "internalType": "uint256", "name": "", - "type": "bytes32" + "type": "uint256" } ], "payable": false, @@ -220,19 +96,8 @@ }, { "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - }, - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "allowance", + "inputs": [], + "name": "INIT_POOL_SUPPLY", "outputs": [ { "internalType": "uint256", @@ -245,41 +110,24 @@ "type": "function" }, { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "approve", + "constant": true, + "inputs": [], + "name": "MAX_BOUND_TOKENS", "outputs": [ { - "internalType": "bool", + "internalType": "uint256", "name": "", - "type": "bool" + "type": "uint256" } ], "payable": false, - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function" }, { "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "balanceOf", + "inputs": [], + "name": "MAX_BPOW_BASE", "outputs": [ { "internalType": "uint256", @@ -292,40 +140,29 @@ "type": "function" }, { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "to", - "type": "address" - } - ], - "name": "burn", + "constant": true, + "inputs": [], + "name": "MAX_FEE", "outputs": [ { "internalType": "uint256", - "name": "amount0", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "amount1", + "name": "", "type": "uint256" } ], "payable": false, - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], - "name": "decimals", + "name": "MAX_TOTAL_WEIGHT", "outputs": [ { - "internalType": "uint8", + "internalType": "uint256", "name": "", - "type": "uint8" + "type": "uint256" } ], "payable": false, @@ -335,12 +172,12 @@ { "constant": true, "inputs": [], - "name": "factory", + "name": "MAX_WEIGHT", "outputs": [ { - "internalType": "address", + "internalType": "uint256", "name": "", - "type": "address" + "type": "uint256" } ], "payable": false, @@ -350,22 +187,12 @@ { "constant": true, "inputs": [], - "name": "getReserves", + "name": "MIN_BALANCE", "outputs": [ { - "internalType": "uint112", - "name": "_reserve0", - "type": "uint112" - }, - { - "internalType": "uint112", - "name": "_reserve1", - "type": "uint112" - }, - { - "internalType": "uint32", - "name": "_blockTimestampLast", - "type": "uint32" + "internalType": "uint256", + "name": "", + "type": "uint256" } ], "payable": false, @@ -373,29 +200,24 @@ "type": "function" }, { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_token0", - "type": "address" - }, + "constant": true, + "inputs": [], + "name": "MIN_BOUND_TOKENS", + "outputs": [ { - "internalType": "address", - "name": "_token1", - "type": "address" + "internalType": "uint256", + "name": "", + "type": "uint256" } ], - "name": "initialize", - "outputs": [], "payable": false, - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], - "name": "kLast", + "name": "MIN_BPOW_BASE", "outputs": [ { "internalType": "uint256", @@ -408,35 +230,29 @@ "type": "function" }, { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "to", - "type": "address" - } - ], - "name": "mint", + "constant": true, + "inputs": [], + "name": "MIN_FEE", "outputs": [ { "internalType": "uint256", - "name": "liquidity", + "name": "", "type": "uint256" } ], "payable": false, - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], - "name": "name", + "name": "MIN_WEIGHT", "outputs": [ { - "internalType": "string", + "internalType": "uint256", "name": "", - "type": "string" + "type": "uint256" } ], "payable": false, @@ -448,11 +264,16 @@ "inputs": [ { "internalType": "address", - "name": "", + "name": "src", + "type": "address" + }, + { + "internalType": "address", + "name": "dst", "type": "address" } ], - "name": "nonces", + "name": "allowance", "outputs": [ { "internalType": "uint256", @@ -469,50 +290,37 @@ "inputs": [ { "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "internalType": "address", - "name": "spender", + "name": "dst", "type": "address" }, { "internalType": "uint256", - "name": "value", + "name": "amt", "type": "uint256" - }, - { - "internalType": "uint256", - "name": "deadline", - "type": "uint256" - }, - { - "internalType": "uint8", - "name": "v", - "type": "uint8" - }, - { - "internalType": "bytes32", - "name": "r", - "type": "bytes32" - }, + } + ], + "name": "approve", + "outputs": [ { - "internalType": "bytes32", - "name": "s", - "type": "bytes32" + "internalType": "bool", + "name": "", + "type": "bool" } ], - "name": "permit", - "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": true, - "inputs": [], - "name": "price0CumulativeLast", + "inputs": [ + { + "internalType": "address", + "name": "whom", + "type": "address" + } + ], + "name": "balanceOf", "outputs": [ { "internalType": "uint256", @@ -527,12 +335,12 @@ { "constant": true, "inputs": [], - "name": "price1CumulativeLast", + "name": "decimals", "outputs": [ { - "internalType": "uint256", + "internalType": "uint8", "name": "", - "type": "uint256" + "type": "uint8" } ], "payable": false, @@ -544,42 +352,23 @@ "inputs": [ { "internalType": "address", - "name": "to", + "name": "dst", "type": "address" - } - ], - "name": "skim", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "uint256", - "name": "amount0Out", - "type": "uint256" }, { "internalType": "uint256", - "name": "amount1Out", + "name": "amt", "type": "uint256" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - }, + } + ], + "name": "decreaseApproval", + "outputs": [ { - "internalType": "bytes", - "name": "data", - "type": "bytes" + "internalType": "bool", + "name": "", + "type": "bool" } ], - "name": "swap", - "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" @@ -587,12 +376,12 @@ { "constant": true, "inputs": [], - "name": "symbol", + "name": "getColor", "outputs": [ { - "internalType": "string", + "internalType": "bytes32", "name": "", - "type": "string" + "type": "bytes32" } ], "payable": false, @@ -601,9 +390,26 @@ }, { "constant": false, - "inputs": [], - "name": "sync", - "outputs": [], + "inputs": [ + { + "internalType": "address", + "name": "dst", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amt", + "type": "uint256" + } + ], + "name": "increaseApproval", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], "payable": false, "stateMutability": "nonpayable", "type": "function" @@ -611,12 +417,12 @@ { "constant": true, "inputs": [], - "name": "token0", + "name": "name", "outputs": [ { - "internalType": "address", + "internalType": "bytes32", "name": "", - "type": "address" + "type": "bytes32" } ], "payable": false, @@ -626,12 +432,12 @@ { "constant": true, "inputs": [], - "name": "token1", + "name": "symbol", "outputs": [ { - "internalType": "address", + "internalType": "bytes32", "name": "", - "type": "address" + "type": "bytes32" } ], "payable": false, @@ -658,12 +464,12 @@ "inputs": [ { "internalType": "address", - "name": "to", + "name": "dst", "type": "address" }, { "internalType": "uint256", - "name": "value", + "name": "amt", "type": "uint256" } ], @@ -684,17 +490,17 @@ "inputs": [ { "internalType": "address", - "name": "from", + "name": "src", "type": "address" }, { "internalType": "address", - "name": "to", + "name": "dst", "type": "address" }, { "internalType": "uint256", - "name": "value", + "name": "amt", "type": "uint256" } ], diff --git a/abis/balancerV1/ConfigurableRightsPool.json b/abis/balancerV1/ConfigurableRightsPool.json new file mode 100644 index 0000000..9b3250d --- /dev/null +++ b/abis/balancerV1/ConfigurableRightsPool.json @@ -0,0 +1,54186 @@ +{ + "contractName": "ConfigurableRightsPool", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "factoryAddress", + "type": "address" + }, + { + "internalType": "string", + "name": "tokenSymbolString", + "type": "string" + }, + { + "internalType": "address[]", + "name": "tokens", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "startBalances", + "type": "uint256[]" + }, + { + "internalType": "uint256[]", + "name": "startWeights", + "type": "uint256[]" + }, + { + "internalType": "uint256", + "name": "swapFee", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "bool", + "name": "canPauseSwapping", + "type": "bool" + }, + { + "internalType": "bool", + "name": "canChangeSwapFee", + "type": "bool" + }, + { + "internalType": "bool", + "name": "canChangeWeights", + "type": "bool" + }, + { + "internalType": "bool", + "name": "canAddRemoveTokens", + "type": "bool" + }, + { + "internalType": "bool", + "name": "canWhitelistLPs", + "type": "bool" + }, + { + "internalType": "bool", + "name": "canChangeCap", + "type": "bool" + } + ], + "internalType": "struct RightsManager.Rights", + "name": "rightsStruct", + "type": "tuple" + } + ], + "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": "caller", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "oldCap", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "newCap", + "type": "uint256" + } + ], + "name": "CapChanged", + "type": "event" + }, + { + "anonymous": true, + "inputs": [ + { + "indexed": true, + "internalType": "bytes4", + "name": "sig", + "type": "bytes4" + }, + { + "indexed": true, + "internalType": "address", + "name": "caller", + "type": "address" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "LogCall", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "caller", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "tokenOut", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "tokenAmountOut", + "type": "uint256" + } + ], + "name": "LogExit", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "caller", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "tokenIn", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "tokenAmountIn", + "type": "uint256" + } + ], + "name": "LogJoin", + "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": "DECIMALS", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "DEFAULT_ADD_TOKEN_TIME_LOCK_IN_BLOCKS", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "DEFAULT_MIN_WEIGHT_CHANGE_BLOCK_PERIOD", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "NAME", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "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": "bFactory", + "outputs": [ + { + "internalType": "contract IBFactory", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "bPool", + "outputs": [ + { + "internalType": "contract IBPool", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "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": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "decreaseApproval", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "getController", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "increaseApproval", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "rights", + "outputs": [ + { + "internalType": "bool", + "name": "canPauseSwapping", + "type": "bool" + }, + { + "internalType": "bool", + "name": "canChangeSwapFee", + "type": "bool" + }, + { + "internalType": "bool", + "name": "canChangeWeights", + "type": "bool" + }, + { + "internalType": "bool", + "name": "canAddRemoveTokens", + "type": "bool" + }, + { + "internalType": "bool", + "name": "canWhitelistLPs", + "type": "bool" + }, + { + "internalType": "bool", + "name": "canChangeCap", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "setController", + "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": "uint256", + "name": "swapFee", + "type": "uint256" + } + ], + "name": "setSwapFee", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "isPublicSwap", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "getCap", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "newCap", + "type": "uint256" + } + ], + "name": "setCap", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bool", + "name": "publicSwap", + "type": "bool" + } + ], + "name": "setPublicSwap", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "initialSupply", + "type": "uint256" + } + ], + "name": "createPool", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "initialSupply", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "minimumWeightChangeBlockPeriod", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "addTokenTimeLockInBlocks", + "type": "uint256" + } + ], + "name": "createPool", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "newWeight", + "type": "uint256" + } + ], + "name": "updateWeight", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256[]", + "name": "newWeights", + "type": "uint256[]" + }, + { + "internalType": "uint256", + "name": "startBlock", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "endBlock", + "type": "uint256" + } + ], + "name": "updateWeightsGradually", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "pokeWeights", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "denormalizedWeight", + "type": "uint256" + } + ], + "name": "commitAddToken", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "applyAddToken", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "name": "removeToken", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "poolAmountOut", + "type": "uint256" + }, + { + "internalType": "uint256[]", + "name": "maxAmountsIn", + "type": "uint256[]" + } + ], + "name": "joinPool", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "poolAmountIn", + "type": "uint256" + }, + { + "internalType": "uint256[]", + "name": "minAmountsOut", + "type": "uint256[]" + } + ], + "name": "exitPool", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "tokenIn", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenAmountIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "minPoolAmountOut", + "type": "uint256" + } + ], + "name": "joinswapExternAmountIn", + "outputs": [ + { + "internalType": "uint256", + "name": "poolAmountOut", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "tokenIn", + "type": "address" + }, + { + "internalType": "uint256", + "name": "poolAmountOut", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "maxAmountIn", + "type": "uint256" + } + ], + "name": "joinswapPoolAmountOut", + "outputs": [ + { + "internalType": "uint256", + "name": "tokenAmountIn", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "tokenOut", + "type": "address" + }, + { + "internalType": "uint256", + "name": "poolAmountIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "minAmountOut", + "type": "uint256" + } + ], + "name": "exitswapPoolAmountIn", + "outputs": [ + { + "internalType": "uint256", + "name": "tokenAmountOut", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "tokenOut", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenAmountOut", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "maxPoolAmountIn", + "type": "uint256" + } + ], + "name": "exitswapExternAmountOut", + "outputs": [ + { + "internalType": "uint256", + "name": "poolAmountIn", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "provider", + "type": "address" + } + ], + "name": "whitelistLiquidityProvider", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "provider", + "type": "address" + } + ], + "name": "removeWhitelistedLiquidityProvider", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "provider", + "type": "address" + } + ], + "name": "canProvideLiquidity", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "enum RightsManager.Permissions", + "name": "permission", + "type": "uint8" + } + ], + "name": "hasPermission", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "name": "getDenormalizedWeight", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getRightsManagerVersion", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "getBalancerSafeMathVersion", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "getSmartPoolManagerVersion", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "mintPoolShareFromLib", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "pushPoolShareFromLib", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "pullPoolShareFromLib", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "burnPoolShareFromLib", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"factoryAddress\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"tokenSymbolString\",\"type\":\"string\"},{\"internalType\":\"address[]\",\"name\":\"tokens\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"startBalances\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"startWeights\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"swapFee\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"canPauseSwapping\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"canChangeSwapFee\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"canChangeWeights\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"canAddRemoveTokens\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"canWhitelistLPs\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"canChangeCap\",\"type\":\"bool\"}],\"internalType\":\"struct RightsManager.Rights\",\"name\":\"rightsStruct\",\"type\":\"tuple\"}],\"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\":\"caller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldCap\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newCap\",\"type\":\"uint256\"}],\"name\":\"CapChanged\",\"type\":\"event\"},{\"anonymous\":true,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes4\",\"name\":\"sig\",\"type\":\"bytes4\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"LogCall\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"tokenAmountOut\",\"type\":\"uint256\"}],\"name\":\"LogExit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"tokenAmountIn\",\"type\":\"uint256\"}],\"name\":\"LogJoin\",\"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\":\"DECIMALS\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DEFAULT_ADD_TOKEN_TIME_LOCK_IN_BLOCKS\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DEFAULT_MIN_WEIGHT_CHANGE_BLOCK_PERIOD\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"NAME\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"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\":\"applyAddToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"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\":\"bFactory\",\"outputs\":[{\"internalType\":\"contract IBFactory\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"bPool\",\"outputs\":[{\"internalType\":\"contract IBPool\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burnPoolShareFromLib\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"provider\",\"type\":\"address\"}],\"name\":\"canProvideLiquidity\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"denormalizedWeight\",\"type\":\"uint256\"}],\"name\":\"commitAddToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"initialSupply\",\"type\":\"uint256\"}],\"name\":\"createPool\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"initialSupply\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minimumWeightChangeBlockPeriod\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"addTokenTimeLockInBlocks\",\"type\":\"uint256\"}],\"name\":\"createPool\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"decreaseApproval\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"poolAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"minAmountsOut\",\"type\":\"uint256[]\"}],\"name\":\"exitPool\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxPoolAmountIn\",\"type\":\"uint256\"}],\"name\":\"exitswapExternAmountOut\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"poolAmountIn\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"poolAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minAmountOut\",\"type\":\"uint256\"}],\"name\":\"exitswapPoolAmountIn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenAmountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBalancerSafeMathVersion\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getCap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getController\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"getDenormalizedWeight\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRightsManagerVersion\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getSmartPoolManagerVersion\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"enum RightsManager.Permissions\",\"name\":\"permission\",\"type\":\"uint8\"}],\"name\":\"hasPermission\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"increaseApproval\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isPublicSwap\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"poolAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"maxAmountsIn\",\"type\":\"uint256[]\"}],\"name\":\"joinPool\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minPoolAmountOut\",\"type\":\"uint256\"}],\"name\":\"joinswapExternAmountIn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"poolAmountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"poolAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxAmountIn\",\"type\":\"uint256\"}],\"name\":\"joinswapPoolAmountOut\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenAmountIn\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mintPoolShareFromLib\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pokeWeights\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"pullPoolShareFromLib\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"pushPoolShareFromLib\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"removeToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"provider\",\"type\":\"address\"}],\"name\":\"removeWhitelistedLiquidityProvider\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rights\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"canPauseSwapping\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"canChangeSwapFee\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"canChangeWeights\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"canAddRemoveTokens\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"canWhitelistLPs\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"canChangeCap\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newCap\",\"type\":\"uint256\"}],\"name\":\"setCap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"setController\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"publicSwap\",\"type\":\"bool\"}],\"name\":\"setPublicSwap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"swapFee\",\"type\":\"uint256\"}],\"name\":\"setSwapFee\",\"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\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"newWeight\",\"type\":\"uint256\"}],\"name\":\"updateWeight\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"newWeights\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"startBlock\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endBlock\",\"type\":\"uint256\"}],\"name\":\"updateWeightsGradually\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"provider\",\"type\":\"address\"}],\"name\":\"whitelistLiquidityProvider\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Balancer Labs\",\"details\":\"Rights are defined as follows (index values into the array) 0: canPauseSwapping - can setPublicSwap back to false after turning it on by default, it is off on initialization and can only be turned on 1: canChangeSwapFee - can setSwapFee after initialization (by default, it is fixed at create time) 2: canChangeWeights - can bind new token weights (allowed by default in base pool) 3: canAddRemoveTokens - can bind/unbind tokens (allowed by default in base pool) 4: canWhitelistLPs - can restrict LPs to a whitelist 5: canChangeCap - can change the BSP cap (max # of pool tokens) Note that functions called on bPool and bFactory may look like internal calls, but since they are contracts accessed through an interface, they are really external. To make this explicit, we could write \\\"IBPool(address(bPool)).function()\\\" everywhere, instead of \\\"bPool.function()\\\".\",\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"params\":{\"owner\":\"- owner of the tokens\",\"spender\":\"- entity allowed to spend the tokens\"},\"returns\":{\"_0\":\"uint - remaining amount spender is allowed to transfer\"}},\"approve(address,uint256)\":{\"details\":\"emits an Approval event\",\"params\":{\"amount\":\"- number of tokens being approved\",\"spender\":\"- entity the owner (sender) is approving to spend his tokens\"},\"returns\":{\"_0\":\"bool - result of the approval (will always be true if it doesn't revert)\"}},\"balanceOf(address)\":{\"params\":{\"account\":\"- address we're checking the balance of\"},\"returns\":{\"_0\":\"uint - token balance in the account\"}},\"canProvideLiquidity(address)\":{\"details\":\"If the whitelist feature is not enabled, anyone can provide liquidity (assuming finalized)\",\"returns\":{\"_0\":\"boolean value indicating whether the address can join a pool\"}},\"commitAddToken(address,uint256,uint256)\":{\"details\":\"Not sure about the naming here. Kind of reversed; I would think you would \\\"Apply\\\" to add a token, then \\\"Commit\\\" it to actually do the binding.\",\"params\":{\"balance\":\"- how much to be added\",\"denormalizedWeight\":\"- the desired token weight\",\"token\":\"- the token to be added\"}},\"constructor\":{\"details\":\"_tokens and _swapFee are only used for temporary storage between construction and create pool, and should not be used thereafter! _tokens is destroyed in createPool to prevent this, and _swapFee is kept in sync (defensively), but should never be used except in this constructor and createPool()\",\"params\":{\"factoryAddress\":\"- the BPoolFactory used to create the underlying pool\",\"rightsStruct\":\"- Set of permissions we are assigning to this smart pool\",\"startBalances\":\"- initial token balances\",\"startWeights\":\"- initial token weights\",\"swapFee\":\"- initial swap fee (will set on the core pool after pool creation)\",\"tokenSymbolString\":\"- Token symbol (named thus to avoid shadowing)\",\"tokens\":\"- list of tokens to include\"}},\"createPool(uint256)\":{\"details\":\"Initialize the swap fee to the value provided in the CRP constructor Can be changed if the canChangeSwapFee permission is enabled NB: Code is duplicated in the overloaded createPool! If you change one, change the other! Unfortunately I cannot call this.createPool(initialSupply) from the overloaded one, because msg.sender will be different (contract address vs external account), and the token transfers would fail. Overloading is tricky with external functions.\",\"params\":{\"initialSupply\":\"starting token balance\"}},\"createPool(uint256,uint256,uint256)\":{\"details\":\"Initialize the swap fee to the value provided in the CRP constructor Can be changed if the canChangeSwapFee permission is enabled Time parameters will be fixed at these values If this contract doesn't have canChangeWeights permission - or you want to use the default values, the block time arguments are not needed, and you can just call the single-argument createPool() Code is duplicated in the overloaded createPool! If you change one, change the other! Unfortunately I cannot call this.createPool(initialSupply) from the overloaded one, because msg.sender will be different (contract address vs external account), and the token transfers would fail\",\"params\":{\"addTokenTimeLockInBlocks\":\"- Enforce a mandatory wait time between updates This is also the wait time between committing and applying a new token\",\"initialSupply\":\"starting token balance\",\"minimumWeightChangeBlockPeriod\":\"- Enforce a minimum time between the start and end blocks\"}},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5,05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the value {ERC20} uses, unless {_setupDecimals} is called. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"decreaseApproval(address,uint256)\":{\"details\":\"emits an Approval eventIf you try to decrease it below the current limit, it's just set to zero (not an error)\",\"params\":{\"amount\":\"- number of tokens being approved\",\"spender\":\"- entity the owner (sender) is approving to spend his tokens\"},\"returns\":{\"_0\":\"bool - result of the approval (will always be true if it doesn't revert)\"}},\"exitPool(uint256,uint256[])\":{\"details\":\"Emits a LogExit event for each token bPool is a contract interface; function calls on it are external\",\"params\":{\"minAmountsOut\":\"- minimum amount of asset tokens to receive\",\"poolAmountIn\":\"- amount of pool tokens to redeem\"}},\"exitswapExternAmountOut(address,uint256,uint256)\":{\"details\":\"Emits a LogExit event for the token\",\"params\":{\"maxPoolAmountIn\":\"- maximum pool tokens to be redeemed\",\"tokenAmountOut\":\"- amount of underlying asset tokens to receive\",\"tokenOut\":\"- which token the caller wants to receive\"},\"returns\":{\"poolAmountIn\":\"- amount of pool tokens redeemed\"}},\"exitswapPoolAmountIn(address,uint256,uint256)\":{\"details\":\"Emits a LogExit event for the token\",\"params\":{\"minAmountOut\":\"- minimum asset tokens to receive\",\"poolAmountIn\":\"- amount of pool tokens to redeem\",\"tokenOut\":\"- which token the caller wants to receive\"},\"returns\":{\"tokenAmountOut\":\"- amount of asset tokens returned\"}},\"getBalancerSafeMathVersion()\":{\"details\":\"Convenience function to get the address of the BalancerSafeMath library (so clients can check version)\",\"returns\":{\"_0\":\"address of the BalancerSafeMath library\"}},\"getCap()\":{\"returns\":{\"_0\":\"current value of the cap\"}},\"getController()\":{\"details\":\"external for gas optimization\",\"returns\":{\"_0\":\"address - of the owner (AKA controller)\"}},\"getDenormalizedWeight(address)\":{\"details\":\"viewlock to prevent calling if it's being updated\",\"returns\":{\"_0\":\"token weight\"}},\"getRightsManagerVersion()\":{\"details\":\"Convenience function to get the address of the RightsManager library (so clients can check version)\",\"returns\":{\"_0\":\"address of the RightsManager library\"}},\"getSmartPoolManagerVersion()\":{\"details\":\"Convenience function to get the address of the SmartPoolManager library (so clients can check version)\",\"returns\":{\"_0\":\"address of the SmartPoolManager library\"}},\"hasPermission(uint8)\":{\"details\":\"value of the enum is just the 0-based index in the enumeration For instance canPauseSwapping is 0; canChangeWeights is 2\",\"returns\":{\"_0\":\"token boolean true if we have the given permission\"}},\"increaseApproval(address,uint256)\":{\"details\":\"emits an Approval event\",\"params\":{\"amount\":\"- number of tokens being approved\",\"spender\":\"- entity the owner (sender) is approving to spend his tokens\"},\"returns\":{\"_0\":\"bool - result of the approval (will always be true if it doesn't revert)\"}},\"isPublicSwap()\":{\"details\":\"nonReentrantView, because setPublicSwap is nonReentrant bPool is a contract interface; function calls on it are external\",\"returns\":{\"_0\":\"Current value of isPublicSwap\"}},\"joinPool(uint256,uint256[])\":{\"details\":\"Emits a LogJoin event (for each token) bPool is a contract interface; function calls on it are external\",\"params\":{\"maxAmountsIn\":\"- Max amount of asset tokens to spend\",\"poolAmountOut\":\"- number of pool tokens to receive\"}},\"joinswapExternAmountIn(address,uint256,uint256)\":{\"details\":\"emits a LogJoin event\",\"params\":{\"minPoolAmountOut\":\"- minimum of pool tokens to receive\",\"tokenAmountIn\":\"- amount of deposit\",\"tokenIn\":\"- which token we're transferring in\"},\"returns\":{\"poolAmountOut\":\"- amount of pool tokens minted and transferred\"}},\"joinswapPoolAmountOut(address,uint256,uint256)\":{\"details\":\"emits a LogJoin event\",\"params\":{\"maxAmountIn\":\"- Maximum asset tokens that can be pulled to pay for the pool tokens\",\"poolAmountOut\":\"- amount of pool tokens to be received\",\"tokenIn\":\"- which token we're transferring in (system calculates amount required)\"},\"returns\":{\"tokenAmountIn\":\"- amount of asset tokens transferred in to purchase the pool tokens\"}},\"name()\":{\"details\":\"Returns the name of the token.\"},\"pokeWeights()\":{\"details\":\"Still works if we poke after the end of the period; also works if the weights don't change Resets if we are poking beyond the end, so that we can do it again\"},\"removeToken(address)\":{\"details\":\"bPool is a contract interface; function calls on it are external\",\"params\":{\"token\":\"- token to remove\"}},\"removeWhitelistedLiquidityProvider(address)\":{\"params\":{\"provider\":\"- address of the liquidity provider\"}},\"setCap(uint256)\":{\"details\":\"_bspCap defaults in the constructor to unlimited Can set to 0 (or anywhere below the current supply), to halt new investment Prevent setting it before creating a pool, since createPool sets to intialSupply (it does this to avoid an unlimited cap window between construction and createPool) Therefore setting it before then has no effect, so should not be allowed\",\"params\":{\"newCap\":\"- new value of the cap\"}},\"setController(address)\":{\"details\":\"external for gas optimization\",\"params\":{\"newOwner\":\"- address of new owner\"}},\"setPublicSwap(bool)\":{\"details\":\"If this smart pool has canPauseSwapping enabled, we can turn publicSwap off if it's already on Note that if they turn swapping off - but then finalize the pool - finalizing will turn the swapping back on. They're not supposed to finalize the underlying pool... would defeat the smart pool functions. (Only the owner can finalize the pool - which is this contract - so there is no risk from outside.) bPool is a contract interface; function calls on it are external\",\"params\":{\"publicSwap\":\"new value of the swap\"}},\"setSwapFee(uint256)\":{\"details\":\"Keep the local version and core in sync (see below) bPool is a contract interface; function calls on it are external\",\"params\":{\"swapFee\":\"in Wei\"}},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"declared external for gas optimization\",\"returns\":{\"_0\":\"uint - total number of tokens in existence\"}},\"transfer(address,uint256)\":{\"details\":\"_move emits a Transfer event if successful\",\"params\":{\"amount\":\"- number of tokens being transferred\",\"recipient\":\"- entity receiving the tokens\"},\"returns\":{\"_0\":\"bool - result of the transfer (will always be true if it doesn't revert)\"}},\"transferFrom(address,address,uint256)\":{\"details\":\"_move emits a Transfer event if successful; may also emit an Approval event\",\"params\":{\"amount\":\"- number of tokens being transferred\",\"recipient\":\"- recipient of the tokens\",\"sender\":\"- entity sending the tokens (must be caller or allowed to spend on behalf of caller)\"},\"returns\":{\"_0\":\"bool - result of the transfer (will always be true if it doesn't revert)\"}},\"updateWeight(address,uint256)\":{\"details\":\"Notice Balance is not an input (like with rebind on BPool) since we will require prices not to change This is achieved by forcing balances to change proportionally to weights, so that prices don't change If prices could be changed, this would allow the controller to drain the pool by arbing price changes\",\"params\":{\"newWeight\":\"- new weight of the token\",\"token\":\"- token to be reweighted\"}},\"updateWeightsGradually(uint256[],uint256,uint256)\":{\"details\":\"Must call pokeWeights at least once past the end for it to do the final update and enable calling this again. It is possible to call updateWeightsGradually during an update in some use cases For instance, setting newWeights to currentWeights to stop the update where it is\",\"params\":{\"endBlock\":\"- when weights will be at their final values\",\"newWeights\":\"- final weights we want to get to\",\"startBlock\":\"- when weights should start to change\"}},\"whitelistLiquidityProvider(address)\":{\"params\":{\"provider\":\"- address of the liquidity provider\"}}},\"title\":\"Smart Pool with customizable features\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"allowance(address,address)\":{\"notice\":\"Getter for allowance: amount spender will be allowed to spend on behalf of owner\"},\"applyAddToken()\":{\"notice\":\"Add the token previously committed (in commitAddToken) to the pool\"},\"approve(address,uint256)\":{\"notice\":\"Approve owner (sender) to spend a certain amount\"},\"balanceOf(address)\":{\"notice\":\"Getter for current account balance\"},\"canProvideLiquidity(address)\":{\"notice\":\"Check if an address is a liquidity provider\"},\"commitAddToken(address,uint256,uint256)\":{\"notice\":\"Schedule (commit) a token to be added; must call applyAddToken after a fixed number of blocks to actually add the token\"},\"constructor\":\"Construct a new Configurable Rights Pool (wrapper around BPool)\",\"createPool(uint256)\":{\"notice\":\"Create a new Smart Pool\"},\"createPool(uint256,uint256,uint256)\":{\"notice\":\"Create a new Smart Pool - and set the block period time parameters\"},\"decreaseApproval(address,uint256)\":{\"notice\":\"Decrease the amount the spender is allowed to spend on behalf of the owner (sender)\"},\"exitPool(uint256,uint256[])\":{\"notice\":\"Exit a pool - redeem pool tokens for underlying assets\"},\"exitswapExternAmountOut(address,uint256,uint256)\":{\"notice\":\"Exit a pool - redeem pool tokens for a specific amount of underlying assets Asset must be present in the pool\"},\"exitswapPoolAmountIn(address,uint256,uint256)\":{\"notice\":\"Exit a pool - redeem a specific number of pool tokens for an underlying asset Asset must be present in the pool, and will incur an EXIT_FEE (if set to non-zero)\"},\"getBalancerSafeMathVersion()\":{\"notice\":\"Getter for the BalancerSafeMath contract\"},\"getCap()\":{\"notice\":\"Getter for the cap\"},\"getController()\":{\"notice\":\"Returns the address of the current owner\"},\"getDenormalizedWeight(address)\":{\"notice\":\"Get the denormalized weight of a token\"},\"getRightsManagerVersion()\":{\"notice\":\"Getter for the RightsManager contract\"},\"getSmartPoolManagerVersion()\":{\"notice\":\"Getter for the SmartPoolManager contract\"},\"hasPermission(uint8)\":{\"notice\":\"Getter for specific permissions\"},\"increaseApproval(address,uint256)\":{\"notice\":\"Increase the amount the spender is allowed to spend on behalf of the owner (sender)\"},\"isPublicSwap()\":{\"notice\":\"Getter for the publicSwap field on the underlying pool\"},\"joinPool(uint256,uint256[])\":{\"notice\":\"Join a pool\"},\"joinswapExternAmountIn(address,uint256,uint256)\":{\"notice\":\"Join by swapping a fixed amount of an external token in (must be present in the pool) System calculates the pool token amount\"},\"joinswapPoolAmountOut(address,uint256,uint256)\":{\"notice\":\"Join by swapping an external token in (must be present in the pool) To receive an exact amount of pool tokens out. System calculates the deposit amount\"},\"pokeWeights()\":{\"notice\":\"External function called to make the contract update weights according to plan\"},\"removeToken(address)\":{\"notice\":\"Remove a token from the pool\"},\"removeWhitelistedLiquidityProvider(address)\":{\"notice\":\"Remove from the whitelist of liquidity providers (if enabled)\"},\"setCap(uint256)\":{\"notice\":\"Set the cap (max # of pool tokens)\"},\"setController(address)\":{\"notice\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner\"},\"setPublicSwap(bool)\":{\"notice\":\"Set the public swap flag on the underlying pool\"},\"setSwapFee(uint256)\":{\"notice\":\"Set the swap fee on the underlying pool\"},\"totalSupply()\":{\"notice\":\"Getter for the total supply\"},\"transfer(address,uint256)\":{\"notice\":\"Transfer the given amount from sender (caller) to recipient\"},\"transferFrom(address,address,uint256)\":{\"notice\":\"Transfer the given amount from sender to recipient\"},\"updateWeight(address,uint256)\":{\"notice\":\"Update the weight of an existing token\"},\"updateWeightsGradually(uint256[],uint256,uint256)\":{\"notice\":\"Update weights in a predetermined way, between startBlock and endBlock, through external calls to pokeWeights\"},\"whitelistLiquidityProvider(address)\":{\"notice\":\"Add to the whitelist of liquidity providers (if enabled)\"}},\"notice\":\"PCToken is the \\\"Balancer Smart Pool\\\" token (transferred upon finalization)\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"/Users/fabien/WebstormProjects/balancer/configurable-rights-pool/contracts/ConfigurableRightsPool.sol\":\"ConfigurableRightsPool\"},\"evmVersion\":\"byzantium\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":30},\"remappings\":[]},\"sources\":{\"/Users/fabien/WebstormProjects/balancer/configurable-rights-pool/contracts/ConfigurableRightsPool.sol\":{\"keccak256\":\"0x0a93e9132709789e44ed593c90d0f2b59c22b1cea8ea1bf20b610ad2d000162a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://1af4c703a8f0c0d8332f49a1e30e6730d3857183e315eb135b3044783efb83d5\",\"dweb:/ipfs/QmTw6wGiKESQZ3nu5RTton9mdNeiHBPG9ASsYxn9e8XU7r\"]},\"/Users/fabien/WebstormProjects/balancer/configurable-rights-pool/contracts/IBFactory.sol\":{\"keccak256\":\"0x6f433d6961b745bee94691a67d68a9d08adb13b62217e0edab604460078aedc5\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6ac76bbbce89737ff76900e164d13aa2fff283420a9fb9196fa23a72d308c759\",\"dweb:/ipfs/QmfL7TepHG39Ccu9VZs3DmxxrSHK9XGvB36ySZcjEuUXo5\"]},\"/Users/fabien/WebstormProjects/balancer/configurable-rights-pool/contracts/PCToken.sol\":{\"keccak256\":\"0x4549a447718e817ab3d4fc7eac834c394a13689f9862e9b679a7056e7fb393ce\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://67e8bfafcb24e9a0824733252e1ecd02acddac6df129d380e9ee900a1be057e2\",\"dweb:/ipfs/QmPVZmvbD9zTL4NgBwvRd7hRgP3c7N6ywWGrpbe3Mvu9Vm\"]},\"/Users/fabien/WebstormProjects/balancer/configurable-rights-pool/contracts/utils/BalancerOwnable.sol\":{\"keccak256\":\"0x9d7c9c243b88c97d2109db7910b71ece79a7675f33744168a0705845e1cb700a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e5c226d0d0e161891482ab53736e2d016c7f9bfd41ed51631360eaa53a130878\",\"dweb:/ipfs/QmcwpNgoyCoLuMc8B4iSwsPXDSBKzRGKyFQeP1ryH881mc\"]},\"/Users/fabien/WebstormProjects/balancer/configurable-rights-pool/contracts/utils/BalancerReentrancyGuard.sol\":{\"keccak256\":\"0x0fc8166298c269c9718ca1b98832d501261e61331f6ed684159488b62a513b73\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://232e31d99bcde73b39fd11cd6fd71ce3528b2baf669c4d2e58b9838274442b45\",\"dweb:/ipfs/QmXoxwg8QKCug1y3WY5NxnAR6mE5h9S4YtUBZsWzasTvij\"]},\"/Users/fabien/WebstormProjects/balancer/configurable-rights-pool/libraries/BalancerConstants.sol\":{\"keccak256\":\"0xc56bc238b6a612a4777bb1fe62014d33863c65fbe5fd1fee3e578287243db37a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://9646707aad46a5cd946de9d73996963c9410600527ba6bf84615a11b8193e832\",\"dweb:/ipfs/QmYRZb3qtjG9rwZ9zARi3B2izgZgJ8poNeqj6f96KRXU98\"]},\"/Users/fabien/WebstormProjects/balancer/configurable-rights-pool/libraries/BalancerSafeMath.sol\":{\"keccak256\":\"0x4f63e5431c2af366d3014c7c1ac662db1b3d81abec8f66452c3d8ceeb6d3fc42\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://cda0f32f8096f523cef25dbc239cd9fdf8437541788776f614ddc69daf50b182\",\"dweb:/ipfs/QmRde4sYKDLMih4vapFMoYk6jxRffmYM4aFwJtUzV6q5J1\"]},\"/Users/fabien/WebstormProjects/balancer/configurable-rights-pool/libraries/RightsManager.sol\":{\"keccak256\":\"0xa2d08bbba1a181eb4220ae91871c9e988c66d8628db9b675a6b69d8d7dcbeb8d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://ad5d966d86f71d8c60c8b6cd1d202ae566be3f4bdef4eaec635a0c3cfb85fc9c\",\"dweb:/ipfs/QmRcP5QGnMEoekQZVXftrvj5sYzjJ6GRKtHxLiYuun5kZV\"]},\"/Users/fabien/WebstormProjects/balancer/configurable-rights-pool/libraries/SmartPoolManager.sol\":{\"keccak256\":\"0xf56a29d8e2ca9e06276e2e2be8a4c4094ce78652bd02f51c55de519a58abdb5b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c2d7686a34c46ab04c9f92d1fef7d3acb8ccedf55ca0d0741d9533830bac7bcf\",\"dweb:/ipfs/QmdURGHBL7prXbZ9g3VMdMrpKS8qaiUNNJL9xEEStUNiXJ\"]}},\"version\":1}", + "bytecode": "0x60806040523480156200001157600080fd5b50604051620058e0380380620058e083398101604081905262000034916200069f565b855186906200004b9060039060208401906200030f565b505060048054600160a060020a031916331790556001600555620f4240670de0b6b3a764000004821015620000b7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620000ae906200082a565b60405180910390fd5b67016345785d8a0000821115620000fc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620000ae906200082a565b84518451146200013a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620000ae90620007bc565b845183511462000178576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620000ae9062000785565b600285511015620001b7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620000ae90620007f3565b600885511115620001f6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620000ae9062000861565b60068054600160a060020a031916600160a060020a03891617905580516008805460208085015160408601516060870151608088015160a089015160ff199096169715159790971761ff001916610100931515939093029290921762ff0000191662010000911515919091021763ff00000019166301000000911515919091021764ff000000001916640100000000941515949094029390931765ff0000000000191665010000000000911515919091021790558551620002be91600e919088019062000394565b508351620002d490600f906020870190620003fa565b508251620002ea906012906020860190620003fa565b5050600d555050600a60148190556015555050600060105550600019601755620008f1565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200035257805160ff191683800117855562000382565b8280016001018555821562000382579182015b828111156200038257825182559160200191906001019062000365565b506200039092915062000437565b5090565b828054828255906000526020600020908101928215620003ec579160200282015b82811115620003ec5782518254600160a060020a031916600160a060020a03909116178255602090920191600190910190620003b5565b50620003909291506200044e565b8280548282559060005260206000209081019282156200038257916020028201828111156200038257825182559160200191906001019062000365565b5b8082111562000390576000815560010162000438565b5b8082111562000390578054600160a060020a03191681556001016200044f565b8051600160a060020a03811681146200048757600080fd5b92915050565b600082601f8301126200049e578081fd5b8151620004b5620004af82620008bf565b62000898565b818152915060208083019084810181840286018201871015620004d757600080fd5b60005b848110156200050257620004ef88836200046f565b84529282019290820190600101620004da565b505050505092915050565b600082601f8301126200051e578081fd5b81516200052f620004af82620008bf565b8181529150602080830190848101818402860182018710156200055157600080fd5b60005b84811015620005025781518452928201929082019060010162000554565b600082601f83011262000583578081fd5b81516001604060020a0381111562000599578182fd5b6020620005af601f8301601f1916820162000898565b92508183528481838601011115620005c657600080fd5b60005b82811015620005e6578481018201518482018301528101620005c9565b82811115620005f85760008284860101525b50505092915050565b600060c0828403121562000613578081fd5b6200061f60c062000898565b905081516200062e81620008df565b815260208201516200064081620008df565b602082015260408201516200065581620008df565b604082015260608201516200066a81620008df565b606082015260808201516200067f81620008df565b608082015260a08201516200069481620008df565b60a082015292915050565b6000806000806000806000610180888a031215620006bb578283fd5b620006c789896200046f565b965060208801516001604060020a0380821115620006e3578485fd5b620006f18b838c0162000572565b975060408a015191508082111562000707578485fd5b620007158b838c016200048d565b965060608a01519150808211156200072b578485fd5b620007398b838c016200050d565b955060808a01519150808211156200074f578485fd5b506200075e8a828b016200050d565b93505060a08801519150620007778960c08a0162000601565b905092959891949750929550565b6020808252601a908201527f4552525f53544152545f574549474854535f4d49534d41544348000000000000604082015260600190565b6020808252601b908201527f4552525f53544152545f42414c414e4345535f4d49534d415443480000000000604082015260600190565b60208082526012908201527f4552525f544f4f5f4645575f544f4b454e530000000000000000000000000000604082015260600190565b60208082526014908201527f4552525f494e56414c49445f535741505f464545000000000000000000000000604082015260600190565b60208082526013908201527f4552525f544f4f5f4d414e595f544f4b454e5300000000000000000000000000604082015260600190565b6040518181016001604060020a0381118282101715620008b757600080fd5b604052919050565b60006001604060020a03821115620008d5578081fd5b5060209081020190565b8015158114620008ee57600080fd5b50565b614fdf80620009016000396000f3fe608060405234801561001057600080fd5b50600436106102855760003560e060020a900480636d06dfa011610161578063a835a0de116100cd578063a835a0de1461052b578063a9059cbb14610533578063b02f0b7314610546578063b64ef17b14610559578063c275d81b14610561578063c3391d2714610569578063c83a1c2d1461057c578063d73dd6231461058f578063dd62ed3e146105a2578063e211b875146105b5578063e2762d4b146105bd578063f226b5281461052b578063fde924f7146105d057610285565b80636d06dfa01461046457806370a082311461047757806374983a0d1461048a578063806c6f87146104925780638259e6a0146104a557806392eefe9b146104b8578063948d8ce6146104cb57806395d89b41146104de5780639776e94b146104e6578063980e8db6146104f95780639a82417e146105135780639d829c2b1461051b578063a3f4df7e1461052357610285565b806334e199071161020057806334e199071461037857806337c6f4d91461038b57806346ab38f11461039e57806347786d37146103b157806349b59552146103c45780634ba57882146103d75780634c20d209146103ea5780634f69c0d4146103fd578063554d578d1461041057806355c32a23146104185780635db342771461042b5780635fa7b5841461043e578063661884631461045157610285565b806302c967481461028a57806306fdde03146102b3578063095dcccc146102c8578063095ea7b3146102dd5780630a165940146102fd57806318160ddd14610312578063220eb7601461031a57806323b872dd1461032d578063246bc19b146103405780632e0f2625146103535780633018205f14610368578063313ce56714610370575b600080fd5b61029d61029836600461416f565b6105d8565b6040516102aa9190614e9a565b60405180910390f35b6102bb610796565b6040516102aa91906147a3565b6102db6102d6366004614144565b6107c6565b005b6102f06102eb366004614144565b6107f6565b6040516102aa919061458b565b61030561084e565b6040516102aa9190614519565b61029d61085d565b6102db610328366004614339565b610863565b6102f061033b366004614104565b610891565b6102db61034e36600461423c565b6109c5565b61035b610c73565b6040516102aa9190614eb1565b610305610c78565b61035b610c87565b6102db610386366004614339565b610c8c565b6102f061039936600461431a565b610de5565b61029d6103ac36600461416f565b610e7d565b6102db6103bf366004614339565b611022565b6102db6103d23660046142c6565b61115c565b6102db6103e5366004614339565b611271565b6102db6103f836600461416f565b611334565b6102db61040b366004614369565b6114c8565b61029d611818565b6102db610426366004614144565b61184c565b61029d61043936600461416f565b611878565b6102db61044c3660046140b0565b611ad0565b6102f061045f366004614144565b611d14565b61029d61047236600461416f565b611dee565b61029d6104853660046140b0565b611fae565b610305611fc9565b6102f06104a03660046140b0565b611fe1565b6102db6104b3366004614339565b61202b565b6102db6104c63660046140b0565b612596565b61029d6104d93660046140b0565b612648565b6102bb61271e565b6102db6104f4366004614144565b6127b4565b61050161290c565b6040516102aa96959493929190614596565b610305612948565b610305612960565b6102bb612978565b61029d6129aa565b6102f0610541366004614144565b6129af565b6102db610554366004614369565b6129ee565b610305612c66565b6102db612c75565b6102db610577366004614469565b612de3565b6102db61058a3660046140b0565b6133b2565b6102f061059d366004614144565b6134b2565b61029d6105b03660046140cc565b613526565b6102db613551565b6102db6105cb3660046140b0565b61369c565b6102f06137d3565b6040516000903390600160e060020a0319833516906105fa90849036906145c6565b60405180910390a2600260055414156106315760405160e560020a62461bcd02815260040161062890614af6565b60405180910390fd5b6002600555600754600160a060020a03166106615760405160e560020a62461bcd02815260040161062890614a51565b60075460405160e260020a631ce1a8c9028152600091829173__SmartPoolManager______________________91637386a324916106b5913091600160a060020a03909116908b908b908b90600401614642565b604080518083038186803b1580156106cc57600080fd5b505af41580156106e0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061070491906143f8565b91509150809250600061071784846138e6565b905086600160a060020a031633600160a060020a0316600080516020614f2a8339815191528860405161074a9190614e9a565b60405180910390a361075c338561186e565b61076581610885565b60065461077b90600160a060020a0316846107e8565b610786873388613922565b5050505b60016005559392505050565b6040805180820190915260138152606a60020a7210985b185b98d95c8814db585c9d08141bdbdb02602082015290565b3330146107e85760405160e560020a62461bcd028152600401610628906147f6565b6107f28282613b7d565b5050565b336000818152600260209081526040808320600160a060020a03871680855292528083208590555191929091600080516020614f6a8339815191529061083d908690614e9a565b60405180910390a350600192915050565b600654600160a060020a031681565b60005490565b3330146108855760405160e560020a62461bcd028152600401610628906147f6565b61088e81613b88565b50565b6000600160a060020a0383166108bc5760405160e560020a62461bcd02815260040161062890614975565b33600160a060020a03851614806108f65750600160a060020a03841660009081526002602090815260408083203384529091529020548211155b6109155760405160e560020a62461bcd02815260040161062890614c31565b610920848484613bf0565b600160a060020a038416600081815260026020908152604080832033808552925290912054911480159061095657506000198114155b156109b85761096581846138e6565b600160a060020a038681166000908152600260209081526040808320338085529252918290208490559051918716929091600080516020614f6a833981519152916109af91614e9a565b60405180910390a35b60019150505b9392505050565b33600160a060020a0316600035600160e060020a031916600160e060020a0319166000366040516109f79291906145c6565b60405180910390a260026005541415610a255760405160e560020a62461bcd02815260040161062890614af6565b6002600555600454600160a060020a03163314610a575760405160e560020a62461bcd028152600401610628906147f6565b600754600160a060020a0316610a825760405160e560020a62461bcd02815260040161062890614a51565b60085462010000900460ff16610aad5760405160e560020a62461bcd028152600401610628906149e3565b6007546040805160e060020a63cc77828d0281529051606092600160a060020a03169163cc77828d916004808301926000929190829003018186803b158015610af557600080fd5b505afa158015610b09573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610b3191908101906141a3565b80519091508414610b575760405160e560020a62461bcd028152600401610628906148d0565b60075460145460405160e260020a630500fe7b02815260009260609273__SmartPoolManager______________________92631403f9ec92610bb392600160a060020a03909116916009918d918d918d918d919060040161470f565b60006040518083038186803b158015610bcb57600080fd5b505af4158015610bdf573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610c0791908101906143b3565b601082905560118690559092509050610c2260138888613fa0565b5060005b8351811015610c6457818181518110610c3b57fe5b602002602001015160128281548110610c5057fe5b600091825260209091200155600101610c26565b50506001600555505050505050565b601281565b600454600160a060020a031690565b601290565b33600160a060020a0316600035600160e060020a031916600160e060020a031916600036604051610cbe9291906145c6565b60405180910390a260026005541415610cec5760405160e560020a62461bcd02815260040161062890614af6565b6002600555600454600160a060020a03163314610d1e5760405160e560020a62461bcd028152600401610628906147f6565b600754600160a060020a0316610d495760405160e560020a62461bcd02815260040161062890614a51565b600854610100900460ff16610d735760405160e560020a62461bcd02815260040161062890614db2565b600d81905560075460405160e060020a6334e19907028152600160a060020a03909116906334e1990790610dab908490600401614e9a565b600060405180830381600087803b158015610dc557600080fd5b505af1158015610dd9573d6000803e3d6000fd5b50506001600555505050565b60405160e160020a6322c1aa2502815260009073__RightsManager_________________________90634583544a90610e25906008908690600401614e20565b60206040518083038186803b158015610e3d57600080fd5b505af4158015610e51573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e7591906142e2565b90505b919050565b6040516000903390600160e060020a031983351690610e9f90849036906145c6565b60405180910390a260026005541415610ecd5760405160e560020a62461bcd02815260040161062890614af6565b6002600555600754600160a060020a0316610efd5760405160e560020a62461bcd02815260040161062890614a51565b60075460405160e160020a633461ee95028152600091829173__SmartPoolManager______________________916368c3dd2a91610f51913091600160a060020a03909116908b908b908b90600401614642565b604080518083038186803b158015610f6857600080fd5b505af4158015610f7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fa091906143f8565b915091508092506000610fb386846138e6565b905086600160a060020a031633600160a060020a0316600080516020614f2a83398151915286604051610fe69190614e9a565b60405180910390a3610ff8338761186e565b61100181610885565b60065461101790600160a060020a0316846107e8565b610786873386613922565b33600160a060020a0316600035600160e060020a031916600160e060020a0319166000366040516110549291906145c6565b60405180910390a2600260055414156110825760405160e560020a62461bcd02815260040161062890614af6565b6002600555600754600160a060020a03166110b25760405160e560020a62461bcd02815260040161062890614a51565b600454600160a060020a031633146110df5760405160e560020a62461bcd028152600401610628906147f6565b60085465010000000000900460ff1661110d5760405160e560020a62461bcd02815260040161062890614b8c565b33600160a060020a03167f6bc200110c7794738d401810b22ef824a2044a8ccb022d4ad8769840370331f56017548360405161114a929190614ea3565b60405180910390a26017556001600555565b33600160a060020a0316600035600160e060020a031916600160e060020a03191660003660405161118e9291906145c6565b60405180910390a2600260055414156111bc5760405160e560020a62461bcd02815260040161062890614af6565b6002600555600454600160a060020a031633146111ee5760405160e560020a62461bcd028152600401610628906147f6565b600754600160a060020a03166112195760405160e560020a62461bcd02815260040161062890614a51565b60085460ff1661123e5760405160e560020a62461bcd02815260040161062890614d0d565b60075460405160e160020a6324dacaa9028152600160a060020a03909116906349b5955290610dab90849060040161458b565b3330146112935760405160e560020a62461bcd028152600401610628906147f6565b61129c81613c8f565b60175430600160a060020a03166318160ddd6040518163ffffffff1660e060020a02815260040160206040518083038186803b1580156112db57600080fd5b505afa1580156112ef573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113139190614351565b111561088e5760405160e560020a62461bcd02815260040161062890614bfa565b33600160a060020a0316600035600160e060020a031916600160e060020a0319166000366040516113669291906145c6565b60405180910390a2600260055414156113945760405160e560020a62461bcd02815260040161062890614af6565b6002600555600454600160a060020a031633146113c65760405160e560020a62461bcd028152600401610628906147f6565b600754600160a060020a03166113f15760405160e560020a62461bcd02815260040161062890614a51565b6008546301000000900460ff1661141d5760405160e560020a62461bcd0281526004016106289061482d565b601054156114405760405160e560020a62461bcd02815260040161062890614de9565b60075460405160e260020a6307f9f55902815273__SmartPoolManager______________________91631fe7d5649161148e91600160a060020a0316908790879087906009906004016146de565b60006040518083038186803b1580156114a657600080fd5b505af41580156114ba573d6000803e3d6000fd5b505060016005555050505050565b33600160a060020a0316600035600160e060020a031916600160e060020a0319166000366040516114fa9291906145c6565b60405180910390a2600260055414156115285760405160e560020a62461bcd02815260040161062890614af6565b6002600555600754600160a060020a03166115585760405160e560020a62461bcd02815260040161062890614a51565b600854640100000000900460ff16158061158157503360009081526016602052604090205460ff165b6115a05760405160e560020a62461bcd0281526004016106289061493e565b60075460405160e560020a6289af5d02815260609173__SmartPoolManager______________________91631135eba0916115ef913091600160a060020a031690899089908990600401614676565b60006040518083038186803b15801561160757600080fd5b505af415801561161b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611643919081019061428b565b90506060600760009054906101000a9004600160a060020a0316600160a060020a031663cc77828d6040518163ffffffff1660e060020a02815260040160006040518083038186803b15801561169857600080fd5b505afa1580156116ac573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526116d491908101906141a3565b905060005b81518110156117605760008282815181106116f057fe5b60200260200101519050600084838151811061170857fe5b6020026020010151905081600160a060020a031633600160a060020a0316600080516020614f8a833981519152836040516117439190614e9a565b60405180910390a3611756823383613ced565b50506001016116d9565b5061176a85611293565b61177433866107e8565b505060175430600160a060020a03166318160ddd6040518163ffffffff1660e060020a02815260040160206040518083038186803b1580156117b557600080fd5b505afa1580156117c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117ed9190614351565b111561180e5760405160e560020a62461bcd02815260040161062890614bfa565b5050600160055550565b6000600260055414156118405760405160e560020a62461bcd02815260040161062890614af6565b50601754600160055590565b33301461186e5760405160e560020a62461bcd028152600401610628906147f6565b6107f28282613f48565b6040516000903390600160e060020a03198335169061189a90849036906145c6565b60405180910390a2600260055414156118c85760405160e560020a62461bcd02815260040161062890614af6565b6002600555600754600160a060020a03166118f85760405160e560020a62461bcd02815260040161062890614a51565b600854640100000000900460ff16158061192157503360009081526016602052604090205460ff165b6119405760405160e560020a62461bcd0281526004016106289061493e565b60075460405160e060020a636f50bd5d02815273__SmartPoolManager______________________91636f50bd5d9161198f913091600160a060020a0390911690899089908990600401614642565b60206040518083038186803b1580156119a757600080fd5b505af41580156119bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119df9190614351565b905083600160a060020a031633600160a060020a0316600080516020614f8a83398151915285604051611a129190614e9a565b60405180910390a3611a2381611293565b611a2d33826107e8565b611a38843385613ced565b60175430600160a060020a03166318160ddd6040518163ffffffff1660e060020a02815260040160206040518083038186803b158015611a7757600080fd5b505afa158015611a8b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611aaf9190614351565b111561078a5760405160e560020a62461bcd02815260040161062890614bfa565b33600160a060020a0316600035600160e060020a031916600160e060020a031916600036604051611b029291906145c6565b60405180910390a260026005541415611b305760405160e560020a62461bcd02815260040161062890614af6565b6002600555600454600160a060020a03163314611b625760405160e560020a62461bcd028152600401610628906147f6565b600754600160a060020a0316611b8d5760405160e560020a62461bcd02815260040161062890614a51565b6008546301000000900460ff16611bb95760405160e560020a62461bcd0281526004016106289061482d565b6007546040805160e060020a63cc77828d0281529051606092600160a060020a03169163cc77828d916004808301926000929190829003018186803b158015611c0157600080fd5b505afa158015611c15573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611c3d91908101906141a3565b90506002815111611c635760405160e560020a62461bcd02815260040161062890614c68565b60095460a060020a900460ff1615611c905760405160e560020a62461bcd02815260040161062890614c9f565b60075460405160e060020a63cfc3120902815273__SmartPoolManager______________________9163cfc3120991611cdb913091600160a060020a039091169087906004016145f5565b60006040518083038186803b158015611cf357600080fd5b505af4158015611d07573d6000803e3d6000fd5b5050600160055550505050565b336000908152600260209081526040808320600160a060020a0386168452909152812054808310611d6857336000908152600260209081526040808320600160a060020a0388168452909152812055611d97565b611d7281846138e6565b336000908152600260209081526040808320600160a060020a03891684529091529020555b336000818152600260209081526040808320600160a060020a038916808552925291829020549151909291600080516020614f6a83398151915291611ddc9190614e9a565b60405180910390a35060019392505050565b6040516000903390600160e060020a031983351690611e1090849036906145c6565b60405180910390a260026005541415611e3e5760405160e560020a62461bcd02815260040161062890614af6565b6002600555600754600160a060020a0316611e6e5760405160e560020a62461bcd02815260040161062890614a51565b600854640100000000900460ff161580611e9757503360009081526016602052604090205460ff165b611eb65760405160e560020a62461bcd0281526004016106289061493e565b60075460405160e060020a63c8ebc9ab02815273__SmartPoolManager______________________9163c8ebc9ab91611f05913091600160a060020a0390911690899089908990600401614642565b60206040518083038186803b158015611f1d57600080fd5b505af4158015611f31573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f559190614351565b905083600160a060020a031633600160a060020a0316600080516020614f8a83398151915283604051611f889190614e9a565b60405180910390a3611f9983611293565b611fa333846107e8565b611a38843383613ced565b600160a060020a031660009081526001602052604090205490565b73__RightsManager_________________________90565b600854600090640100000000900460ff16156120195750600160a060020a03811660009081526016602052604090205460ff16610e78565b50600160a060020a0381161515610e78565b33600160a060020a0316600035600160e060020a031916600160e060020a03191660003660405161205d9291906145c6565b60405180910390a26002600554141561208b5760405160e560020a62461bcd02815260040161062890614af6565b6002600555600754600160a060020a0316156120bc5760405160e560020a62461bcd02815260040161062890614a88565b600081116120df5760405160e560020a62461bcd02815260040161062890614907565b600660009054906101000a9004600160a060020a0316600160a060020a031663d556c5dc6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561213257600080fd5b505af1158015612146573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061216a91906142fe565b60078054600160a060020a031916600160a060020a0392831617908190556040805160e160020a63632c06890281529051919092169163c6580d12916004808301926020929190829003018186803b1580156121c557600080fd5b505afa1580156121d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121fd9190614351565b1561221d5760405160e560020a62461bcd02815260040161062890614bc3565b600754600d5460405160e060020a6334e19907028152600160a060020a03909216916334e199079161225191600401614e9a565b600060405180830381600087803b15801561226b57600080fd5b505af115801561227f573d6000803e3d6000fd5b505060085465010000000000900460ff1615915061229f90505760178190555b60005b600e548110156124d9576000600e82815481106122bb57fe5b6000918252602082200154600f8054600160a060020a03909216935090849081106122e257fe5b906000526020600020015490506000601284815481106122fe57fe5b600091825260208220015460405160e060020a6323b872dd028152909250600160a060020a038516906323b872dd9061233f9033903090889060040161452d565b602060405180830381600087803b15801561235957600080fd5b505af115801561236d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061239191906142e2565b9050806123b35760405160e560020a62461bcd02815260040161062890614cd6565b60075460405160e060020a63095ea7b3028152600160a060020a038681169263095ea7b3926123ec929091169060001990600401614551565b602060405180830381600087803b15801561240657600080fd5b505af115801561241a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061243e91906142e2565b9050806124605760405160e560020a62461bcd02815260040161062890614cd6565b60075460405160e360020a631c9c3ca7028152600160a060020a039091169063e4e1e538906124979087908790879060040161456a565b600060405180830381600087803b1580156124b157600080fd5b505af11580156124c5573d6000803e3d6000fd5b5050600190960195506122a2945050505050565b505b600e541561251557600e8054806124ee57fe5b60008281526020902081016000199081018054600160a060020a03191690550190556124db565b60075460405160e160020a6324dacaa9028152600160a060020a03909116906349b59552906125499060019060040161458b565b600060405180830381600087803b15801561256357600080fd5b505af1158015612577573d6000803e3d6000fd5b5050505061258481611293565b61258e33826107e8565b506001600555565b600454600160a060020a031633146125c35760405160e560020a62461bcd028152600401610628906147f6565b600160a060020a0381166125ec5760405160e560020a62461bcd02815260040161062890614975565b600454604051600160a060020a038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a360048054600160a060020a031916600160a060020a0392909216919091179055565b6000600260055414156126705760405160e560020a62461bcd02815260040161062890614b1e565b600754600160a060020a031661269b5760405160e560020a62461bcd02815260040161062890614a51565b60075460405160e160020a634a46c673028152600160a060020a039091169063948d8ce6906126ce908590600401614519565b60206040518083038186803b1580156126e657600080fd5b505afa1580156126fa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e759190614351565b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156127aa5780601f1061277f576101008083540402835291602001916127aa565b820191906000526020600020905b81548152906001019060200180831161278d57829003601f168201915b5050505050905090565b33600160a060020a0316600035600160e060020a031916600160e060020a0319166000366040516127e69291906145c6565b60405180910390a2600260055414156128145760405160e560020a62461bcd02815260040161062890614af6565b6002600555600454600160a060020a031633146128465760405160e560020a62461bcd028152600401610628906147f6565b600754600160a060020a03166128715760405160e560020a62461bcd02815260040161062890614a51565b60085462010000900460ff1661289c5760405160e560020a62461bcd028152600401610628906149e3565b601054156128bf5760405160e560020a62461bcd02815260040161062890614de9565b60075460405160e360020a63089d8f8d02815273__SmartPoolManager______________________916344ec7c6891611cdb913091600160a060020a039091169087908790600401614618565b60085460ff8082169161010081048216916201000082048116916301000000810482169164010000000082048116916501000000000090041686565b73__BalancerSafeMath______________________90565b73__SmartPoolManager______________________90565b604051806040016040528060138152602001606a60020a7210985b185b98d95c8814db585c9d08141bdbdb0281525081565b600a81565b6000600160a060020a0383166129da5760405160e560020a62461bcd02815260040161062890614975565b6129e5338484613bf0565b50600192915050565b33600160a060020a0316600035600160e060020a031916600160e060020a031916600036604051612a209291906145c6565b60405180910390a260026005541415612a4e5760405160e560020a62461bcd02815260040161062890614af6565b6002600555600754600160a060020a0316612a7e5760405160e560020a62461bcd02815260040161062890614a51565b60075460405160e160020a63747591bb028152600091829160609173__SmartPoolManager______________________9163e8eb237691612ad3913091600160a060020a0316908b908b908b90600401614676565b60006040518083038186803b158015612aeb57600080fd5b505af4158015612aff573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612b27919081019061441b565b925092509250612b37338761186e565b600654612b4d90600160a060020a0316846107e8565b612b5682610885565b6007546040805160e060020a63cc77828d0281529051606092600160a060020a03169163cc77828d916004808301926000929190829003018186803b158015612b9e57600080fd5b505afa158015612bb2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612bda91908101906141a3565b905060005b8151811015610c64576000828281518110612bf657fe5b602002602001015190506000848381518110612c0e57fe5b6020026020010151905081600160a060020a031633600160a060020a0316600080516020614f2a83398151915283604051612c499190614e9a565b60405180910390a3612c5c823383613922565b5050600101612bdf565b600754600160a060020a031681565b33600160a060020a0316600035600160e060020a031916600160e060020a031916600036604051612ca79291906145c6565b60405180910390a260026005541415612cd55760405160e560020a62461bcd02815260040161062890614af6565b6002600555600454600160a060020a03163314612d075760405160e560020a62461bcd028152600401610628906147f6565b600754600160a060020a0316612d325760405160e560020a62461bcd02815260040161062890614a51565b6008546301000000900460ff16612d5e5760405160e560020a62461bcd0281526004016106289061482d565b60075460155460405160e260020a632235713502815273__SmartPoolManager______________________926388d5c4d492612dac923092600160a060020a031691906009906004016146b5565b60006040518083038186803b158015612dc457600080fd5b505af4158015612dd8573d6000803e3d6000fd5b505060016005555050565b33600160a060020a0316600035600160e060020a031916600160e060020a031916600036604051612e159291906145c6565b60405180910390a260026005541415612e435760405160e560020a62461bcd02815260040161062890614af6565b6002600555600754600160a060020a031615612e745760405160e560020a62461bcd02815260040161062890614a88565b60008311612e975760405160e560020a62461bcd02815260040161062890614907565b600a821015612ebb5760405160e560020a62461bcd02815260040161062890614899565b81811115612ede5760405160e560020a62461bcd02815260040161062890614864565b600a811015612f025760405160e560020a62461bcd02815260040161062890614abf565b601482905560158190556006546040805160e260020a633555b1770281529051600160a060020a039092169163d556c5dc916004808201926020929091908290030181600087803b158015612f5657600080fd5b505af1158015612f6a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f8e91906142fe565b60078054600160a060020a031916600160a060020a0392831617908190556040805160e160020a63632c06890281529051919092169163c6580d12916004808301926020929190829003018186803b158015612fe957600080fd5b505afa158015612ffd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130219190614351565b156130415760405160e560020a62461bcd02815260040161062890614bc3565b600754600d5460405160e060020a6334e19907028152600160a060020a03909216916334e199079161307591600401614e9a565b600060405180830381600087803b15801561308f57600080fd5b505af11580156130a3573d6000803e3d6000fd5b505060085465010000000000900460ff161591506130c390505760178390555b60005b600e548110156132fd576000600e82815481106130df57fe5b6000918252602082200154600f8054600160a060020a039092169350908490811061310657fe5b9060005260206000200154905060006012848154811061312257fe5b600091825260208220015460405160e060020a6323b872dd028152909250600160a060020a038516906323b872dd906131639033903090889060040161452d565b602060405180830381600087803b15801561317d57600080fd5b505af1158015613191573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131b591906142e2565b9050806131d75760405160e560020a62461bcd02815260040161062890614cd6565b60075460405160e060020a63095ea7b3028152600160a060020a038681169263095ea7b392613210929091169060001990600401614551565b602060405180830381600087803b15801561322a57600080fd5b505af115801561323e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061326291906142e2565b9050806132845760405160e560020a62461bcd02815260040161062890614cd6565b60075460405160e360020a631c9c3ca7028152600160a060020a039091169063e4e1e538906132bb9087908790879060040161456a565b600060405180830381600087803b1580156132d557600080fd5b505af11580156132e9573d6000803e3d6000fd5b5050600190960195506130c6945050505050565b505b600e541561333957600e80548061331257fe5b60008281526020902081016000199081018054600160a060020a03191690550190556132ff565b60075460405160e160020a6324dacaa9028152600160a060020a03909116906349b595529061336d9060019060040161458b565b600060405180830381600087803b15801561338757600080fd5b505af115801561339b573d6000803e3d6000fd5b505050506133a883611293565b61180e33846107e8565b600454600160a060020a031633146133df5760405160e560020a62461bcd028152600401610628906147f6565b600260055414156134055760405160e560020a62461bcd02815260040161062890614af6565b6002600555604051339060008035600160e060020a0319169161342a919036906145c6565b60405180910390a2600854640100000000900460ff1661345f5760405160e560020a62461bcd028152600401610628906149ac565b600160a060020a0381166134885760405160e560020a62461bcd02815260040161062890614b55565b600160a060020a03166000908152601660205260409020805460ff19166001908117909155600555565b336000908152600260209081526040808320600160a060020a03861684529091528120546134e09083613f53565b336000818152600260209081526040808320600160a060020a03891680855292529182902084905590519092600080516020614f6a8339815191529161083d9190614e9a565b600160a060020a03918216600090815260026020908152604080832093909416825291909152205490565b33600160a060020a0316600035600160e060020a031916600160e060020a0319166000366040516135839291906145c6565b60405180910390a2600260055414156135b15760405160e560020a62461bcd02815260040161062890614af6565b6002600555600754600160a060020a03166135e15760405160e560020a62461bcd02815260040161062890614a51565b60085462010000900460ff1661360c5760405160e560020a62461bcd028152600401610628906149e3565b601054601154431061361e5760006010555b60075460115460405160e360020a6281bd0502815273__SmartPoolManager______________________9263040de8289261367092600160a060020a0390921691869190601290601390600401614757565b60006040518083038186803b15801561368857600080fd5b505af4158015610dd9573d6000803e3d6000fd5b600454600160a060020a031633146136c95760405160e560020a62461bcd028152600401610628906147f6565b600260055414156136ef5760405160e560020a62461bcd02815260040161062890614af6565b6002600555604051339060008035600160e060020a03191691613714919036906145c6565b60405180910390a2600854640100000000900460ff166137495760405160e560020a62461bcd028152600401610628906149ac565b600160a060020a03811660009081526016602052604090205460ff166137845760405160e560020a62461bcd02815260040161062890614a1a565b600160a060020a0381166137ad5760405160e560020a62461bcd02815260040161062890614b55565b600160a060020a03166000908152601660205260409020805460ff191690556001600555565b6040516000903390600160e060020a0319833516906137f590849036906145c6565b60405180910390a2600260055414156138235760405160e560020a62461bcd02815260040161062890614af6565b6002600555600754600160a060020a03166138535760405160e560020a62461bcd02815260040161062890614a51565b600760009054906101000a9004600160a060020a0316600160a060020a031663fde924f76040518163ffffffff1660e060020a02815260040160206040518083038186803b1580156138a457600080fd5b505afa1580156138b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138dc91906142e2565b9050600160055590565b60008060006138f58585613f7b565b91509150801561391a5760405160e560020a62461bcd02815260040161062890614d44565b509392505050565b600754600160a060020a031661394d5760405160e560020a62461bcd02815260040161062890614a51565b60075460405160e060020a63f8b2cb4f028152600091600160a060020a03169063f8b2cb4f90613981908790600401614519565b60206040518083038186803b15801561399957600080fd5b505afa1580156139ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139d19190614351565b60075460405160e160020a634a46c673028152919250600091600160a060020a039091169063948d8ce690613a0a908890600401614519565b60206040518083038186803b158015613a2257600080fd5b505afa158015613a36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a5a9190614351565b600754909150600160a060020a0316633fdddaa286613a7985876138e6565b846040518463ffffffff1660e060020a028152600401613a9b9392919061456a565b600060405180830381600087803b158015613ab557600080fd5b505af1158015613ac9573d6000803e3d6000fd5b505060405160e060020a63a9059cbb02815260009250600160a060020a038816915063a9059cbb90613b019088908890600401614551565b602060405180830381600087803b158015613b1b57600080fd5b505af1158015613b2f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b5391906142e2565b905080613b755760405160e560020a62461bcd02815260040161062890614cd6565b505050505050565b6107f2308383613bf0565b30600090815260016020526040902054613ba290826138e6565b3060009081526001602052604081209190915554613bc090826138e6565b60009081556040513090600080516020614f4a83398151915290613be5908590614e9a565b60405180910390a350565b600160a060020a038316600090815260016020526040902054613c1390826138e6565b600160a060020a038085166000908152600160205260408082209390935590841681522054613c429082613f53565b600160a060020a038084166000818152600160205260409081902093909355915190851690600080516020614f4a83398151915290613c82908590614e9a565b60405180910390a3505050565b30600090815260016020526040902054613ca99082613f53565b3060009081526001602052604081209190915554613cc79082613f53565b6000908155604051309190600080516020614f4a83398151915290613be5908590614e9a565b600754600160a060020a0316613d185760405160e560020a62461bcd02815260040161062890614a51565b60075460405160e060020a63f8b2cb4f028152600091600160a060020a03169063f8b2cb4f90613d4c908790600401614519565b60206040518083038186803b158015613d6457600080fd5b505afa158015613d78573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d9c9190614351565b60075460405160e160020a634a46c673028152919250600091600160a060020a039091169063948d8ce690613dd5908890600401614519565b60206040518083038186803b158015613ded57600080fd5b505afa158015613e01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e259190614351565b9050600085600160a060020a03166323b872dd8630876040518463ffffffff1660e060020a028152600401613e5c9392919061452d565b602060405180830381600087803b158015613e7657600080fd5b505af1158015613e8a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613eae91906142e2565b905080613ed05760405160e560020a62461bcd02815260040161062890614cd6565b600754600160a060020a0316633fdddaa287613eec8688613f53565b856040518463ffffffff1660e060020a028152600401613f0e9392919061456a565b600060405180830381600087803b158015613f2857600080fd5b505af1158015613f3c573d6000803e3d6000fd5b50505050505050505050565b6107f2823083613bf0565b6000828201838110156109be5760405160e560020a62461bcd02815260040161062890614d7b565b600080838311613f915750508082036000613f99565b505081810360015b9250929050565b828054828255906000526020600020908101928215613fdb579160200282015b82811115613fdb578235825591602001919060010190613fc0565b50613fe7929150613feb565b5090565b5b80821115613fe75760008155600101613fec565b60008083601f840112614011578081fd5b50813567ffffffffffffffff811115614028578182fd5b6020830191508360208083028501011115613f9957600080fd5b600082601f830112614052578081fd5b815161406561406082614ee6565b614ebf565b81815291506020808301908481018184028601820187101561408657600080fd5b60005b848110156140a557815184529282019290820190600101614089565b505050505092915050565b6000602082840312156140c1578081fd5b81356109be81614f06565b600080604083850312156140de578081fd5b82356140e981614f06565b915060208301356140f981614f06565b809150509250929050565b600080600060608486031215614118578081fd5b833561412381614f06565b9250602084013561413381614f06565b929592945050506040919091013590565b60008060408385031215614156578182fd5b823561416181614f06565b946020939093013593505050565b600080600060608486031215614183578283fd5b833561418e81614f06565b95602085013595506040909401359392505050565b600060208083850312156141b5578182fd5b825167ffffffffffffffff8111156141cb578283fd5b8301601f810185136141db578283fd5b80516141e961406082614ee6565b8181528381019083850185840285018601891015614205578687fd5b8694505b8385101561423057805161421c81614f06565b835260019490940193918501918501614209565b50979650505050505050565b60008060008060608587031215614251578081fd5b843567ffffffffffffffff811115614267578182fd5b61427387828801614000565b90989097506020870135966040013595509350505050565b60006020828403121561429c578081fd5b815167ffffffffffffffff8111156142b2578182fd5b6142be84828501614042565b949350505050565b6000602082840312156142d7578081fd5b81356109be81614f1b565b6000602082840312156142f3578081fd5b81516109be81614f1b565b60006020828403121561430f578081fd5b81516109be81614f06565b60006020828403121561432b578081fd5b8135600681106109be578182fd5b60006020828403121561434a578081fd5b5035919050565b600060208284031215614362578081fd5b5051919050565b60008060006040848603121561437d578081fd5b83359250602084013567ffffffffffffffff81111561439a578182fd5b6143a686828701614000565b9497909650939450505050565b600080604083850312156143c5578182fd5b82519150602083015167ffffffffffffffff8111156143e2578182fd5b6143ee85828601614042565b9150509250929050565b6000806040838503121561440a578182fd5b505080516020909101519092909150565b60008060006060848603121561442f578081fd5b8351925060208401519150604084015167ffffffffffffffff811115614453578182fd5b61445f86828701614042565b9150509250925092565b60008060006060848603121561447d578081fd5b505081359360208301359350604090920135919050565b8183526000600160fb60020a038311156144ac578081fd5b6020830280836020870137939093016020019283525090919050565b6000815480845260208085019450838352808320835b838110156144fa578154875295820195600191820191016144de565b509495945050505050565b15159052565b6006811061451557fe5b9052565b600160a060020a0391909116815260200190565b600160a060020a039384168152919092166020820152604081019190915260600190565b600160a060020a03929092168252602082015260400190565b600160a060020a039390931683526020830191909152604082015260600190565b901515815260200190565b9515158652931515602086015291151560408501521515606084015215156080830152151560a082015260c00190565b60006020825282602083015282846040840137818301604090810191909152601f909201601f19160101919050565b600160a060020a0393841681529183166020830152909116604082015260600190565b600160a060020a039485168152928416602084015292166040820152606081019190915260800190565b600160a060020a03958616815293851660208501529190931660408301526060820192909252608081019190915260a00190565b600160a060020a03868116825285166020820152604081018490526080606082018190526000906146aa9083018486614494565b979650505050505050565b600160a060020a0394851681529290931660208301526040820152606081019190915260800190565b600160a060020a03958616815293909416602084015260408301919091526060820152608081019190915260a00190565b6000600160a060020a038916825287602083015260c0604083015261473860c083018789614494565b606083019590955250608081019290925260a090910152949350505050565b6000600160a060020a038716825285602083015284604083015260a0606083015261478560a08301856144c8565b828103608084015261479781856144c8565b98975050505050505050565b6000602080835283518082850152825b818110156147cf578581018301518582016040015282016147b3565b818111156147e05783604083870101525b50601f01601f1916929092016040019392505050565b60208082526012908201527f4552525f4e4f545f434f4e54524f4c4c45520000000000000000000000000000604082015260600190565b6020808252601c908201527f4552525f43414e4e4f545f4144445f52454d4f56455f544f4b454e5300000000604082015260600190565b6020808252818101527f4552525f494e434f4e53495354454e545f544f4b454e5f54494d455f4c4f434b604082015260600190565b60208082526018908201527f4552525f494e56414c49445f424c4f434b5f504552494f440000000000000000604082015260600190565b6020808252601a908201527f4552525f53544152545f574549474854535f4d49534d41544348000000000000604082015260600190565b6020808252600f908201527f4552525f494e49545f535550504c590000000000000000000000000000000000604082015260600190565b60208082526014908201527f4552525f4e4f545f4f4e5f57484954454c495354000000000000000000000000604082015260600190565b60208082526010908201527f4552525f5a45524f5f4144445245535300000000000000000000000000000000604082015260600190565b60208082526018908201527f4552525f43414e4e4f545f57484954454c4953545f4c50530000000000000000604082015260600190565b6020808252601c908201527f4552525f4e4f545f434f4e464947555241424c455f5745494748545300000000604082015260600190565b60208082526016908201527f4552525f4c505f4e4f545f57484954454c495354454400000000000000000000604082015260600190565b6020808252600f908201527f4552525f4e4f545f435245415445440000000000000000000000000000000000604082015260600190565b6020808252600e908201527f4552525f49535f43524541544544000000000000000000000000000000000000604082015260600190565b6020808252601b908201527f4552525f494e56414c49445f544f4b454e5f54494d455f4c4f434b0000000000604082015260600190565b6020808252600b9082015260a860020a6a4552525f5245454e54525902604082015260600190565b60208082526010908201527f4552525f5245454e5452595f5649455700000000000000000000000000000000604082015260600190565b60208082526013908201527f4552525f494e56414c49445f4144445245535300000000000000000000000000604082015260600190565b60208082526015908201527f4552525f43414e4e4f545f4348414e47455f4341500000000000000000000000604082015260600190565b60208082526014908201527f4552525f4e4f4e5a45524f5f455849545f464545000000000000000000000000604082015260600190565b60208082526015908201527f4552525f4341505f4c494d49545f524541434845440000000000000000000000604082015260600190565b60208082526016908201527f4552525f5043544f4b454e5f4241445f43414c4c455200000000000000000000604082015260600190565b60208082526012908201527f4552525f544f4f5f4645575f544f4b454e530000000000000000000000000000604082015260600190565b6020808252601b908201527f4552525f52454d4f56455f574954485f4144445f50454e44494e470000000000604082015260600190565b6020808252600f908201527f4552525f45524332305f46414c53450000000000000000000000000000000000604082015260600190565b60208082526015908201527f4552525f4e4f545f5041555341424c455f535741500000000000000000000000604082015260600190565b60208082526011908201527f4552525f5355425f554e444552464c4f57000000000000000000000000000000604082015260600190565b60208082526010908201527f4552525f4144445f4f564552464c4f5700000000000000000000000000000000604082015260600190565b6020808252601d908201527f4552525f4e4f545f434f4e464947555241424c455f535741505f464545000000604082015260600190565b6020808252601c908201527f4552525f4e4f5f5550444154455f445552494e475f4752414455414c00000000604082015260600190565b825460ff8082161515835261010082048116151560208401526201000082048116151560408401526301000000820481161515606084015260e083019190614e746080850164010000000084048316614505565b614e8b60a085018265010000000000850416614505565b50506109be60c083018461450b565b90815260200190565b918252602082015260400190565b60ff91909116815260200190565b60405181810167ffffffffffffffff81118282101715614ede57600080fd5b604052919050565b600067ffffffffffffffff821115614efc578081fd5b5060209081020190565b600160a060020a038116811461088e57600080fd5b801515811461088e57600080fdfec62fc35ac75e3bff532648e2859a3e1694002cfa357614ae8e034df7f83db5e9ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925ea39e3b35c5cd8937999ed5f7fbab30acd562a931fc4a887fed2a47c3074aa72a26469706673582212206f7279e6e8504244affac06b582aa204d969ed5567556585dd3f08a00375a93764736f6c634300060c0033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106102855760003560e060020a900480636d06dfa011610161578063a835a0de116100cd578063a835a0de1461052b578063a9059cbb14610533578063b02f0b7314610546578063b64ef17b14610559578063c275d81b14610561578063c3391d2714610569578063c83a1c2d1461057c578063d73dd6231461058f578063dd62ed3e146105a2578063e211b875146105b5578063e2762d4b146105bd578063f226b5281461052b578063fde924f7146105d057610285565b80636d06dfa01461046457806370a082311461047757806374983a0d1461048a578063806c6f87146104925780638259e6a0146104a557806392eefe9b146104b8578063948d8ce6146104cb57806395d89b41146104de5780639776e94b146104e6578063980e8db6146104f95780639a82417e146105135780639d829c2b1461051b578063a3f4df7e1461052357610285565b806334e199071161020057806334e199071461037857806337c6f4d91461038b57806346ab38f11461039e57806347786d37146103b157806349b59552146103c45780634ba57882146103d75780634c20d209146103ea5780634f69c0d4146103fd578063554d578d1461041057806355c32a23146104185780635db342771461042b5780635fa7b5841461043e578063661884631461045157610285565b806302c967481461028a57806306fdde03146102b3578063095dcccc146102c8578063095ea7b3146102dd5780630a165940146102fd57806318160ddd14610312578063220eb7601461031a57806323b872dd1461032d578063246bc19b146103405780632e0f2625146103535780633018205f14610368578063313ce56714610370575b600080fd5b61029d61029836600461416f565b6105d8565b6040516102aa9190614e9a565b60405180910390f35b6102bb610796565b6040516102aa91906147a3565b6102db6102d6366004614144565b6107c6565b005b6102f06102eb366004614144565b6107f6565b6040516102aa919061458b565b61030561084e565b6040516102aa9190614519565b61029d61085d565b6102db610328366004614339565b610863565b6102f061033b366004614104565b610891565b6102db61034e36600461423c565b6109c5565b61035b610c73565b6040516102aa9190614eb1565b610305610c78565b61035b610c87565b6102db610386366004614339565b610c8c565b6102f061039936600461431a565b610de5565b61029d6103ac36600461416f565b610e7d565b6102db6103bf366004614339565b611022565b6102db6103d23660046142c6565b61115c565b6102db6103e5366004614339565b611271565b6102db6103f836600461416f565b611334565b6102db61040b366004614369565b6114c8565b61029d611818565b6102db610426366004614144565b61184c565b61029d61043936600461416f565b611878565b6102db61044c3660046140b0565b611ad0565b6102f061045f366004614144565b611d14565b61029d61047236600461416f565b611dee565b61029d6104853660046140b0565b611fae565b610305611fc9565b6102f06104a03660046140b0565b611fe1565b6102db6104b3366004614339565b61202b565b6102db6104c63660046140b0565b612596565b61029d6104d93660046140b0565b612648565b6102bb61271e565b6102db6104f4366004614144565b6127b4565b61050161290c565b6040516102aa96959493929190614596565b610305612948565b610305612960565b6102bb612978565b61029d6129aa565b6102f0610541366004614144565b6129af565b6102db610554366004614369565b6129ee565b610305612c66565b6102db612c75565b6102db610577366004614469565b612de3565b6102db61058a3660046140b0565b6133b2565b6102f061059d366004614144565b6134b2565b61029d6105b03660046140cc565b613526565b6102db613551565b6102db6105cb3660046140b0565b61369c565b6102f06137d3565b6040516000903390600160e060020a0319833516906105fa90849036906145c6565b60405180910390a2600260055414156106315760405160e560020a62461bcd02815260040161062890614af6565b60405180910390fd5b6002600555600754600160a060020a03166106615760405160e560020a62461bcd02815260040161062890614a51565b60075460405160e260020a631ce1a8c9028152600091829173__SmartPoolManager______________________91637386a324916106b5913091600160a060020a03909116908b908b908b90600401614642565b604080518083038186803b1580156106cc57600080fd5b505af41580156106e0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061070491906143f8565b91509150809250600061071784846138e6565b905086600160a060020a031633600160a060020a0316600080516020614f2a8339815191528860405161074a9190614e9a565b60405180910390a361075c338561186e565b61076581610885565b60065461077b90600160a060020a0316846107e8565b610786873388613922565b5050505b60016005559392505050565b6040805180820190915260138152606a60020a7210985b185b98d95c8814db585c9d08141bdbdb02602082015290565b3330146107e85760405160e560020a62461bcd028152600401610628906147f6565b6107f28282613b7d565b5050565b336000818152600260209081526040808320600160a060020a03871680855292528083208590555191929091600080516020614f6a8339815191529061083d908690614e9a565b60405180910390a350600192915050565b600654600160a060020a031681565b60005490565b3330146108855760405160e560020a62461bcd028152600401610628906147f6565b61088e81613b88565b50565b6000600160a060020a0383166108bc5760405160e560020a62461bcd02815260040161062890614975565b33600160a060020a03851614806108f65750600160a060020a03841660009081526002602090815260408083203384529091529020548211155b6109155760405160e560020a62461bcd02815260040161062890614c31565b610920848484613bf0565b600160a060020a038416600081815260026020908152604080832033808552925290912054911480159061095657506000198114155b156109b85761096581846138e6565b600160a060020a038681166000908152600260209081526040808320338085529252918290208490559051918716929091600080516020614f6a833981519152916109af91614e9a565b60405180910390a35b60019150505b9392505050565b33600160a060020a0316600035600160e060020a031916600160e060020a0319166000366040516109f79291906145c6565b60405180910390a260026005541415610a255760405160e560020a62461bcd02815260040161062890614af6565b6002600555600454600160a060020a03163314610a575760405160e560020a62461bcd028152600401610628906147f6565b600754600160a060020a0316610a825760405160e560020a62461bcd02815260040161062890614a51565b60085462010000900460ff16610aad5760405160e560020a62461bcd028152600401610628906149e3565b6007546040805160e060020a63cc77828d0281529051606092600160a060020a03169163cc77828d916004808301926000929190829003018186803b158015610af557600080fd5b505afa158015610b09573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610b3191908101906141a3565b80519091508414610b575760405160e560020a62461bcd028152600401610628906148d0565b60075460145460405160e260020a630500fe7b02815260009260609273__SmartPoolManager______________________92631403f9ec92610bb392600160a060020a03909116916009918d918d918d918d919060040161470f565b60006040518083038186803b158015610bcb57600080fd5b505af4158015610bdf573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610c0791908101906143b3565b601082905560118690559092509050610c2260138888613fa0565b5060005b8351811015610c6457818181518110610c3b57fe5b602002602001015160128281548110610c5057fe5b600091825260209091200155600101610c26565b50506001600555505050505050565b601281565b600454600160a060020a031690565b601290565b33600160a060020a0316600035600160e060020a031916600160e060020a031916600036604051610cbe9291906145c6565b60405180910390a260026005541415610cec5760405160e560020a62461bcd02815260040161062890614af6565b6002600555600454600160a060020a03163314610d1e5760405160e560020a62461bcd028152600401610628906147f6565b600754600160a060020a0316610d495760405160e560020a62461bcd02815260040161062890614a51565b600854610100900460ff16610d735760405160e560020a62461bcd02815260040161062890614db2565b600d81905560075460405160e060020a6334e19907028152600160a060020a03909116906334e1990790610dab908490600401614e9a565b600060405180830381600087803b158015610dc557600080fd5b505af1158015610dd9573d6000803e3d6000fd5b50506001600555505050565b60405160e160020a6322c1aa2502815260009073__RightsManager_________________________90634583544a90610e25906008908690600401614e20565b60206040518083038186803b158015610e3d57600080fd5b505af4158015610e51573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e7591906142e2565b90505b919050565b6040516000903390600160e060020a031983351690610e9f90849036906145c6565b60405180910390a260026005541415610ecd5760405160e560020a62461bcd02815260040161062890614af6565b6002600555600754600160a060020a0316610efd5760405160e560020a62461bcd02815260040161062890614a51565b60075460405160e160020a633461ee95028152600091829173__SmartPoolManager______________________916368c3dd2a91610f51913091600160a060020a03909116908b908b908b90600401614642565b604080518083038186803b158015610f6857600080fd5b505af4158015610f7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fa091906143f8565b915091508092506000610fb386846138e6565b905086600160a060020a031633600160a060020a0316600080516020614f2a83398151915286604051610fe69190614e9a565b60405180910390a3610ff8338761186e565b61100181610885565b60065461101790600160a060020a0316846107e8565b610786873386613922565b33600160a060020a0316600035600160e060020a031916600160e060020a0319166000366040516110549291906145c6565b60405180910390a2600260055414156110825760405160e560020a62461bcd02815260040161062890614af6565b6002600555600754600160a060020a03166110b25760405160e560020a62461bcd02815260040161062890614a51565b600454600160a060020a031633146110df5760405160e560020a62461bcd028152600401610628906147f6565b60085465010000000000900460ff1661110d5760405160e560020a62461bcd02815260040161062890614b8c565b33600160a060020a03167f6bc200110c7794738d401810b22ef824a2044a8ccb022d4ad8769840370331f56017548360405161114a929190614ea3565b60405180910390a26017556001600555565b33600160a060020a0316600035600160e060020a031916600160e060020a03191660003660405161118e9291906145c6565b60405180910390a2600260055414156111bc5760405160e560020a62461bcd02815260040161062890614af6565b6002600555600454600160a060020a031633146111ee5760405160e560020a62461bcd028152600401610628906147f6565b600754600160a060020a03166112195760405160e560020a62461bcd02815260040161062890614a51565b60085460ff1661123e5760405160e560020a62461bcd02815260040161062890614d0d565b60075460405160e160020a6324dacaa9028152600160a060020a03909116906349b5955290610dab90849060040161458b565b3330146112935760405160e560020a62461bcd028152600401610628906147f6565b61129c81613c8f565b60175430600160a060020a03166318160ddd6040518163ffffffff1660e060020a02815260040160206040518083038186803b1580156112db57600080fd5b505afa1580156112ef573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113139190614351565b111561088e5760405160e560020a62461bcd02815260040161062890614bfa565b33600160a060020a0316600035600160e060020a031916600160e060020a0319166000366040516113669291906145c6565b60405180910390a2600260055414156113945760405160e560020a62461bcd02815260040161062890614af6565b6002600555600454600160a060020a031633146113c65760405160e560020a62461bcd028152600401610628906147f6565b600754600160a060020a03166113f15760405160e560020a62461bcd02815260040161062890614a51565b6008546301000000900460ff1661141d5760405160e560020a62461bcd0281526004016106289061482d565b601054156114405760405160e560020a62461bcd02815260040161062890614de9565b60075460405160e260020a6307f9f55902815273__SmartPoolManager______________________91631fe7d5649161148e91600160a060020a0316908790879087906009906004016146de565b60006040518083038186803b1580156114a657600080fd5b505af41580156114ba573d6000803e3d6000fd5b505060016005555050505050565b33600160a060020a0316600035600160e060020a031916600160e060020a0319166000366040516114fa9291906145c6565b60405180910390a2600260055414156115285760405160e560020a62461bcd02815260040161062890614af6565b6002600555600754600160a060020a03166115585760405160e560020a62461bcd02815260040161062890614a51565b600854640100000000900460ff16158061158157503360009081526016602052604090205460ff165b6115a05760405160e560020a62461bcd0281526004016106289061493e565b60075460405160e560020a6289af5d02815260609173__SmartPoolManager______________________91631135eba0916115ef913091600160a060020a031690899089908990600401614676565b60006040518083038186803b15801561160757600080fd5b505af415801561161b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611643919081019061428b565b90506060600760009054906101000a9004600160a060020a0316600160a060020a031663cc77828d6040518163ffffffff1660e060020a02815260040160006040518083038186803b15801561169857600080fd5b505afa1580156116ac573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526116d491908101906141a3565b905060005b81518110156117605760008282815181106116f057fe5b60200260200101519050600084838151811061170857fe5b6020026020010151905081600160a060020a031633600160a060020a0316600080516020614f8a833981519152836040516117439190614e9a565b60405180910390a3611756823383613ced565b50506001016116d9565b5061176a85611293565b61177433866107e8565b505060175430600160a060020a03166318160ddd6040518163ffffffff1660e060020a02815260040160206040518083038186803b1580156117b557600080fd5b505afa1580156117c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117ed9190614351565b111561180e5760405160e560020a62461bcd02815260040161062890614bfa565b5050600160055550565b6000600260055414156118405760405160e560020a62461bcd02815260040161062890614af6565b50601754600160055590565b33301461186e5760405160e560020a62461bcd028152600401610628906147f6565b6107f28282613f48565b6040516000903390600160e060020a03198335169061189a90849036906145c6565b60405180910390a2600260055414156118c85760405160e560020a62461bcd02815260040161062890614af6565b6002600555600754600160a060020a03166118f85760405160e560020a62461bcd02815260040161062890614a51565b600854640100000000900460ff16158061192157503360009081526016602052604090205460ff165b6119405760405160e560020a62461bcd0281526004016106289061493e565b60075460405160e060020a636f50bd5d02815273__SmartPoolManager______________________91636f50bd5d9161198f913091600160a060020a0390911690899089908990600401614642565b60206040518083038186803b1580156119a757600080fd5b505af41580156119bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119df9190614351565b905083600160a060020a031633600160a060020a0316600080516020614f8a83398151915285604051611a129190614e9a565b60405180910390a3611a2381611293565b611a2d33826107e8565b611a38843385613ced565b60175430600160a060020a03166318160ddd6040518163ffffffff1660e060020a02815260040160206040518083038186803b158015611a7757600080fd5b505afa158015611a8b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611aaf9190614351565b111561078a5760405160e560020a62461bcd02815260040161062890614bfa565b33600160a060020a0316600035600160e060020a031916600160e060020a031916600036604051611b029291906145c6565b60405180910390a260026005541415611b305760405160e560020a62461bcd02815260040161062890614af6565b6002600555600454600160a060020a03163314611b625760405160e560020a62461bcd028152600401610628906147f6565b600754600160a060020a0316611b8d5760405160e560020a62461bcd02815260040161062890614a51565b6008546301000000900460ff16611bb95760405160e560020a62461bcd0281526004016106289061482d565b6007546040805160e060020a63cc77828d0281529051606092600160a060020a03169163cc77828d916004808301926000929190829003018186803b158015611c0157600080fd5b505afa158015611c15573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611c3d91908101906141a3565b90506002815111611c635760405160e560020a62461bcd02815260040161062890614c68565b60095460a060020a900460ff1615611c905760405160e560020a62461bcd02815260040161062890614c9f565b60075460405160e060020a63cfc3120902815273__SmartPoolManager______________________9163cfc3120991611cdb913091600160a060020a039091169087906004016145f5565b60006040518083038186803b158015611cf357600080fd5b505af4158015611d07573d6000803e3d6000fd5b5050600160055550505050565b336000908152600260209081526040808320600160a060020a0386168452909152812054808310611d6857336000908152600260209081526040808320600160a060020a0388168452909152812055611d97565b611d7281846138e6565b336000908152600260209081526040808320600160a060020a03891684529091529020555b336000818152600260209081526040808320600160a060020a038916808552925291829020549151909291600080516020614f6a83398151915291611ddc9190614e9a565b60405180910390a35060019392505050565b6040516000903390600160e060020a031983351690611e1090849036906145c6565b60405180910390a260026005541415611e3e5760405160e560020a62461bcd02815260040161062890614af6565b6002600555600754600160a060020a0316611e6e5760405160e560020a62461bcd02815260040161062890614a51565b600854640100000000900460ff161580611e9757503360009081526016602052604090205460ff165b611eb65760405160e560020a62461bcd0281526004016106289061493e565b60075460405160e060020a63c8ebc9ab02815273__SmartPoolManager______________________9163c8ebc9ab91611f05913091600160a060020a0390911690899089908990600401614642565b60206040518083038186803b158015611f1d57600080fd5b505af4158015611f31573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f559190614351565b905083600160a060020a031633600160a060020a0316600080516020614f8a83398151915283604051611f889190614e9a565b60405180910390a3611f9983611293565b611fa333846107e8565b611a38843383613ced565b600160a060020a031660009081526001602052604090205490565b73__RightsManager_________________________90565b600854600090640100000000900460ff16156120195750600160a060020a03811660009081526016602052604090205460ff16610e78565b50600160a060020a0381161515610e78565b33600160a060020a0316600035600160e060020a031916600160e060020a03191660003660405161205d9291906145c6565b60405180910390a26002600554141561208b5760405160e560020a62461bcd02815260040161062890614af6565b6002600555600754600160a060020a0316156120bc5760405160e560020a62461bcd02815260040161062890614a88565b600081116120df5760405160e560020a62461bcd02815260040161062890614907565b600660009054906101000a9004600160a060020a0316600160a060020a031663d556c5dc6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561213257600080fd5b505af1158015612146573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061216a91906142fe565b60078054600160a060020a031916600160a060020a0392831617908190556040805160e160020a63632c06890281529051919092169163c6580d12916004808301926020929190829003018186803b1580156121c557600080fd5b505afa1580156121d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121fd9190614351565b1561221d5760405160e560020a62461bcd02815260040161062890614bc3565b600754600d5460405160e060020a6334e19907028152600160a060020a03909216916334e199079161225191600401614e9a565b600060405180830381600087803b15801561226b57600080fd5b505af115801561227f573d6000803e3d6000fd5b505060085465010000000000900460ff1615915061229f90505760178190555b60005b600e548110156124d9576000600e82815481106122bb57fe5b6000918252602082200154600f8054600160a060020a03909216935090849081106122e257fe5b906000526020600020015490506000601284815481106122fe57fe5b600091825260208220015460405160e060020a6323b872dd028152909250600160a060020a038516906323b872dd9061233f9033903090889060040161452d565b602060405180830381600087803b15801561235957600080fd5b505af115801561236d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061239191906142e2565b9050806123b35760405160e560020a62461bcd02815260040161062890614cd6565b60075460405160e060020a63095ea7b3028152600160a060020a038681169263095ea7b3926123ec929091169060001990600401614551565b602060405180830381600087803b15801561240657600080fd5b505af115801561241a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061243e91906142e2565b9050806124605760405160e560020a62461bcd02815260040161062890614cd6565b60075460405160e360020a631c9c3ca7028152600160a060020a039091169063e4e1e538906124979087908790879060040161456a565b600060405180830381600087803b1580156124b157600080fd5b505af11580156124c5573d6000803e3d6000fd5b5050600190960195506122a2945050505050565b505b600e541561251557600e8054806124ee57fe5b60008281526020902081016000199081018054600160a060020a03191690550190556124db565b60075460405160e160020a6324dacaa9028152600160a060020a03909116906349b59552906125499060019060040161458b565b600060405180830381600087803b15801561256357600080fd5b505af1158015612577573d6000803e3d6000fd5b5050505061258481611293565b61258e33826107e8565b506001600555565b600454600160a060020a031633146125c35760405160e560020a62461bcd028152600401610628906147f6565b600160a060020a0381166125ec5760405160e560020a62461bcd02815260040161062890614975565b600454604051600160a060020a038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a360048054600160a060020a031916600160a060020a0392909216919091179055565b6000600260055414156126705760405160e560020a62461bcd02815260040161062890614b1e565b600754600160a060020a031661269b5760405160e560020a62461bcd02815260040161062890614a51565b60075460405160e160020a634a46c673028152600160a060020a039091169063948d8ce6906126ce908590600401614519565b60206040518083038186803b1580156126e657600080fd5b505afa1580156126fa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e759190614351565b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156127aa5780601f1061277f576101008083540402835291602001916127aa565b820191906000526020600020905b81548152906001019060200180831161278d57829003601f168201915b5050505050905090565b33600160a060020a0316600035600160e060020a031916600160e060020a0319166000366040516127e69291906145c6565b60405180910390a2600260055414156128145760405160e560020a62461bcd02815260040161062890614af6565b6002600555600454600160a060020a031633146128465760405160e560020a62461bcd028152600401610628906147f6565b600754600160a060020a03166128715760405160e560020a62461bcd02815260040161062890614a51565b60085462010000900460ff1661289c5760405160e560020a62461bcd028152600401610628906149e3565b601054156128bf5760405160e560020a62461bcd02815260040161062890614de9565b60075460405160e360020a63089d8f8d02815273__SmartPoolManager______________________916344ec7c6891611cdb913091600160a060020a039091169087908790600401614618565b60085460ff8082169161010081048216916201000082048116916301000000810482169164010000000082048116916501000000000090041686565b73__BalancerSafeMath______________________90565b73__SmartPoolManager______________________90565b604051806040016040528060138152602001606a60020a7210985b185b98d95c8814db585c9d08141bdbdb0281525081565b600a81565b6000600160a060020a0383166129da5760405160e560020a62461bcd02815260040161062890614975565b6129e5338484613bf0565b50600192915050565b33600160a060020a0316600035600160e060020a031916600160e060020a031916600036604051612a209291906145c6565b60405180910390a260026005541415612a4e5760405160e560020a62461bcd02815260040161062890614af6565b6002600555600754600160a060020a0316612a7e5760405160e560020a62461bcd02815260040161062890614a51565b60075460405160e160020a63747591bb028152600091829160609173__SmartPoolManager______________________9163e8eb237691612ad3913091600160a060020a0316908b908b908b90600401614676565b60006040518083038186803b158015612aeb57600080fd5b505af4158015612aff573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612b27919081019061441b565b925092509250612b37338761186e565b600654612b4d90600160a060020a0316846107e8565b612b5682610885565b6007546040805160e060020a63cc77828d0281529051606092600160a060020a03169163cc77828d916004808301926000929190829003018186803b158015612b9e57600080fd5b505afa158015612bb2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612bda91908101906141a3565b905060005b8151811015610c64576000828281518110612bf657fe5b602002602001015190506000848381518110612c0e57fe5b6020026020010151905081600160a060020a031633600160a060020a0316600080516020614f2a83398151915283604051612c499190614e9a565b60405180910390a3612c5c823383613922565b5050600101612bdf565b600754600160a060020a031681565b33600160a060020a0316600035600160e060020a031916600160e060020a031916600036604051612ca79291906145c6565b60405180910390a260026005541415612cd55760405160e560020a62461bcd02815260040161062890614af6565b6002600555600454600160a060020a03163314612d075760405160e560020a62461bcd028152600401610628906147f6565b600754600160a060020a0316612d325760405160e560020a62461bcd02815260040161062890614a51565b6008546301000000900460ff16612d5e5760405160e560020a62461bcd0281526004016106289061482d565b60075460155460405160e260020a632235713502815273__SmartPoolManager______________________926388d5c4d492612dac923092600160a060020a031691906009906004016146b5565b60006040518083038186803b158015612dc457600080fd5b505af4158015612dd8573d6000803e3d6000fd5b505060016005555050565b33600160a060020a0316600035600160e060020a031916600160e060020a031916600036604051612e159291906145c6565b60405180910390a260026005541415612e435760405160e560020a62461bcd02815260040161062890614af6565b6002600555600754600160a060020a031615612e745760405160e560020a62461bcd02815260040161062890614a88565b60008311612e975760405160e560020a62461bcd02815260040161062890614907565b600a821015612ebb5760405160e560020a62461bcd02815260040161062890614899565b81811115612ede5760405160e560020a62461bcd02815260040161062890614864565b600a811015612f025760405160e560020a62461bcd02815260040161062890614abf565b601482905560158190556006546040805160e260020a633555b1770281529051600160a060020a039092169163d556c5dc916004808201926020929091908290030181600087803b158015612f5657600080fd5b505af1158015612f6a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f8e91906142fe565b60078054600160a060020a031916600160a060020a0392831617908190556040805160e160020a63632c06890281529051919092169163c6580d12916004808301926020929190829003018186803b158015612fe957600080fd5b505afa158015612ffd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130219190614351565b156130415760405160e560020a62461bcd02815260040161062890614bc3565b600754600d5460405160e060020a6334e19907028152600160a060020a03909216916334e199079161307591600401614e9a565b600060405180830381600087803b15801561308f57600080fd5b505af11580156130a3573d6000803e3d6000fd5b505060085465010000000000900460ff161591506130c390505760178390555b60005b600e548110156132fd576000600e82815481106130df57fe5b6000918252602082200154600f8054600160a060020a039092169350908490811061310657fe5b9060005260206000200154905060006012848154811061312257fe5b600091825260208220015460405160e060020a6323b872dd028152909250600160a060020a038516906323b872dd906131639033903090889060040161452d565b602060405180830381600087803b15801561317d57600080fd5b505af1158015613191573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131b591906142e2565b9050806131d75760405160e560020a62461bcd02815260040161062890614cd6565b60075460405160e060020a63095ea7b3028152600160a060020a038681169263095ea7b392613210929091169060001990600401614551565b602060405180830381600087803b15801561322a57600080fd5b505af115801561323e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061326291906142e2565b9050806132845760405160e560020a62461bcd02815260040161062890614cd6565b60075460405160e360020a631c9c3ca7028152600160a060020a039091169063e4e1e538906132bb9087908790879060040161456a565b600060405180830381600087803b1580156132d557600080fd5b505af11580156132e9573d6000803e3d6000fd5b5050600190960195506130c6945050505050565b505b600e541561333957600e80548061331257fe5b60008281526020902081016000199081018054600160a060020a03191690550190556132ff565b60075460405160e160020a6324dacaa9028152600160a060020a03909116906349b595529061336d9060019060040161458b565b600060405180830381600087803b15801561338757600080fd5b505af115801561339b573d6000803e3d6000fd5b505050506133a883611293565b61180e33846107e8565b600454600160a060020a031633146133df5760405160e560020a62461bcd028152600401610628906147f6565b600260055414156134055760405160e560020a62461bcd02815260040161062890614af6565b6002600555604051339060008035600160e060020a0319169161342a919036906145c6565b60405180910390a2600854640100000000900460ff1661345f5760405160e560020a62461bcd028152600401610628906149ac565b600160a060020a0381166134885760405160e560020a62461bcd02815260040161062890614b55565b600160a060020a03166000908152601660205260409020805460ff19166001908117909155600555565b336000908152600260209081526040808320600160a060020a03861684529091528120546134e09083613f53565b336000818152600260209081526040808320600160a060020a03891680855292529182902084905590519092600080516020614f6a8339815191529161083d9190614e9a565b600160a060020a03918216600090815260026020908152604080832093909416825291909152205490565b33600160a060020a0316600035600160e060020a031916600160e060020a0319166000366040516135839291906145c6565b60405180910390a2600260055414156135b15760405160e560020a62461bcd02815260040161062890614af6565b6002600555600754600160a060020a03166135e15760405160e560020a62461bcd02815260040161062890614a51565b60085462010000900460ff1661360c5760405160e560020a62461bcd028152600401610628906149e3565b601054601154431061361e5760006010555b60075460115460405160e360020a6281bd0502815273__SmartPoolManager______________________9263040de8289261367092600160a060020a0390921691869190601290601390600401614757565b60006040518083038186803b15801561368857600080fd5b505af4158015610dd9573d6000803e3d6000fd5b600454600160a060020a031633146136c95760405160e560020a62461bcd028152600401610628906147f6565b600260055414156136ef5760405160e560020a62461bcd02815260040161062890614af6565b6002600555604051339060008035600160e060020a03191691613714919036906145c6565b60405180910390a2600854640100000000900460ff166137495760405160e560020a62461bcd028152600401610628906149ac565b600160a060020a03811660009081526016602052604090205460ff166137845760405160e560020a62461bcd02815260040161062890614a1a565b600160a060020a0381166137ad5760405160e560020a62461bcd02815260040161062890614b55565b600160a060020a03166000908152601660205260409020805460ff191690556001600555565b6040516000903390600160e060020a0319833516906137f590849036906145c6565b60405180910390a2600260055414156138235760405160e560020a62461bcd02815260040161062890614af6565b6002600555600754600160a060020a03166138535760405160e560020a62461bcd02815260040161062890614a51565b600760009054906101000a9004600160a060020a0316600160a060020a031663fde924f76040518163ffffffff1660e060020a02815260040160206040518083038186803b1580156138a457600080fd5b505afa1580156138b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138dc91906142e2565b9050600160055590565b60008060006138f58585613f7b565b91509150801561391a5760405160e560020a62461bcd02815260040161062890614d44565b509392505050565b600754600160a060020a031661394d5760405160e560020a62461bcd02815260040161062890614a51565b60075460405160e060020a63f8b2cb4f028152600091600160a060020a03169063f8b2cb4f90613981908790600401614519565b60206040518083038186803b15801561399957600080fd5b505afa1580156139ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139d19190614351565b60075460405160e160020a634a46c673028152919250600091600160a060020a039091169063948d8ce690613a0a908890600401614519565b60206040518083038186803b158015613a2257600080fd5b505afa158015613a36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a5a9190614351565b600754909150600160a060020a0316633fdddaa286613a7985876138e6565b846040518463ffffffff1660e060020a028152600401613a9b9392919061456a565b600060405180830381600087803b158015613ab557600080fd5b505af1158015613ac9573d6000803e3d6000fd5b505060405160e060020a63a9059cbb02815260009250600160a060020a038816915063a9059cbb90613b019088908890600401614551565b602060405180830381600087803b158015613b1b57600080fd5b505af1158015613b2f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b5391906142e2565b905080613b755760405160e560020a62461bcd02815260040161062890614cd6565b505050505050565b6107f2308383613bf0565b30600090815260016020526040902054613ba290826138e6565b3060009081526001602052604081209190915554613bc090826138e6565b60009081556040513090600080516020614f4a83398151915290613be5908590614e9a565b60405180910390a350565b600160a060020a038316600090815260016020526040902054613c1390826138e6565b600160a060020a038085166000908152600160205260408082209390935590841681522054613c429082613f53565b600160a060020a038084166000818152600160205260409081902093909355915190851690600080516020614f4a83398151915290613c82908590614e9a565b60405180910390a3505050565b30600090815260016020526040902054613ca99082613f53565b3060009081526001602052604081209190915554613cc79082613f53565b6000908155604051309190600080516020614f4a83398151915290613be5908590614e9a565b600754600160a060020a0316613d185760405160e560020a62461bcd02815260040161062890614a51565b60075460405160e060020a63f8b2cb4f028152600091600160a060020a03169063f8b2cb4f90613d4c908790600401614519565b60206040518083038186803b158015613d6457600080fd5b505afa158015613d78573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d9c9190614351565b60075460405160e160020a634a46c673028152919250600091600160a060020a039091169063948d8ce690613dd5908890600401614519565b60206040518083038186803b158015613ded57600080fd5b505afa158015613e01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e259190614351565b9050600085600160a060020a03166323b872dd8630876040518463ffffffff1660e060020a028152600401613e5c9392919061452d565b602060405180830381600087803b158015613e7657600080fd5b505af1158015613e8a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613eae91906142e2565b905080613ed05760405160e560020a62461bcd02815260040161062890614cd6565b600754600160a060020a0316633fdddaa287613eec8688613f53565b856040518463ffffffff1660e060020a028152600401613f0e9392919061456a565b600060405180830381600087803b158015613f2857600080fd5b505af1158015613f3c573d6000803e3d6000fd5b50505050505050505050565b6107f2823083613bf0565b6000828201838110156109be5760405160e560020a62461bcd02815260040161062890614d7b565b600080838311613f915750508082036000613f99565b505081810360015b9250929050565b828054828255906000526020600020908101928215613fdb579160200282015b82811115613fdb578235825591602001919060010190613fc0565b50613fe7929150613feb565b5090565b5b80821115613fe75760008155600101613fec565b60008083601f840112614011578081fd5b50813567ffffffffffffffff811115614028578182fd5b6020830191508360208083028501011115613f9957600080fd5b600082601f830112614052578081fd5b815161406561406082614ee6565b614ebf565b81815291506020808301908481018184028601820187101561408657600080fd5b60005b848110156140a557815184529282019290820190600101614089565b505050505092915050565b6000602082840312156140c1578081fd5b81356109be81614f06565b600080604083850312156140de578081fd5b82356140e981614f06565b915060208301356140f981614f06565b809150509250929050565b600080600060608486031215614118578081fd5b833561412381614f06565b9250602084013561413381614f06565b929592945050506040919091013590565b60008060408385031215614156578182fd5b823561416181614f06565b946020939093013593505050565b600080600060608486031215614183578283fd5b833561418e81614f06565b95602085013595506040909401359392505050565b600060208083850312156141b5578182fd5b825167ffffffffffffffff8111156141cb578283fd5b8301601f810185136141db578283fd5b80516141e961406082614ee6565b8181528381019083850185840285018601891015614205578687fd5b8694505b8385101561423057805161421c81614f06565b835260019490940193918501918501614209565b50979650505050505050565b60008060008060608587031215614251578081fd5b843567ffffffffffffffff811115614267578182fd5b61427387828801614000565b90989097506020870135966040013595509350505050565b60006020828403121561429c578081fd5b815167ffffffffffffffff8111156142b2578182fd5b6142be84828501614042565b949350505050565b6000602082840312156142d7578081fd5b81356109be81614f1b565b6000602082840312156142f3578081fd5b81516109be81614f1b565b60006020828403121561430f578081fd5b81516109be81614f06565b60006020828403121561432b578081fd5b8135600681106109be578182fd5b60006020828403121561434a578081fd5b5035919050565b600060208284031215614362578081fd5b5051919050565b60008060006040848603121561437d578081fd5b83359250602084013567ffffffffffffffff81111561439a578182fd5b6143a686828701614000565b9497909650939450505050565b600080604083850312156143c5578182fd5b82519150602083015167ffffffffffffffff8111156143e2578182fd5b6143ee85828601614042565b9150509250929050565b6000806040838503121561440a578182fd5b505080516020909101519092909150565b60008060006060848603121561442f578081fd5b8351925060208401519150604084015167ffffffffffffffff811115614453578182fd5b61445f86828701614042565b9150509250925092565b60008060006060848603121561447d578081fd5b505081359360208301359350604090920135919050565b8183526000600160fb60020a038311156144ac578081fd5b6020830280836020870137939093016020019283525090919050565b6000815480845260208085019450838352808320835b838110156144fa578154875295820195600191820191016144de565b509495945050505050565b15159052565b6006811061451557fe5b9052565b600160a060020a0391909116815260200190565b600160a060020a039384168152919092166020820152604081019190915260600190565b600160a060020a03929092168252602082015260400190565b600160a060020a039390931683526020830191909152604082015260600190565b901515815260200190565b9515158652931515602086015291151560408501521515606084015215156080830152151560a082015260c00190565b60006020825282602083015282846040840137818301604090810191909152601f909201601f19160101919050565b600160a060020a0393841681529183166020830152909116604082015260600190565b600160a060020a039485168152928416602084015292166040820152606081019190915260800190565b600160a060020a03958616815293851660208501529190931660408301526060820192909252608081019190915260a00190565b600160a060020a03868116825285166020820152604081018490526080606082018190526000906146aa9083018486614494565b979650505050505050565b600160a060020a0394851681529290931660208301526040820152606081019190915260800190565b600160a060020a03958616815293909416602084015260408301919091526060820152608081019190915260a00190565b6000600160a060020a038916825287602083015260c0604083015261473860c083018789614494565b606083019590955250608081019290925260a090910152949350505050565b6000600160a060020a038716825285602083015284604083015260a0606083015261478560a08301856144c8565b828103608084015261479781856144c8565b98975050505050505050565b6000602080835283518082850152825b818110156147cf578581018301518582016040015282016147b3565b818111156147e05783604083870101525b50601f01601f1916929092016040019392505050565b60208082526012908201527f4552525f4e4f545f434f4e54524f4c4c45520000000000000000000000000000604082015260600190565b6020808252601c908201527f4552525f43414e4e4f545f4144445f52454d4f56455f544f4b454e5300000000604082015260600190565b6020808252818101527f4552525f494e434f4e53495354454e545f544f4b454e5f54494d455f4c4f434b604082015260600190565b60208082526018908201527f4552525f494e56414c49445f424c4f434b5f504552494f440000000000000000604082015260600190565b6020808252601a908201527f4552525f53544152545f574549474854535f4d49534d41544348000000000000604082015260600190565b6020808252600f908201527f4552525f494e49545f535550504c590000000000000000000000000000000000604082015260600190565b60208082526014908201527f4552525f4e4f545f4f4e5f57484954454c495354000000000000000000000000604082015260600190565b60208082526010908201527f4552525f5a45524f5f4144445245535300000000000000000000000000000000604082015260600190565b60208082526018908201527f4552525f43414e4e4f545f57484954454c4953545f4c50530000000000000000604082015260600190565b6020808252601c908201527f4552525f4e4f545f434f4e464947555241424c455f5745494748545300000000604082015260600190565b60208082526016908201527f4552525f4c505f4e4f545f57484954454c495354454400000000000000000000604082015260600190565b6020808252600f908201527f4552525f4e4f545f435245415445440000000000000000000000000000000000604082015260600190565b6020808252600e908201527f4552525f49535f43524541544544000000000000000000000000000000000000604082015260600190565b6020808252601b908201527f4552525f494e56414c49445f544f4b454e5f54494d455f4c4f434b0000000000604082015260600190565b6020808252600b9082015260a860020a6a4552525f5245454e54525902604082015260600190565b60208082526010908201527f4552525f5245454e5452595f5649455700000000000000000000000000000000604082015260600190565b60208082526013908201527f4552525f494e56414c49445f4144445245535300000000000000000000000000604082015260600190565b60208082526015908201527f4552525f43414e4e4f545f4348414e47455f4341500000000000000000000000604082015260600190565b60208082526014908201527f4552525f4e4f4e5a45524f5f455849545f464545000000000000000000000000604082015260600190565b60208082526015908201527f4552525f4341505f4c494d49545f524541434845440000000000000000000000604082015260600190565b60208082526016908201527f4552525f5043544f4b454e5f4241445f43414c4c455200000000000000000000604082015260600190565b60208082526012908201527f4552525f544f4f5f4645575f544f4b454e530000000000000000000000000000604082015260600190565b6020808252601b908201527f4552525f52454d4f56455f574954485f4144445f50454e44494e470000000000604082015260600190565b6020808252600f908201527f4552525f45524332305f46414c53450000000000000000000000000000000000604082015260600190565b60208082526015908201527f4552525f4e4f545f5041555341424c455f535741500000000000000000000000604082015260600190565b60208082526011908201527f4552525f5355425f554e444552464c4f57000000000000000000000000000000604082015260600190565b60208082526010908201527f4552525f4144445f4f564552464c4f5700000000000000000000000000000000604082015260600190565b6020808252601d908201527f4552525f4e4f545f434f4e464947555241424c455f535741505f464545000000604082015260600190565b6020808252601c908201527f4552525f4e4f5f5550444154455f445552494e475f4752414455414c00000000604082015260600190565b825460ff8082161515835261010082048116151560208401526201000082048116151560408401526301000000820481161515606084015260e083019190614e746080850164010000000084048316614505565b614e8b60a085018265010000000000850416614505565b50506109be60c083018461450b565b90815260200190565b918252602082015260400190565b60ff91909116815260200190565b60405181810167ffffffffffffffff81118282101715614ede57600080fd5b604052919050565b600067ffffffffffffffff821115614efc578081fd5b5060209081020190565b600160a060020a038116811461088e57600080fd5b801515811461088e57600080fdfec62fc35ac75e3bff532648e2859a3e1694002cfa357614ae8e034df7f83db5e9ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925ea39e3b35c5cd8937999ed5f7fbab30acd562a931fc4a887fed2a47c3074aa72a26469706673582212206f7279e6e8504244affac06b582aa204d969ed5567556585dd3f08a00375a93764736f6c634300060c0033", + "immutableReferences": {}, + "sourceMap": "1579:40694:1:-:0;;;6066:2123;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3145:21:4;;6366:17:1;;3145:21:4;;:7;;:21;;;;;:::i;:::-;-1:-1:-1;;1132:6:16;:19;;-1:-1:-1;;;;;;1132:19:16;1141:10;1132:19;;;-1:-1:-1;1764:7:17;:22;704:12:18;6637:36:1;::::1;;6629:69;;;;-1:-1:-1::0;;;;;6629:69:1::1;;;;;;;:::i;:::-;;;;;;;;;753:9:18::0;6716:36:1;::::1;;6708:69;;;;-1:-1:-1::0;;;;;6708:69:1::1;;;;;;;:::i;:::-;6855:6;:13;6831;:20;:37;6823:77;;;;-1:-1:-1::0;;;;;6823:77:1::1;;;;;;;:::i;:::-;6941:6;:13;6918:12;:19;:36;6910:75;;;;-1:-1:-1::0;;;;;6910:75:1::1;;;;;;;:::i;:::-;1116:1:18;7208:6:1;:13;:50;;7200:81;;;;-1:-1:-1::0;;;;;7200:81:1::1;;;;;;;:::i;:::-;1162:1:18;7299:6:1;:13;:50;;7291:82;;;;-1:-1:-1::0;;;;;7291:82:1::1;;;;;;;:::i;:::-;7573:8;:36:::0;;-1:-1:-1;;;;;;7573:36:1::1;-1:-1:-1::0;;;;;7573:36:1;::::1;;::::0;;7619:21;;:6:::1;:21:::0;;::::1;::::0;;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;-1:-1:-1;7619:21:1;::::1;::::0;-1:-1:-1;;7619:21:1;;::::1;::::0;::::1;;::::0;;;::::1;-1:-1:-1::0;;7619:21:1::1;7573:36;7619:21:::0;::::1;;::::0;;;::::1;::::0;;;::::1;-1:-1:-1::0;;7619:21:1::1;::::0;;::::1;;::::0;;;::::1;;-1:-1:-1::0;;7619:21:1::1;::::0;;::::1;;::::0;;;::::1;;-1:-1:-1::0;;7619:21:1::1;::::0;;::::1;;::::0;;;::::1;::::0;;;::::1;-1:-1:-1::0;;7619:21:1::1;::::0;;::::1;;::::0;;;::::1;;::::0;;7650:16;;::::1;::::0;:7:::1;::::0;:16;;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;7676:30:1;;::::1;::::0;:14:::1;::::0;:30:::1;::::0;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;7716:28:1;;::::1;::::0;:13:::1;::::0;:28:::1;::::0;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;;7754:8:1::1;:18:::0;-1:-1:-1;;5032:2:1::1;7782:31;:72:::0;;;7864:25:::1;:65:::0;-1:-1:-1;;;8051:11:1::1;:15:::0;-1:-1:-1;;;8146:7:1::1;:36:::0;1579:40694;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1579:40694:1;;;-1:-1:-1;1579:40694:1;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1579:40694:1;-1:-1:-1;;;;;1579:40694:1;;;;;;;;;;;-1:-1:-1;1579:40694:1;;;;;;;-1:-1:-1;1579:40694:1;;;-1:-1:-1;1579:40694:1;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1579:40694:1;;;-1:-1:-1;1579:40694:1;;;5:134:-1;83:13;;-1:-1;;;;;10616:54;;11097:35;;11087:2;;11146:1;;11136:12;11087:2;68:71;;;;:::o;164:722::-;;292:3;285:4;277:6;273:17;269:27;259:2;;-1:-1;;300:12;259:2;340:6;334:13;362:80;377:64;434:6;377:64;:::i;:::-;362:80;:::i;:::-;470:21;;;353:89;-1:-1;514:4;527:14;;;;502:17;;;616;;;607:27;;;;604:36;-1:-1;601:2;;;653:1;;643:12;601:2;678:1;663:217;688:6;685:1;682:13;663:217;;;768:48;812:3;800:10;768:48;:::i;:::-;756:61;;831:14;;;;859;;;;710:1;703:9;663:217;;;667:14;;;;;252:634;;;;:::o;912:722::-;;1040:3;1033:4;1025:6;1021:17;1017:27;1007:2;;-1:-1;;1048:12;1007:2;1088:6;1082:13;1110:80;1125:64;1182:6;1125:64;:::i;1110:80::-;1218:21;;;1101:89;-1:-1;1262:4;1275:14;;;;1250:17;;;1364;;;1355:27;;;;1352:36;-1:-1;1349:2;;;1401:1;;1391:12;1349:2;1426:1;1411:217;1436:6;1433:1;1430:13;1411:217;;;3521:13;;1504:61;;1579:14;;;;1607;;;;1458:1;1451:9;1411:217;;1778:444;;1891:3;1884:4;1876:6;1872:17;1868:27;1858:2;;-1:-1;;1899:12;1858:2;1933:13;;-1:-1;9996:30;;9993:2;;;-1:-1;;10029:12;9993:2;10170:4;1961:65;-1:-1;;10102:9;10083:17;;10079:33;10160:15;;1961:65;:::i;:::-;1952:74;;2046:6;2039:5;2032:21;2150:3;10170:4;2141:6;2074;2132:16;;2129:25;2126:2;;;2167:1;;2157:12;2126:2;10827:1;10834:101;10848:6;10845:1;10842:13;10834:101;;;10915:11;;;;;10909:18;10896:11;;;;;10889:39;10863:10;;10834:101;;;10950:6;10947:1;10944:13;10941:2;;;10827:1;10170:4;11006:6;2108:5;10997:16;;10990:27;10941:2;;;;1851:371;;;;:::o;2264:1172::-;;2388:4;2376:9;2371:3;2367:19;2363:30;2360:2;;;-1:-1;;2396:12;2360:2;2424:20;2388:4;2424:20;:::i;:::-;2415:29;;1723:6;1717:13;1735:30;1759:5;1735:30;:::i;:::-;2513:83;;2669:2;2731:22;;1717:13;1735:30;1717:13;1735:30;:::i;:::-;2669:2;2684:16;;2677:83;2833:2;2895:22;;1717:13;1735:30;1717:13;1735:30;:::i;:::-;2833:2;2848:16;;2841:83;2999:2;3061:22;;1717:13;1735:30;1717:13;1735:30;:::i;:::-;2999:2;3014:16;;3007:83;3162:3;3225:22;;1717:13;1735:30;1717:13;1735:30;:::i;:::-;3162:3;3178:16;;3171:83;3323:3;3386:22;;1717:13;1735:30;1717:13;1735:30;:::i;:::-;3323:3;3339:16;;3332:83;3343:5;2354:1082;-1:-1;;2354:1082::o;3584:1617::-;;;;;;;;3910:3;3898:9;3889:7;3885:23;3881:33;3878:2;;;-1:-1;;3917:12;3878:2;3979:64;4035:7;4011:22;3979:64;:::i;:::-;4101:2;4086:18;;4080:25;3969:74;;-1:-1;;4114:30;;;4111:2;;;-1:-1;;4147:12;4111:2;4177:74;4243:7;4234:6;4223:9;4219:22;4177:74;:::i;:::-;4167:84;;4309:2;4298:9;4294:18;4288:25;4274:39;;4125:18;4325:6;4322:30;4319:2;;;-1:-1;;4355:12;4319:2;4385:89;4466:7;4457:6;4446:9;4442:22;4385:89;:::i;:::-;4375:99;;4532:2;4521:9;4517:18;4511:25;4497:39;;4125:18;4548:6;4545:30;4542:2;;;-1:-1;;4578:12;4542:2;4608:89;4689:7;4680:6;4669:9;4665:22;4608:89;:::i;:::-;4598:99;;4755:3;4744:9;4740:19;4734:26;4720:40;;4125:18;4772:6;4769:30;4766:2;;;-1:-1;;4802:12;4766:2;;4832:89;4913:7;4904:6;4893:9;4889:22;4832:89;:::i;:::-;4822:99;;;4958:3;5013:9;5009:22;3521:13;4967:74;;5097:88;5177:7;5078:3;5157:9;5153:22;5097:88;:::i;:::-;5087:98;;3872:1329;;;;;;;;;;:::o;6863:416::-;7063:2;7077:47;;;5433:2;7048:18;;;10296:19;5469:28;10336:14;;;5449:49;5517:12;;;7034:245::o;7286:416::-;7486:2;7500:47;;;5768:2;7471:18;;;10296:19;5804:29;10336:14;;;5784:50;5853:12;;;7457:245::o;7709:416::-;7909:2;7923:47;;;6104:2;7894:18;;;10296:19;6140:20;10336:14;;;6120:41;6180:12;;;7880:245::o;8132:416::-;8332:2;8346:47;;;6431:2;8317:18;;;10296:19;6467:22;10336:14;;;6447:43;6509:12;;;8303:245::o;8555:416::-;8755:2;8769:47;;;6760:2;8740:18;;;10296:19;6796:21;10336:14;;;6776:42;6837:12;;;8726:245::o;8978:256::-;9040:2;9034:9;9066:17;;;9162:22;;;-1:-1;9126:34;;9123:62;9120:2;;;9198:1;;9188:12;9120:2;9040;9207:22;9018:216;;-1:-1;9018:216::o;9241:304::-;;-1:-1;9389:30;;9386:2;;;-1:-1;;9422:12;9386:2;-1:-1;9467:4;9455:17;;;9520:15;;9323:222::o;11162:111::-;11243:5;10528:13;10521:21;11221:5;11218:32;11208:2;;11264:1;;11254:12;11208:2;11202:71;:::o;:::-;1579:40694:1;;;;;;", + "deployedSourceMap": "1579:40694:1:-:0;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1579:40694:1;;;;;-1:-1:-1;1579:40694:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34357:1081;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8704:82:4;;;:::i;:::-;;;;;;;:::i;39590:166:1:-;;;;;;:::i;:::-;;:::i;:::-;;4276:511:4;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1732:25:1:-;;;:::i;:::-;;;;;;;:::i;8515:99:4:-;;;:::i;39939:151:1:-;;;;;;:::i;:::-;;:::i;7530:786:4:-;;;;;;:::i;:::-;;:::i;21068:1479:1:-;;;;;;:::i;:::-;;:::i;2295:35:4:-;;;:::i;:::-;;;;;;;:::i;1790:87:16:-;;;:::i;9609:82:4:-;;;:::i;8463:647:1:-;;;;;;:::i;:::-;;:::i;37421:204::-;;;;;;:::i;:::-;;:::i;32796:1082::-;;;;;;:::i;:::-;;:::i;10306:265::-;;;;;;:::i;:::-;;:::i;11247:256::-;;;;;;:::i;:::-;;:::i;39424:160::-;;;;;;:::i;:::-;;:::i;24009:635::-;;;;;;:::i;:::-;;:::i;26299:1415::-;;;;;;:::i;:::-;;:::i;9661:106::-;;;:::i;39762:171::-;;;;;;:::i;:::-;;:::i;29807:949::-;;;;;;:::i;:::-;;:::i;25333:661::-;;;;;;:::i;:::-;;:::i;5946:533:4:-;;;;;;:::i;:::-;;:::i;31347:937:1:-;;;;;;:::i;:::-;;:::i;3813:115:4:-;;;;;;:::i;:::-;;:::i;38226:113:1:-;;;:::i;36728:414::-;;;;;;:::i;:::-;;:::i;16562:2759::-;;;;;;:::i;:::-;;:::i;1405:210:16:-;;;;;;:::i;:::-;;:::i;37791:197:1:-;;;;;;:::i;:::-;;:::i;8899:87:4:-;;;:::i;19878:518:1:-;;;;;;:::i;:::-;;:::i;1836:34::-;;;:::i;:::-;;;;;;;;;;;;:::i;38586:119::-;;;:::i;38952:::-;;;:::i;2238:51:4:-;;;:::i;5040:63:1:-;;;:::i;6831:221:4:-;;;;;;:::i;:::-;;:::i;28065:1281:1:-;;;;;;:::i;:::-;;:::i;1763:19::-;;;:::i;24748:403::-;;;:::i;12875:3027::-;;;;;;:::i;:::-;;:::i;35591:314::-;;;;;;:::i;:::-;;:::i;5170:293:4:-;;;;;;:::i;:::-;;:::i;3489:139::-;;;;;;:::i;:::-;;:::i;22844:677:1:-;;;:::i;36063:405::-;;;;;;:::i;:::-;;:::i;9392:173::-;;;:::i;34357:1081::-;4121:38;;34560:17;;4138:10;;4129:7;;-1:-1:-1;;;;;;4129:7:1;;4121:38;;34560:17;;4150:8;;4121:38;:::i;:::-;;;;;;;;1695:1:17::1;2249:7;;:19;;2241:43;;;::::0;-1:-1:-1;;;;;2241:43:17;;::::1;::::0;::::1;;;:::i;:::-;;;;;;;;;1695:1;2353:7;:18:::0;4300:5:1::2;::::0;-1:-1:-1;;;;;4300:5:1::2;4284:56;;;::::0;-1:-1:-1;;;;;4284:56:1;;::::2;::::0;::::2;;;:::i;:::-;34856:5:::3;::::0;34748:274:::3;::::0;-1:-1:-1;;;;;34748:274:1;;34708:12:::3;::::0;;;34748:16:::3;::::0;:40:::3;::::0;:274:::3;::::0;34820:4:::3;::::0;-1:-1:-1;;;;;34856:5:1;;::::3;::::0;34893:8;;34933:14;;34979:15;;34748:274:::3;;;:::i;:::-;;::::0;::::3;;;;;;;;;;;;;;::::0;::::3;;;;;;;;;;;;::::0;::::3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;34707:315;;;;35048:8;35033:23;;35066:20;35089:44;35111:12;35125:7;35089:21;:44::i;:::-;-1:-1:-1::0;;;35066:67:1;;-1:-1:-1;;;;;;35149:45:1;::::3;::::0;35157:10:::3;::::0;-1:-1:-1;;;;;;;;;35179:14:1::3;35149:45;;;;;;:::i;:::-;;;;;;;;35205:40;35220:10;35232:12;35205:14;:40::i;:::-;35255:31;35270:15;35255:14;:31::i;:::-;35319:8;::::0;35296:42:::3;::::0;-1:-1:-1;;;;;35319:8:1::3;35330:7:::0;35296:14:::3;:42::i;:::-;35348:53;35364:8;35374:10;35386:14;35348:15;:53::i;:::-;35412:19;;;4350:1;1655::17::1;2524:7;:22:::0;34357:1081:1;;-1:-1:-1;;;34357:1081:1:o;8704:82:4:-;8775:4;;;;;;;;;;;;-1:-1:-1;;;;;8775:4:4;;;;;8704:82::o;39590:166:1:-;39671:10;39693:4;39671:27;39662:59;;;;-1:-1:-1;;;;;39662:59:1;;;;;;;:::i;:::-;39732:17;39738:2;39742:6;39732:5;:17::i;:::-;39590:166;;:::o;4276:511:4:-;4676:10;4350:4;4665:22;;;:10;:22;;;;;;;;-1:-1:-1;;;;;4665:31:4;;;;;;;;;;:40;;;4721:37;4350:4;;4665:31;;-1:-1:-1;;;;;;;;;;;4721:37:4;;;4699:6;;4721:37;:::i;:::-;;;;;;;;-1:-1:-1;4776:4:4;4276:511;;;;:::o;1732:25:1:-;;;-1:-1:-1;;;;;1732:25:1;;:::o;8515:99:4:-;8570:4;8593:14;8515:99;:::o;39939:151:1:-;40009:10;40031:4;40009:27;40000:59;;;;-1:-1:-1;;;;;40000:59:1;;;;;;;:::i;:::-;40070:13;40076:6;40070:5;:13::i;:::-;39939:151;:::o;7530:786:4:-;7627:4;-1:-1:-1;;;;;7651:23:4;;7643:52;;;;-1:-1:-1;;;;;7643:52:4;;;;;;;:::i;:::-;-1:-1:-1;;;;;7713:20:4;;:10;:20;;:64;;-1:-1:-1;;;;;;7747:18:4;;;;;;-1:-1:-1;7747:18:4;;;;;;;;7766:10;7747:30;;;;;;;;7737:40;;;7713:64;7705:99;;;;-1:-1:-1;;;;;7705:99:4;;;;;;;:::i;:::-;7815:32;7821:6;7829:9;7840:6;7815:5;:32::i;:::-;-1:-1:-1;;;;;7918:18:4;;7898:17;7918:18;;;-1:-1:-1;7918:18:4;;;;;;;;7937:10;7918:30;;;;;;;;;;8054:20;;;;:48;;-1:-1:-1;;;8078:24:4;;;8054:48;8050:238;;;8151:43;8173:12;8187:6;8151:21;:43::i;:::-;-1:-1:-1;;;;;8118:18:4;;;;;;;-1:-1:-1;8118:18:4;;;;;;;;8137:10;8118:30;;;;;;;;;:76;;;8214:63;;;;;;8137:10;;8118:76;;8214:63;;8137:10;;-1:-1:-1;8118:18:4;-1:-1:-1;;;;;8214:63:4;;;;:::i;:::-;;;;;;;;8050:238;8305:4;8298:11;;;7530:786;;;;;;:::o;21068:1479:1:-;4121:38;;4138:10;;4129:7;;;-1:-1:-1;;;;;;4129:7:1;;4121:38;;4129:7;4150:8;;4121:38;:::i;:::-;;;;;;;;1695:1:17::1;2249:7;;:19;;2241:43;;;::::0;-1:-1:-1;;;;;2241:43:17;;::::1;::::0;::::1;;;:::i;:::-;1695:1;2353:7;:18:::0;905:6:16::2;::::0;-1:-1:-1;;;;;905:6:16::2;915:10;905:20;897:51;;;::::0;-1:-1:-1;;;;;897:51:16;;::::2;::::0;::::2;;;:::i;:::-;4300:5:1::3;::::0;-1:-1:-1;;;;;4300:5:1::3;4284:56;;;::::0;-1:-1:-1;;;;;4284:56:1;;::::3;::::0;::::3;;;:::i;:::-;21308:6:::4;:23:::0;;;::::4;;;21300:64;;;::::0;-1:-1:-1;;;;;21300:64:1;;::::4;::::0;::::4;;;:::i;:::-;21482:5;::::0;:24:::4;::::0;;-1:-1:-1;;;;;21482:24:1;;;;21452:27:::4;::::0;-1:-1:-1;;;;;21482:5:1::4;::::0;-1:-1:-1;;21482:24:1::4;::::0;;::::4;::::0;:5:::4;::::0;:24;;;;;;;:5;:24;::::4;;::::0;::::4;;;;::::0;::::4;;;;;;;;;;;;::::0;::::4;;;;;;;;;;;;;;;;;::::0;;::::4;-1:-1:-1::0;;21482:24:1::4;::::0;::::4;;::::0;::::4;::::0;;;::::4;::::0;::::4;:::i;:::-;21593:17:::0;;21452:54;;-1:-1:-1;21572:38:1;::::4;21564:77;;;::::0;-1:-1:-1;;;;;21564:77:1;;::::4;::::0;::::4;;;:::i;:::-;21983:5;::::0;22250:31:::4;::::0;21899:423:::4;::::0;-1:-1:-1;;;;;21899:423:1;;21837:21:::4;::::0;21869:26:::4;::::0;21899:16:::4;::::0;:39:::4;::::0;:423:::4;::::0;-1:-1:-1;;;;;21983:5:1;;::::4;::::0;22033:9:::4;::::0;22087:10;;;;22142;;22197:8;;22250:31;21899:423:::4;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::4;;;;;;;;;;;;::::0;::::4;;;;;;;;;;;;;;;;;::::0;;::::4;-1:-1:-1::0;;21899:423:1::4;::::0;::::4;;::::0;::::4;::::0;;;::::4;::::0;::::4;:::i;:::-;22332:11;:30:::0;;;22372:9:::4;:20:::0;;;21836:486;;-1:-1:-1;21836:486:1;-1:-1:-1;22402:24:1::4;:11;22416:10:::0;;22402:24:::4;:::i;:::-;;22442:6;22437:104;22458:10;:17;22454:1;:21;22437:104;;;22515:12;22528:1;22515:15;;;;;;;;;;;;;;22496:13;22510:1;22496:16;;;;;;;;;::::0;;;::::4;::::0;;;::::4;:34:::0;22477:3:::4;;22437:104;;;-1:-1:-1::0;;1655:1:17::1;2524:7;:22:::0;-1:-1:-1;;;;;;21068:1479:1:o;2295:35:4:-;2328:2;2295:35;:::o;1790:87:16:-;1864:6;;-1:-1:-1;;;;;1864:6:16;;1790:87::o;9609:82:4:-;2328:2;9609:82;:::o;8463:647:1:-;4121:38;;4138:10;;4129:7;;;-1:-1:-1;;;;;;4129:7:1;;4121:38;;4129:7;4150:8;;4121:38;:::i;:::-;;;;;;;;1695:1:17::1;2249:7;;:19;;2241:43;;;::::0;-1:-1:-1;;;;;2241:43:17;;::::1;::::0;::::1;;;:::i;:::-;1695:1;2353:7;:18:::0;905:6:16::2;::::0;-1:-1:-1;;;;;905:6:16::2;915:10;905:20;897:51;;;::::0;-1:-1:-1;;;;;897:51:16;;::::2;::::0;::::2;;;:::i;:::-;4300:5:1::3;::::0;-1:-1:-1;;;;;4300:5:1::3;4284:56;;;::::0;-1:-1:-1;;;;;4284:56:1;;::::3;::::0;::::3;;;:::i;:::-;8615:6:::4;:23:::0;::::4;::::0;::::4;;;8607:65;;;::::0;-1:-1:-1;;;;;8607:65:1;;::::4;::::0;::::4;;;:::i;:::-;8991:8;:18:::0;;;9078:5:::4;::::0;:25:::4;::::0;-1:-1:-1;;;;;9078:25:1;;-1:-1:-1;;;;;9078:5:1;;::::4;::::0;-1:-1:-1;;9078:25:1::4;::::0;8991:18;;9078:25:::4;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::4;;;;;;;;;;;;::::0;::::4;;;;;-1:-1:-1::0;;1655:1:17::1;2524:7;:22:::0;-1:-1:-1;;;8463:647:1:o;37421:204::-;37571:47;;-1:-1:-1;;;;;37571:47:1;;37544:4;;37571:13;;:27;;:47;;37599:6;;37607:10;;37571:47;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;37564:54;;37421:204;;;;:::o;32796:1082::-;4121:38;;32991:19;;4138:10;;4129:7;;-1:-1:-1;;;;;;4129:7:1;;4121:38;;32991:19;;4150:8;;4121:38;:::i;:::-;;;;;;;;1695:1:17::1;2249:7;;:19;;2241:43;;;::::0;-1:-1:-1;;;;;2241:43:17;;::::1;::::0;::::1;;;:::i;:::-;1695:1;2353:7;:18:::0;4300:5:1::2;::::0;-1:-1:-1;;;;;4300:5:1::2;4284:56;;;::::0;-1:-1:-1;;;;;4284:56:1;;::::2;::::0;::::2;;;:::i;:::-;33292:5:::3;::::0;33185:272:::3;::::0;-1:-1:-1;;;;;33185:272:1;;33144:12:::3;::::0;;;33185:16:::3;::::0;:37:::3;::::0;:272:::3;::::0;33255:4:::3;::::0;-1:-1:-1;;;;;33292:5:1;;::::3;::::0;33330:8;;33371:12;;33416;;33185:272:::3;;;:::i;:::-;;::::0;::::3;;;;;;;;;;;;;;::::0;::::3;;;;;;;;;;;;::::0;::::3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;33143:314;;;;33485:9;33468:26;;33504:20;33527:44;33549:12;33563:7;33527:21;:44::i;:::-;-1:-1:-1::0;;;33504:67:1;;-1:-1:-1;;;;;;33587:45:1;::::3;::::0;33595:10:::3;::::0;-1:-1:-1;;;;;;;;;33617:14:1::3;33587:45;;;;;;:::i;:::-;;;;;;;;33643:40;33658:10;33670:12;33643:14;:40::i;:::-;33693:31;33708:15;33693:14;:31::i;:::-;33757:8;::::0;33734:42:::3;::::0;-1:-1:-1;;;;;33757:8:1::3;33768:7:::0;33734:14:::3;:42::i;:::-;33786:53;33802:8;33812:10;33824:14;33786:15;:53::i;10306:265::-:0;4121:38;;4138:10;;4129:7;;;-1:-1:-1;;;;;;4129:7:1;;4121:38;;4129:7;4150:8;;4121:38;:::i;:::-;;;;;;;;1695:1:17::1;2249:7;;:19;;2241:43;;;::::0;-1:-1:-1;;;;;2241:43:17;;::::1;::::0;::::1;;;:::i;:::-;1695:1;2353:7;:18:::0;4300:5:1::2;::::0;-1:-1:-1;;;;;4300:5:1::2;4284:56;;;::::0;-1:-1:-1;;;;;4284:56:1;;::::2;::::0;::::2;;;:::i;:::-;905:6:16::3;::::0;-1:-1:-1;;;;;905:6:16::3;915:10;905:20;897:51;;;::::0;-1:-1:-1;;;;;897:51:16;;::::3;::::0;::::3;;;:::i;:::-;10437:6:1::4;:19:::0;;;::::4;;;10429:53;;;::::0;-1:-1:-1;;;;;10429:53:1;;::::4;::::0;::::4;;;:::i;:::-;10521:7;::::0;10498:39:::4;::::0;10509:10:::4;::::0;10498:39:::4;::::0;::::4;::::0;10521:7;10530:6;;10498:39:::4;:::i;:::-;;;;;;;;10548:7;:16:::0;1655:1:17::1;2524:7;:22:::0;10306:265:1:o;11247:256::-;4121:38;;4138:10;;4129:7;;;-1:-1:-1;;;;;;4129:7:1;;4121:38;;4129:7;4150:8;;4121:38;:::i;:::-;;;;;;;;1695:1:17::1;2249:7;;:19;;2241:43;;;::::0;-1:-1:-1;;;;;2241:43:17;;::::1;::::0;::::1;;;:::i;:::-;1695:1;2353:7;:18:::0;905:6:16::2;::::0;-1:-1:-1;;;;;905:6:16::2;915:10;905:20;897:51;;;::::0;-1:-1:-1;;;;;897:51:16;;::::2;::::0;::::2;;;:::i;:::-;4300:5:1::3;::::0;-1:-1:-1;;;;;4300:5:1::3;4284:56;;;::::0;-1:-1:-1;;;;;4284:56:1;;::::3;::::0;::::3;;;:::i;:::-;11405:6:::4;:23:::0;::::4;;11397:57;;;::::0;-1:-1:-1;;;;;11397:57:1;;::::4;::::0;::::4;;;:::i;:::-;11465:5;::::0;:31:::4;::::0;-1:-1:-1;;;;;11465:31:1;;-1:-1:-1;;;;;11465:5:1;;::::4;::::0;:19:::4;::::0;:31:::4;::::0;11485:10;;11465:31:::4;;;:::i;39424:160::-:0;39503:10:::1;39525:4;39503:27;39494:59;;;::::0;-1:-1:-1;;;;;39494:59:1;;::::1;::::0;::::1;;;:::i;:::-;39564:13;39570:6;39564:5;:13::i;:::-;4608:7:::0;;4586:18;;;-1:-1:-1;;;;;4586:18:1;;;;:4;;:16;;:18;;;;;;;;;;;;;;:4;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:29;;4578:63;;;;-1:-1:-1;;;;;4578:63:1;;;;;;;:::i;24009:635::-;4121:38;;4138:10;;4129:7;;;-1:-1:-1;;;;;;4129:7:1;;4121:38;;4129:7;4150:8;;4121:38;:::i;:::-;;;;;;;;1695:1:17::1;2249:7;;:19;;2241:43;;;::::0;-1:-1:-1;;;;;2241:43:17;;::::1;::::0;::::1;;;:::i;:::-;1695:1;2353:7;:18:::0;905:6:16::2;::::0;-1:-1:-1;;;;;905:6:16::2;915:10;905:20;897:51;;;::::0;-1:-1:-1;;;;;897:51:16;;::::2;::::0;::::2;;;:::i;:::-;4300:5:1::3;::::0;-1:-1:-1;;;;;4300:5:1::3;4284:56;;;::::0;-1:-1:-1;;;;;4284:56:1;;::::3;::::0;::::3;;;:::i;:::-;24235:6:::4;:25:::0;;;::::4;;;24227:66;;;::::0;-1:-1:-1;;;;;24227:66:1;;::::4;::::0;::::4;;;:::i;:::-;24377:11;::::0;:16;24369:57:::4;;;::::0;-1:-1:-1;;;;;24369:57:1;;::::4;::::0;::::4;;;:::i;:::-;24527:5;::::0;24482:155:::4;::::0;-1:-1:-1;;;;;24482:155:1;;:16:::4;::::0;:31:::4;::::0;:155:::4;::::0;-1:-1:-1;;;;;24527:5:1::4;::::0;24546;;24565:7;;24586:18;;24618:9:::4;::::0;24482:155:::4;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::4;;;;;;;;;;;;::::0;::::4;;;;;-1:-1:-1::0;;1655:1:17::1;2524:7;:22:::0;-1:-1:-1;;;;;24009:635:1:o;26299:1415::-;4121:38;;4138:10;;4129:7;;;-1:-1:-1;;;;;;4129:7:1;;4121:38;;4129:7;4150:8;;4121:38;:::i;:::-;;;;;;;;1695:1:17::1;2249:7;;:19;;2241:43;;;::::0;-1:-1:-1;;;;;2241:43:17;;::::1;::::0;::::1;;;:::i;:::-;1695:1;2353:7;:18:::0;4300:5:1::2;::::0;-1:-1:-1;;;;;4300:5:1::2;4284:56;;;::::0;-1:-1:-1;;;;;4284:56:1;;::::2;::::0;::::2;;;:::i;:::-;26471:6:::4;:22:::0;;;::::4;;;26470:23;::::0;:66:::4;;-1:-1:-1::0;26525:10:1::4;26497:39;::::0;;;:27:::4;:39;::::0;;;;;::::4;;26470:66;26462:115;;;::::0;-1:-1:-1;;;;;26462:115:1;;::::4;::::0;::::4;;;:::i;:::-;27034:5;::::0;26913:285:::4;::::0;-1:-1:-1;;;;;26913:285:1;;26881:29:::4;::::0;26913:16:::4;::::0;:25:::4;::::0;:285:::4;::::0;26984:4:::4;::::0;-1:-1:-1;;;;;27034:5:1::4;::::0;27085:13;;27144:12;;;;26913:285:::4;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::4;;;;;;;;;;;;::::0;::::4;;;;;;;;;;;;;;;;;::::0;;::::4;-1:-1:-1::0;;26913:285:1::4;::::0;::::4;;::::0;::::4;::::0;;;::::4;::::0;::::4;:::i;:::-;27317:5;::::0;:24:::4;::::0;;-1:-1:-1;;;;;27317:24:1;;;;26881:317;;-1:-1:-1;27287:27:1::4;::::0;-1:-1:-1;;;;;27317:5:1;;::::4;::::0;:22:::4;::::0;:24:::4;::::0;;::::4;::::0;:5:::4;::::0;:24;;;;;;;;:5;:24;::::4;;::::0;::::4;;;;::::0;::::4;;;;;;;;;;;;::::0;::::4;;;;;;;;;;;;;;;;;::::0;;::::4;-1:-1:-1::0;;27317:24:1::4;::::0;::::4;;::::0;::::4;::::0;;;::::4;::::0;::::4;:::i;:::-;27287:54;;27357:6;27352:265;27373:10;:17;27369:1;:21;27352:265;;;27411:9;27423:10;27434:1;27423:13;;;;;;;;;;;;;;27411:25;;27450:18;27471:15;27487:1;27471:18;;;;;;;;;::::0;;::::4;::::0;;;;;;;-1:-1:-1;;;27471:18:1;;-1:-1:-1;;;;;;27509:37:1;::::4;::::0;27517:10:::4;::::0;-1:-1:-1;;;;;;;;27532:13:1::4;27509:37;;;;;;:::i;:::-;;;;;;;;27561:45;27577:1;27580:10;27592:13;27561:15;:45::i;:::-;-1:-1:-1::0;;27392:3:1::4;;27352:265;;;;27627:29;27642:13;27627:14;:29::i;:::-;27666:41;27681:10;27693:13;27666:14;:41::i;:::-;-1:-1:-1::0;;4608:7:1::3;::::0;4586:18:::3;::::0;;-1:-1:-1;;;;;4586:18:1;;;;:4:::3;::::0;:16:::3;::::0;:18:::3;::::0;;::::3;::::0;::::3;::::0;;;;;;;;:4;:18;::::3;;::::0;::::3;;;;::::0;::::3;;;;;;;;;;;;::::0;::::3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:29;;4578:63;;;::::0;-1:-1:-1;;;;;4578:63:1;;::::3;::::0;::::3;;;:::i;:::-;-1:-1:-1::0;;1655:1:17::1;2524:7;:22:::0;-1:-1:-1;26299:1415:1:o;9661:106::-;9726:4;1695:1:17;2249:7;;:19;;2241:43;;;;-1:-1:-1;;;;;2241:43:17;;;;;;;:::i;:::-;-1:-1:-1;9753:7:1::1;::::0;1655:1:17;2353:7;2524:22;9753:7:1;9661:106::o;39762:171::-;39846:10;39868:4;39846:27;39837:59;;;;-1:-1:-1;;;;;39837:59:1;;;;;;;:::i;:::-;39907:19;39913:4;39919:6;39907:5;:19::i;29807:949::-;4121:38;;30026:18;;4138:10;;4129:7;;-1:-1:-1;;;;;;4129:7:1;;4121:38;;30026:18;;4150:8;;4121:38;:::i;:::-;;;;;;;;1695:1:17::1;2249:7;;:19;;2241:43;;;::::0;-1:-1:-1;;;;;2241:43:17;;::::1;::::0;::::1;;;:::i;:::-;1695:1;2353:7;:18:::0;4300:5:1::2;::::0;-1:-1:-1;;;;;4300:5:1::2;4284:56;;;::::0;-1:-1:-1;;;;;4284:56:1;;::::2;::::0;::::2;;;:::i;:::-;30069:6:::4;:22:::0;;;::::4;;;30068:23;::::0;:66:::4;;-1:-1:-1::0;30123:10:1::4;30095:39;::::0;;;:27:::4;:39;::::0;;;;;::::4;;30068:66;30060:115;;;::::0;-1:-1:-1;;;;;30060:115:1;;::::4;::::0;::::4;;;:::i;:::-;30350:5;::::0;30247:260:::4;::::0;-1:-1:-1;;;;;30247:260:1;;:16:::4;::::0;-1:-1:-1;;30247:260:1::4;::::0;30316:4:::4;::::0;-1:-1:-1;;;;;30350:5:1;;::::4;::::0;30385:7;;30422:13;;30465:16;;30247:260:::4;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::4;;;;;;;;;;;;::::0;::::4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;30231:276:1;;-1:-1:-1;;;;;;30523:43:1;::::4;::::0;30531:10:::4;::::0;-1:-1:-1;;;;;;;;;30552:13:1::4;30523:43;;;;;;:::i;:::-;;;;;;;;30577:29;30592:13;30577:14;:29::i;:::-;30616:41;30631:10;30643:13;30616:14;:41::i;:::-;30667:51;30683:7;30692:10;30704:13;30667:15;:51::i;:::-;4608:7:::3;::::0;4586:18:::3;::::0;;-1:-1:-1;;;;;4586:18:1;;;;:4:::3;::::0;:16:::3;::::0;:18:::3;::::0;;::::3;::::0;::::3;::::0;;;;;;;;:4;:18;::::3;;::::0;::::3;;;;::::0;::::3;;;;;;;;;;;;::::0;::::3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:29;;4578:63;;;::::0;-1:-1:-1;;;;;4578:63:1;;::::3;::::0;::::3;;;:::i;25333:661::-:0;4121:38;;4138:10;;4129:7;;;-1:-1:-1;;;;;;4129:7:1;;4121:38;;4129:7;4150:8;;4121:38;:::i;:::-;;;;;;;;1695:1:17::1;2249:7;;:19;;2241:43;;;::::0;-1:-1:-1;;;;;2241:43:17;;::::1;::::0;::::1;;;:::i;:::-;1695:1;2353:7;:18:::0;905:6:16::2;::::0;-1:-1:-1;;;;;905:6:16::2;915:10;905:20;897:51;;;::::0;-1:-1:-1;;;;;897:51:16;;::::2;::::0;::::2;;;:::i;:::-;4300:5:1::3;::::0;-1:-1:-1;;;;;4300:5:1::3;4284:56;;;::::0;-1:-1:-1;;;;;4284:56:1;;::::3;::::0;::::3;;;:::i;:::-;25471:6:::4;:25:::0;;;::::4;;;25463:66;;;::::0;-1:-1:-1;;;;;25463:66:1;;::::4;::::0;::::4;;;:::i;:::-;25647:5;::::0;:24:::4;::::0;;-1:-1:-1;;;;;25647:24:1;;;;25617:27:::4;::::0;-1:-1:-1;;;;;25647:5:1::4;::::0;-1:-1:-1;;25647:24:1::4;::::0;;::::4;::::0;:5:::4;::::0;:24;;;;;;;:5;:24;::::4;;::::0;::::4;;;;::::0;::::4;;;;;;;;;;;;::::0;::::4;;;;;;;;;;;;;;;;;::::0;;::::4;-1:-1:-1::0;;25647:24:1::4;::::0;::::4;;::::0;::::4;::::0;;;::::4;::::0;::::4;:::i;:::-;25617:54;;1116:1:18;25690:10:1;:17;:53;25682:84;;;::::0;-1:-1:-1;;;;;25682:84:1;;::::4;::::0;::::4;;;:::i;:::-;25785:9;:21:::0;-1:-1:-1;;;25785:21:1;::::4;;;25784:22;25776:62;;;::::0;-1:-1:-1;;;;;25776:62:1;;::::4;::::0;::::4;;;:::i;:::-;25954:5;::::0;25894:94:::4;::::0;-1:-1:-1;;;;;25894:94:1;;:16:::4;::::0;-1:-1:-1;;25894:94:1::4;::::0;25936:4:::4;::::0;-1:-1:-1;;;;;25954:5:1;;::::4;::::0;25973;;25894:94:::4;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::4;;;;;;;;;;;;::::0;::::4;;;;;-1:-1:-1::0;;1655:1:17::1;2524:7;:22:::0;-1:-1:-1;;;;25333:661:1:o;5946:533:4:-;6063:10;6020:4;6052:22;;;:10;:22;;;;;;;;-1:-1:-1;;;;;6052:31:4;;;;;;;;;;6189:18;;;6185:188;;6234:10;6257:1;6223:22;;;:10;:22;;;;;;;;-1:-1:-1;;;;;6223:31:4;;;;;;;;;:35;6185:188;;;6323:39;6345:8;6355:6;6323:21;:39::i;:::-;6300:10;6289:22;;;;:10;:22;;;;;;;;-1:-1:-1;;;;;6289:31:4;;;;;;;;;:73;6185:188;6397:10;6418:22;;;;:10;:22;;;;;;;;-1:-1:-1;;;;;6388:62:4;;6418:31;;;;;;;;;;6388:62;;;;6397:10;6388:62;;;;-1:-1:-1;6418:22:4;-1:-1:-1;;;;;6388:62:4;;;6418:31;6388:62;:::i;:::-;;;;;;;;-1:-1:-1;6468:4:4;;5946:533;-1:-1:-1;;;5946:533:4:o;31347:937:1:-;4121:38;;31560:18;;4138:10;;4129:7;;-1:-1:-1;;;;;;4129:7:1;;4121:38;;31560:18;;4150:8;;4121:38;:::i;:::-;;;;;;;;1695:1:17::1;2249:7;;:19;;2241:43;;;::::0;-1:-1:-1;;;;;2241:43:17;;::::1;::::0;::::1;;;:::i;:::-;1695:1;2353:7;:18:::0;4300:5:1::2;::::0;-1:-1:-1;;;;;4300:5:1::2;4284:56;;;::::0;-1:-1:-1;;;;;4284:56:1;;::::2;::::0;::::2;;;:::i;:::-;31603:6:::4;:22:::0;;;::::4;;;31602:23;::::0;:66:::4;;-1:-1:-1::0;31657:10:1::4;31629:39;::::0;;;:27:::4;:39;::::0;;;;;::::4;;31602:66;31594:115;;;::::0;-1:-1:-1;;;;;31594:115:1;;::::4;::::0;::::4;;;:::i;:::-;31883:5;::::0;31781:254:::4;::::0;-1:-1:-1;;;;;31781:254:1;;:16:::4;::::0;-1:-1:-1;;31781:254:1::4;::::0;31849:4:::4;::::0;-1:-1:-1;;;;;31883:5:1;;::::4;::::0;31918:7;;31955:13;;31998:11;;31781:254:::4;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::4;;;;;;;;;;;;::::0;::::4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;31765:270:1;;-1:-1:-1;;;;;;32051:43:1;::::4;::::0;32059:10:::4;::::0;-1:-1:-1;;;;;;;;;32080:13:1::4;32051:43;;;;;;:::i;:::-;;;;;;;;32105:29;32120:13;32105:14;:29::i;:::-;32144:41;32159:10;32171:13;32144:14;:41::i;:::-;32195:51;32211:7;32220:10;32232:13;32195:15;:51::i;3813:115:4:-:0;-1:-1:-1;;;;;3904:17:4;3881:4;3904:17;;;-1:-1:-1;3904:17:4;;;;;;;3813:115::o;38226:113:1:-;38310:22;38226:113;:::o;36728:414::-;36845:6;:22;36821:4;;36845:22;;;;;36841:295;;;-1:-1:-1;;;;;;36890:37:1;;;;;;:27;:37;;;;;;;;36883:44;;36841:295;-1:-1:-1;;;;;;37103:22:1;;;;37096:29;;16562:2759;4121:38;;4138:10;;4129:7;;;-1:-1:-1;;;;;;4129:7:1;;4121:38;;4129:7;4150:8;;4121:38;:::i;:::-;;;;;;;;1695:1:17::1;2249:7;;:19;;2241:43;;;::::0;-1:-1:-1;;;;;2241:43:17;;::::1;::::0;::::1;;;:::i;:::-;1695:1;2353:7;:18:::0;16691:5:1::2;::::0;-1:-1:-1;;;;;16691:5:1::2;16683:28:::0;16675:55:::2;;;::::0;-1:-1:-1;;;;;16675:55:1;;::::2;::::0;::::2;;;:::i;:::-;16764:1;16748:13;:17;16740:45;;;::::0;-1:-1:-1;;;;;16740:45:1;;::::2;::::0;::::2;;;:::i;:::-;17077:8;::::0;:19:::2;::::0;;-1:-1:-1;;;;;17077:19:1;;;;-1:-1:-1;;;;;17077:8:1;;::::2;::::0;:17:::2;::::0;:19:::2;::::0;;::::2;::::0;::::2;::::0;;;;;;;;;:8:::2;::::0;:19;::::2;;::::0;::::2;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17069:5;:27:::0;;-1:-1:-1;;;;;;17069:27:1::2;-1:-1:-1::0;;;;;17069:27:1;;::::2;;::::0;;;;17208:16:::2;::::0;;-1:-1:-1;;;;;17208:16:1;;;;:5;;;::::2;::::0;:14:::2;::::0;:16:::2;::::0;;::::2;::::0;::::2;::::0;;;;;;;;:5;:16;::::2;;::::0;::::2;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:21:::0;17200:54:::2;;;::::0;-1:-1:-1;;;;;17200:54:1;;::::2;::::0;::::2;;;:::i;:::-;17496:5;::::0;17513:8:::2;::::0;17496:26:::2;::::0;-1:-1:-1;;;;;17496:26:1;;-1:-1:-1;;;;;17496:5:1;;::::2;::::0;-1:-1:-1;;17496:26:1::2;::::0;::::2;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;-1:-1:-1::0;;17851:6:1::2;:19:::0;;;::::2;;;17847:73;::::0;-1:-1:-1;17847:73:1::2;::::0;-1:-1:-1;17847:73:1::2;17886:7;:23:::0;;;17847:73:::2;17935:6;17930:500;17951:7;:14:::0;17947:18;::::2;17930:500;;;17986:9;17998:7;18006:1;17998:10;;;;;;;;;::::0;;;::::2;::::0;;::::2;::::0;18033:14:::2;:17:::0;;-1:-1:-1;;;;;17998:10:1;;::::2;::::0;-1:-1:-1;18033:14:1;18048:1;;18033:17;::::2;;;;;;;;;;;;;18022:28;;18064:11;18078:13;18092:1;18078:16;;;;;;;;;::::0;;;::::2;::::0;;::::2;::::0;18128:54:::2;::::0;-1:-1:-1;;;;;18128:54:1;;18078:16;;-1:-1:-1;;;;;;18128:22:1;::::2;::::0;-1:-1:-1;;18128:54:1::2;::::0;18151:10:::2;::::0;18171:4:::2;::::0;18178:3;;18128:54:::2;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18109:73;;18204:11;18196:39;;;::::0;-1:-1:-1;;;;;18196:39:1;;::::2;::::0;::::2;;;:::i;:::-;18290:5;::::0;18264:61:::2;::::0;-1:-1:-1;;;;;18264:61:1;;-1:-1:-1;;;;;18264:17:1;;::::2;::::0;-1:-1:-1;;18264:61:1::2;::::0;18290:5;;::::2;::::0;-1:-1:-1;;;18264:61:1::2;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18250:75;;18347:11;18339:39;;;::::0;-1:-1:-1;;;;;18339:39:1;;::::2;::::0;::::2;;;:::i;:::-;18393:5;::::0;:26:::2;::::0;-1:-1:-1;;;;;18393:26:1;;-1:-1:-1;;;;;18393:5:1;;::::2;::::0;:10:::2;::::0;:26:::2;::::0;18404:1;;18407:3;;18412:6;;18393:26:::2;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;-1:-1:-1::0;;17967:3:1::2;::::0;;::::2;::::0;-1:-1:-1;17930:500:1::2;::::0;-1:-1:-1;;;;;17930:500:1::2;;;18509:65;18516:7;:14:::0;:18;18509:65:::2;;18550:7;:13;;;;;;;;::::0;;;::::2;::::0;;-1:-1:-1;;18550:13:1;;;;;;;-1:-1:-1;;;;;;18550:13:1::2;::::0;;;;;18509:65:::2;;;19198:5;::::0;:25:::2;::::0;-1:-1:-1;;;;;19198:25:1;;-1:-1:-1;;;;;19198:5:1;;::::2;::::0;:19:::2;::::0;:25:::2;::::0;-1:-1:-1;;19198:25:1::2;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;19234:29;19249:13;19234:14;:29::i;:::-;19273:41;19288:10;19300:13;19273:14;:41::i;:::-;-1:-1:-1::0;1655:1:17::1;2524:7;:22:::0;16562:2759:1:o;1405:210:16:-;905:6;;-1:-1:-1;;;;;905:6:16;915:10;905:20;897:51;;;;-1:-1:-1;;;;;897:51:16;;;;;;;:::i;:::-;-1:-1:-1;;;;;1483:22:16;::::1;1475:51;;;::::0;-1:-1:-1;;;;;1475:51:16;;::::1;::::0;::::1;;;:::i;:::-;1563:6;::::0;1542:38:::1;::::0;-1:-1:-1;;;;;1542:38:16;;::::1;::::0;1563:6:::1;::::0;1542:38:::1;::::0;1563:6:::1;::::0;1542:38:::1;1591:6;:17:::0;;-1:-1:-1;;;;;;1591:17:16::1;-1:-1:-1::0;;;;;1591:17:16;;;::::1;::::0;;;::::1;::::0;;1405:210::o;37791:197:1:-;37920:4;1695:1:17;2770:7;;:19;;2762:48;;;;-1:-1:-1;;;;;2762:48:17;;;;;;;:::i;:::-;4300:5:1::1;::::0;-1:-1:-1;;;;;4300:5:1::1;4284:56;;;::::0;-1:-1:-1;;;;;4284:56:1;;::::1;::::0;::::1;;;:::i;:::-;37947:5:::2;::::0;:34:::2;::::0;-1:-1:-1;;;;;37947:34:1;;-1:-1:-1;;;;;37947:5:1;;::::2;::::0;:27:::2;::::0;:34:::2;::::0;37975:5;;37947:34:::2;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;8899:87:4:-:0;8972:7;8965:14;;;;;;;;;;;;;-1:-1:-1;;8965:14:4;;;;;;;;;;;;;;;;;;;;;;;;;;8940:13;;8965:14;;8972:7;;8965:14;;;8972:7;8965:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8899:87;:::o;19878:518:1:-;4121:38;;4138:10;;4129:7;;;-1:-1:-1;;;;;;4129:7:1;;4121:38;;4129:7;4150:8;;4121:38;:::i;:::-;;;;;;;;1695:1:17::1;2249:7;;:19;;2241:43;;;::::0;-1:-1:-1;;;;;2241:43:17;;::::1;::::0;::::1;;;:::i;:::-;1695:1;2353:7;:18:::0;905:6:16::2;::::0;-1:-1:-1;;;;;905:6:16::2;915:10;905:20;897:51;;;::::0;-1:-1:-1;;;;;897:51:16;;::::2;::::0;::::2;;;:::i;:::-;4300:5:1::3;::::0;-1:-1:-1;;;;;4300:5:1::3;4284:56;;;::::0;-1:-1:-1;;;;;4284:56:1;;::::3;::::0;::::3;;;:::i;:::-;20049:6:::4;:23:::0;;;::::4;;;20041:64;;;::::0;-1:-1:-1;;;;;20041:64:1;;::::4;::::0;::::4;;;:::i;:::-;20224:11;::::0;:16;20216:57:::4;;;::::0;-1:-1:-1;;;;;20216:57:1;;::::4;::::0;::::4;;;:::i;:::-;20365:5;::::0;20329:60:::4;::::0;-1:-1:-1;;;;;20329:60:1;;:16:::4;::::0;:29:::4;::::0;:60:::4;::::0;20359:4:::4;::::0;-1:-1:-1;;;;;20365:5:1;;::::4;::::0;20372;;20379:9;;20329:60:::4;;;:::i;1836:34::-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;38586:119::-;38673:25;38586:119;:::o;38952:::-;39039:25;38952:119;:::o;2238:51:4:-;;;;;;;;;;;;;-1:-1:-1;;;;;2238:51:4;;;;;:::o;5040:63:1:-;5101:2;5040:63;:::o;6831:221:4:-;6908:4;-1:-1:-1;;;;;6932:23:4;;6924:52;;;;-1:-1:-1;;;;;6924:52:4;;;;;;;:::i;:::-;6987:36;6993:10;7005:9;7016:6;6987:5;:36::i;:::-;-1:-1:-1;7041:4:4;6831:221;;;;:::o;28065:1281:1:-;4121:38;;4138:10;;4129:7;;;-1:-1:-1;;;;;;4129:7:1;;4121:38;;4129:7;4150:8;;4121:38;:::i;:::-;;;;;;;;1695:1:17::1;2249:7;;:19;;2241:43;;;::::0;-1:-1:-1;;;;;2241:43:17;;::::1;::::0;::::1;;;:::i;:::-;1695:1;2353:7;:18:::0;4300:5:1::2;::::0;-1:-1:-1;;;;;4300:5:1::2;4284:56;;;::::0;-1:-1:-1;;;;;4284:56:1;;::::2;::::0;::::2;;;:::i;:::-;28600:5:::3;::::0;28473:300:::3;::::0;-1:-1:-1;;;;;28473:300:1;;28385:12:::3;::::0;;;28439:30:::3;::::0;28473:16:::3;::::0;:25:::3;::::0;:300:::3;::::0;28547:4:::3;::::0;-1:-1:-1;;;;;28600:5:1::3;::::0;28654:12;;28715:13;;;;28473:300:::3;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::3;;;;;;;;;;;;::::0;::::3;;;;;;;;;;;;;;;;;::::0;;::::3;-1:-1:-1::0;;28473:300:1::3;::::0;::::3;;::::0;::::3;::::0;;;::::3;::::0;::::3;:::i;:::-;28384:389;;;;;;28784:40;28799:10;28811:12;28784:14;:40::i;:::-;28857:8;::::0;28834:42:::3;::::0;-1:-1:-1;;;;;28857:8:1::3;28868:7:::0;28834:14:::3;:42::i;:::-;28886:31;28901:15;28886:14;:31::i;:::-;29036:5;::::0;:24:::3;::::0;;-1:-1:-1;;;;;29036:24:1;;;;29006:27:::3;::::0;-1:-1:-1;;;;;29036:5:1::3;::::0;-1:-1:-1;;29036:24:1::3;::::0;;::::3;::::0;:5:::3;::::0;:24;;;;;;;:5;:24;::::3;;::::0;::::3;;;;::::0;::::3;;;;;;;;;;;;::::0;::::3;;;;;;;;;;;;;;;;;::::0;;::::3;-1:-1:-1::0;;29036:24:1::3;::::0;::::3;;::::0;::::3;::::0;;;::::3;::::0;::::3;:::i;:::-;29006:54;;29076:6;29071:269;29092:10;:17;29088:1;:21;29071:269;;;29130:9;29142:10;29153:1;29142:13;;;;;;;;;;;;;;29130:25;;29169:19;29191:16;29208:1;29191:19;;;;;;;;;::::0;;::::3;::::0;;;;;;;-1:-1:-1;;;29191:19:1;;-1:-1:-1;;;;;;29230:38:1;::::3;::::0;29238:10:::3;::::0;-1:-1:-1;;;;;;;;29253:14:1::3;29230:38;;;;;;:::i;:::-;;;;;;;;29283:46;29299:1;29302:10;29314:14;29283:15;:46::i;:::-;-1:-1:-1::0;;29111:3:1::3;;29071:269;;1763:19:::0;;;-1:-1:-1;;;;;1763:19:1;;:::o;24748:403::-;4121:38;;4138:10;;4129:7;;;-1:-1:-1;;;;;;4129:7:1;;4121:38;;4129:7;4150:8;;4121:38;:::i;:::-;;;;;;;;1695:1:17::1;2249:7;;:19;;2241:43;;;::::0;-1:-1:-1;;;;;2241:43:17;;::::1;::::0;::::1;;;:::i;:::-;1695:1;2353:7;:18:::0;905:6:16::2;::::0;-1:-1:-1;;;;;905:6:16::2;915:10;905:20;897:51;;;::::0;-1:-1:-1;;;;;897:51:16;;::::2;::::0;::::2;;;:::i;:::-;4300:5:1::3;::::0;-1:-1:-1;;;;;4300:5:1::3;4284:56;;;::::0;-1:-1:-1;;;;;4284:56:1;;::::3;::::0;::::3;;;:::i;:::-;24891:6:::4;:25:::0;;;::::4;;;24883:66;;;::::0;-1:-1:-1;;;;;24883:66:1;;::::4;::::0;::::4;;;:::i;:::-;25067:5;::::0;25086:25:::4;::::0;25005:139:::4;::::0;-1:-1:-1;;;;;25005:139:1;;:16:::4;::::0;:30:::4;::::0;:139:::4;::::0;25049:4:::4;::::0;-1:-1:-1;;;;;25067:5:1::4;::::0;25086:25;25125:9:::4;::::0;25005:139:::4;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::4;;;;;;;;;;;;::::0;::::4;;;;;-1:-1:-1::0;;1655:1:17::1;2524:7;:22:::0;-1:-1:-1;;24748:403:1:o;12875:3027::-;4121:38;;4138:10;;4129:7;;;-1:-1:-1;;;;;;4129:7:1;;4121:38;;4129:7;4150:8;;4121:38;:::i;:::-;;;;;;;;1695:1:17::1;2249:7;;:19;;2241:43;;;::::0;-1:-1:-1;;;;;2241:43:17;;::::1;::::0;::::1;;;:::i;:::-;1695:1;2353:7;:18:::0;13102:5:1::2;::::0;-1:-1:-1;;;;;13102:5:1::2;13094:28:::0;13086:55:::2;;;::::0;-1:-1:-1;;;;;13086:55:1;;::::2;::::0;::::2;;;:::i;:::-;13175:1;13159:13;:17;13151:45;;;::::0;-1:-1:-1;;;;;13151:45:1;;::::2;::::0;::::2;;;:::i;:::-;1223:2:18;13215:30:1;:82;;13207:135;;;::::0;-1:-1:-1;;;;;13207:135:1;;::::2;::::0;::::2;;;:::i;:::-;13388:30;13360:24;:58;;13352:119;;;::::0;-1:-1:-1;;;;;13352:119:1;;::::2;::::0;::::2;;;:::i;:::-;1281:2:18;13489:24:1;:72;;13481:128;;;::::0;-1:-1:-1;;;;;13481:128:1;;::::2;::::0;::::2;;;:::i;:::-;13620:31;:64:::0;;;13694:25:::2;:52:::0;;;14040:8:::2;::::0;:19:::2;::::0;;-1:-1:-1;;;;;14040:19:1;;;;-1:-1:-1;;;;;14040:8:1;;::::2;::::0;:17:::2;::::0;:19:::2;::::0;;::::2;::::0;::::2;::::0;;;;;;;;;-1:-1:-1;14040:8:1;:19;::::2;;::::0;::::2;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14032:5;:27:::0;;-1:-1:-1;;;;;;14032:27:1::2;-1:-1:-1::0;;;;;14032:27:1;;::::2;;::::0;;;;14171:16:::2;::::0;;-1:-1:-1;;;;;14171:16:1;;;;:5;;;::::2;::::0;:14:::2;::::0;:16:::2;::::0;;::::2;::::0;::::2;::::0;;;;;;;;:5;:16;::::2;;::::0;::::2;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:21:::0;14163:54:::2;;;::::0;-1:-1:-1;;;;;14163:54:1;;::::2;::::0;::::2;;;:::i;:::-;14459:5;::::0;14476:8:::2;::::0;14459:26:::2;::::0;-1:-1:-1;;;;;14459:26:1;;-1:-1:-1;;;;;14459:5:1;;::::2;::::0;-1:-1:-1;;14459:26:1::2;::::0;::::2;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;-1:-1:-1::0;;14814:6:1::2;:19:::0;;;::::2;;;14810:73;::::0;-1:-1:-1;14810:73:1::2;::::0;-1:-1:-1;14810:73:1::2;14849:7;:23:::0;;;14810:73:::2;14898:6;14893:645;14914:7;:14:::0;14910:18;::::2;14893:645;;;14949:9;14961:7;14969:1;14961:10;;;;;;;;;::::0;;;::::2;::::0;;::::2;::::0;14996:14:::2;:17:::0;;-1:-1:-1;;;;;14961:10:1;;::::2;::::0;-1:-1:-1;14996:14:1;15011:1;;14996:17;::::2;;;;;;;;;;;;;14985:28;;15027:11;15041:13;15055:1;15041:16;;;;;;;;;::::0;;;::::2;::::0;;::::2;::::0;15091:54:::2;::::0;-1:-1:-1;;;;;15091:54:1;;15041:16;;-1:-1:-1;;;;;;15091:22:1;::::2;::::0;-1:-1:-1;;15091:54:1::2;::::0;15114:10:::2;::::0;15134:4:::2;::::0;15141:3;;15091:54:::2;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15072:73;;15167:11;15159:39;;;::::0;-1:-1:-1;;;;;15159:39:1;;::::2;::::0;::::2;;;:::i;:::-;15253:5;::::0;15227:61:::2;::::0;-1:-1:-1;;;;;15227:61:1;;-1:-1:-1;;;;;15227:17:1;;::::2;::::0;-1:-1:-1;;15227:61:1::2;::::0;15253:5;;::::2;::::0;-1:-1:-1;;;15227:61:1::2;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15213:75;;15310:11;15302:39;;;::::0;-1:-1:-1;;;;;15302:39:1;;::::2;::::0;::::2;;;:::i;:::-;15501:5;::::0;:26:::2;::::0;-1:-1:-1;;;;;15501:26:1;;-1:-1:-1;;;;;15501:5:1;;::::2;::::0;:10:::2;::::0;:26:::2;::::0;15512:1;;15515:3;;15520:6;;15501:26:::2;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;-1:-1:-1::0;;14930:3:1::2;::::0;;::::2;::::0;-1:-1:-1;14893:645:1::2;::::0;-1:-1:-1;;;;;14893:645:1::2;;;15704:65;15711:7;:14:::0;:18;15704:65:::2;;15745:7;:13;;;;;;;;::::0;;;::::2;::::0;;-1:-1:-1;;15745:13:1;;;;;;;-1:-1:-1;;;;;;15745:13:1::2;::::0;;;;;15704:65:::2;;;15779:5;::::0;:25:::2;::::0;-1:-1:-1;;;;;15779:25:1;;-1:-1:-1;;;;;15779:5:1;;::::2;::::0;:19:::2;::::0;:25:::2;::::0;-1:-1:-1;;15779:25:1::2;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;15815:29;15830:13;15815:14;:29::i;:::-;15854:41;15869:10;15881:13;15854:14;:41::i;35591:314::-:0;905:6:16;;-1:-1:-1;;;;;905:6:16;915:10;905:20;897:51;;;;-1:-1:-1;;;;;897:51:16;;;;;;;:::i;:::-;1695:1:17::1;2249:7;;:19;;2241:43;;;::::0;-1:-1:-1;;;;;2241:43:17;;::::1;::::0;::::1;;;:::i;:::-;1695:1;2353:7;:18:::0;4121:38:1::2;::::0;4138:10:::2;::::0;4129:7:::2;::::0;::::2;-1:-1:-1::0;;;;;;4129:7:1::2;::::0;4121:38:::2;::::0;4129:7;4150:8:::2;::::0;4121:38:::2;:::i;:::-;;;;;;;;35728:6:::3;:22:::0;;;::::3;;;35720:59;;;::::0;-1:-1:-1;;;;;35720:59:1;;::::3;::::0;::::3;;;:::i;:::-;-1:-1:-1::0;;;;;35797:22:1;::::3;35789:54;;;::::0;-1:-1:-1;;;;;35789:54:1;;::::3;::::0;::::3;;;:::i;:::-;-1:-1:-1::0;;;;;35854:37:1::3;;::::0;;;:27:::3;:37;::::0;;;;:44;;-1:-1:-1;;35854:44:1::3;-1:-1:-1::0;35854:44:1;;::::3;::::0;;;2524:7:17::1;:22:::0;35591:314:1:o;5170:293:4:-;5327:10;5244:4;5316:22;;;:10;:22;;;;;;;;-1:-1:-1;;;;;5316:31:4;;;;;;;;;;5294:62;;5349:6;5294:21;:62::i;:::-;5271:10;5260:22;;;;:10;:22;;;;;;;;-1:-1:-1;;;;;5260:31:4;;;;;;;;;;;:96;;;5372:62;;5260:31;;5372:62;;5260:96;;:31;;-1:-1:-1;5260:22:4;-1:-1:-1;;;;;5372:62:4;;;5260:96;5372:62;:::i;3489:139::-;-1:-1:-1;;;;;3595:17:4;;;3572:4;3595:17;;;-1:-1:-1;3595:17:4;;;;;;;;:26;;;;;;;;;;;;;3489:139::o;22844:677:1:-;4121:38;;4138:10;;4129:7;;;-1:-1:-1;;;;;;4129:7:1;;4121:38;;4129:7;4150:8;;4121:38;:::i;:::-;;;;;;;;1695:1:17::1;2249:7;;:19;;2241:43;;;::::0;-1:-1:-1;;;;;2241:43:17;;::::1;::::0;::::1;;;:::i;:::-;1695:1;2353:7;:18:::0;4300:5:1::2;::::0;-1:-1:-1;;;;;4300:5:1::2;4284:56;;;::::0;-1:-1:-1;;;;;4284:56:1;;::::2;::::0;::::2;;;:::i;:::-;22967:6:::3;:23:::0;;;::::3;;;22959:64;;;::::0;-1:-1:-1;;;;;22959:64:1;;::::3;::::0;::::3;;;:::i;:::-;23134:11;::::0;23245:9:::3;::::0;23229:12:::3;:25;23225:71;;23284:1;23270:11;:15:::0;23225:71:::3;23393:5;::::0;23443:9:::3;::::0;23351:163:::3;::::0;-1:-1:-1;;;;;23351:163:1;;:16:::3;::::0;:28:::3;::::0;:163:::3;::::0;-1:-1:-1;;;;;23393:5:1;;::::3;::::0;23412:17;;23443:9;23466:13:::3;::::0;23493:11:::3;::::0;23351:163:::3;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::3;;;;;;;;;;;;::::0;::::3;;;;36063:405:::0;905:6:16;;-1:-1:-1;;;;;905:6:16;915:10;905:20;897:51;;;;-1:-1:-1;;;;;897:51:16;;;;;;;:::i;:::-;1695:1:17::1;2249:7;;:19;;2241:43;;;::::0;-1:-1:-1;;;;;2241:43:17;;::::1;::::0;::::1;;;:::i;:::-;1695:1;2353:7;:18:::0;4121:38:1::2;::::0;4138:10:::2;::::0;4129:7:::2;::::0;::::2;-1:-1:-1::0;;;;;;4129:7:1::2;::::0;4121:38:::2;::::0;4129:7;4150:8:::2;::::0;4121:38:::2;:::i;:::-;;;;;;;;36208:6:::3;:22:::0;;;::::3;;;36200:59;;;::::0;-1:-1:-1;;;;;36200:59:1;;::::3;::::0;::::3;;;:::i;:::-;-1:-1:-1::0;;;;;36277:37:1;::::3;;::::0;;;:27:::3;:37;::::0;;;;;::::3;;36269:72;;;::::0;-1:-1:-1;;;;;36269:72:1;;::::3;::::0;::::3;;;:::i;:::-;-1:-1:-1::0;;;;;36359:22:1;::::3;36351:54;;;::::0;-1:-1:-1;;;;;36351:54:1;;::::3;::::0;::::3;;;:::i;:::-;-1:-1:-1::0;;;;;36416:37:1::3;36456:5;36416:37:::0;;;:27:::3;:37;::::0;;;;:45;;-1:-1:-1;;36416:45:1::3;::::0;;-1:-1:-1;2524:7:17::1;:22:::0;36063:405:1:o;9392:173::-;4121:38;;9511:4;;4138:10;;4129:7;;-1:-1:-1;;;;;;4129:7:1;;4121:38;;9511:4;;4150:8;;4121:38;:::i;:::-;;;;;;;;1695:1:17::1;2249:7;;:19;;2241:43;;;::::0;-1:-1:-1;;;;;2241:43:17;;::::1;::::0;::::1;;;:::i;:::-;1695:1;2353:7;:18:::0;4300:5:1::2;::::0;-1:-1:-1;;;;;4300:5:1::2;4284:56;;;::::0;-1:-1:-1;;;;;4284:56:1;;::::2;::::0;::::2;;;:::i;:::-;9538:5:::3;::::0;:20:::3;::::0;;-1:-1:-1;;;;;9538:20:1;;;;-1:-1:-1;;;;;9538:5:1;;::::3;::::0;:18:::3;::::0;:20:::3;::::0;;::::3;::::0;::::3;::::0;;;;;;;;;:5;:20;::::3;;::::0;::::3;;;;::::0;::::3;;;;;;;;;;;;::::0;::::3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9531:27;;1655:1:17::1;2524:7;:22:::0;9392:173:1;:::o;1098:195:19:-;1151:4;1168:6;1176:19;1199:14;1208:1;1211;1199:8;:14::i;:::-;1167:46;;;;1232:14;1231:15;1223:45;;;;-1:-1:-1;;;;;1223:45:19;;;;;;;:::i;:::-;-1:-1:-1;1285:1:19;1098:195;-1:-1:-1;;;1098:195:19:o;41210:481:1:-;4300:5;;-1:-1:-1;;;;;4300:5:1;4284:56;;;;-1:-1:-1;;;;;4284:56:1;;;;;;;:::i;:::-;41412:5:::1;::::0;:23:::1;::::0;-1:-1:-1;;;;;41412:23:1;;41392:17:::1;::::0;-1:-1:-1;;;;;41412:5:1::1;::::0;-1:-1:-1;;41412:23:1::1;::::0;41429:5;;41412:23:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;41464:5;::::0;:34:::1;::::0;-1:-1:-1;;;;;41464:34:1;;41392:43;;-1:-1:-1;41445:16:1::1;::::0;-1:-1:-1;;;;;41464:5:1;;::::1;::::0;:27:::1;::::0;:34:::1;::::0;41492:5;;41464:34:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;41508:5;::::0;41445:53;;-1:-1:-1;;;;;;41508:5:1::1;:12;41521:5:::0;41528:43:::1;41550:12:::0;41564:6;41528:21:::1;:43::i;:::-;41508:77;::::0;-1:-1:-1;;;41508:77:1::1;::::0;::::1;;::::0;;::::1;::::0;;;41573:11;;41508:77:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;41608:34:1::1;::::0;-1:-1:-1;;;;;41608:34:1;;41596:9:::1;::::0;-1:-1:-1;;;;;;41608:22:1;::::1;::::0;-1:-1:-1;;;41608:34:1::1;::::0;41631:2;;41635:6;;41608:34:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;41596:46;;41660:4;41652:32;;;::::0;-1:-1:-1;;;;;41652:32:1;;::::1;::::0;::::1;;;:::i;:::-;4350:1;;;41210:481:::0;;;:::o;11457:112:4:-;11523:39;11537:4;11544:9;11555:6;11523:5;:39::i;10308:464::-;10619:4;10602:23;;;;:8;:23;;;;;;10580:54;;10627:6;10580:21;:54::i;:::-;10571:4;10554:23;;;;:8;:23;;;;;:80;;;;10683:14;10661:45;;10699:6;10661:21;:45::i;:::-;10644:14;:62;;;10722:43;;10739:4;;-1:-1:-1;;;;;;;;;;;10722:43:4;;;10758:6;;10722:43;:::i;:::-;;;;;;;;10308:464;:::o;10876:483::-;-1:-1:-1;;;;;11194:16:4;;;;;;-1:-1:-1;11194:16:4;;;;;;11172:47;;11212:6;11172:21;:47::i;:::-;-1:-1:-1;;;;;11153:16:4;;;;;;;-1:-1:-1;11153:16:4;;;;;;:66;;;;11273:19;;;;;;;11251:50;;11294:6;11251:21;:50::i;:::-;-1:-1:-1;;;;;11229:19:4;;;;;;;-1:-1:-1;11229:19:4;;;;;;;;:72;;;;11317:35;;11229:19;;11317:35;;;;11229:19;;-1:-1:-1;11229:19:4;-1:-1:-1;;;;;11317:35:4;;;11345:6;;11317:35;:::i;:::-;;;;;;;;10876:483;;;:::o;9877:265::-;9989:4;9972:23;;;;:8;:23;;;;;;9950:54;;9997:6;9950:21;:54::i;:::-;9941:4;9924:23;;;;:8;:23;;;;;:80;;;;10053:14;10031:45;;10069:6;10031:21;:45::i;:::-;10014:14;:62;;;10092:43;;10121:4;;10014:14;-1:-1:-1;;;;;;;;;;;10092:43:4;;;10128:6;;10092:43;:::i;40581:504:1:-;4300:5;;-1:-1:-1;;;;;4300:5:1;4284:56;;;;-1:-1:-1;;;;;4284:56:1;;;;;;;:::i;:::-;40785:5:::1;::::0;:23:::1;::::0;-1:-1:-1;;;;;40785:23:1;;40765:17:::1;::::0;-1:-1:-1;;;;;40785:5:1::1;::::0;-1:-1:-1;;40785:23:1::1;::::0;40802:5;;40785:23:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;40837:5;::::0;:34:::1;::::0;-1:-1:-1;;;;;40837:34:1;;40765:43;;-1:-1:-1;40818:16:1::1;::::0;-1:-1:-1;;;;;40837:5:1;;::::1;::::0;:27:::1;::::0;:34:::1;::::0;40865:5;;40837:34:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;40894:55;::::0;-1:-1:-1;;;;;40894:55:1;;40818:53;;-1:-1:-1;40882:9:1::1;::::0;-1:-1:-1;;;;;40894:26:1;::::1;::::0;::::1;::::0;:55:::1;::::0;40921:4;;40935::::1;::::0;40942:6;;40894:55:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;40882:67;;40967:4;40959:32;;;::::0;-1:-1:-1;;;;;40959:32:1;;::::1;::::0;::::1;;;:::i;:::-;41001:5;::::0;-1:-1:-1;;;;;41001:5:1::1;:12;41014:5:::0;41021:43:::1;41043:12:::0;41057:6;41021:21:::1;:43::i;:::-;41001:77;::::0;-1:-1:-1;;;41001:77:1::1;::::0;::::1;;::::0;;::::1;::::0;;;41066:11;;41001:77:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;4350:1;;;40581:504:::0;;;:::o;11667:106:4:-;11730:36;11736:6;11752:4;11759:6;11730:5;:36::i;647:153:19:-;700:4;725:5;;;748:6;;;;740:35;;;;-1:-1:-1;;;;;740:35:19;;;;;;;:::i;1623:194::-;1680:4;1686;1711:1;1706;:6;1702:109;;-1:-1:-1;;1736:5:19;;;1743;1728:21;;1702:109;-1:-1:-1;;1788:5:19;;;1795:4;1702:109;1623:194;;;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;1049:352;;;1179:3;1172:4;1164:6;1160:17;1156:27;1146:2;;-1:-1;;1187:12;1146:2;-1:-1;1217:20;;1257:18;1246:30;;1243:2;;;-1:-1;;1279:12;1243:2;1323:4;1315:6;1311:17;1299:29;;1374:3;1323:4;;1358:6;1354:17;1315:6;1340:32;;1337:41;1334:2;;;1391:1;;1381:12;1427:722;;1555:3;1548:4;1540:6;1536:17;1532:27;1522:2;;-1:-1;;1563:12;1522:2;1603:6;1597:13;1625:80;1640:64;1697:6;1640:64;:::i;:::-;1625:80;:::i;:::-;1733:21;;;1616:89;-1:-1;1777:4;1790:14;;;;1765:17;;;1879;;;1870:27;;;;1867:36;-1:-1;1864:2;;;1916:1;;1906:12;1864:2;1941:1;1926:217;1951:6;1948:1;1945:13;1926:217;;;2978:13;;2019:61;;2094:14;;;;2122;;;;1973:1;1966:9;1926:217;;;1930:14;;;;;1515:634;;;;:::o;3041:241::-;;3145:2;3133:9;3124:7;3120:23;3116:32;3113:2;;;-1:-1;;3151:12;3113:2;85:6;72:20;97:33;124:5;97:33;:::i;3289:366::-;;;3410:2;3398:9;3389:7;3385:23;3381:32;3378:2;;;-1:-1;;3416:12;3378:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;3468:63;-1:-1;3568:2;3607:22;;72:20;97:33;72:20;97:33;:::i;:::-;3576:63;;;;3372:283;;;;;:::o;3662:491::-;;;;3800:2;3788:9;3779:7;3775:23;3771:32;3768:2;;;-1:-1;;3806:12;3768:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;3858:63;-1:-1;3958:2;3997:22;;72:20;97:33;72:20;97:33;:::i;:::-;3762:391;;3966:63;;-1:-1;;;4066:2;4105:22;;;;2830:20;;3762:391::o;4160:366::-;;;4281:2;4269:9;4260:7;4256:23;4252:32;4249:2;;;-1:-1;;4287:12;4249:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;4339:63;4439:2;4478:22;;;;2830:20;;-1:-1;;;4243:283::o;4533:491::-;;;;4671:2;4659:9;4650:7;4646:23;4642:32;4639:2;;;-1:-1;;4677:12;4639:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;4729:63;4829:2;4868:22;;2830:20;;-1:-1;4937:2;4976:22;;;2830:20;;4633:391;-1:-1;;;4633:391::o;5031:392::-;;5171:2;;5159:9;5150:7;5146:23;5142:32;5139:2;;;-1:-1;;5177:12;5139:2;5228:17;5222:24;5266:18;5258:6;5255:30;5252:2;;;-1:-1;;5288:12;5252:2;5375:22;;422:4;410:17;;406:27;-1:-1;396:2;;-1:-1;;437:12;396:2;477:6;471:13;499:80;514:64;571:6;514:64;:::i;499:80::-;607:21;;;664:14;;;;639:17;;;753;;;744:27;;;;741:36;-1:-1;738:2;;;-1:-1;;780:12;738:2;-1:-1;806:10;;800:217;825:6;822:1;819:13;800:217;;;226:6;220:13;238:33;265:5;238:33;:::i;:::-;893:61;;847:1;840:9;;;;;968:14;;;;996;;800:217;;;-1:-1;5308:99;5133:290;-1:-1;;;;;;;5133:290::o;5430:647::-;;;;;5603:2;5591:9;5582:7;5578:23;5574:32;5571:2;;;-1:-1;;5609:12;5571:2;5667:17;5654:31;5705:18;5697:6;5694:30;5691:2;;;-1:-1;;5727:12;5691:2;5765:80;5837:7;5828:6;5817:9;5813:22;5765:80;:::i;:::-;5747:98;;;;-1:-1;5882:2;5921:22;;2830:20;;5990:2;6029:22;2830:20;;-1:-1;5565:512;-1:-1;;;;5565:512::o;6084:392::-;;6224:2;6212:9;6203:7;6199:23;6195:32;6192:2;;;-1:-1;;6230:12;6192:2;6281:17;6275:24;6319:18;6311:6;6308:30;6305:2;;;-1:-1;;6341:12;6305:2;6371:89;6452:7;6443:6;6432:9;6428:22;6371:89;:::i;:::-;6361:99;6186:290;-1:-1;;;;6186:290::o;6483:235::-;;6584:2;6572:9;6563:7;6559:23;6555:32;6552:2;;;-1:-1;;6590:12;6552:2;2234:6;2221:20;2246:30;2270:5;2246:30;:::i;6725:257::-;;6837:2;6825:9;6816:7;6812:23;6808:32;6805:2;;;-1:-1;;6843:12;6805:2;2369:6;2363:13;2381:30;2405:5;2381:30;:::i;6989:293::-;;7119:2;7107:9;7098:7;7094:23;7090:32;7087:2;;;-1:-1;;7125:12;7087:2;2522:6;2516:13;2534:48;2576:5;2534:48;:::i;7289:273::-;;7409:2;7397:9;7388:7;7384:23;7380:32;7377:2;;;-1:-1;;7415:12;7377:2;2690:6;2677:20;57752:1;57745:5;57742:12;57732:2;;-1:-1;;57758:12;7569:241;;7673:2;7661:9;7652:7;7648:23;7644:32;7641:2;;;-1:-1;;7679:12;7641:2;-1:-1;2830:20;;7635:175;-1:-1;7635:175::o;7817:263::-;;7932:2;7920:9;7911:7;7907:23;7903:32;7900:2;;;-1:-1;;7938:12;7900:2;-1:-1;2978:13;;7894:186;-1:-1;7894:186::o;8087:522::-;;;;8243:2;8231:9;8222:7;8218:23;8214:32;8211:2;;;-1:-1;;8249:12;8211:2;2843:6;2830:20;8301:63;;8429:2;8418:9;8414:18;8401:32;8453:18;8445:6;8442:30;8439:2;;;-1:-1;;8475:12;8439:2;8513:80;8585:7;8576:6;8565:9;8561:22;8513:80;:::i;:::-;8205:404;;8495:98;;-1:-1;8495:98;;-1:-1;;;;8205:404::o;8616:528::-;;;8773:2;8761:9;8752:7;8748:23;8744:32;8741:2;;;-1:-1;;8779:12;8741:2;2984:6;2978:13;8831:74;;8963:2;8952:9;8948:18;8942:25;8987:18;8979:6;8976:30;8973:2;;;-1:-1;;9009:12;8973:2;9039:89;9120:7;9111:6;9100:9;9096:22;9039:89;:::i;:::-;9029:99;;;8735:409;;;;;:::o;9151:399::-;;;9283:2;9271:9;9262:7;9258:23;9254:32;9251:2;;;-1:-1;;9289:12;9251:2;-1:-1;;2978:13;;9452:2;9502:22;;;2978:13;;;;;-1:-1;9245:305::o;9557:664::-;;;;9731:2;9719:9;9710:7;9706:23;9702:32;9699:2;;;-1:-1;;9737:12;9699:2;2984:6;2978:13;9789:74;;9900:2;9954:9;9950:22;2978:13;9908:74;;10040:2;10029:9;10025:18;10019:25;10064:18;10056:6;10053:30;10050:2;;;-1:-1;;10086:12;10050:2;10116:89;10197:7;10188:6;10177:9;10173:22;10116:89;:::i;:::-;10106:99;;;9693:528;;;;;:::o;10228:491::-;;;;10366:2;10354:9;10345:7;10341:23;10337:32;10334:2;;;-1:-1;;10372:12;10334:2;-1:-1;;2830:20;;;10524:2;10563:22;;2830:20;;-1:-1;10632:2;10671:22;;;2830:20;;10328:391;-1:-1;10328:391::o;11352:483::-;51829:19;;;11352:483;-1:-1;;;;;11616:78;;11613:2;;;-1:-1;;11697:12;11613:2;51878:4;11732:6;11728:17;54702:6;54697:3;51878:4;51873:3;51869:14;54679:30;54740:16;;;;51878:4;54740:16;54733:27;;;-1:-1;54740:16;;11492:343;-1:-1;11492:343::o;11874:733::-;;12069:5;51419:12;51841:6;51836:3;51829:19;51878:4;;51873:3;51869:14;12081:101;;51253:3;-1:-1;51243:14;51878:4;-1:-1;51272:18;-1:-1;12289:296;12314:6;12311:1;12308:13;12289:296;;;56316:11;;24065:18;;10896:14;;;;12336:1;51676:14;;;;12329:9;12289:296;;;-1:-1;12591:10;;12003:604;-1:-1;;;;;12003:604::o;12615:104::-;52596:13;52589:21;12680:34;;12674:45::o;13869:162::-;57242:1;57235:5;57232:12;57222:2;;57248:9;57222:2;13962:64;;13956:75::o;26051:222::-;-1:-1;;;;;52942:54;;;;11144:37;;26178:2;26163:18;;26149:124::o;26280:460::-;-1:-1;;;;;52942:54;;;11003:58;;52942:54;;;;26643:2;26628:18;;11144:37;26726:2;26711:18;;24065;;;;26471:2;26456:18;;26442:298::o;27198:333::-;-1:-1;;;;;52942:54;;;;11144:37;;27517:2;27502:18;;24065;27353:2;27338:18;;27324:207::o;27538:444::-;-1:-1;;;;;52942:54;;;;11144:37;;27885:2;27870:18;;24065;;;;27968:2;27953:18;;24065;27721:2;27706:18;;27692:290::o;27989:210::-;52596:13;;52589:21;12680:34;;28110:2;28095:18;;28081:118::o;28206:708::-;52596:13;;52589:21;12680:34;;52596:13;;52589:21;28590:2;28575:18;;12680:34;52596:13;;52589:21;28667:2;28652:18;;12680:34;52596:13;52589:21;28744:2;28729:18;;12680:34;52596:13;52589:21;28821:3;28806:19;;12680:34;52596:13;52589:21;28899:3;28884:19;;12680:34;28437:3;28422:19;;28408:506::o;28921:326::-;;29076:2;29097:17;29090:47;51841:6;29076:2;29065:9;29061:18;51829:19;54702:6;54697:3;51869:14;29065:9;51869:14;54679:30;54740:16;;;51869:14;54740:16;;;54733:27;;;;56424:7;56408:14;;;-1:-1;;56404:28;13110:39;;;29047:200;-1:-1;29047:200::o;29254:568::-;-1:-1;;;;;52942:54;;;13273:81;;52942:54;;;29717:2;29702:18;;13273:81;52942:54;;;29808:2;29793:18;;11144:37;29491:2;29476:18;;29462:360::o;29829:688::-;-1:-1;;;;;52942:54;;;13273:81;;52942:54;;;30321:2;30306:18;;13273:81;52942:54;;30412:2;30397:18;;11144:37;30503:2;30488:18;;24065;;;;30094:3;30079:19;;30065:452::o;30524:808::-;-1:-1;;;;;52942:54;;;13273:81;;52942:54;;;31044:2;31029:18;;13273:81;52942:54;;;;31135:2;31120:18;;11144:37;31226:2;31211:18;;24065;;;;31317:3;31302:19;;24065:18;;;;-1:-1;30802:19;;30788:544::o;31339:856::-;-1:-1;;;;;52942:54;;;13273:81;;52942:54;;31891:2;31876:18;;13273:81;31982:2;31967:18;;24065;;;31664:3;32019:2;32004:18;;31997:48;;;-1:-1;;32059:126;;31649:19;;32171:6;32163;32059:126;:::i;:::-;32051:134;31635:560;-1:-1;;;;;;;31635:560::o;32202:734::-;-1:-1;;;;;52942:54;;;13273:81;;52942:54;;;;32717:2;32702:18;;13273:81;32808:2;32793:18;;24065;32922:2;32907:18;;24065;;;;32490:3;32475:19;;32461:475::o;33467:792::-;-1:-1;;;;;52942:54;;;13273:81;;52942:54;;;;33948:2;33933:18;;11144:37;34039:2;34024:18;;24065;;;;34130:2;34115:18;;24065;34244:3;34229:19;;24065:18;;;;-1:-1;33737:19;;33723:536::o;34266:1080::-;;11627:66;52953:42;;;;52512:5;52942:54;13280:3;13273:81;24077:5;34858:2;34847:9;34843:18;24065;34639:3;34895:2;34884:9;34880:18;34873:48;34935:126;34639:3;34628:9;34624:19;35047:6;35039;34935:126;:::i;:::-;35148:2;35133:18;;24065;;;;-1:-1;35239:3;35224:19;;24065:18;;;;35331:3;35316:19;;;24065:18;34927:134;34610:736;-1:-1;;;;34610:736::o;35353:1030::-;;11627:66;52953:42;;;;52512:5;52942:54;13280:3;13273:81;24077:5;35905:2;35894:9;35890:18;24065;24077:5;35996:2;35985:9;35981:18;24065;35709:3;36033:2;36022:9;36018:18;36011:48;36073:113;35709:3;35698:9;35694:19;36172:6;36073:113;:::i;:::-;36235:9;36229:4;36225:20;36219:3;36208:9;36204:19;36197:49;36260:113;36368:4;36359:6;36260:113;:::i;:::-;36252:121;35680:703;-1:-1;;;;;;;;35680:703::o;36390:310::-;;36537:2;;36558:17;36551:47;14183:5;51549:12;51841:6;36537:2;36526:9;36522:18;51829:19;-1:-1;54847:101;54861:6;54858:1;54855:13;54847:101;;;54928:11;;;;;54922:18;54909:11;;;51869:14;54909:11;54902:39;54876:10;;54847:101;;;54963:6;54960:1;54957:13;54954:2;;;-1:-1;51869:14;55019:6;36526:9;55010:16;;55003:27;54954:2;-1:-1;56424:7;56408:14;-1:-1;;56404:28;14341:39;;;;51869:14;14341:39;;36508:192;-1:-1;;;36508:192::o;36707:416::-;36907:2;36921:47;;;14617:2;36892:18;;;51829:19;14653:20;51869:14;;;14633:41;14693:12;;;36878:245::o;37130:416::-;37330:2;37344:47;;;14944:2;37315:18;;;51829:19;14980:30;51869:14;;;14960:51;15030:12;;;37301:245::o;37553:416::-;37753:2;37767:47;;;37738:18;;;51829:19;15317:34;51869:14;;;15297:55;15371:12;;;37724:245::o;37976:416::-;38176:2;38190:47;;;15622:2;38161:18;;;51829:19;15658:26;51869:14;;;15638:47;15704:12;;;38147:245::o;38399:416::-;38599:2;38613:47;;;15955:2;38584:18;;;51829:19;15991:28;51869:14;;;15971:49;16039:12;;;38570:245::o;38822:416::-;39022:2;39036:47;;;16290:2;39007:18;;;51829:19;16326:17;51869:14;;;16306:38;16363:12;;;38993:245::o;39245:416::-;39445:2;39459:47;;;16614:2;39430:18;;;51829:19;16650:22;51869:14;;;16630:43;16692:12;;;39416:245::o;39668:416::-;39868:2;39882:47;;;16943:2;39853:18;;;51829:19;16979:18;51869:14;;;16959:39;17017:12;;;39839:245::o;40091:416::-;40291:2;40305:47;;;17268:2;40276:18;;;51829:19;17304:26;51869:14;;;17284:47;17350:12;;;40262:245::o;40514:416::-;40714:2;40728:47;;;17601:2;40699:18;;;51829:19;17637:30;51869:14;;;17617:51;17687:12;;;40685:245::o;40937:416::-;41137:2;41151:47;;;17938:2;41122:18;;;51829:19;17974:24;51869:14;;;17954:45;18018:12;;;41108:245::o;41360:416::-;41560:2;41574:47;;;18269:2;41545:18;;;51829:19;18305:17;51869:14;;;18285:38;18342:12;;;41531:245::o;41783:416::-;41983:2;41997:47;;;18593:2;41968:18;;;51829:19;18629:16;51869:14;;;18609:37;18665:12;;;41954:245::o;42206:416::-;42406:2;42420:47;;;18916:2;42391:18;;;51829:19;18952:29;51869:14;;;18932:50;19001:12;;;42377:245::o;42629:416::-;42829:2;42843:47;;;19252:2;42814:18;;;51829:19;-1:-1;;;;;51869:14;;;19268:34;19321:12;;;42800:245::o;43052:416::-;43252:2;43266:47;;;19572:2;43237:18;;;51829:19;19608:18;51869:14;;;19588:39;19646:12;;;43223:245::o;43475:416::-;43675:2;43689:47;;;19897:2;43660:18;;;51829:19;19933:21;51869:14;;;19913:42;19974:12;;;43646:245::o;43898:416::-;44098:2;44112:47;;;20225:2;44083:18;;;51829:19;20261:23;51869:14;;;20241:44;20304:12;;;44069:245::o;44321:416::-;44521:2;44535:47;;;20555:2;44506:18;;;51829:19;20591:22;51869:14;;;20571:43;20633:12;;;44492:245::o;44744:416::-;44944:2;44958:47;;;20884:2;44929:18;;;51829:19;20920:23;51869:14;;;20900:44;20963:12;;;44915:245::o;45167:416::-;45367:2;45381:47;;;21214:2;45352:18;;;51829:19;21250:24;51869:14;;;21230:45;21294:12;;;45338:245::o;45590:416::-;45790:2;45804:47;;;21545:2;45775:18;;;51829:19;21581:20;51869:14;;;21561:41;21621:12;;;45761:245::o;46013:416::-;46213:2;46227:47;;;21872:2;46198:18;;;51829:19;21908:29;51869:14;;;21888:50;21957:12;;;46184:245::o;46436:416::-;46636:2;46650:47;;;22208:2;46621:18;;;51829:19;22244:17;51869:14;;;22224:38;22281:12;;;46607:245::o;46859:416::-;47059:2;47073:47;;;22532:2;47044:18;;;51829:19;22568:23;51869:14;;;22548:44;22611:12;;;47030:245::o;47282:416::-;47482:2;47496:47;;;22862:2;47467:18;;;51829:19;22898;51869:14;;;22878:40;22937:12;;;47453:245::o;47705:416::-;47905:2;47919:47;;;23188:2;47890:18;;;51829:19;23224:18;51869:14;;;23204:39;23262:12;;;47876:245::o;48128:416::-;48328:2;48342:47;;;23513:2;48313:18;;;51829:19;23549:31;51869:14;;;23529:52;23600:12;;;48299:245::o;48551:416::-;48751:2;48765:47;;;23851:2;48736:18;;;51829:19;23887:30;51869:14;;;23867:51;23937:12;;;48722:245::o;48974:477::-;24389:23;;52323:4;52312:16;;;52596:13;52589:21;12680:34;;57132:6;57121:18;;52312:16;;52596:13;52589:21;24752:4;24743:14;;12680:34;56649:8;56638:20;;52312:16;;52596:13;52589:21;24949:4;24940:14;;12680:34;56767:10;56756:22;;52312:16;;52596:13;52589:21;25148:4;25139:14;;12680:34;49196:3;49181:19;;;24389:23;25285:65;25344:4;25335:14;;56887:12;56876:24;;52312:16;;25285:65;:::i;:::-;25478;25537:4;25532:3;25528:14;52323:4;57009:14;25462:9;56998:26;52312:16;25478:65;:::i;:::-;;;49346:95;49436:3;49425:9;49421:19;49412:6;49346:95;:::i;49458:222::-;24065:18;;;49585:2;49570:18;;49556:124::o;49687:333::-;24065:18;;;50006:2;49991:18;;24065;49842:2;49827:18;;49813:207::o;50027:214::-;52323:4;52312:16;;;;26004:35;;50150:2;50135:18;;50121:120::o;50248:256::-;50310:2;50304:9;50336:17;;;50411:18;50396:34;;50432:22;;;50393:62;50390:2;;;50468:1;;50458:12;50390:2;50310;50477:22;50288:216;;-1:-1;50288:216::o;50511:304::-;;50670:18;50662:6;50659:30;50656:2;;;-1:-1;;50692:12;50656:2;-1:-1;50737:4;50725:17;;;50790:15;;50593:222::o;57271:117::-;-1:-1;;;;;52942:54;;57330:35;;57320:2;;57379:1;;57369:12;57395:111;57476:5;52596:13;52589:21;57454:5;57451:32;57441:2;;57497:1;;57487:12", + "source": "// SPDX-License-Identifier: GPL-3.0-or-later\npragma solidity ^0.6.6;\n\n// Needed to handle structures externally\npragma experimental ABIEncoderV2;\n\n// Imports\n\nimport \"./IBFactory.sol\";\nimport \"./PCToken.sol\";\nimport \"./utils/BalancerReentrancyGuard.sol\";\nimport \"./utils/BalancerOwnable.sol\";\n\n// Interfaces\n\n// Libraries\nimport { RightsManager } from \"../libraries/RightsManager.sol\";\nimport \"../libraries/SmartPoolManager.sol\";\n\n// Contracts\n\n/**\n * @author Balancer Labs\n * @title Smart Pool with customizable features\n * @notice PCToken is the \"Balancer Smart Pool\" token (transferred upon finalization)\n * @dev Rights are defined as follows (index values into the array)\n * 0: canPauseSwapping - can setPublicSwap back to false after turning it on\n * by default, it is off on initialization and can only be turned on\n * 1: canChangeSwapFee - can setSwapFee after initialization (by default, it is fixed at create time)\n * 2: canChangeWeights - can bind new token weights (allowed by default in base pool)\n * 3: canAddRemoveTokens - can bind/unbind tokens (allowed by default in base pool)\n * 4: canWhitelistLPs - can restrict LPs to a whitelist\n * 5: canChangeCap - can change the BSP cap (max # of pool tokens)\n *\n * Note that functions called on bPool and bFactory may look like internal calls,\n * but since they are contracts accessed through an interface, they are really external.\n * To make this explicit, we could write \"IBPool(address(bPool)).function()\" everywhere,\n * instead of \"bPool.function()\".\n */\ncontract ConfigurableRightsPool is PCToken, BalancerOwnable, BalancerReentrancyGuard {\n using BalancerSafeMath for uint;\n\n // State variables\n\n IBFactory public bFactory;\n IBPool public bPool;\n\n // Struct holding the rights configuration\n RightsManager.Rights public rights;\n\n // This is for adding a new (currently unbound) token to the pool\n // It's a two-step process: commitAddToken(), then applyAddToken()\n SmartPoolManager.NewToken private _newToken;\n\n // Fee is initialized on creation, and can be changed if permission is set\n // Only needed for temporary storage between construction and createPool\n // Thereafter, the swap fee should always be read from the underlying pool\n uint private _swapFee;\n\n // Store the list of tokens in the pool, and balances\n // NOTE that the token list is *only* used to store the pool tokens between\n // construction and createPool - thereafter, use the underlying BPool's list\n // (avoids synchronization issues)\n address[] private _tokens;\n uint[] private _startBalances;\n\n // For blockwise, automated weight updates\n // Move weights linearly from _startWeights to _newWeights,\n // between _startBlock and _endBlock\n uint private _startBlock;\n uint private _endBlock;\n uint[] private _startWeights;\n uint[] private _newWeights;\n\n // Enforce a minimum time between the start and end blocks\n uint private _minimumWeightChangeBlockPeriod;\n // Enforce a mandatory wait time between updates\n // This is also the wait time between committing and applying a new token\n uint private _addTokenTimeLockInBlocks;\n\n // Whitelist of LPs (if configured)\n mapping(address => bool) private _liquidityProviderWhitelist;\n\n // Cap on the pool size (i.e., # of tokens minted when joining)\n // Limits the risk of experimental pools; failsafe/backup for fixed-size pools\n uint private _bspCap;\n\n // Event declarations\n\n // Anonymous logger event - can only be filtered by contract address\n\n event LogCall(\n bytes4 indexed sig,\n address indexed caller,\n bytes data\n ) anonymous;\n\n event LogJoin(\n address indexed caller,\n address indexed tokenIn,\n uint tokenAmountIn\n );\n\n event LogExit(\n address indexed caller,\n address indexed tokenOut,\n uint tokenAmountOut\n );\n\n event CapChanged(\n address indexed caller,\n uint oldCap,\n uint newCap\n );\n\n // Modifiers\n\n modifier logs() {\n emit LogCall(msg.sig, msg.sender, msg.data);\n _;\n }\n\n // Mark functions that require delegation to the underlying Pool\n modifier needsBPool() {\n require(address(bPool) != address(0), \"ERR_NOT_CREATED\");\n _;\n }\n\n // Mark functions that mint pool tokens\n // (If right is not enabled, cap will be MAX_UINT, so check will always pass)\n modifier withinCap() {\n _;\n // Check after the function body runs\n require(this.totalSupply() <= _bspCap, \"ERR_CAP_LIMIT_REACHED\");\n }\n\n // Default values for these variables (used only in updateWeightsGradually), set in the constructor\n // Pools without permission to update weights cannot use them anyway, and should call\n // the default createPool() function.\n // To override these defaults, pass them into the overloaded createPool()\n uint public constant DEFAULT_MIN_WEIGHT_CHANGE_BLOCK_PERIOD = 10;\n uint public constant DEFAULT_ADD_TOKEN_TIME_LOCK_IN_BLOCKS = 10;\n\n // Function declarations\n\n /**\n * @notice Construct a new Configurable Rights Pool (wrapper around BPool)\n * @dev _tokens and _swapFee are only used for temporary storage between construction\n * and create pool, and should not be used thereafter! _tokens is destroyed in\n * createPool to prevent this, and _swapFee is kept in sync (defensively), but\n * should never be used except in this constructor and createPool()\n * @param factoryAddress - the BPoolFactory used to create the underlying pool\n * @param tokenSymbolString - Token symbol (named thus to avoid shadowing)\n * @param tokens - list of tokens to include\n * @param startBalances - initial token balances\n * @param startWeights - initial token weights\n * @param swapFee - initial swap fee (will set on the core pool after pool creation)\n * @param rightsStruct - Set of permissions we are assigning to this smart pool\n */\n constructor(\n address factoryAddress,\n string memory tokenSymbolString,\n address[] memory tokens,\n uint[] memory startBalances,\n uint[] memory startWeights,\n uint swapFee,\n RightsManager.Rights memory rightsStruct\n )\n public\n PCToken(tokenSymbolString)\n {\n // We don't have a pool yet; check now or it will fail later (in order of likelihood to fail)\n // (and be unrecoverable if they don't have permission set to change it)\n // Most likely to fail, so check first\n require(swapFee >= BalancerConstants.MIN_FEE, \"ERR_INVALID_SWAP_FEE\");\n require(swapFee <= BalancerConstants.MAX_FEE, \"ERR_INVALID_SWAP_FEE\");\n\n // Arrays must be parallel\n require(startBalances.length == tokens.length, \"ERR_START_BALANCES_MISMATCH\");\n require(startWeights.length == tokens.length, \"ERR_START_WEIGHTS_MISMATCH\");\n // Cannot have too many or too few - technically redundant, since BPool.bind() would fail later\n // But if we don't check now, we could have a useless contract with no way to create a pool\n\n require(tokens.length >= BalancerConstants.MIN_ASSET_LIMIT, \"ERR_TOO_FEW_TOKENS\");\n require(tokens.length <= BalancerConstants.MAX_ASSET_LIMIT, \"ERR_TOO_MANY_TOKENS\");\n // There are further possible checks (e.g., if they use the same token twice), but\n // we can let bind() catch things like that (i.e., not things that might reasonably work)\n\n bFactory = IBFactory(factoryAddress);\n rights = rightsStruct;\n _tokens = tokens;\n _startBalances = startBalances;\n _startWeights = startWeights;\n _swapFee = swapFee;\n _minimumWeightChangeBlockPeriod = DEFAULT_MIN_WEIGHT_CHANGE_BLOCK_PERIOD;\n _addTokenTimeLockInBlocks = DEFAULT_ADD_TOKEN_TIME_LOCK_IN_BLOCKS;\n // Initializing (unnecessarily) for documentation - 0 means no gradual weight change has been initiated\n _startBlock = 0;\n // By default, there is no cap (unlimited pool token minting)\n _bspCap = BalancerConstants.MAX_UINT;\n }\n\n // External functions\n\n /**\n * @notice Set the swap fee on the underlying pool\n * @dev Keep the local version and core in sync (see below)\n * bPool is a contract interface; function calls on it are external\n * @param swapFee in Wei\n */\n function setSwapFee(uint swapFee)\n external\n logs\n lock\n onlyOwner\n needsBPool\n virtual\n {\n require(rights.canChangeSwapFee, \"ERR_NOT_CONFIGURABLE_SWAP_FEE\");\n\n // Like the _token list, this is only needed between construction and createPool\n // The _token list is destroyed in createPool to prevent later use, but _swapFee\n // is just a uint, so keep it in sync defensively, but always read from the\n // underlying pool after it's created\n _swapFee = swapFee;\n\n // Underlying pool will check against min/max fee\n bPool.setSwapFee(swapFee);\n }\n\n /**\n * @notice Getter for the publicSwap field on the underlying pool\n * @dev nonReentrantView, because setPublicSwap is nonReentrant\n * bPool is a contract interface; function calls on it are external\n * @return Current value of isPublicSwap\n */\n function isPublicSwap()\n external\n logs\n lock\n needsBPool\n virtual\n returns (bool)\n {\n return bPool.isPublicSwap();\n }\n\n /**\n * @notice Getter for the cap\n * @return current value of the cap\n */\n function getCap()\n external\n lock\n returns (uint)\n {\n return _bspCap;\n }\n\n /**\n * @notice Set the cap (max # of pool tokens)\n * @dev _bspCap defaults in the constructor to unlimited\n * Can set to 0 (or anywhere below the current supply), to halt new investment\n * Prevent setting it before creating a pool, since createPool sets to intialSupply\n * (it does this to avoid an unlimited cap window between construction and createPool)\n * Therefore setting it before then has no effect, so should not be allowed\n * @param newCap - new value of the cap\n */\n function setCap(uint newCap)\n external\n logs\n lock\n needsBPool\n onlyOwner\n {\n require(rights.canChangeCap, \"ERR_CANNOT_CHANGE_CAP\");\n\n emit CapChanged(msg.sender, _bspCap, newCap);\n\n _bspCap = newCap;\n }\n\n /**\n * @notice Set the public swap flag on the underlying pool\n * @dev If this smart pool has canPauseSwapping enabled, we can turn publicSwap off if it's already on\n * Note that if they turn swapping off - but then finalize the pool - finalizing will turn the\n * swapping back on. They're not supposed to finalize the underlying pool... would defeat the\n * smart pool functions. (Only the owner can finalize the pool - which is this contract -\n * so there is no risk from outside.)\n *\n * bPool is a contract interface; function calls on it are external\n * @param publicSwap new value of the swap\n */\n function setPublicSwap(bool publicSwap)\n external\n logs\n lock\n onlyOwner\n needsBPool\n virtual\n {\n require(rights.canPauseSwapping, \"ERR_NOT_PAUSABLE_SWAP\");\n\n bPool.setPublicSwap(publicSwap);\n }\n\n // createPools functions exceed max lines, but many are requires; unavoidable\n /* solhint-disable function-max-lines */\n\n /**\n * @notice Create a new Smart Pool - and set the block period time parameters\n * @dev Initialize the swap fee to the value provided in the CRP constructor\n * Can be changed if the canChangeSwapFee permission is enabled\n * Time parameters will be fixed at these values\n *\n * If this contract doesn't have canChangeWeights permission - or you want to use the default\n * values, the block time arguments\n * are not needed, and you can just call the single-argument createPool()\n *\n * Code is duplicated in the overloaded createPool! If you change one, change the other!\n * Unfortunately I cannot call this.createPool(initialSupply) from the overloaded one,\n * because msg.sender will be different (contract address vs external account), and the\n * token transfers would fail\n * @param initialSupply starting token balance\n * @param minimumWeightChangeBlockPeriod - Enforce a minimum time between the start and end blocks\n * @param addTokenTimeLockInBlocks - Enforce a mandatory wait time between updates\n * This is also the wait time between committing and applying a new token\n */\n function createPool(\n uint initialSupply,\n uint minimumWeightChangeBlockPeriod,\n uint addTokenTimeLockInBlocks\n )\n external\n logs\n lock\n virtual\n {\n require(address(bPool) == address(0), \"ERR_IS_CREATED\");\n require(initialSupply > 0, \"ERR_INIT_SUPPLY\");\n\n require(minimumWeightChangeBlockPeriod >= BalancerConstants.MIN_WEIGHT_CHANGE_BLOCK_PERIOD,\n \"ERR_INVALID_BLOCK_PERIOD\");\n require(addTokenTimeLockInBlocks <= minimumWeightChangeBlockPeriod,\n \"ERR_INCONSISTENT_TOKEN_TIME_LOCK\");\n require(addTokenTimeLockInBlocks >= BalancerConstants.MIN_TOKEN_TIME_LOCK_PERIOD,\n \"ERR_INVALID_TOKEN_TIME_LOCK\");\n\n _minimumWeightChangeBlockPeriod = minimumWeightChangeBlockPeriod;\n _addTokenTimeLockInBlocks = addTokenTimeLockInBlocks;\n\n // There is technically reentrancy here, since we're making external calls and\n // then transferring tokens. However, the external calls are all to the underlying BPool\n\n // Deploy new BPool (bFactory and bPool are interfaces; all calls are external)\n bPool = bFactory.newBPool();\n\n // EXIT_FEE must always be zero, or ConfigurableRightsPool._pushUnderlying will fail\n require(bPool.EXIT_FEE() == 0, \"ERR_NONZERO_EXIT_FEE\");\n require(BalancerConstants.EXIT_FEE == 0, \"ERR_NONZERO_EXIT_FEE\");\n\n // Set fee to the initial value set in the constructor\n // Hereafter, read the swapFee from the underlying pool, not the local state variable\n bPool.setSwapFee(_swapFee);\n\n // If the controller can change the cap, initialize it to the initial supply\n // Defensive programming, so that there is no gap between creating the pool\n // (initialized to unlimited in the constructor), and setting the cap,\n // which they will presumably do if they have this right.\n if (rights.canChangeCap) {\n _bspCap = initialSupply;\n }\n\n for (uint i = 0; i < _tokens.length; i++) {\n address t = _tokens[i];\n uint bal = _startBalances[i];\n uint denorm = _startWeights[i];\n\n bool returnValue = IERC20(t).transferFrom(msg.sender, address(this), bal);\n require(returnValue, \"ERR_ERC20_FALSE\");\n\n returnValue = IERC20(t).approve(address(bPool), BalancerConstants.MAX_UINT);\n require(returnValue, \"ERR_ERC20_FALSE\");\n\n // Binding pushes a token to the end of the underlying pool's array\n // After binding, we discard the local _tokens array\n bPool.bind(t, bal, denorm);\n }\n\n // Destroy local storage token list to prevent use of it after createPool\n // Hereafter, the token list is maintained by the underlying pool\n while (_tokens.length > 0) {\n _tokens.pop();\n }\n\n bPool.setPublicSwap(true);\n\n _mintPoolShare(initialSupply);\n _pushPoolShare(msg.sender, initialSupply);\n }\n\n /**\n * @notice Create a new Smart Pool\n * @dev Initialize the swap fee to the value provided in the CRP constructor\n * Can be changed if the canChangeSwapFee permission is enabled\n * NB:\n * Code is duplicated in the overloaded createPool! If you change one, change the other!\n * Unfortunately I cannot call this.createPool(initialSupply) from the overloaded one,\n * because msg.sender will be different (contract address vs external account), and the\n * token transfers would fail. Overloading is tricky with external functions.\n * @param initialSupply starting token balance\n */\n function createPool(uint initialSupply)\n external\n logs\n lock\n virtual\n {\n require(address(bPool) == address(0), \"ERR_IS_CREATED\");\n require(initialSupply > 0, \"ERR_INIT_SUPPLY\");\n\n // There is technically reentrancy here, since we're making external calls and\n // then transferring tokens. However, the external calls are all to the underlying BPool\n\n // Deploy new BPool (bFactory and bPool are interfaces; all calls are external)\n bPool = bFactory.newBPool();\n\n // EXIT_FEE must always be zero, or ConfigurableRightsPool._pushUnderlying will fail\n require(bPool.EXIT_FEE() == 0, \"ERR_NONZERO_EXIT_FEE\");\n require(BalancerConstants.EXIT_FEE == 0, \"ERR_NONZERO_EXIT_FEE\");\n\n // Set fee to the initial value set in the constructor\n // Hereafter, read the swapFee from the underlying pool, not the local state variable\n bPool.setSwapFee(_swapFee);\n\n // If the controller can change the cap, initialize it to the initial supply\n // Defensive programming, so that there is no gap between creating the pool\n // (initialized to unlimited in the constructor), and setting the cap,\n // which they will presumably do if they have this right.\n if (rights.canChangeCap) {\n _bspCap = initialSupply;\n }\n\n for (uint i = 0; i < _tokens.length; i++) {\n address t = _tokens[i];\n uint bal = _startBalances[i];\n uint denorm = _startWeights[i];\n\n bool returnValue = IERC20(t).transferFrom(msg.sender, address(this), bal);\n require(returnValue, \"ERR_ERC20_FALSE\");\n\n returnValue = IERC20(t).approve(address(bPool), BalancerConstants.MAX_UINT);\n require(returnValue, \"ERR_ERC20_FALSE\");\n\n bPool.bind(t, bal, denorm);\n }\n\n // Clear local storage to prevent use of it after createPool\n while (_tokens.length > 0) {\n _tokens.pop();\n }\n\n // Do \"finalize\" things, but can't call bPool.finalize(), or it wouldn't let us rebind or do any\n // adjustments. The underlying pool has to remain unfinalized, but we want to mint the tokens\n // immediately. This is how a CRP differs from base Pool. Base Pool tokens are issued on finalize;\n // CRP pool tokens are issued on create.\n //\n // We really don't need a \"CRP level\" finalize. It is considered \"finalized\" on creation.\n // Since the underlying pool is never finalized, it is sufficient just to check that the pool exists,\n // and you can join it.\n bPool.setPublicSwap(true);\n\n _mintPoolShare(initialSupply);\n _pushPoolShare(msg.sender, initialSupply);\n }\n\n /* solhint-enable function-max-lines */\n\n /**\n * @notice Update the weight of an existing token\n * @dev Notice Balance is not an input (like with rebind on BPool) since we will require prices not to change\n * This is achieved by forcing balances to change proportionally to weights, so that prices don't change\n * If prices could be changed, this would allow the controller to drain the pool by arbing price changes\n * @param token - token to be reweighted\n * @param newWeight - new weight of the token\n */\n function updateWeight(address token, uint newWeight)\n external\n logs\n lock\n onlyOwner\n needsBPool\n virtual\n {\n require(rights.canChangeWeights, \"ERR_NOT_CONFIGURABLE_WEIGHTS\");\n\n // We don't want people to set weights manually if there's a block-based update in progress\n require(_startBlock == 0, \"ERR_NO_UPDATE_DURING_GRADUAL\");\n\n // Delegate to library to save space\n SmartPoolManager.updateWeight(this, bPool, token, newWeight);\n }\n\n /**\n * @notice Update weights in a predetermined way, between startBlock and endBlock,\n * through external calls to pokeWeights\n * @dev Must call pokeWeights at least once past the end for it to do the final update\n * and enable calling this again.\n * It is possible to call updateWeightsGradually during an update in some use cases\n * For instance, setting newWeights to currentWeights to stop the update where it is\n * @param newWeights - final weights we want to get to\n * @param startBlock - when weights should start to change\n * @param endBlock - when weights will be at their final values\n */\n function updateWeightsGradually(\n uint[] calldata newWeights,\n uint startBlock,\n uint endBlock\n )\n external\n logs\n lock\n onlyOwner\n needsBPool\n virtual\n {\n require(rights.canChangeWeights, \"ERR_NOT_CONFIGURABLE_WEIGHTS\");\n // After createPool, token list is maintained in the underlying BPool\n address[] memory poolTokens = bPool.getCurrentTokens();\n\n // Must specify weights for all tokens\n require(newWeights.length == poolTokens.length, \"ERR_START_WEIGHTS_MISMATCH\");\n\n // Delegate to library to save space\n\n // Library computes the startBlock, computes startWeights as the current\n // denormalized weights of the core pool tokens.\n (uint actualStartBlock,\n uint[] memory startWeights) = SmartPoolManager.updateWeightsGradually(\n bPool,\n _newToken,\n newWeights,\n startBlock,\n endBlock,\n _minimumWeightChangeBlockPeriod\n );\n _startBlock = actualStartBlock;\n _endBlock = endBlock;\n _newWeights = newWeights;\n\n for (uint i = 0; i < poolTokens.length; i++) {\n _startWeights[i] = startWeights[i];\n }\n }\n\n /**\n * @notice External function called to make the contract update weights according to plan\n * @dev Still works if we poke after the end of the period; also works if the weights don't change\n * Resets if we are poking beyond the end, so that we can do it again\n */\n function pokeWeights()\n external\n logs\n lock\n needsBPool\n virtual\n {\n require(rights.canChangeWeights, \"ERR_NOT_CONFIGURABLE_WEIGHTS\");\n\n // Don't modify state after external call (re-entrancy protection)\n uint currentStartBlock = _startBlock;\n // Reset to allow add/remove tokens, or manual weight updates\n if (block.number >= _endBlock) {\n _startBlock = 0;\n }\n\n // Delegate to library to save space\n SmartPoolManager.pokeWeights(\n bPool,\n currentStartBlock,\n _endBlock,\n _startWeights,\n _newWeights\n );\n }\n\n /**\n * @notice Schedule (commit) a token to be added; must call applyAddToken after a fixed\n * number of blocks to actually add the token\n * @dev Not sure about the naming here. Kind of reversed; I would think you would \"Apply\" to add\n * a token, then \"Commit\" it to actually do the binding.\n * @param token - the token to be added\n * @param balance - how much to be added\n * @param denormalizedWeight - the desired token weight\n */\n function commitAddToken(\n address token,\n uint balance,\n uint denormalizedWeight\n )\n external\n logs\n lock\n onlyOwner\n needsBPool\n virtual\n {\n require(rights.canAddRemoveTokens, \"ERR_CANNOT_ADD_REMOVE_TOKENS\");\n\n // Can't do this while a progressive update is happening\n require(_startBlock == 0, \"ERR_NO_UPDATE_DURING_GRADUAL\");\n\n // Delegate to library to save space\n SmartPoolManager.commitAddToken(\n bPool,\n token,\n balance,\n denormalizedWeight,\n _newToken\n );\n }\n\n /**\n * @notice Add the token previously committed (in commitAddToken) to the pool\n */\n function applyAddToken()\n external\n logs\n lock\n onlyOwner\n needsBPool\n virtual\n {\n require(rights.canAddRemoveTokens, \"ERR_CANNOT_ADD_REMOVE_TOKENS\");\n\n // Delegate to library to save space\n SmartPoolManager.applyAddToken(\n this,\n bPool,\n _addTokenTimeLockInBlocks,\n _newToken\n );\n }\n\n /**\n * @notice Remove a token from the pool\n * @dev bPool is a contract interface; function calls on it are external\n * @param token - token to remove\n */\n function removeToken(address token)\n external\n logs\n lock\n onlyOwner\n needsBPool\n {\n require(rights.canAddRemoveTokens, \"ERR_CANNOT_ADD_REMOVE_TOKENS\");\n // After createPool, token list is maintained in the underlying BPool\n address[] memory poolTokens = bPool.getCurrentTokens();\n\n require(poolTokens.length > BalancerConstants.MIN_ASSET_LIMIT, \"ERR_TOO_FEW_TOKENS\");\n require(!_newToken.isCommitted, \"ERR_REMOVE_WITH_ADD_PENDING\");\n\n // Delegate to library to save space\n SmartPoolManager.removeToken(\n this,\n bPool,\n token\n );\n }\n\n /**\n * @notice Join a pool\n * @dev Emits a LogJoin event (for each token)\n * bPool is a contract interface; function calls on it are external\n * @param poolAmountOut - number of pool tokens to receive\n * @param maxAmountsIn - Max amount of asset tokens to spend\n */\n function joinPool(uint poolAmountOut, uint[] calldata maxAmountsIn)\n external\n logs\n lock\n needsBPool\n withinCap\n {\n require(!rights.canWhitelistLPs || _liquidityProviderWhitelist[msg.sender],\n \"ERR_NOT_ON_WHITELIST\");\n\n // Delegate to library to save space\n\n // Library computes actualAmountsIn, and does many validations\n // Cannot call the push/pull/min from an external library for\n // any of these pool functions. Since msg.sender can be anybody,\n // they must be internal\n uint[] memory actualAmountsIn = SmartPoolManager.joinPool(\n this,\n bPool,\n poolAmountOut,\n maxAmountsIn\n );\n\n // After createPool, token list is maintained in the underlying BPool\n address[] memory poolTokens = bPool.getCurrentTokens();\n\n for (uint i = 0; i < poolTokens.length; i++) {\n address t = poolTokens[i];\n uint tokenAmountIn = actualAmountsIn[i];\n\n emit LogJoin(msg.sender, t, tokenAmountIn);\n\n _pullUnderlying(t, msg.sender, tokenAmountIn);\n }\n\n _mintPoolShare(poolAmountOut);\n _pushPoolShare(msg.sender, poolAmountOut);\n }\n\n /**\n * @notice Exit a pool - redeem pool tokens for underlying assets\n * @dev Emits a LogExit event for each token\n * bPool is a contract interface; function calls on it are external\n * @param poolAmountIn - amount of pool tokens to redeem\n * @param minAmountsOut - minimum amount of asset tokens to receive\n */\n function exitPool(uint poolAmountIn, uint[] calldata minAmountsOut)\n external\n logs\n lock\n needsBPool\n {\n // Delegate to library to save space\n\n // Library computes actualAmountsOut, and does many validations\n // Also computes the exitFee and pAiAfterExitFee\n (uint exitFee,\n uint pAiAfterExitFee,\n uint[] memory actualAmountsOut) = SmartPoolManager.exitPool(\n this,\n bPool,\n poolAmountIn,\n minAmountsOut\n );\n\n _pullPoolShare(msg.sender, poolAmountIn);\n _pushPoolShare(address(bFactory), exitFee);\n _burnPoolShare(pAiAfterExitFee);\n\n // After createPool, token list is maintained in the underlying BPool\n address[] memory poolTokens = bPool.getCurrentTokens();\n\n for (uint i = 0; i < poolTokens.length; i++) {\n address t = poolTokens[i];\n uint tokenAmountOut = actualAmountsOut[i];\n\n emit LogExit(msg.sender, t, tokenAmountOut);\n\n _pushUnderlying(t, msg.sender, tokenAmountOut);\n }\n }\n\n /**\n * @notice Join by swapping a fixed amount of an external token in (must be present in the pool)\n * System calculates the pool token amount\n * @dev emits a LogJoin event\n * @param tokenIn - which token we're transferring in\n * @param tokenAmountIn - amount of deposit\n * @param minPoolAmountOut - minimum of pool tokens to receive\n * @return poolAmountOut - amount of pool tokens minted and transferred\n */\n function joinswapExternAmountIn(\n address tokenIn,\n uint tokenAmountIn,\n uint minPoolAmountOut\n )\n external\n logs\n lock\n needsBPool\n withinCap\n returns (uint poolAmountOut)\n {\n require(!rights.canWhitelistLPs || _liquidityProviderWhitelist[msg.sender],\n \"ERR_NOT_ON_WHITELIST\");\n\n // Delegate to library to save space\n poolAmountOut = SmartPoolManager.joinswapExternAmountIn(\n this,\n bPool,\n tokenIn,\n tokenAmountIn,\n minPoolAmountOut\n );\n\n emit LogJoin(msg.sender, tokenIn, tokenAmountIn);\n\n _mintPoolShare(poolAmountOut);\n _pushPoolShare(msg.sender, poolAmountOut);\n _pullUnderlying(tokenIn, msg.sender, tokenAmountIn);\n\n return poolAmountOut;\n }\n\n /**\n * @notice Join by swapping an external token in (must be present in the pool)\n * To receive an exact amount of pool tokens out. System calculates the deposit amount\n * @dev emits a LogJoin event\n * @param tokenIn - which token we're transferring in (system calculates amount required)\n * @param poolAmountOut - amount of pool tokens to be received\n * @param maxAmountIn - Maximum asset tokens that can be pulled to pay for the pool tokens\n * @return tokenAmountIn - amount of asset tokens transferred in to purchase the pool tokens\n */\n function joinswapPoolAmountOut(\n address tokenIn,\n uint poolAmountOut,\n uint maxAmountIn\n )\n external\n logs\n lock\n needsBPool\n withinCap\n returns (uint tokenAmountIn)\n {\n require(!rights.canWhitelistLPs || _liquidityProviderWhitelist[msg.sender],\n \"ERR_NOT_ON_WHITELIST\");\n\n // Delegate to library to save space\n tokenAmountIn = SmartPoolManager.joinswapPoolAmountOut(\n this,\n bPool,\n tokenIn,\n poolAmountOut,\n maxAmountIn\n );\n\n emit LogJoin(msg.sender, tokenIn, tokenAmountIn);\n\n _mintPoolShare(poolAmountOut);\n _pushPoolShare(msg.sender, poolAmountOut);\n _pullUnderlying(tokenIn, msg.sender, tokenAmountIn);\n\n return tokenAmountIn;\n }\n\n /**\n * @notice Exit a pool - redeem a specific number of pool tokens for an underlying asset\n * Asset must be present in the pool, and will incur an EXIT_FEE (if set to non-zero)\n * @dev Emits a LogExit event for the token\n * @param tokenOut - which token the caller wants to receive\n * @param poolAmountIn - amount of pool tokens to redeem\n * @param minAmountOut - minimum asset tokens to receive\n * @return tokenAmountOut - amount of asset tokens returned\n */\n function exitswapPoolAmountIn(\n address tokenOut,\n uint poolAmountIn,\n uint minAmountOut\n )\n external\n logs\n lock\n needsBPool\n returns (uint tokenAmountOut)\n {\n // Delegate to library to save space\n\n // Calculates final amountOut, and the fee and final amount in\n (uint exitFee,\n uint amountOut) = SmartPoolManager.exitswapPoolAmountIn(\n this,\n bPool,\n tokenOut,\n poolAmountIn,\n minAmountOut\n );\n\n tokenAmountOut = amountOut;\n uint pAiAfterExitFee = BalancerSafeMath.bsub(poolAmountIn, exitFee);\n\n emit LogExit(msg.sender, tokenOut, tokenAmountOut);\n\n _pullPoolShare(msg.sender, poolAmountIn);\n _burnPoolShare(pAiAfterExitFee);\n _pushPoolShare(address(bFactory), exitFee);\n _pushUnderlying(tokenOut, msg.sender, tokenAmountOut);\n\n return tokenAmountOut;\n }\n\n /**\n * @notice Exit a pool - redeem pool tokens for a specific amount of underlying assets\n * Asset must be present in the pool\n * @dev Emits a LogExit event for the token\n * @param tokenOut - which token the caller wants to receive\n * @param tokenAmountOut - amount of underlying asset tokens to receive\n * @param maxPoolAmountIn - maximum pool tokens to be redeemed\n * @return poolAmountIn - amount of pool tokens redeemed\n */\n function exitswapExternAmountOut(\n address tokenOut,\n uint tokenAmountOut,\n uint maxPoolAmountIn\n )\n external\n logs\n lock\n needsBPool\n returns (uint poolAmountIn)\n {\n // Delegate to library to save space\n\n // Calculates final amounts in, accounting for the exit fee\n (uint exitFee,\n uint amountIn) = SmartPoolManager.exitswapExternAmountOut(\n this,\n bPool,\n tokenOut,\n tokenAmountOut,\n maxPoolAmountIn\n );\n\n poolAmountIn = amountIn;\n uint pAiAfterExitFee = BalancerSafeMath.bsub(poolAmountIn, exitFee);\n\n emit LogExit(msg.sender, tokenOut, tokenAmountOut);\n\n _pullPoolShare(msg.sender, poolAmountIn);\n _burnPoolShare(pAiAfterExitFee);\n _pushPoolShare(address(bFactory), exitFee);\n _pushUnderlying(tokenOut, msg.sender, tokenAmountOut);\n\n return poolAmountIn;\n }\n\n /**\n * @notice Add to the whitelist of liquidity providers (if enabled)\n * @param provider - address of the liquidity provider\n */\n function whitelistLiquidityProvider(address provider)\n external\n onlyOwner\n lock\n logs\n {\n require(rights.canWhitelistLPs, \"ERR_CANNOT_WHITELIST_LPS\");\n require(provider != address(0), \"ERR_INVALID_ADDRESS\");\n\n _liquidityProviderWhitelist[provider] = true;\n }\n\n /**\n * @notice Remove from the whitelist of liquidity providers (if enabled)\n * @param provider - address of the liquidity provider\n */\n function removeWhitelistedLiquidityProvider(address provider)\n external\n onlyOwner\n lock\n logs\n {\n require(rights.canWhitelistLPs, \"ERR_CANNOT_WHITELIST_LPS\");\n require(_liquidityProviderWhitelist[provider], \"ERR_LP_NOT_WHITELISTED\");\n require(provider != address(0), \"ERR_INVALID_ADDRESS\");\n\n _liquidityProviderWhitelist[provider] = false;\n }\n\n /**\n * @notice Check if an address is a liquidity provider\n * @dev If the whitelist feature is not enabled, anyone can provide liquidity (assuming finalized)\n * @return boolean value indicating whether the address can join a pool\n */\n function canProvideLiquidity(address provider)\n external\n view\n returns(bool)\n {\n if (rights.canWhitelistLPs) {\n return _liquidityProviderWhitelist[provider];\n }\n else {\n // Probably don't strictly need this (could just return true)\n // But the null address can't provide funds\n return provider != address(0);\n }\n }\n\n /**\n * @notice Getter for specific permissions\n * @dev value of the enum is just the 0-based index in the enumeration\n * For instance canPauseSwapping is 0; canChangeWeights is 2\n * @return token boolean true if we have the given permission\n */\n function hasPermission(RightsManager.Permissions permission)\n external\n view\n virtual\n returns(bool)\n {\n return RightsManager.hasPermission(rights, permission);\n }\n\n /**\n * @notice Get the denormalized weight of a token\n * @dev viewlock to prevent calling if it's being updated\n * @return token weight\n */\n function getDenormalizedWeight(address token)\n external\n view\n viewlock\n needsBPool\n returns (uint)\n {\n return bPool.getDenormalizedWeight(token);\n }\n\n /**\n * @notice Getter for the RightsManager contract\n * @dev Convenience function to get the address of the RightsManager library (so clients can check version)\n * @return address of the RightsManager library\n */\n function getRightsManagerVersion() external pure returns (address) {\n return address(RightsManager);\n }\n\n /**\n * @notice Getter for the BalancerSafeMath contract\n * @dev Convenience function to get the address of the BalancerSafeMath library (so clients can check version)\n * @return address of the BalancerSafeMath library\n */\n function getBalancerSafeMathVersion() external pure returns (address) {\n return address(BalancerSafeMath);\n }\n\n /**\n * @notice Getter for the SmartPoolManager contract\n * @dev Convenience function to get the address of the SmartPoolManager library (so clients can check version)\n * @return address of the SmartPoolManager library\n */\n function getSmartPoolManagerVersion() external pure returns (address) {\n return address(SmartPoolManager);\n }\n\n // Public functions\n\n // \"Public\" versions that can safely be called from SmartPoolManager\n // Allows only the contract itself to call them (not the controller or any external account)\n\n // withinCap is overkill here (will get called twice in normal operation)\n // Just defensive in case it somehow gets called from somewhere else\n function mintPoolShareFromLib(uint amount) public withinCap {\n require (msg.sender == address(this), \"ERR_NOT_CONTROLLER\");\n\n _mint(amount);\n }\n\n function pushPoolShareFromLib(address to, uint amount) public {\n require (msg.sender == address(this), \"ERR_NOT_CONTROLLER\");\n\n _push(to, amount);\n }\n\n function pullPoolShareFromLib(address from, uint amount) public {\n require (msg.sender == address(this), \"ERR_NOT_CONTROLLER\");\n\n _pull(from, amount);\n }\n\n function burnPoolShareFromLib(uint amount) public {\n require (msg.sender == address(this), \"ERR_NOT_CONTROLLER\");\n\n _burn(amount);\n }\n\n // Internal functions\n\n // Lint wants the function to have a leading underscore too\n /* solhint-disable private-vars-leading-underscore */\n\n // Accessor to allow subclasses to check the start block\n function getStartBlock() internal view returns (uint) {\n return _startBlock;\n }\n\n /* solhint-enable private-vars-leading-underscore */\n\n // Rebind BPool and pull tokens from address\n // bPool is a contract interface; function calls on it are external\n function _pullUnderlying(address erc20, address from, uint amount) internal needsBPool {\n // Gets current Balance of token i, Bi, and weight of token i, Wi, from BPool.\n uint tokenBalance = bPool.getBalance(erc20);\n uint tokenWeight = bPool.getDenormalizedWeight(erc20);\n\n bool xfer = IERC20(erc20).transferFrom(from, address(this), amount);\n require(xfer, \"ERR_ERC20_FALSE\");\n bPool.rebind(erc20, BalancerSafeMath.badd(tokenBalance, amount), tokenWeight);\n }\n\n // Rebind BPool and push tokens to address\n // bPool is a contract interface; function calls on it are external\n function _pushUnderlying(address erc20, address to, uint amount) internal needsBPool {\n // Gets current Balance of token i, Bi, and weight of token i, Wi, from BPool.\n uint tokenBalance = bPool.getBalance(erc20);\n uint tokenWeight = bPool.getDenormalizedWeight(erc20);\n bPool.rebind(erc20, BalancerSafeMath.bsub(tokenBalance, amount), tokenWeight);\n\n bool xfer = IERC20(erc20).transfer(to, amount);\n require(xfer, \"ERR_ERC20_FALSE\");\n }\n\n // Wrappers around corresponding core functions\n\n // withinCap is overkill here (will get called twice in normal operation)\n // Just defensive in case it somehow gets called from somewhere else\n function _mintPoolShare(uint amount) internal withinCap {\n _mint(amount);\n }\n\n function _pushPoolShare(address to, uint amount) internal {\n _push(to, amount);\n }\n\n function _pullPoolShare(address from, uint amount) internal {\n _pull(from, amount);\n }\n\n function _burnPoolShare(uint amount) internal {\n _burn(amount);\n }\n}\n", + "sourcePath": "/Users/fabien/WebstormProjects/balancer/configurable-rights-pool/contracts/ConfigurableRightsPool.sol", + "ast": { + "absolutePath": "/Users/fabien/WebstormProjects/balancer/configurable-rights-pool/contracts/ConfigurableRightsPool.sol", + "exportedSymbols": { + "ConfigurableRightsPool": [ + 2095 + ] + }, + "id": 2096, + "license": "GPL-3.0-or-later", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 121, + "literals": [ + "solidity", + "^", + "0.6", + ".6" + ], + "nodeType": "PragmaDirective", + "src": "45:23:1" + }, + { + "id": 122, + "literals": [ + "experimental", + "ABIEncoderV2" + ], + "nodeType": "PragmaDirective", + "src": "112:33:1" + }, + { + "absolutePath": "/Users/fabien/WebstormProjects/balancer/configurable-rights-pool/contracts/IBFactory.sol", + "file": "./IBFactory.sol", + "id": 123, + "nodeType": "ImportDirective", + "scope": 2096, + "sourceUnit": 2285, + "src": "159:25:1", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/Users/fabien/WebstormProjects/balancer/configurable-rights-pool/contracts/PCToken.sol", + "file": "./PCToken.sol", + "id": 124, + "nodeType": "ImportDirective", + "scope": 2096, + "sourceUnit": 2942, + "src": "185:23:1", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/Users/fabien/WebstormProjects/balancer/configurable-rights-pool/contracts/utils/BalancerReentrancyGuard.sol", + "file": "./utils/BalancerReentrancyGuard.sol", + "id": 125, + "nodeType": "ImportDirective", + "scope": 2096, + "sourceUnit": 8138, + "src": "209:45:1", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/Users/fabien/WebstormProjects/balancer/configurable-rights-pool/contracts/utils/BalancerOwnable.sol", + "file": "./utils/BalancerOwnable.sol", + "id": 126, + "nodeType": "ImportDirective", + "scope": 2096, + "sourceUnit": 8086, + "src": "255:37:1", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/Users/fabien/WebstormProjects/balancer/configurable-rights-pool/libraries/RightsManager.sol", + "file": "../libraries/RightsManager.sol", + "id": 128, + "nodeType": "ImportDirective", + "scope": 2096, + "sourceUnit": 8750, + "src": "322:63:1", + "symbolAliases": [ + { + "foreign": { + "argumentTypes": null, + "id": 127, + "name": "RightsManager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": null, + "src": "331:13:1", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + }, + "local": null + } + ], + "unitAlias": "" + }, + { + "absolutePath": "/Users/fabien/WebstormProjects/balancer/configurable-rights-pool/libraries/SmartPoolManager.sol", + "file": "../libraries/SmartPoolManager.sol", + "id": 129, + "nodeType": "ImportDirective", + "scope": 2096, + "sourceUnit": 10278, + "src": "386:43:1", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 131, + "name": "PCToken", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 2941, + "src": "1614:7:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_PCToken_$2941", + "typeString": "contract PCToken" + } + }, + "id": 132, + "nodeType": "InheritanceSpecifier", + "src": "1614:7:1" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 133, + "name": "BalancerOwnable", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 8085, + "src": "1623:15:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_BalancerOwnable_$8085", + "typeString": "contract BalancerOwnable" + } + }, + "id": 134, + "nodeType": "InheritanceSpecifier", + "src": "1623:15:1" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 135, + "name": "BalancerReentrancyGuard", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 8137, + "src": "1640:23:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_BalancerReentrancyGuard_$8137", + "typeString": "contract BalancerReentrancyGuard" + } + }, + "id": 136, + "nodeType": "InheritanceSpecifier", + "src": "1640:23:1" + } + ], + "contractDependencies": [ + 2393, + 2941, + 8085, + 8137 + ], + "contractKind": "contract", + "documentation": { + "id": 130, + "nodeType": "StructuredDocumentation", + "src": "445:1133:1", + "text": " @author Balancer Labs\n @title Smart Pool with customizable features\n @notice PCToken is the \"Balancer Smart Pool\" token (transferred upon finalization)\n @dev Rights are defined as follows (index values into the array)\n 0: canPauseSwapping - can setPublicSwap back to false after turning it on\n by default, it is off on initialization and can only be turned on\n 1: canChangeSwapFee - can setSwapFee after initialization (by default, it is fixed at create time)\n 2: canChangeWeights - can bind new token weights (allowed by default in base pool)\n 3: canAddRemoveTokens - can bind/unbind tokens (allowed by default in base pool)\n 4: canWhitelistLPs - can restrict LPs to a whitelist\n 5: canChangeCap - can change the BSP cap (max # of pool tokens)\n Note that functions called on bPool and bFactory may look like internal calls,\n but since they are contracts accessed through an interface, they are really external.\n To make this explicit, we could write \"IBPool(address(bPool)).function()\" everywhere,\n instead of \"bPool.function()\"." + }, + "fullyImplemented": true, + "id": 2095, + "linearizedBaseContracts": [ + 2095, + 8137, + 8085, + 2941, + 2393 + ], + "name": "ConfigurableRightsPool", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 139, + "libraryName": { + "contractScope": null, + "id": 137, + "name": "BalancerSafeMath", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 8529, + "src": "1676:16:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_BalancerSafeMath_$8529", + "typeString": "library BalancerSafeMath" + } + }, + "nodeType": "UsingForDirective", + "src": "1670:32:1", + "typeName": { + "id": 138, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1697:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + { + "constant": false, + "functionSelector": "0a165940", + "id": 141, + "mutability": "mutable", + "name": "bFactory", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2095, + "src": "1732:25:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBFactory_$2284", + "typeString": "contract IBFactory" + }, + "typeName": { + "contractScope": null, + "id": 140, + "name": "IBFactory", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 2284, + "src": "1732:9:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBFactory_$2284", + "typeString": "contract IBFactory" + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "b64ef17b", + "id": 143, + "mutability": "mutable", + "name": "bPool", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2095, + "src": "1763:19:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBPool_$2256", + "typeString": "contract IBPool" + }, + "typeName": { + "contractScope": null, + "id": 142, + "name": "IBPool", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 2256, + "src": "1763:6:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBPool_$2256", + "typeString": "contract IBPool" + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "980e8db6", + "id": 145, + "mutability": "mutable", + "name": "rights", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2095, + "src": "1836:34:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Rights_$8553_storage", + "typeString": "struct RightsManager.Rights" + }, + "typeName": { + "contractScope": null, + "id": 144, + "name": "RightsManager.Rights", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 8553, + "src": "1836:20:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Rights_$8553_storage_ptr", + "typeString": "struct RightsManager.Rights" + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 147, + "mutability": "mutable", + "name": "_newToken", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2095, + "src": "2018:43:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_NewToken_$8767_storage", + "typeString": "struct SmartPoolManager.NewToken" + }, + "typeName": { + "contractScope": null, + "id": 146, + "name": "SmartPoolManager.NewToken", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 8767, + "src": "2018:25:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_NewToken_$8767_storage_ptr", + "typeString": "struct SmartPoolManager.NewToken" + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 149, + "mutability": "mutable", + "name": "_swapFee", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2095, + "src": "2303:21:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 148, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "2303:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 152, + "mutability": "mutable", + "name": "_tokens", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2095, + "src": "2593:25:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 150, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2593:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 151, + "length": null, + "nodeType": "ArrayTypeName", + "src": "2593:9:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 155, + "mutability": "mutable", + "name": "_startBalances", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2095, + "src": "2624:29:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 153, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "2624:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 154, + "length": null, + "nodeType": "ArrayTypeName", + "src": "2624:6:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 157, + "mutability": "mutable", + "name": "_startBlock", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2095, + "src": "2812:24:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 156, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "2812:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 159, + "mutability": "mutable", + "name": "_endBlock", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2095, + "src": "2842:22:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 158, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "2842:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 162, + "mutability": "mutable", + "name": "_startWeights", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2095, + "src": "2870:28:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 160, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "2870:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 161, + "length": null, + "nodeType": "ArrayTypeName", + "src": "2870:6:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 165, + "mutability": "mutable", + "name": "_newWeights", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2095, + "src": "2904:26:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 163, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "2904:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 164, + "length": null, + "nodeType": "ArrayTypeName", + "src": "2904:6:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 167, + "mutability": "mutable", + "name": "_minimumWeightChangeBlockPeriod", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2095, + "src": "3000:44:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 166, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "3000:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 169, + "mutability": "mutable", + "name": "_addTokenTimeLockInBlocks", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2095, + "src": "3181:38:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 168, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "3181:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 173, + "mutability": "mutable", + "name": "_liquidityProviderWhitelist", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2095, + "src": "3266:60:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + }, + "typeName": { + "id": 172, + "keyType": { + "id": 170, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3274:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "3266:24:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + }, + "valueType": { + "id": 171, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3285:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 175, + "mutability": "mutable", + "name": "_bspCap", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2095, + "src": "3484:20:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 174, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "3484:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "private" + }, + { + "anonymous": true, + "documentation": null, + "id": 183, + "name": "LogCall", + "nodeType": "EventDefinition", + "parameters": { + "id": 182, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 177, + "indexed": true, + "mutability": "mutable", + "name": "sig", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 183, + "src": "3635:19:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 176, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "3635:6:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 179, + "indexed": true, + "mutability": "mutable", + "name": "caller", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 183, + "src": "3664:22:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 178, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3664:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 181, + "indexed": false, + "mutability": "mutable", + "name": "data", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 183, + "src": "3696:10:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 180, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3696:5:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3625:87:1" + }, + "src": "3612:111:1" + }, + { + "anonymous": false, + "documentation": null, + "id": 191, + "name": "LogJoin", + "nodeType": "EventDefinition", + "parameters": { + "id": 190, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 185, + "indexed": true, + "mutability": "mutable", + "name": "caller", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 191, + "src": "3752:22:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 184, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3752:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 187, + "indexed": true, + "mutability": "mutable", + "name": "tokenIn", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 191, + "src": "3784:23:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 186, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3784:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 189, + "indexed": false, + "mutability": "mutable", + "name": "tokenAmountIn", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 191, + "src": "3817:18:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 188, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "3817:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3742:99:1" + }, + "src": "3729:113:1" + }, + { + "anonymous": false, + "documentation": null, + "id": 199, + "name": "LogExit", + "nodeType": "EventDefinition", + "parameters": { + "id": 198, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 193, + "indexed": true, + "mutability": "mutable", + "name": "caller", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 199, + "src": "3871:22:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 192, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3871:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 195, + "indexed": true, + "mutability": "mutable", + "name": "tokenOut", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 199, + "src": "3903:24:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 194, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3903:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 197, + "indexed": false, + "mutability": "mutable", + "name": "tokenAmountOut", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 199, + "src": "3937:19:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 196, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "3937:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3861:101:1" + }, + "src": "3848:115:1" + }, + { + "anonymous": false, + "documentation": null, + "id": 207, + "name": "CapChanged", + "nodeType": "EventDefinition", + "parameters": { + "id": 206, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 201, + "indexed": true, + "mutability": "mutable", + "name": "caller", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 207, + "src": "3995:22:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 200, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3995:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 203, + "indexed": false, + "mutability": "mutable", + "name": "oldCap", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 207, + "src": "4027:11:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 202, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "4027:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 205, + "indexed": false, + "mutability": "mutable", + "name": "newCap", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 207, + "src": "4048:11:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 204, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "4048:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3985:80:1" + }, + "src": "3969:97:1" + }, + { + "body": { + "id": 219, + "nodeType": "Block", + "src": "4106:71:1", + "statements": [ + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 210, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "4129:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 211, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sig", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4129:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 212, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "4138:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 213, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4138:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 214, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "4150:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 215, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "data", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4150:8:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + ], + "id": 209, + "name": "LogCall", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 183, + "src": "4121:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_bytes4_$_t_address_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (bytes4,address,bytes memory)" + } + }, + "id": 216, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4121:38:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 217, + "nodeType": "EmitStatement", + "src": "4116:43:1" + }, + { + "id": 218, + "nodeType": "PlaceholderStatement", + "src": "4169:1:1" + } + ] + }, + "documentation": null, + "id": 220, + "name": "logs", + "nodeType": "ModifierDefinition", + "overrides": null, + "parameters": { + "id": 208, + "nodeType": "ParameterList", + "parameters": [], + "src": "4103:2:1" + }, + "src": "4090:87:1", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 236, + "nodeType": "Block", + "src": "4274:84:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 231, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 225, + "name": "bPool", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 143, + "src": "4300:5:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBPool_$2256", + "typeString": "contract IBPool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IBPool_$2256", + "typeString": "contract IBPool" + } + ], + "id": 224, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4292:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 223, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4292:7:1", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 226, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4292:14:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 229, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4318:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 228, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4310:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 227, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4310:7:1", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 230, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4310:10:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "4292:28:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552525f4e4f545f43524541544544", + "id": 232, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4322:17:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_66fb39878e9271a7ee5df591b338a555fbafeb1f2b5fc0642c2b1624b0fe6f60", + "typeString": "literal_string \"ERR_NOT_CREATED\"" + }, + "value": "ERR_NOT_CREATED" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_66fb39878e9271a7ee5df591b338a555fbafeb1f2b5fc0642c2b1624b0fe6f60", + "typeString": "literal_string \"ERR_NOT_CREATED\"" + } + ], + "id": 222, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "4284:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 233, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4284:56:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 234, + "nodeType": "ExpressionStatement", + "src": "4284:56:1" + }, + { + "id": 235, + "nodeType": "PlaceholderStatement", + "src": "4350:1:1" + } + ] + }, + "documentation": null, + "id": 237, + "name": "needsBPool", + "nodeType": "ModifierDefinition", + "overrides": null, + "parameters": { + "id": 221, + "nodeType": "ParameterList", + "parameters": [], + "src": "4271:2:1" + }, + "src": "4252:106:1", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 249, + "nodeType": "Block", + "src": "4511:137:1", + "statements": [ + { + "id": 239, + "nodeType": "PlaceholderStatement", + "src": "4521:1:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 245, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 241, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "4586:4:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ConfigurableRightsPool_$2095", + "typeString": "contract ConfigurableRightsPool" + } + }, + "id": 242, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "totalSupply", + "nodeType": "MemberAccess", + "referencedDeclaration": 2751, + "src": "4586:16:1", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$", + "typeString": "function () view external returns (uint256)" + } + }, + "id": 243, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4586:18:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "argumentTypes": null, + "id": 244, + "name": "_bspCap", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 175, + "src": "4608:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4586:29:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552525f4341505f4c494d49545f52454143484544", + "id": 246, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4617:23:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c24123ac77b7c60e3a3712bca729337b5ae473eae49195e34be7a874f3cd7109", + "typeString": "literal_string \"ERR_CAP_LIMIT_REACHED\"" + }, + "value": "ERR_CAP_LIMIT_REACHED" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_c24123ac77b7c60e3a3712bca729337b5ae473eae49195e34be7a874f3cd7109", + "typeString": "literal_string \"ERR_CAP_LIMIT_REACHED\"" + } + ], + "id": 240, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "4578:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 247, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4578:63:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 248, + "nodeType": "ExpressionStatement", + "src": "4578:63:1" + } + ] + }, + "documentation": null, + "id": 250, + "name": "withinCap", + "nodeType": "ModifierDefinition", + "overrides": null, + "parameters": { + "id": 238, + "nodeType": "ParameterList", + "parameters": [], + "src": "4508:2:1" + }, + "src": "4490:158:1", + "virtual": false, + "visibility": "internal" + }, + { + "constant": true, + "functionSelector": "f226b528", + "id": 253, + "mutability": "constant", + "name": "DEFAULT_MIN_WEIGHT_CHANGE_BLOCK_PERIOD", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2095, + "src": "4970:64:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 251, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "4970:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "3130", + "id": 252, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5032:2:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_10_by_1", + "typeString": "int_const 10" + }, + "value": "10" + }, + "visibility": "public" + }, + { + "constant": true, + "functionSelector": "a835a0de", + "id": 256, + "mutability": "constant", + "name": "DEFAULT_ADD_TOKEN_TIME_LOCK_IN_BLOCKS", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2095, + "src": "5040:63:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 254, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "5040:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "3130", + "id": 255, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5101:2:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_10_by_1", + "typeString": "int_const 10" + }, + "value": "10" + }, + "visibility": "public" + }, + { + "body": { + "id": 375, + "nodeType": "Block", + "src": "6389:1800:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 284, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 281, + "name": "swapFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 272, + "src": "6637:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 282, + "name": "BalancerConstants", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8223, + "src": "6648:17:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_BalancerConstants_$8223_$", + "typeString": "type(library BalancerConstants)" + } + }, + "id": 283, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "MIN_FEE", + "nodeType": "MemberAccess", + "referencedDeclaration": 8182, + "src": "6648:25:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6637:36:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552525f494e56414c49445f535741505f464545", + "id": 285, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6675:22:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_cd1668f9c57e6a7dfa3bdc4203196822fdfec281adf591c5ca185ebc2db842a9", + "typeString": "literal_string \"ERR_INVALID_SWAP_FEE\"" + }, + "value": "ERR_INVALID_SWAP_FEE" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_cd1668f9c57e6a7dfa3bdc4203196822fdfec281adf591c5ca185ebc2db842a9", + "typeString": "literal_string \"ERR_INVALID_SWAP_FEE\"" + } + ], + "id": 280, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "6629:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 286, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6629:69:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 287, + "nodeType": "ExpressionStatement", + "src": "6629:69:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 292, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 289, + "name": "swapFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 272, + "src": "6716:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 290, + "name": "BalancerConstants", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8223, + "src": "6727:17:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_BalancerConstants_$8223_$", + "typeString": "type(library BalancerConstants)" + } + }, + "id": 291, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "MAX_FEE", + "nodeType": "MemberAccess", + "referencedDeclaration": 8187, + "src": "6727:25:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6716:36:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552525f494e56414c49445f535741505f464545", + "id": 293, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6754:22:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_cd1668f9c57e6a7dfa3bdc4203196822fdfec281adf591c5ca185ebc2db842a9", + "typeString": "literal_string \"ERR_INVALID_SWAP_FEE\"" + }, + "value": "ERR_INVALID_SWAP_FEE" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_cd1668f9c57e6a7dfa3bdc4203196822fdfec281adf591c5ca185ebc2db842a9", + "typeString": "literal_string \"ERR_INVALID_SWAP_FEE\"" + } + ], + "id": 288, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "6708:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 294, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6708:69:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 295, + "nodeType": "ExpressionStatement", + "src": "6708:69:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 301, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 297, + "name": "startBalances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 267, + "src": "6831:13:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 298, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "6831:20:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 299, + "name": "tokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 264, + "src": "6855:6:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 300, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "6855:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6831:37:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552525f53544152545f42414c414e4345535f4d49534d41544348", + "id": 302, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6870:29:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_6b4288ec12dc44cb6f3f1fea87e9f964d4f16c5c11b2118209769221c3d24566", + "typeString": "literal_string \"ERR_START_BALANCES_MISMATCH\"" + }, + "value": "ERR_START_BALANCES_MISMATCH" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_6b4288ec12dc44cb6f3f1fea87e9f964d4f16c5c11b2118209769221c3d24566", + "typeString": "literal_string \"ERR_START_BALANCES_MISMATCH\"" + } + ], + "id": 296, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "6823:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 303, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6823:77:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 304, + "nodeType": "ExpressionStatement", + "src": "6823:77:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 310, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 306, + "name": "startWeights", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 270, + "src": "6918:12:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 307, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "6918:19:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 308, + "name": "tokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 264, + "src": "6941:6:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 309, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "6941:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6918:36:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552525f53544152545f574549474854535f4d49534d41544348", + "id": 311, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6956:28:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_2621dad9e42b67f637d979efad333e4d7c412f0b27bcffbae38120716d390931", + "typeString": "literal_string \"ERR_START_WEIGHTS_MISMATCH\"" + }, + "value": "ERR_START_WEIGHTS_MISMATCH" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_2621dad9e42b67f637d979efad333e4d7c412f0b27bcffbae38120716d390931", + "typeString": "literal_string \"ERR_START_WEIGHTS_MISMATCH\"" + } + ], + "id": 305, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "6910:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 312, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6910:75:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 313, + "nodeType": "ExpressionStatement", + "src": "6910:75:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 319, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 315, + "name": "tokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 264, + "src": "7208:6:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 316, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "7208:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 317, + "name": "BalancerConstants", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8223, + "src": "7225:17:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_BalancerConstants_$8223_$", + "typeString": "type(library BalancerConstants)" + } + }, + "id": 318, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "MIN_ASSET_LIMIT", + "nodeType": "MemberAccess", + "referencedDeclaration": 8206, + "src": "7225:33:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7208:50:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552525f544f4f5f4645575f544f4b454e53", + "id": 320, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7260:20:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c66fc8e373d3f5684badc6f480386803cc92f3179419beb5482d8d0d61d61093", + "typeString": "literal_string \"ERR_TOO_FEW_TOKENS\"" + }, + "value": "ERR_TOO_FEW_TOKENS" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_c66fc8e373d3f5684badc6f480386803cc92f3179419beb5482d8d0d61d61093", + "typeString": "literal_string \"ERR_TOO_FEW_TOKENS\"" + } + ], + "id": 314, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "7200:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 321, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7200:81:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 322, + "nodeType": "ExpressionStatement", + "src": "7200:81:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 328, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 324, + "name": "tokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 264, + "src": "7299:6:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 325, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "7299:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 326, + "name": "BalancerConstants", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8223, + "src": "7316:17:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_BalancerConstants_$8223_$", + "typeString": "type(library BalancerConstants)" + } + }, + "id": 327, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "MAX_ASSET_LIMIT", + "nodeType": "MemberAccess", + "referencedDeclaration": 8209, + "src": "7316:33:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7299:50:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552525f544f4f5f4d414e595f544f4b454e53", + "id": 329, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7351:21:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_dd26b33b4f358e59a830751664fb157416c486366f3f8195e5bc84e9e85aa325", + "typeString": "literal_string \"ERR_TOO_MANY_TOKENS\"" + }, + "value": "ERR_TOO_MANY_TOKENS" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_dd26b33b4f358e59a830751664fb157416c486366f3f8195e5bc84e9e85aa325", + "typeString": "literal_string \"ERR_TOO_MANY_TOKENS\"" + } + ], + "id": 323, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "7291:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 330, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7291:82:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 331, + "nodeType": "ExpressionStatement", + "src": "7291:82:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 336, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 332, + "name": "bFactory", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 141, + "src": "7573:8:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBFactory_$2284", + "typeString": "contract IBFactory" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 334, + "name": "factoryAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 259, + "src": "7594:14:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 333, + "name": "IBFactory", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2284, + "src": "7584:9:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IBFactory_$2284_$", + "typeString": "type(contract IBFactory)" + } + }, + "id": 335, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7584:25:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBFactory_$2284", + "typeString": "contract IBFactory" + } + }, + "src": "7573:36:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBFactory_$2284", + "typeString": "contract IBFactory" + } + }, + "id": 337, + "nodeType": "ExpressionStatement", + "src": "7573:36:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 340, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 338, + "name": "rights", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 145, + "src": "7619:6:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Rights_$8553_storage", + "typeString": "struct RightsManager.Rights storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 339, + "name": "rightsStruct", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 274, + "src": "7628:12:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Rights_$8553_memory_ptr", + "typeString": "struct RightsManager.Rights memory" + } + }, + "src": "7619:21:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Rights_$8553_storage", + "typeString": "struct RightsManager.Rights storage ref" + } + }, + "id": 341, + "nodeType": "ExpressionStatement", + "src": "7619:21:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 344, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 342, + "name": "_tokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 152, + "src": "7650:7:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 343, + "name": "tokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 264, + "src": "7660:6:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "src": "7650:16:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 345, + "nodeType": "ExpressionStatement", + "src": "7650:16:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 348, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 346, + "name": "_startBalances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 155, + "src": "7676:14:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage", + "typeString": "uint256[] storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 347, + "name": "startBalances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 267, + "src": "7693:13:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "src": "7676:30:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage", + "typeString": "uint256[] storage ref" + } + }, + "id": 349, + "nodeType": "ExpressionStatement", + "src": "7676:30:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 352, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 350, + "name": "_startWeights", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 162, + "src": "7716:13:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage", + "typeString": "uint256[] storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 351, + "name": "startWeights", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 270, + "src": "7732:12:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "src": "7716:28:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage", + "typeString": "uint256[] storage ref" + } + }, + "id": 353, + "nodeType": "ExpressionStatement", + "src": "7716:28:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 356, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 354, + "name": "_swapFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 149, + "src": "7754:8:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 355, + "name": "swapFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 272, + "src": "7765:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7754:18:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 357, + "nodeType": "ExpressionStatement", + "src": "7754:18:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 360, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 358, + "name": "_minimumWeightChangeBlockPeriod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 167, + "src": "7782:31:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 359, + "name": "DEFAULT_MIN_WEIGHT_CHANGE_BLOCK_PERIOD", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 253, + "src": "7816:38:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7782:72:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 361, + "nodeType": "ExpressionStatement", + "src": "7782:72:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 364, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 362, + "name": "_addTokenTimeLockInBlocks", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 169, + "src": "7864:25:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 363, + "name": "DEFAULT_ADD_TOKEN_TIME_LOCK_IN_BLOCKS", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 256, + "src": "7892:37:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7864:65:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 365, + "nodeType": "ExpressionStatement", + "src": "7864:65:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 368, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 366, + "name": "_startBlock", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 157, + "src": "8051:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 367, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8065:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "8051:15:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 369, + "nodeType": "ExpressionStatement", + "src": "8051:15:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 373, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 370, + "name": "_bspCap", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 175, + "src": "8146:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 371, + "name": "BalancerConstants", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8223, + "src": "8156:17:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_BalancerConstants_$8223_$", + "typeString": "type(library BalancerConstants)" + } + }, + "id": 372, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "MAX_UINT", + "nodeType": "MemberAccess", + "referencedDeclaration": 8222, + "src": "8156:26:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "8146:36:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 374, + "nodeType": "ExpressionStatement", + "src": "8146:36:1" + } + ] + }, + "documentation": { + "id": 257, + "nodeType": "StructuredDocumentation", + "src": "5140:921:1", + "text": " @notice Construct a new Configurable Rights Pool (wrapper around BPool)\n @dev _tokens and _swapFee are only used for temporary storage between construction\n and create pool, and should not be used thereafter! _tokens is destroyed in\n createPool to prevent this, and _swapFee is kept in sync (defensively), but\n should never be used except in this constructor and createPool()\n @param factoryAddress - the BPoolFactory used to create the underlying pool\n @param tokenSymbolString - Token symbol (named thus to avoid shadowing)\n @param tokens - list of tokens to include\n @param startBalances - initial token balances\n @param startWeights - initial token weights\n @param swapFee - initial swap fee (will set on the core pool after pool creation)\n @param rightsStruct - Set of permissions we are assigning to this smart pool" + }, + "id": 376, + "implemented": true, + "kind": "constructor", + "modifiers": [ + { + "arguments": [ + { + "argumentTypes": null, + "id": 277, + "name": "tokenSymbolString", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 261, + "src": "6366:17:1", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "id": 278, + "modifierName": { + "argumentTypes": null, + "id": 276, + "name": "PCToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2941, + "src": "6358:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_PCToken_$2941_$", + "typeString": "type(contract PCToken)" + } + }, + "nodeType": "ModifierInvocation", + "src": "6358:26:1" + } + ], + "name": "", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 275, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 259, + "mutability": "mutable", + "name": "factoryAddress", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 376, + "src": "6087:22:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 258, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6087:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 261, + "mutability": "mutable", + "name": "tokenSymbolString", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 376, + "src": "6119:31:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 260, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "6119:6:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 264, + "mutability": "mutable", + "name": "tokens", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 376, + "src": "6160:23:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 262, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6160:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 263, + "length": null, + "nodeType": "ArrayTypeName", + "src": "6160:9:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 267, + "mutability": "mutable", + "name": "startBalances", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 376, + "src": "6193:27:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 265, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "6193:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 266, + "length": null, + "nodeType": "ArrayTypeName", + "src": "6193:6:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 270, + "mutability": "mutable", + "name": "startWeights", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 376, + "src": "6230:26:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 268, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "6230:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 269, + "length": null, + "nodeType": "ArrayTypeName", + "src": "6230:6:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 272, + "mutability": "mutable", + "name": "swapFee", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 376, + "src": "6266:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 271, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "6266:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 274, + "mutability": "mutable", + "name": "rightsStruct", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 376, + "src": "6288:40:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Rights_$8553_memory_ptr", + "typeString": "struct RightsManager.Rights" + }, + "typeName": { + "contractScope": null, + "id": 273, + "name": "RightsManager.Rights", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 8553, + "src": "6288:20:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Rights_$8553_storage_ptr", + "typeString": "struct RightsManager.Rights" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "6077:257:1" + }, + "returnParameters": { + "id": 279, + "nodeType": "ParameterList", + "parameters": [], + "src": "6389:0:1" + }, + "scope": 2095, + "src": "6066:2123:1", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 406, + "nodeType": "Block", + "src": "8597:513:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 391, + "name": "rights", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 145, + "src": "8615:6:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Rights_$8553_storage", + "typeString": "struct RightsManager.Rights storage ref" + } + }, + "id": 392, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "canChangeSwapFee", + "nodeType": "MemberAccess", + "referencedDeclaration": 8544, + "src": "8615:23:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552525f4e4f545f434f4e464947555241424c455f535741505f464545", + "id": 393, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8640:31:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_e1322481090684f87089226d6887d47f60dc8d73fdeca8189b58430d8b3ec07d", + "typeString": "literal_string \"ERR_NOT_CONFIGURABLE_SWAP_FEE\"" + }, + "value": "ERR_NOT_CONFIGURABLE_SWAP_FEE" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_e1322481090684f87089226d6887d47f60dc8d73fdeca8189b58430d8b3ec07d", + "typeString": "literal_string \"ERR_NOT_CONFIGURABLE_SWAP_FEE\"" + } + ], + "id": 390, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "8607:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 394, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8607:65:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 395, + "nodeType": "ExpressionStatement", + "src": "8607:65:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 398, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 396, + "name": "_swapFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 149, + "src": "8991:8:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 397, + "name": "swapFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 379, + "src": "9002:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "8991:18:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 399, + "nodeType": "ExpressionStatement", + "src": "8991:18:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 403, + "name": "swapFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 379, + "src": "9095:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 400, + "name": "bPool", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 143, + "src": "9078:5:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBPool_$2256", + "typeString": "contract IBPool" + } + }, + "id": 402, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "setSwapFee", + "nodeType": "MemberAccess", + "referencedDeclaration": 2111, + "src": "9078:16:1", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256) external" + } + }, + "id": 404, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9078:25:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 405, + "nodeType": "ExpressionStatement", + "src": "9078:25:1" + } + ] + }, + "documentation": { + "id": 377, + "nodeType": "StructuredDocumentation", + "src": "8222:236:1", + "text": " @notice Set the swap fee on the underlying pool\n @dev Keep the local version and core in sync (see below)\n bPool is a contract interface; function calls on it are external\n @param swapFee in Wei" + }, + "functionSelector": "34e19907", + "id": 407, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 382, + "modifierName": { + "argumentTypes": null, + "id": 381, + "name": "logs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 220, + "src": "8522:4:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "8522:4:1" + }, + { + "arguments": null, + "id": 384, + "modifierName": { + "argumentTypes": null, + "id": 383, + "name": "lock", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8124, + "src": "8535:4:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "8535:4:1" + }, + { + "arguments": null, + "id": 386, + "modifierName": { + "argumentTypes": null, + "id": 385, + "name": "onlyOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8037, + "src": "8548:9:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "8548:9:1" + }, + { + "arguments": null, + "id": 388, + "modifierName": { + "argumentTypes": null, + "id": 387, + "name": "needsBPool", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 237, + "src": "8566:10:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "8566:10:1" + } + ], + "name": "setSwapFee", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 380, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 379, + "mutability": "mutable", + "name": "swapFee", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 407, + "src": "8483:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 378, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "8483:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "8482:14:1" + }, + "returnParameters": { + "id": 389, + "nodeType": "ParameterList", + "parameters": [], + "src": "8597:0:1" + }, + "scope": 2095, + "src": "8463:647:1", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "external" + }, + { + "body": { + "id": 423, + "nodeType": "Block", + "src": "9521:44:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 419, + "name": "bPool", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 143, + "src": "9538:5:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBPool_$2256", + "typeString": "contract IBPool" + } + }, + "id": 420, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "isPublicSwap", + "nodeType": "MemberAccess", + "referencedDeclaration": 2164, + "src": "9538:18:1", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$__$returns$_t_bool_$", + "typeString": "function () view external returns (bool)" + } + }, + "id": 421, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9538:20:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 418, + "id": 422, + "nodeType": "Return", + "src": "9531:27:1" + } + ] + }, + "documentation": { + "id": 408, + "nodeType": "StructuredDocumentation", + "src": "9116:271:1", + "text": " @notice Getter for the publicSwap field on the underlying pool\n @dev nonReentrantView, because setPublicSwap is nonReentrant\n bPool is a contract interface; function calls on it are external\n @return Current value of isPublicSwap" + }, + "functionSelector": "fde924f7", + "id": 424, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 411, + "modifierName": { + "argumentTypes": null, + "id": 410, + "name": "logs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 220, + "src": "9441:4:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "9441:4:1" + }, + { + "arguments": null, + "id": 413, + "modifierName": { + "argumentTypes": null, + "id": 412, + "name": "lock", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8124, + "src": "9454:4:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "9454:4:1" + }, + { + "arguments": null, + "id": 415, + "modifierName": { + "argumentTypes": null, + "id": 414, + "name": "needsBPool", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 237, + "src": "9467:10:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "9467:10:1" + } + ], + "name": "isPublicSwap", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 409, + "nodeType": "ParameterList", + "parameters": [], + "src": "9413:2:1" + }, + "returnParameters": { + "id": 418, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 417, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 424, + "src": "9511:4:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 416, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "9511:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "9510:6:1" + }, + "scope": 2095, + "src": "9392:173:1", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "external" + }, + { + "body": { + "id": 434, + "nodeType": "Block", + "src": "9736:31:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 432, + "name": "_bspCap", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 175, + "src": "9753:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 431, + "id": 433, + "nodeType": "Return", + "src": "9746:14:1" + } + ] + }, + "documentation": { + "id": 425, + "nodeType": "StructuredDocumentation", + "src": "9571:85:1", + "text": " @notice Getter for the cap\n @return current value of the cap" + }, + "functionSelector": "554d578d", + "id": 435, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 428, + "modifierName": { + "argumentTypes": null, + "id": 427, + "name": "lock", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8124, + "src": "9704:4:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "9704:4:1" + } + ], + "name": "getCap", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 426, + "nodeType": "ParameterList", + "parameters": [], + "src": "9676:2:1" + }, + "returnParameters": { + "id": 431, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 430, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 435, + "src": "9726:4:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 429, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "9726:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "9725:6:1" + }, + "scope": 2095, + "src": "9661:106:1", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 466, + "nodeType": "Block", + "src": "10419:152:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 450, + "name": "rights", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 145, + "src": "10437:6:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Rights_$8553_storage", + "typeString": "struct RightsManager.Rights storage ref" + } + }, + "id": 451, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "canChangeCap", + "nodeType": "MemberAccess", + "referencedDeclaration": 8552, + "src": "10437:19:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552525f43414e4e4f545f4348414e47455f434150", + "id": 452, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10458:23:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_b33ab9bea3348241149fe3380d4f43be49d5c2f42b0171c9076a0feb20082c45", + "typeString": "literal_string \"ERR_CANNOT_CHANGE_CAP\"" + }, + "value": "ERR_CANNOT_CHANGE_CAP" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_b33ab9bea3348241149fe3380d4f43be49d5c2f42b0171c9076a0feb20082c45", + "typeString": "literal_string \"ERR_CANNOT_CHANGE_CAP\"" + } + ], + "id": 449, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "10429:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 453, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10429:53:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 454, + "nodeType": "ExpressionStatement", + "src": "10429:53:1" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 456, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "10509:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 457, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "10509:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 458, + "name": "_bspCap", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 175, + "src": "10521:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 459, + "name": "newCap", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 438, + "src": "10530:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 455, + "name": "CapChanged", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 207, + "src": "10498:10:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256,uint256)" + } + }, + "id": 460, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10498:39:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 461, + "nodeType": "EmitStatement", + "src": "10493:44:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 464, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 462, + "name": "_bspCap", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 175, + "src": "10548:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 463, + "name": "newCap", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 438, + "src": "10558:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10548:16:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 465, + "nodeType": "ExpressionStatement", + "src": "10548:16:1" + } + ] + }, + "documentation": { + "id": 436, + "nodeType": "StructuredDocumentation", + "src": "9773:528:1", + "text": " @notice Set the cap (max # of pool tokens)\n @dev _bspCap defaults in the constructor to unlimited\n Can set to 0 (or anywhere below the current supply), to halt new investment\n Prevent setting it before creating a pool, since createPool sets to intialSupply\n (it does this to avoid an unlimited cap window between construction and createPool)\n Therefore setting it before then has no effect, so should not be allowed\n @param newCap - new value of the cap" + }, + "functionSelector": "47786d37", + "id": 467, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 441, + "modifierName": { + "argumentTypes": null, + "id": 440, + "name": "logs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 220, + "src": "10360:4:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "10360:4:1" + }, + { + "arguments": null, + "id": 443, + "modifierName": { + "argumentTypes": null, + "id": 442, + "name": "lock", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8124, + "src": "10373:4:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "10373:4:1" + }, + { + "arguments": null, + "id": 445, + "modifierName": { + "argumentTypes": null, + "id": 444, + "name": "needsBPool", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 237, + "src": "10386:10:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "10386:10:1" + }, + { + "arguments": null, + "id": 447, + "modifierName": { + "argumentTypes": null, + "id": 446, + "name": "onlyOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8037, + "src": "10405:9:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "10405:9:1" + } + ], + "name": "setCap", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 439, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 438, + "mutability": "mutable", + "name": "newCap", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 467, + "src": "10322:11:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 437, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "10322:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "10321:13:1" + }, + "returnParameters": { + "id": 448, + "nodeType": "ParameterList", + "parameters": [], + "src": "10419:0:1" + }, + "scope": 2095, + "src": "10306:265:1", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 493, + "nodeType": "Block", + "src": "11387:116:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 482, + "name": "rights", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 145, + "src": "11405:6:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Rights_$8553_storage", + "typeString": "struct RightsManager.Rights storage ref" + } + }, + "id": 483, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "canPauseSwapping", + "nodeType": "MemberAccess", + "referencedDeclaration": 8542, + "src": "11405:23:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552525f4e4f545f5041555341424c455f53574150", + "id": 484, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11430:23:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_d6265446e2b6d9bb3302a82dd7c208f00512cd0ea4bd7929625722bd799c05d8", + "typeString": "literal_string \"ERR_NOT_PAUSABLE_SWAP\"" + }, + "value": "ERR_NOT_PAUSABLE_SWAP" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_d6265446e2b6d9bb3302a82dd7c208f00512cd0ea4bd7929625722bd799c05d8", + "typeString": "literal_string \"ERR_NOT_PAUSABLE_SWAP\"" + } + ], + "id": 481, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "11397:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 485, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11397:57:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 486, + "nodeType": "ExpressionStatement", + "src": "11397:57:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 490, + "name": "publicSwap", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 470, + "src": "11485:10:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "expression": { + "argumentTypes": null, + "id": 487, + "name": "bPool", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 143, + "src": "11465:5:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBPool_$2256", + "typeString": "contract IBPool" + } + }, + "id": 489, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "setPublicSwap", + "nodeType": "MemberAccess", + "referencedDeclaration": 2116, + "src": "11465:19:1", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_bool_$returns$__$", + "typeString": "function (bool) external" + } + }, + "id": 491, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11465:31:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 492, + "nodeType": "ExpressionStatement", + "src": "11465:31:1" + } + ] + }, + "documentation": { + "id": 468, + "nodeType": "StructuredDocumentation", + "src": "10577:665:1", + "text": " @notice Set the public swap flag on the underlying pool\n @dev If this smart pool has canPauseSwapping enabled, we can turn publicSwap off if it's already on\n Note that if they turn swapping off - but then finalize the pool - finalizing will turn the\n swapping back on. They're not supposed to finalize the underlying pool... would defeat the\n smart pool functions. (Only the owner can finalize the pool - which is this contract -\n so there is no risk from outside.)\n bPool is a contract interface; function calls on it are external\n @param publicSwap new value of the swap" + }, + "functionSelector": "49b59552", + "id": 494, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 473, + "modifierName": { + "argumentTypes": null, + "id": 472, + "name": "logs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 220, + "src": "11312:4:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "11312:4:1" + }, + { + "arguments": null, + "id": 475, + "modifierName": { + "argumentTypes": null, + "id": 474, + "name": "lock", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8124, + "src": "11325:4:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "11325:4:1" + }, + { + "arguments": null, + "id": 477, + "modifierName": { + "argumentTypes": null, + "id": 476, + "name": "onlyOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8037, + "src": "11338:9:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "11338:9:1" + }, + { + "arguments": null, + "id": 479, + "modifierName": { + "argumentTypes": null, + "id": 478, + "name": "needsBPool", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 237, + "src": "11356:10:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "11356:10:1" + } + ], + "name": "setPublicSwap", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 471, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 470, + "mutability": "mutable", + "name": "publicSwap", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 494, + "src": "11270:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 469, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "11270:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "11269:17:1" + }, + "returnParameters": { + "id": 480, + "nodeType": "ParameterList", + "parameters": [], + "src": "11387:0:1" + }, + "scope": 2095, + "src": "11247:256:1", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "external" + }, + { + "body": { + "id": 701, + "nodeType": "Block", + "src": "13076:2826:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 517, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 511, + "name": "bPool", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 143, + "src": "13102:5:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBPool_$2256", + "typeString": "contract IBPool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IBPool_$2256", + "typeString": "contract IBPool" + } + ], + "id": 510, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "13094:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 509, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13094:7:1", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 512, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13094:14:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 515, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "13120:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 514, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "13112:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 513, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13112:7:1", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 516, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13112:10:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "13094:28:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552525f49535f43524541544544", + "id": 518, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "13124:16:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_6b0fd3d98e57eda898afe909aa74ac39b5d3157328629bee2f2c2d984380d943", + "typeString": "literal_string \"ERR_IS_CREATED\"" + }, + "value": "ERR_IS_CREATED" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_6b0fd3d98e57eda898afe909aa74ac39b5d3157328629bee2f2c2d984380d943", + "typeString": "literal_string \"ERR_IS_CREATED\"" + } + ], + "id": 508, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "13086:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 519, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13086:55:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 520, + "nodeType": "ExpressionStatement", + "src": "13086:55:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 524, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 522, + "name": "initialSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 497, + "src": "13159:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 523, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "13175:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "13159:17:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552525f494e49545f535550504c59", + "id": 525, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "13178:17:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_35ec97e01386c8f685ffbaa4221c773e8d16e0e8be3ef4e9f2734f7efe30ce3d", + "typeString": "literal_string \"ERR_INIT_SUPPLY\"" + }, + "value": "ERR_INIT_SUPPLY" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_35ec97e01386c8f685ffbaa4221c773e8d16e0e8be3ef4e9f2734f7efe30ce3d", + "typeString": "literal_string \"ERR_INIT_SUPPLY\"" + } + ], + "id": 521, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "13151:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 526, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13151:45:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 527, + "nodeType": "ExpressionStatement", + "src": "13151:45:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 532, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 529, + "name": "minimumWeightChangeBlockPeriod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 499, + "src": "13215:30:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 530, + "name": "BalancerConstants", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8223, + "src": "13249:17:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_BalancerConstants_$8223_$", + "typeString": "type(library BalancerConstants)" + } + }, + "id": 531, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "MIN_WEIGHT_CHANGE_BLOCK_PERIOD", + "nodeType": "MemberAccess", + "referencedDeclaration": 8212, + "src": "13249:48:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "13215:82:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552525f494e56414c49445f424c4f434b5f504552494f44", + "id": 533, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "13315:26:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_174286deada79db652065561272131c382dda8b986f73fdd9a3fdf1a474bcb3f", + "typeString": "literal_string \"ERR_INVALID_BLOCK_PERIOD\"" + }, + "value": "ERR_INVALID_BLOCK_PERIOD" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_174286deada79db652065561272131c382dda8b986f73fdd9a3fdf1a474bcb3f", + "typeString": "literal_string \"ERR_INVALID_BLOCK_PERIOD\"" + } + ], + "id": 528, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "13207:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 534, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13207:135:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 535, + "nodeType": "ExpressionStatement", + "src": "13207:135:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 539, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 537, + "name": "addTokenTimeLockInBlocks", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 501, + "src": "13360:24:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "argumentTypes": null, + "id": 538, + "name": "minimumWeightChangeBlockPeriod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 499, + "src": "13388:30:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "13360:58:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552525f494e434f4e53495354454e545f544f4b454e5f54494d455f4c4f434b", + "id": 540, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "13436:34:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_0cb63c07dc91a81c73e89ebf2aeb42d4be4de5d2e7224c1afa439246e5908887", + "typeString": "literal_string \"ERR_INCONSISTENT_TOKEN_TIME_LOCK\"" + }, + "value": "ERR_INCONSISTENT_TOKEN_TIME_LOCK" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_0cb63c07dc91a81c73e89ebf2aeb42d4be4de5d2e7224c1afa439246e5908887", + "typeString": "literal_string \"ERR_INCONSISTENT_TOKEN_TIME_LOCK\"" + } + ], + "id": 536, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "13352:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 541, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13352:119:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 542, + "nodeType": "ExpressionStatement", + "src": "13352:119:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 547, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 544, + "name": "addTokenTimeLockInBlocks", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 501, + "src": "13489:24:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 545, + "name": "BalancerConstants", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8223, + "src": "13517:17:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_BalancerConstants_$8223_$", + "typeString": "type(library BalancerConstants)" + } + }, + "id": 546, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "MIN_TOKEN_TIME_LOCK_PERIOD", + "nodeType": "MemberAccess", + "referencedDeclaration": 8215, + "src": "13517:44:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "13489:72:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552525f494e56414c49445f544f4b454e5f54494d455f4c4f434b", + "id": 548, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "13579:29:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_7d8b52e62546f6f1f81c17befeda10e1e1745fbd6cd0bdd1c5fe2edcc8266b26", + "typeString": "literal_string \"ERR_INVALID_TOKEN_TIME_LOCK\"" + }, + "value": "ERR_INVALID_TOKEN_TIME_LOCK" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_7d8b52e62546f6f1f81c17befeda10e1e1745fbd6cd0bdd1c5fe2edcc8266b26", + "typeString": "literal_string \"ERR_INVALID_TOKEN_TIME_LOCK\"" + } + ], + "id": 543, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "13481:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 549, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13481:128:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 550, + "nodeType": "ExpressionStatement", + "src": "13481:128:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 553, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 551, + "name": "_minimumWeightChangeBlockPeriod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 167, + "src": "13620:31:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 552, + "name": "minimumWeightChangeBlockPeriod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 499, + "src": "13654:30:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "13620:64:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 554, + "nodeType": "ExpressionStatement", + "src": "13620:64:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 557, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 555, + "name": "_addTokenTimeLockInBlocks", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 169, + "src": "13694:25:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 556, + "name": "addTokenTimeLockInBlocks", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 501, + "src": "13722:24:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "13694:52:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 558, + "nodeType": "ExpressionStatement", + "src": "13694:52:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 563, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 559, + "name": "bPool", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 143, + "src": "14032:5:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBPool_$2256", + "typeString": "contract IBPool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 560, + "name": "bFactory", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 141, + "src": "14040:8:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBFactory_$2284", + "typeString": "contract IBFactory" + } + }, + "id": 561, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "newBPool", + "nodeType": "MemberAccess", + "referencedDeclaration": 2261, + "src": "14040:17:1", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$__$returns$_t_contract$_IBPool_$2256_$", + "typeString": "function () external returns (contract IBPool)" + } + }, + "id": 562, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "14040:19:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBPool_$2256", + "typeString": "contract IBPool" + } + }, + "src": "14032:27:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBPool_$2256", + "typeString": "contract IBPool" + } + }, + "id": 564, + "nodeType": "ExpressionStatement", + "src": "14032:27:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 570, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 566, + "name": "bPool", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 143, + "src": "14171:5:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBPool_$2256", + "typeString": "contract IBPool" + } + }, + "id": 567, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "EXIT_FEE", + "nodeType": "MemberAccess", + "referencedDeclaration": 2181, + "src": "14171:14:1", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$", + "typeString": "function () view external returns (uint256)" + } + }, + "id": 568, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "14171:16:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 569, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14191:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "14171:21:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552525f4e4f4e5a45524f5f455849545f464545", + "id": 571, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14194:22:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_ba8767559788f09091a47460b32b63ea34b10320180ed4156a84c3d70535da2a", + "typeString": "literal_string \"ERR_NONZERO_EXIT_FEE\"" + }, + "value": "ERR_NONZERO_EXIT_FEE" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_ba8767559788f09091a47460b32b63ea34b10320180ed4156a84c3d70535da2a", + "typeString": "literal_string \"ERR_NONZERO_EXIT_FEE\"" + } + ], + "id": 565, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "14163:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 572, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "14163:54:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 573, + "nodeType": "ExpressionStatement", + "src": "14163:54:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 578, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 575, + "name": "BalancerConstants", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8223, + "src": "14235:17:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_BalancerConstants_$8223_$", + "typeString": "type(library BalancerConstants)" + } + }, + "id": 576, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "EXIT_FEE", + "nodeType": "MemberAccess", + "referencedDeclaration": 8190, + "src": "14235:26:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 577, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14265:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "14235:31:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552525f4e4f4e5a45524f5f455849545f464545", + "id": 579, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14268:22:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_ba8767559788f09091a47460b32b63ea34b10320180ed4156a84c3d70535da2a", + "typeString": "literal_string \"ERR_NONZERO_EXIT_FEE\"" + }, + "value": "ERR_NONZERO_EXIT_FEE" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_ba8767559788f09091a47460b32b63ea34b10320180ed4156a84c3d70535da2a", + "typeString": "literal_string \"ERR_NONZERO_EXIT_FEE\"" + } + ], + "id": 574, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "14227:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 580, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "14227:64:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 581, + "nodeType": "ExpressionStatement", + "src": "14227:64:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 585, + "name": "_swapFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 149, + "src": "14476:8:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 582, + "name": "bPool", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 143, + "src": "14459:5:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBPool_$2256", + "typeString": "contract IBPool" + } + }, + "id": 584, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "setSwapFee", + "nodeType": "MemberAccess", + "referencedDeclaration": 2111, + "src": "14459:16:1", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256) external" + } + }, + "id": 586, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "14459:26:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 587, + "nodeType": "ExpressionStatement", + "src": "14459:26:1" + }, + { + "condition": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 588, + "name": "rights", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 145, + "src": "14814:6:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Rights_$8553_storage", + "typeString": "struct RightsManager.Rights storage ref" + } + }, + "id": 589, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "canChangeCap", + "nodeType": "MemberAccess", + "referencedDeclaration": 8552, + "src": "14814:19:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 595, + "nodeType": "IfStatement", + "src": "14810:73:1", + "trueBody": { + "id": 594, + "nodeType": "Block", + "src": "14835:48:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 592, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 590, + "name": "_bspCap", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 175, + "src": "14849:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 591, + "name": "initialSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 497, + "src": "14859:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "14849:23:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 593, + "nodeType": "ExpressionStatement", + "src": "14849:23:1" + } + ] + } + }, + { + "body": { + "id": 672, + "nodeType": "Block", + "src": "14935:603:1", + "statements": [ + { + "assignments": [ + 608 + ], + "declarations": [ + { + "constant": false, + "id": 608, + "mutability": "mutable", + "name": "t", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 672, + "src": "14949:9:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 607, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "14949:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 612, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 609, + "name": "_tokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 152, + "src": "14961:7:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 611, + "indexExpression": { + "argumentTypes": null, + "id": 610, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 597, + "src": "14969:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "14961:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "14949:22:1" + }, + { + "assignments": [ + 614 + ], + "declarations": [ + { + "constant": false, + "id": 614, + "mutability": "mutable", + "name": "bal", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 672, + "src": "14985:8:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 613, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "14985:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 618, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 615, + "name": "_startBalances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 155, + "src": "14996:14:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage", + "typeString": "uint256[] storage ref" + } + }, + "id": 617, + "indexExpression": { + "argumentTypes": null, + "id": 616, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 597, + "src": "15011:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "14996:17:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "14985:28:1" + }, + { + "assignments": [ + 620 + ], + "declarations": [ + { + "constant": false, + "id": 620, + "mutability": "mutable", + "name": "denorm", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 672, + "src": "15027:11:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 619, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "15027:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 624, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 621, + "name": "_startWeights", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 162, + "src": "15041:13:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage", + "typeString": "uint256[] storage ref" + } + }, + "id": 623, + "indexExpression": { + "argumentTypes": null, + "id": 622, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 597, + "src": "15055:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "15041:16:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "15027:30:1" + }, + { + "assignments": [ + 626 + ], + "declarations": [ + { + "constant": false, + "id": 626, + "mutability": "mutable", + "name": "returnValue", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 672, + "src": "15072:16:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 625, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "15072:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 639, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 631, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "15114:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 632, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "15114:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 635, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "15134:4:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ConfigurableRightsPool_$2095", + "typeString": "contract ConfigurableRightsPool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ConfigurableRightsPool_$2095", + "typeString": "contract ConfigurableRightsPool" + } + ], + "id": 634, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "15126:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 633, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "15126:7:1", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 636, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "15126:13:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 637, + "name": "bal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 614, + "src": "15141:3:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 628, + "name": "t", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 608, + "src": "15098:1:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 627, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2393, + "src": "15091:6:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC20_$2393_$", + "typeString": "type(contract IERC20)" + } + }, + "id": 629, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "15091:9:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$2393", + "typeString": "contract IERC20" + } + }, + "id": 630, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "transferFrom", + "nodeType": "MemberAccess", + "referencedDeclaration": 2392, + "src": "15091:22:1", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,address,uint256) external returns (bool)" + } + }, + "id": 638, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "15091:54:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "15072:73:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 641, + "name": "returnValue", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 626, + "src": "15167:11:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552525f45524332305f46414c5345", + "id": 642, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "15180:17:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_cfe847c677cf42c21ce03ee8e7625272fdefc571a2ce6d0eacad2e7c6f42fc3f", + "typeString": "literal_string \"ERR_ERC20_FALSE\"" + }, + "value": "ERR_ERC20_FALSE" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_cfe847c677cf42c21ce03ee8e7625272fdefc571a2ce6d0eacad2e7c6f42fc3f", + "typeString": "literal_string \"ERR_ERC20_FALSE\"" + } + ], + "id": 640, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "15159:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 643, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "15159:39:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 644, + "nodeType": "ExpressionStatement", + "src": "15159:39:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 657, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 645, + "name": "returnValue", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 626, + "src": "15213:11:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 652, + "name": "bPool", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 143, + "src": "15253:5:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBPool_$2256", + "typeString": "contract IBPool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IBPool_$2256", + "typeString": "contract IBPool" + } + ], + "id": 651, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "15245:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 650, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "15245:7:1", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 653, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "15245:14:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 654, + "name": "BalancerConstants", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8223, + "src": "15261:17:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_BalancerConstants_$8223_$", + "typeString": "type(library BalancerConstants)" + } + }, + "id": 655, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "MAX_UINT", + "nodeType": "MemberAccess", + "referencedDeclaration": 8222, + "src": "15261:26:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 647, + "name": "t", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 608, + "src": "15234:1:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 646, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2393, + "src": "15227:6:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC20_$2393_$", + "typeString": "type(contract IERC20)" + } + }, + "id": 648, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "15227:9:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$2393", + "typeString": "contract IERC20" + } + }, + "id": 649, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "approve", + "nodeType": "MemberAccess", + "referencedDeclaration": 2372, + "src": "15227:17:1", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) external returns (bool)" + } + }, + "id": 656, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "15227:61:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "15213:75:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 658, + "nodeType": "ExpressionStatement", + "src": "15213:75:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 660, + "name": "returnValue", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 626, + "src": "15310:11:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552525f45524332305f46414c5345", + "id": 661, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "15323:17:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_cfe847c677cf42c21ce03ee8e7625272fdefc571a2ce6d0eacad2e7c6f42fc3f", + "typeString": "literal_string \"ERR_ERC20_FALSE\"" + }, + "value": "ERR_ERC20_FALSE" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_cfe847c677cf42c21ce03ee8e7625272fdefc571a2ce6d0eacad2e7c6f42fc3f", + "typeString": "literal_string \"ERR_ERC20_FALSE\"" + } + ], + "id": 659, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "15302:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 662, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "15302:39:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 663, + "nodeType": "ExpressionStatement", + "src": "15302:39:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 667, + "name": "t", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 608, + "src": "15512:1:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 668, + "name": "bal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 614, + "src": "15515:3:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 669, + "name": "denorm", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 620, + "src": "15520:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 664, + "name": "bPool", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 143, + "src": "15501:5:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBPool_$2256", + "typeString": "contract IBPool" + } + }, + "id": 666, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "bind", + "nodeType": "MemberAccess", + "referencedDeclaration": 2125, + "src": "15501:10:1", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256,uint256) external" + } + }, + "id": 670, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "15501:26:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 671, + "nodeType": "ExpressionStatement", + "src": "15501:26:1" + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 603, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 600, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 597, + "src": "14910:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 601, + "name": "_tokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 152, + "src": "14914:7:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 602, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "14914:14:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "14910:18:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 673, + "initializationExpression": { + "assignments": [ + 597 + ], + "declarations": [ + { + "constant": false, + "id": 597, + "mutability": "mutable", + "name": "i", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 673, + "src": "14898:6:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 596, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "14898:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 599, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 598, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14907:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "14898:10:1" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 605, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "14930:3:1", + "subExpression": { + "argumentTypes": null, + "id": 604, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 597, + "src": "14930:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 606, + "nodeType": "ExpressionStatement", + "src": "14930:3:1" + }, + "nodeType": "ForStatement", + "src": "14893:645:1" + }, + { + "body": { + "id": 683, + "nodeType": "Block", + "src": "15731:38:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 678, + "name": "_tokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 152, + "src": "15745:7:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 680, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "pop", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "15745:11:1", + "typeDescriptions": { + "typeIdentifier": "t_function_arraypop_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 681, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "15745:13:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 682, + "nodeType": "ExpressionStatement", + "src": "15745:13:1" + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 677, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 674, + "name": "_tokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 152, + "src": "15711:7:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 675, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "15711:14:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 676, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "15728:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "15711:18:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 684, + "nodeType": "WhileStatement", + "src": "15704:65:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "74727565", + "id": 688, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "15799:4:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "expression": { + "argumentTypes": null, + "id": 685, + "name": "bPool", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 143, + "src": "15779:5:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBPool_$2256", + "typeString": "contract IBPool" + } + }, + "id": 687, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "setPublicSwap", + "nodeType": "MemberAccess", + "referencedDeclaration": 2116, + "src": "15779:19:1", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_bool_$returns$__$", + "typeString": "function (bool) external" + } + }, + "id": 689, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "15779:25:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 690, + "nodeType": "ExpressionStatement", + "src": "15779:25:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 692, + "name": "initialSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 497, + "src": "15830:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 691, + "name": "_mintPoolShare", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2058, + "src": "15815:14:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256)" + } + }, + "id": 693, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "15815:29:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 694, + "nodeType": "ExpressionStatement", + "src": "15815:29:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 696, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "15869:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 697, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "15869:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 698, + "name": "initialSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 497, + "src": "15881:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 695, + "name": "_pushPoolShare", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2071, + "src": "15854:14:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 699, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "15854:41:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 700, + "nodeType": "ExpressionStatement", + "src": "15854:41:1" + } + ] + }, + "documentation": { + "id": 495, + "nodeType": "StructuredDocumentation", + "src": "11637:1233:1", + "text": " @notice Create a new Smart Pool - and set the block period time parameters\n @dev Initialize the swap fee to the value provided in the CRP constructor\n Can be changed if the canChangeSwapFee permission is enabled\n Time parameters will be fixed at these values\n If this contract doesn't have canChangeWeights permission - or you want to use the default\n values, the block time arguments\n are not needed, and you can just call the single-argument createPool()\n Code is duplicated in the overloaded createPool! If you change one, change the other!\n Unfortunately I cannot call this.createPool(initialSupply) from the overloaded one,\n because msg.sender will be different (contract address vs external account), and the\n token transfers would fail\n @param initialSupply starting token balance\n @param minimumWeightChangeBlockPeriod - Enforce a minimum time between the start and end blocks\n @param addTokenTimeLockInBlocks - Enforce a mandatory wait time between updates\n This is also the wait time between committing and applying a new token" + }, + "functionSelector": "c3391d27", + "id": 702, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 504, + "modifierName": { + "argumentTypes": null, + "id": 503, + "name": "logs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 220, + "src": "13038:4:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "13038:4:1" + }, + { + "arguments": null, + "id": 506, + "modifierName": { + "argumentTypes": null, + "id": 505, + "name": "lock", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8124, + "src": "13051:4:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "13051:4:1" + } + ], + "name": "createPool", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 502, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 497, + "mutability": "mutable", + "name": "initialSupply", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 702, + "src": "12904:18:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 496, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "12904:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 499, + "mutability": "mutable", + "name": "minimumWeightChangeBlockPeriod", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 702, + "src": "12932:35:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 498, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "12932:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 501, + "mutability": "mutable", + "name": "addTokenTimeLockInBlocks", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 702, + "src": "12977:29:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 500, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "12977:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "12894:118:1" + }, + "returnParameters": { + "id": 507, + "nodeType": "ParameterList", + "parameters": [], + "src": "13076:0:1" + }, + "scope": 2095, + "src": "12875:3027:1", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "external" + }, + { + "body": { + "id": 874, + "nodeType": "Block", + "src": "16665:2656:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 721, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 715, + "name": "bPool", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 143, + "src": "16691:5:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBPool_$2256", + "typeString": "contract IBPool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IBPool_$2256", + "typeString": "contract IBPool" + } + ], + "id": 714, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "16683:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 713, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "16683:7:1", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 716, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "16683:14:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 719, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "16709:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 718, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "16701:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 717, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "16701:7:1", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 720, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "16701:10:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "16683:28:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552525f49535f43524541544544", + "id": 722, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "16713:16:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_6b0fd3d98e57eda898afe909aa74ac39b5d3157328629bee2f2c2d984380d943", + "typeString": "literal_string \"ERR_IS_CREATED\"" + }, + "value": "ERR_IS_CREATED" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_6b0fd3d98e57eda898afe909aa74ac39b5d3157328629bee2f2c2d984380d943", + "typeString": "literal_string \"ERR_IS_CREATED\"" + } + ], + "id": 712, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "16675:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 723, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "16675:55:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 724, + "nodeType": "ExpressionStatement", + "src": "16675:55:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 728, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 726, + "name": "initialSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 705, + "src": "16748:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 727, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "16764:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "16748:17:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552525f494e49545f535550504c59", + "id": 729, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "16767:17:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_35ec97e01386c8f685ffbaa4221c773e8d16e0e8be3ef4e9f2734f7efe30ce3d", + "typeString": "literal_string \"ERR_INIT_SUPPLY\"" + }, + "value": "ERR_INIT_SUPPLY" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_35ec97e01386c8f685ffbaa4221c773e8d16e0e8be3ef4e9f2734f7efe30ce3d", + "typeString": "literal_string \"ERR_INIT_SUPPLY\"" + } + ], + "id": 725, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "16740:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 730, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "16740:45:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 731, + "nodeType": "ExpressionStatement", + "src": "16740:45:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 736, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 732, + "name": "bPool", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 143, + "src": "17069:5:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBPool_$2256", + "typeString": "contract IBPool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 733, + "name": "bFactory", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 141, + "src": "17077:8:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBFactory_$2284", + "typeString": "contract IBFactory" + } + }, + "id": 734, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "newBPool", + "nodeType": "MemberAccess", + "referencedDeclaration": 2261, + "src": "17077:17:1", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$__$returns$_t_contract$_IBPool_$2256_$", + "typeString": "function () external returns (contract IBPool)" + } + }, + "id": 735, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "17077:19:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBPool_$2256", + "typeString": "contract IBPool" + } + }, + "src": "17069:27:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBPool_$2256", + "typeString": "contract IBPool" + } + }, + "id": 737, + "nodeType": "ExpressionStatement", + "src": "17069:27:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 743, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 739, + "name": "bPool", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 143, + "src": "17208:5:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBPool_$2256", + "typeString": "contract IBPool" + } + }, + "id": 740, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "EXIT_FEE", + "nodeType": "MemberAccess", + "referencedDeclaration": 2181, + "src": "17208:14:1", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$", + "typeString": "function () view external returns (uint256)" + } + }, + "id": 741, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "17208:16:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 742, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "17228:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "17208:21:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552525f4e4f4e5a45524f5f455849545f464545", + "id": 744, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "17231:22:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_ba8767559788f09091a47460b32b63ea34b10320180ed4156a84c3d70535da2a", + "typeString": "literal_string \"ERR_NONZERO_EXIT_FEE\"" + }, + "value": "ERR_NONZERO_EXIT_FEE" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_ba8767559788f09091a47460b32b63ea34b10320180ed4156a84c3d70535da2a", + "typeString": "literal_string \"ERR_NONZERO_EXIT_FEE\"" + } + ], + "id": 738, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "17200:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 745, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "17200:54:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 746, + "nodeType": "ExpressionStatement", + "src": "17200:54:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 751, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 748, + "name": "BalancerConstants", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8223, + "src": "17272:17:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_BalancerConstants_$8223_$", + "typeString": "type(library BalancerConstants)" + } + }, + "id": 749, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "EXIT_FEE", + "nodeType": "MemberAccess", + "referencedDeclaration": 8190, + "src": "17272:26:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 750, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "17302:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "17272:31:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552525f4e4f4e5a45524f5f455849545f464545", + "id": 752, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "17305:22:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_ba8767559788f09091a47460b32b63ea34b10320180ed4156a84c3d70535da2a", + "typeString": "literal_string \"ERR_NONZERO_EXIT_FEE\"" + }, + "value": "ERR_NONZERO_EXIT_FEE" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_ba8767559788f09091a47460b32b63ea34b10320180ed4156a84c3d70535da2a", + "typeString": "literal_string \"ERR_NONZERO_EXIT_FEE\"" + } + ], + "id": 747, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "17264:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 753, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "17264:64:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 754, + "nodeType": "ExpressionStatement", + "src": "17264:64:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 758, + "name": "_swapFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 149, + "src": "17513:8:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 755, + "name": "bPool", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 143, + "src": "17496:5:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBPool_$2256", + "typeString": "contract IBPool" + } + }, + "id": 757, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "setSwapFee", + "nodeType": "MemberAccess", + "referencedDeclaration": 2111, + "src": "17496:16:1", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256) external" + } + }, + "id": 759, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "17496:26:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 760, + "nodeType": "ExpressionStatement", + "src": "17496:26:1" + }, + { + "condition": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 761, + "name": "rights", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 145, + "src": "17851:6:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Rights_$8553_storage", + "typeString": "struct RightsManager.Rights storage ref" + } + }, + "id": 762, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "canChangeCap", + "nodeType": "MemberAccess", + "referencedDeclaration": 8552, + "src": "17851:19:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 768, + "nodeType": "IfStatement", + "src": "17847:73:1", + "trueBody": { + "id": 767, + "nodeType": "Block", + "src": "17872:48:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 765, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 763, + "name": "_bspCap", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 175, + "src": "17886:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 764, + "name": "initialSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 705, + "src": "17896:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "17886:23:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 766, + "nodeType": "ExpressionStatement", + "src": "17886:23:1" + } + ] + } + }, + { + "body": { + "id": 845, + "nodeType": "Block", + "src": "17972:458:1", + "statements": [ + { + "assignments": [ + 781 + ], + "declarations": [ + { + "constant": false, + "id": 781, + "mutability": "mutable", + "name": "t", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 845, + "src": "17986:9:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 780, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "17986:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 785, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 782, + "name": "_tokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 152, + "src": "17998:7:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 784, + "indexExpression": { + "argumentTypes": null, + "id": 783, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 770, + "src": "18006:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "17998:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "17986:22:1" + }, + { + "assignments": [ + 787 + ], + "declarations": [ + { + "constant": false, + "id": 787, + "mutability": "mutable", + "name": "bal", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 845, + "src": "18022:8:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 786, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "18022:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 791, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 788, + "name": "_startBalances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 155, + "src": "18033:14:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage", + "typeString": "uint256[] storage ref" + } + }, + "id": 790, + "indexExpression": { + "argumentTypes": null, + "id": 789, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 770, + "src": "18048:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "18033:17:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "18022:28:1" + }, + { + "assignments": [ + 793 + ], + "declarations": [ + { + "constant": false, + "id": 793, + "mutability": "mutable", + "name": "denorm", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 845, + "src": "18064:11:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 792, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "18064:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 797, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 794, + "name": "_startWeights", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 162, + "src": "18078:13:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage", + "typeString": "uint256[] storage ref" + } + }, + "id": 796, + "indexExpression": { + "argumentTypes": null, + "id": 795, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 770, + "src": "18092:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "18078:16:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "18064:30:1" + }, + { + "assignments": [ + 799 + ], + "declarations": [ + { + "constant": false, + "id": 799, + "mutability": "mutable", + "name": "returnValue", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 845, + "src": "18109:16:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 798, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "18109:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 812, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 804, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "18151:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 805, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "18151:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 808, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "18171:4:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ConfigurableRightsPool_$2095", + "typeString": "contract ConfigurableRightsPool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ConfigurableRightsPool_$2095", + "typeString": "contract ConfigurableRightsPool" + } + ], + "id": 807, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "18163:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 806, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "18163:7:1", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 809, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "18163:13:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 810, + "name": "bal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 787, + "src": "18178:3:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 801, + "name": "t", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 781, + "src": "18135:1:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 800, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2393, + "src": "18128:6:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC20_$2393_$", + "typeString": "type(contract IERC20)" + } + }, + "id": 802, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "18128:9:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$2393", + "typeString": "contract IERC20" + } + }, + "id": 803, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "transferFrom", + "nodeType": "MemberAccess", + "referencedDeclaration": 2392, + "src": "18128:22:1", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,address,uint256) external returns (bool)" + } + }, + "id": 811, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "18128:54:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "18109:73:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 814, + "name": "returnValue", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 799, + "src": "18204:11:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552525f45524332305f46414c5345", + "id": 815, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "18217:17:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_cfe847c677cf42c21ce03ee8e7625272fdefc571a2ce6d0eacad2e7c6f42fc3f", + "typeString": "literal_string \"ERR_ERC20_FALSE\"" + }, + "value": "ERR_ERC20_FALSE" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_cfe847c677cf42c21ce03ee8e7625272fdefc571a2ce6d0eacad2e7c6f42fc3f", + "typeString": "literal_string \"ERR_ERC20_FALSE\"" + } + ], + "id": 813, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "18196:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 816, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "18196:39:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 817, + "nodeType": "ExpressionStatement", + "src": "18196:39:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 830, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 818, + "name": "returnValue", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 799, + "src": "18250:11:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 825, + "name": "bPool", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 143, + "src": "18290:5:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBPool_$2256", + "typeString": "contract IBPool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IBPool_$2256", + "typeString": "contract IBPool" + } + ], + "id": 824, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "18282:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 823, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "18282:7:1", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 826, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "18282:14:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 827, + "name": "BalancerConstants", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8223, + "src": "18298:17:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_BalancerConstants_$8223_$", + "typeString": "type(library BalancerConstants)" + } + }, + "id": 828, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "MAX_UINT", + "nodeType": "MemberAccess", + "referencedDeclaration": 8222, + "src": "18298:26:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 820, + "name": "t", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 781, + "src": "18271:1:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 819, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2393, + "src": "18264:6:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC20_$2393_$", + "typeString": "type(contract IERC20)" + } + }, + "id": 821, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "18264:9:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$2393", + "typeString": "contract IERC20" + } + }, + "id": 822, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "approve", + "nodeType": "MemberAccess", + "referencedDeclaration": 2372, + "src": "18264:17:1", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) external returns (bool)" + } + }, + "id": 829, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "18264:61:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "18250:75:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 831, + "nodeType": "ExpressionStatement", + "src": "18250:75:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 833, + "name": "returnValue", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 799, + "src": "18347:11:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552525f45524332305f46414c5345", + "id": 834, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "18360:17:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_cfe847c677cf42c21ce03ee8e7625272fdefc571a2ce6d0eacad2e7c6f42fc3f", + "typeString": "literal_string \"ERR_ERC20_FALSE\"" + }, + "value": "ERR_ERC20_FALSE" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_cfe847c677cf42c21ce03ee8e7625272fdefc571a2ce6d0eacad2e7c6f42fc3f", + "typeString": "literal_string \"ERR_ERC20_FALSE\"" + } + ], + "id": 832, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "18339:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 835, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "18339:39:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 836, + "nodeType": "ExpressionStatement", + "src": "18339:39:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 840, + "name": "t", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 781, + "src": "18404:1:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 841, + "name": "bal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 787, + "src": "18407:3:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 842, + "name": "denorm", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 793, + "src": "18412:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 837, + "name": "bPool", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 143, + "src": "18393:5:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBPool_$2256", + "typeString": "contract IBPool" + } + }, + "id": 839, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "bind", + "nodeType": "MemberAccess", + "referencedDeclaration": 2125, + "src": "18393:10:1", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256,uint256) external" + } + }, + "id": 843, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "18393:26:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 844, + "nodeType": "ExpressionStatement", + "src": "18393:26:1" + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 776, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 773, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 770, + "src": "17947:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 774, + "name": "_tokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 152, + "src": "17951:7:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 775, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "17951:14:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "17947:18:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 846, + "initializationExpression": { + "assignments": [ + 770 + ], + "declarations": [ + { + "constant": false, + "id": 770, + "mutability": "mutable", + "name": "i", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 846, + "src": "17935:6:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 769, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "17935:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 772, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 771, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "17944:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "17935:10:1" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 778, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "17967:3:1", + "subExpression": { + "argumentTypes": null, + "id": 777, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 770, + "src": "17967:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 779, + "nodeType": "ExpressionStatement", + "src": "17967:3:1" + }, + "nodeType": "ForStatement", + "src": "17930:500:1" + }, + { + "body": { + "id": 856, + "nodeType": "Block", + "src": "18536:38:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 851, + "name": "_tokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 152, + "src": "18550:7:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 853, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "pop", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "18550:11:1", + "typeDescriptions": { + "typeIdentifier": "t_function_arraypop_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 854, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "18550:13:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 855, + "nodeType": "ExpressionStatement", + "src": "18550:13:1" + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 850, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 847, + "name": "_tokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 152, + "src": "18516:7:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 848, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "18516:14:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 849, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "18533:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "18516:18:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 857, + "nodeType": "WhileStatement", + "src": "18509:65:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "74727565", + "id": 861, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "19218:4:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "expression": { + "argumentTypes": null, + "id": 858, + "name": "bPool", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 143, + "src": "19198:5:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBPool_$2256", + "typeString": "contract IBPool" + } + }, + "id": 860, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "setPublicSwap", + "nodeType": "MemberAccess", + "referencedDeclaration": 2116, + "src": "19198:19:1", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_bool_$returns$__$", + "typeString": "function (bool) external" + } + }, + "id": 862, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "19198:25:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 863, + "nodeType": "ExpressionStatement", + "src": "19198:25:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 865, + "name": "initialSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 705, + "src": "19249:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 864, + "name": "_mintPoolShare", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2058, + "src": "19234:14:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256)" + } + }, + "id": 866, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "19234:29:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 867, + "nodeType": "ExpressionStatement", + "src": "19234:29:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 869, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "19288:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 870, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "19288:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 871, + "name": "initialSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 705, + "src": "19300:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 868, + "name": "_pushPoolShare", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2071, + "src": "19273:14:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 872, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "19273:41:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 873, + "nodeType": "ExpressionStatement", + "src": "19273:41:1" + } + ] + }, + "documentation": { + "id": 703, + "nodeType": "StructuredDocumentation", + "src": "15908:649:1", + "text": " @notice Create a new Smart Pool\n @dev Initialize the swap fee to the value provided in the CRP constructor\n Can be changed if the canChangeSwapFee permission is enabled\n NB:\n Code is duplicated in the overloaded createPool! If you change one, change the other!\n Unfortunately I cannot call this.createPool(initialSupply) from the overloaded one,\n because msg.sender will be different (contract address vs external account), and the\n token transfers would fail. Overloading is tricky with external functions.\n @param initialSupply starting token balance" + }, + "functionSelector": "8259e6a0", + "id": 875, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 708, + "modifierName": { + "argumentTypes": null, + "id": 707, + "name": "logs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 220, + "src": "16627:4:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "16627:4:1" + }, + { + "arguments": null, + "id": 710, + "modifierName": { + "argumentTypes": null, + "id": 709, + "name": "lock", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8124, + "src": "16640:4:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "16640:4:1" + } + ], + "name": "createPool", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 706, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 705, + "mutability": "mutable", + "name": "initialSupply", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 875, + "src": "16582:18:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 704, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "16582:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "16581:20:1" + }, + "returnParameters": { + "id": 711, + "nodeType": "ParameterList", + "parameters": [], + "src": "16665:0:1" + }, + "scope": 2095, + "src": "16562:2759:1", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "external" + }, + { + "body": { + "id": 913, + "nodeType": "Block", + "src": "20031:365:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 892, + "name": "rights", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 145, + "src": "20049:6:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Rights_$8553_storage", + "typeString": "struct RightsManager.Rights storage ref" + } + }, + "id": 893, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "canChangeWeights", + "nodeType": "MemberAccess", + "referencedDeclaration": 8546, + "src": "20049:23:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552525f4e4f545f434f4e464947555241424c455f57454947485453", + "id": 894, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "20074:30:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_57a8f447dbaa00300fc80d285090d59626810f08455b9ca1bf5a85e4a7936bed", + "typeString": "literal_string \"ERR_NOT_CONFIGURABLE_WEIGHTS\"" + }, + "value": "ERR_NOT_CONFIGURABLE_WEIGHTS" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_57a8f447dbaa00300fc80d285090d59626810f08455b9ca1bf5a85e4a7936bed", + "typeString": "literal_string \"ERR_NOT_CONFIGURABLE_WEIGHTS\"" + } + ], + "id": 891, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "20041:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 895, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "20041:64:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 896, + "nodeType": "ExpressionStatement", + "src": "20041:64:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 900, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 898, + "name": "_startBlock", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 157, + "src": "20224:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 899, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "20239:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "20224:16:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552525f4e4f5f5550444154455f445552494e475f4752414455414c", + "id": 901, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "20242:30:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_e775cf450dfd0b6c05b10d56c73999d8a54c6ffc6ae3176075a4c3587e2c174e", + "typeString": "literal_string \"ERR_NO_UPDATE_DURING_GRADUAL\"" + }, + "value": "ERR_NO_UPDATE_DURING_GRADUAL" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_e775cf450dfd0b6c05b10d56c73999d8a54c6ffc6ae3176075a4c3587e2c174e", + "typeString": "literal_string \"ERR_NO_UPDATE_DURING_GRADUAL\"" + } + ], + "id": 897, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "20216:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 902, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "20216:57:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 903, + "nodeType": "ExpressionStatement", + "src": "20216:57:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 907, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "20359:4:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ConfigurableRightsPool_$2095", + "typeString": "contract ConfigurableRightsPool" + } + }, + { + "argumentTypes": null, + "id": 908, + "name": "bPool", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 143, + "src": "20365:5:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBPool_$2256", + "typeString": "contract IBPool" + } + }, + { + "argumentTypes": null, + "id": 909, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 878, + "src": "20372:5:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 910, + "name": "newWeight", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 880, + "src": "20379:9:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ConfigurableRightsPool_$2095", + "typeString": "contract ConfigurableRightsPool" + }, + { + "typeIdentifier": "t_contract$_IBPool_$2256", + "typeString": "contract IBPool" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 904, + "name": "SmartPoolManager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10277, + "src": "20329:16:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_SmartPoolManager_$10277_$", + "typeString": "type(library SmartPoolManager)" + } + }, + "id": 906, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "updateWeight", + "nodeType": "MemberAccess", + "referencedDeclaration": 9034, + "src": "20329:29:1", + "typeDescriptions": { + "typeIdentifier": "t_function_delegatecall_nonpayable$_t_contract$_ConfigurableRightsPool_$2095_$_t_contract$_IBPool_$2256_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (contract ConfigurableRightsPool,contract IBPool,address,uint256)" + } + }, + "id": 911, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "20329:60:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 912, + "nodeType": "ExpressionStatement", + "src": "20329:60:1" + } + ] + }, + "documentation": { + "id": 876, + "nodeType": "StructuredDocumentation", + "src": "19372:501:1", + "text": " @notice Update the weight of an existing token\n @dev Notice Balance is not an input (like with rebind on BPool) since we will require prices not to change\n This is achieved by forcing balances to change proportionally to weights, so that prices don't change\n If prices could be changed, this would allow the controller to drain the pool by arbing price changes\n @param token - token to be reweighted\n @param newWeight - new weight of the token" + }, + "functionSelector": "9776e94b", + "id": 914, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 883, + "modifierName": { + "argumentTypes": null, + "id": 882, + "name": "logs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 220, + "src": "19956:4:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "19956:4:1" + }, + { + "arguments": null, + "id": 885, + "modifierName": { + "argumentTypes": null, + "id": 884, + "name": "lock", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8124, + "src": "19969:4:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "19969:4:1" + }, + { + "arguments": null, + "id": 887, + "modifierName": { + "argumentTypes": null, + "id": 886, + "name": "onlyOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8037, + "src": "19982:9:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "19982:9:1" + }, + { + "arguments": null, + "id": 889, + "modifierName": { + "argumentTypes": null, + "id": 888, + "name": "needsBPool", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 237, + "src": "20000:10:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "20000:10:1" + } + ], + "name": "updateWeight", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 881, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 878, + "mutability": "mutable", + "name": "token", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 914, + "src": "19900:13:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 877, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "19900:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 880, + "mutability": "mutable", + "name": "newWeight", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 914, + "src": "19915:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 879, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "19915:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "19899:31:1" + }, + "returnParameters": { + "id": 890, + "nodeType": "ParameterList", + "parameters": [], + "src": "20031:0:1" + }, + "scope": 2095, + "src": "19878:518:1", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "external" + }, + { + "body": { + "id": 1005, + "nodeType": "Block", + "src": "21290:1257:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 934, + "name": "rights", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 145, + "src": "21308:6:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Rights_$8553_storage", + "typeString": "struct RightsManager.Rights storage ref" + } + }, + "id": 935, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "canChangeWeights", + "nodeType": "MemberAccess", + "referencedDeclaration": 8546, + "src": "21308:23:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552525f4e4f545f434f4e464947555241424c455f57454947485453", + "id": 936, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "21333:30:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_57a8f447dbaa00300fc80d285090d59626810f08455b9ca1bf5a85e4a7936bed", + "typeString": "literal_string \"ERR_NOT_CONFIGURABLE_WEIGHTS\"" + }, + "value": "ERR_NOT_CONFIGURABLE_WEIGHTS" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_57a8f447dbaa00300fc80d285090d59626810f08455b9ca1bf5a85e4a7936bed", + "typeString": "literal_string \"ERR_NOT_CONFIGURABLE_WEIGHTS\"" + } + ], + "id": 933, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "21300:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 937, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "21300:64:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 938, + "nodeType": "ExpressionStatement", + "src": "21300:64:1" + }, + { + "assignments": [ + 943 + ], + "declarations": [ + { + "constant": false, + "id": 943, + "mutability": "mutable", + "name": "poolTokens", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1005, + "src": "21452:27:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 941, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "21452:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 942, + "length": null, + "nodeType": "ArrayTypeName", + "src": "21452:9:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 947, + "initialValue": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 944, + "name": "bPool", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 143, + "src": "21482:5:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBPool_$2256", + "typeString": "contract IBPool" + } + }, + "id": 945, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "getCurrentTokens", + "nodeType": "MemberAccess", + "referencedDeclaration": 2255, + "src": "21482:22:1", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$__$returns$_t_array$_t_address_$dyn_memory_ptr_$", + "typeString": "function () view external returns (address[] memory)" + } + }, + "id": 946, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "21482:24:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "21452:54:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 953, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 949, + "name": "newWeights", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 918, + "src": "21572:10:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[] calldata" + } + }, + "id": 950, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "21572:17:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 951, + "name": "poolTokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 943, + "src": "21593:10:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 952, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "21593:17:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "21572:38:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552525f53544152545f574549474854535f4d49534d41544348", + "id": 954, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "21612:28:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_2621dad9e42b67f637d979efad333e4d7c412f0b27bcffbae38120716d390931", + "typeString": "literal_string \"ERR_START_WEIGHTS_MISMATCH\"" + }, + "value": "ERR_START_WEIGHTS_MISMATCH" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_2621dad9e42b67f637d979efad333e4d7c412f0b27bcffbae38120716d390931", + "typeString": "literal_string \"ERR_START_WEIGHTS_MISMATCH\"" + } + ], + "id": 948, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "21564:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 955, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "21564:77:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 956, + "nodeType": "ExpressionStatement", + "src": "21564:77:1" + }, + { + "assignments": [ + 958, + 961 + ], + "declarations": [ + { + "constant": false, + "id": 958, + "mutability": "mutable", + "name": "actualStartBlock", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1005, + "src": "21837:21:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 957, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "21837:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 961, + "mutability": "mutable", + "name": "startWeights", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1005, + "src": "21869:26:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 959, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "21869:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 960, + "length": null, + "nodeType": "ArrayTypeName", + "src": "21869:6:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 971, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 964, + "name": "bPool", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 143, + "src": "21983:5:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBPool_$2256", + "typeString": "contract IBPool" + } + }, + { + "argumentTypes": null, + "id": 965, + "name": "_newToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 147, + "src": "22033:9:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_NewToken_$8767_storage", + "typeString": "struct SmartPoolManager.NewToken storage ref" + } + }, + { + "argumentTypes": null, + "id": 966, + "name": "newWeights", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 918, + "src": "22087:10:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[] calldata" + } + }, + { + "argumentTypes": null, + "id": 967, + "name": "startBlock", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 920, + "src": "22142:10:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 968, + "name": "endBlock", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 922, + "src": "22197:8:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 969, + "name": "_minimumWeightChangeBlockPeriod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 167, + "src": "22250:31:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IBPool_$2256", + "typeString": "contract IBPool" + }, + { + "typeIdentifier": "t_struct$_NewToken_$8767_storage", + "typeString": "struct SmartPoolManager.NewToken storage ref" + }, + { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[] calldata" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 962, + "name": "SmartPoolManager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10277, + "src": "21899:16:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_SmartPoolManager_$10277_$", + "typeString": "type(library SmartPoolManager)" + } + }, + "id": 963, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "updateWeightsGradually", + "nodeType": "MemberAccess", + "referencedDeclaration": 9685, + "src": "21899:39:1", + "typeDescriptions": { + "typeIdentifier": "t_function_delegatecall_view$_t_contract$_IBPool_$2256_$_t_struct$_NewToken_$8767_storage_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$", + "typeString": "function (contract IBPool,struct SmartPoolManager.NewToken storage pointer,uint256[] memory,uint256,uint256,uint256) view returns (uint256,uint256[] memory)" + } + }, + "id": 970, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "21899:423:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$", + "typeString": "tuple(uint256,uint256[] memory)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "21836:486:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 974, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 972, + "name": "_startBlock", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 157, + "src": "22332:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 973, + "name": "actualStartBlock", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 958, + "src": "22346:16:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "22332:30:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 975, + "nodeType": "ExpressionStatement", + "src": "22332:30:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 978, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 976, + "name": "_endBlock", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 159, + "src": "22372:9:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 977, + "name": "endBlock", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 922, + "src": "22384:8:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "22372:20:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 979, + "nodeType": "ExpressionStatement", + "src": "22372:20:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 982, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 980, + "name": "_newWeights", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 165, + "src": "22402:11:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage", + "typeString": "uint256[] storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 981, + "name": "newWeights", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 918, + "src": "22416:10:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[] calldata" + } + }, + "src": "22402:24:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage", + "typeString": "uint256[] storage ref" + } + }, + "id": 983, + "nodeType": "ExpressionStatement", + "src": "22402:24:1" + }, + { + "body": { + "id": 1003, + "nodeType": "Block", + "src": "22482:59:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1001, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 995, + "name": "_startWeights", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 162, + "src": "22496:13:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage", + "typeString": "uint256[] storage ref" + } + }, + "id": 997, + "indexExpression": { + "argumentTypes": null, + "id": 996, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 985, + "src": "22510:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "22496:16:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 998, + "name": "startWeights", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 961, + "src": "22515:12:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 1000, + "indexExpression": { + "argumentTypes": null, + "id": 999, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 985, + "src": "22528:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "22515:15:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "22496:34:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1002, + "nodeType": "ExpressionStatement", + "src": "22496:34:1" + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 991, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 988, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 985, + "src": "22454:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 989, + "name": "poolTokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 943, + "src": "22458:10:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 990, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "22458:17:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "22454:21:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1004, + "initializationExpression": { + "assignments": [ + 985 + ], + "declarations": [ + { + "constant": false, + "id": 985, + "mutability": "mutable", + "name": "i", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1004, + "src": "22442:6:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 984, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "22442:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 987, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 986, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "22451:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "22442:10:1" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 993, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "22477:3:1", + "subExpression": { + "argumentTypes": null, + "id": 992, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 985, + "src": "22477:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 994, + "nodeType": "ExpressionStatement", + "src": "22477:3:1" + }, + "nodeType": "ForStatement", + "src": "22437:104:1" + } + ] + }, + "documentation": { + "id": 915, + "nodeType": "StructuredDocumentation", + "src": "20402:661:1", + "text": " @notice Update weights in a predetermined way, between startBlock and endBlock,\n through external calls to pokeWeights\n @dev Must call pokeWeights at least once past the end for it to do the final update\n and enable calling this again.\n It is possible to call updateWeightsGradually during an update in some use cases\n For instance, setting newWeights to currentWeights to stop the update where it is\n @param newWeights - final weights we want to get to\n @param startBlock - when weights should start to change\n @param endBlock - when weights will be at their final values" + }, + "functionSelector": "246bc19b", + "id": 1006, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 925, + "modifierName": { + "argumentTypes": null, + "id": 924, + "name": "logs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 220, + "src": "21215:4:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "21215:4:1" + }, + { + "arguments": null, + "id": 927, + "modifierName": { + "argumentTypes": null, + "id": 926, + "name": "lock", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8124, + "src": "21228:4:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "21228:4:1" + }, + { + "arguments": null, + "id": 929, + "modifierName": { + "argumentTypes": null, + "id": 928, + "name": "onlyOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8037, + "src": "21241:9:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "21241:9:1" + }, + { + "arguments": null, + "id": 931, + "modifierName": { + "argumentTypes": null, + "id": 930, + "name": "needsBPool", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 237, + "src": "21259:10:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "21259:10:1" + } + ], + "name": "updateWeightsGradually", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 923, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 918, + "mutability": "mutable", + "name": "newWeights", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1006, + "src": "21109:26:1", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 916, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "21109:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 917, + "length": null, + "nodeType": "ArrayTypeName", + "src": "21109:6:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 920, + "mutability": "mutable", + "name": "startBlock", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1006, + "src": "21145:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 919, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "21145:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 922, + "mutability": "mutable", + "name": "endBlock", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1006, + "src": "21170:13:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 921, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "21170:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "21099:90:1" + }, + "returnParameters": { + "id": 932, + "nodeType": "ParameterList", + "parameters": [], + "src": "21290:0:1" + }, + "scope": 2095, + "src": "21068:1479:1", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "external" + }, + { + "body": { + "id": 1046, + "nodeType": "Block", + "src": "22949:572:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1017, + "name": "rights", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 145, + "src": "22967:6:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Rights_$8553_storage", + "typeString": "struct RightsManager.Rights storage ref" + } + }, + "id": 1018, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "canChangeWeights", + "nodeType": "MemberAccess", + "referencedDeclaration": 8546, + "src": "22967:23:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552525f4e4f545f434f4e464947555241424c455f57454947485453", + "id": 1019, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "22992:30:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_57a8f447dbaa00300fc80d285090d59626810f08455b9ca1bf5a85e4a7936bed", + "typeString": "literal_string \"ERR_NOT_CONFIGURABLE_WEIGHTS\"" + }, + "value": "ERR_NOT_CONFIGURABLE_WEIGHTS" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_57a8f447dbaa00300fc80d285090d59626810f08455b9ca1bf5a85e4a7936bed", + "typeString": "literal_string \"ERR_NOT_CONFIGURABLE_WEIGHTS\"" + } + ], + "id": 1016, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "22959:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1020, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "22959:64:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1021, + "nodeType": "ExpressionStatement", + "src": "22959:64:1" + }, + { + "assignments": [ + 1023 + ], + "declarations": [ + { + "constant": false, + "id": 1023, + "mutability": "mutable", + "name": "currentStartBlock", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1046, + "src": "23109:22:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1022, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "23109:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1025, + "initialValue": { + "argumentTypes": null, + "id": 1024, + "name": "_startBlock", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 157, + "src": "23134:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "23109:36:1" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1029, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1026, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -4, + "src": "23229:5:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 1027, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "number", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "23229:12:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "id": 1028, + "name": "_endBlock", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 159, + "src": "23245:9:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "23229:25:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 1035, + "nodeType": "IfStatement", + "src": "23225:71:1", + "trueBody": { + "id": 1034, + "nodeType": "Block", + "src": "23256:40:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1032, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1030, + "name": "_startBlock", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 157, + "src": "23270:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 1031, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "23284:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "23270:15:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1033, + "nodeType": "ExpressionStatement", + "src": "23270:15:1" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1039, + "name": "bPool", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 143, + "src": "23393:5:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBPool_$2256", + "typeString": "contract IBPool" + } + }, + { + "argumentTypes": null, + "id": 1040, + "name": "currentStartBlock", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1023, + "src": "23412:17:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1041, + "name": "_endBlock", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 159, + "src": "23443:9:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1042, + "name": "_startWeights", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 162, + "src": "23466:13:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage", + "typeString": "uint256[] storage ref" + } + }, + { + "argumentTypes": null, + "id": 1043, + "name": "_newWeights", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 165, + "src": "23493:11:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage", + "typeString": "uint256[] storage ref" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IBPool_$2256", + "typeString": "contract IBPool" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage", + "typeString": "uint256[] storage ref" + }, + { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage", + "typeString": "uint256[] storage ref" + } + ], + "expression": { + "argumentTypes": null, + "id": 1036, + "name": "SmartPoolManager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10277, + "src": "23351:16:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_SmartPoolManager_$10277_$", + "typeString": "type(library SmartPoolManager)" + } + }, + "id": 1038, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "pokeWeights", + "nodeType": "MemberAccess", + "referencedDeclaration": 9237, + "src": "23351:28:1", + "typeDescriptions": { + "typeIdentifier": "t_function_delegatecall_nonpayable$_t_contract$_IBPool_$2256_$_t_uint256_$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$", + "typeString": "function (contract IBPool,uint256,uint256,uint256[] memory,uint256[] memory)" + } + }, + "id": 1044, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "23351:163:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1045, + "nodeType": "ExpressionStatement", + "src": "23351:163:1" + } + ] + }, + "documentation": { + "id": 1007, + "nodeType": "StructuredDocumentation", + "src": "22553:286:1", + "text": " @notice External function called to make the contract update weights according to plan\n @dev Still works if we poke after the end of the period; also works if the weights don't change\n Resets if we are poking beyond the end, so that we can do it again" + }, + "functionSelector": "e211b875", + "id": 1047, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 1010, + "modifierName": { + "argumentTypes": null, + "id": 1009, + "name": "logs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 220, + "src": "22892:4:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "22892:4:1" + }, + { + "arguments": null, + "id": 1012, + "modifierName": { + "argumentTypes": null, + "id": 1011, + "name": "lock", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8124, + "src": "22905:4:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "22905:4:1" + }, + { + "arguments": null, + "id": 1014, + "modifierName": { + "argumentTypes": null, + "id": 1013, + "name": "needsBPool", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 237, + "src": "22918:10:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "22918:10:1" + } + ], + "name": "pokeWeights", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 1008, + "nodeType": "ParameterList", + "parameters": [], + "src": "22864:2:1" + }, + "returnParameters": { + "id": 1015, + "nodeType": "ParameterList", + "parameters": [], + "src": "22949:0:1" + }, + "scope": 2095, + "src": "22844:677:1", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "external" + }, + { + "body": { + "id": 1088, + "nodeType": "Block", + "src": "24217:427:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1066, + "name": "rights", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 145, + "src": "24235:6:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Rights_$8553_storage", + "typeString": "struct RightsManager.Rights storage ref" + } + }, + "id": 1067, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "canAddRemoveTokens", + "nodeType": "MemberAccess", + "referencedDeclaration": 8548, + "src": "24235:25:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552525f43414e4e4f545f4144445f52454d4f56455f544f4b454e53", + "id": 1068, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "24262:30:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_086adc46dfb96cd48c88a20079677dbe8b7c6a02d6b4d573b696c06700cd9ed3", + "typeString": "literal_string \"ERR_CANNOT_ADD_REMOVE_TOKENS\"" + }, + "value": "ERR_CANNOT_ADD_REMOVE_TOKENS" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_086adc46dfb96cd48c88a20079677dbe8b7c6a02d6b4d573b696c06700cd9ed3", + "typeString": "literal_string \"ERR_CANNOT_ADD_REMOVE_TOKENS\"" + } + ], + "id": 1065, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "24227:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1069, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "24227:66:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1070, + "nodeType": "ExpressionStatement", + "src": "24227:66:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1074, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1072, + "name": "_startBlock", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 157, + "src": "24377:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1073, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "24392:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "24377:16:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552525f4e4f5f5550444154455f445552494e475f4752414455414c", + "id": 1075, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "24395:30:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_e775cf450dfd0b6c05b10d56c73999d8a54c6ffc6ae3176075a4c3587e2c174e", + "typeString": "literal_string \"ERR_NO_UPDATE_DURING_GRADUAL\"" + }, + "value": "ERR_NO_UPDATE_DURING_GRADUAL" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_e775cf450dfd0b6c05b10d56c73999d8a54c6ffc6ae3176075a4c3587e2c174e", + "typeString": "literal_string \"ERR_NO_UPDATE_DURING_GRADUAL\"" + } + ], + "id": 1071, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "24369:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1076, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "24369:57:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1077, + "nodeType": "ExpressionStatement", + "src": "24369:57:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1081, + "name": "bPool", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 143, + "src": "24527:5:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBPool_$2256", + "typeString": "contract IBPool" + } + }, + { + "argumentTypes": null, + "id": 1082, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1050, + "src": "24546:5:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1083, + "name": "balance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1052, + "src": "24565:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1084, + "name": "denormalizedWeight", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1054, + "src": "24586:18:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1085, + "name": "_newToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 147, + "src": "24618:9:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_NewToken_$8767_storage", + "typeString": "struct SmartPoolManager.NewToken storage ref" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IBPool_$2256", + "typeString": "contract IBPool" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_struct$_NewToken_$8767_storage", + "typeString": "struct SmartPoolManager.NewToken storage ref" + } + ], + "expression": { + "argumentTypes": null, + "id": 1078, + "name": "SmartPoolManager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10277, + "src": "24482:16:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_SmartPoolManager_$10277_$", + "typeString": "type(library SmartPoolManager)" + } + }, + "id": 1080, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "commitAddToken", + "nodeType": "MemberAccess", + "referencedDeclaration": 9322, + "src": "24482:31:1", + "typeDescriptions": { + "typeIdentifier": "t_function_delegatecall_nonpayable$_t_contract$_IBPool_$2256_$_t_address_$_t_uint256_$_t_uint256_$_t_struct$_NewToken_$8767_storage_ptr_$returns$__$", + "typeString": "function (contract IBPool,address,uint256,uint256,struct SmartPoolManager.NewToken storage pointer)" + } + }, + "id": 1086, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "24482:155:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1087, + "nodeType": "ExpressionStatement", + "src": "24482:155:1" + } + ] + }, + "documentation": { + "id": 1048, + "nodeType": "StructuredDocumentation", + "src": "23527:477:1", + "text": " @notice Schedule (commit) a token to be added; must call applyAddToken after a fixed\n number of blocks to actually add the token\n @dev Not sure about the naming here. Kind of reversed; I would think you would \"Apply\" to add\n a token, then \"Commit\" it to actually do the binding.\n @param token - the token to be added\n @param balance - how much to be added\n @param denormalizedWeight - the desired token weight" + }, + "functionSelector": "4c20d209", + "id": 1089, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 1057, + "modifierName": { + "argumentTypes": null, + "id": 1056, + "name": "logs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 220, + "src": "24142:4:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "24142:4:1" + }, + { + "arguments": null, + "id": 1059, + "modifierName": { + "argumentTypes": null, + "id": 1058, + "name": "lock", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8124, + "src": "24155:4:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "24155:4:1" + }, + { + "arguments": null, + "id": 1061, + "modifierName": { + "argumentTypes": null, + "id": 1060, + "name": "onlyOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8037, + "src": "24168:9:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "24168:9:1" + }, + { + "arguments": null, + "id": 1063, + "modifierName": { + "argumentTypes": null, + "id": 1062, + "name": "needsBPool", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 237, + "src": "24186:10:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "24186:10:1" + } + ], + "name": "commitAddToken", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 1055, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1050, + "mutability": "mutable", + "name": "token", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1089, + "src": "24042:13:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1049, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "24042:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1052, + "mutability": "mutable", + "name": "balance", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1089, + "src": "24065:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1051, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "24065:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1054, + "mutability": "mutable", + "name": "denormalizedWeight", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1089, + "src": "24087:23:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1053, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "24087:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "24032:84:1" + }, + "returnParameters": { + "id": 1064, + "nodeType": "ParameterList", + "parameters": [], + "src": "24217:0:1" + }, + "scope": 2095, + "src": "24009:635:1", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "external" + }, + { + "body": { + "id": 1116, + "nodeType": "Block", + "src": "24873:278:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1102, + "name": "rights", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 145, + "src": "24891:6:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Rights_$8553_storage", + "typeString": "struct RightsManager.Rights storage ref" + } + }, + "id": 1103, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "canAddRemoveTokens", + "nodeType": "MemberAccess", + "referencedDeclaration": 8548, + "src": "24891:25:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552525f43414e4e4f545f4144445f52454d4f56455f544f4b454e53", + "id": 1104, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "24918:30:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_086adc46dfb96cd48c88a20079677dbe8b7c6a02d6b4d573b696c06700cd9ed3", + "typeString": "literal_string \"ERR_CANNOT_ADD_REMOVE_TOKENS\"" + }, + "value": "ERR_CANNOT_ADD_REMOVE_TOKENS" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_086adc46dfb96cd48c88a20079677dbe8b7c6a02d6b4d573b696c06700cd9ed3", + "typeString": "literal_string \"ERR_CANNOT_ADD_REMOVE_TOKENS\"" + } + ], + "id": 1101, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "24883:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1105, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "24883:66:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1106, + "nodeType": "ExpressionStatement", + "src": "24883:66:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1110, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "25049:4:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ConfigurableRightsPool_$2095", + "typeString": "contract ConfigurableRightsPool" + } + }, + { + "argumentTypes": null, + "id": 1111, + "name": "bPool", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 143, + "src": "25067:5:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBPool_$2256", + "typeString": "contract IBPool" + } + }, + { + "argumentTypes": null, + "id": 1112, + "name": "_addTokenTimeLockInBlocks", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 169, + "src": "25086:25:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1113, + "name": "_newToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 147, + "src": "25125:9:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_NewToken_$8767_storage", + "typeString": "struct SmartPoolManager.NewToken storage ref" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ConfigurableRightsPool_$2095", + "typeString": "contract ConfigurableRightsPool" + }, + { + "typeIdentifier": "t_contract$_IBPool_$2256", + "typeString": "contract IBPool" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_struct$_NewToken_$8767_storage", + "typeString": "struct SmartPoolManager.NewToken storage ref" + } + ], + "expression": { + "argumentTypes": null, + "id": 1107, + "name": "SmartPoolManager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10277, + "src": "25005:16:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_SmartPoolManager_$10277_$", + "typeString": "type(library SmartPoolManager)" + } + }, + "id": 1109, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "applyAddToken", + "nodeType": "MemberAccess", + "referencedDeclaration": 9452, + "src": "25005:30:1", + "typeDescriptions": { + "typeIdentifier": "t_function_delegatecall_nonpayable$_t_contract$_ConfigurableRightsPool_$2095_$_t_contract$_IBPool_$2256_$_t_uint256_$_t_struct$_NewToken_$8767_storage_ptr_$returns$__$", + "typeString": "function (contract ConfigurableRightsPool,contract IBPool,uint256,struct SmartPoolManager.NewToken storage pointer)" + } + }, + "id": 1114, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "25005:139:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1115, + "nodeType": "ExpressionStatement", + "src": "25005:139:1" + } + ] + }, + "documentation": { + "id": 1090, + "nodeType": "StructuredDocumentation", + "src": "24650:93:1", + "text": " @notice Add the token previously committed (in commitAddToken) to the pool" + }, + "functionSelector": "c275d81b", + "id": 1117, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 1093, + "modifierName": { + "argumentTypes": null, + "id": 1092, + "name": "logs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 220, + "src": "24798:4:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "24798:4:1" + }, + { + "arguments": null, + "id": 1095, + "modifierName": { + "argumentTypes": null, + "id": 1094, + "name": "lock", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8124, + "src": "24811:4:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "24811:4:1" + }, + { + "arguments": null, + "id": 1097, + "modifierName": { + "argumentTypes": null, + "id": 1096, + "name": "onlyOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8037, + "src": "24824:9:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "24824:9:1" + }, + { + "arguments": null, + "id": 1099, + "modifierName": { + "argumentTypes": null, + "id": 1098, + "name": "needsBPool", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 237, + "src": "24842:10:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "24842:10:1" + } + ], + "name": "applyAddToken", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 1091, + "nodeType": "ParameterList", + "parameters": [], + "src": "24770:2:1" + }, + "returnParameters": { + "id": 1100, + "nodeType": "ParameterList", + "parameters": [], + "src": "24873:0:1" + }, + "scope": 2095, + "src": "24748:403:1", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "external" + }, + { + "body": { + "id": 1170, + "nodeType": "Block", + "src": "25453:541:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1132, + "name": "rights", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 145, + "src": "25471:6:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Rights_$8553_storage", + "typeString": "struct RightsManager.Rights storage ref" + } + }, + "id": 1133, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "canAddRemoveTokens", + "nodeType": "MemberAccess", + "referencedDeclaration": 8548, + "src": "25471:25:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552525f43414e4e4f545f4144445f52454d4f56455f544f4b454e53", + "id": 1134, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "25498:30:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_086adc46dfb96cd48c88a20079677dbe8b7c6a02d6b4d573b696c06700cd9ed3", + "typeString": "literal_string \"ERR_CANNOT_ADD_REMOVE_TOKENS\"" + }, + "value": "ERR_CANNOT_ADD_REMOVE_TOKENS" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_086adc46dfb96cd48c88a20079677dbe8b7c6a02d6b4d573b696c06700cd9ed3", + "typeString": "literal_string \"ERR_CANNOT_ADD_REMOVE_TOKENS\"" + } + ], + "id": 1131, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "25463:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1135, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "25463:66:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1136, + "nodeType": "ExpressionStatement", + "src": "25463:66:1" + }, + { + "assignments": [ + 1141 + ], + "declarations": [ + { + "constant": false, + "id": 1141, + "mutability": "mutable", + "name": "poolTokens", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1170, + "src": "25617:27:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 1139, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "25617:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1140, + "length": null, + "nodeType": "ArrayTypeName", + "src": "25617:9:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1145, + "initialValue": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 1142, + "name": "bPool", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 143, + "src": "25647:5:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBPool_$2256", + "typeString": "contract IBPool" + } + }, + "id": 1143, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "getCurrentTokens", + "nodeType": "MemberAccess", + "referencedDeclaration": 2255, + "src": "25647:22:1", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$__$returns$_t_array$_t_address_$dyn_memory_ptr_$", + "typeString": "function () view external returns (address[] memory)" + } + }, + "id": 1144, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "25647:24:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "25617:54:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1151, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1147, + "name": "poolTokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1141, + "src": "25690:10:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 1148, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "25690:17:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1149, + "name": "BalancerConstants", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8223, + "src": "25710:17:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_BalancerConstants_$8223_$", + "typeString": "type(library BalancerConstants)" + } + }, + "id": 1150, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "MIN_ASSET_LIMIT", + "nodeType": "MemberAccess", + "referencedDeclaration": 8206, + "src": "25710:33:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "25690:53:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552525f544f4f5f4645575f544f4b454e53", + "id": 1152, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "25745:20:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c66fc8e373d3f5684badc6f480386803cc92f3179419beb5482d8d0d61d61093", + "typeString": "literal_string \"ERR_TOO_FEW_TOKENS\"" + }, + "value": "ERR_TOO_FEW_TOKENS" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_c66fc8e373d3f5684badc6f480386803cc92f3179419beb5482d8d0d61d61093", + "typeString": "literal_string \"ERR_TOO_FEW_TOKENS\"" + } + ], + "id": 1146, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "25682:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1153, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "25682:84:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1154, + "nodeType": "ExpressionStatement", + "src": "25682:84:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1158, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "25784:22:1", + "subExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1156, + "name": "_newToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 147, + "src": "25785:9:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_NewToken_$8767_storage", + "typeString": "struct SmartPoolManager.NewToken storage ref" + } + }, + "id": 1157, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "isCommitted", + "nodeType": "MemberAccess", + "referencedDeclaration": 8760, + "src": "25785:21:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552525f52454d4f56455f574954485f4144445f50454e44494e47", + "id": 1159, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "25808:29:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_cbd062a4107f5b1b391b6b09655b96d0c5c9e3929a780289570d57c8d08aaad2", + "typeString": "literal_string \"ERR_REMOVE_WITH_ADD_PENDING\"" + }, + "value": "ERR_REMOVE_WITH_ADD_PENDING" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_cbd062a4107f5b1b391b6b09655b96d0c5c9e3929a780289570d57c8d08aaad2", + "typeString": "literal_string \"ERR_REMOVE_WITH_ADD_PENDING\"" + } + ], + "id": 1155, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "25776:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1160, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "25776:62:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1161, + "nodeType": "ExpressionStatement", + "src": "25776:62:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1165, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "25936:4:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ConfigurableRightsPool_$2095", + "typeString": "contract ConfigurableRightsPool" + } + }, + { + "argumentTypes": null, + "id": 1166, + "name": "bPool", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 143, + "src": "25954:5:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBPool_$2256", + "typeString": "contract IBPool" + } + }, + { + "argumentTypes": null, + "id": 1167, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1120, + "src": "25973:5:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ConfigurableRightsPool_$2095", + "typeString": "contract ConfigurableRightsPool" + }, + { + "typeIdentifier": "t_contract$_IBPool_$2256", + "typeString": "contract IBPool" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 1162, + "name": "SmartPoolManager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10277, + "src": "25894:16:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_SmartPoolManager_$10277_$", + "typeString": "type(library SmartPoolManager)" + } + }, + "id": 1164, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "removeToken", + "nodeType": "MemberAccess", + "referencedDeclaration": 9531, + "src": "25894:28:1", + "typeDescriptions": { + "typeIdentifier": "t_function_delegatecall_nonpayable$_t_contract$_ConfigurableRightsPool_$2095_$_t_contract$_IBPool_$2256_$_t_address_$returns$__$", + "typeString": "function (contract ConfigurableRightsPool,contract IBPool,address)" + } + }, + "id": 1168, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "25894:94:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1169, + "nodeType": "ExpressionStatement", + "src": "25894:94:1" + } + ] + }, + "documentation": { + "id": 1118, + "nodeType": "StructuredDocumentation", + "src": "25158:170:1", + "text": " @notice Remove a token from the pool\n @dev bPool is a contract interface; function calls on it are external\n @param token - token to remove" + }, + "functionSelector": "5fa7b584", + "id": 1171, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 1123, + "modifierName": { + "argumentTypes": null, + "id": 1122, + "name": "logs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 220, + "src": "25394:4:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "25394:4:1" + }, + { + "arguments": null, + "id": 1125, + "modifierName": { + "argumentTypes": null, + "id": 1124, + "name": "lock", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8124, + "src": "25407:4:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "25407:4:1" + }, + { + "arguments": null, + "id": 1127, + "modifierName": { + "argumentTypes": null, + "id": 1126, + "name": "onlyOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8037, + "src": "25420:9:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "25420:9:1" + }, + { + "arguments": null, + "id": 1129, + "modifierName": { + "argumentTypes": null, + "id": 1128, + "name": "needsBPool", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 237, + "src": "25438:10:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "25438:10:1" + } + ], + "name": "removeToken", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 1121, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1120, + "mutability": "mutable", + "name": "token", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1171, + "src": "25354:13:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1119, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "25354:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "25353:15:1" + }, + "returnParameters": { + "id": 1130, + "nodeType": "ParameterList", + "parameters": [], + "src": "25453:0:1" + }, + "scope": 2095, + "src": "25333:661:1", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 1271, + "nodeType": "Block", + "src": "26452:1262:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 1196, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1191, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "26470:23:1", + "subExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1189, + "name": "rights", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 145, + "src": "26471:6:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Rights_$8553_storage", + "typeString": "struct RightsManager.Rights storage ref" + } + }, + "id": 1190, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "canWhitelistLPs", + "nodeType": "MemberAccess", + "referencedDeclaration": 8550, + "src": "26471:22:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1192, + "name": "_liquidityProviderWhitelist", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 173, + "src": "26497:27:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 1195, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1193, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "26525:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1194, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "26525:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "26497:39:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "26470:66:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552525f4e4f545f4f4e5f57484954454c495354", + "id": 1197, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "26554:22:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_3c13f58ce0bd1962da9b96dc93ede754fa20490e2080e4b0ace03b9a3a4637ee", + "typeString": "literal_string \"ERR_NOT_ON_WHITELIST\"" + }, + "value": "ERR_NOT_ON_WHITELIST" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_3c13f58ce0bd1962da9b96dc93ede754fa20490e2080e4b0ace03b9a3a4637ee", + "typeString": "literal_string \"ERR_NOT_ON_WHITELIST\"" + } + ], + "id": 1188, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "26462:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1198, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "26462:115:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1199, + "nodeType": "ExpressionStatement", + "src": "26462:115:1" + }, + { + "assignments": [ + 1204 + ], + "declarations": [ + { + "constant": false, + "id": 1204, + "mutability": "mutable", + "name": "actualAmountsIn", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1271, + "src": "26881:29:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 1202, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "26881:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1203, + "length": null, + "nodeType": "ArrayTypeName", + "src": "26881:6:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1212, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1207, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "26984:4:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ConfigurableRightsPool_$2095", + "typeString": "contract ConfigurableRightsPool" + } + }, + { + "argumentTypes": null, + "id": 1208, + "name": "bPool", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 143, + "src": "27034:5:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBPool_$2256", + "typeString": "contract IBPool" + } + }, + { + "argumentTypes": null, + "id": 1209, + "name": "poolAmountOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1174, + "src": "27085:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1210, + "name": "maxAmountsIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1177, + "src": "27144:12:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[] calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ConfigurableRightsPool_$2095", + "typeString": "contract ConfigurableRightsPool" + }, + { + "typeIdentifier": "t_contract$_IBPool_$2256", + "typeString": "contract IBPool" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[] calldata" + } + ], + "expression": { + "argumentTypes": null, + "id": 1205, + "name": "SmartPoolManager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10277, + "src": "26913:16:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_SmartPoolManager_$10277_$", + "typeString": "type(library SmartPoolManager)" + } + }, + "id": 1206, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "joinPool", + "nodeType": "MemberAccess", + "referencedDeclaration": 9810, + "src": "26913:25:1", + "typeDescriptions": { + "typeIdentifier": "t_function_delegatecall_view$_t_contract$_ConfigurableRightsPool_$2095_$_t_contract$_IBPool_$2256_$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$", + "typeString": "function (contract ConfigurableRightsPool,contract IBPool,uint256,uint256[] memory) view returns (uint256[] memory)" + } + }, + "id": 1211, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "26913:285:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "26881:317:1" + }, + { + "assignments": [ + 1217 + ], + "declarations": [ + { + "constant": false, + "id": 1217, + "mutability": "mutable", + "name": "poolTokens", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1271, + "src": "27287:27:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 1215, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "27287:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1216, + "length": null, + "nodeType": "ArrayTypeName", + "src": "27287:9:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1221, + "initialValue": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 1218, + "name": "bPool", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 143, + "src": "27317:5:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBPool_$2256", + "typeString": "contract IBPool" + } + }, + "id": 1219, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "getCurrentTokens", + "nodeType": "MemberAccess", + "referencedDeclaration": 2255, + "src": "27317:22:1", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$__$returns$_t_array$_t_address_$dyn_memory_ptr_$", + "typeString": "function () view external returns (address[] memory)" + } + }, + "id": 1220, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "27317:24:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "27287:54:1" + }, + { + "body": { + "id": 1259, + "nodeType": "Block", + "src": "27397:220:1", + "statements": [ + { + "assignments": [ + 1234 + ], + "declarations": [ + { + "constant": false, + "id": 1234, + "mutability": "mutable", + "name": "t", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1259, + "src": "27411:9:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1233, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "27411:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1238, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1235, + "name": "poolTokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1217, + "src": "27423:10:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 1237, + "indexExpression": { + "argumentTypes": null, + "id": 1236, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1223, + "src": "27434:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "27423:13:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "27411:25:1" + }, + { + "assignments": [ + 1240 + ], + "declarations": [ + { + "constant": false, + "id": 1240, + "mutability": "mutable", + "name": "tokenAmountIn", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1259, + "src": "27450:18:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1239, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "27450:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1244, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1241, + "name": "actualAmountsIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1204, + "src": "27471:15:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 1243, + "indexExpression": { + "argumentTypes": null, + "id": 1242, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1223, + "src": "27487:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "27471:18:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "27450:39:1" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1246, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "27517:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1247, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "27517:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 1248, + "name": "t", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1234, + "src": "27529:1:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1249, + "name": "tokenAmountIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1240, + "src": "27532:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1245, + "name": "LogJoin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 191, + "src": "27509:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 1250, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "27509:37:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1251, + "nodeType": "EmitStatement", + "src": "27504:42:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1253, + "name": "t", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1234, + "src": "27577:1:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1254, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "27580:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1255, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "27580:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 1256, + "name": "tokenAmountIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1240, + "src": "27592:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1252, + "name": "_pullUnderlying", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1993, + "src": "27561:15:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 1257, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "27561:45:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1258, + "nodeType": "ExpressionStatement", + "src": "27561:45:1" + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1229, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1226, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1223, + "src": "27369:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1227, + "name": "poolTokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1217, + "src": "27373:10:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 1228, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "27373:17:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "27369:21:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1260, + "initializationExpression": { + "assignments": [ + 1223 + ], + "declarations": [ + { + "constant": false, + "id": 1223, + "mutability": "mutable", + "name": "i", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1260, + "src": "27357:6:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1222, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "27357:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1225, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 1224, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "27366:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "27357:10:1" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 1231, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "27392:3:1", + "subExpression": { + "argumentTypes": null, + "id": 1230, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1223, + "src": "27392:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1232, + "nodeType": "ExpressionStatement", + "src": "27392:3:1" + }, + "nodeType": "ForStatement", + "src": "27352:265:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1262, + "name": "poolAmountOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1174, + "src": "27642:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1261, + "name": "_mintPoolShare", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2058, + "src": "27627:14:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256)" + } + }, + "id": 1263, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "27627:29:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1264, + "nodeType": "ExpressionStatement", + "src": "27627:29:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1266, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "27681:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1267, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "27681:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 1268, + "name": "poolAmountOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1174, + "src": "27693:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1265, + "name": "_pushPoolShare", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2071, + "src": "27666:14:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 1269, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "27666:41:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1270, + "nodeType": "ExpressionStatement", + "src": "27666:41:1" + } + ] + }, + "documentation": { + "id": 1172, + "nodeType": "StructuredDocumentation", + "src": "26000:294:1", + "text": " @notice Join a pool\n @dev Emits a LogJoin event (for each token)\n bPool is a contract interface; function calls on it are external\n @param poolAmountOut - number of pool tokens to receive\n @param maxAmountsIn - Max amount of asset tokens to spend" + }, + "functionSelector": "4f69c0d4", + "id": 1272, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 1180, + "modifierName": { + "argumentTypes": null, + "id": 1179, + "name": "logs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 220, + "src": "26393:4:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "26393:4:1" + }, + { + "arguments": null, + "id": 1182, + "modifierName": { + "argumentTypes": null, + "id": 1181, + "name": "lock", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8124, + "src": "26406:4:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "26406:4:1" + }, + { + "arguments": null, + "id": 1184, + "modifierName": { + "argumentTypes": null, + "id": 1183, + "name": "needsBPool", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 237, + "src": "26419:10:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "26419:10:1" + }, + { + "arguments": null, + "id": 1186, + "modifierName": { + "argumentTypes": null, + "id": 1185, + "name": "withinCap", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 250, + "src": "26438:9:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "26438:9:1" + } + ], + "name": "joinPool", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 1178, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1174, + "mutability": "mutable", + "name": "poolAmountOut", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1272, + "src": "26317:18:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1173, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "26317:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1177, + "mutability": "mutable", + "name": "maxAmountsIn", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1272, + "src": "26337:28:1", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 1175, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "26337:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1176, + "length": null, + "nodeType": "ArrayTypeName", + "src": "26337:6:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "26316:50:1" + }, + "returnParameters": { + "id": 1187, + "nodeType": "ParameterList", + "parameters": [], + "src": "26452:0:1" + }, + "scope": 2095, + "src": "26299:1415:1", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 1368, + "nodeType": "Block", + "src": "28199:1147:1", + "statements": [ + { + "assignments": [ + 1288, + 1290, + 1293 + ], + "declarations": [ + { + "constant": false, + "id": 1288, + "mutability": "mutable", + "name": "exitFee", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1368, + "src": "28385:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1287, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "28385:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1290, + "mutability": "mutable", + "name": "pAiAfterExitFee", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1368, + "src": "28408:20:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1289, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "28408:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1293, + "mutability": "mutable", + "name": "actualAmountsOut", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1368, + "src": "28439:30:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 1291, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "28439:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1292, + "length": null, + "nodeType": "ArrayTypeName", + "src": "28439:6:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1301, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1296, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "28547:4:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ConfigurableRightsPool_$2095", + "typeString": "contract ConfigurableRightsPool" + } + }, + { + "argumentTypes": null, + "id": 1297, + "name": "bPool", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 143, + "src": "28600:5:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBPool_$2256", + "typeString": "contract IBPool" + } + }, + { + "argumentTypes": null, + "id": 1298, + "name": "poolAmountIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1275, + "src": "28654:12:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1299, + "name": "minAmountsOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1278, + "src": "28715:13:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[] calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ConfigurableRightsPool_$2095", + "typeString": "contract ConfigurableRightsPool" + }, + { + "typeIdentifier": "t_contract$_IBPool_$2256", + "typeString": "contract IBPool" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[] calldata" + } + ], + "expression": { + "argumentTypes": null, + "id": 1294, + "name": "SmartPoolManager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10277, + "src": "28473:16:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_SmartPoolManager_$10277_$", + "typeString": "type(library SmartPoolManager)" + } + }, + "id": 1295, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "exitPool", + "nodeType": "MemberAccess", + "referencedDeclaration": 9956, + "src": "28473:25:1", + "typeDescriptions": { + "typeIdentifier": "t_function_delegatecall_view$_t_contract$_ConfigurableRightsPool_$2095_$_t_contract$_IBPool_$2256_$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$_t_uint256_$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$", + "typeString": "function (contract ConfigurableRightsPool,contract IBPool,uint256,uint256[] memory) view returns (uint256,uint256,uint256[] memory)" + } + }, + "id": 1300, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "28473:300:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$", + "typeString": "tuple(uint256,uint256,uint256[] memory)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "28384:389:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1303, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "28799:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1304, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "28799:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 1305, + "name": "poolAmountIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1275, + "src": "28811:12:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1302, + "name": "_pullPoolShare", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2084, + "src": "28784:14:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 1306, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "28784:40:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1307, + "nodeType": "ExpressionStatement", + "src": "28784:40:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1311, + "name": "bFactory", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 141, + "src": "28857:8:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBFactory_$2284", + "typeString": "contract IBFactory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IBFactory_$2284", + "typeString": "contract IBFactory" + } + ], + "id": 1310, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "28849:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1309, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "28849:7:1", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 1312, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "28849:17:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1313, + "name": "exitFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1288, + "src": "28868:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1308, + "name": "_pushPoolShare", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2071, + "src": "28834:14:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 1314, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "28834:42:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1315, + "nodeType": "ExpressionStatement", + "src": "28834:42:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1317, + "name": "pAiAfterExitFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1290, + "src": "28901:15:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1316, + "name": "_burnPoolShare", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2094, + "src": "28886:14:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256)" + } + }, + "id": 1318, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "28886:31:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1319, + "nodeType": "ExpressionStatement", + "src": "28886:31:1" + }, + { + "assignments": [ + 1324 + ], + "declarations": [ + { + "constant": false, + "id": 1324, + "mutability": "mutable", + "name": "poolTokens", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1368, + "src": "29006:27:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 1322, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "29006:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1323, + "length": null, + "nodeType": "ArrayTypeName", + "src": "29006:9:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1328, + "initialValue": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 1325, + "name": "bPool", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 143, + "src": "29036:5:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBPool_$2256", + "typeString": "contract IBPool" + } + }, + "id": 1326, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "getCurrentTokens", + "nodeType": "MemberAccess", + "referencedDeclaration": 2255, + "src": "29036:22:1", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$__$returns$_t_array$_t_address_$dyn_memory_ptr_$", + "typeString": "function () view external returns (address[] memory)" + } + }, + "id": 1327, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "29036:24:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "29006:54:1" + }, + { + "body": { + "id": 1366, + "nodeType": "Block", + "src": "29116:224:1", + "statements": [ + { + "assignments": [ + 1341 + ], + "declarations": [ + { + "constant": false, + "id": 1341, + "mutability": "mutable", + "name": "t", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1366, + "src": "29130:9:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1340, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "29130:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1345, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1342, + "name": "poolTokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1324, + "src": "29142:10:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 1344, + "indexExpression": { + "argumentTypes": null, + "id": 1343, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1330, + "src": "29153:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "29142:13:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "29130:25:1" + }, + { + "assignments": [ + 1347 + ], + "declarations": [ + { + "constant": false, + "id": 1347, + "mutability": "mutable", + "name": "tokenAmountOut", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1366, + "src": "29169:19:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1346, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "29169:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1351, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1348, + "name": "actualAmountsOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1293, + "src": "29191:16:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 1350, + "indexExpression": { + "argumentTypes": null, + "id": 1349, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1330, + "src": "29208:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "29191:19:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "29169:41:1" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1353, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "29238:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1354, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "29238:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 1355, + "name": "t", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1341, + "src": "29250:1:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1356, + "name": "tokenAmountOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1347, + "src": "29253:14:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1352, + "name": "LogExit", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 199, + "src": "29230:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 1357, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "29230:38:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1358, + "nodeType": "EmitStatement", + "src": "29225:43:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1360, + "name": "t", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1341, + "src": "29299:1:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1361, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "29302:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1362, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "29302:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 1363, + "name": "tokenAmountOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1347, + "src": "29314:14:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1359, + "name": "_pushUnderlying", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2046, + "src": "29283:15:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 1364, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "29283:46:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1365, + "nodeType": "ExpressionStatement", + "src": "29283:46:1" + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1336, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1333, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1330, + "src": "29088:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1334, + "name": "poolTokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1324, + "src": "29092:10:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 1335, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "29092:17:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "29088:21:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1367, + "initializationExpression": { + "assignments": [ + 1330 + ], + "declarations": [ + { + "constant": false, + "id": 1330, + "mutability": "mutable", + "name": "i", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1367, + "src": "29076:6:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1329, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "29076:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1332, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 1331, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "29085:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "29076:10:1" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 1338, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "29111:3:1", + "subExpression": { + "argumentTypes": null, + "id": 1337, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1330, + "src": "29111:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1339, + "nodeType": "ExpressionStatement", + "src": "29111:3:1" + }, + "nodeType": "ForStatement", + "src": "29071:269:1" + } + ] + }, + "documentation": { + "id": 1273, + "nodeType": "StructuredDocumentation", + "src": "27720:340:1", + "text": " @notice Exit a pool - redeem pool tokens for underlying assets\n @dev Emits a LogExit event for each token\n bPool is a contract interface; function calls on it are external\n @param poolAmountIn - amount of pool tokens to redeem\n @param minAmountsOut - minimum amount of asset tokens to receive" + }, + "functionSelector": "b02f0b73", + "id": 1369, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 1281, + "modifierName": { + "argumentTypes": null, + "id": 1280, + "name": "logs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 220, + "src": "28158:4:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "28158:4:1" + }, + { + "arguments": null, + "id": 1283, + "modifierName": { + "argumentTypes": null, + "id": 1282, + "name": "lock", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8124, + "src": "28171:4:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "28171:4:1" + }, + { + "arguments": null, + "id": 1285, + "modifierName": { + "argumentTypes": null, + "id": 1284, + "name": "needsBPool", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 237, + "src": "28184:10:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "28184:10:1" + } + ], + "name": "exitPool", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 1279, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1275, + "mutability": "mutable", + "name": "poolAmountIn", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1369, + "src": "28083:17:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1274, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "28083:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1278, + "mutability": "mutable", + "name": "minAmountsOut", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1369, + "src": "28102:29:1", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 1276, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "28102:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1277, + "length": null, + "nodeType": "ArrayTypeName", + "src": "28102:6:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "28082:50:1" + }, + "returnParameters": { + "id": 1286, + "nodeType": "ParameterList", + "parameters": [], + "src": "28199:0:1" + }, + "scope": 2095, + "src": "28065:1281:1", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 1438, + "nodeType": "Block", + "src": "30050:706:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 1397, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1392, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "30068:23:1", + "subExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1390, + "name": "rights", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 145, + "src": "30069:6:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Rights_$8553_storage", + "typeString": "struct RightsManager.Rights storage ref" + } + }, + "id": 1391, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "canWhitelistLPs", + "nodeType": "MemberAccess", + "referencedDeclaration": 8550, + "src": "30069:22:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1393, + "name": "_liquidityProviderWhitelist", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 173, + "src": "30095:27:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 1396, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1394, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "30123:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1395, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "30123:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "30095:39:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "30068:66:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552525f4e4f545f4f4e5f57484954454c495354", + "id": 1398, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "30152:22:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_3c13f58ce0bd1962da9b96dc93ede754fa20490e2080e4b0ace03b9a3a4637ee", + "typeString": "literal_string \"ERR_NOT_ON_WHITELIST\"" + }, + "value": "ERR_NOT_ON_WHITELIST" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_3c13f58ce0bd1962da9b96dc93ede754fa20490e2080e4b0ace03b9a3a4637ee", + "typeString": "literal_string \"ERR_NOT_ON_WHITELIST\"" + } + ], + "id": 1389, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "30060:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1399, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "30060:115:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1400, + "nodeType": "ExpressionStatement", + "src": "30060:115:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 1410, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1401, + "name": "poolAmountOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1387, + "src": "30231:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1404, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "30316:4:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ConfigurableRightsPool_$2095", + "typeString": "contract ConfigurableRightsPool" + } + }, + { + "argumentTypes": null, + "id": 1405, + "name": "bPool", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 143, + "src": "30350:5:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBPool_$2256", + "typeString": "contract IBPool" + } + }, + { + "argumentTypes": null, + "id": 1406, + "name": "tokenIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1372, + "src": "30385:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1407, + "name": "tokenAmountIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1374, + "src": "30422:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1408, + "name": "minPoolAmountOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1376, + "src": "30465:16:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ConfigurableRightsPool_$2095", + "typeString": "contract ConfigurableRightsPool" + }, + { + "typeIdentifier": "t_contract$_IBPool_$2256", + "typeString": "contract IBPool" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 1402, + "name": "SmartPoolManager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10277, + "src": "30247:16:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_SmartPoolManager_$10277_$", + "typeString": "type(library SmartPoolManager)" + } + }, + "id": 1403, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "joinswapExternAmountIn", + "nodeType": "MemberAccess", + "referencedDeclaration": 10027, + "src": "30247:39:1", + "typeDescriptions": { + "typeIdentifier": "t_function_delegatecall_view$_t_contract$_ConfigurableRightsPool_$2095_$_t_contract$_IBPool_$2256_$_t_address_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (contract ConfigurableRightsPool,contract IBPool,address,uint256,uint256) view returns (uint256)" + } + }, + "id": 1409, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "30247:260:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "30231:276:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1411, + "nodeType": "ExpressionStatement", + "src": "30231:276:1" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1413, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "30531:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1414, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "30531:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 1415, + "name": "tokenIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1372, + "src": "30543:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1416, + "name": "tokenAmountIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1374, + "src": "30552:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1412, + "name": "LogJoin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 191, + "src": "30523:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 1417, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "30523:43:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1418, + "nodeType": "EmitStatement", + "src": "30518:48:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1420, + "name": "poolAmountOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1387, + "src": "30592:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1419, + "name": "_mintPoolShare", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2058, + "src": "30577:14:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256)" + } + }, + "id": 1421, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "30577:29:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1422, + "nodeType": "ExpressionStatement", + "src": "30577:29:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1424, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "30631:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1425, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "30631:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 1426, + "name": "poolAmountOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1387, + "src": "30643:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1423, + "name": "_pushPoolShare", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2071, + "src": "30616:14:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 1427, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "30616:41:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1428, + "nodeType": "ExpressionStatement", + "src": "30616:41:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1430, + "name": "tokenIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1372, + "src": "30683:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1431, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "30692:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1432, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "30692:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 1433, + "name": "tokenAmountIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1374, + "src": "30704:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1429, + "name": "_pullUnderlying", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1993, + "src": "30667:15:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 1434, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "30667:51:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1435, + "nodeType": "ExpressionStatement", + "src": "30667:51:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 1436, + "name": "poolAmountOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1387, + "src": "30736:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 1388, + "id": 1437, + "nodeType": "Return", + "src": "30729:20:1" + } + ] + }, + "documentation": { + "id": 1370, + "nodeType": "StructuredDocumentation", + "src": "29352:450:1", + "text": " @notice Join by swapping a fixed amount of an external token in (must be present in the pool)\n System calculates the pool token amount\n @dev emits a LogJoin event\n @param tokenIn - which token we're transferring in\n @param tokenAmountIn - amount of deposit\n @param minPoolAmountOut - minimum of pool tokens to receive\n @return poolAmountOut - amount of pool tokens minted and transferred" + }, + "functionSelector": "5db34277", + "id": 1439, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 1379, + "modifierName": { + "argumentTypes": null, + "id": 1378, + "name": "logs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 220, + "src": "29954:4:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "29954:4:1" + }, + { + "arguments": null, + "id": 1381, + "modifierName": { + "argumentTypes": null, + "id": 1380, + "name": "lock", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8124, + "src": "29967:4:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "29967:4:1" + }, + { + "arguments": null, + "id": 1383, + "modifierName": { + "argumentTypes": null, + "id": 1382, + "name": "needsBPool", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 237, + "src": "29980:10:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "29980:10:1" + }, + { + "arguments": null, + "id": 1385, + "modifierName": { + "argumentTypes": null, + "id": 1384, + "name": "withinCap", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 250, + "src": "29999:9:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "29999:9:1" + } + ], + "name": "joinswapExternAmountIn", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 1377, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1372, + "mutability": "mutable", + "name": "tokenIn", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1439, + "src": "29848:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1371, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "29848:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1374, + "mutability": "mutable", + "name": "tokenAmountIn", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1439, + "src": "29873:18:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1373, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "29873:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1376, + "mutability": "mutable", + "name": "minPoolAmountOut", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1439, + "src": "29901:21:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1375, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "29901:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "29838:90:1" + }, + "returnParameters": { + "id": 1388, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1387, + "mutability": "mutable", + "name": "poolAmountOut", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1439, + "src": "30026:18:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1386, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "30026:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "30025:20:1" + }, + "scope": 2095, + "src": "29807:949:1", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 1508, + "nodeType": "Block", + "src": "31584:700:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 1467, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1462, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "31602:23:1", + "subExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1460, + "name": "rights", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 145, + "src": "31603:6:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Rights_$8553_storage", + "typeString": "struct RightsManager.Rights storage ref" + } + }, + "id": 1461, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "canWhitelistLPs", + "nodeType": "MemberAccess", + "referencedDeclaration": 8550, + "src": "31603:22:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1463, + "name": "_liquidityProviderWhitelist", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 173, + "src": "31629:27:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 1466, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1464, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "31657:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1465, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "31657:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "31629:39:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "31602:66:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552525f4e4f545f4f4e5f57484954454c495354", + "id": 1468, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "31686:22:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_3c13f58ce0bd1962da9b96dc93ede754fa20490e2080e4b0ace03b9a3a4637ee", + "typeString": "literal_string \"ERR_NOT_ON_WHITELIST\"" + }, + "value": "ERR_NOT_ON_WHITELIST" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_3c13f58ce0bd1962da9b96dc93ede754fa20490e2080e4b0ace03b9a3a4637ee", + "typeString": "literal_string \"ERR_NOT_ON_WHITELIST\"" + } + ], + "id": 1459, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "31594:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1469, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "31594:115:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1470, + "nodeType": "ExpressionStatement", + "src": "31594:115:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 1480, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1471, + "name": "tokenAmountIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1457, + "src": "31765:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1474, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "31849:4:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ConfigurableRightsPool_$2095", + "typeString": "contract ConfigurableRightsPool" + } + }, + { + "argumentTypes": null, + "id": 1475, + "name": "bPool", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 143, + "src": "31883:5:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBPool_$2256", + "typeString": "contract IBPool" + } + }, + { + "argumentTypes": null, + "id": 1476, + "name": "tokenIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1442, + "src": "31918:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1477, + "name": "poolAmountOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1444, + "src": "31955:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1478, + "name": "maxAmountIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1446, + "src": "31998:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ConfigurableRightsPool_$2095", + "typeString": "contract ConfigurableRightsPool" + }, + { + "typeIdentifier": "t_contract$_IBPool_$2256", + "typeString": "contract IBPool" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 1472, + "name": "SmartPoolManager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10277, + "src": "31781:16:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_SmartPoolManager_$10277_$", + "typeString": "type(library SmartPoolManager)" + } + }, + "id": 1473, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "joinswapPoolAmountOut", + "nodeType": "MemberAccess", + "referencedDeclaration": 10105, + "src": "31781:38:1", + "typeDescriptions": { + "typeIdentifier": "t_function_delegatecall_view$_t_contract$_ConfigurableRightsPool_$2095_$_t_contract$_IBPool_$2256_$_t_address_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (contract ConfigurableRightsPool,contract IBPool,address,uint256,uint256) view returns (uint256)" + } + }, + "id": 1479, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "31781:254:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "31765:270:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1481, + "nodeType": "ExpressionStatement", + "src": "31765:270:1" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1483, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "32059:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1484, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "32059:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 1485, + "name": "tokenIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1442, + "src": "32071:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1486, + "name": "tokenAmountIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1457, + "src": "32080:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1482, + "name": "LogJoin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 191, + "src": "32051:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 1487, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "32051:43:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1488, + "nodeType": "EmitStatement", + "src": "32046:48:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1490, + "name": "poolAmountOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1444, + "src": "32120:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1489, + "name": "_mintPoolShare", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2058, + "src": "32105:14:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256)" + } + }, + "id": 1491, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "32105:29:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1492, + "nodeType": "ExpressionStatement", + "src": "32105:29:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1494, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "32159:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1495, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "32159:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 1496, + "name": "poolAmountOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1444, + "src": "32171:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1493, + "name": "_pushPoolShare", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2071, + "src": "32144:14:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 1497, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "32144:41:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1498, + "nodeType": "ExpressionStatement", + "src": "32144:41:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1500, + "name": "tokenIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1442, + "src": "32211:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1501, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "32220:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1502, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "32220:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 1503, + "name": "tokenAmountIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1457, + "src": "32232:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1499, + "name": "_pullUnderlying", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1993, + "src": "32195:15:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 1504, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "32195:51:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1505, + "nodeType": "ExpressionStatement", + "src": "32195:51:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 1506, + "name": "tokenAmountIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1457, + "src": "32264:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 1458, + "id": 1507, + "nodeType": "Return", + "src": "32257:20:1" + } + ] + }, + "documentation": { + "id": 1440, + "nodeType": "StructuredDocumentation", + "src": "30762:580:1", + "text": " @notice Join by swapping an external token in (must be present in the pool)\n To receive an exact amount of pool tokens out. System calculates the deposit amount\n @dev emits a LogJoin event\n @param tokenIn - which token we're transferring in (system calculates amount required)\n @param poolAmountOut - amount of pool tokens to be received\n @param maxAmountIn - Maximum asset tokens that can be pulled to pay for the pool tokens\n @return tokenAmountIn - amount of asset tokens transferred in to purchase the pool tokens" + }, + "functionSelector": "6d06dfa0", + "id": 1509, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 1449, + "modifierName": { + "argumentTypes": null, + "id": 1448, + "name": "logs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 220, + "src": "31488:4:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "31488:4:1" + }, + { + "arguments": null, + "id": 1451, + "modifierName": { + "argumentTypes": null, + "id": 1450, + "name": "lock", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8124, + "src": "31501:4:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "31501:4:1" + }, + { + "arguments": null, + "id": 1453, + "modifierName": { + "argumentTypes": null, + "id": 1452, + "name": "needsBPool", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 237, + "src": "31514:10:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "31514:10:1" + }, + { + "arguments": null, + "id": 1455, + "modifierName": { + "argumentTypes": null, + "id": 1454, + "name": "withinCap", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 250, + "src": "31533:9:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "31533:9:1" + } + ], + "name": "joinswapPoolAmountOut", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 1447, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1442, + "mutability": "mutable", + "name": "tokenIn", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1509, + "src": "31387:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1441, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "31387:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1444, + "mutability": "mutable", + "name": "poolAmountOut", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1509, + "src": "31412:18:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1443, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "31412:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1446, + "mutability": "mutable", + "name": "maxAmountIn", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1509, + "src": "31440:16:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1445, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "31440:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "31377:85:1" + }, + "returnParameters": { + "id": 1458, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1457, + "mutability": "mutable", + "name": "tokenAmountIn", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1509, + "src": "31560:18:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1456, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "31560:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "31559:20:1" + }, + "scope": 2095, + "src": "31347:937:1", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 1586, + "nodeType": "Block", + "src": "33016:862:1", + "statements": [ + { + "assignments": [ + 1528, + 1530 + ], + "declarations": [ + { + "constant": false, + "id": 1528, + "mutability": "mutable", + "name": "exitFee", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1586, + "src": "33144:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1527, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "33144:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1530, + "mutability": "mutable", + "name": "amountOut", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1586, + "src": "33167:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1529, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "33167:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1539, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1533, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "33255:4:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ConfigurableRightsPool_$2095", + "typeString": "contract ConfigurableRightsPool" + } + }, + { + "argumentTypes": null, + "id": 1534, + "name": "bPool", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 143, + "src": "33292:5:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBPool_$2256", + "typeString": "contract IBPool" + } + }, + { + "argumentTypes": null, + "id": 1535, + "name": "tokenOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1512, + "src": "33330:8:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1536, + "name": "poolAmountIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1514, + "src": "33371:12:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1537, + "name": "minAmountOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1516, + "src": "33416:12:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ConfigurableRightsPool_$2095", + "typeString": "contract ConfigurableRightsPool" + }, + { + "typeIdentifier": "t_contract$_IBPool_$2256", + "typeString": "contract IBPool" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 1531, + "name": "SmartPoolManager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10277, + "src": "33185:16:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_SmartPoolManager_$10277_$", + "typeString": "type(library SmartPoolManager)" + } + }, + "id": 1532, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "exitswapPoolAmountIn", + "nodeType": "MemberAccess", + "referencedDeclaration": 10187, + "src": "33185:37:1", + "typeDescriptions": { + "typeIdentifier": "t_function_delegatecall_view$_t_contract$_ConfigurableRightsPool_$2095_$_t_contract$_IBPool_$2256_$_t_address_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$", + "typeString": "function (contract ConfigurableRightsPool,contract IBPool,address,uint256,uint256) view returns (uint256,uint256)" + } + }, + "id": 1538, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "33185:272:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", + "typeString": "tuple(uint256,uint256)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "33143:314:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 1542, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1540, + "name": "tokenAmountOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1525, + "src": "33468:14:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1541, + "name": "amountOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1530, + "src": "33485:9:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "33468:26:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1543, + "nodeType": "ExpressionStatement", + "src": "33468:26:1" + }, + { + "assignments": [ + 1545 + ], + "declarations": [ + { + "constant": false, + "id": 1545, + "mutability": "mutable", + "name": "pAiAfterExitFee", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1586, + "src": "33504:20:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1544, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "33504:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1551, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1548, + "name": "poolAmountIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1514, + "src": "33549:12:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1549, + "name": "exitFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1528, + "src": "33563:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 1546, + "name": "BalancerSafeMath", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8529, + "src": "33527:16:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_BalancerSafeMath_$8529_$", + "typeString": "type(library BalancerSafeMath)" + } + }, + "id": 1547, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "bsub", + "nodeType": "MemberAccess", + "referencedDeclaration": 8285, + "src": "33527:21:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 1550, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "33527:44:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "33504:67:1" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1553, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "33595:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1554, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "33595:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 1555, + "name": "tokenOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1512, + "src": "33607:8:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1556, + "name": "tokenAmountOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1525, + "src": "33617:14:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1552, + "name": "LogExit", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 199, + "src": "33587:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 1557, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "33587:45:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1558, + "nodeType": "EmitStatement", + "src": "33582:50:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1560, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "33658:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1561, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "33658:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 1562, + "name": "poolAmountIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1514, + "src": "33670:12:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1559, + "name": "_pullPoolShare", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2084, + "src": "33643:14:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 1563, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "33643:40:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1564, + "nodeType": "ExpressionStatement", + "src": "33643:40:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1566, + "name": "pAiAfterExitFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1545, + "src": "33708:15:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1565, + "name": "_burnPoolShare", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2094, + "src": "33693:14:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256)" + } + }, + "id": 1567, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "33693:31:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1568, + "nodeType": "ExpressionStatement", + "src": "33693:31:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1572, + "name": "bFactory", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 141, + "src": "33757:8:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBFactory_$2284", + "typeString": "contract IBFactory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IBFactory_$2284", + "typeString": "contract IBFactory" + } + ], + "id": 1571, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "33749:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1570, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "33749:7:1", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 1573, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "33749:17:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1574, + "name": "exitFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1528, + "src": "33768:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1569, + "name": "_pushPoolShare", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2071, + "src": "33734:14:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 1575, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "33734:42:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1576, + "nodeType": "ExpressionStatement", + "src": "33734:42:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1578, + "name": "tokenOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1512, + "src": "33802:8:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1579, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "33812:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1580, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "33812:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 1581, + "name": "tokenAmountOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1525, + "src": "33824:14:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1577, + "name": "_pushUnderlying", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2046, + "src": "33786:15:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 1582, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "33786:53:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1583, + "nodeType": "ExpressionStatement", + "src": "33786:53:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 1584, + "name": "tokenAmountOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1525, + "src": "33857:14:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 1526, + "id": 1585, + "nodeType": "Return", + "src": "33850:21:1" + } + ] + }, + "documentation": { + "id": 1510, + "nodeType": "StructuredDocumentation", + "src": "32290:501:1", + "text": " @notice Exit a pool - redeem a specific number of pool tokens for an underlying asset\n Asset must be present in the pool, and will incur an EXIT_FEE (if set to non-zero)\n @dev Emits a LogExit event for the token\n @param tokenOut - which token the caller wants to receive\n @param poolAmountIn - amount of pool tokens to redeem\n @param minAmountOut - minimum asset tokens to receive\n @return tokenAmountOut - amount of asset tokens returned" + }, + "functionSelector": "46ab38f1", + "id": 1587, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 1519, + "modifierName": { + "argumentTypes": null, + "id": 1518, + "name": "logs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 220, + "src": "32937:4:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "32937:4:1" + }, + { + "arguments": null, + "id": 1521, + "modifierName": { + "argumentTypes": null, + "id": 1520, + "name": "lock", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8124, + "src": "32950:4:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "32950:4:1" + }, + { + "arguments": null, + "id": 1523, + "modifierName": { + "argumentTypes": null, + "id": 1522, + "name": "needsBPool", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 237, + "src": "32963:10:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "32963:10:1" + } + ], + "name": "exitswapPoolAmountIn", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 1517, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1512, + "mutability": "mutable", + "name": "tokenOut", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1587, + "src": "32835:16:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1511, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "32835:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1514, + "mutability": "mutable", + "name": "poolAmountIn", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1587, + "src": "32861:17:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1513, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "32861:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1516, + "mutability": "mutable", + "name": "minAmountOut", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1587, + "src": "32888:17:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1515, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "32888:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "32825:86:1" + }, + "returnParameters": { + "id": 1526, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1525, + "mutability": "mutable", + "name": "tokenAmountOut", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1587, + "src": "32991:19:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1524, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "32991:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "32990:21:1" + }, + "scope": 2095, + "src": "32796:1082:1", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 1664, + "nodeType": "Block", + "src": "34583:855:1", + "statements": [ + { + "assignments": [ + 1606, + 1608 + ], + "declarations": [ + { + "constant": false, + "id": 1606, + "mutability": "mutable", + "name": "exitFee", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1664, + "src": "34708:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1605, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "34708:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1608, + "mutability": "mutable", + "name": "amountIn", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1664, + "src": "34731:13:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1607, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "34731:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1617, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1611, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "34820:4:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ConfigurableRightsPool_$2095", + "typeString": "contract ConfigurableRightsPool" + } + }, + { + "argumentTypes": null, + "id": 1612, + "name": "bPool", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 143, + "src": "34856:5:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBPool_$2256", + "typeString": "contract IBPool" + } + }, + { + "argumentTypes": null, + "id": 1613, + "name": "tokenOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1590, + "src": "34893:8:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1614, + "name": "tokenAmountOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1592, + "src": "34933:14:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1615, + "name": "maxPoolAmountIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1594, + "src": "34979:15:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ConfigurableRightsPool_$2095", + "typeString": "contract ConfigurableRightsPool" + }, + { + "typeIdentifier": "t_contract$_IBPool_$2256", + "typeString": "contract IBPool" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 1609, + "name": "SmartPoolManager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10277, + "src": "34748:16:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_SmartPoolManager_$10277_$", + "typeString": "type(library SmartPoolManager)" + } + }, + "id": 1610, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "exitswapExternAmountOut", + "nodeType": "MemberAccess", + "referencedDeclaration": 10276, + "src": "34748:40:1", + "typeDescriptions": { + "typeIdentifier": "t_function_delegatecall_view$_t_contract$_ConfigurableRightsPool_$2095_$_t_contract$_IBPool_$2256_$_t_address_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$", + "typeString": "function (contract ConfigurableRightsPool,contract IBPool,address,uint256,uint256) view returns (uint256,uint256)" + } + }, + "id": 1616, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "34748:274:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", + "typeString": "tuple(uint256,uint256)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "34707:315:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 1620, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1618, + "name": "poolAmountIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1603, + "src": "35033:12:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1619, + "name": "amountIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1608, + "src": "35048:8:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "35033:23:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1621, + "nodeType": "ExpressionStatement", + "src": "35033:23:1" + }, + { + "assignments": [ + 1623 + ], + "declarations": [ + { + "constant": false, + "id": 1623, + "mutability": "mutable", + "name": "pAiAfterExitFee", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1664, + "src": "35066:20:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1622, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "35066:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1629, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1626, + "name": "poolAmountIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1603, + "src": "35111:12:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1627, + "name": "exitFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1606, + "src": "35125:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 1624, + "name": "BalancerSafeMath", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8529, + "src": "35089:16:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_BalancerSafeMath_$8529_$", + "typeString": "type(library BalancerSafeMath)" + } + }, + "id": 1625, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "bsub", + "nodeType": "MemberAccess", + "referencedDeclaration": 8285, + "src": "35089:21:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 1628, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "35089:44:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "35066:67:1" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1631, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "35157:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1632, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "35157:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 1633, + "name": "tokenOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1590, + "src": "35169:8:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1634, + "name": "tokenAmountOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1592, + "src": "35179:14:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1630, + "name": "LogExit", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 199, + "src": "35149:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 1635, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "35149:45:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1636, + "nodeType": "EmitStatement", + "src": "35144:50:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1638, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "35220:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1639, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "35220:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 1640, + "name": "poolAmountIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1603, + "src": "35232:12:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1637, + "name": "_pullPoolShare", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2084, + "src": "35205:14:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 1641, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "35205:40:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1642, + "nodeType": "ExpressionStatement", + "src": "35205:40:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1644, + "name": "pAiAfterExitFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1623, + "src": "35270:15:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1643, + "name": "_burnPoolShare", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2094, + "src": "35255:14:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256)" + } + }, + "id": 1645, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "35255:31:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1646, + "nodeType": "ExpressionStatement", + "src": "35255:31:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1650, + "name": "bFactory", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 141, + "src": "35319:8:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBFactory_$2284", + "typeString": "contract IBFactory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IBFactory_$2284", + "typeString": "contract IBFactory" + } + ], + "id": 1649, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "35311:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1648, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "35311:7:1", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 1651, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "35311:17:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1652, + "name": "exitFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1606, + "src": "35330:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1647, + "name": "_pushPoolShare", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2071, + "src": "35296:14:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 1653, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "35296:42:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1654, + "nodeType": "ExpressionStatement", + "src": "35296:42:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1656, + "name": "tokenOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1590, + "src": "35364:8:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1657, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "35374:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1658, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "35374:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 1659, + "name": "tokenAmountOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1592, + "src": "35386:14:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1655, + "name": "_pushUnderlying", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2046, + "src": "35348:15:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 1660, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "35348:53:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1661, + "nodeType": "ExpressionStatement", + "src": "35348:53:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 1662, + "name": "poolAmountIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1603, + "src": "35419:12:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 1604, + "id": 1663, + "nodeType": "Return", + "src": "35412:19:1" + } + ] + }, + "documentation": { + "id": 1588, + "nodeType": "StructuredDocumentation", + "src": "33884:468:1", + "text": " @notice Exit a pool - redeem pool tokens for a specific amount of underlying assets\n Asset must be present in the pool\n @dev Emits a LogExit event for the token\n @param tokenOut - which token the caller wants to receive\n @param tokenAmountOut - amount of underlying asset tokens to receive\n @param maxPoolAmountIn - maximum pool tokens to be redeemed\n @return poolAmountIn - amount of pool tokens redeemed" + }, + "functionSelector": "02c96748", + "id": 1665, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 1597, + "modifierName": { + "argumentTypes": null, + "id": 1596, + "name": "logs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 220, + "src": "34506:4:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "34506:4:1" + }, + { + "arguments": null, + "id": 1599, + "modifierName": { + "argumentTypes": null, + "id": 1598, + "name": "lock", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8124, + "src": "34519:4:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "34519:4:1" + }, + { + "arguments": null, + "id": 1601, + "modifierName": { + "argumentTypes": null, + "id": 1600, + "name": "needsBPool", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 237, + "src": "34532:10:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "34532:10:1" + } + ], + "name": "exitswapExternAmountOut", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 1595, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1590, + "mutability": "mutable", + "name": "tokenOut", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1665, + "src": "34399:16:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1589, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "34399:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1592, + "mutability": "mutable", + "name": "tokenAmountOut", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1665, + "src": "34425:19:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1591, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "34425:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1594, + "mutability": "mutable", + "name": "maxPoolAmountIn", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1665, + "src": "34454:20:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1593, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "34454:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "34389:91:1" + }, + "returnParameters": { + "id": 1604, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1603, + "mutability": "mutable", + "name": "poolAmountIn", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1665, + "src": "34560:17:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1602, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "34560:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "34559:19:1" + }, + "scope": 2095, + "src": "34357:1081:1", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 1699, + "nodeType": "Block", + "src": "35710:195:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1678, + "name": "rights", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 145, + "src": "35728:6:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Rights_$8553_storage", + "typeString": "struct RightsManager.Rights storage ref" + } + }, + "id": 1679, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "canWhitelistLPs", + "nodeType": "MemberAccess", + "referencedDeclaration": 8550, + "src": "35728:22:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552525f43414e4e4f545f57484954454c4953545f4c5053", + "id": 1680, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "35752:26:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_4cef9c60dc01c50551058138579c3a0e1c1addef61609671e4c807190877afab", + "typeString": "literal_string \"ERR_CANNOT_WHITELIST_LPS\"" + }, + "value": "ERR_CANNOT_WHITELIST_LPS" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_4cef9c60dc01c50551058138579c3a0e1c1addef61609671e4c807190877afab", + "typeString": "literal_string \"ERR_CANNOT_WHITELIST_LPS\"" + } + ], + "id": 1677, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "35720:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1681, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "35720:59:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1682, + "nodeType": "ExpressionStatement", + "src": "35720:59:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1689, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1684, + "name": "provider", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1668, + "src": "35797:8:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 1687, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "35817:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 1686, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "35809:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1685, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "35809:7:1", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 1688, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "35809:10:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "35797:22:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552525f494e56414c49445f41444452455353", + "id": 1690, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "35821:21:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_a7d3f5b8fcfdb9260fb71cc6af515e9b07a68a1202d1cb2f5a3f8f30449ddc07", + "typeString": "literal_string \"ERR_INVALID_ADDRESS\"" + }, + "value": "ERR_INVALID_ADDRESS" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_a7d3f5b8fcfdb9260fb71cc6af515e9b07a68a1202d1cb2f5a3f8f30449ddc07", + "typeString": "literal_string \"ERR_INVALID_ADDRESS\"" + } + ], + "id": 1683, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "35789:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1691, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "35789:54:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1692, + "nodeType": "ExpressionStatement", + "src": "35789:54:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 1697, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1693, + "name": "_liquidityProviderWhitelist", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 173, + "src": "35854:27:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 1695, + "indexExpression": { + "argumentTypes": null, + "id": 1694, + "name": "provider", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1668, + "src": "35882:8:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "35854:37:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 1696, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "35894:4:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "35854:44:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1698, + "nodeType": "ExpressionStatement", + "src": "35854:44:1" + } + ] + }, + "documentation": { + "id": 1666, + "nodeType": "StructuredDocumentation", + "src": "35444:142:1", + "text": " @notice Add to the whitelist of liquidity providers (if enabled)\n @param provider - address of the liquidity provider" + }, + "functionSelector": "c83a1c2d", + "id": 1700, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 1671, + "modifierName": { + "argumentTypes": null, + "id": 1670, + "name": "onlyOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8037, + "src": "35670:9:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "35670:9:1" + }, + { + "arguments": null, + "id": 1673, + "modifierName": { + "argumentTypes": null, + "id": 1672, + "name": "lock", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8124, + "src": "35688:4:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "35688:4:1" + }, + { + "arguments": null, + "id": 1675, + "modifierName": { + "argumentTypes": null, + "id": 1674, + "name": "logs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 220, + "src": "35701:4:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "35701:4:1" + } + ], + "name": "whitelistLiquidityProvider", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 1669, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1668, + "mutability": "mutable", + "name": "provider", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1700, + "src": "35627:16:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1667, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "35627:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "35626:18:1" + }, + "returnParameters": { + "id": 1676, + "nodeType": "ParameterList", + "parameters": [], + "src": "35710:0:1" + }, + "scope": 2095, + "src": "35591:314:1", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 1741, + "nodeType": "Block", + "src": "36190:278:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1713, + "name": "rights", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 145, + "src": "36208:6:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Rights_$8553_storage", + "typeString": "struct RightsManager.Rights storage ref" + } + }, + "id": 1714, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "canWhitelistLPs", + "nodeType": "MemberAccess", + "referencedDeclaration": 8550, + "src": "36208:22:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552525f43414e4e4f545f57484954454c4953545f4c5053", + "id": 1715, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "36232:26:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_4cef9c60dc01c50551058138579c3a0e1c1addef61609671e4c807190877afab", + "typeString": "literal_string \"ERR_CANNOT_WHITELIST_LPS\"" + }, + "value": "ERR_CANNOT_WHITELIST_LPS" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_4cef9c60dc01c50551058138579c3a0e1c1addef61609671e4c807190877afab", + "typeString": "literal_string \"ERR_CANNOT_WHITELIST_LPS\"" + } + ], + "id": 1712, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "36200:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1716, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "36200:59:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1717, + "nodeType": "ExpressionStatement", + "src": "36200:59:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1719, + "name": "_liquidityProviderWhitelist", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 173, + "src": "36277:27:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 1721, + "indexExpression": { + "argumentTypes": null, + "id": 1720, + "name": "provider", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1703, + "src": "36305:8:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "36277:37:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552525f4c505f4e4f545f57484954454c4953544544", + "id": 1722, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "36316:24:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_5c01fe17bb458eba395da3de43810458201e0e9d5ea19f8a595a96b796b57d7f", + "typeString": "literal_string \"ERR_LP_NOT_WHITELISTED\"" + }, + "value": "ERR_LP_NOT_WHITELISTED" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_5c01fe17bb458eba395da3de43810458201e0e9d5ea19f8a595a96b796b57d7f", + "typeString": "literal_string \"ERR_LP_NOT_WHITELISTED\"" + } + ], + "id": 1718, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "36269:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1723, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "36269:72:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1724, + "nodeType": "ExpressionStatement", + "src": "36269:72:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1731, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1726, + "name": "provider", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1703, + "src": "36359:8:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 1729, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "36379:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 1728, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "36371:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1727, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "36371:7:1", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 1730, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "36371:10:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "36359:22:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552525f494e56414c49445f41444452455353", + "id": 1732, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "36383:21:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_a7d3f5b8fcfdb9260fb71cc6af515e9b07a68a1202d1cb2f5a3f8f30449ddc07", + "typeString": "literal_string \"ERR_INVALID_ADDRESS\"" + }, + "value": "ERR_INVALID_ADDRESS" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_a7d3f5b8fcfdb9260fb71cc6af515e9b07a68a1202d1cb2f5a3f8f30449ddc07", + "typeString": "literal_string \"ERR_INVALID_ADDRESS\"" + } + ], + "id": 1725, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "36351:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1733, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "36351:54:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1734, + "nodeType": "ExpressionStatement", + "src": "36351:54:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 1739, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1735, + "name": "_liquidityProviderWhitelist", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 173, + "src": "36416:27:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 1737, + "indexExpression": { + "argumentTypes": null, + "id": 1736, + "name": "provider", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1703, + "src": "36444:8:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "36416:37:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 1738, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "36456:5:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "src": "36416:45:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1740, + "nodeType": "ExpressionStatement", + "src": "36416:45:1" + } + ] + }, + "documentation": { + "id": 1701, + "nodeType": "StructuredDocumentation", + "src": "35911:147:1", + "text": " @notice Remove from the whitelist of liquidity providers (if enabled)\n @param provider - address of the liquidity provider" + }, + "functionSelector": "e2762d4b", + "id": 1742, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 1706, + "modifierName": { + "argumentTypes": null, + "id": 1705, + "name": "onlyOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8037, + "src": "36150:9:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "36150:9:1" + }, + { + "arguments": null, + "id": 1708, + "modifierName": { + "argumentTypes": null, + "id": 1707, + "name": "lock", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8124, + "src": "36168:4:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "36168:4:1" + }, + { + "arguments": null, + "id": 1710, + "modifierName": { + "argumentTypes": null, + "id": 1709, + "name": "logs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 220, + "src": "36181:4:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "36181:4:1" + } + ], + "name": "removeWhitelistedLiquidityProvider", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 1704, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1703, + "mutability": "mutable", + "name": "provider", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1742, + "src": "36107:16:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1702, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "36107:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "36106:18:1" + }, + "returnParameters": { + "id": 1711, + "nodeType": "ParameterList", + "parameters": [], + "src": "36190:0:1" + }, + "scope": 2095, + "src": "36063:405:1", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 1766, + "nodeType": "Block", + "src": "36831:311:1", + "statements": [ + { + "condition": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1750, + "name": "rights", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 145, + "src": "36845:6:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Rights_$8553_storage", + "typeString": "struct RightsManager.Rights storage ref" + } + }, + "id": 1751, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "canWhitelistLPs", + "nodeType": "MemberAccess", + "referencedDeclaration": 8550, + "src": "36845:22:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 1764, + "nodeType": "Block", + "src": "36952:184:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1762, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1757, + "name": "provider", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1745, + "src": "37103:8:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 1760, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "37123:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 1759, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "37115:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1758, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "37115:7:1", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 1761, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "37115:10:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "37103:22:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 1749, + "id": 1763, + "nodeType": "Return", + "src": "37096:29:1" + } + ] + }, + "id": 1765, + "nodeType": "IfStatement", + "src": "36841:295:1", + "trueBody": { + "id": 1756, + "nodeType": "Block", + "src": "36869:69:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1752, + "name": "_liquidityProviderWhitelist", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 173, + "src": "36890:27:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 1754, + "indexExpression": { + "argumentTypes": null, + "id": 1753, + "name": "provider", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1745, + "src": "36918:8:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "36890:37:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 1749, + "id": 1755, + "nodeType": "Return", + "src": "36883:44:1" + } + ] + } + } + ] + }, + "documentation": { + "id": 1743, + "nodeType": "StructuredDocumentation", + "src": "36474:249:1", + "text": " @notice Check if an address is a liquidity provider\n @dev If the whitelist feature is not enabled, anyone can provide liquidity (assuming finalized)\n @return boolean value indicating whether the address can join a pool" + }, + "functionSelector": "806c6f87", + "id": 1767, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "canProvideLiquidity", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 1746, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1745, + "mutability": "mutable", + "name": "provider", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1767, + "src": "36757:16:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1744, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "36757:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "36756:18:1" + }, + "returnParameters": { + "id": 1749, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1748, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1767, + "src": "36821:4:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1747, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "36821:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "36820:6:1" + }, + "scope": 2095, + "src": "36728:414:1", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 1781, + "nodeType": "Block", + "src": "37554:71:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1777, + "name": "rights", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 145, + "src": "37599:6:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Rights_$8553_storage", + "typeString": "struct RightsManager.Rights storage ref" + } + }, + { + "argumentTypes": null, + "id": 1778, + "name": "permission", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1770, + "src": "37607:10:1", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Permissions_$8540", + "typeString": "enum RightsManager.Permissions" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Rights_$8553_storage", + "typeString": "struct RightsManager.Rights storage ref" + }, + { + "typeIdentifier": "t_enum$_Permissions_$8540", + "typeString": "enum RightsManager.Permissions" + } + ], + "expression": { + "argumentTypes": null, + "id": 1775, + "name": "RightsManager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8749, + "src": "37571:13:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_RightsManager_$8749_$", + "typeString": "type(library RightsManager)" + } + }, + "id": 1776, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "hasPermission", + "nodeType": "MemberAccess", + "referencedDeclaration": 8748, + "src": "37571:27:1", + "typeDescriptions": { + "typeIdentifier": "t_function_delegatecall_pure$_t_struct$_Rights_$8553_memory_ptr_$_t_enum$_Permissions_$8540_$returns$_t_bool_$", + "typeString": "function (struct RightsManager.Rights memory,enum RightsManager.Permissions) pure returns (bool)" + } + }, + "id": 1779, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "37571:47:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 1774, + "id": 1780, + "nodeType": "Return", + "src": "37564:54:1" + } + ] + }, + "documentation": { + "id": 1768, + "nodeType": "StructuredDocumentation", + "src": "37148:268:1", + "text": " @notice Getter for specific permissions\n @dev value of the enum is just the 0-based index in the enumeration\n For instance canPauseSwapping is 0; canChangeWeights is 2\n @return token boolean true if we have the given permission" + }, + "functionSelector": "37c6f4d9", + "id": 1782, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "hasPermission", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 1771, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1770, + "mutability": "mutable", + "name": "permission", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1782, + "src": "37444:36:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Permissions_$8540", + "typeString": "enum RightsManager.Permissions" + }, + "typeName": { + "contractScope": null, + "id": 1769, + "name": "RightsManager.Permissions", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 8540, + "src": "37444:25:1", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Permissions_$8540", + "typeString": "enum RightsManager.Permissions" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "37443:38:1" + }, + "returnParameters": { + "id": 1774, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1773, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1782, + "src": "37544:4:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1772, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "37544:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "37543:6:1" + }, + "scope": 2095, + "src": "37421:204:1", + "stateMutability": "view", + "virtual": true, + "visibility": "external" + }, + { + "body": { + "id": 1799, + "nodeType": "Block", + "src": "37930:58:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1796, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1785, + "src": "37975:5:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 1794, + "name": "bPool", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 143, + "src": "37947:5:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBPool_$2256", + "typeString": "contract IBPool" + } + }, + "id": 1795, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "getDenormalizedWeight", + "nodeType": "MemberAccess", + "referencedDeclaration": 2171, + "src": "37947:27:1", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view external returns (uint256)" + } + }, + "id": 1797, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "37947:34:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 1793, + "id": 1798, + "nodeType": "Return", + "src": "37940:41:1" + } + ] + }, + "documentation": { + "id": 1783, + "nodeType": "StructuredDocumentation", + "src": "37631:155:1", + "text": " @notice Get the denormalized weight of a token\n @dev viewlock to prevent calling if it's being updated\n @return token weight" + }, + "functionSelector": "948d8ce6", + "id": 1800, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 1788, + "modifierName": { + "argumentTypes": null, + "id": 1787, + "name": "viewlock", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8136, + "src": "37875:8:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "37875:8:1" + }, + { + "arguments": null, + "id": 1790, + "modifierName": { + "argumentTypes": null, + "id": 1789, + "name": "needsBPool", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 237, + "src": "37892:10:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "37892:10:1" + } + ], + "name": "getDenormalizedWeight", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 1786, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1785, + "mutability": "mutable", + "name": "token", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1800, + "src": "37822:13:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1784, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "37822:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "37821:15:1" + }, + "returnParameters": { + "id": 1793, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1792, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1800, + "src": "37920:4:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1791, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "37920:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "37919:6:1" + }, + "scope": 2095, + "src": "37791:197:1", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 1811, + "nodeType": "Block", + "src": "38293:46:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1808, + "name": "RightsManager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8749, + "src": "38318:13:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_RightsManager_$8749_$", + "typeString": "type(library RightsManager)" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_contract$_RightsManager_$8749_$", + "typeString": "type(library RightsManager)" + } + ], + "id": 1807, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "38310:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1806, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "38310:7:1", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 1809, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "38310:22:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 1805, + "id": 1810, + "nodeType": "Return", + "src": "38303:29:1" + } + ] + }, + "documentation": { + "id": 1801, + "nodeType": "StructuredDocumentation", + "src": "37994:227:1", + "text": " @notice Getter for the RightsManager contract\n @dev Convenience function to get the address of the RightsManager library (so clients can check version)\n @return address of the RightsManager library" + }, + "functionSelector": "74983a0d", + "id": 1812, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getRightsManagerVersion", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 1802, + "nodeType": "ParameterList", + "parameters": [], + "src": "38258:2:1" + }, + "returnParameters": { + "id": 1805, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1804, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1812, + "src": "38284:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1803, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "38284:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "38283:9:1" + }, + "scope": 2095, + "src": "38226:113:1", + "stateMutability": "pure", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 1823, + "nodeType": "Block", + "src": "38656:49:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1820, + "name": "BalancerSafeMath", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8529, + "src": "38681:16:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_BalancerSafeMath_$8529_$", + "typeString": "type(library BalancerSafeMath)" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_contract$_BalancerSafeMath_$8529_$", + "typeString": "type(library BalancerSafeMath)" + } + ], + "id": 1819, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "38673:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1818, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "38673:7:1", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 1821, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "38673:25:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 1817, + "id": 1822, + "nodeType": "Return", + "src": "38666:32:1" + } + ] + }, + "documentation": { + "id": 1813, + "nodeType": "StructuredDocumentation", + "src": "38345:236:1", + "text": " @notice Getter for the BalancerSafeMath contract\n @dev Convenience function to get the address of the BalancerSafeMath library (so clients can check version)\n @return address of the BalancerSafeMath library" + }, + "functionSelector": "9a82417e", + "id": 1824, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getBalancerSafeMathVersion", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 1814, + "nodeType": "ParameterList", + "parameters": [], + "src": "38621:2:1" + }, + "returnParameters": { + "id": 1817, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1816, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1824, + "src": "38647:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1815, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "38647:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "38646:9:1" + }, + "scope": 2095, + "src": "38586:119:1", + "stateMutability": "pure", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 1835, + "nodeType": "Block", + "src": "39022:49:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1832, + "name": "SmartPoolManager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10277, + "src": "39047:16:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_SmartPoolManager_$10277_$", + "typeString": "type(library SmartPoolManager)" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_contract$_SmartPoolManager_$10277_$", + "typeString": "type(library SmartPoolManager)" + } + ], + "id": 1831, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "39039:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1830, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "39039:7:1", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 1833, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "39039:25:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 1829, + "id": 1834, + "nodeType": "Return", + "src": "39032:32:1" + } + ] + }, + "documentation": { + "id": 1825, + "nodeType": "StructuredDocumentation", + "src": "38711:236:1", + "text": " @notice Getter for the SmartPoolManager contract\n @dev Convenience function to get the address of the SmartPoolManager library (so clients can check version)\n @return address of the SmartPoolManager library" + }, + "functionSelector": "9d829c2b", + "id": 1836, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getSmartPoolManagerVersion", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 1826, + "nodeType": "ParameterList", + "parameters": [], + "src": "38987:2:1" + }, + "returnParameters": { + "id": 1829, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1828, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1836, + "src": "39013:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1827, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "39013:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "39012:9:1" + }, + "scope": 2095, + "src": "38952:119:1", + "stateMutability": "pure", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 1858, + "nodeType": "Block", + "src": "39484:100:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1850, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1844, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "39503:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1845, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "39503:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1848, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "39525:4:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ConfigurableRightsPool_$2095", + "typeString": "contract ConfigurableRightsPool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ConfigurableRightsPool_$2095", + "typeString": "contract ConfigurableRightsPool" + } + ], + "id": 1847, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "39517:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1846, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "39517:7:1", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 1849, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "39517:13:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "39503:27:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552525f4e4f545f434f4e54524f4c4c4552", + "id": 1851, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "39532:20:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_0479bbd6e0e904a96491e3adc0eda9022c19acd57f4922725f8618b3a0372668", + "typeString": "literal_string \"ERR_NOT_CONTROLLER\"" + }, + "value": "ERR_NOT_CONTROLLER" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_0479bbd6e0e904a96491e3adc0eda9022c19acd57f4922725f8618b3a0372668", + "typeString": "literal_string \"ERR_NOT_CONTROLLER\"" + } + ], + "id": 1843, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "39494:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1852, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "39494:59:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1853, + "nodeType": "ExpressionStatement", + "src": "39494:59:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1855, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1838, + "src": "39570:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1854, + "name": "_mint", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2822, + "src": "39564:5:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256)" + } + }, + "id": 1856, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "39564:13:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1857, + "nodeType": "ExpressionStatement", + "src": "39564:13:1" + } + ] + }, + "documentation": null, + "functionSelector": "4ba57882", + "id": 1859, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 1841, + "modifierName": { + "argumentTypes": null, + "id": 1840, + "name": "withinCap", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 250, + "src": "39474:9:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "39474:9:1" + } + ], + "name": "mintPoolShareFromLib", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 1839, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1838, + "mutability": "mutable", + "name": "amount", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1859, + "src": "39454:11:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1837, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "39454:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "39453:13:1" + }, + "returnParameters": { + "id": 1842, + "nodeType": "ParameterList", + "parameters": [], + "src": "39484:0:1" + }, + "scope": 2095, + "src": "39424:160:1", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 1882, + "nodeType": "Block", + "src": "39652:104:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1873, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1867, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "39671:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1868, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "39671:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1871, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "39693:4:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ConfigurableRightsPool_$2095", + "typeString": "contract ConfigurableRightsPool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ConfigurableRightsPool_$2095", + "typeString": "contract ConfigurableRightsPool" + } + ], + "id": 1870, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "39685:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1869, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "39685:7:1", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 1872, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "39685:13:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "39671:27:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552525f4e4f545f434f4e54524f4c4c4552", + "id": 1874, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "39700:20:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_0479bbd6e0e904a96491e3adc0eda9022c19acd57f4922725f8618b3a0372668", + "typeString": "literal_string \"ERR_NOT_CONTROLLER\"" + }, + "value": "ERR_NOT_CONTROLLER" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_0479bbd6e0e904a96491e3adc0eda9022c19acd57f4922725f8618b3a0372668", + "typeString": "literal_string \"ERR_NOT_CONTROLLER\"" + } + ], + "id": 1866, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "39662:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1875, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "39662:59:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1876, + "nodeType": "ExpressionStatement", + "src": "39662:59:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1878, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1861, + "src": "39738:2:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1879, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1863, + "src": "39742:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1877, + "name": "_push", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2923, + "src": "39732:5:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 1880, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "39732:17:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1881, + "nodeType": "ExpressionStatement", + "src": "39732:17:1" + } + ] + }, + "documentation": null, + "functionSelector": "095dcccc", + "id": 1883, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "pushPoolShareFromLib", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 1864, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1861, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1883, + "src": "39620:10:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1860, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "39620:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1863, + "mutability": "mutable", + "name": "amount", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1883, + "src": "39632:11:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1862, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "39632:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "39619:25:1" + }, + "returnParameters": { + "id": 1865, + "nodeType": "ParameterList", + "parameters": [], + "src": "39652:0:1" + }, + "scope": 2095, + "src": "39590:166:1", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 1906, + "nodeType": "Block", + "src": "39827:106:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1897, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1891, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "39846:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1892, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "39846:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1895, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "39868:4:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ConfigurableRightsPool_$2095", + "typeString": "contract ConfigurableRightsPool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ConfigurableRightsPool_$2095", + "typeString": "contract ConfigurableRightsPool" + } + ], + "id": 1894, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "39860:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1893, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "39860:7:1", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 1896, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "39860:13:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "39846:27:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552525f4e4f545f434f4e54524f4c4c4552", + "id": 1898, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "39875:20:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_0479bbd6e0e904a96491e3adc0eda9022c19acd57f4922725f8618b3a0372668", + "typeString": "literal_string \"ERR_NOT_CONTROLLER\"" + }, + "value": "ERR_NOT_CONTROLLER" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_0479bbd6e0e904a96491e3adc0eda9022c19acd57f4922725f8618b3a0372668", + "typeString": "literal_string \"ERR_NOT_CONTROLLER\"" + } + ], + "id": 1890, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "39837:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1899, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "39837:59:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1900, + "nodeType": "ExpressionStatement", + "src": "39837:59:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1902, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1885, + "src": "39913:4:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1903, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1887, + "src": "39919:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1901, + "name": "_pull", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2940, + "src": "39907:5:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 1904, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "39907:19:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1905, + "nodeType": "ExpressionStatement", + "src": "39907:19:1" + } + ] + }, + "documentation": null, + "functionSelector": "55c32a23", + "id": 1907, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "pullPoolShareFromLib", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 1888, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1885, + "mutability": "mutable", + "name": "from", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1907, + "src": "39792:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1884, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "39792:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1887, + "mutability": "mutable", + "name": "amount", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1907, + "src": "39806:11:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1886, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "39806:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "39791:27:1" + }, + "returnParameters": { + "id": 1889, + "nodeType": "ParameterList", + "parameters": [], + "src": "39827:0:1" + }, + "scope": 2095, + "src": "39762:171:1", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 1927, + "nodeType": "Block", + "src": "39990:100:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1919, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1913, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "40009:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1914, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "40009:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1917, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "40031:4:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ConfigurableRightsPool_$2095", + "typeString": "contract ConfigurableRightsPool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ConfigurableRightsPool_$2095", + "typeString": "contract ConfigurableRightsPool" + } + ], + "id": 1916, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "40023:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1915, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "40023:7:1", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 1918, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "40023:13:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "40009:27:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552525f4e4f545f434f4e54524f4c4c4552", + "id": 1920, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "40038:20:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_0479bbd6e0e904a96491e3adc0eda9022c19acd57f4922725f8618b3a0372668", + "typeString": "literal_string \"ERR_NOT_CONTROLLER\"" + }, + "value": "ERR_NOT_CONTROLLER" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_0479bbd6e0e904a96491e3adc0eda9022c19acd57f4922725f8618b3a0372668", + "typeString": "literal_string \"ERR_NOT_CONTROLLER\"" + } + ], + "id": 1912, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "40000:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1921, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "40000:59:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1922, + "nodeType": "ExpressionStatement", + "src": "40000:59:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1924, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1909, + "src": "40076:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1923, + "name": "_burn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2866, + "src": "40070:5:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256)" + } + }, + "id": 1925, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "40070:13:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1926, + "nodeType": "ExpressionStatement", + "src": "40070:13:1" + } + ] + }, + "documentation": null, + "functionSelector": "220eb760", + "id": 1928, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "burnPoolShareFromLib", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 1910, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1909, + "mutability": "mutable", + "name": "amount", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1928, + "src": "39969:11:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1908, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "39969:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "39968:13:1" + }, + "returnParameters": { + "id": 1911, + "nodeType": "ParameterList", + "parameters": [], + "src": "39990:0:1" + }, + "scope": 2095, + "src": "39939:151:1", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 1935, + "nodeType": "Block", + "src": "40361:35:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1933, + "name": "_startBlock", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 157, + "src": "40378:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 1932, + "id": 1934, + "nodeType": "Return", + "src": "40371:18:1" + } + ] + }, + "documentation": null, + "id": 1936, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getStartBlock", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 1929, + "nodeType": "ParameterList", + "parameters": [], + "src": "40329:2:1" + }, + "returnParameters": { + "id": 1932, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1931, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1936, + "src": "40355:4:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1930, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "40355:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "40354:6:1" + }, + "scope": 2095, + "src": "40307:89:1", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 1992, + "nodeType": "Block", + "src": "40668:417:1", + "statements": [ + { + "assignments": [ + 1948 + ], + "declarations": [ + { + "constant": false, + "id": 1948, + "mutability": "mutable", + "name": "tokenBalance", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1992, + "src": "40765:17:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1947, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "40765:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1953, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1951, + "name": "erc20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1938, + "src": "40802:5:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 1949, + "name": "bPool", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 143, + "src": "40785:5:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBPool_$2256", + "typeString": "contract IBPool" + } + }, + "id": 1950, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "getBalance", + "nodeType": "MemberAccess", + "referencedDeclaration": 2149, + "src": "40785:16:1", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view external returns (uint256)" + } + }, + "id": 1952, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "40785:23:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "40765:43:1" + }, + { + "assignments": [ + 1955 + ], + "declarations": [ + { + "constant": false, + "id": 1955, + "mutability": "mutable", + "name": "tokenWeight", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1992, + "src": "40818:16:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1954, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "40818:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1960, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1958, + "name": "erc20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1938, + "src": "40865:5:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 1956, + "name": "bPool", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 143, + "src": "40837:5:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBPool_$2256", + "typeString": "contract IBPool" + } + }, + "id": 1957, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "getDenormalizedWeight", + "nodeType": "MemberAccess", + "referencedDeclaration": 2171, + "src": "40837:27:1", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view external returns (uint256)" + } + }, + "id": 1959, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "40837:34:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "40818:53:1" + }, + { + "assignments": [ + 1962 + ], + "declarations": [ + { + "constant": false, + "id": 1962, + "mutability": "mutable", + "name": "xfer", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1992, + "src": "40882:9:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1961, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "40882:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1974, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1967, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1940, + "src": "40921:4:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1970, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "40935:4:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ConfigurableRightsPool_$2095", + "typeString": "contract ConfigurableRightsPool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ConfigurableRightsPool_$2095", + "typeString": "contract ConfigurableRightsPool" + } + ], + "id": 1969, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "40927:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1968, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "40927:7:1", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 1971, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "40927:13:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1972, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1942, + "src": "40942:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1964, + "name": "erc20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1938, + "src": "40901:5:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1963, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2393, + "src": "40894:6:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC20_$2393_$", + "typeString": "type(contract IERC20)" + } + }, + "id": 1965, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "40894:13:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$2393", + "typeString": "contract IERC20" + } + }, + "id": 1966, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "transferFrom", + "nodeType": "MemberAccess", + "referencedDeclaration": 2392, + "src": "40894:26:1", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,address,uint256) external returns (bool)" + } + }, + "id": 1973, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "40894:55:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "40882:67:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1976, + "name": "xfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1962, + "src": "40967:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552525f45524332305f46414c5345", + "id": 1977, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "40973:17:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_cfe847c677cf42c21ce03ee8e7625272fdefc571a2ce6d0eacad2e7c6f42fc3f", + "typeString": "literal_string \"ERR_ERC20_FALSE\"" + }, + "value": "ERR_ERC20_FALSE" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_cfe847c677cf42c21ce03ee8e7625272fdefc571a2ce6d0eacad2e7c6f42fc3f", + "typeString": "literal_string \"ERR_ERC20_FALSE\"" + } + ], + "id": 1975, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "40959:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1978, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "40959:32:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1979, + "nodeType": "ExpressionStatement", + "src": "40959:32:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1983, + "name": "erc20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1938, + "src": "41014:5:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1986, + "name": "tokenBalance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1948, + "src": "41043:12:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1987, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1942, + "src": "41057:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 1984, + "name": "BalancerSafeMath", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8529, + "src": "41021:16:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_BalancerSafeMath_$8529_$", + "typeString": "type(library BalancerSafeMath)" + } + }, + "id": 1985, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "badd", + "nodeType": "MemberAccess", + "referencedDeclaration": 8257, + "src": "41021:21:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 1988, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "41021:43:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1989, + "name": "tokenWeight", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1955, + "src": "41066:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 1980, + "name": "bPool", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 143, + "src": "41001:5:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBPool_$2256", + "typeString": "contract IBPool" + } + }, + "id": 1982, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "rebind", + "nodeType": "MemberAccess", + "referencedDeclaration": 2106, + "src": "41001:12:1", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256,uint256) external" + } + }, + "id": 1990, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "41001:77:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1991, + "nodeType": "ExpressionStatement", + "src": "41001:77:1" + } + ] + }, + "documentation": null, + "id": 1993, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 1945, + "modifierName": { + "argumentTypes": null, + "id": 1944, + "name": "needsBPool", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 237, + "src": "40657:10:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "40657:10:1" + } + ], + "name": "_pullUnderlying", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 1943, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1938, + "mutability": "mutable", + "name": "erc20", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1993, + "src": "40606:13:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1937, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "40606:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1940, + "mutability": "mutable", + "name": "from", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1993, + "src": "40621:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1939, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "40621:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1942, + "mutability": "mutable", + "name": "amount", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1993, + "src": "40635:11:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1941, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "40635:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "40605:42:1" + }, + "returnParameters": { + "id": 1946, + "nodeType": "ParameterList", + "parameters": [], + "src": "40668:0:1" + }, + "scope": 2095, + "src": "40581:504:1", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2045, + "nodeType": "Block", + "src": "41295:396:1", + "statements": [ + { + "assignments": [ + 2005 + ], + "declarations": [ + { + "constant": false, + "id": 2005, + "mutability": "mutable", + "name": "tokenBalance", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2045, + "src": "41392:17:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2004, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "41392:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2010, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2008, + "name": "erc20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1995, + "src": "41429:5:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 2006, + "name": "bPool", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 143, + "src": "41412:5:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBPool_$2256", + "typeString": "contract IBPool" + } + }, + "id": 2007, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "getBalance", + "nodeType": "MemberAccess", + "referencedDeclaration": 2149, + "src": "41412:16:1", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view external returns (uint256)" + } + }, + "id": 2009, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "41412:23:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "41392:43:1" + }, + { + "assignments": [ + 2012 + ], + "declarations": [ + { + "constant": false, + "id": 2012, + "mutability": "mutable", + "name": "tokenWeight", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2045, + "src": "41445:16:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2011, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "41445:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2017, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2015, + "name": "erc20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1995, + "src": "41492:5:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 2013, + "name": "bPool", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 143, + "src": "41464:5:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBPool_$2256", + "typeString": "contract IBPool" + } + }, + "id": 2014, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "getDenormalizedWeight", + "nodeType": "MemberAccess", + "referencedDeclaration": 2171, + "src": "41464:27:1", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view external returns (uint256)" + } + }, + "id": 2016, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "41464:34:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "41445:53:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2021, + "name": "erc20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1995, + "src": "41521:5:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2024, + "name": "tokenBalance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2005, + "src": "41550:12:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 2025, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1999, + "src": "41564:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 2022, + "name": "BalancerSafeMath", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8529, + "src": "41528:16:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_BalancerSafeMath_$8529_$", + "typeString": "type(library BalancerSafeMath)" + } + }, + "id": 2023, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "bsub", + "nodeType": "MemberAccess", + "referencedDeclaration": 8285, + "src": "41528:21:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 2026, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "41528:43:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 2027, + "name": "tokenWeight", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2012, + "src": "41573:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 2018, + "name": "bPool", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 143, + "src": "41508:5:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBPool_$2256", + "typeString": "contract IBPool" + } + }, + "id": 2020, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "rebind", + "nodeType": "MemberAccess", + "referencedDeclaration": 2106, + "src": "41508:12:1", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256,uint256) external" + } + }, + "id": 2028, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "41508:77:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2029, + "nodeType": "ExpressionStatement", + "src": "41508:77:1" + }, + { + "assignments": [ + 2031 + ], + "declarations": [ + { + "constant": false, + "id": 2031, + "mutability": "mutable", + "name": "xfer", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2045, + "src": "41596:9:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2030, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "41596:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2039, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2036, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1997, + "src": "41631:2:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2037, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1999, + "src": "41635:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2033, + "name": "erc20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1995, + "src": "41615:5:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2032, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2393, + "src": "41608:6:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC20_$2393_$", + "typeString": "type(contract IERC20)" + } + }, + "id": 2034, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "41608:13:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$2393", + "typeString": "contract IERC20" + } + }, + "id": 2035, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "transfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 2381, + "src": "41608:22:1", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) external returns (bool)" + } + }, + "id": 2038, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "41608:34:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "41596:46:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2041, + "name": "xfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2031, + "src": "41660:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552525f45524332305f46414c5345", + "id": 2042, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "41666:17:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_cfe847c677cf42c21ce03ee8e7625272fdefc571a2ce6d0eacad2e7c6f42fc3f", + "typeString": "literal_string \"ERR_ERC20_FALSE\"" + }, + "value": "ERR_ERC20_FALSE" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_cfe847c677cf42c21ce03ee8e7625272fdefc571a2ce6d0eacad2e7c6f42fc3f", + "typeString": "literal_string \"ERR_ERC20_FALSE\"" + } + ], + "id": 2040, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "41652:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2043, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "41652:32:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2044, + "nodeType": "ExpressionStatement", + "src": "41652:32:1" + } + ] + }, + "documentation": null, + "id": 2046, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 2002, + "modifierName": { + "argumentTypes": null, + "id": 2001, + "name": "needsBPool", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 237, + "src": "41284:10:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "41284:10:1" + } + ], + "name": "_pushUnderlying", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 2000, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1995, + "mutability": "mutable", + "name": "erc20", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2046, + "src": "41235:13:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1994, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "41235:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1997, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2046, + "src": "41250:10:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1996, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "41250:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1999, + "mutability": "mutable", + "name": "amount", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2046, + "src": "41262:11:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1998, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "41262:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "41234:40:1" + }, + "returnParameters": { + "id": 2003, + "nodeType": "ParameterList", + "parameters": [], + "src": "41295:0:1" + }, + "scope": 2095, + "src": "41210:481:1", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2057, + "nodeType": "Block", + "src": "41957:30:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2054, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2048, + "src": "41973:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2053, + "name": "_mint", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2822, + "src": "41967:5:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256)" + } + }, + "id": 2055, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "41967:13:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2056, + "nodeType": "ExpressionStatement", + "src": "41967:13:1" + } + ] + }, + "documentation": null, + "id": 2058, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 2051, + "modifierName": { + "argumentTypes": null, + "id": 2050, + "name": "withinCap", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 250, + "src": "41947:9:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "41947:9:1" + } + ], + "name": "_mintPoolShare", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 2049, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2048, + "mutability": "mutable", + "name": "amount", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2058, + "src": "41925:11:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2047, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "41925:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "41924:13:1" + }, + "returnParameters": { + "id": 2052, + "nodeType": "ParameterList", + "parameters": [], + "src": "41957:0:1" + }, + "scope": 2095, + "src": "41901:86:1", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2070, + "nodeType": "Block", + "src": "42051:34:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2066, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2060, + "src": "42067:2:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2067, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2062, + "src": "42071:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2065, + "name": "_push", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2923, + "src": "42061:5:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 2068, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "42061:17:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2069, + "nodeType": "ExpressionStatement", + "src": "42061:17:1" + } + ] + }, + "documentation": null, + "id": 2071, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_pushPoolShare", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 2063, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2060, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2071, + "src": "42017:10:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2059, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "42017:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2062, + "mutability": "mutable", + "name": "amount", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2071, + "src": "42029:11:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2061, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "42029:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "42016:25:1" + }, + "returnParameters": { + "id": 2064, + "nodeType": "ParameterList", + "parameters": [], + "src": "42051:0:1" + }, + "scope": 2095, + "src": "41993:92:1", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2083, + "nodeType": "Block", + "src": "42152:36:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2079, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2073, + "src": "42168:4:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2080, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2075, + "src": "42174:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2078, + "name": "_pull", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2940, + "src": "42162:5:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 2081, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "42162:19:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2082, + "nodeType": "ExpressionStatement", + "src": "42162:19:1" + } + ] + }, + "documentation": null, + "id": 2084, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_pullPoolShare", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 2076, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2073, + "mutability": "mutable", + "name": "from", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2084, + "src": "42115:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2072, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "42115:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2075, + "mutability": "mutable", + "name": "amount", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2084, + "src": "42129:11:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2074, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "42129:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "42114:27:1" + }, + "returnParameters": { + "id": 2077, + "nodeType": "ParameterList", + "parameters": [], + "src": "42152:0:1" + }, + "scope": 2095, + "src": "42091:97:1", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2093, + "nodeType": "Block", + "src": "42241:30:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2090, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2086, + "src": "42257:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2089, + "name": "_burn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2866, + "src": "42251:5:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256)" + } + }, + "id": 2091, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "42251:13:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2092, + "nodeType": "ExpressionStatement", + "src": "42251:13:1" + } + ] + }, + "documentation": null, + "id": 2094, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_burnPoolShare", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 2087, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2086, + "mutability": "mutable", + "name": "amount", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2094, + "src": "42218:11:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2085, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "42218:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "42217:13:1" + }, + "returnParameters": { + "id": 2088, + "nodeType": "ParameterList", + "parameters": [], + "src": "42241:0:1" + }, + "scope": 2095, + "src": "42194:77:1", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + } + ], + "scope": 2096, + "src": "1579:40694:1" + } + ], + "src": "45:42229:1" + }, + "legacyAST": { + "absolutePath": "/Users/fabien/WebstormProjects/balancer/configurable-rights-pool/contracts/ConfigurableRightsPool.sol", + "exportedSymbols": { + "ConfigurableRightsPool": [ + 2095 + ] + }, + "id": 2096, + "license": "GPL-3.0-or-later", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 121, + "literals": [ + "solidity", + "^", + "0.6", + ".6" + ], + "nodeType": "PragmaDirective", + "src": "45:23:1" + }, + { + "id": 122, + "literals": [ + "experimental", + "ABIEncoderV2" + ], + "nodeType": "PragmaDirective", + "src": "112:33:1" + }, + { + "absolutePath": "/Users/fabien/WebstormProjects/balancer/configurable-rights-pool/contracts/IBFactory.sol", + "file": "./IBFactory.sol", + "id": 123, + "nodeType": "ImportDirective", + "scope": 2096, + "sourceUnit": 2285, + "src": "159:25:1", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/Users/fabien/WebstormProjects/balancer/configurable-rights-pool/contracts/PCToken.sol", + "file": "./PCToken.sol", + "id": 124, + "nodeType": "ImportDirective", + "scope": 2096, + "sourceUnit": 2942, + "src": "185:23:1", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/Users/fabien/WebstormProjects/balancer/configurable-rights-pool/contracts/utils/BalancerReentrancyGuard.sol", + "file": "./utils/BalancerReentrancyGuard.sol", + "id": 125, + "nodeType": "ImportDirective", + "scope": 2096, + "sourceUnit": 8138, + "src": "209:45:1", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/Users/fabien/WebstormProjects/balancer/configurable-rights-pool/contracts/utils/BalancerOwnable.sol", + "file": "./utils/BalancerOwnable.sol", + "id": 126, + "nodeType": "ImportDirective", + "scope": 2096, + "sourceUnit": 8086, + "src": "255:37:1", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/Users/fabien/WebstormProjects/balancer/configurable-rights-pool/libraries/RightsManager.sol", + "file": "../libraries/RightsManager.sol", + "id": 128, + "nodeType": "ImportDirective", + "scope": 2096, + "sourceUnit": 8750, + "src": "322:63:1", + "symbolAliases": [ + { + "foreign": { + "argumentTypes": null, + "id": 127, + "name": "RightsManager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": null, + "src": "331:13:1", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + }, + "local": null + } + ], + "unitAlias": "" + }, + { + "absolutePath": "/Users/fabien/WebstormProjects/balancer/configurable-rights-pool/libraries/SmartPoolManager.sol", + "file": "../libraries/SmartPoolManager.sol", + "id": 129, + "nodeType": "ImportDirective", + "scope": 2096, + "sourceUnit": 10278, + "src": "386:43:1", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 131, + "name": "PCToken", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 2941, + "src": "1614:7:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_PCToken_$2941", + "typeString": "contract PCToken" + } + }, + "id": 132, + "nodeType": "InheritanceSpecifier", + "src": "1614:7:1" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 133, + "name": "BalancerOwnable", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 8085, + "src": "1623:15:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_BalancerOwnable_$8085", + "typeString": "contract BalancerOwnable" + } + }, + "id": 134, + "nodeType": "InheritanceSpecifier", + "src": "1623:15:1" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 135, + "name": "BalancerReentrancyGuard", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 8137, + "src": "1640:23:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_BalancerReentrancyGuard_$8137", + "typeString": "contract BalancerReentrancyGuard" + } + }, + "id": 136, + "nodeType": "InheritanceSpecifier", + "src": "1640:23:1" + } + ], + "contractDependencies": [ + 2393, + 2941, + 8085, + 8137 + ], + "contractKind": "contract", + "documentation": { + "id": 130, + "nodeType": "StructuredDocumentation", + "src": "445:1133:1", + "text": " @author Balancer Labs\n @title Smart Pool with customizable features\n @notice PCToken is the \"Balancer Smart Pool\" token (transferred upon finalization)\n @dev Rights are defined as follows (index values into the array)\n 0: canPauseSwapping - can setPublicSwap back to false after turning it on\n by default, it is off on initialization and can only be turned on\n 1: canChangeSwapFee - can setSwapFee after initialization (by default, it is fixed at create time)\n 2: canChangeWeights - can bind new token weights (allowed by default in base pool)\n 3: canAddRemoveTokens - can bind/unbind tokens (allowed by default in base pool)\n 4: canWhitelistLPs - can restrict LPs to a whitelist\n 5: canChangeCap - can change the BSP cap (max # of pool tokens)\n Note that functions called on bPool and bFactory may look like internal calls,\n but since they are contracts accessed through an interface, they are really external.\n To make this explicit, we could write \"IBPool(address(bPool)).function()\" everywhere,\n instead of \"bPool.function()\"." + }, + "fullyImplemented": true, + "id": 2095, + "linearizedBaseContracts": [ + 2095, + 8137, + 8085, + 2941, + 2393 + ], + "name": "ConfigurableRightsPool", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 139, + "libraryName": { + "contractScope": null, + "id": 137, + "name": "BalancerSafeMath", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 8529, + "src": "1676:16:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_BalancerSafeMath_$8529", + "typeString": "library BalancerSafeMath" + } + }, + "nodeType": "UsingForDirective", + "src": "1670:32:1", + "typeName": { + "id": 138, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1697:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + { + "constant": false, + "functionSelector": "0a165940", + "id": 141, + "mutability": "mutable", + "name": "bFactory", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2095, + "src": "1732:25:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBFactory_$2284", + "typeString": "contract IBFactory" + }, + "typeName": { + "contractScope": null, + "id": 140, + "name": "IBFactory", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 2284, + "src": "1732:9:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBFactory_$2284", + "typeString": "contract IBFactory" + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "b64ef17b", + "id": 143, + "mutability": "mutable", + "name": "bPool", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2095, + "src": "1763:19:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBPool_$2256", + "typeString": "contract IBPool" + }, + "typeName": { + "contractScope": null, + "id": 142, + "name": "IBPool", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 2256, + "src": "1763:6:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBPool_$2256", + "typeString": "contract IBPool" + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "980e8db6", + "id": 145, + "mutability": "mutable", + "name": "rights", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2095, + "src": "1836:34:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Rights_$8553_storage", + "typeString": "struct RightsManager.Rights" + }, + "typeName": { + "contractScope": null, + "id": 144, + "name": "RightsManager.Rights", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 8553, + "src": "1836:20:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Rights_$8553_storage_ptr", + "typeString": "struct RightsManager.Rights" + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 147, + "mutability": "mutable", + "name": "_newToken", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2095, + "src": "2018:43:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_NewToken_$8767_storage", + "typeString": "struct SmartPoolManager.NewToken" + }, + "typeName": { + "contractScope": null, + "id": 146, + "name": "SmartPoolManager.NewToken", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 8767, + "src": "2018:25:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_NewToken_$8767_storage_ptr", + "typeString": "struct SmartPoolManager.NewToken" + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 149, + "mutability": "mutable", + "name": "_swapFee", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2095, + "src": "2303:21:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 148, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "2303:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 152, + "mutability": "mutable", + "name": "_tokens", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2095, + "src": "2593:25:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 150, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2593:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 151, + "length": null, + "nodeType": "ArrayTypeName", + "src": "2593:9:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 155, + "mutability": "mutable", + "name": "_startBalances", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2095, + "src": "2624:29:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 153, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "2624:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 154, + "length": null, + "nodeType": "ArrayTypeName", + "src": "2624:6:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 157, + "mutability": "mutable", + "name": "_startBlock", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2095, + "src": "2812:24:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 156, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "2812:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 159, + "mutability": "mutable", + "name": "_endBlock", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2095, + "src": "2842:22:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 158, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "2842:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 162, + "mutability": "mutable", + "name": "_startWeights", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2095, + "src": "2870:28:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 160, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "2870:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 161, + "length": null, + "nodeType": "ArrayTypeName", + "src": "2870:6:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 165, + "mutability": "mutable", + "name": "_newWeights", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2095, + "src": "2904:26:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 163, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "2904:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 164, + "length": null, + "nodeType": "ArrayTypeName", + "src": "2904:6:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 167, + "mutability": "mutable", + "name": "_minimumWeightChangeBlockPeriod", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2095, + "src": "3000:44:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 166, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "3000:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 169, + "mutability": "mutable", + "name": "_addTokenTimeLockInBlocks", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2095, + "src": "3181:38:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 168, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "3181:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 173, + "mutability": "mutable", + "name": "_liquidityProviderWhitelist", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2095, + "src": "3266:60:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + }, + "typeName": { + "id": 172, + "keyType": { + "id": 170, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3274:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "3266:24:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + }, + "valueType": { + "id": 171, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3285:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 175, + "mutability": "mutable", + "name": "_bspCap", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2095, + "src": "3484:20:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 174, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "3484:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "private" + }, + { + "anonymous": true, + "documentation": null, + "id": 183, + "name": "LogCall", + "nodeType": "EventDefinition", + "parameters": { + "id": 182, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 177, + "indexed": true, + "mutability": "mutable", + "name": "sig", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 183, + "src": "3635:19:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 176, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "3635:6:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 179, + "indexed": true, + "mutability": "mutable", + "name": "caller", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 183, + "src": "3664:22:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 178, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3664:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 181, + "indexed": false, + "mutability": "mutable", + "name": "data", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 183, + "src": "3696:10:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 180, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3696:5:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3625:87:1" + }, + "src": "3612:111:1" + }, + { + "anonymous": false, + "documentation": null, + "id": 191, + "name": "LogJoin", + "nodeType": "EventDefinition", + "parameters": { + "id": 190, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 185, + "indexed": true, + "mutability": "mutable", + "name": "caller", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 191, + "src": "3752:22:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 184, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3752:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 187, + "indexed": true, + "mutability": "mutable", + "name": "tokenIn", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 191, + "src": "3784:23:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 186, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3784:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 189, + "indexed": false, + "mutability": "mutable", + "name": "tokenAmountIn", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 191, + "src": "3817:18:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 188, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "3817:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3742:99:1" + }, + "src": "3729:113:1" + }, + { + "anonymous": false, + "documentation": null, + "id": 199, + "name": "LogExit", + "nodeType": "EventDefinition", + "parameters": { + "id": 198, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 193, + "indexed": true, + "mutability": "mutable", + "name": "caller", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 199, + "src": "3871:22:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 192, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3871:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 195, + "indexed": true, + "mutability": "mutable", + "name": "tokenOut", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 199, + "src": "3903:24:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 194, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3903:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 197, + "indexed": false, + "mutability": "mutable", + "name": "tokenAmountOut", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 199, + "src": "3937:19:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 196, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "3937:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3861:101:1" + }, + "src": "3848:115:1" + }, + { + "anonymous": false, + "documentation": null, + "id": 207, + "name": "CapChanged", + "nodeType": "EventDefinition", + "parameters": { + "id": 206, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 201, + "indexed": true, + "mutability": "mutable", + "name": "caller", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 207, + "src": "3995:22:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 200, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3995:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 203, + "indexed": false, + "mutability": "mutable", + "name": "oldCap", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 207, + "src": "4027:11:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 202, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "4027:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 205, + "indexed": false, + "mutability": "mutable", + "name": "newCap", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 207, + "src": "4048:11:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 204, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "4048:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3985:80:1" + }, + "src": "3969:97:1" + }, + { + "body": { + "id": 219, + "nodeType": "Block", + "src": "4106:71:1", + "statements": [ + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 210, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "4129:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 211, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sig", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4129:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 212, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "4138:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 213, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4138:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 214, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "4150:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 215, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "data", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4150:8:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + ], + "id": 209, + "name": "LogCall", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 183, + "src": "4121:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_bytes4_$_t_address_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (bytes4,address,bytes memory)" + } + }, + "id": 216, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4121:38:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 217, + "nodeType": "EmitStatement", + "src": "4116:43:1" + }, + { + "id": 218, + "nodeType": "PlaceholderStatement", + "src": "4169:1:1" + } + ] + }, + "documentation": null, + "id": 220, + "name": "logs", + "nodeType": "ModifierDefinition", + "overrides": null, + "parameters": { + "id": 208, + "nodeType": "ParameterList", + "parameters": [], + "src": "4103:2:1" + }, + "src": "4090:87:1", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 236, + "nodeType": "Block", + "src": "4274:84:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 231, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 225, + "name": "bPool", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 143, + "src": "4300:5:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBPool_$2256", + "typeString": "contract IBPool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IBPool_$2256", + "typeString": "contract IBPool" + } + ], + "id": 224, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4292:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 223, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4292:7:1", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 226, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4292:14:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 229, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4318:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 228, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4310:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 227, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4310:7:1", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 230, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4310:10:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "4292:28:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552525f4e4f545f43524541544544", + "id": 232, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4322:17:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_66fb39878e9271a7ee5df591b338a555fbafeb1f2b5fc0642c2b1624b0fe6f60", + "typeString": "literal_string \"ERR_NOT_CREATED\"" + }, + "value": "ERR_NOT_CREATED" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_66fb39878e9271a7ee5df591b338a555fbafeb1f2b5fc0642c2b1624b0fe6f60", + "typeString": "literal_string \"ERR_NOT_CREATED\"" + } + ], + "id": 222, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "4284:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 233, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4284:56:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 234, + "nodeType": "ExpressionStatement", + "src": "4284:56:1" + }, + { + "id": 235, + "nodeType": "PlaceholderStatement", + "src": "4350:1:1" + } + ] + }, + "documentation": null, + "id": 237, + "name": "needsBPool", + "nodeType": "ModifierDefinition", + "overrides": null, + "parameters": { + "id": 221, + "nodeType": "ParameterList", + "parameters": [], + "src": "4271:2:1" + }, + "src": "4252:106:1", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 249, + "nodeType": "Block", + "src": "4511:137:1", + "statements": [ + { + "id": 239, + "nodeType": "PlaceholderStatement", + "src": "4521:1:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 245, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 241, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "4586:4:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ConfigurableRightsPool_$2095", + "typeString": "contract ConfigurableRightsPool" + } + }, + "id": 242, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "totalSupply", + "nodeType": "MemberAccess", + "referencedDeclaration": 2751, + "src": "4586:16:1", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$", + "typeString": "function () view external returns (uint256)" + } + }, + "id": 243, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4586:18:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "argumentTypes": null, + "id": 244, + "name": "_bspCap", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 175, + "src": "4608:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4586:29:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552525f4341505f4c494d49545f52454143484544", + "id": 246, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4617:23:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c24123ac77b7c60e3a3712bca729337b5ae473eae49195e34be7a874f3cd7109", + "typeString": "literal_string \"ERR_CAP_LIMIT_REACHED\"" + }, + "value": "ERR_CAP_LIMIT_REACHED" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_c24123ac77b7c60e3a3712bca729337b5ae473eae49195e34be7a874f3cd7109", + "typeString": "literal_string \"ERR_CAP_LIMIT_REACHED\"" + } + ], + "id": 240, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "4578:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 247, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4578:63:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 248, + "nodeType": "ExpressionStatement", + "src": "4578:63:1" + } + ] + }, + "documentation": null, + "id": 250, + "name": "withinCap", + "nodeType": "ModifierDefinition", + "overrides": null, + "parameters": { + "id": 238, + "nodeType": "ParameterList", + "parameters": [], + "src": "4508:2:1" + }, + "src": "4490:158:1", + "virtual": false, + "visibility": "internal" + }, + { + "constant": true, + "functionSelector": "f226b528", + "id": 253, + "mutability": "constant", + "name": "DEFAULT_MIN_WEIGHT_CHANGE_BLOCK_PERIOD", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2095, + "src": "4970:64:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 251, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "4970:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "3130", + "id": 252, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5032:2:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_10_by_1", + "typeString": "int_const 10" + }, + "value": "10" + }, + "visibility": "public" + }, + { + "constant": true, + "functionSelector": "a835a0de", + "id": 256, + "mutability": "constant", + "name": "DEFAULT_ADD_TOKEN_TIME_LOCK_IN_BLOCKS", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2095, + "src": "5040:63:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 254, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "5040:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "3130", + "id": 255, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5101:2:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_10_by_1", + "typeString": "int_const 10" + }, + "value": "10" + }, + "visibility": "public" + }, + { + "body": { + "id": 375, + "nodeType": "Block", + "src": "6389:1800:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 284, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 281, + "name": "swapFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 272, + "src": "6637:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 282, + "name": "BalancerConstants", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8223, + "src": "6648:17:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_BalancerConstants_$8223_$", + "typeString": "type(library BalancerConstants)" + } + }, + "id": 283, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "MIN_FEE", + "nodeType": "MemberAccess", + "referencedDeclaration": 8182, + "src": "6648:25:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6637:36:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552525f494e56414c49445f535741505f464545", + "id": 285, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6675:22:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_cd1668f9c57e6a7dfa3bdc4203196822fdfec281adf591c5ca185ebc2db842a9", + "typeString": "literal_string \"ERR_INVALID_SWAP_FEE\"" + }, + "value": "ERR_INVALID_SWAP_FEE" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_cd1668f9c57e6a7dfa3bdc4203196822fdfec281adf591c5ca185ebc2db842a9", + "typeString": "literal_string \"ERR_INVALID_SWAP_FEE\"" + } + ], + "id": 280, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "6629:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 286, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6629:69:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 287, + "nodeType": "ExpressionStatement", + "src": "6629:69:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 292, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 289, + "name": "swapFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 272, + "src": "6716:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 290, + "name": "BalancerConstants", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8223, + "src": "6727:17:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_BalancerConstants_$8223_$", + "typeString": "type(library BalancerConstants)" + } + }, + "id": 291, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "MAX_FEE", + "nodeType": "MemberAccess", + "referencedDeclaration": 8187, + "src": "6727:25:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6716:36:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552525f494e56414c49445f535741505f464545", + "id": 293, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6754:22:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_cd1668f9c57e6a7dfa3bdc4203196822fdfec281adf591c5ca185ebc2db842a9", + "typeString": "literal_string \"ERR_INVALID_SWAP_FEE\"" + }, + "value": "ERR_INVALID_SWAP_FEE" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_cd1668f9c57e6a7dfa3bdc4203196822fdfec281adf591c5ca185ebc2db842a9", + "typeString": "literal_string \"ERR_INVALID_SWAP_FEE\"" + } + ], + "id": 288, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "6708:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 294, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6708:69:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 295, + "nodeType": "ExpressionStatement", + "src": "6708:69:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 301, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 297, + "name": "startBalances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 267, + "src": "6831:13:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 298, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "6831:20:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 299, + "name": "tokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 264, + "src": "6855:6:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 300, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "6855:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6831:37:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552525f53544152545f42414c414e4345535f4d49534d41544348", + "id": 302, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6870:29:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_6b4288ec12dc44cb6f3f1fea87e9f964d4f16c5c11b2118209769221c3d24566", + "typeString": "literal_string \"ERR_START_BALANCES_MISMATCH\"" + }, + "value": "ERR_START_BALANCES_MISMATCH" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_6b4288ec12dc44cb6f3f1fea87e9f964d4f16c5c11b2118209769221c3d24566", + "typeString": "literal_string \"ERR_START_BALANCES_MISMATCH\"" + } + ], + "id": 296, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "6823:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 303, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6823:77:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 304, + "nodeType": "ExpressionStatement", + "src": "6823:77:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 310, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 306, + "name": "startWeights", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 270, + "src": "6918:12:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 307, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "6918:19:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 308, + "name": "tokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 264, + "src": "6941:6:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 309, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "6941:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6918:36:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552525f53544152545f574549474854535f4d49534d41544348", + "id": 311, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6956:28:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_2621dad9e42b67f637d979efad333e4d7c412f0b27bcffbae38120716d390931", + "typeString": "literal_string \"ERR_START_WEIGHTS_MISMATCH\"" + }, + "value": "ERR_START_WEIGHTS_MISMATCH" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_2621dad9e42b67f637d979efad333e4d7c412f0b27bcffbae38120716d390931", + "typeString": "literal_string \"ERR_START_WEIGHTS_MISMATCH\"" + } + ], + "id": 305, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "6910:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 312, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6910:75:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 313, + "nodeType": "ExpressionStatement", + "src": "6910:75:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 319, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 315, + "name": "tokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 264, + "src": "7208:6:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 316, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "7208:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 317, + "name": "BalancerConstants", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8223, + "src": "7225:17:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_BalancerConstants_$8223_$", + "typeString": "type(library BalancerConstants)" + } + }, + "id": 318, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "MIN_ASSET_LIMIT", + "nodeType": "MemberAccess", + "referencedDeclaration": 8206, + "src": "7225:33:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7208:50:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552525f544f4f5f4645575f544f4b454e53", + "id": 320, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7260:20:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c66fc8e373d3f5684badc6f480386803cc92f3179419beb5482d8d0d61d61093", + "typeString": "literal_string \"ERR_TOO_FEW_TOKENS\"" + }, + "value": "ERR_TOO_FEW_TOKENS" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_c66fc8e373d3f5684badc6f480386803cc92f3179419beb5482d8d0d61d61093", + "typeString": "literal_string \"ERR_TOO_FEW_TOKENS\"" + } + ], + "id": 314, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "7200:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 321, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7200:81:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 322, + "nodeType": "ExpressionStatement", + "src": "7200:81:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 328, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 324, + "name": "tokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 264, + "src": "7299:6:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 325, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "7299:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 326, + "name": "BalancerConstants", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8223, + "src": "7316:17:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_BalancerConstants_$8223_$", + "typeString": "type(library BalancerConstants)" + } + }, + "id": 327, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "MAX_ASSET_LIMIT", + "nodeType": "MemberAccess", + "referencedDeclaration": 8209, + "src": "7316:33:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7299:50:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552525f544f4f5f4d414e595f544f4b454e53", + "id": 329, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7351:21:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_dd26b33b4f358e59a830751664fb157416c486366f3f8195e5bc84e9e85aa325", + "typeString": "literal_string \"ERR_TOO_MANY_TOKENS\"" + }, + "value": "ERR_TOO_MANY_TOKENS" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_dd26b33b4f358e59a830751664fb157416c486366f3f8195e5bc84e9e85aa325", + "typeString": "literal_string \"ERR_TOO_MANY_TOKENS\"" + } + ], + "id": 323, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "7291:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 330, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7291:82:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 331, + "nodeType": "ExpressionStatement", + "src": "7291:82:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 336, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 332, + "name": "bFactory", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 141, + "src": "7573:8:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBFactory_$2284", + "typeString": "contract IBFactory" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 334, + "name": "factoryAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 259, + "src": "7594:14:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 333, + "name": "IBFactory", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2284, + "src": "7584:9:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IBFactory_$2284_$", + "typeString": "type(contract IBFactory)" + } + }, + "id": 335, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7584:25:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBFactory_$2284", + "typeString": "contract IBFactory" + } + }, + "src": "7573:36:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBFactory_$2284", + "typeString": "contract IBFactory" + } + }, + "id": 337, + "nodeType": "ExpressionStatement", + "src": "7573:36:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 340, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 338, + "name": "rights", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 145, + "src": "7619:6:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Rights_$8553_storage", + "typeString": "struct RightsManager.Rights storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 339, + "name": "rightsStruct", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 274, + "src": "7628:12:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Rights_$8553_memory_ptr", + "typeString": "struct RightsManager.Rights memory" + } + }, + "src": "7619:21:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Rights_$8553_storage", + "typeString": "struct RightsManager.Rights storage ref" + } + }, + "id": 341, + "nodeType": "ExpressionStatement", + "src": "7619:21:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 344, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 342, + "name": "_tokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 152, + "src": "7650:7:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 343, + "name": "tokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 264, + "src": "7660:6:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "src": "7650:16:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 345, + "nodeType": "ExpressionStatement", + "src": "7650:16:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 348, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 346, + "name": "_startBalances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 155, + "src": "7676:14:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage", + "typeString": "uint256[] storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 347, + "name": "startBalances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 267, + "src": "7693:13:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "src": "7676:30:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage", + "typeString": "uint256[] storage ref" + } + }, + "id": 349, + "nodeType": "ExpressionStatement", + "src": "7676:30:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 352, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 350, + "name": "_startWeights", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 162, + "src": "7716:13:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage", + "typeString": "uint256[] storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 351, + "name": "startWeights", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 270, + "src": "7732:12:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "src": "7716:28:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage", + "typeString": "uint256[] storage ref" + } + }, + "id": 353, + "nodeType": "ExpressionStatement", + "src": "7716:28:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 356, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 354, + "name": "_swapFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 149, + "src": "7754:8:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 355, + "name": "swapFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 272, + "src": "7765:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7754:18:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 357, + "nodeType": "ExpressionStatement", + "src": "7754:18:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 360, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 358, + "name": "_minimumWeightChangeBlockPeriod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 167, + "src": "7782:31:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 359, + "name": "DEFAULT_MIN_WEIGHT_CHANGE_BLOCK_PERIOD", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 253, + "src": "7816:38:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7782:72:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 361, + "nodeType": "ExpressionStatement", + "src": "7782:72:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 364, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 362, + "name": "_addTokenTimeLockInBlocks", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 169, + "src": "7864:25:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 363, + "name": "DEFAULT_ADD_TOKEN_TIME_LOCK_IN_BLOCKS", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 256, + "src": "7892:37:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7864:65:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 365, + "nodeType": "ExpressionStatement", + "src": "7864:65:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 368, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 366, + "name": "_startBlock", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 157, + "src": "8051:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 367, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8065:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "8051:15:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 369, + "nodeType": "ExpressionStatement", + "src": "8051:15:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 373, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 370, + "name": "_bspCap", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 175, + "src": "8146:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 371, + "name": "BalancerConstants", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8223, + "src": "8156:17:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_BalancerConstants_$8223_$", + "typeString": "type(library BalancerConstants)" + } + }, + "id": 372, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "MAX_UINT", + "nodeType": "MemberAccess", + "referencedDeclaration": 8222, + "src": "8156:26:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "8146:36:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 374, + "nodeType": "ExpressionStatement", + "src": "8146:36:1" + } + ] + }, + "documentation": { + "id": 257, + "nodeType": "StructuredDocumentation", + "src": "5140:921:1", + "text": " @notice Construct a new Configurable Rights Pool (wrapper around BPool)\n @dev _tokens and _swapFee are only used for temporary storage between construction\n and create pool, and should not be used thereafter! _tokens is destroyed in\n createPool to prevent this, and _swapFee is kept in sync (defensively), but\n should never be used except in this constructor and createPool()\n @param factoryAddress - the BPoolFactory used to create the underlying pool\n @param tokenSymbolString - Token symbol (named thus to avoid shadowing)\n @param tokens - list of tokens to include\n @param startBalances - initial token balances\n @param startWeights - initial token weights\n @param swapFee - initial swap fee (will set on the core pool after pool creation)\n @param rightsStruct - Set of permissions we are assigning to this smart pool" + }, + "id": 376, + "implemented": true, + "kind": "constructor", + "modifiers": [ + { + "arguments": [ + { + "argumentTypes": null, + "id": 277, + "name": "tokenSymbolString", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 261, + "src": "6366:17:1", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "id": 278, + "modifierName": { + "argumentTypes": null, + "id": 276, + "name": "PCToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2941, + "src": "6358:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_PCToken_$2941_$", + "typeString": "type(contract PCToken)" + } + }, + "nodeType": "ModifierInvocation", + "src": "6358:26:1" + } + ], + "name": "", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 275, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 259, + "mutability": "mutable", + "name": "factoryAddress", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 376, + "src": "6087:22:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 258, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6087:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 261, + "mutability": "mutable", + "name": "tokenSymbolString", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 376, + "src": "6119:31:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 260, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "6119:6:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 264, + "mutability": "mutable", + "name": "tokens", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 376, + "src": "6160:23:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 262, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6160:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 263, + "length": null, + "nodeType": "ArrayTypeName", + "src": "6160:9:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 267, + "mutability": "mutable", + "name": "startBalances", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 376, + "src": "6193:27:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 265, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "6193:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 266, + "length": null, + "nodeType": "ArrayTypeName", + "src": "6193:6:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 270, + "mutability": "mutable", + "name": "startWeights", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 376, + "src": "6230:26:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 268, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "6230:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 269, + "length": null, + "nodeType": "ArrayTypeName", + "src": "6230:6:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 272, + "mutability": "mutable", + "name": "swapFee", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 376, + "src": "6266:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 271, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "6266:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 274, + "mutability": "mutable", + "name": "rightsStruct", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 376, + "src": "6288:40:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Rights_$8553_memory_ptr", + "typeString": "struct RightsManager.Rights" + }, + "typeName": { + "contractScope": null, + "id": 273, + "name": "RightsManager.Rights", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 8553, + "src": "6288:20:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Rights_$8553_storage_ptr", + "typeString": "struct RightsManager.Rights" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "6077:257:1" + }, + "returnParameters": { + "id": 279, + "nodeType": "ParameterList", + "parameters": [], + "src": "6389:0:1" + }, + "scope": 2095, + "src": "6066:2123:1", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 406, + "nodeType": "Block", + "src": "8597:513:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 391, + "name": "rights", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 145, + "src": "8615:6:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Rights_$8553_storage", + "typeString": "struct RightsManager.Rights storage ref" + } + }, + "id": 392, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "canChangeSwapFee", + "nodeType": "MemberAccess", + "referencedDeclaration": 8544, + "src": "8615:23:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552525f4e4f545f434f4e464947555241424c455f535741505f464545", + "id": 393, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8640:31:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_e1322481090684f87089226d6887d47f60dc8d73fdeca8189b58430d8b3ec07d", + "typeString": "literal_string \"ERR_NOT_CONFIGURABLE_SWAP_FEE\"" + }, + "value": "ERR_NOT_CONFIGURABLE_SWAP_FEE" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_e1322481090684f87089226d6887d47f60dc8d73fdeca8189b58430d8b3ec07d", + "typeString": "literal_string \"ERR_NOT_CONFIGURABLE_SWAP_FEE\"" + } + ], + "id": 390, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "8607:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 394, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8607:65:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 395, + "nodeType": "ExpressionStatement", + "src": "8607:65:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 398, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 396, + "name": "_swapFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 149, + "src": "8991:8:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 397, + "name": "swapFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 379, + "src": "9002:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "8991:18:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 399, + "nodeType": "ExpressionStatement", + "src": "8991:18:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 403, + "name": "swapFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 379, + "src": "9095:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 400, + "name": "bPool", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 143, + "src": "9078:5:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBPool_$2256", + "typeString": "contract IBPool" + } + }, + "id": 402, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "setSwapFee", + "nodeType": "MemberAccess", + "referencedDeclaration": 2111, + "src": "9078:16:1", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256) external" + } + }, + "id": 404, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9078:25:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 405, + "nodeType": "ExpressionStatement", + "src": "9078:25:1" + } + ] + }, + "documentation": { + "id": 377, + "nodeType": "StructuredDocumentation", + "src": "8222:236:1", + "text": " @notice Set the swap fee on the underlying pool\n @dev Keep the local version and core in sync (see below)\n bPool is a contract interface; function calls on it are external\n @param swapFee in Wei" + }, + "functionSelector": "34e19907", + "id": 407, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 382, + "modifierName": { + "argumentTypes": null, + "id": 381, + "name": "logs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 220, + "src": "8522:4:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "8522:4:1" + }, + { + "arguments": null, + "id": 384, + "modifierName": { + "argumentTypes": null, + "id": 383, + "name": "lock", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8124, + "src": "8535:4:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "8535:4:1" + }, + { + "arguments": null, + "id": 386, + "modifierName": { + "argumentTypes": null, + "id": 385, + "name": "onlyOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8037, + "src": "8548:9:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "8548:9:1" + }, + { + "arguments": null, + "id": 388, + "modifierName": { + "argumentTypes": null, + "id": 387, + "name": "needsBPool", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 237, + "src": "8566:10:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "8566:10:1" + } + ], + "name": "setSwapFee", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 380, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 379, + "mutability": "mutable", + "name": "swapFee", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 407, + "src": "8483:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 378, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "8483:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "8482:14:1" + }, + "returnParameters": { + "id": 389, + "nodeType": "ParameterList", + "parameters": [], + "src": "8597:0:1" + }, + "scope": 2095, + "src": "8463:647:1", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "external" + }, + { + "body": { + "id": 423, + "nodeType": "Block", + "src": "9521:44:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 419, + "name": "bPool", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 143, + "src": "9538:5:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBPool_$2256", + "typeString": "contract IBPool" + } + }, + "id": 420, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "isPublicSwap", + "nodeType": "MemberAccess", + "referencedDeclaration": 2164, + "src": "9538:18:1", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$__$returns$_t_bool_$", + "typeString": "function () view external returns (bool)" + } + }, + "id": 421, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9538:20:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 418, + "id": 422, + "nodeType": "Return", + "src": "9531:27:1" + } + ] + }, + "documentation": { + "id": 408, + "nodeType": "StructuredDocumentation", + "src": "9116:271:1", + "text": " @notice Getter for the publicSwap field on the underlying pool\n @dev nonReentrantView, because setPublicSwap is nonReentrant\n bPool is a contract interface; function calls on it are external\n @return Current value of isPublicSwap" + }, + "functionSelector": "fde924f7", + "id": 424, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 411, + "modifierName": { + "argumentTypes": null, + "id": 410, + "name": "logs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 220, + "src": "9441:4:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "9441:4:1" + }, + { + "arguments": null, + "id": 413, + "modifierName": { + "argumentTypes": null, + "id": 412, + "name": "lock", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8124, + "src": "9454:4:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "9454:4:1" + }, + { + "arguments": null, + "id": 415, + "modifierName": { + "argumentTypes": null, + "id": 414, + "name": "needsBPool", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 237, + "src": "9467:10:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "9467:10:1" + } + ], + "name": "isPublicSwap", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 409, + "nodeType": "ParameterList", + "parameters": [], + "src": "9413:2:1" + }, + "returnParameters": { + "id": 418, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 417, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 424, + "src": "9511:4:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 416, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "9511:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "9510:6:1" + }, + "scope": 2095, + "src": "9392:173:1", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "external" + }, + { + "body": { + "id": 434, + "nodeType": "Block", + "src": "9736:31:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 432, + "name": "_bspCap", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 175, + "src": "9753:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 431, + "id": 433, + "nodeType": "Return", + "src": "9746:14:1" + } + ] + }, + "documentation": { + "id": 425, + "nodeType": "StructuredDocumentation", + "src": "9571:85:1", + "text": " @notice Getter for the cap\n @return current value of the cap" + }, + "functionSelector": "554d578d", + "id": 435, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 428, + "modifierName": { + "argumentTypes": null, + "id": 427, + "name": "lock", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8124, + "src": "9704:4:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "9704:4:1" + } + ], + "name": "getCap", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 426, + "nodeType": "ParameterList", + "parameters": [], + "src": "9676:2:1" + }, + "returnParameters": { + "id": 431, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 430, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 435, + "src": "9726:4:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 429, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "9726:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "9725:6:1" + }, + "scope": 2095, + "src": "9661:106:1", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 466, + "nodeType": "Block", + "src": "10419:152:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 450, + "name": "rights", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 145, + "src": "10437:6:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Rights_$8553_storage", + "typeString": "struct RightsManager.Rights storage ref" + } + }, + "id": 451, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "canChangeCap", + "nodeType": "MemberAccess", + "referencedDeclaration": 8552, + "src": "10437:19:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552525f43414e4e4f545f4348414e47455f434150", + "id": 452, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10458:23:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_b33ab9bea3348241149fe3380d4f43be49d5c2f42b0171c9076a0feb20082c45", + "typeString": "literal_string \"ERR_CANNOT_CHANGE_CAP\"" + }, + "value": "ERR_CANNOT_CHANGE_CAP" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_b33ab9bea3348241149fe3380d4f43be49d5c2f42b0171c9076a0feb20082c45", + "typeString": "literal_string \"ERR_CANNOT_CHANGE_CAP\"" + } + ], + "id": 449, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "10429:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 453, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10429:53:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 454, + "nodeType": "ExpressionStatement", + "src": "10429:53:1" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 456, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "10509:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 457, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "10509:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 458, + "name": "_bspCap", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 175, + "src": "10521:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 459, + "name": "newCap", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 438, + "src": "10530:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 455, + "name": "CapChanged", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 207, + "src": "10498:10:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256,uint256)" + } + }, + "id": 460, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10498:39:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 461, + "nodeType": "EmitStatement", + "src": "10493:44:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 464, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 462, + "name": "_bspCap", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 175, + "src": "10548:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 463, + "name": "newCap", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 438, + "src": "10558:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10548:16:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 465, + "nodeType": "ExpressionStatement", + "src": "10548:16:1" + } + ] + }, + "documentation": { + "id": 436, + "nodeType": "StructuredDocumentation", + "src": "9773:528:1", + "text": " @notice Set the cap (max # of pool tokens)\n @dev _bspCap defaults in the constructor to unlimited\n Can set to 0 (or anywhere below the current supply), to halt new investment\n Prevent setting it before creating a pool, since createPool sets to intialSupply\n (it does this to avoid an unlimited cap window between construction and createPool)\n Therefore setting it before then has no effect, so should not be allowed\n @param newCap - new value of the cap" + }, + "functionSelector": "47786d37", + "id": 467, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 441, + "modifierName": { + "argumentTypes": null, + "id": 440, + "name": "logs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 220, + "src": "10360:4:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "10360:4:1" + }, + { + "arguments": null, + "id": 443, + "modifierName": { + "argumentTypes": null, + "id": 442, + "name": "lock", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8124, + "src": "10373:4:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "10373:4:1" + }, + { + "arguments": null, + "id": 445, + "modifierName": { + "argumentTypes": null, + "id": 444, + "name": "needsBPool", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 237, + "src": "10386:10:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "10386:10:1" + }, + { + "arguments": null, + "id": 447, + "modifierName": { + "argumentTypes": null, + "id": 446, + "name": "onlyOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8037, + "src": "10405:9:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "10405:9:1" + } + ], + "name": "setCap", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 439, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 438, + "mutability": "mutable", + "name": "newCap", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 467, + "src": "10322:11:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 437, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "10322:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "10321:13:1" + }, + "returnParameters": { + "id": 448, + "nodeType": "ParameterList", + "parameters": [], + "src": "10419:0:1" + }, + "scope": 2095, + "src": "10306:265:1", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 493, + "nodeType": "Block", + "src": "11387:116:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 482, + "name": "rights", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 145, + "src": "11405:6:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Rights_$8553_storage", + "typeString": "struct RightsManager.Rights storage ref" + } + }, + "id": 483, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "canPauseSwapping", + "nodeType": "MemberAccess", + "referencedDeclaration": 8542, + "src": "11405:23:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552525f4e4f545f5041555341424c455f53574150", + "id": 484, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11430:23:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_d6265446e2b6d9bb3302a82dd7c208f00512cd0ea4bd7929625722bd799c05d8", + "typeString": "literal_string \"ERR_NOT_PAUSABLE_SWAP\"" + }, + "value": "ERR_NOT_PAUSABLE_SWAP" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_d6265446e2b6d9bb3302a82dd7c208f00512cd0ea4bd7929625722bd799c05d8", + "typeString": "literal_string \"ERR_NOT_PAUSABLE_SWAP\"" + } + ], + "id": 481, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "11397:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 485, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11397:57:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 486, + "nodeType": "ExpressionStatement", + "src": "11397:57:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 490, + "name": "publicSwap", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 470, + "src": "11485:10:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "expression": { + "argumentTypes": null, + "id": 487, + "name": "bPool", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 143, + "src": "11465:5:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBPool_$2256", + "typeString": "contract IBPool" + } + }, + "id": 489, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "setPublicSwap", + "nodeType": "MemberAccess", + "referencedDeclaration": 2116, + "src": "11465:19:1", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_bool_$returns$__$", + "typeString": "function (bool) external" + } + }, + "id": 491, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11465:31:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 492, + "nodeType": "ExpressionStatement", + "src": "11465:31:1" + } + ] + }, + "documentation": { + "id": 468, + "nodeType": "StructuredDocumentation", + "src": "10577:665:1", + "text": " @notice Set the public swap flag on the underlying pool\n @dev If this smart pool has canPauseSwapping enabled, we can turn publicSwap off if it's already on\n Note that if they turn swapping off - but then finalize the pool - finalizing will turn the\n swapping back on. They're not supposed to finalize the underlying pool... would defeat the\n smart pool functions. (Only the owner can finalize the pool - which is this contract -\n so there is no risk from outside.)\n bPool is a contract interface; function calls on it are external\n @param publicSwap new value of the swap" + }, + "functionSelector": "49b59552", + "id": 494, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 473, + "modifierName": { + "argumentTypes": null, + "id": 472, + "name": "logs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 220, + "src": "11312:4:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "11312:4:1" + }, + { + "arguments": null, + "id": 475, + "modifierName": { + "argumentTypes": null, + "id": 474, + "name": "lock", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8124, + "src": "11325:4:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "11325:4:1" + }, + { + "arguments": null, + "id": 477, + "modifierName": { + "argumentTypes": null, + "id": 476, + "name": "onlyOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8037, + "src": "11338:9:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "11338:9:1" + }, + { + "arguments": null, + "id": 479, + "modifierName": { + "argumentTypes": null, + "id": 478, + "name": "needsBPool", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 237, + "src": "11356:10:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "11356:10:1" + } + ], + "name": "setPublicSwap", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 471, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 470, + "mutability": "mutable", + "name": "publicSwap", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 494, + "src": "11270:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 469, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "11270:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "11269:17:1" + }, + "returnParameters": { + "id": 480, + "nodeType": "ParameterList", + "parameters": [], + "src": "11387:0:1" + }, + "scope": 2095, + "src": "11247:256:1", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "external" + }, + { + "body": { + "id": 701, + "nodeType": "Block", + "src": "13076:2826:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 517, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 511, + "name": "bPool", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 143, + "src": "13102:5:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBPool_$2256", + "typeString": "contract IBPool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IBPool_$2256", + "typeString": "contract IBPool" + } + ], + "id": 510, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "13094:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 509, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13094:7:1", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 512, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13094:14:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 515, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "13120:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 514, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "13112:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 513, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13112:7:1", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 516, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13112:10:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "13094:28:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552525f49535f43524541544544", + "id": 518, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "13124:16:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_6b0fd3d98e57eda898afe909aa74ac39b5d3157328629bee2f2c2d984380d943", + "typeString": "literal_string \"ERR_IS_CREATED\"" + }, + "value": "ERR_IS_CREATED" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_6b0fd3d98e57eda898afe909aa74ac39b5d3157328629bee2f2c2d984380d943", + "typeString": "literal_string \"ERR_IS_CREATED\"" + } + ], + "id": 508, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "13086:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 519, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13086:55:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 520, + "nodeType": "ExpressionStatement", + "src": "13086:55:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 524, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 522, + "name": "initialSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 497, + "src": "13159:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 523, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "13175:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "13159:17:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552525f494e49545f535550504c59", + "id": 525, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "13178:17:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_35ec97e01386c8f685ffbaa4221c773e8d16e0e8be3ef4e9f2734f7efe30ce3d", + "typeString": "literal_string \"ERR_INIT_SUPPLY\"" + }, + "value": "ERR_INIT_SUPPLY" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_35ec97e01386c8f685ffbaa4221c773e8d16e0e8be3ef4e9f2734f7efe30ce3d", + "typeString": "literal_string \"ERR_INIT_SUPPLY\"" + } + ], + "id": 521, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "13151:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 526, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13151:45:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 527, + "nodeType": "ExpressionStatement", + "src": "13151:45:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 532, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 529, + "name": "minimumWeightChangeBlockPeriod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 499, + "src": "13215:30:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 530, + "name": "BalancerConstants", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8223, + "src": "13249:17:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_BalancerConstants_$8223_$", + "typeString": "type(library BalancerConstants)" + } + }, + "id": 531, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "MIN_WEIGHT_CHANGE_BLOCK_PERIOD", + "nodeType": "MemberAccess", + "referencedDeclaration": 8212, + "src": "13249:48:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "13215:82:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552525f494e56414c49445f424c4f434b5f504552494f44", + "id": 533, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "13315:26:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_174286deada79db652065561272131c382dda8b986f73fdd9a3fdf1a474bcb3f", + "typeString": "literal_string \"ERR_INVALID_BLOCK_PERIOD\"" + }, + "value": "ERR_INVALID_BLOCK_PERIOD" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_174286deada79db652065561272131c382dda8b986f73fdd9a3fdf1a474bcb3f", + "typeString": "literal_string \"ERR_INVALID_BLOCK_PERIOD\"" + } + ], + "id": 528, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "13207:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 534, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13207:135:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 535, + "nodeType": "ExpressionStatement", + "src": "13207:135:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 539, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 537, + "name": "addTokenTimeLockInBlocks", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 501, + "src": "13360:24:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "argumentTypes": null, + "id": 538, + "name": "minimumWeightChangeBlockPeriod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 499, + "src": "13388:30:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "13360:58:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552525f494e434f4e53495354454e545f544f4b454e5f54494d455f4c4f434b", + "id": 540, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "13436:34:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_0cb63c07dc91a81c73e89ebf2aeb42d4be4de5d2e7224c1afa439246e5908887", + "typeString": "literal_string \"ERR_INCONSISTENT_TOKEN_TIME_LOCK\"" + }, + "value": "ERR_INCONSISTENT_TOKEN_TIME_LOCK" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_0cb63c07dc91a81c73e89ebf2aeb42d4be4de5d2e7224c1afa439246e5908887", + "typeString": "literal_string \"ERR_INCONSISTENT_TOKEN_TIME_LOCK\"" + } + ], + "id": 536, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "13352:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 541, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13352:119:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 542, + "nodeType": "ExpressionStatement", + "src": "13352:119:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 547, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 544, + "name": "addTokenTimeLockInBlocks", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 501, + "src": "13489:24:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 545, + "name": "BalancerConstants", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8223, + "src": "13517:17:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_BalancerConstants_$8223_$", + "typeString": "type(library BalancerConstants)" + } + }, + "id": 546, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "MIN_TOKEN_TIME_LOCK_PERIOD", + "nodeType": "MemberAccess", + "referencedDeclaration": 8215, + "src": "13517:44:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "13489:72:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552525f494e56414c49445f544f4b454e5f54494d455f4c4f434b", + "id": 548, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "13579:29:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_7d8b52e62546f6f1f81c17befeda10e1e1745fbd6cd0bdd1c5fe2edcc8266b26", + "typeString": "literal_string \"ERR_INVALID_TOKEN_TIME_LOCK\"" + }, + "value": "ERR_INVALID_TOKEN_TIME_LOCK" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_7d8b52e62546f6f1f81c17befeda10e1e1745fbd6cd0bdd1c5fe2edcc8266b26", + "typeString": "literal_string \"ERR_INVALID_TOKEN_TIME_LOCK\"" + } + ], + "id": 543, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "13481:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 549, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13481:128:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 550, + "nodeType": "ExpressionStatement", + "src": "13481:128:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 553, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 551, + "name": "_minimumWeightChangeBlockPeriod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 167, + "src": "13620:31:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 552, + "name": "minimumWeightChangeBlockPeriod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 499, + "src": "13654:30:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "13620:64:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 554, + "nodeType": "ExpressionStatement", + "src": "13620:64:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 557, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 555, + "name": "_addTokenTimeLockInBlocks", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 169, + "src": "13694:25:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 556, + "name": "addTokenTimeLockInBlocks", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 501, + "src": "13722:24:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "13694:52:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 558, + "nodeType": "ExpressionStatement", + "src": "13694:52:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 563, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 559, + "name": "bPool", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 143, + "src": "14032:5:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBPool_$2256", + "typeString": "contract IBPool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 560, + "name": "bFactory", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 141, + "src": "14040:8:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBFactory_$2284", + "typeString": "contract IBFactory" + } + }, + "id": 561, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "newBPool", + "nodeType": "MemberAccess", + "referencedDeclaration": 2261, + "src": "14040:17:1", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$__$returns$_t_contract$_IBPool_$2256_$", + "typeString": "function () external returns (contract IBPool)" + } + }, + "id": 562, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "14040:19:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBPool_$2256", + "typeString": "contract IBPool" + } + }, + "src": "14032:27:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBPool_$2256", + "typeString": "contract IBPool" + } + }, + "id": 564, + "nodeType": "ExpressionStatement", + "src": "14032:27:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 570, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 566, + "name": "bPool", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 143, + "src": "14171:5:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBPool_$2256", + "typeString": "contract IBPool" + } + }, + "id": 567, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "EXIT_FEE", + "nodeType": "MemberAccess", + "referencedDeclaration": 2181, + "src": "14171:14:1", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$", + "typeString": "function () view external returns (uint256)" + } + }, + "id": 568, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "14171:16:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 569, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14191:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "14171:21:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552525f4e4f4e5a45524f5f455849545f464545", + "id": 571, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14194:22:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_ba8767559788f09091a47460b32b63ea34b10320180ed4156a84c3d70535da2a", + "typeString": "literal_string \"ERR_NONZERO_EXIT_FEE\"" + }, + "value": "ERR_NONZERO_EXIT_FEE" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_ba8767559788f09091a47460b32b63ea34b10320180ed4156a84c3d70535da2a", + "typeString": "literal_string \"ERR_NONZERO_EXIT_FEE\"" + } + ], + "id": 565, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "14163:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 572, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "14163:54:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 573, + "nodeType": "ExpressionStatement", + "src": "14163:54:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 578, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 575, + "name": "BalancerConstants", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8223, + "src": "14235:17:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_BalancerConstants_$8223_$", + "typeString": "type(library BalancerConstants)" + } + }, + "id": 576, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "EXIT_FEE", + "nodeType": "MemberAccess", + "referencedDeclaration": 8190, + "src": "14235:26:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 577, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14265:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "14235:31:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552525f4e4f4e5a45524f5f455849545f464545", + "id": 579, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14268:22:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_ba8767559788f09091a47460b32b63ea34b10320180ed4156a84c3d70535da2a", + "typeString": "literal_string \"ERR_NONZERO_EXIT_FEE\"" + }, + "value": "ERR_NONZERO_EXIT_FEE" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_ba8767559788f09091a47460b32b63ea34b10320180ed4156a84c3d70535da2a", + "typeString": "literal_string \"ERR_NONZERO_EXIT_FEE\"" + } + ], + "id": 574, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "14227:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 580, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "14227:64:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 581, + "nodeType": "ExpressionStatement", + "src": "14227:64:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 585, + "name": "_swapFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 149, + "src": "14476:8:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 582, + "name": "bPool", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 143, + "src": "14459:5:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBPool_$2256", + "typeString": "contract IBPool" + } + }, + "id": 584, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "setSwapFee", + "nodeType": "MemberAccess", + "referencedDeclaration": 2111, + "src": "14459:16:1", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256) external" + } + }, + "id": 586, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "14459:26:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 587, + "nodeType": "ExpressionStatement", + "src": "14459:26:1" + }, + { + "condition": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 588, + "name": "rights", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 145, + "src": "14814:6:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Rights_$8553_storage", + "typeString": "struct RightsManager.Rights storage ref" + } + }, + "id": 589, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "canChangeCap", + "nodeType": "MemberAccess", + "referencedDeclaration": 8552, + "src": "14814:19:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 595, + "nodeType": "IfStatement", + "src": "14810:73:1", + "trueBody": { + "id": 594, + "nodeType": "Block", + "src": "14835:48:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 592, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 590, + "name": "_bspCap", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 175, + "src": "14849:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 591, + "name": "initialSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 497, + "src": "14859:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "14849:23:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 593, + "nodeType": "ExpressionStatement", + "src": "14849:23:1" + } + ] + } + }, + { + "body": { + "id": 672, + "nodeType": "Block", + "src": "14935:603:1", + "statements": [ + { + "assignments": [ + 608 + ], + "declarations": [ + { + "constant": false, + "id": 608, + "mutability": "mutable", + "name": "t", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 672, + "src": "14949:9:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 607, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "14949:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 612, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 609, + "name": "_tokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 152, + "src": "14961:7:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 611, + "indexExpression": { + "argumentTypes": null, + "id": 610, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 597, + "src": "14969:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "14961:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "14949:22:1" + }, + { + "assignments": [ + 614 + ], + "declarations": [ + { + "constant": false, + "id": 614, + "mutability": "mutable", + "name": "bal", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 672, + "src": "14985:8:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 613, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "14985:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 618, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 615, + "name": "_startBalances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 155, + "src": "14996:14:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage", + "typeString": "uint256[] storage ref" + } + }, + "id": 617, + "indexExpression": { + "argumentTypes": null, + "id": 616, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 597, + "src": "15011:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "14996:17:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "14985:28:1" + }, + { + "assignments": [ + 620 + ], + "declarations": [ + { + "constant": false, + "id": 620, + "mutability": "mutable", + "name": "denorm", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 672, + "src": "15027:11:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 619, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "15027:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 624, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 621, + "name": "_startWeights", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 162, + "src": "15041:13:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage", + "typeString": "uint256[] storage ref" + } + }, + "id": 623, + "indexExpression": { + "argumentTypes": null, + "id": 622, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 597, + "src": "15055:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "15041:16:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "15027:30:1" + }, + { + "assignments": [ + 626 + ], + "declarations": [ + { + "constant": false, + "id": 626, + "mutability": "mutable", + "name": "returnValue", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 672, + "src": "15072:16:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 625, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "15072:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 639, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 631, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "15114:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 632, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "15114:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 635, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "15134:4:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ConfigurableRightsPool_$2095", + "typeString": "contract ConfigurableRightsPool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ConfigurableRightsPool_$2095", + "typeString": "contract ConfigurableRightsPool" + } + ], + "id": 634, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "15126:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 633, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "15126:7:1", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 636, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "15126:13:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 637, + "name": "bal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 614, + "src": "15141:3:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 628, + "name": "t", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 608, + "src": "15098:1:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 627, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2393, + "src": "15091:6:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC20_$2393_$", + "typeString": "type(contract IERC20)" + } + }, + "id": 629, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "15091:9:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$2393", + "typeString": "contract IERC20" + } + }, + "id": 630, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "transferFrom", + "nodeType": "MemberAccess", + "referencedDeclaration": 2392, + "src": "15091:22:1", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,address,uint256) external returns (bool)" + } + }, + "id": 638, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "15091:54:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "15072:73:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 641, + "name": "returnValue", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 626, + "src": "15167:11:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552525f45524332305f46414c5345", + "id": 642, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "15180:17:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_cfe847c677cf42c21ce03ee8e7625272fdefc571a2ce6d0eacad2e7c6f42fc3f", + "typeString": "literal_string \"ERR_ERC20_FALSE\"" + }, + "value": "ERR_ERC20_FALSE" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_cfe847c677cf42c21ce03ee8e7625272fdefc571a2ce6d0eacad2e7c6f42fc3f", + "typeString": "literal_string \"ERR_ERC20_FALSE\"" + } + ], + "id": 640, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "15159:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 643, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "15159:39:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 644, + "nodeType": "ExpressionStatement", + "src": "15159:39:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 657, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 645, + "name": "returnValue", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 626, + "src": "15213:11:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 652, + "name": "bPool", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 143, + "src": "15253:5:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBPool_$2256", + "typeString": "contract IBPool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IBPool_$2256", + "typeString": "contract IBPool" + } + ], + "id": 651, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "15245:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 650, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "15245:7:1", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 653, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "15245:14:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 654, + "name": "BalancerConstants", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8223, + "src": "15261:17:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_BalancerConstants_$8223_$", + "typeString": "type(library BalancerConstants)" + } + }, + "id": 655, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "MAX_UINT", + "nodeType": "MemberAccess", + "referencedDeclaration": 8222, + "src": "15261:26:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 647, + "name": "t", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 608, + "src": "15234:1:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 646, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2393, + "src": "15227:6:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC20_$2393_$", + "typeString": "type(contract IERC20)" + } + }, + "id": 648, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "15227:9:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$2393", + "typeString": "contract IERC20" + } + }, + "id": 649, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "approve", + "nodeType": "MemberAccess", + "referencedDeclaration": 2372, + "src": "15227:17:1", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) external returns (bool)" + } + }, + "id": 656, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "15227:61:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "15213:75:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 658, + "nodeType": "ExpressionStatement", + "src": "15213:75:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 660, + "name": "returnValue", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 626, + "src": "15310:11:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552525f45524332305f46414c5345", + "id": 661, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "15323:17:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_cfe847c677cf42c21ce03ee8e7625272fdefc571a2ce6d0eacad2e7c6f42fc3f", + "typeString": "literal_string \"ERR_ERC20_FALSE\"" + }, + "value": "ERR_ERC20_FALSE" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_cfe847c677cf42c21ce03ee8e7625272fdefc571a2ce6d0eacad2e7c6f42fc3f", + "typeString": "literal_string \"ERR_ERC20_FALSE\"" + } + ], + "id": 659, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "15302:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 662, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "15302:39:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 663, + "nodeType": "ExpressionStatement", + "src": "15302:39:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 667, + "name": "t", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 608, + "src": "15512:1:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 668, + "name": "bal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 614, + "src": "15515:3:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 669, + "name": "denorm", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 620, + "src": "15520:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 664, + "name": "bPool", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 143, + "src": "15501:5:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBPool_$2256", + "typeString": "contract IBPool" + } + }, + "id": 666, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "bind", + "nodeType": "MemberAccess", + "referencedDeclaration": 2125, + "src": "15501:10:1", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256,uint256) external" + } + }, + "id": 670, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "15501:26:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 671, + "nodeType": "ExpressionStatement", + "src": "15501:26:1" + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 603, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 600, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 597, + "src": "14910:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 601, + "name": "_tokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 152, + "src": "14914:7:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 602, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "14914:14:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "14910:18:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 673, + "initializationExpression": { + "assignments": [ + 597 + ], + "declarations": [ + { + "constant": false, + "id": 597, + "mutability": "mutable", + "name": "i", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 673, + "src": "14898:6:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 596, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "14898:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 599, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 598, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14907:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "14898:10:1" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 605, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "14930:3:1", + "subExpression": { + "argumentTypes": null, + "id": 604, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 597, + "src": "14930:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 606, + "nodeType": "ExpressionStatement", + "src": "14930:3:1" + }, + "nodeType": "ForStatement", + "src": "14893:645:1" + }, + { + "body": { + "id": 683, + "nodeType": "Block", + "src": "15731:38:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 678, + "name": "_tokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 152, + "src": "15745:7:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 680, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "pop", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "15745:11:1", + "typeDescriptions": { + "typeIdentifier": "t_function_arraypop_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 681, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "15745:13:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 682, + "nodeType": "ExpressionStatement", + "src": "15745:13:1" + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 677, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 674, + "name": "_tokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 152, + "src": "15711:7:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 675, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "15711:14:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 676, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "15728:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "15711:18:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 684, + "nodeType": "WhileStatement", + "src": "15704:65:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "74727565", + "id": 688, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "15799:4:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "expression": { + "argumentTypes": null, + "id": 685, + "name": "bPool", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 143, + "src": "15779:5:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBPool_$2256", + "typeString": "contract IBPool" + } + }, + "id": 687, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "setPublicSwap", + "nodeType": "MemberAccess", + "referencedDeclaration": 2116, + "src": "15779:19:1", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_bool_$returns$__$", + "typeString": "function (bool) external" + } + }, + "id": 689, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "15779:25:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 690, + "nodeType": "ExpressionStatement", + "src": "15779:25:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 692, + "name": "initialSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 497, + "src": "15830:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 691, + "name": "_mintPoolShare", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2058, + "src": "15815:14:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256)" + } + }, + "id": 693, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "15815:29:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 694, + "nodeType": "ExpressionStatement", + "src": "15815:29:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 696, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "15869:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 697, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "15869:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 698, + "name": "initialSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 497, + "src": "15881:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 695, + "name": "_pushPoolShare", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2071, + "src": "15854:14:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 699, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "15854:41:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 700, + "nodeType": "ExpressionStatement", + "src": "15854:41:1" + } + ] + }, + "documentation": { + "id": 495, + "nodeType": "StructuredDocumentation", + "src": "11637:1233:1", + "text": " @notice Create a new Smart Pool - and set the block period time parameters\n @dev Initialize the swap fee to the value provided in the CRP constructor\n Can be changed if the canChangeSwapFee permission is enabled\n Time parameters will be fixed at these values\n If this contract doesn't have canChangeWeights permission - or you want to use the default\n values, the block time arguments\n are not needed, and you can just call the single-argument createPool()\n Code is duplicated in the overloaded createPool! If you change one, change the other!\n Unfortunately I cannot call this.createPool(initialSupply) from the overloaded one,\n because msg.sender will be different (contract address vs external account), and the\n token transfers would fail\n @param initialSupply starting token balance\n @param minimumWeightChangeBlockPeriod - Enforce a minimum time between the start and end blocks\n @param addTokenTimeLockInBlocks - Enforce a mandatory wait time between updates\n This is also the wait time between committing and applying a new token" + }, + "functionSelector": "c3391d27", + "id": 702, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 504, + "modifierName": { + "argumentTypes": null, + "id": 503, + "name": "logs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 220, + "src": "13038:4:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "13038:4:1" + }, + { + "arguments": null, + "id": 506, + "modifierName": { + "argumentTypes": null, + "id": 505, + "name": "lock", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8124, + "src": "13051:4:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "13051:4:1" + } + ], + "name": "createPool", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 502, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 497, + "mutability": "mutable", + "name": "initialSupply", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 702, + "src": "12904:18:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 496, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "12904:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 499, + "mutability": "mutable", + "name": "minimumWeightChangeBlockPeriod", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 702, + "src": "12932:35:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 498, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "12932:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 501, + "mutability": "mutable", + "name": "addTokenTimeLockInBlocks", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 702, + "src": "12977:29:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 500, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "12977:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "12894:118:1" + }, + "returnParameters": { + "id": 507, + "nodeType": "ParameterList", + "parameters": [], + "src": "13076:0:1" + }, + "scope": 2095, + "src": "12875:3027:1", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "external" + }, + { + "body": { + "id": 874, + "nodeType": "Block", + "src": "16665:2656:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 721, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 715, + "name": "bPool", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 143, + "src": "16691:5:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBPool_$2256", + "typeString": "contract IBPool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IBPool_$2256", + "typeString": "contract IBPool" + } + ], + "id": 714, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "16683:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 713, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "16683:7:1", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 716, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "16683:14:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 719, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "16709:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 718, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "16701:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 717, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "16701:7:1", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 720, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "16701:10:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "16683:28:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552525f49535f43524541544544", + "id": 722, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "16713:16:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_6b0fd3d98e57eda898afe909aa74ac39b5d3157328629bee2f2c2d984380d943", + "typeString": "literal_string \"ERR_IS_CREATED\"" + }, + "value": "ERR_IS_CREATED" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_6b0fd3d98e57eda898afe909aa74ac39b5d3157328629bee2f2c2d984380d943", + "typeString": "literal_string \"ERR_IS_CREATED\"" + } + ], + "id": 712, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "16675:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 723, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "16675:55:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 724, + "nodeType": "ExpressionStatement", + "src": "16675:55:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 728, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 726, + "name": "initialSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 705, + "src": "16748:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 727, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "16764:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "16748:17:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552525f494e49545f535550504c59", + "id": 729, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "16767:17:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_35ec97e01386c8f685ffbaa4221c773e8d16e0e8be3ef4e9f2734f7efe30ce3d", + "typeString": "literal_string \"ERR_INIT_SUPPLY\"" + }, + "value": "ERR_INIT_SUPPLY" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_35ec97e01386c8f685ffbaa4221c773e8d16e0e8be3ef4e9f2734f7efe30ce3d", + "typeString": "literal_string \"ERR_INIT_SUPPLY\"" + } + ], + "id": 725, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "16740:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 730, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "16740:45:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 731, + "nodeType": "ExpressionStatement", + "src": "16740:45:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 736, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 732, + "name": "bPool", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 143, + "src": "17069:5:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBPool_$2256", + "typeString": "contract IBPool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 733, + "name": "bFactory", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 141, + "src": "17077:8:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBFactory_$2284", + "typeString": "contract IBFactory" + } + }, + "id": 734, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "newBPool", + "nodeType": "MemberAccess", + "referencedDeclaration": 2261, + "src": "17077:17:1", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$__$returns$_t_contract$_IBPool_$2256_$", + "typeString": "function () external returns (contract IBPool)" + } + }, + "id": 735, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "17077:19:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBPool_$2256", + "typeString": "contract IBPool" + } + }, + "src": "17069:27:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBPool_$2256", + "typeString": "contract IBPool" + } + }, + "id": 737, + "nodeType": "ExpressionStatement", + "src": "17069:27:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 743, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 739, + "name": "bPool", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 143, + "src": "17208:5:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBPool_$2256", + "typeString": "contract IBPool" + } + }, + "id": 740, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "EXIT_FEE", + "nodeType": "MemberAccess", + "referencedDeclaration": 2181, + "src": "17208:14:1", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$", + "typeString": "function () view external returns (uint256)" + } + }, + "id": 741, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "17208:16:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 742, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "17228:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "17208:21:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552525f4e4f4e5a45524f5f455849545f464545", + "id": 744, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "17231:22:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_ba8767559788f09091a47460b32b63ea34b10320180ed4156a84c3d70535da2a", + "typeString": "literal_string \"ERR_NONZERO_EXIT_FEE\"" + }, + "value": "ERR_NONZERO_EXIT_FEE" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_ba8767559788f09091a47460b32b63ea34b10320180ed4156a84c3d70535da2a", + "typeString": "literal_string \"ERR_NONZERO_EXIT_FEE\"" + } + ], + "id": 738, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "17200:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 745, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "17200:54:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 746, + "nodeType": "ExpressionStatement", + "src": "17200:54:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 751, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 748, + "name": "BalancerConstants", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8223, + "src": "17272:17:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_BalancerConstants_$8223_$", + "typeString": "type(library BalancerConstants)" + } + }, + "id": 749, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "EXIT_FEE", + "nodeType": "MemberAccess", + "referencedDeclaration": 8190, + "src": "17272:26:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 750, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "17302:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "17272:31:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552525f4e4f4e5a45524f5f455849545f464545", + "id": 752, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "17305:22:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_ba8767559788f09091a47460b32b63ea34b10320180ed4156a84c3d70535da2a", + "typeString": "literal_string \"ERR_NONZERO_EXIT_FEE\"" + }, + "value": "ERR_NONZERO_EXIT_FEE" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_ba8767559788f09091a47460b32b63ea34b10320180ed4156a84c3d70535da2a", + "typeString": "literal_string \"ERR_NONZERO_EXIT_FEE\"" + } + ], + "id": 747, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "17264:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 753, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "17264:64:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 754, + "nodeType": "ExpressionStatement", + "src": "17264:64:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 758, + "name": "_swapFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 149, + "src": "17513:8:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 755, + "name": "bPool", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 143, + "src": "17496:5:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBPool_$2256", + "typeString": "contract IBPool" + } + }, + "id": 757, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "setSwapFee", + "nodeType": "MemberAccess", + "referencedDeclaration": 2111, + "src": "17496:16:1", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256) external" + } + }, + "id": 759, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "17496:26:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 760, + "nodeType": "ExpressionStatement", + "src": "17496:26:1" + }, + { + "condition": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 761, + "name": "rights", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 145, + "src": "17851:6:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Rights_$8553_storage", + "typeString": "struct RightsManager.Rights storage ref" + } + }, + "id": 762, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "canChangeCap", + "nodeType": "MemberAccess", + "referencedDeclaration": 8552, + "src": "17851:19:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 768, + "nodeType": "IfStatement", + "src": "17847:73:1", + "trueBody": { + "id": 767, + "nodeType": "Block", + "src": "17872:48:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 765, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 763, + "name": "_bspCap", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 175, + "src": "17886:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 764, + "name": "initialSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 705, + "src": "17896:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "17886:23:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 766, + "nodeType": "ExpressionStatement", + "src": "17886:23:1" + } + ] + } + }, + { + "body": { + "id": 845, + "nodeType": "Block", + "src": "17972:458:1", + "statements": [ + { + "assignments": [ + 781 + ], + "declarations": [ + { + "constant": false, + "id": 781, + "mutability": "mutable", + "name": "t", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 845, + "src": "17986:9:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 780, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "17986:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 785, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 782, + "name": "_tokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 152, + "src": "17998:7:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 784, + "indexExpression": { + "argumentTypes": null, + "id": 783, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 770, + "src": "18006:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "17998:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "17986:22:1" + }, + { + "assignments": [ + 787 + ], + "declarations": [ + { + "constant": false, + "id": 787, + "mutability": "mutable", + "name": "bal", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 845, + "src": "18022:8:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 786, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "18022:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 791, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 788, + "name": "_startBalances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 155, + "src": "18033:14:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage", + "typeString": "uint256[] storage ref" + } + }, + "id": 790, + "indexExpression": { + "argumentTypes": null, + "id": 789, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 770, + "src": "18048:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "18033:17:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "18022:28:1" + }, + { + "assignments": [ + 793 + ], + "declarations": [ + { + "constant": false, + "id": 793, + "mutability": "mutable", + "name": "denorm", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 845, + "src": "18064:11:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 792, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "18064:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 797, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 794, + "name": "_startWeights", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 162, + "src": "18078:13:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage", + "typeString": "uint256[] storage ref" + } + }, + "id": 796, + "indexExpression": { + "argumentTypes": null, + "id": 795, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 770, + "src": "18092:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "18078:16:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "18064:30:1" + }, + { + "assignments": [ + 799 + ], + "declarations": [ + { + "constant": false, + "id": 799, + "mutability": "mutable", + "name": "returnValue", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 845, + "src": "18109:16:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 798, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "18109:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 812, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 804, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "18151:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 805, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "18151:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 808, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "18171:4:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ConfigurableRightsPool_$2095", + "typeString": "contract ConfigurableRightsPool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ConfigurableRightsPool_$2095", + "typeString": "contract ConfigurableRightsPool" + } + ], + "id": 807, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "18163:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 806, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "18163:7:1", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 809, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "18163:13:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 810, + "name": "bal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 787, + "src": "18178:3:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 801, + "name": "t", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 781, + "src": "18135:1:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 800, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2393, + "src": "18128:6:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC20_$2393_$", + "typeString": "type(contract IERC20)" + } + }, + "id": 802, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "18128:9:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$2393", + "typeString": "contract IERC20" + } + }, + "id": 803, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "transferFrom", + "nodeType": "MemberAccess", + "referencedDeclaration": 2392, + "src": "18128:22:1", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,address,uint256) external returns (bool)" + } + }, + "id": 811, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "18128:54:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "18109:73:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 814, + "name": "returnValue", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 799, + "src": "18204:11:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552525f45524332305f46414c5345", + "id": 815, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "18217:17:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_cfe847c677cf42c21ce03ee8e7625272fdefc571a2ce6d0eacad2e7c6f42fc3f", + "typeString": "literal_string \"ERR_ERC20_FALSE\"" + }, + "value": "ERR_ERC20_FALSE" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_cfe847c677cf42c21ce03ee8e7625272fdefc571a2ce6d0eacad2e7c6f42fc3f", + "typeString": "literal_string \"ERR_ERC20_FALSE\"" + } + ], + "id": 813, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "18196:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 816, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "18196:39:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 817, + "nodeType": "ExpressionStatement", + "src": "18196:39:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 830, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 818, + "name": "returnValue", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 799, + "src": "18250:11:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 825, + "name": "bPool", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 143, + "src": "18290:5:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBPool_$2256", + "typeString": "contract IBPool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IBPool_$2256", + "typeString": "contract IBPool" + } + ], + "id": 824, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "18282:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 823, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "18282:7:1", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 826, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "18282:14:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 827, + "name": "BalancerConstants", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8223, + "src": "18298:17:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_BalancerConstants_$8223_$", + "typeString": "type(library BalancerConstants)" + } + }, + "id": 828, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "MAX_UINT", + "nodeType": "MemberAccess", + "referencedDeclaration": 8222, + "src": "18298:26:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 820, + "name": "t", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 781, + "src": "18271:1:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 819, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2393, + "src": "18264:6:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC20_$2393_$", + "typeString": "type(contract IERC20)" + } + }, + "id": 821, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "18264:9:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$2393", + "typeString": "contract IERC20" + } + }, + "id": 822, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "approve", + "nodeType": "MemberAccess", + "referencedDeclaration": 2372, + "src": "18264:17:1", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) external returns (bool)" + } + }, + "id": 829, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "18264:61:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "18250:75:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 831, + "nodeType": "ExpressionStatement", + "src": "18250:75:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 833, + "name": "returnValue", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 799, + "src": "18347:11:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552525f45524332305f46414c5345", + "id": 834, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "18360:17:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_cfe847c677cf42c21ce03ee8e7625272fdefc571a2ce6d0eacad2e7c6f42fc3f", + "typeString": "literal_string \"ERR_ERC20_FALSE\"" + }, + "value": "ERR_ERC20_FALSE" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_cfe847c677cf42c21ce03ee8e7625272fdefc571a2ce6d0eacad2e7c6f42fc3f", + "typeString": "literal_string \"ERR_ERC20_FALSE\"" + } + ], + "id": 832, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "18339:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 835, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "18339:39:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 836, + "nodeType": "ExpressionStatement", + "src": "18339:39:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 840, + "name": "t", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 781, + "src": "18404:1:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 841, + "name": "bal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 787, + "src": "18407:3:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 842, + "name": "denorm", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 793, + "src": "18412:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 837, + "name": "bPool", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 143, + "src": "18393:5:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBPool_$2256", + "typeString": "contract IBPool" + } + }, + "id": 839, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "bind", + "nodeType": "MemberAccess", + "referencedDeclaration": 2125, + "src": "18393:10:1", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256,uint256) external" + } + }, + "id": 843, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "18393:26:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 844, + "nodeType": "ExpressionStatement", + "src": "18393:26:1" + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 776, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 773, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 770, + "src": "17947:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 774, + "name": "_tokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 152, + "src": "17951:7:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 775, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "17951:14:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "17947:18:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 846, + "initializationExpression": { + "assignments": [ + 770 + ], + "declarations": [ + { + "constant": false, + "id": 770, + "mutability": "mutable", + "name": "i", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 846, + "src": "17935:6:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 769, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "17935:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 772, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 771, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "17944:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "17935:10:1" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 778, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "17967:3:1", + "subExpression": { + "argumentTypes": null, + "id": 777, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 770, + "src": "17967:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 779, + "nodeType": "ExpressionStatement", + "src": "17967:3:1" + }, + "nodeType": "ForStatement", + "src": "17930:500:1" + }, + { + "body": { + "id": 856, + "nodeType": "Block", + "src": "18536:38:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 851, + "name": "_tokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 152, + "src": "18550:7:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 853, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "pop", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "18550:11:1", + "typeDescriptions": { + "typeIdentifier": "t_function_arraypop_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 854, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "18550:13:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 855, + "nodeType": "ExpressionStatement", + "src": "18550:13:1" + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 850, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 847, + "name": "_tokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 152, + "src": "18516:7:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 848, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "18516:14:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 849, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "18533:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "18516:18:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 857, + "nodeType": "WhileStatement", + "src": "18509:65:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "74727565", + "id": 861, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "19218:4:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "expression": { + "argumentTypes": null, + "id": 858, + "name": "bPool", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 143, + "src": "19198:5:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBPool_$2256", + "typeString": "contract IBPool" + } + }, + "id": 860, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "setPublicSwap", + "nodeType": "MemberAccess", + "referencedDeclaration": 2116, + "src": "19198:19:1", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_bool_$returns$__$", + "typeString": "function (bool) external" + } + }, + "id": 862, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "19198:25:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 863, + "nodeType": "ExpressionStatement", + "src": "19198:25:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 865, + "name": "initialSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 705, + "src": "19249:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 864, + "name": "_mintPoolShare", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2058, + "src": "19234:14:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256)" + } + }, + "id": 866, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "19234:29:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 867, + "nodeType": "ExpressionStatement", + "src": "19234:29:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 869, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "19288:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 870, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "19288:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 871, + "name": "initialSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 705, + "src": "19300:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 868, + "name": "_pushPoolShare", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2071, + "src": "19273:14:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 872, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "19273:41:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 873, + "nodeType": "ExpressionStatement", + "src": "19273:41:1" + } + ] + }, + "documentation": { + "id": 703, + "nodeType": "StructuredDocumentation", + "src": "15908:649:1", + "text": " @notice Create a new Smart Pool\n @dev Initialize the swap fee to the value provided in the CRP constructor\n Can be changed if the canChangeSwapFee permission is enabled\n NB:\n Code is duplicated in the overloaded createPool! If you change one, change the other!\n Unfortunately I cannot call this.createPool(initialSupply) from the overloaded one,\n because msg.sender will be different (contract address vs external account), and the\n token transfers would fail. Overloading is tricky with external functions.\n @param initialSupply starting token balance" + }, + "functionSelector": "8259e6a0", + "id": 875, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 708, + "modifierName": { + "argumentTypes": null, + "id": 707, + "name": "logs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 220, + "src": "16627:4:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "16627:4:1" + }, + { + "arguments": null, + "id": 710, + "modifierName": { + "argumentTypes": null, + "id": 709, + "name": "lock", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8124, + "src": "16640:4:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "16640:4:1" + } + ], + "name": "createPool", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 706, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 705, + "mutability": "mutable", + "name": "initialSupply", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 875, + "src": "16582:18:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 704, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "16582:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "16581:20:1" + }, + "returnParameters": { + "id": 711, + "nodeType": "ParameterList", + "parameters": [], + "src": "16665:0:1" + }, + "scope": 2095, + "src": "16562:2759:1", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "external" + }, + { + "body": { + "id": 913, + "nodeType": "Block", + "src": "20031:365:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 892, + "name": "rights", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 145, + "src": "20049:6:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Rights_$8553_storage", + "typeString": "struct RightsManager.Rights storage ref" + } + }, + "id": 893, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "canChangeWeights", + "nodeType": "MemberAccess", + "referencedDeclaration": 8546, + "src": "20049:23:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552525f4e4f545f434f4e464947555241424c455f57454947485453", + "id": 894, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "20074:30:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_57a8f447dbaa00300fc80d285090d59626810f08455b9ca1bf5a85e4a7936bed", + "typeString": "literal_string \"ERR_NOT_CONFIGURABLE_WEIGHTS\"" + }, + "value": "ERR_NOT_CONFIGURABLE_WEIGHTS" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_57a8f447dbaa00300fc80d285090d59626810f08455b9ca1bf5a85e4a7936bed", + "typeString": "literal_string \"ERR_NOT_CONFIGURABLE_WEIGHTS\"" + } + ], + "id": 891, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "20041:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 895, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "20041:64:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 896, + "nodeType": "ExpressionStatement", + "src": "20041:64:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 900, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 898, + "name": "_startBlock", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 157, + "src": "20224:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 899, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "20239:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "20224:16:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552525f4e4f5f5550444154455f445552494e475f4752414455414c", + "id": 901, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "20242:30:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_e775cf450dfd0b6c05b10d56c73999d8a54c6ffc6ae3176075a4c3587e2c174e", + "typeString": "literal_string \"ERR_NO_UPDATE_DURING_GRADUAL\"" + }, + "value": "ERR_NO_UPDATE_DURING_GRADUAL" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_e775cf450dfd0b6c05b10d56c73999d8a54c6ffc6ae3176075a4c3587e2c174e", + "typeString": "literal_string \"ERR_NO_UPDATE_DURING_GRADUAL\"" + } + ], + "id": 897, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "20216:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 902, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "20216:57:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 903, + "nodeType": "ExpressionStatement", + "src": "20216:57:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 907, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "20359:4:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ConfigurableRightsPool_$2095", + "typeString": "contract ConfigurableRightsPool" + } + }, + { + "argumentTypes": null, + "id": 908, + "name": "bPool", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 143, + "src": "20365:5:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBPool_$2256", + "typeString": "contract IBPool" + } + }, + { + "argumentTypes": null, + "id": 909, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 878, + "src": "20372:5:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 910, + "name": "newWeight", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 880, + "src": "20379:9:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ConfigurableRightsPool_$2095", + "typeString": "contract ConfigurableRightsPool" + }, + { + "typeIdentifier": "t_contract$_IBPool_$2256", + "typeString": "contract IBPool" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 904, + "name": "SmartPoolManager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10277, + "src": "20329:16:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_SmartPoolManager_$10277_$", + "typeString": "type(library SmartPoolManager)" + } + }, + "id": 906, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "updateWeight", + "nodeType": "MemberAccess", + "referencedDeclaration": 9034, + "src": "20329:29:1", + "typeDescriptions": { + "typeIdentifier": "t_function_delegatecall_nonpayable$_t_contract$_ConfigurableRightsPool_$2095_$_t_contract$_IBPool_$2256_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (contract ConfigurableRightsPool,contract IBPool,address,uint256)" + } + }, + "id": 911, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "20329:60:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 912, + "nodeType": "ExpressionStatement", + "src": "20329:60:1" + } + ] + }, + "documentation": { + "id": 876, + "nodeType": "StructuredDocumentation", + "src": "19372:501:1", + "text": " @notice Update the weight of an existing token\n @dev Notice Balance is not an input (like with rebind on BPool) since we will require prices not to change\n This is achieved by forcing balances to change proportionally to weights, so that prices don't change\n If prices could be changed, this would allow the controller to drain the pool by arbing price changes\n @param token - token to be reweighted\n @param newWeight - new weight of the token" + }, + "functionSelector": "9776e94b", + "id": 914, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 883, + "modifierName": { + "argumentTypes": null, + "id": 882, + "name": "logs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 220, + "src": "19956:4:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "19956:4:1" + }, + { + "arguments": null, + "id": 885, + "modifierName": { + "argumentTypes": null, + "id": 884, + "name": "lock", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8124, + "src": "19969:4:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "19969:4:1" + }, + { + "arguments": null, + "id": 887, + "modifierName": { + "argumentTypes": null, + "id": 886, + "name": "onlyOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8037, + "src": "19982:9:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "19982:9:1" + }, + { + "arguments": null, + "id": 889, + "modifierName": { + "argumentTypes": null, + "id": 888, + "name": "needsBPool", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 237, + "src": "20000:10:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "20000:10:1" + } + ], + "name": "updateWeight", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 881, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 878, + "mutability": "mutable", + "name": "token", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 914, + "src": "19900:13:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 877, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "19900:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 880, + "mutability": "mutable", + "name": "newWeight", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 914, + "src": "19915:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 879, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "19915:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "19899:31:1" + }, + "returnParameters": { + "id": 890, + "nodeType": "ParameterList", + "parameters": [], + "src": "20031:0:1" + }, + "scope": 2095, + "src": "19878:518:1", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "external" + }, + { + "body": { + "id": 1005, + "nodeType": "Block", + "src": "21290:1257:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 934, + "name": "rights", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 145, + "src": "21308:6:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Rights_$8553_storage", + "typeString": "struct RightsManager.Rights storage ref" + } + }, + "id": 935, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "canChangeWeights", + "nodeType": "MemberAccess", + "referencedDeclaration": 8546, + "src": "21308:23:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552525f4e4f545f434f4e464947555241424c455f57454947485453", + "id": 936, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "21333:30:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_57a8f447dbaa00300fc80d285090d59626810f08455b9ca1bf5a85e4a7936bed", + "typeString": "literal_string \"ERR_NOT_CONFIGURABLE_WEIGHTS\"" + }, + "value": "ERR_NOT_CONFIGURABLE_WEIGHTS" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_57a8f447dbaa00300fc80d285090d59626810f08455b9ca1bf5a85e4a7936bed", + "typeString": "literal_string \"ERR_NOT_CONFIGURABLE_WEIGHTS\"" + } + ], + "id": 933, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "21300:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 937, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "21300:64:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 938, + "nodeType": "ExpressionStatement", + "src": "21300:64:1" + }, + { + "assignments": [ + 943 + ], + "declarations": [ + { + "constant": false, + "id": 943, + "mutability": "mutable", + "name": "poolTokens", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1005, + "src": "21452:27:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 941, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "21452:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 942, + "length": null, + "nodeType": "ArrayTypeName", + "src": "21452:9:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 947, + "initialValue": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 944, + "name": "bPool", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 143, + "src": "21482:5:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBPool_$2256", + "typeString": "contract IBPool" + } + }, + "id": 945, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "getCurrentTokens", + "nodeType": "MemberAccess", + "referencedDeclaration": 2255, + "src": "21482:22:1", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$__$returns$_t_array$_t_address_$dyn_memory_ptr_$", + "typeString": "function () view external returns (address[] memory)" + } + }, + "id": 946, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "21482:24:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "21452:54:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 953, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 949, + "name": "newWeights", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 918, + "src": "21572:10:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[] calldata" + } + }, + "id": 950, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "21572:17:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 951, + "name": "poolTokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 943, + "src": "21593:10:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 952, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "21593:17:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "21572:38:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552525f53544152545f574549474854535f4d49534d41544348", + "id": 954, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "21612:28:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_2621dad9e42b67f637d979efad333e4d7c412f0b27bcffbae38120716d390931", + "typeString": "literal_string \"ERR_START_WEIGHTS_MISMATCH\"" + }, + "value": "ERR_START_WEIGHTS_MISMATCH" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_2621dad9e42b67f637d979efad333e4d7c412f0b27bcffbae38120716d390931", + "typeString": "literal_string \"ERR_START_WEIGHTS_MISMATCH\"" + } + ], + "id": 948, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "21564:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 955, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "21564:77:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 956, + "nodeType": "ExpressionStatement", + "src": "21564:77:1" + }, + { + "assignments": [ + 958, + 961 + ], + "declarations": [ + { + "constant": false, + "id": 958, + "mutability": "mutable", + "name": "actualStartBlock", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1005, + "src": "21837:21:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 957, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "21837:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 961, + "mutability": "mutable", + "name": "startWeights", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1005, + "src": "21869:26:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 959, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "21869:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 960, + "length": null, + "nodeType": "ArrayTypeName", + "src": "21869:6:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 971, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 964, + "name": "bPool", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 143, + "src": "21983:5:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBPool_$2256", + "typeString": "contract IBPool" + } + }, + { + "argumentTypes": null, + "id": 965, + "name": "_newToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 147, + "src": "22033:9:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_NewToken_$8767_storage", + "typeString": "struct SmartPoolManager.NewToken storage ref" + } + }, + { + "argumentTypes": null, + "id": 966, + "name": "newWeights", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 918, + "src": "22087:10:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[] calldata" + } + }, + { + "argumentTypes": null, + "id": 967, + "name": "startBlock", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 920, + "src": "22142:10:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 968, + "name": "endBlock", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 922, + "src": "22197:8:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 969, + "name": "_minimumWeightChangeBlockPeriod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 167, + "src": "22250:31:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IBPool_$2256", + "typeString": "contract IBPool" + }, + { + "typeIdentifier": "t_struct$_NewToken_$8767_storage", + "typeString": "struct SmartPoolManager.NewToken storage ref" + }, + { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[] calldata" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 962, + "name": "SmartPoolManager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10277, + "src": "21899:16:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_SmartPoolManager_$10277_$", + "typeString": "type(library SmartPoolManager)" + } + }, + "id": 963, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "updateWeightsGradually", + "nodeType": "MemberAccess", + "referencedDeclaration": 9685, + "src": "21899:39:1", + "typeDescriptions": { + "typeIdentifier": "t_function_delegatecall_view$_t_contract$_IBPool_$2256_$_t_struct$_NewToken_$8767_storage_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$", + "typeString": "function (contract IBPool,struct SmartPoolManager.NewToken storage pointer,uint256[] memory,uint256,uint256,uint256) view returns (uint256,uint256[] memory)" + } + }, + "id": 970, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "21899:423:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$", + "typeString": "tuple(uint256,uint256[] memory)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "21836:486:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 974, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 972, + "name": "_startBlock", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 157, + "src": "22332:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 973, + "name": "actualStartBlock", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 958, + "src": "22346:16:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "22332:30:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 975, + "nodeType": "ExpressionStatement", + "src": "22332:30:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 978, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 976, + "name": "_endBlock", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 159, + "src": "22372:9:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 977, + "name": "endBlock", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 922, + "src": "22384:8:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "22372:20:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 979, + "nodeType": "ExpressionStatement", + "src": "22372:20:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 982, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 980, + "name": "_newWeights", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 165, + "src": "22402:11:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage", + "typeString": "uint256[] storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 981, + "name": "newWeights", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 918, + "src": "22416:10:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[] calldata" + } + }, + "src": "22402:24:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage", + "typeString": "uint256[] storage ref" + } + }, + "id": 983, + "nodeType": "ExpressionStatement", + "src": "22402:24:1" + }, + { + "body": { + "id": 1003, + "nodeType": "Block", + "src": "22482:59:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1001, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 995, + "name": "_startWeights", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 162, + "src": "22496:13:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage", + "typeString": "uint256[] storage ref" + } + }, + "id": 997, + "indexExpression": { + "argumentTypes": null, + "id": 996, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 985, + "src": "22510:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "22496:16:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 998, + "name": "startWeights", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 961, + "src": "22515:12:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 1000, + "indexExpression": { + "argumentTypes": null, + "id": 999, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 985, + "src": "22528:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "22515:15:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "22496:34:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1002, + "nodeType": "ExpressionStatement", + "src": "22496:34:1" + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 991, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 988, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 985, + "src": "22454:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 989, + "name": "poolTokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 943, + "src": "22458:10:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 990, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "22458:17:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "22454:21:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1004, + "initializationExpression": { + "assignments": [ + 985 + ], + "declarations": [ + { + "constant": false, + "id": 985, + "mutability": "mutable", + "name": "i", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1004, + "src": "22442:6:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 984, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "22442:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 987, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 986, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "22451:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "22442:10:1" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 993, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "22477:3:1", + "subExpression": { + "argumentTypes": null, + "id": 992, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 985, + "src": "22477:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 994, + "nodeType": "ExpressionStatement", + "src": "22477:3:1" + }, + "nodeType": "ForStatement", + "src": "22437:104:1" + } + ] + }, + "documentation": { + "id": 915, + "nodeType": "StructuredDocumentation", + "src": "20402:661:1", + "text": " @notice Update weights in a predetermined way, between startBlock and endBlock,\n through external calls to pokeWeights\n @dev Must call pokeWeights at least once past the end for it to do the final update\n and enable calling this again.\n It is possible to call updateWeightsGradually during an update in some use cases\n For instance, setting newWeights to currentWeights to stop the update where it is\n @param newWeights - final weights we want to get to\n @param startBlock - when weights should start to change\n @param endBlock - when weights will be at their final values" + }, + "functionSelector": "246bc19b", + "id": 1006, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 925, + "modifierName": { + "argumentTypes": null, + "id": 924, + "name": "logs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 220, + "src": "21215:4:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "21215:4:1" + }, + { + "arguments": null, + "id": 927, + "modifierName": { + "argumentTypes": null, + "id": 926, + "name": "lock", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8124, + "src": "21228:4:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "21228:4:1" + }, + { + "arguments": null, + "id": 929, + "modifierName": { + "argumentTypes": null, + "id": 928, + "name": "onlyOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8037, + "src": "21241:9:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "21241:9:1" + }, + { + "arguments": null, + "id": 931, + "modifierName": { + "argumentTypes": null, + "id": 930, + "name": "needsBPool", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 237, + "src": "21259:10:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "21259:10:1" + } + ], + "name": "updateWeightsGradually", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 923, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 918, + "mutability": "mutable", + "name": "newWeights", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1006, + "src": "21109:26:1", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 916, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "21109:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 917, + "length": null, + "nodeType": "ArrayTypeName", + "src": "21109:6:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 920, + "mutability": "mutable", + "name": "startBlock", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1006, + "src": "21145:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 919, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "21145:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 922, + "mutability": "mutable", + "name": "endBlock", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1006, + "src": "21170:13:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 921, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "21170:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "21099:90:1" + }, + "returnParameters": { + "id": 932, + "nodeType": "ParameterList", + "parameters": [], + "src": "21290:0:1" + }, + "scope": 2095, + "src": "21068:1479:1", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "external" + }, + { + "body": { + "id": 1046, + "nodeType": "Block", + "src": "22949:572:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1017, + "name": "rights", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 145, + "src": "22967:6:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Rights_$8553_storage", + "typeString": "struct RightsManager.Rights storage ref" + } + }, + "id": 1018, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "canChangeWeights", + "nodeType": "MemberAccess", + "referencedDeclaration": 8546, + "src": "22967:23:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552525f4e4f545f434f4e464947555241424c455f57454947485453", + "id": 1019, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "22992:30:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_57a8f447dbaa00300fc80d285090d59626810f08455b9ca1bf5a85e4a7936bed", + "typeString": "literal_string \"ERR_NOT_CONFIGURABLE_WEIGHTS\"" + }, + "value": "ERR_NOT_CONFIGURABLE_WEIGHTS" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_57a8f447dbaa00300fc80d285090d59626810f08455b9ca1bf5a85e4a7936bed", + "typeString": "literal_string \"ERR_NOT_CONFIGURABLE_WEIGHTS\"" + } + ], + "id": 1016, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "22959:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1020, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "22959:64:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1021, + "nodeType": "ExpressionStatement", + "src": "22959:64:1" + }, + { + "assignments": [ + 1023 + ], + "declarations": [ + { + "constant": false, + "id": 1023, + "mutability": "mutable", + "name": "currentStartBlock", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1046, + "src": "23109:22:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1022, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "23109:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1025, + "initialValue": { + "argumentTypes": null, + "id": 1024, + "name": "_startBlock", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 157, + "src": "23134:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "23109:36:1" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1029, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1026, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -4, + "src": "23229:5:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 1027, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "number", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "23229:12:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "id": 1028, + "name": "_endBlock", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 159, + "src": "23245:9:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "23229:25:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 1035, + "nodeType": "IfStatement", + "src": "23225:71:1", + "trueBody": { + "id": 1034, + "nodeType": "Block", + "src": "23256:40:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1032, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1030, + "name": "_startBlock", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 157, + "src": "23270:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 1031, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "23284:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "23270:15:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1033, + "nodeType": "ExpressionStatement", + "src": "23270:15:1" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1039, + "name": "bPool", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 143, + "src": "23393:5:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBPool_$2256", + "typeString": "contract IBPool" + } + }, + { + "argumentTypes": null, + "id": 1040, + "name": "currentStartBlock", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1023, + "src": "23412:17:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1041, + "name": "_endBlock", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 159, + "src": "23443:9:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1042, + "name": "_startWeights", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 162, + "src": "23466:13:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage", + "typeString": "uint256[] storage ref" + } + }, + { + "argumentTypes": null, + "id": 1043, + "name": "_newWeights", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 165, + "src": "23493:11:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage", + "typeString": "uint256[] storage ref" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IBPool_$2256", + "typeString": "contract IBPool" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage", + "typeString": "uint256[] storage ref" + }, + { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage", + "typeString": "uint256[] storage ref" + } + ], + "expression": { + "argumentTypes": null, + "id": 1036, + "name": "SmartPoolManager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10277, + "src": "23351:16:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_SmartPoolManager_$10277_$", + "typeString": "type(library SmartPoolManager)" + } + }, + "id": 1038, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "pokeWeights", + "nodeType": "MemberAccess", + "referencedDeclaration": 9237, + "src": "23351:28:1", + "typeDescriptions": { + "typeIdentifier": "t_function_delegatecall_nonpayable$_t_contract$_IBPool_$2256_$_t_uint256_$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$", + "typeString": "function (contract IBPool,uint256,uint256,uint256[] memory,uint256[] memory)" + } + }, + "id": 1044, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "23351:163:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1045, + "nodeType": "ExpressionStatement", + "src": "23351:163:1" + } + ] + }, + "documentation": { + "id": 1007, + "nodeType": "StructuredDocumentation", + "src": "22553:286:1", + "text": " @notice External function called to make the contract update weights according to plan\n @dev Still works if we poke after the end of the period; also works if the weights don't change\n Resets if we are poking beyond the end, so that we can do it again" + }, + "functionSelector": "e211b875", + "id": 1047, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 1010, + "modifierName": { + "argumentTypes": null, + "id": 1009, + "name": "logs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 220, + "src": "22892:4:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "22892:4:1" + }, + { + "arguments": null, + "id": 1012, + "modifierName": { + "argumentTypes": null, + "id": 1011, + "name": "lock", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8124, + "src": "22905:4:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "22905:4:1" + }, + { + "arguments": null, + "id": 1014, + "modifierName": { + "argumentTypes": null, + "id": 1013, + "name": "needsBPool", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 237, + "src": "22918:10:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "22918:10:1" + } + ], + "name": "pokeWeights", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 1008, + "nodeType": "ParameterList", + "parameters": [], + "src": "22864:2:1" + }, + "returnParameters": { + "id": 1015, + "nodeType": "ParameterList", + "parameters": [], + "src": "22949:0:1" + }, + "scope": 2095, + "src": "22844:677:1", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "external" + }, + { + "body": { + "id": 1088, + "nodeType": "Block", + "src": "24217:427:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1066, + "name": "rights", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 145, + "src": "24235:6:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Rights_$8553_storage", + "typeString": "struct RightsManager.Rights storage ref" + } + }, + "id": 1067, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "canAddRemoveTokens", + "nodeType": "MemberAccess", + "referencedDeclaration": 8548, + "src": "24235:25:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552525f43414e4e4f545f4144445f52454d4f56455f544f4b454e53", + "id": 1068, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "24262:30:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_086adc46dfb96cd48c88a20079677dbe8b7c6a02d6b4d573b696c06700cd9ed3", + "typeString": "literal_string \"ERR_CANNOT_ADD_REMOVE_TOKENS\"" + }, + "value": "ERR_CANNOT_ADD_REMOVE_TOKENS" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_086adc46dfb96cd48c88a20079677dbe8b7c6a02d6b4d573b696c06700cd9ed3", + "typeString": "literal_string \"ERR_CANNOT_ADD_REMOVE_TOKENS\"" + } + ], + "id": 1065, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "24227:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1069, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "24227:66:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1070, + "nodeType": "ExpressionStatement", + "src": "24227:66:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1074, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1072, + "name": "_startBlock", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 157, + "src": "24377:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1073, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "24392:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "24377:16:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552525f4e4f5f5550444154455f445552494e475f4752414455414c", + "id": 1075, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "24395:30:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_e775cf450dfd0b6c05b10d56c73999d8a54c6ffc6ae3176075a4c3587e2c174e", + "typeString": "literal_string \"ERR_NO_UPDATE_DURING_GRADUAL\"" + }, + "value": "ERR_NO_UPDATE_DURING_GRADUAL" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_e775cf450dfd0b6c05b10d56c73999d8a54c6ffc6ae3176075a4c3587e2c174e", + "typeString": "literal_string \"ERR_NO_UPDATE_DURING_GRADUAL\"" + } + ], + "id": 1071, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "24369:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1076, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "24369:57:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1077, + "nodeType": "ExpressionStatement", + "src": "24369:57:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1081, + "name": "bPool", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 143, + "src": "24527:5:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBPool_$2256", + "typeString": "contract IBPool" + } + }, + { + "argumentTypes": null, + "id": 1082, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1050, + "src": "24546:5:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1083, + "name": "balance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1052, + "src": "24565:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1084, + "name": "denormalizedWeight", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1054, + "src": "24586:18:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1085, + "name": "_newToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 147, + "src": "24618:9:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_NewToken_$8767_storage", + "typeString": "struct SmartPoolManager.NewToken storage ref" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IBPool_$2256", + "typeString": "contract IBPool" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_struct$_NewToken_$8767_storage", + "typeString": "struct SmartPoolManager.NewToken storage ref" + } + ], + "expression": { + "argumentTypes": null, + "id": 1078, + "name": "SmartPoolManager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10277, + "src": "24482:16:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_SmartPoolManager_$10277_$", + "typeString": "type(library SmartPoolManager)" + } + }, + "id": 1080, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "commitAddToken", + "nodeType": "MemberAccess", + "referencedDeclaration": 9322, + "src": "24482:31:1", + "typeDescriptions": { + "typeIdentifier": "t_function_delegatecall_nonpayable$_t_contract$_IBPool_$2256_$_t_address_$_t_uint256_$_t_uint256_$_t_struct$_NewToken_$8767_storage_ptr_$returns$__$", + "typeString": "function (contract IBPool,address,uint256,uint256,struct SmartPoolManager.NewToken storage pointer)" + } + }, + "id": 1086, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "24482:155:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1087, + "nodeType": "ExpressionStatement", + "src": "24482:155:1" + } + ] + }, + "documentation": { + "id": 1048, + "nodeType": "StructuredDocumentation", + "src": "23527:477:1", + "text": " @notice Schedule (commit) a token to be added; must call applyAddToken after a fixed\n number of blocks to actually add the token\n @dev Not sure about the naming here. Kind of reversed; I would think you would \"Apply\" to add\n a token, then \"Commit\" it to actually do the binding.\n @param token - the token to be added\n @param balance - how much to be added\n @param denormalizedWeight - the desired token weight" + }, + "functionSelector": "4c20d209", + "id": 1089, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 1057, + "modifierName": { + "argumentTypes": null, + "id": 1056, + "name": "logs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 220, + "src": "24142:4:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "24142:4:1" + }, + { + "arguments": null, + "id": 1059, + "modifierName": { + "argumentTypes": null, + "id": 1058, + "name": "lock", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8124, + "src": "24155:4:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "24155:4:1" + }, + { + "arguments": null, + "id": 1061, + "modifierName": { + "argumentTypes": null, + "id": 1060, + "name": "onlyOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8037, + "src": "24168:9:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "24168:9:1" + }, + { + "arguments": null, + "id": 1063, + "modifierName": { + "argumentTypes": null, + "id": 1062, + "name": "needsBPool", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 237, + "src": "24186:10:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "24186:10:1" + } + ], + "name": "commitAddToken", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 1055, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1050, + "mutability": "mutable", + "name": "token", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1089, + "src": "24042:13:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1049, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "24042:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1052, + "mutability": "mutable", + "name": "balance", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1089, + "src": "24065:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1051, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "24065:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1054, + "mutability": "mutable", + "name": "denormalizedWeight", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1089, + "src": "24087:23:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1053, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "24087:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "24032:84:1" + }, + "returnParameters": { + "id": 1064, + "nodeType": "ParameterList", + "parameters": [], + "src": "24217:0:1" + }, + "scope": 2095, + "src": "24009:635:1", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "external" + }, + { + "body": { + "id": 1116, + "nodeType": "Block", + "src": "24873:278:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1102, + "name": "rights", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 145, + "src": "24891:6:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Rights_$8553_storage", + "typeString": "struct RightsManager.Rights storage ref" + } + }, + "id": 1103, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "canAddRemoveTokens", + "nodeType": "MemberAccess", + "referencedDeclaration": 8548, + "src": "24891:25:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552525f43414e4e4f545f4144445f52454d4f56455f544f4b454e53", + "id": 1104, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "24918:30:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_086adc46dfb96cd48c88a20079677dbe8b7c6a02d6b4d573b696c06700cd9ed3", + "typeString": "literal_string \"ERR_CANNOT_ADD_REMOVE_TOKENS\"" + }, + "value": "ERR_CANNOT_ADD_REMOVE_TOKENS" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_086adc46dfb96cd48c88a20079677dbe8b7c6a02d6b4d573b696c06700cd9ed3", + "typeString": "literal_string \"ERR_CANNOT_ADD_REMOVE_TOKENS\"" + } + ], + "id": 1101, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "24883:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1105, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "24883:66:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1106, + "nodeType": "ExpressionStatement", + "src": "24883:66:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1110, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "25049:4:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ConfigurableRightsPool_$2095", + "typeString": "contract ConfigurableRightsPool" + } + }, + { + "argumentTypes": null, + "id": 1111, + "name": "bPool", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 143, + "src": "25067:5:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBPool_$2256", + "typeString": "contract IBPool" + } + }, + { + "argumentTypes": null, + "id": 1112, + "name": "_addTokenTimeLockInBlocks", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 169, + "src": "25086:25:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1113, + "name": "_newToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 147, + "src": "25125:9:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_NewToken_$8767_storage", + "typeString": "struct SmartPoolManager.NewToken storage ref" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ConfigurableRightsPool_$2095", + "typeString": "contract ConfigurableRightsPool" + }, + { + "typeIdentifier": "t_contract$_IBPool_$2256", + "typeString": "contract IBPool" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_struct$_NewToken_$8767_storage", + "typeString": "struct SmartPoolManager.NewToken storage ref" + } + ], + "expression": { + "argumentTypes": null, + "id": 1107, + "name": "SmartPoolManager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10277, + "src": "25005:16:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_SmartPoolManager_$10277_$", + "typeString": "type(library SmartPoolManager)" + } + }, + "id": 1109, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "applyAddToken", + "nodeType": "MemberAccess", + "referencedDeclaration": 9452, + "src": "25005:30:1", + "typeDescriptions": { + "typeIdentifier": "t_function_delegatecall_nonpayable$_t_contract$_ConfigurableRightsPool_$2095_$_t_contract$_IBPool_$2256_$_t_uint256_$_t_struct$_NewToken_$8767_storage_ptr_$returns$__$", + "typeString": "function (contract ConfigurableRightsPool,contract IBPool,uint256,struct SmartPoolManager.NewToken storage pointer)" + } + }, + "id": 1114, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "25005:139:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1115, + "nodeType": "ExpressionStatement", + "src": "25005:139:1" + } + ] + }, + "documentation": { + "id": 1090, + "nodeType": "StructuredDocumentation", + "src": "24650:93:1", + "text": " @notice Add the token previously committed (in commitAddToken) to the pool" + }, + "functionSelector": "c275d81b", + "id": 1117, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 1093, + "modifierName": { + "argumentTypes": null, + "id": 1092, + "name": "logs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 220, + "src": "24798:4:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "24798:4:1" + }, + { + "arguments": null, + "id": 1095, + "modifierName": { + "argumentTypes": null, + "id": 1094, + "name": "lock", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8124, + "src": "24811:4:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "24811:4:1" + }, + { + "arguments": null, + "id": 1097, + "modifierName": { + "argumentTypes": null, + "id": 1096, + "name": "onlyOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8037, + "src": "24824:9:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "24824:9:1" + }, + { + "arguments": null, + "id": 1099, + "modifierName": { + "argumentTypes": null, + "id": 1098, + "name": "needsBPool", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 237, + "src": "24842:10:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "24842:10:1" + } + ], + "name": "applyAddToken", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 1091, + "nodeType": "ParameterList", + "parameters": [], + "src": "24770:2:1" + }, + "returnParameters": { + "id": 1100, + "nodeType": "ParameterList", + "parameters": [], + "src": "24873:0:1" + }, + "scope": 2095, + "src": "24748:403:1", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "external" + }, + { + "body": { + "id": 1170, + "nodeType": "Block", + "src": "25453:541:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1132, + "name": "rights", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 145, + "src": "25471:6:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Rights_$8553_storage", + "typeString": "struct RightsManager.Rights storage ref" + } + }, + "id": 1133, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "canAddRemoveTokens", + "nodeType": "MemberAccess", + "referencedDeclaration": 8548, + "src": "25471:25:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552525f43414e4e4f545f4144445f52454d4f56455f544f4b454e53", + "id": 1134, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "25498:30:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_086adc46dfb96cd48c88a20079677dbe8b7c6a02d6b4d573b696c06700cd9ed3", + "typeString": "literal_string \"ERR_CANNOT_ADD_REMOVE_TOKENS\"" + }, + "value": "ERR_CANNOT_ADD_REMOVE_TOKENS" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_086adc46dfb96cd48c88a20079677dbe8b7c6a02d6b4d573b696c06700cd9ed3", + "typeString": "literal_string \"ERR_CANNOT_ADD_REMOVE_TOKENS\"" + } + ], + "id": 1131, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "25463:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1135, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "25463:66:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1136, + "nodeType": "ExpressionStatement", + "src": "25463:66:1" + }, + { + "assignments": [ + 1141 + ], + "declarations": [ + { + "constant": false, + "id": 1141, + "mutability": "mutable", + "name": "poolTokens", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1170, + "src": "25617:27:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 1139, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "25617:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1140, + "length": null, + "nodeType": "ArrayTypeName", + "src": "25617:9:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1145, + "initialValue": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 1142, + "name": "bPool", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 143, + "src": "25647:5:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBPool_$2256", + "typeString": "contract IBPool" + } + }, + "id": 1143, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "getCurrentTokens", + "nodeType": "MemberAccess", + "referencedDeclaration": 2255, + "src": "25647:22:1", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$__$returns$_t_array$_t_address_$dyn_memory_ptr_$", + "typeString": "function () view external returns (address[] memory)" + } + }, + "id": 1144, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "25647:24:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "25617:54:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1151, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1147, + "name": "poolTokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1141, + "src": "25690:10:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 1148, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "25690:17:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1149, + "name": "BalancerConstants", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8223, + "src": "25710:17:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_BalancerConstants_$8223_$", + "typeString": "type(library BalancerConstants)" + } + }, + "id": 1150, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "MIN_ASSET_LIMIT", + "nodeType": "MemberAccess", + "referencedDeclaration": 8206, + "src": "25710:33:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "25690:53:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552525f544f4f5f4645575f544f4b454e53", + "id": 1152, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "25745:20:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c66fc8e373d3f5684badc6f480386803cc92f3179419beb5482d8d0d61d61093", + "typeString": "literal_string \"ERR_TOO_FEW_TOKENS\"" + }, + "value": "ERR_TOO_FEW_TOKENS" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_c66fc8e373d3f5684badc6f480386803cc92f3179419beb5482d8d0d61d61093", + "typeString": "literal_string \"ERR_TOO_FEW_TOKENS\"" + } + ], + "id": 1146, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "25682:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1153, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "25682:84:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1154, + "nodeType": "ExpressionStatement", + "src": "25682:84:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1158, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "25784:22:1", + "subExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1156, + "name": "_newToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 147, + "src": "25785:9:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_NewToken_$8767_storage", + "typeString": "struct SmartPoolManager.NewToken storage ref" + } + }, + "id": 1157, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "isCommitted", + "nodeType": "MemberAccess", + "referencedDeclaration": 8760, + "src": "25785:21:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552525f52454d4f56455f574954485f4144445f50454e44494e47", + "id": 1159, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "25808:29:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_cbd062a4107f5b1b391b6b09655b96d0c5c9e3929a780289570d57c8d08aaad2", + "typeString": "literal_string \"ERR_REMOVE_WITH_ADD_PENDING\"" + }, + "value": "ERR_REMOVE_WITH_ADD_PENDING" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_cbd062a4107f5b1b391b6b09655b96d0c5c9e3929a780289570d57c8d08aaad2", + "typeString": "literal_string \"ERR_REMOVE_WITH_ADD_PENDING\"" + } + ], + "id": 1155, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "25776:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1160, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "25776:62:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1161, + "nodeType": "ExpressionStatement", + "src": "25776:62:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1165, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "25936:4:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ConfigurableRightsPool_$2095", + "typeString": "contract ConfigurableRightsPool" + } + }, + { + "argumentTypes": null, + "id": 1166, + "name": "bPool", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 143, + "src": "25954:5:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBPool_$2256", + "typeString": "contract IBPool" + } + }, + { + "argumentTypes": null, + "id": 1167, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1120, + "src": "25973:5:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ConfigurableRightsPool_$2095", + "typeString": "contract ConfigurableRightsPool" + }, + { + "typeIdentifier": "t_contract$_IBPool_$2256", + "typeString": "contract IBPool" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 1162, + "name": "SmartPoolManager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10277, + "src": "25894:16:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_SmartPoolManager_$10277_$", + "typeString": "type(library SmartPoolManager)" + } + }, + "id": 1164, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "removeToken", + "nodeType": "MemberAccess", + "referencedDeclaration": 9531, + "src": "25894:28:1", + "typeDescriptions": { + "typeIdentifier": "t_function_delegatecall_nonpayable$_t_contract$_ConfigurableRightsPool_$2095_$_t_contract$_IBPool_$2256_$_t_address_$returns$__$", + "typeString": "function (contract ConfigurableRightsPool,contract IBPool,address)" + } + }, + "id": 1168, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "25894:94:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1169, + "nodeType": "ExpressionStatement", + "src": "25894:94:1" + } + ] + }, + "documentation": { + "id": 1118, + "nodeType": "StructuredDocumentation", + "src": "25158:170:1", + "text": " @notice Remove a token from the pool\n @dev bPool is a contract interface; function calls on it are external\n @param token - token to remove" + }, + "functionSelector": "5fa7b584", + "id": 1171, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 1123, + "modifierName": { + "argumentTypes": null, + "id": 1122, + "name": "logs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 220, + "src": "25394:4:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "25394:4:1" + }, + { + "arguments": null, + "id": 1125, + "modifierName": { + "argumentTypes": null, + "id": 1124, + "name": "lock", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8124, + "src": "25407:4:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "25407:4:1" + }, + { + "arguments": null, + "id": 1127, + "modifierName": { + "argumentTypes": null, + "id": 1126, + "name": "onlyOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8037, + "src": "25420:9:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "25420:9:1" + }, + { + "arguments": null, + "id": 1129, + "modifierName": { + "argumentTypes": null, + "id": 1128, + "name": "needsBPool", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 237, + "src": "25438:10:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "25438:10:1" + } + ], + "name": "removeToken", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 1121, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1120, + "mutability": "mutable", + "name": "token", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1171, + "src": "25354:13:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1119, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "25354:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "25353:15:1" + }, + "returnParameters": { + "id": 1130, + "nodeType": "ParameterList", + "parameters": [], + "src": "25453:0:1" + }, + "scope": 2095, + "src": "25333:661:1", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 1271, + "nodeType": "Block", + "src": "26452:1262:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 1196, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1191, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "26470:23:1", + "subExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1189, + "name": "rights", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 145, + "src": "26471:6:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Rights_$8553_storage", + "typeString": "struct RightsManager.Rights storage ref" + } + }, + "id": 1190, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "canWhitelistLPs", + "nodeType": "MemberAccess", + "referencedDeclaration": 8550, + "src": "26471:22:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1192, + "name": "_liquidityProviderWhitelist", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 173, + "src": "26497:27:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 1195, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1193, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "26525:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1194, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "26525:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "26497:39:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "26470:66:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552525f4e4f545f4f4e5f57484954454c495354", + "id": 1197, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "26554:22:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_3c13f58ce0bd1962da9b96dc93ede754fa20490e2080e4b0ace03b9a3a4637ee", + "typeString": "literal_string \"ERR_NOT_ON_WHITELIST\"" + }, + "value": "ERR_NOT_ON_WHITELIST" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_3c13f58ce0bd1962da9b96dc93ede754fa20490e2080e4b0ace03b9a3a4637ee", + "typeString": "literal_string \"ERR_NOT_ON_WHITELIST\"" + } + ], + "id": 1188, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "26462:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1198, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "26462:115:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1199, + "nodeType": "ExpressionStatement", + "src": "26462:115:1" + }, + { + "assignments": [ + 1204 + ], + "declarations": [ + { + "constant": false, + "id": 1204, + "mutability": "mutable", + "name": "actualAmountsIn", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1271, + "src": "26881:29:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 1202, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "26881:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1203, + "length": null, + "nodeType": "ArrayTypeName", + "src": "26881:6:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1212, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1207, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "26984:4:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ConfigurableRightsPool_$2095", + "typeString": "contract ConfigurableRightsPool" + } + }, + { + "argumentTypes": null, + "id": 1208, + "name": "bPool", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 143, + "src": "27034:5:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBPool_$2256", + "typeString": "contract IBPool" + } + }, + { + "argumentTypes": null, + "id": 1209, + "name": "poolAmountOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1174, + "src": "27085:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1210, + "name": "maxAmountsIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1177, + "src": "27144:12:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[] calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ConfigurableRightsPool_$2095", + "typeString": "contract ConfigurableRightsPool" + }, + { + "typeIdentifier": "t_contract$_IBPool_$2256", + "typeString": "contract IBPool" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[] calldata" + } + ], + "expression": { + "argumentTypes": null, + "id": 1205, + "name": "SmartPoolManager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10277, + "src": "26913:16:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_SmartPoolManager_$10277_$", + "typeString": "type(library SmartPoolManager)" + } + }, + "id": 1206, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "joinPool", + "nodeType": "MemberAccess", + "referencedDeclaration": 9810, + "src": "26913:25:1", + "typeDescriptions": { + "typeIdentifier": "t_function_delegatecall_view$_t_contract$_ConfigurableRightsPool_$2095_$_t_contract$_IBPool_$2256_$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$", + "typeString": "function (contract ConfigurableRightsPool,contract IBPool,uint256,uint256[] memory) view returns (uint256[] memory)" + } + }, + "id": 1211, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "26913:285:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "26881:317:1" + }, + { + "assignments": [ + 1217 + ], + "declarations": [ + { + "constant": false, + "id": 1217, + "mutability": "mutable", + "name": "poolTokens", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1271, + "src": "27287:27:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 1215, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "27287:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1216, + "length": null, + "nodeType": "ArrayTypeName", + "src": "27287:9:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1221, + "initialValue": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 1218, + "name": "bPool", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 143, + "src": "27317:5:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBPool_$2256", + "typeString": "contract IBPool" + } + }, + "id": 1219, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "getCurrentTokens", + "nodeType": "MemberAccess", + "referencedDeclaration": 2255, + "src": "27317:22:1", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$__$returns$_t_array$_t_address_$dyn_memory_ptr_$", + "typeString": "function () view external returns (address[] memory)" + } + }, + "id": 1220, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "27317:24:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "27287:54:1" + }, + { + "body": { + "id": 1259, + "nodeType": "Block", + "src": "27397:220:1", + "statements": [ + { + "assignments": [ + 1234 + ], + "declarations": [ + { + "constant": false, + "id": 1234, + "mutability": "mutable", + "name": "t", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1259, + "src": "27411:9:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1233, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "27411:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1238, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1235, + "name": "poolTokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1217, + "src": "27423:10:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 1237, + "indexExpression": { + "argumentTypes": null, + "id": 1236, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1223, + "src": "27434:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "27423:13:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "27411:25:1" + }, + { + "assignments": [ + 1240 + ], + "declarations": [ + { + "constant": false, + "id": 1240, + "mutability": "mutable", + "name": "tokenAmountIn", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1259, + "src": "27450:18:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1239, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "27450:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1244, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1241, + "name": "actualAmountsIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1204, + "src": "27471:15:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 1243, + "indexExpression": { + "argumentTypes": null, + "id": 1242, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1223, + "src": "27487:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "27471:18:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "27450:39:1" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1246, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "27517:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1247, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "27517:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 1248, + "name": "t", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1234, + "src": "27529:1:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1249, + "name": "tokenAmountIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1240, + "src": "27532:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1245, + "name": "LogJoin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 191, + "src": "27509:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 1250, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "27509:37:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1251, + "nodeType": "EmitStatement", + "src": "27504:42:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1253, + "name": "t", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1234, + "src": "27577:1:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1254, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "27580:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1255, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "27580:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 1256, + "name": "tokenAmountIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1240, + "src": "27592:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1252, + "name": "_pullUnderlying", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1993, + "src": "27561:15:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 1257, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "27561:45:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1258, + "nodeType": "ExpressionStatement", + "src": "27561:45:1" + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1229, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1226, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1223, + "src": "27369:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1227, + "name": "poolTokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1217, + "src": "27373:10:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 1228, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "27373:17:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "27369:21:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1260, + "initializationExpression": { + "assignments": [ + 1223 + ], + "declarations": [ + { + "constant": false, + "id": 1223, + "mutability": "mutable", + "name": "i", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1260, + "src": "27357:6:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1222, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "27357:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1225, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 1224, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "27366:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "27357:10:1" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 1231, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "27392:3:1", + "subExpression": { + "argumentTypes": null, + "id": 1230, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1223, + "src": "27392:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1232, + "nodeType": "ExpressionStatement", + "src": "27392:3:1" + }, + "nodeType": "ForStatement", + "src": "27352:265:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1262, + "name": "poolAmountOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1174, + "src": "27642:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1261, + "name": "_mintPoolShare", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2058, + "src": "27627:14:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256)" + } + }, + "id": 1263, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "27627:29:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1264, + "nodeType": "ExpressionStatement", + "src": "27627:29:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1266, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "27681:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1267, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "27681:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 1268, + "name": "poolAmountOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1174, + "src": "27693:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1265, + "name": "_pushPoolShare", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2071, + "src": "27666:14:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 1269, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "27666:41:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1270, + "nodeType": "ExpressionStatement", + "src": "27666:41:1" + } + ] + }, + "documentation": { + "id": 1172, + "nodeType": "StructuredDocumentation", + "src": "26000:294:1", + "text": " @notice Join a pool\n @dev Emits a LogJoin event (for each token)\n bPool is a contract interface; function calls on it are external\n @param poolAmountOut - number of pool tokens to receive\n @param maxAmountsIn - Max amount of asset tokens to spend" + }, + "functionSelector": "4f69c0d4", + "id": 1272, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 1180, + "modifierName": { + "argumentTypes": null, + "id": 1179, + "name": "logs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 220, + "src": "26393:4:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "26393:4:1" + }, + { + "arguments": null, + "id": 1182, + "modifierName": { + "argumentTypes": null, + "id": 1181, + "name": "lock", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8124, + "src": "26406:4:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "26406:4:1" + }, + { + "arguments": null, + "id": 1184, + "modifierName": { + "argumentTypes": null, + "id": 1183, + "name": "needsBPool", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 237, + "src": "26419:10:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "26419:10:1" + }, + { + "arguments": null, + "id": 1186, + "modifierName": { + "argumentTypes": null, + "id": 1185, + "name": "withinCap", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 250, + "src": "26438:9:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "26438:9:1" + } + ], + "name": "joinPool", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 1178, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1174, + "mutability": "mutable", + "name": "poolAmountOut", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1272, + "src": "26317:18:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1173, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "26317:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1177, + "mutability": "mutable", + "name": "maxAmountsIn", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1272, + "src": "26337:28:1", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 1175, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "26337:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1176, + "length": null, + "nodeType": "ArrayTypeName", + "src": "26337:6:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "26316:50:1" + }, + "returnParameters": { + "id": 1187, + "nodeType": "ParameterList", + "parameters": [], + "src": "26452:0:1" + }, + "scope": 2095, + "src": "26299:1415:1", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 1368, + "nodeType": "Block", + "src": "28199:1147:1", + "statements": [ + { + "assignments": [ + 1288, + 1290, + 1293 + ], + "declarations": [ + { + "constant": false, + "id": 1288, + "mutability": "mutable", + "name": "exitFee", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1368, + "src": "28385:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1287, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "28385:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1290, + "mutability": "mutable", + "name": "pAiAfterExitFee", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1368, + "src": "28408:20:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1289, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "28408:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1293, + "mutability": "mutable", + "name": "actualAmountsOut", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1368, + "src": "28439:30:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 1291, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "28439:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1292, + "length": null, + "nodeType": "ArrayTypeName", + "src": "28439:6:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1301, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1296, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "28547:4:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ConfigurableRightsPool_$2095", + "typeString": "contract ConfigurableRightsPool" + } + }, + { + "argumentTypes": null, + "id": 1297, + "name": "bPool", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 143, + "src": "28600:5:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBPool_$2256", + "typeString": "contract IBPool" + } + }, + { + "argumentTypes": null, + "id": 1298, + "name": "poolAmountIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1275, + "src": "28654:12:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1299, + "name": "minAmountsOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1278, + "src": "28715:13:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[] calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ConfigurableRightsPool_$2095", + "typeString": "contract ConfigurableRightsPool" + }, + { + "typeIdentifier": "t_contract$_IBPool_$2256", + "typeString": "contract IBPool" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[] calldata" + } + ], + "expression": { + "argumentTypes": null, + "id": 1294, + "name": "SmartPoolManager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10277, + "src": "28473:16:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_SmartPoolManager_$10277_$", + "typeString": "type(library SmartPoolManager)" + } + }, + "id": 1295, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "exitPool", + "nodeType": "MemberAccess", + "referencedDeclaration": 9956, + "src": "28473:25:1", + "typeDescriptions": { + "typeIdentifier": "t_function_delegatecall_view$_t_contract$_ConfigurableRightsPool_$2095_$_t_contract$_IBPool_$2256_$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$_t_uint256_$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$", + "typeString": "function (contract ConfigurableRightsPool,contract IBPool,uint256,uint256[] memory) view returns (uint256,uint256,uint256[] memory)" + } + }, + "id": 1300, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "28473:300:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$", + "typeString": "tuple(uint256,uint256,uint256[] memory)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "28384:389:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1303, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "28799:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1304, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "28799:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 1305, + "name": "poolAmountIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1275, + "src": "28811:12:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1302, + "name": "_pullPoolShare", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2084, + "src": "28784:14:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 1306, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "28784:40:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1307, + "nodeType": "ExpressionStatement", + "src": "28784:40:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1311, + "name": "bFactory", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 141, + "src": "28857:8:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBFactory_$2284", + "typeString": "contract IBFactory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IBFactory_$2284", + "typeString": "contract IBFactory" + } + ], + "id": 1310, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "28849:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1309, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "28849:7:1", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 1312, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "28849:17:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1313, + "name": "exitFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1288, + "src": "28868:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1308, + "name": "_pushPoolShare", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2071, + "src": "28834:14:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 1314, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "28834:42:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1315, + "nodeType": "ExpressionStatement", + "src": "28834:42:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1317, + "name": "pAiAfterExitFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1290, + "src": "28901:15:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1316, + "name": "_burnPoolShare", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2094, + "src": "28886:14:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256)" + } + }, + "id": 1318, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "28886:31:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1319, + "nodeType": "ExpressionStatement", + "src": "28886:31:1" + }, + { + "assignments": [ + 1324 + ], + "declarations": [ + { + "constant": false, + "id": 1324, + "mutability": "mutable", + "name": "poolTokens", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1368, + "src": "29006:27:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 1322, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "29006:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1323, + "length": null, + "nodeType": "ArrayTypeName", + "src": "29006:9:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1328, + "initialValue": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 1325, + "name": "bPool", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 143, + "src": "29036:5:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBPool_$2256", + "typeString": "contract IBPool" + } + }, + "id": 1326, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "getCurrentTokens", + "nodeType": "MemberAccess", + "referencedDeclaration": 2255, + "src": "29036:22:1", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$__$returns$_t_array$_t_address_$dyn_memory_ptr_$", + "typeString": "function () view external returns (address[] memory)" + } + }, + "id": 1327, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "29036:24:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "29006:54:1" + }, + { + "body": { + "id": 1366, + "nodeType": "Block", + "src": "29116:224:1", + "statements": [ + { + "assignments": [ + 1341 + ], + "declarations": [ + { + "constant": false, + "id": 1341, + "mutability": "mutable", + "name": "t", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1366, + "src": "29130:9:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1340, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "29130:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1345, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1342, + "name": "poolTokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1324, + "src": "29142:10:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 1344, + "indexExpression": { + "argumentTypes": null, + "id": 1343, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1330, + "src": "29153:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "29142:13:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "29130:25:1" + }, + { + "assignments": [ + 1347 + ], + "declarations": [ + { + "constant": false, + "id": 1347, + "mutability": "mutable", + "name": "tokenAmountOut", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1366, + "src": "29169:19:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1346, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "29169:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1351, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1348, + "name": "actualAmountsOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1293, + "src": "29191:16:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 1350, + "indexExpression": { + "argumentTypes": null, + "id": 1349, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1330, + "src": "29208:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "29191:19:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "29169:41:1" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1353, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "29238:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1354, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "29238:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 1355, + "name": "t", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1341, + "src": "29250:1:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1356, + "name": "tokenAmountOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1347, + "src": "29253:14:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1352, + "name": "LogExit", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 199, + "src": "29230:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 1357, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "29230:38:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1358, + "nodeType": "EmitStatement", + "src": "29225:43:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1360, + "name": "t", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1341, + "src": "29299:1:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1361, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "29302:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1362, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "29302:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 1363, + "name": "tokenAmountOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1347, + "src": "29314:14:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1359, + "name": "_pushUnderlying", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2046, + "src": "29283:15:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 1364, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "29283:46:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1365, + "nodeType": "ExpressionStatement", + "src": "29283:46:1" + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1336, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1333, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1330, + "src": "29088:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1334, + "name": "poolTokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1324, + "src": "29092:10:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 1335, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "29092:17:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "29088:21:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1367, + "initializationExpression": { + "assignments": [ + 1330 + ], + "declarations": [ + { + "constant": false, + "id": 1330, + "mutability": "mutable", + "name": "i", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1367, + "src": "29076:6:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1329, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "29076:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1332, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 1331, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "29085:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "29076:10:1" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 1338, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "29111:3:1", + "subExpression": { + "argumentTypes": null, + "id": 1337, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1330, + "src": "29111:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1339, + "nodeType": "ExpressionStatement", + "src": "29111:3:1" + }, + "nodeType": "ForStatement", + "src": "29071:269:1" + } + ] + }, + "documentation": { + "id": 1273, + "nodeType": "StructuredDocumentation", + "src": "27720:340:1", + "text": " @notice Exit a pool - redeem pool tokens for underlying assets\n @dev Emits a LogExit event for each token\n bPool is a contract interface; function calls on it are external\n @param poolAmountIn - amount of pool tokens to redeem\n @param minAmountsOut - minimum amount of asset tokens to receive" + }, + "functionSelector": "b02f0b73", + "id": 1369, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 1281, + "modifierName": { + "argumentTypes": null, + "id": 1280, + "name": "logs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 220, + "src": "28158:4:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "28158:4:1" + }, + { + "arguments": null, + "id": 1283, + "modifierName": { + "argumentTypes": null, + "id": 1282, + "name": "lock", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8124, + "src": "28171:4:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "28171:4:1" + }, + { + "arguments": null, + "id": 1285, + "modifierName": { + "argumentTypes": null, + "id": 1284, + "name": "needsBPool", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 237, + "src": "28184:10:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "28184:10:1" + } + ], + "name": "exitPool", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 1279, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1275, + "mutability": "mutable", + "name": "poolAmountIn", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1369, + "src": "28083:17:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1274, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "28083:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1278, + "mutability": "mutable", + "name": "minAmountsOut", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1369, + "src": "28102:29:1", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 1276, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "28102:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1277, + "length": null, + "nodeType": "ArrayTypeName", + "src": "28102:6:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "28082:50:1" + }, + "returnParameters": { + "id": 1286, + "nodeType": "ParameterList", + "parameters": [], + "src": "28199:0:1" + }, + "scope": 2095, + "src": "28065:1281:1", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 1438, + "nodeType": "Block", + "src": "30050:706:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 1397, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1392, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "30068:23:1", + "subExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1390, + "name": "rights", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 145, + "src": "30069:6:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Rights_$8553_storage", + "typeString": "struct RightsManager.Rights storage ref" + } + }, + "id": 1391, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "canWhitelistLPs", + "nodeType": "MemberAccess", + "referencedDeclaration": 8550, + "src": "30069:22:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1393, + "name": "_liquidityProviderWhitelist", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 173, + "src": "30095:27:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 1396, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1394, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "30123:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1395, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "30123:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "30095:39:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "30068:66:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552525f4e4f545f4f4e5f57484954454c495354", + "id": 1398, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "30152:22:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_3c13f58ce0bd1962da9b96dc93ede754fa20490e2080e4b0ace03b9a3a4637ee", + "typeString": "literal_string \"ERR_NOT_ON_WHITELIST\"" + }, + "value": "ERR_NOT_ON_WHITELIST" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_3c13f58ce0bd1962da9b96dc93ede754fa20490e2080e4b0ace03b9a3a4637ee", + "typeString": "literal_string \"ERR_NOT_ON_WHITELIST\"" + } + ], + "id": 1389, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "30060:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1399, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "30060:115:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1400, + "nodeType": "ExpressionStatement", + "src": "30060:115:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 1410, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1401, + "name": "poolAmountOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1387, + "src": "30231:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1404, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "30316:4:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ConfigurableRightsPool_$2095", + "typeString": "contract ConfigurableRightsPool" + } + }, + { + "argumentTypes": null, + "id": 1405, + "name": "bPool", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 143, + "src": "30350:5:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBPool_$2256", + "typeString": "contract IBPool" + } + }, + { + "argumentTypes": null, + "id": 1406, + "name": "tokenIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1372, + "src": "30385:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1407, + "name": "tokenAmountIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1374, + "src": "30422:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1408, + "name": "minPoolAmountOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1376, + "src": "30465:16:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ConfigurableRightsPool_$2095", + "typeString": "contract ConfigurableRightsPool" + }, + { + "typeIdentifier": "t_contract$_IBPool_$2256", + "typeString": "contract IBPool" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 1402, + "name": "SmartPoolManager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10277, + "src": "30247:16:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_SmartPoolManager_$10277_$", + "typeString": "type(library SmartPoolManager)" + } + }, + "id": 1403, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "joinswapExternAmountIn", + "nodeType": "MemberAccess", + "referencedDeclaration": 10027, + "src": "30247:39:1", + "typeDescriptions": { + "typeIdentifier": "t_function_delegatecall_view$_t_contract$_ConfigurableRightsPool_$2095_$_t_contract$_IBPool_$2256_$_t_address_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (contract ConfigurableRightsPool,contract IBPool,address,uint256,uint256) view returns (uint256)" + } + }, + "id": 1409, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "30247:260:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "30231:276:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1411, + "nodeType": "ExpressionStatement", + "src": "30231:276:1" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1413, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "30531:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1414, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "30531:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 1415, + "name": "tokenIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1372, + "src": "30543:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1416, + "name": "tokenAmountIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1374, + "src": "30552:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1412, + "name": "LogJoin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 191, + "src": "30523:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 1417, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "30523:43:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1418, + "nodeType": "EmitStatement", + "src": "30518:48:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1420, + "name": "poolAmountOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1387, + "src": "30592:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1419, + "name": "_mintPoolShare", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2058, + "src": "30577:14:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256)" + } + }, + "id": 1421, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "30577:29:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1422, + "nodeType": "ExpressionStatement", + "src": "30577:29:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1424, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "30631:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1425, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "30631:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 1426, + "name": "poolAmountOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1387, + "src": "30643:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1423, + "name": "_pushPoolShare", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2071, + "src": "30616:14:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 1427, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "30616:41:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1428, + "nodeType": "ExpressionStatement", + "src": "30616:41:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1430, + "name": "tokenIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1372, + "src": "30683:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1431, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "30692:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1432, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "30692:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 1433, + "name": "tokenAmountIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1374, + "src": "30704:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1429, + "name": "_pullUnderlying", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1993, + "src": "30667:15:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 1434, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "30667:51:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1435, + "nodeType": "ExpressionStatement", + "src": "30667:51:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 1436, + "name": "poolAmountOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1387, + "src": "30736:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 1388, + "id": 1437, + "nodeType": "Return", + "src": "30729:20:1" + } + ] + }, + "documentation": { + "id": 1370, + "nodeType": "StructuredDocumentation", + "src": "29352:450:1", + "text": " @notice Join by swapping a fixed amount of an external token in (must be present in the pool)\n System calculates the pool token amount\n @dev emits a LogJoin event\n @param tokenIn - which token we're transferring in\n @param tokenAmountIn - amount of deposit\n @param minPoolAmountOut - minimum of pool tokens to receive\n @return poolAmountOut - amount of pool tokens minted and transferred" + }, + "functionSelector": "5db34277", + "id": 1439, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 1379, + "modifierName": { + "argumentTypes": null, + "id": 1378, + "name": "logs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 220, + "src": "29954:4:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "29954:4:1" + }, + { + "arguments": null, + "id": 1381, + "modifierName": { + "argumentTypes": null, + "id": 1380, + "name": "lock", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8124, + "src": "29967:4:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "29967:4:1" + }, + { + "arguments": null, + "id": 1383, + "modifierName": { + "argumentTypes": null, + "id": 1382, + "name": "needsBPool", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 237, + "src": "29980:10:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "29980:10:1" + }, + { + "arguments": null, + "id": 1385, + "modifierName": { + "argumentTypes": null, + "id": 1384, + "name": "withinCap", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 250, + "src": "29999:9:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "29999:9:1" + } + ], + "name": "joinswapExternAmountIn", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 1377, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1372, + "mutability": "mutable", + "name": "tokenIn", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1439, + "src": "29848:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1371, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "29848:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1374, + "mutability": "mutable", + "name": "tokenAmountIn", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1439, + "src": "29873:18:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1373, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "29873:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1376, + "mutability": "mutable", + "name": "minPoolAmountOut", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1439, + "src": "29901:21:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1375, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "29901:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "29838:90:1" + }, + "returnParameters": { + "id": 1388, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1387, + "mutability": "mutable", + "name": "poolAmountOut", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1439, + "src": "30026:18:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1386, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "30026:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "30025:20:1" + }, + "scope": 2095, + "src": "29807:949:1", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 1508, + "nodeType": "Block", + "src": "31584:700:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 1467, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1462, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "31602:23:1", + "subExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1460, + "name": "rights", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 145, + "src": "31603:6:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Rights_$8553_storage", + "typeString": "struct RightsManager.Rights storage ref" + } + }, + "id": 1461, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "canWhitelistLPs", + "nodeType": "MemberAccess", + "referencedDeclaration": 8550, + "src": "31603:22:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1463, + "name": "_liquidityProviderWhitelist", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 173, + "src": "31629:27:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 1466, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1464, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "31657:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1465, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "31657:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "31629:39:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "31602:66:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552525f4e4f545f4f4e5f57484954454c495354", + "id": 1468, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "31686:22:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_3c13f58ce0bd1962da9b96dc93ede754fa20490e2080e4b0ace03b9a3a4637ee", + "typeString": "literal_string \"ERR_NOT_ON_WHITELIST\"" + }, + "value": "ERR_NOT_ON_WHITELIST" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_3c13f58ce0bd1962da9b96dc93ede754fa20490e2080e4b0ace03b9a3a4637ee", + "typeString": "literal_string \"ERR_NOT_ON_WHITELIST\"" + } + ], + "id": 1459, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "31594:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1469, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "31594:115:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1470, + "nodeType": "ExpressionStatement", + "src": "31594:115:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 1480, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1471, + "name": "tokenAmountIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1457, + "src": "31765:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1474, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "31849:4:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ConfigurableRightsPool_$2095", + "typeString": "contract ConfigurableRightsPool" + } + }, + { + "argumentTypes": null, + "id": 1475, + "name": "bPool", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 143, + "src": "31883:5:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBPool_$2256", + "typeString": "contract IBPool" + } + }, + { + "argumentTypes": null, + "id": 1476, + "name": "tokenIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1442, + "src": "31918:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1477, + "name": "poolAmountOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1444, + "src": "31955:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1478, + "name": "maxAmountIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1446, + "src": "31998:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ConfigurableRightsPool_$2095", + "typeString": "contract ConfigurableRightsPool" + }, + { + "typeIdentifier": "t_contract$_IBPool_$2256", + "typeString": "contract IBPool" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 1472, + "name": "SmartPoolManager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10277, + "src": "31781:16:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_SmartPoolManager_$10277_$", + "typeString": "type(library SmartPoolManager)" + } + }, + "id": 1473, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "joinswapPoolAmountOut", + "nodeType": "MemberAccess", + "referencedDeclaration": 10105, + "src": "31781:38:1", + "typeDescriptions": { + "typeIdentifier": "t_function_delegatecall_view$_t_contract$_ConfigurableRightsPool_$2095_$_t_contract$_IBPool_$2256_$_t_address_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (contract ConfigurableRightsPool,contract IBPool,address,uint256,uint256) view returns (uint256)" + } + }, + "id": 1479, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "31781:254:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "31765:270:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1481, + "nodeType": "ExpressionStatement", + "src": "31765:270:1" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1483, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "32059:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1484, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "32059:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 1485, + "name": "tokenIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1442, + "src": "32071:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1486, + "name": "tokenAmountIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1457, + "src": "32080:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1482, + "name": "LogJoin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 191, + "src": "32051:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 1487, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "32051:43:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1488, + "nodeType": "EmitStatement", + "src": "32046:48:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1490, + "name": "poolAmountOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1444, + "src": "32120:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1489, + "name": "_mintPoolShare", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2058, + "src": "32105:14:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256)" + } + }, + "id": 1491, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "32105:29:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1492, + "nodeType": "ExpressionStatement", + "src": "32105:29:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1494, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "32159:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1495, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "32159:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 1496, + "name": "poolAmountOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1444, + "src": "32171:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1493, + "name": "_pushPoolShare", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2071, + "src": "32144:14:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 1497, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "32144:41:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1498, + "nodeType": "ExpressionStatement", + "src": "32144:41:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1500, + "name": "tokenIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1442, + "src": "32211:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1501, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "32220:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1502, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "32220:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 1503, + "name": "tokenAmountIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1457, + "src": "32232:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1499, + "name": "_pullUnderlying", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1993, + "src": "32195:15:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 1504, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "32195:51:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1505, + "nodeType": "ExpressionStatement", + "src": "32195:51:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 1506, + "name": "tokenAmountIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1457, + "src": "32264:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 1458, + "id": 1507, + "nodeType": "Return", + "src": "32257:20:1" + } + ] + }, + "documentation": { + "id": 1440, + "nodeType": "StructuredDocumentation", + "src": "30762:580:1", + "text": " @notice Join by swapping an external token in (must be present in the pool)\n To receive an exact amount of pool tokens out. System calculates the deposit amount\n @dev emits a LogJoin event\n @param tokenIn - which token we're transferring in (system calculates amount required)\n @param poolAmountOut - amount of pool tokens to be received\n @param maxAmountIn - Maximum asset tokens that can be pulled to pay for the pool tokens\n @return tokenAmountIn - amount of asset tokens transferred in to purchase the pool tokens" + }, + "functionSelector": "6d06dfa0", + "id": 1509, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 1449, + "modifierName": { + "argumentTypes": null, + "id": 1448, + "name": "logs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 220, + "src": "31488:4:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "31488:4:1" + }, + { + "arguments": null, + "id": 1451, + "modifierName": { + "argumentTypes": null, + "id": 1450, + "name": "lock", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8124, + "src": "31501:4:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "31501:4:1" + }, + { + "arguments": null, + "id": 1453, + "modifierName": { + "argumentTypes": null, + "id": 1452, + "name": "needsBPool", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 237, + "src": "31514:10:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "31514:10:1" + }, + { + "arguments": null, + "id": 1455, + "modifierName": { + "argumentTypes": null, + "id": 1454, + "name": "withinCap", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 250, + "src": "31533:9:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "31533:9:1" + } + ], + "name": "joinswapPoolAmountOut", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 1447, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1442, + "mutability": "mutable", + "name": "tokenIn", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1509, + "src": "31387:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1441, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "31387:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1444, + "mutability": "mutable", + "name": "poolAmountOut", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1509, + "src": "31412:18:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1443, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "31412:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1446, + "mutability": "mutable", + "name": "maxAmountIn", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1509, + "src": "31440:16:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1445, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "31440:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "31377:85:1" + }, + "returnParameters": { + "id": 1458, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1457, + "mutability": "mutable", + "name": "tokenAmountIn", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1509, + "src": "31560:18:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1456, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "31560:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "31559:20:1" + }, + "scope": 2095, + "src": "31347:937:1", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 1586, + "nodeType": "Block", + "src": "33016:862:1", + "statements": [ + { + "assignments": [ + 1528, + 1530 + ], + "declarations": [ + { + "constant": false, + "id": 1528, + "mutability": "mutable", + "name": "exitFee", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1586, + "src": "33144:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1527, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "33144:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1530, + "mutability": "mutable", + "name": "amountOut", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1586, + "src": "33167:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1529, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "33167:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1539, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1533, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "33255:4:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ConfigurableRightsPool_$2095", + "typeString": "contract ConfigurableRightsPool" + } + }, + { + "argumentTypes": null, + "id": 1534, + "name": "bPool", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 143, + "src": "33292:5:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBPool_$2256", + "typeString": "contract IBPool" + } + }, + { + "argumentTypes": null, + "id": 1535, + "name": "tokenOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1512, + "src": "33330:8:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1536, + "name": "poolAmountIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1514, + "src": "33371:12:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1537, + "name": "minAmountOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1516, + "src": "33416:12:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ConfigurableRightsPool_$2095", + "typeString": "contract ConfigurableRightsPool" + }, + { + "typeIdentifier": "t_contract$_IBPool_$2256", + "typeString": "contract IBPool" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 1531, + "name": "SmartPoolManager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10277, + "src": "33185:16:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_SmartPoolManager_$10277_$", + "typeString": "type(library SmartPoolManager)" + } + }, + "id": 1532, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "exitswapPoolAmountIn", + "nodeType": "MemberAccess", + "referencedDeclaration": 10187, + "src": "33185:37:1", + "typeDescriptions": { + "typeIdentifier": "t_function_delegatecall_view$_t_contract$_ConfigurableRightsPool_$2095_$_t_contract$_IBPool_$2256_$_t_address_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$", + "typeString": "function (contract ConfigurableRightsPool,contract IBPool,address,uint256,uint256) view returns (uint256,uint256)" + } + }, + "id": 1538, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "33185:272:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", + "typeString": "tuple(uint256,uint256)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "33143:314:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 1542, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1540, + "name": "tokenAmountOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1525, + "src": "33468:14:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1541, + "name": "amountOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1530, + "src": "33485:9:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "33468:26:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1543, + "nodeType": "ExpressionStatement", + "src": "33468:26:1" + }, + { + "assignments": [ + 1545 + ], + "declarations": [ + { + "constant": false, + "id": 1545, + "mutability": "mutable", + "name": "pAiAfterExitFee", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1586, + "src": "33504:20:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1544, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "33504:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1551, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1548, + "name": "poolAmountIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1514, + "src": "33549:12:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1549, + "name": "exitFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1528, + "src": "33563:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 1546, + "name": "BalancerSafeMath", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8529, + "src": "33527:16:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_BalancerSafeMath_$8529_$", + "typeString": "type(library BalancerSafeMath)" + } + }, + "id": 1547, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "bsub", + "nodeType": "MemberAccess", + "referencedDeclaration": 8285, + "src": "33527:21:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 1550, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "33527:44:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "33504:67:1" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1553, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "33595:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1554, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "33595:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 1555, + "name": "tokenOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1512, + "src": "33607:8:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1556, + "name": "tokenAmountOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1525, + "src": "33617:14:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1552, + "name": "LogExit", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 199, + "src": "33587:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 1557, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "33587:45:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1558, + "nodeType": "EmitStatement", + "src": "33582:50:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1560, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "33658:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1561, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "33658:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 1562, + "name": "poolAmountIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1514, + "src": "33670:12:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1559, + "name": "_pullPoolShare", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2084, + "src": "33643:14:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 1563, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "33643:40:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1564, + "nodeType": "ExpressionStatement", + "src": "33643:40:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1566, + "name": "pAiAfterExitFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1545, + "src": "33708:15:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1565, + "name": "_burnPoolShare", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2094, + "src": "33693:14:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256)" + } + }, + "id": 1567, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "33693:31:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1568, + "nodeType": "ExpressionStatement", + "src": "33693:31:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1572, + "name": "bFactory", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 141, + "src": "33757:8:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBFactory_$2284", + "typeString": "contract IBFactory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IBFactory_$2284", + "typeString": "contract IBFactory" + } + ], + "id": 1571, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "33749:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1570, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "33749:7:1", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 1573, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "33749:17:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1574, + "name": "exitFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1528, + "src": "33768:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1569, + "name": "_pushPoolShare", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2071, + "src": "33734:14:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 1575, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "33734:42:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1576, + "nodeType": "ExpressionStatement", + "src": "33734:42:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1578, + "name": "tokenOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1512, + "src": "33802:8:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1579, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "33812:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1580, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "33812:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 1581, + "name": "tokenAmountOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1525, + "src": "33824:14:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1577, + "name": "_pushUnderlying", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2046, + "src": "33786:15:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 1582, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "33786:53:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1583, + "nodeType": "ExpressionStatement", + "src": "33786:53:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 1584, + "name": "tokenAmountOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1525, + "src": "33857:14:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 1526, + "id": 1585, + "nodeType": "Return", + "src": "33850:21:1" + } + ] + }, + "documentation": { + "id": 1510, + "nodeType": "StructuredDocumentation", + "src": "32290:501:1", + "text": " @notice Exit a pool - redeem a specific number of pool tokens for an underlying asset\n Asset must be present in the pool, and will incur an EXIT_FEE (if set to non-zero)\n @dev Emits a LogExit event for the token\n @param tokenOut - which token the caller wants to receive\n @param poolAmountIn - amount of pool tokens to redeem\n @param minAmountOut - minimum asset tokens to receive\n @return tokenAmountOut - amount of asset tokens returned" + }, + "functionSelector": "46ab38f1", + "id": 1587, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 1519, + "modifierName": { + "argumentTypes": null, + "id": 1518, + "name": "logs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 220, + "src": "32937:4:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "32937:4:1" + }, + { + "arguments": null, + "id": 1521, + "modifierName": { + "argumentTypes": null, + "id": 1520, + "name": "lock", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8124, + "src": "32950:4:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "32950:4:1" + }, + { + "arguments": null, + "id": 1523, + "modifierName": { + "argumentTypes": null, + "id": 1522, + "name": "needsBPool", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 237, + "src": "32963:10:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "32963:10:1" + } + ], + "name": "exitswapPoolAmountIn", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 1517, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1512, + "mutability": "mutable", + "name": "tokenOut", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1587, + "src": "32835:16:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1511, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "32835:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1514, + "mutability": "mutable", + "name": "poolAmountIn", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1587, + "src": "32861:17:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1513, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "32861:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1516, + "mutability": "mutable", + "name": "minAmountOut", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1587, + "src": "32888:17:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1515, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "32888:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "32825:86:1" + }, + "returnParameters": { + "id": 1526, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1525, + "mutability": "mutable", + "name": "tokenAmountOut", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1587, + "src": "32991:19:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1524, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "32991:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "32990:21:1" + }, + "scope": 2095, + "src": "32796:1082:1", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 1664, + "nodeType": "Block", + "src": "34583:855:1", + "statements": [ + { + "assignments": [ + 1606, + 1608 + ], + "declarations": [ + { + "constant": false, + "id": 1606, + "mutability": "mutable", + "name": "exitFee", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1664, + "src": "34708:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1605, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "34708:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1608, + "mutability": "mutable", + "name": "amountIn", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1664, + "src": "34731:13:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1607, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "34731:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1617, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1611, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "34820:4:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ConfigurableRightsPool_$2095", + "typeString": "contract ConfigurableRightsPool" + } + }, + { + "argumentTypes": null, + "id": 1612, + "name": "bPool", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 143, + "src": "34856:5:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBPool_$2256", + "typeString": "contract IBPool" + } + }, + { + "argumentTypes": null, + "id": 1613, + "name": "tokenOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1590, + "src": "34893:8:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1614, + "name": "tokenAmountOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1592, + "src": "34933:14:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1615, + "name": "maxPoolAmountIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1594, + "src": "34979:15:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ConfigurableRightsPool_$2095", + "typeString": "contract ConfigurableRightsPool" + }, + { + "typeIdentifier": "t_contract$_IBPool_$2256", + "typeString": "contract IBPool" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 1609, + "name": "SmartPoolManager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10277, + "src": "34748:16:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_SmartPoolManager_$10277_$", + "typeString": "type(library SmartPoolManager)" + } + }, + "id": 1610, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "exitswapExternAmountOut", + "nodeType": "MemberAccess", + "referencedDeclaration": 10276, + "src": "34748:40:1", + "typeDescriptions": { + "typeIdentifier": "t_function_delegatecall_view$_t_contract$_ConfigurableRightsPool_$2095_$_t_contract$_IBPool_$2256_$_t_address_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$", + "typeString": "function (contract ConfigurableRightsPool,contract IBPool,address,uint256,uint256) view returns (uint256,uint256)" + } + }, + "id": 1616, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "34748:274:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", + "typeString": "tuple(uint256,uint256)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "34707:315:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 1620, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1618, + "name": "poolAmountIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1603, + "src": "35033:12:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1619, + "name": "amountIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1608, + "src": "35048:8:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "35033:23:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1621, + "nodeType": "ExpressionStatement", + "src": "35033:23:1" + }, + { + "assignments": [ + 1623 + ], + "declarations": [ + { + "constant": false, + "id": 1623, + "mutability": "mutable", + "name": "pAiAfterExitFee", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1664, + "src": "35066:20:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1622, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "35066:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1629, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1626, + "name": "poolAmountIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1603, + "src": "35111:12:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1627, + "name": "exitFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1606, + "src": "35125:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 1624, + "name": "BalancerSafeMath", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8529, + "src": "35089:16:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_BalancerSafeMath_$8529_$", + "typeString": "type(library BalancerSafeMath)" + } + }, + "id": 1625, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "bsub", + "nodeType": "MemberAccess", + "referencedDeclaration": 8285, + "src": "35089:21:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 1628, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "35089:44:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "35066:67:1" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1631, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "35157:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1632, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "35157:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 1633, + "name": "tokenOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1590, + "src": "35169:8:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1634, + "name": "tokenAmountOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1592, + "src": "35179:14:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1630, + "name": "LogExit", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 199, + "src": "35149:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 1635, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "35149:45:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1636, + "nodeType": "EmitStatement", + "src": "35144:50:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1638, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "35220:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1639, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "35220:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 1640, + "name": "poolAmountIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1603, + "src": "35232:12:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1637, + "name": "_pullPoolShare", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2084, + "src": "35205:14:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 1641, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "35205:40:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1642, + "nodeType": "ExpressionStatement", + "src": "35205:40:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1644, + "name": "pAiAfterExitFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1623, + "src": "35270:15:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1643, + "name": "_burnPoolShare", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2094, + "src": "35255:14:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256)" + } + }, + "id": 1645, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "35255:31:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1646, + "nodeType": "ExpressionStatement", + "src": "35255:31:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1650, + "name": "bFactory", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 141, + "src": "35319:8:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBFactory_$2284", + "typeString": "contract IBFactory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IBFactory_$2284", + "typeString": "contract IBFactory" + } + ], + "id": 1649, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "35311:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1648, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "35311:7:1", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 1651, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "35311:17:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1652, + "name": "exitFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1606, + "src": "35330:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1647, + "name": "_pushPoolShare", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2071, + "src": "35296:14:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 1653, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "35296:42:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1654, + "nodeType": "ExpressionStatement", + "src": "35296:42:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1656, + "name": "tokenOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1590, + "src": "35364:8:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1657, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "35374:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1658, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "35374:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 1659, + "name": "tokenAmountOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1592, + "src": "35386:14:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1655, + "name": "_pushUnderlying", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2046, + "src": "35348:15:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 1660, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "35348:53:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1661, + "nodeType": "ExpressionStatement", + "src": "35348:53:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 1662, + "name": "poolAmountIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1603, + "src": "35419:12:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 1604, + "id": 1663, + "nodeType": "Return", + "src": "35412:19:1" + } + ] + }, + "documentation": { + "id": 1588, + "nodeType": "StructuredDocumentation", + "src": "33884:468:1", + "text": " @notice Exit a pool - redeem pool tokens for a specific amount of underlying assets\n Asset must be present in the pool\n @dev Emits a LogExit event for the token\n @param tokenOut - which token the caller wants to receive\n @param tokenAmountOut - amount of underlying asset tokens to receive\n @param maxPoolAmountIn - maximum pool tokens to be redeemed\n @return poolAmountIn - amount of pool tokens redeemed" + }, + "functionSelector": "02c96748", + "id": 1665, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 1597, + "modifierName": { + "argumentTypes": null, + "id": 1596, + "name": "logs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 220, + "src": "34506:4:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "34506:4:1" + }, + { + "arguments": null, + "id": 1599, + "modifierName": { + "argumentTypes": null, + "id": 1598, + "name": "lock", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8124, + "src": "34519:4:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "34519:4:1" + }, + { + "arguments": null, + "id": 1601, + "modifierName": { + "argumentTypes": null, + "id": 1600, + "name": "needsBPool", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 237, + "src": "34532:10:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "34532:10:1" + } + ], + "name": "exitswapExternAmountOut", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 1595, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1590, + "mutability": "mutable", + "name": "tokenOut", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1665, + "src": "34399:16:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1589, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "34399:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1592, + "mutability": "mutable", + "name": "tokenAmountOut", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1665, + "src": "34425:19:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1591, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "34425:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1594, + "mutability": "mutable", + "name": "maxPoolAmountIn", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1665, + "src": "34454:20:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1593, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "34454:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "34389:91:1" + }, + "returnParameters": { + "id": 1604, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1603, + "mutability": "mutable", + "name": "poolAmountIn", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1665, + "src": "34560:17:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1602, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "34560:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "34559:19:1" + }, + "scope": 2095, + "src": "34357:1081:1", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 1699, + "nodeType": "Block", + "src": "35710:195:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1678, + "name": "rights", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 145, + "src": "35728:6:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Rights_$8553_storage", + "typeString": "struct RightsManager.Rights storage ref" + } + }, + "id": 1679, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "canWhitelistLPs", + "nodeType": "MemberAccess", + "referencedDeclaration": 8550, + "src": "35728:22:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552525f43414e4e4f545f57484954454c4953545f4c5053", + "id": 1680, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "35752:26:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_4cef9c60dc01c50551058138579c3a0e1c1addef61609671e4c807190877afab", + "typeString": "literal_string \"ERR_CANNOT_WHITELIST_LPS\"" + }, + "value": "ERR_CANNOT_WHITELIST_LPS" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_4cef9c60dc01c50551058138579c3a0e1c1addef61609671e4c807190877afab", + "typeString": "literal_string \"ERR_CANNOT_WHITELIST_LPS\"" + } + ], + "id": 1677, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "35720:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1681, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "35720:59:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1682, + "nodeType": "ExpressionStatement", + "src": "35720:59:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1689, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1684, + "name": "provider", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1668, + "src": "35797:8:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 1687, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "35817:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 1686, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "35809:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1685, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "35809:7:1", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 1688, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "35809:10:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "35797:22:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552525f494e56414c49445f41444452455353", + "id": 1690, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "35821:21:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_a7d3f5b8fcfdb9260fb71cc6af515e9b07a68a1202d1cb2f5a3f8f30449ddc07", + "typeString": "literal_string \"ERR_INVALID_ADDRESS\"" + }, + "value": "ERR_INVALID_ADDRESS" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_a7d3f5b8fcfdb9260fb71cc6af515e9b07a68a1202d1cb2f5a3f8f30449ddc07", + "typeString": "literal_string \"ERR_INVALID_ADDRESS\"" + } + ], + "id": 1683, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "35789:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1691, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "35789:54:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1692, + "nodeType": "ExpressionStatement", + "src": "35789:54:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 1697, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1693, + "name": "_liquidityProviderWhitelist", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 173, + "src": "35854:27:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 1695, + "indexExpression": { + "argumentTypes": null, + "id": 1694, + "name": "provider", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1668, + "src": "35882:8:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "35854:37:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 1696, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "35894:4:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "35854:44:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1698, + "nodeType": "ExpressionStatement", + "src": "35854:44:1" + } + ] + }, + "documentation": { + "id": 1666, + "nodeType": "StructuredDocumentation", + "src": "35444:142:1", + "text": " @notice Add to the whitelist of liquidity providers (if enabled)\n @param provider - address of the liquidity provider" + }, + "functionSelector": "c83a1c2d", + "id": 1700, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 1671, + "modifierName": { + "argumentTypes": null, + "id": 1670, + "name": "onlyOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8037, + "src": "35670:9:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "35670:9:1" + }, + { + "arguments": null, + "id": 1673, + "modifierName": { + "argumentTypes": null, + "id": 1672, + "name": "lock", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8124, + "src": "35688:4:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "35688:4:1" + }, + { + "arguments": null, + "id": 1675, + "modifierName": { + "argumentTypes": null, + "id": 1674, + "name": "logs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 220, + "src": "35701:4:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "35701:4:1" + } + ], + "name": "whitelistLiquidityProvider", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 1669, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1668, + "mutability": "mutable", + "name": "provider", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1700, + "src": "35627:16:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1667, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "35627:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "35626:18:1" + }, + "returnParameters": { + "id": 1676, + "nodeType": "ParameterList", + "parameters": [], + "src": "35710:0:1" + }, + "scope": 2095, + "src": "35591:314:1", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 1741, + "nodeType": "Block", + "src": "36190:278:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1713, + "name": "rights", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 145, + "src": "36208:6:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Rights_$8553_storage", + "typeString": "struct RightsManager.Rights storage ref" + } + }, + "id": 1714, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "canWhitelistLPs", + "nodeType": "MemberAccess", + "referencedDeclaration": 8550, + "src": "36208:22:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552525f43414e4e4f545f57484954454c4953545f4c5053", + "id": 1715, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "36232:26:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_4cef9c60dc01c50551058138579c3a0e1c1addef61609671e4c807190877afab", + "typeString": "literal_string \"ERR_CANNOT_WHITELIST_LPS\"" + }, + "value": "ERR_CANNOT_WHITELIST_LPS" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_4cef9c60dc01c50551058138579c3a0e1c1addef61609671e4c807190877afab", + "typeString": "literal_string \"ERR_CANNOT_WHITELIST_LPS\"" + } + ], + "id": 1712, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "36200:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1716, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "36200:59:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1717, + "nodeType": "ExpressionStatement", + "src": "36200:59:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1719, + "name": "_liquidityProviderWhitelist", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 173, + "src": "36277:27:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 1721, + "indexExpression": { + "argumentTypes": null, + "id": 1720, + "name": "provider", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1703, + "src": "36305:8:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "36277:37:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552525f4c505f4e4f545f57484954454c4953544544", + "id": 1722, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "36316:24:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_5c01fe17bb458eba395da3de43810458201e0e9d5ea19f8a595a96b796b57d7f", + "typeString": "literal_string \"ERR_LP_NOT_WHITELISTED\"" + }, + "value": "ERR_LP_NOT_WHITELISTED" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_5c01fe17bb458eba395da3de43810458201e0e9d5ea19f8a595a96b796b57d7f", + "typeString": "literal_string \"ERR_LP_NOT_WHITELISTED\"" + } + ], + "id": 1718, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "36269:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1723, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "36269:72:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1724, + "nodeType": "ExpressionStatement", + "src": "36269:72:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1731, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1726, + "name": "provider", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1703, + "src": "36359:8:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 1729, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "36379:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 1728, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "36371:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1727, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "36371:7:1", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 1730, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "36371:10:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "36359:22:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552525f494e56414c49445f41444452455353", + "id": 1732, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "36383:21:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_a7d3f5b8fcfdb9260fb71cc6af515e9b07a68a1202d1cb2f5a3f8f30449ddc07", + "typeString": "literal_string \"ERR_INVALID_ADDRESS\"" + }, + "value": "ERR_INVALID_ADDRESS" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_a7d3f5b8fcfdb9260fb71cc6af515e9b07a68a1202d1cb2f5a3f8f30449ddc07", + "typeString": "literal_string \"ERR_INVALID_ADDRESS\"" + } + ], + "id": 1725, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "36351:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1733, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "36351:54:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1734, + "nodeType": "ExpressionStatement", + "src": "36351:54:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 1739, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1735, + "name": "_liquidityProviderWhitelist", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 173, + "src": "36416:27:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 1737, + "indexExpression": { + "argumentTypes": null, + "id": 1736, + "name": "provider", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1703, + "src": "36444:8:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "36416:37:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 1738, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "36456:5:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "src": "36416:45:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1740, + "nodeType": "ExpressionStatement", + "src": "36416:45:1" + } + ] + }, + "documentation": { + "id": 1701, + "nodeType": "StructuredDocumentation", + "src": "35911:147:1", + "text": " @notice Remove from the whitelist of liquidity providers (if enabled)\n @param provider - address of the liquidity provider" + }, + "functionSelector": "e2762d4b", + "id": 1742, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 1706, + "modifierName": { + "argumentTypes": null, + "id": 1705, + "name": "onlyOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8037, + "src": "36150:9:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "36150:9:1" + }, + { + "arguments": null, + "id": 1708, + "modifierName": { + "argumentTypes": null, + "id": 1707, + "name": "lock", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8124, + "src": "36168:4:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "36168:4:1" + }, + { + "arguments": null, + "id": 1710, + "modifierName": { + "argumentTypes": null, + "id": 1709, + "name": "logs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 220, + "src": "36181:4:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "36181:4:1" + } + ], + "name": "removeWhitelistedLiquidityProvider", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 1704, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1703, + "mutability": "mutable", + "name": "provider", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1742, + "src": "36107:16:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1702, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "36107:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "36106:18:1" + }, + "returnParameters": { + "id": 1711, + "nodeType": "ParameterList", + "parameters": [], + "src": "36190:0:1" + }, + "scope": 2095, + "src": "36063:405:1", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 1766, + "nodeType": "Block", + "src": "36831:311:1", + "statements": [ + { + "condition": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1750, + "name": "rights", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 145, + "src": "36845:6:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Rights_$8553_storage", + "typeString": "struct RightsManager.Rights storage ref" + } + }, + "id": 1751, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "canWhitelistLPs", + "nodeType": "MemberAccess", + "referencedDeclaration": 8550, + "src": "36845:22:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 1764, + "nodeType": "Block", + "src": "36952:184:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1762, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1757, + "name": "provider", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1745, + "src": "37103:8:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 1760, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "37123:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 1759, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "37115:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1758, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "37115:7:1", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 1761, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "37115:10:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "37103:22:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 1749, + "id": 1763, + "nodeType": "Return", + "src": "37096:29:1" + } + ] + }, + "id": 1765, + "nodeType": "IfStatement", + "src": "36841:295:1", + "trueBody": { + "id": 1756, + "nodeType": "Block", + "src": "36869:69:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1752, + "name": "_liquidityProviderWhitelist", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 173, + "src": "36890:27:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 1754, + "indexExpression": { + "argumentTypes": null, + "id": 1753, + "name": "provider", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1745, + "src": "36918:8:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "36890:37:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 1749, + "id": 1755, + "nodeType": "Return", + "src": "36883:44:1" + } + ] + } + } + ] + }, + "documentation": { + "id": 1743, + "nodeType": "StructuredDocumentation", + "src": "36474:249:1", + "text": " @notice Check if an address is a liquidity provider\n @dev If the whitelist feature is not enabled, anyone can provide liquidity (assuming finalized)\n @return boolean value indicating whether the address can join a pool" + }, + "functionSelector": "806c6f87", + "id": 1767, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "canProvideLiquidity", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 1746, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1745, + "mutability": "mutable", + "name": "provider", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1767, + "src": "36757:16:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1744, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "36757:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "36756:18:1" + }, + "returnParameters": { + "id": 1749, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1748, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1767, + "src": "36821:4:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1747, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "36821:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "36820:6:1" + }, + "scope": 2095, + "src": "36728:414:1", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 1781, + "nodeType": "Block", + "src": "37554:71:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1777, + "name": "rights", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 145, + "src": "37599:6:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Rights_$8553_storage", + "typeString": "struct RightsManager.Rights storage ref" + } + }, + { + "argumentTypes": null, + "id": 1778, + "name": "permission", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1770, + "src": "37607:10:1", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Permissions_$8540", + "typeString": "enum RightsManager.Permissions" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Rights_$8553_storage", + "typeString": "struct RightsManager.Rights storage ref" + }, + { + "typeIdentifier": "t_enum$_Permissions_$8540", + "typeString": "enum RightsManager.Permissions" + } + ], + "expression": { + "argumentTypes": null, + "id": 1775, + "name": "RightsManager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8749, + "src": "37571:13:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_RightsManager_$8749_$", + "typeString": "type(library RightsManager)" + } + }, + "id": 1776, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "hasPermission", + "nodeType": "MemberAccess", + "referencedDeclaration": 8748, + "src": "37571:27:1", + "typeDescriptions": { + "typeIdentifier": "t_function_delegatecall_pure$_t_struct$_Rights_$8553_memory_ptr_$_t_enum$_Permissions_$8540_$returns$_t_bool_$", + "typeString": "function (struct RightsManager.Rights memory,enum RightsManager.Permissions) pure returns (bool)" + } + }, + "id": 1779, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "37571:47:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 1774, + "id": 1780, + "nodeType": "Return", + "src": "37564:54:1" + } + ] + }, + "documentation": { + "id": 1768, + "nodeType": "StructuredDocumentation", + "src": "37148:268:1", + "text": " @notice Getter for specific permissions\n @dev value of the enum is just the 0-based index in the enumeration\n For instance canPauseSwapping is 0; canChangeWeights is 2\n @return token boolean true if we have the given permission" + }, + "functionSelector": "37c6f4d9", + "id": 1782, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "hasPermission", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 1771, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1770, + "mutability": "mutable", + "name": "permission", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1782, + "src": "37444:36:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Permissions_$8540", + "typeString": "enum RightsManager.Permissions" + }, + "typeName": { + "contractScope": null, + "id": 1769, + "name": "RightsManager.Permissions", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 8540, + "src": "37444:25:1", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Permissions_$8540", + "typeString": "enum RightsManager.Permissions" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "37443:38:1" + }, + "returnParameters": { + "id": 1774, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1773, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1782, + "src": "37544:4:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1772, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "37544:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "37543:6:1" + }, + "scope": 2095, + "src": "37421:204:1", + "stateMutability": "view", + "virtual": true, + "visibility": "external" + }, + { + "body": { + "id": 1799, + "nodeType": "Block", + "src": "37930:58:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1796, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1785, + "src": "37975:5:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 1794, + "name": "bPool", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 143, + "src": "37947:5:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBPool_$2256", + "typeString": "contract IBPool" + } + }, + "id": 1795, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "getDenormalizedWeight", + "nodeType": "MemberAccess", + "referencedDeclaration": 2171, + "src": "37947:27:1", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view external returns (uint256)" + } + }, + "id": 1797, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "37947:34:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 1793, + "id": 1798, + "nodeType": "Return", + "src": "37940:41:1" + } + ] + }, + "documentation": { + "id": 1783, + "nodeType": "StructuredDocumentation", + "src": "37631:155:1", + "text": " @notice Get the denormalized weight of a token\n @dev viewlock to prevent calling if it's being updated\n @return token weight" + }, + "functionSelector": "948d8ce6", + "id": 1800, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 1788, + "modifierName": { + "argumentTypes": null, + "id": 1787, + "name": "viewlock", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8136, + "src": "37875:8:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "37875:8:1" + }, + { + "arguments": null, + "id": 1790, + "modifierName": { + "argumentTypes": null, + "id": 1789, + "name": "needsBPool", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 237, + "src": "37892:10:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "37892:10:1" + } + ], + "name": "getDenormalizedWeight", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 1786, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1785, + "mutability": "mutable", + "name": "token", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1800, + "src": "37822:13:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1784, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "37822:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "37821:15:1" + }, + "returnParameters": { + "id": 1793, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1792, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1800, + "src": "37920:4:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1791, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "37920:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "37919:6:1" + }, + "scope": 2095, + "src": "37791:197:1", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 1811, + "nodeType": "Block", + "src": "38293:46:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1808, + "name": "RightsManager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8749, + "src": "38318:13:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_RightsManager_$8749_$", + "typeString": "type(library RightsManager)" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_contract$_RightsManager_$8749_$", + "typeString": "type(library RightsManager)" + } + ], + "id": 1807, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "38310:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1806, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "38310:7:1", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 1809, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "38310:22:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 1805, + "id": 1810, + "nodeType": "Return", + "src": "38303:29:1" + } + ] + }, + "documentation": { + "id": 1801, + "nodeType": "StructuredDocumentation", + "src": "37994:227:1", + "text": " @notice Getter for the RightsManager contract\n @dev Convenience function to get the address of the RightsManager library (so clients can check version)\n @return address of the RightsManager library" + }, + "functionSelector": "74983a0d", + "id": 1812, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getRightsManagerVersion", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 1802, + "nodeType": "ParameterList", + "parameters": [], + "src": "38258:2:1" + }, + "returnParameters": { + "id": 1805, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1804, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1812, + "src": "38284:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1803, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "38284:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "38283:9:1" + }, + "scope": 2095, + "src": "38226:113:1", + "stateMutability": "pure", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 1823, + "nodeType": "Block", + "src": "38656:49:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1820, + "name": "BalancerSafeMath", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8529, + "src": "38681:16:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_BalancerSafeMath_$8529_$", + "typeString": "type(library BalancerSafeMath)" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_contract$_BalancerSafeMath_$8529_$", + "typeString": "type(library BalancerSafeMath)" + } + ], + "id": 1819, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "38673:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1818, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "38673:7:1", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 1821, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "38673:25:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 1817, + "id": 1822, + "nodeType": "Return", + "src": "38666:32:1" + } + ] + }, + "documentation": { + "id": 1813, + "nodeType": "StructuredDocumentation", + "src": "38345:236:1", + "text": " @notice Getter for the BalancerSafeMath contract\n @dev Convenience function to get the address of the BalancerSafeMath library (so clients can check version)\n @return address of the BalancerSafeMath library" + }, + "functionSelector": "9a82417e", + "id": 1824, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getBalancerSafeMathVersion", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 1814, + "nodeType": "ParameterList", + "parameters": [], + "src": "38621:2:1" + }, + "returnParameters": { + "id": 1817, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1816, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1824, + "src": "38647:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1815, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "38647:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "38646:9:1" + }, + "scope": 2095, + "src": "38586:119:1", + "stateMutability": "pure", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 1835, + "nodeType": "Block", + "src": "39022:49:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1832, + "name": "SmartPoolManager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10277, + "src": "39047:16:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_SmartPoolManager_$10277_$", + "typeString": "type(library SmartPoolManager)" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_contract$_SmartPoolManager_$10277_$", + "typeString": "type(library SmartPoolManager)" + } + ], + "id": 1831, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "39039:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1830, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "39039:7:1", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 1833, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "39039:25:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 1829, + "id": 1834, + "nodeType": "Return", + "src": "39032:32:1" + } + ] + }, + "documentation": { + "id": 1825, + "nodeType": "StructuredDocumentation", + "src": "38711:236:1", + "text": " @notice Getter for the SmartPoolManager contract\n @dev Convenience function to get the address of the SmartPoolManager library (so clients can check version)\n @return address of the SmartPoolManager library" + }, + "functionSelector": "9d829c2b", + "id": 1836, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getSmartPoolManagerVersion", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 1826, + "nodeType": "ParameterList", + "parameters": [], + "src": "38987:2:1" + }, + "returnParameters": { + "id": 1829, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1828, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1836, + "src": "39013:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1827, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "39013:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "39012:9:1" + }, + "scope": 2095, + "src": "38952:119:1", + "stateMutability": "pure", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 1858, + "nodeType": "Block", + "src": "39484:100:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1850, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1844, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "39503:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1845, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "39503:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1848, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "39525:4:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ConfigurableRightsPool_$2095", + "typeString": "contract ConfigurableRightsPool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ConfigurableRightsPool_$2095", + "typeString": "contract ConfigurableRightsPool" + } + ], + "id": 1847, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "39517:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1846, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "39517:7:1", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 1849, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "39517:13:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "39503:27:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552525f4e4f545f434f4e54524f4c4c4552", + "id": 1851, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "39532:20:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_0479bbd6e0e904a96491e3adc0eda9022c19acd57f4922725f8618b3a0372668", + "typeString": "literal_string \"ERR_NOT_CONTROLLER\"" + }, + "value": "ERR_NOT_CONTROLLER" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_0479bbd6e0e904a96491e3adc0eda9022c19acd57f4922725f8618b3a0372668", + "typeString": "literal_string \"ERR_NOT_CONTROLLER\"" + } + ], + "id": 1843, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "39494:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1852, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "39494:59:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1853, + "nodeType": "ExpressionStatement", + "src": "39494:59:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1855, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1838, + "src": "39570:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1854, + "name": "_mint", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2822, + "src": "39564:5:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256)" + } + }, + "id": 1856, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "39564:13:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1857, + "nodeType": "ExpressionStatement", + "src": "39564:13:1" + } + ] + }, + "documentation": null, + "functionSelector": "4ba57882", + "id": 1859, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 1841, + "modifierName": { + "argumentTypes": null, + "id": 1840, + "name": "withinCap", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 250, + "src": "39474:9:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "39474:9:1" + } + ], + "name": "mintPoolShareFromLib", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 1839, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1838, + "mutability": "mutable", + "name": "amount", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1859, + "src": "39454:11:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1837, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "39454:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "39453:13:1" + }, + "returnParameters": { + "id": 1842, + "nodeType": "ParameterList", + "parameters": [], + "src": "39484:0:1" + }, + "scope": 2095, + "src": "39424:160:1", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 1882, + "nodeType": "Block", + "src": "39652:104:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1873, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1867, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "39671:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1868, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "39671:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1871, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "39693:4:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ConfigurableRightsPool_$2095", + "typeString": "contract ConfigurableRightsPool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ConfigurableRightsPool_$2095", + "typeString": "contract ConfigurableRightsPool" + } + ], + "id": 1870, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "39685:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1869, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "39685:7:1", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 1872, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "39685:13:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "39671:27:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552525f4e4f545f434f4e54524f4c4c4552", + "id": 1874, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "39700:20:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_0479bbd6e0e904a96491e3adc0eda9022c19acd57f4922725f8618b3a0372668", + "typeString": "literal_string \"ERR_NOT_CONTROLLER\"" + }, + "value": "ERR_NOT_CONTROLLER" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_0479bbd6e0e904a96491e3adc0eda9022c19acd57f4922725f8618b3a0372668", + "typeString": "literal_string \"ERR_NOT_CONTROLLER\"" + } + ], + "id": 1866, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "39662:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1875, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "39662:59:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1876, + "nodeType": "ExpressionStatement", + "src": "39662:59:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1878, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1861, + "src": "39738:2:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1879, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1863, + "src": "39742:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1877, + "name": "_push", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2923, + "src": "39732:5:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 1880, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "39732:17:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1881, + "nodeType": "ExpressionStatement", + "src": "39732:17:1" + } + ] + }, + "documentation": null, + "functionSelector": "095dcccc", + "id": 1883, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "pushPoolShareFromLib", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 1864, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1861, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1883, + "src": "39620:10:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1860, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "39620:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1863, + "mutability": "mutable", + "name": "amount", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1883, + "src": "39632:11:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1862, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "39632:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "39619:25:1" + }, + "returnParameters": { + "id": 1865, + "nodeType": "ParameterList", + "parameters": [], + "src": "39652:0:1" + }, + "scope": 2095, + "src": "39590:166:1", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 1906, + "nodeType": "Block", + "src": "39827:106:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1897, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1891, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "39846:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1892, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "39846:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1895, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "39868:4:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ConfigurableRightsPool_$2095", + "typeString": "contract ConfigurableRightsPool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ConfigurableRightsPool_$2095", + "typeString": "contract ConfigurableRightsPool" + } + ], + "id": 1894, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "39860:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1893, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "39860:7:1", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 1896, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "39860:13:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "39846:27:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552525f4e4f545f434f4e54524f4c4c4552", + "id": 1898, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "39875:20:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_0479bbd6e0e904a96491e3adc0eda9022c19acd57f4922725f8618b3a0372668", + "typeString": "literal_string \"ERR_NOT_CONTROLLER\"" + }, + "value": "ERR_NOT_CONTROLLER" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_0479bbd6e0e904a96491e3adc0eda9022c19acd57f4922725f8618b3a0372668", + "typeString": "literal_string \"ERR_NOT_CONTROLLER\"" + } + ], + "id": 1890, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "39837:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1899, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "39837:59:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1900, + "nodeType": "ExpressionStatement", + "src": "39837:59:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1902, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1885, + "src": "39913:4:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1903, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1887, + "src": "39919:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1901, + "name": "_pull", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2940, + "src": "39907:5:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 1904, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "39907:19:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1905, + "nodeType": "ExpressionStatement", + "src": "39907:19:1" + } + ] + }, + "documentation": null, + "functionSelector": "55c32a23", + "id": 1907, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "pullPoolShareFromLib", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 1888, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1885, + "mutability": "mutable", + "name": "from", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1907, + "src": "39792:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1884, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "39792:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1887, + "mutability": "mutable", + "name": "amount", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1907, + "src": "39806:11:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1886, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "39806:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "39791:27:1" + }, + "returnParameters": { + "id": 1889, + "nodeType": "ParameterList", + "parameters": [], + "src": "39827:0:1" + }, + "scope": 2095, + "src": "39762:171:1", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 1927, + "nodeType": "Block", + "src": "39990:100:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1919, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1913, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "40009:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1914, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "40009:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1917, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "40031:4:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ConfigurableRightsPool_$2095", + "typeString": "contract ConfigurableRightsPool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ConfigurableRightsPool_$2095", + "typeString": "contract ConfigurableRightsPool" + } + ], + "id": 1916, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "40023:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1915, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "40023:7:1", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 1918, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "40023:13:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "40009:27:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552525f4e4f545f434f4e54524f4c4c4552", + "id": 1920, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "40038:20:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_0479bbd6e0e904a96491e3adc0eda9022c19acd57f4922725f8618b3a0372668", + "typeString": "literal_string \"ERR_NOT_CONTROLLER\"" + }, + "value": "ERR_NOT_CONTROLLER" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_0479bbd6e0e904a96491e3adc0eda9022c19acd57f4922725f8618b3a0372668", + "typeString": "literal_string \"ERR_NOT_CONTROLLER\"" + } + ], + "id": 1912, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "40000:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1921, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "40000:59:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1922, + "nodeType": "ExpressionStatement", + "src": "40000:59:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1924, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1909, + "src": "40076:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1923, + "name": "_burn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2866, + "src": "40070:5:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256)" + } + }, + "id": 1925, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "40070:13:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1926, + "nodeType": "ExpressionStatement", + "src": "40070:13:1" + } + ] + }, + "documentation": null, + "functionSelector": "220eb760", + "id": 1928, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "burnPoolShareFromLib", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 1910, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1909, + "mutability": "mutable", + "name": "amount", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1928, + "src": "39969:11:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1908, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "39969:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "39968:13:1" + }, + "returnParameters": { + "id": 1911, + "nodeType": "ParameterList", + "parameters": [], + "src": "39990:0:1" + }, + "scope": 2095, + "src": "39939:151:1", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 1935, + "nodeType": "Block", + "src": "40361:35:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1933, + "name": "_startBlock", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 157, + "src": "40378:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 1932, + "id": 1934, + "nodeType": "Return", + "src": "40371:18:1" + } + ] + }, + "documentation": null, + "id": 1936, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getStartBlock", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 1929, + "nodeType": "ParameterList", + "parameters": [], + "src": "40329:2:1" + }, + "returnParameters": { + "id": 1932, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1931, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1936, + "src": "40355:4:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1930, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "40355:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "40354:6:1" + }, + "scope": 2095, + "src": "40307:89:1", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 1992, + "nodeType": "Block", + "src": "40668:417:1", + "statements": [ + { + "assignments": [ + 1948 + ], + "declarations": [ + { + "constant": false, + "id": 1948, + "mutability": "mutable", + "name": "tokenBalance", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1992, + "src": "40765:17:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1947, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "40765:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1953, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1951, + "name": "erc20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1938, + "src": "40802:5:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 1949, + "name": "bPool", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 143, + "src": "40785:5:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBPool_$2256", + "typeString": "contract IBPool" + } + }, + "id": 1950, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "getBalance", + "nodeType": "MemberAccess", + "referencedDeclaration": 2149, + "src": "40785:16:1", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view external returns (uint256)" + } + }, + "id": 1952, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "40785:23:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "40765:43:1" + }, + { + "assignments": [ + 1955 + ], + "declarations": [ + { + "constant": false, + "id": 1955, + "mutability": "mutable", + "name": "tokenWeight", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1992, + "src": "40818:16:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1954, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "40818:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1960, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1958, + "name": "erc20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1938, + "src": "40865:5:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 1956, + "name": "bPool", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 143, + "src": "40837:5:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBPool_$2256", + "typeString": "contract IBPool" + } + }, + "id": 1957, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "getDenormalizedWeight", + "nodeType": "MemberAccess", + "referencedDeclaration": 2171, + "src": "40837:27:1", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view external returns (uint256)" + } + }, + "id": 1959, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "40837:34:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "40818:53:1" + }, + { + "assignments": [ + 1962 + ], + "declarations": [ + { + "constant": false, + "id": 1962, + "mutability": "mutable", + "name": "xfer", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1992, + "src": "40882:9:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1961, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "40882:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1974, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1967, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1940, + "src": "40921:4:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1970, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "40935:4:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ConfigurableRightsPool_$2095", + "typeString": "contract ConfigurableRightsPool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ConfigurableRightsPool_$2095", + "typeString": "contract ConfigurableRightsPool" + } + ], + "id": 1969, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "40927:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1968, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "40927:7:1", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 1971, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "40927:13:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1972, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1942, + "src": "40942:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1964, + "name": "erc20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1938, + "src": "40901:5:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1963, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2393, + "src": "40894:6:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC20_$2393_$", + "typeString": "type(contract IERC20)" + } + }, + "id": 1965, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "40894:13:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$2393", + "typeString": "contract IERC20" + } + }, + "id": 1966, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "transferFrom", + "nodeType": "MemberAccess", + "referencedDeclaration": 2392, + "src": "40894:26:1", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,address,uint256) external returns (bool)" + } + }, + "id": 1973, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "40894:55:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "40882:67:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1976, + "name": "xfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1962, + "src": "40967:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552525f45524332305f46414c5345", + "id": 1977, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "40973:17:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_cfe847c677cf42c21ce03ee8e7625272fdefc571a2ce6d0eacad2e7c6f42fc3f", + "typeString": "literal_string \"ERR_ERC20_FALSE\"" + }, + "value": "ERR_ERC20_FALSE" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_cfe847c677cf42c21ce03ee8e7625272fdefc571a2ce6d0eacad2e7c6f42fc3f", + "typeString": "literal_string \"ERR_ERC20_FALSE\"" + } + ], + "id": 1975, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "40959:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1978, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "40959:32:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1979, + "nodeType": "ExpressionStatement", + "src": "40959:32:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1983, + "name": "erc20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1938, + "src": "41014:5:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1986, + "name": "tokenBalance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1948, + "src": "41043:12:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1987, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1942, + "src": "41057:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 1984, + "name": "BalancerSafeMath", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8529, + "src": "41021:16:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_BalancerSafeMath_$8529_$", + "typeString": "type(library BalancerSafeMath)" + } + }, + "id": 1985, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "badd", + "nodeType": "MemberAccess", + "referencedDeclaration": 8257, + "src": "41021:21:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 1988, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "41021:43:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1989, + "name": "tokenWeight", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1955, + "src": "41066:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 1980, + "name": "bPool", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 143, + "src": "41001:5:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBPool_$2256", + "typeString": "contract IBPool" + } + }, + "id": 1982, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "rebind", + "nodeType": "MemberAccess", + "referencedDeclaration": 2106, + "src": "41001:12:1", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256,uint256) external" + } + }, + "id": 1990, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "41001:77:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1991, + "nodeType": "ExpressionStatement", + "src": "41001:77:1" + } + ] + }, + "documentation": null, + "id": 1993, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 1945, + "modifierName": { + "argumentTypes": null, + "id": 1944, + "name": "needsBPool", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 237, + "src": "40657:10:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "40657:10:1" + } + ], + "name": "_pullUnderlying", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 1943, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1938, + "mutability": "mutable", + "name": "erc20", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1993, + "src": "40606:13:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1937, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "40606:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1940, + "mutability": "mutable", + "name": "from", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1993, + "src": "40621:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1939, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "40621:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1942, + "mutability": "mutable", + "name": "amount", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1993, + "src": "40635:11:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1941, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "40635:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "40605:42:1" + }, + "returnParameters": { + "id": 1946, + "nodeType": "ParameterList", + "parameters": [], + "src": "40668:0:1" + }, + "scope": 2095, + "src": "40581:504:1", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2045, + "nodeType": "Block", + "src": "41295:396:1", + "statements": [ + { + "assignments": [ + 2005 + ], + "declarations": [ + { + "constant": false, + "id": 2005, + "mutability": "mutable", + "name": "tokenBalance", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2045, + "src": "41392:17:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2004, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "41392:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2010, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2008, + "name": "erc20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1995, + "src": "41429:5:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 2006, + "name": "bPool", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 143, + "src": "41412:5:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBPool_$2256", + "typeString": "contract IBPool" + } + }, + "id": 2007, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "getBalance", + "nodeType": "MemberAccess", + "referencedDeclaration": 2149, + "src": "41412:16:1", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view external returns (uint256)" + } + }, + "id": 2009, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "41412:23:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "41392:43:1" + }, + { + "assignments": [ + 2012 + ], + "declarations": [ + { + "constant": false, + "id": 2012, + "mutability": "mutable", + "name": "tokenWeight", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2045, + "src": "41445:16:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2011, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "41445:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2017, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2015, + "name": "erc20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1995, + "src": "41492:5:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 2013, + "name": "bPool", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 143, + "src": "41464:5:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBPool_$2256", + "typeString": "contract IBPool" + } + }, + "id": 2014, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "getDenormalizedWeight", + "nodeType": "MemberAccess", + "referencedDeclaration": 2171, + "src": "41464:27:1", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view external returns (uint256)" + } + }, + "id": 2016, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "41464:34:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "41445:53:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2021, + "name": "erc20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1995, + "src": "41521:5:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2024, + "name": "tokenBalance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2005, + "src": "41550:12:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 2025, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1999, + "src": "41564:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 2022, + "name": "BalancerSafeMath", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8529, + "src": "41528:16:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_BalancerSafeMath_$8529_$", + "typeString": "type(library BalancerSafeMath)" + } + }, + "id": 2023, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "bsub", + "nodeType": "MemberAccess", + "referencedDeclaration": 8285, + "src": "41528:21:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 2026, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "41528:43:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 2027, + "name": "tokenWeight", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2012, + "src": "41573:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 2018, + "name": "bPool", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 143, + "src": "41508:5:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBPool_$2256", + "typeString": "contract IBPool" + } + }, + "id": 2020, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "rebind", + "nodeType": "MemberAccess", + "referencedDeclaration": 2106, + "src": "41508:12:1", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256,uint256) external" + } + }, + "id": 2028, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "41508:77:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2029, + "nodeType": "ExpressionStatement", + "src": "41508:77:1" + }, + { + "assignments": [ + 2031 + ], + "declarations": [ + { + "constant": false, + "id": 2031, + "mutability": "mutable", + "name": "xfer", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2045, + "src": "41596:9:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2030, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "41596:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2039, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2036, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1997, + "src": "41631:2:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2037, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1999, + "src": "41635:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2033, + "name": "erc20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1995, + "src": "41615:5:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2032, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2393, + "src": "41608:6:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC20_$2393_$", + "typeString": "type(contract IERC20)" + } + }, + "id": 2034, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "41608:13:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$2393", + "typeString": "contract IERC20" + } + }, + "id": 2035, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "transfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 2381, + "src": "41608:22:1", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) external returns (bool)" + } + }, + "id": 2038, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "41608:34:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "41596:46:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2041, + "name": "xfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2031, + "src": "41660:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552525f45524332305f46414c5345", + "id": 2042, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "41666:17:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_cfe847c677cf42c21ce03ee8e7625272fdefc571a2ce6d0eacad2e7c6f42fc3f", + "typeString": "literal_string \"ERR_ERC20_FALSE\"" + }, + "value": "ERR_ERC20_FALSE" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_cfe847c677cf42c21ce03ee8e7625272fdefc571a2ce6d0eacad2e7c6f42fc3f", + "typeString": "literal_string \"ERR_ERC20_FALSE\"" + } + ], + "id": 2040, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "41652:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2043, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "41652:32:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2044, + "nodeType": "ExpressionStatement", + "src": "41652:32:1" + } + ] + }, + "documentation": null, + "id": 2046, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 2002, + "modifierName": { + "argumentTypes": null, + "id": 2001, + "name": "needsBPool", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 237, + "src": "41284:10:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "41284:10:1" + } + ], + "name": "_pushUnderlying", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 2000, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1995, + "mutability": "mutable", + "name": "erc20", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2046, + "src": "41235:13:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1994, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "41235:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1997, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2046, + "src": "41250:10:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1996, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "41250:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1999, + "mutability": "mutable", + "name": "amount", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2046, + "src": "41262:11:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1998, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "41262:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "41234:40:1" + }, + "returnParameters": { + "id": 2003, + "nodeType": "ParameterList", + "parameters": [], + "src": "41295:0:1" + }, + "scope": 2095, + "src": "41210:481:1", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2057, + "nodeType": "Block", + "src": "41957:30:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2054, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2048, + "src": "41973:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2053, + "name": "_mint", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2822, + "src": "41967:5:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256)" + } + }, + "id": 2055, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "41967:13:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2056, + "nodeType": "ExpressionStatement", + "src": "41967:13:1" + } + ] + }, + "documentation": null, + "id": 2058, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 2051, + "modifierName": { + "argumentTypes": null, + "id": 2050, + "name": "withinCap", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 250, + "src": "41947:9:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "41947:9:1" + } + ], + "name": "_mintPoolShare", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 2049, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2048, + "mutability": "mutable", + "name": "amount", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2058, + "src": "41925:11:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2047, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "41925:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "41924:13:1" + }, + "returnParameters": { + "id": 2052, + "nodeType": "ParameterList", + "parameters": [], + "src": "41957:0:1" + }, + "scope": 2095, + "src": "41901:86:1", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2070, + "nodeType": "Block", + "src": "42051:34:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2066, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2060, + "src": "42067:2:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2067, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2062, + "src": "42071:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2065, + "name": "_push", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2923, + "src": "42061:5:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 2068, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "42061:17:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2069, + "nodeType": "ExpressionStatement", + "src": "42061:17:1" + } + ] + }, + "documentation": null, + "id": 2071, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_pushPoolShare", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 2063, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2060, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2071, + "src": "42017:10:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2059, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "42017:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2062, + "mutability": "mutable", + "name": "amount", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2071, + "src": "42029:11:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2061, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "42029:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "42016:25:1" + }, + "returnParameters": { + "id": 2064, + "nodeType": "ParameterList", + "parameters": [], + "src": "42051:0:1" + }, + "scope": 2095, + "src": "41993:92:1", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2083, + "nodeType": "Block", + "src": "42152:36:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2079, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2073, + "src": "42168:4:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2080, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2075, + "src": "42174:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2078, + "name": "_pull", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2940, + "src": "42162:5:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 2081, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "42162:19:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2082, + "nodeType": "ExpressionStatement", + "src": "42162:19:1" + } + ] + }, + "documentation": null, + "id": 2084, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_pullPoolShare", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 2076, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2073, + "mutability": "mutable", + "name": "from", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2084, + "src": "42115:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2072, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "42115:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2075, + "mutability": "mutable", + "name": "amount", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2084, + "src": "42129:11:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2074, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "42129:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "42114:27:1" + }, + "returnParameters": { + "id": 2077, + "nodeType": "ParameterList", + "parameters": [], + "src": "42152:0:1" + }, + "scope": 2095, + "src": "42091:97:1", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2093, + "nodeType": "Block", + "src": "42241:30:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2090, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2086, + "src": "42257:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2089, + "name": "_burn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2866, + "src": "42251:5:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256)" + } + }, + "id": 2091, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "42251:13:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2092, + "nodeType": "ExpressionStatement", + "src": "42251:13:1" + } + ] + }, + "documentation": null, + "id": 2094, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_burnPoolShare", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 2087, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2086, + "mutability": "mutable", + "name": "amount", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2094, + "src": "42218:11:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2085, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "42218:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "42217:13:1" + }, + "returnParameters": { + "id": 2088, + "nodeType": "ParameterList", + "parameters": [], + "src": "42241:0:1" + }, + "scope": 2095, + "src": "42194:77:1", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + } + ], + "scope": 2096, + "src": "1579:40694:1" + } + ], + "src": "45:42229:1" + }, + "compiler": { + "name": "solc", + "version": "0.6.12+commit.27d51765.Emscripten.clang" + }, + "networks": {}, + "schemaVersion": "3.1.0", + "updatedAt": "2020-08-18T20:00:26.280Z", + "devdoc": { + "author": "Balancer Labs", + "details": "Rights are defined as follows (index values into the array) 0: canPauseSwapping - can setPublicSwap back to false after turning it on by default, it is off on initialization and can only be turned on 1: canChangeSwapFee - can setSwapFee after initialization (by default, it is fixed at create time) 2: canChangeWeights - can bind new token weights (allowed by default in base pool) 3: canAddRemoveTokens - can bind/unbind tokens (allowed by default in base pool) 4: canWhitelistLPs - can restrict LPs to a whitelist 5: canChangeCap - can change the BSP cap (max # of pool tokens) Note that functions called on bPool and bFactory may look like internal calls, but since they are contracts accessed through an interface, they are really external. To make this explicit, we could write \"IBPool(address(bPool)).function()\" everywhere, instead of \"bPool.function()\".", + "kind": "dev", + "methods": { + "allowance(address,address)": { + "params": { + "owner": "- owner of the tokens", + "spender": "- entity allowed to spend the tokens" + }, + "returns": { + "_0": "uint - remaining amount spender is allowed to transfer" + } + }, + "approve(address,uint256)": { + "details": "emits an Approval event", + "params": { + "amount": "- number of tokens being approved", + "spender": "- entity the owner (sender) is approving to spend his tokens" + }, + "returns": { + "_0": "bool - result of the approval (will always be true if it doesn't revert)" + } + }, + "balanceOf(address)": { + "params": { + "account": "- address we're checking the balance of" + }, + "returns": { + "_0": "uint - token balance in the account" + } + }, + "canProvideLiquidity(address)": { + "details": "If the whitelist feature is not enabled, anyone can provide liquidity (assuming finalized)", + "returns": { + "_0": "boolean value indicating whether the address can join a pool" + } + }, + "commitAddToken(address,uint256,uint256)": { + "details": "Not sure about the naming here. Kind of reversed; I would think you would \"Apply\" to add a token, then \"Commit\" it to actually do the binding.", + "params": { + "balance": "- how much to be added", + "denormalizedWeight": "- the desired token weight", + "token": "- the token to be added" + } + }, + "constructor": { + "details": "_tokens and _swapFee are only used for temporary storage between construction and create pool, and should not be used thereafter! _tokens is destroyed in createPool to prevent this, and _swapFee is kept in sync (defensively), but should never be used except in this constructor and createPool()", + "params": { + "factoryAddress": "- the BPoolFactory used to create the underlying pool", + "rightsStruct": "- Set of permissions we are assigning to this smart pool", + "startBalances": "- initial token balances", + "startWeights": "- initial token weights", + "swapFee": "- initial swap fee (will set on the core pool after pool creation)", + "tokenSymbolString": "- Token symbol (named thus to avoid shadowing)", + "tokens": "- list of tokens to include" + } + }, + "createPool(uint256)": { + "details": "Initialize the swap fee to the value provided in the CRP constructor Can be changed if the canChangeSwapFee permission is enabled NB: Code is duplicated in the overloaded createPool! If you change one, change the other! Unfortunately I cannot call this.createPool(initialSupply) from the overloaded one, because msg.sender will be different (contract address vs external account), and the token transfers would fail. Overloading is tricky with external functions.", + "params": { + "initialSupply": "starting token balance" + } + }, + "createPool(uint256,uint256,uint256)": { + "details": "Initialize the swap fee to the value provided in the CRP constructor Can be changed if the canChangeSwapFee permission is enabled Time parameters will be fixed at these values If this contract doesn't have canChangeWeights permission - or you want to use the default values, the block time arguments are not needed, and you can just call the single-argument createPool() Code is duplicated in the overloaded createPool! If you change one, change the other! Unfortunately I cannot call this.createPool(initialSupply) from the overloaded one, because msg.sender will be different (contract address vs external account), and the token transfers would fail", + "params": { + "addTokenTimeLockInBlocks": "- Enforce a mandatory wait time between updates This is also the wait time between committing and applying a new token", + "initialSupply": "starting token balance", + "minimumWeightChangeBlockPeriod": "- Enforce a minimum time between the start and end blocks" + } + }, + "decimals()": { + "details": "Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5,05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the value {ERC20} uses, unless {_setupDecimals} is called. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}." + }, + "decreaseApproval(address,uint256)": { + "details": "emits an Approval eventIf you try to decrease it below the current limit, it's just set to zero (not an error)", + "params": { + "amount": "- number of tokens being approved", + "spender": "- entity the owner (sender) is approving to spend his tokens" + }, + "returns": { + "_0": "bool - result of the approval (will always be true if it doesn't revert)" + } + }, + "exitPool(uint256,uint256[])": { + "details": "Emits a LogExit event for each token bPool is a contract interface; function calls on it are external", + "params": { + "minAmountsOut": "- minimum amount of asset tokens to receive", + "poolAmountIn": "- amount of pool tokens to redeem" + } + }, + "exitswapExternAmountOut(address,uint256,uint256)": { + "details": "Emits a LogExit event for the token", + "params": { + "maxPoolAmountIn": "- maximum pool tokens to be redeemed", + "tokenAmountOut": "- amount of underlying asset tokens to receive", + "tokenOut": "- which token the caller wants to receive" + }, + "returns": { + "poolAmountIn": "- amount of pool tokens redeemed" + } + }, + "exitswapPoolAmountIn(address,uint256,uint256)": { + "details": "Emits a LogExit event for the token", + "params": { + "minAmountOut": "- minimum asset tokens to receive", + "poolAmountIn": "- amount of pool tokens to redeem", + "tokenOut": "- which token the caller wants to receive" + }, + "returns": { + "tokenAmountOut": "- amount of asset tokens returned" + } + }, + "getBalancerSafeMathVersion()": { + "details": "Convenience function to get the address of the BalancerSafeMath library (so clients can check version)", + "returns": { + "_0": "address of the BalancerSafeMath library" + } + }, + "getCap()": { + "returns": { + "_0": "current value of the cap" + } + }, + "getController()": { + "details": "external for gas optimization", + "returns": { + "_0": "address - of the owner (AKA controller)" + } + }, + "getDenormalizedWeight(address)": { + "details": "viewlock to prevent calling if it's being updated", + "returns": { + "_0": "token weight" + } + }, + "getRightsManagerVersion()": { + "details": "Convenience function to get the address of the RightsManager library (so clients can check version)", + "returns": { + "_0": "address of the RightsManager library" + } + }, + "getSmartPoolManagerVersion()": { + "details": "Convenience function to get the address of the SmartPoolManager library (so clients can check version)", + "returns": { + "_0": "address of the SmartPoolManager library" + } + }, + "hasPermission(uint8)": { + "details": "value of the enum is just the 0-based index in the enumeration For instance canPauseSwapping is 0; canChangeWeights is 2", + "returns": { + "_0": "token boolean true if we have the given permission" + } + }, + "increaseApproval(address,uint256)": { + "details": "emits an Approval event", + "params": { + "amount": "- number of tokens being approved", + "spender": "- entity the owner (sender) is approving to spend his tokens" + }, + "returns": { + "_0": "bool - result of the approval (will always be true if it doesn't revert)" + } + }, + "isPublicSwap()": { + "details": "nonReentrantView, because setPublicSwap is nonReentrant bPool is a contract interface; function calls on it are external", + "returns": { + "_0": "Current value of isPublicSwap" + } + }, + "joinPool(uint256,uint256[])": { + "details": "Emits a LogJoin event (for each token) bPool is a contract interface; function calls on it are external", + "params": { + "maxAmountsIn": "- Max amount of asset tokens to spend", + "poolAmountOut": "- number of pool tokens to receive" + } + }, + "joinswapExternAmountIn(address,uint256,uint256)": { + "details": "emits a LogJoin event", + "params": { + "minPoolAmountOut": "- minimum of pool tokens to receive", + "tokenAmountIn": "- amount of deposit", + "tokenIn": "- which token we're transferring in" + }, + "returns": { + "poolAmountOut": "- amount of pool tokens minted and transferred" + } + }, + "joinswapPoolAmountOut(address,uint256,uint256)": { + "details": "emits a LogJoin event", + "params": { + "maxAmountIn": "- Maximum asset tokens that can be pulled to pay for the pool tokens", + "poolAmountOut": "- amount of pool tokens to be received", + "tokenIn": "- which token we're transferring in (system calculates amount required)" + }, + "returns": { + "tokenAmountIn": "- amount of asset tokens transferred in to purchase the pool tokens" + } + }, + "name()": { + "details": "Returns the name of the token." + }, + "pokeWeights()": { + "details": "Still works if we poke after the end of the period; also works if the weights don't change Resets if we are poking beyond the end, so that we can do it again" + }, + "removeToken(address)": { + "details": "bPool is a contract interface; function calls on it are external", + "params": { + "token": "- token to remove" + } + }, + "removeWhitelistedLiquidityProvider(address)": { + "params": { + "provider": "- address of the liquidity provider" + } + }, + "setCap(uint256)": { + "details": "_bspCap defaults in the constructor to unlimited Can set to 0 (or anywhere below the current supply), to halt new investment Prevent setting it before creating a pool, since createPool sets to intialSupply (it does this to avoid an unlimited cap window between construction and createPool) Therefore setting it before then has no effect, so should not be allowed", + "params": { + "newCap": "- new value of the cap" + } + }, + "setController(address)": { + "details": "external for gas optimization", + "params": { + "newOwner": "- address of new owner" + } + }, + "setPublicSwap(bool)": { + "details": "If this smart pool has canPauseSwapping enabled, we can turn publicSwap off if it's already on Note that if they turn swapping off - but then finalize the pool - finalizing will turn the swapping back on. They're not supposed to finalize the underlying pool... would defeat the smart pool functions. (Only the owner can finalize the pool - which is this contract - so there is no risk from outside.) bPool is a contract interface; function calls on it are external", + "params": { + "publicSwap": "new value of the swap" + } + }, + "setSwapFee(uint256)": { + "details": "Keep the local version and core in sync (see below) bPool is a contract interface; function calls on it are external", + "params": { + "swapFee": "in Wei" + } + }, + "symbol()": { + "details": "Returns the symbol of the token, usually a shorter version of the name." + }, + "totalSupply()": { + "details": "declared external for gas optimization", + "returns": { + "_0": "uint - total number of tokens in existence" + } + }, + "transfer(address,uint256)": { + "details": "_move emits a Transfer event if successful", + "params": { + "amount": "- number of tokens being transferred", + "recipient": "- entity receiving the tokens" + }, + "returns": { + "_0": "bool - result of the transfer (will always be true if it doesn't revert)" + } + }, + "transferFrom(address,address,uint256)": { + "details": "_move emits a Transfer event if successful; may also emit an Approval event", + "params": { + "amount": "- number of tokens being transferred", + "recipient": "- recipient of the tokens", + "sender": "- entity sending the tokens (must be caller or allowed to spend on behalf of caller)" + }, + "returns": { + "_0": "bool - result of the transfer (will always be true if it doesn't revert)" + } + }, + "updateWeight(address,uint256)": { + "details": "Notice Balance is not an input (like with rebind on BPool) since we will require prices not to change This is achieved by forcing balances to change proportionally to weights, so that prices don't change If prices could be changed, this would allow the controller to drain the pool by arbing price changes", + "params": { + "newWeight": "- new weight of the token", + "token": "- token to be reweighted" + } + }, + "updateWeightsGradually(uint256[],uint256,uint256)": { + "details": "Must call pokeWeights at least once past the end for it to do the final update and enable calling this again. It is possible to call updateWeightsGradually during an update in some use cases For instance, setting newWeights to currentWeights to stop the update where it is", + "params": { + "endBlock": "- when weights will be at their final values", + "newWeights": "- final weights we want to get to", + "startBlock": "- when weights should start to change" + } + }, + "whitelistLiquidityProvider(address)": { + "params": { + "provider": "- address of the liquidity provider" + } + } + }, + "title": "Smart Pool with customizable features", + "version": 1 + }, + "userdoc": { + "kind": "user", + "methods": { + "allowance(address,address)": { + "notice": "Getter for allowance: amount spender will be allowed to spend on behalf of owner" + }, + "applyAddToken()": { + "notice": "Add the token previously committed (in commitAddToken) to the pool" + }, + "approve(address,uint256)": { + "notice": "Approve owner (sender) to spend a certain amount" + }, + "balanceOf(address)": { + "notice": "Getter for current account balance" + }, + "canProvideLiquidity(address)": { + "notice": "Check if an address is a liquidity provider" + }, + "commitAddToken(address,uint256,uint256)": { + "notice": "Schedule (commit) a token to be added; must call applyAddToken after a fixed number of blocks to actually add the token" + }, + "constructor": "Construct a new Configurable Rights Pool (wrapper around BPool)", + "createPool(uint256)": { + "notice": "Create a new Smart Pool" + }, + "createPool(uint256,uint256,uint256)": { + "notice": "Create a new Smart Pool - and set the block period time parameters" + }, + "decreaseApproval(address,uint256)": { + "notice": "Decrease the amount the spender is allowed to spend on behalf of the owner (sender)" + }, + "exitPool(uint256,uint256[])": { + "notice": "Exit a pool - redeem pool tokens for underlying assets" + }, + "exitswapExternAmountOut(address,uint256,uint256)": { + "notice": "Exit a pool - redeem pool tokens for a specific amount of underlying assets Asset must be present in the pool" + }, + "exitswapPoolAmountIn(address,uint256,uint256)": { + "notice": "Exit a pool - redeem a specific number of pool tokens for an underlying asset Asset must be present in the pool, and will incur an EXIT_FEE (if set to non-zero)" + }, + "getBalancerSafeMathVersion()": { + "notice": "Getter for the BalancerSafeMath contract" + }, + "getCap()": { + "notice": "Getter for the cap" + }, + "getController()": { + "notice": "Returns the address of the current owner" + }, + "getDenormalizedWeight(address)": { + "notice": "Get the denormalized weight of a token" + }, + "getRightsManagerVersion()": { + "notice": "Getter for the RightsManager contract" + }, + "getSmartPoolManagerVersion()": { + "notice": "Getter for the SmartPoolManager contract" + }, + "hasPermission(uint8)": { + "notice": "Getter for specific permissions" + }, + "increaseApproval(address,uint256)": { + "notice": "Increase the amount the spender is allowed to spend on behalf of the owner (sender)" + }, + "isPublicSwap()": { + "notice": "Getter for the publicSwap field on the underlying pool" + }, + "joinPool(uint256,uint256[])": { + "notice": "Join a pool" + }, + "joinswapExternAmountIn(address,uint256,uint256)": { + "notice": "Join by swapping a fixed amount of an external token in (must be present in the pool) System calculates the pool token amount" + }, + "joinswapPoolAmountOut(address,uint256,uint256)": { + "notice": "Join by swapping an external token in (must be present in the pool) To receive an exact amount of pool tokens out. System calculates the deposit amount" + }, + "pokeWeights()": { + "notice": "External function called to make the contract update weights according to plan" + }, + "removeToken(address)": { + "notice": "Remove a token from the pool" + }, + "removeWhitelistedLiquidityProvider(address)": { + "notice": "Remove from the whitelist of liquidity providers (if enabled)" + }, + "setCap(uint256)": { + "notice": "Set the cap (max # of pool tokens)" + }, + "setController(address)": { + "notice": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner" + }, + "setPublicSwap(bool)": { + "notice": "Set the public swap flag on the underlying pool" + }, + "setSwapFee(uint256)": { + "notice": "Set the swap fee on the underlying pool" + }, + "totalSupply()": { + "notice": "Getter for the total supply" + }, + "transfer(address,uint256)": { + "notice": "Transfer the given amount from sender (caller) to recipient" + }, + "transferFrom(address,address,uint256)": { + "notice": "Transfer the given amount from sender to recipient" + }, + "updateWeight(address,uint256)": { + "notice": "Update the weight of an existing token" + }, + "updateWeightsGradually(uint256[],uint256,uint256)": { + "notice": "Update weights in a predetermined way, between startBlock and endBlock, through external calls to pokeWeights" + }, + "whitelistLiquidityProvider(address)": { + "notice": "Add to the whitelist of liquidity providers (if enabled)" + } + }, + "notice": "PCToken is the \"Balancer Smart Pool\" token (transferred upon finalization)", + "version": 1 + } +} \ No newline at end of file diff --git a/abis/balancerV2/Vault.json b/abis/balancerV2/Vault.json new file mode 100644 index 0000000..8a4f2af --- /dev/null +++ b/abis/balancerV2/Vault.json @@ -0,0 +1,1179 @@ +[ + { + "inputs": [ + { + "internalType": "contract IAuthorizer", + "name": "authorizer", + "type": "address" + }, + { + "internalType": "contract IWETH", + "name": "weth", + "type": "address" + }, + { + "internalType": "uint256", + "name": "pauseWindowDuration", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "bufferPeriodDuration", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "contract IAuthorizer", + "name": "newAuthorizer", + "type": "address" + } + ], + "name": "AuthorizerChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "contract IERC20", + "name": "token", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "ExternalBalanceTransfer", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "contract IFlashLoanRecipient", + "name": "recipient", + "type": "address" + }, + { + "indexed": true, + "internalType": "contract IERC20", + "name": "token", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "feeAmount", + "type": "uint256" + } + ], + "name": "FlashLoan", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "indexed": true, + "internalType": "contract IERC20", + "name": "token", + "type": "address" + }, + { + "indexed": false, + "internalType": "int256", + "name": "delta", + "type": "int256" + } + ], + "name": "InternalBalanceChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bool", + "name": "paused", + "type": "bool" + } + ], + "name": "PausedStateChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "poolId", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "liquidityProvider", + "type": "address" + }, + { + "indexed": false, + "internalType": "contract IERC20[]", + "name": "tokens", + "type": "address[]" + }, + { + "indexed": false, + "internalType": "int256[]", + "name": "deltas", + "type": "int256[]" + }, + { + "indexed": false, + "internalType": "uint256[]", + "name": "protocolFeeAmounts", + "type": "uint256[]" + } + ], + "name": "PoolBalanceChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "poolId", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "assetManager", + "type": "address" + }, + { + "indexed": true, + "internalType": "contract IERC20", + "name": "token", + "type": "address" + }, + { + "indexed": false, + "internalType": "int256", + "name": "cashDelta", + "type": "int256" + }, + { + "indexed": false, + "internalType": "int256", + "name": "managedDelta", + "type": "int256" + } + ], + "name": "PoolBalanceManaged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "poolId", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "poolAddress", + "type": "address" + }, + { + "indexed": false, + "internalType": "enum IVault.PoolSpecialization", + "name": "specialization", + "type": "uint8" + } + ], + "name": "PoolRegistered", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "relayer", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "RelayerApprovalChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "poolId", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "contract IERC20", + "name": "tokenIn", + "type": "address" + }, + { + "indexed": true, + "internalType": "contract IERC20", + "name": "tokenOut", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + } + ], + "name": "Swap", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "poolId", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "contract IERC20[]", + "name": "tokens", + "type": "address[]" + } + ], + "name": "TokensDeregistered", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "poolId", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "contract IERC20[]", + "name": "tokens", + "type": "address[]" + }, + { + "indexed": false, + "internalType": "address[]", + "name": "assetManagers", + "type": "address[]" + } + ], + "name": "TokensRegistered", + "type": "event" + }, + { + "inputs": [], + "name": "WETH", + "outputs": [ + { + "internalType": "contract IWETH", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "enum IVault.SwapKind", + "name": "kind", + "type": "uint8" + }, + { + "components": [ + { + "internalType": "bytes32", + "name": "poolId", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "assetInIndex", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "assetOutIndex", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "userData", + "type": "bytes" + } + ], + "internalType": "struct IVault.BatchSwapStep[]", + "name": "swaps", + "type": "tuple[]" + }, + { + "internalType": "contract IAsset[]", + "name": "assets", + "type": "address[]" + }, + { + "components": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "bool", + "name": "fromInternalBalance", + "type": "bool" + }, + { + "internalType": "address payable", + "name": "recipient", + "type": "address" + }, + { + "internalType": "bool", + "name": "toInternalBalance", + "type": "bool" + } + ], + "internalType": "struct IVault.FundManagement", + "name": "funds", + "type": "tuple" + }, + { + "internalType": "int256[]", + "name": "limits", + "type": "int256[]" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "batchSwap", + "outputs": [ + { + "internalType": "int256[]", + "name": "assetDeltas", + "type": "int256[]" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "poolId", + "type": "bytes32" + }, + { + "internalType": "contract IERC20[]", + "name": "tokens", + "type": "address[]" + } + ], + "name": "deregisterTokens", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "poolId", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address payable", + "name": "recipient", + "type": "address" + }, + { + "components": [ + { + "internalType": "contract IAsset[]", + "name": "assets", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "minAmountsOut", + "type": "uint256[]" + }, + { + "internalType": "bytes", + "name": "userData", + "type": "bytes" + }, + { + "internalType": "bool", + "name": "toInternalBalance", + "type": "bool" + } + ], + "internalType": "struct IVault.ExitPoolRequest", + "name": "request", + "type": "tuple" + } + ], + "name": "exitPool", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IFlashLoanRecipient", + "name": "recipient", + "type": "address" + }, + { + "internalType": "contract IERC20[]", + "name": "tokens", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + }, + { + "internalType": "bytes", + "name": "userData", + "type": "bytes" + } + ], + "name": "flashLoan", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "selector", + "type": "bytes4" + } + ], + "name": "getActionId", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getAuthorizer", + "outputs": [ + { + "internalType": "contract IAuthorizer", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getDomainSeparator", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "internalType": "contract IERC20[]", + "name": "tokens", + "type": "address[]" + } + ], + "name": "getInternalBalance", + "outputs": [ + { + "internalType": "uint256[]", + "name": "balances", + "type": "uint256[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + } + ], + "name": "getNextNonce", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getPausedState", + "outputs": [ + { + "internalType": "bool", + "name": "paused", + "type": "bool" + }, + { + "internalType": "uint256", + "name": "pauseWindowEndTime", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "bufferPeriodEndTime", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "poolId", + "type": "bytes32" + } + ], + "name": "getPool", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "enum IVault.PoolSpecialization", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "poolId", + "type": "bytes32" + }, + { + "internalType": "contract IERC20", + "name": "token", + "type": "address" + } + ], + "name": "getPoolTokenInfo", + "outputs": [ + { + "internalType": "uint256", + "name": "cash", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "managed", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "lastChangeBlock", + "type": "uint256" + }, + { + "internalType": "address", + "name": "assetManager", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "poolId", + "type": "bytes32" + } + ], + "name": "getPoolTokens", + "outputs": [ + { + "internalType": "contract IERC20[]", + "name": "tokens", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "balances", + "type": "uint256[]" + }, + { + "internalType": "uint256", + "name": "lastChangeBlock", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getProtocolFeesCollector", + "outputs": [ + { + "internalType": "contract ProtocolFeesCollector", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "internalType": "address", + "name": "relayer", + "type": "address" + } + ], + "name": "hasApprovedRelayer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "poolId", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "components": [ + { + "internalType": "contract IAsset[]", + "name": "assets", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "maxAmountsIn", + "type": "uint256[]" + }, + { + "internalType": "bytes", + "name": "userData", + "type": "bytes" + }, + { + "internalType": "bool", + "name": "fromInternalBalance", + "type": "bool" + } + ], + "internalType": "struct IVault.JoinPoolRequest", + "name": "request", + "type": "tuple" + } + ], + "name": "joinPool", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "enum IVault.PoolBalanceOpKind", + "name": "kind", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "poolId", + "type": "bytes32" + }, + { + "internalType": "contract IERC20", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "internalType": "struct IVault.PoolBalanceOp[]", + "name": "ops", + "type": "tuple[]" + } + ], + "name": "managePoolBalance", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "enum IVault.UserBalanceOpKind", + "name": "kind", + "type": "uint8" + }, + { + "internalType": "contract IAsset", + "name": "asset", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address payable", + "name": "recipient", + "type": "address" + } + ], + "internalType": "struct IVault.UserBalanceOp[]", + "name": "ops", + "type": "tuple[]" + } + ], + "name": "manageUserBalance", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "enum IVault.SwapKind", + "name": "kind", + "type": "uint8" + }, + { + "components": [ + { + "internalType": "bytes32", + "name": "poolId", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "assetInIndex", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "assetOutIndex", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "userData", + "type": "bytes" + } + ], + "internalType": "struct IVault.BatchSwapStep[]", + "name": "swaps", + "type": "tuple[]" + }, + { + "internalType": "contract IAsset[]", + "name": "assets", + "type": "address[]" + }, + { + "components": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "bool", + "name": "fromInternalBalance", + "type": "bool" + }, + { + "internalType": "address payable", + "name": "recipient", + "type": "address" + }, + { + "internalType": "bool", + "name": "toInternalBalance", + "type": "bool" + } + ], + "internalType": "struct IVault.FundManagement", + "name": "funds", + "type": "tuple" + } + ], + "name": "queryBatchSwap", + "outputs": [ + { + "internalType": "int256[]", + "name": "", + "type": "int256[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "enum IVault.PoolSpecialization", + "name": "specialization", + "type": "uint8" + } + ], + "name": "registerPool", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "poolId", + "type": "bytes32" + }, + { + "internalType": "contract IERC20[]", + "name": "tokens", + "type": "address[]" + }, + { + "internalType": "address[]", + "name": "assetManagers", + "type": "address[]" + } + ], + "name": "registerTokens", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IAuthorizer", + "name": "newAuthorizer", + "type": "address" + } + ], + "name": "setAuthorizer", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bool", + "name": "paused", + "type": "bool" + } + ], + "name": "setPaused", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "relayer", + "type": "address" + }, + { + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "setRelayerApproval", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "bytes32", + "name": "poolId", + "type": "bytes32" + }, + { + "internalType": "enum IVault.SwapKind", + "name": "kind", + "type": "uint8" + }, + { + "internalType": "contract IAsset", + "name": "assetIn", + "type": "address" + }, + { + "internalType": "contract IAsset", + "name": "assetOut", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "userData", + "type": "bytes" + } + ], + "internalType": "struct IVault.SingleSwap", + "name": "singleSwap", + "type": "tuple" + }, + { + "components": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "bool", + "name": "fromInternalBalance", + "type": "bool" + }, + { + "internalType": "address payable", + "name": "recipient", + "type": "address" + }, + { + "internalType": "bool", + "name": "toInternalBalance", + "type": "bool" + } + ], + "internalType": "struct IVault.FundManagement", + "name": "funds", + "type": "tuple" + }, + { + "internalType": "uint256", + "name": "limit", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swap", + "outputs": [ + { + "internalType": "uint256", + "name": "amountCalculated", + "type": "uint256" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "stateMutability": "payable", + "type": "receive" + } +] diff --git a/abis/balancerV2/WeightedPool.json b/abis/balancerV2/WeightedPool.json new file mode 100644 index 0000000..95d908d --- /dev/null +++ b/abis/balancerV2/WeightedPool.json @@ -0,0 +1,901 @@ +[ + { + "inputs": [ + { + "internalType": "contract IVault", + "name": "vault", + "type": "address" + }, + { + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "internalType": "string", + "name": "symbol", + "type": "string" + }, + { + "internalType": "contract IERC20[]", + "name": "tokens", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "normalizedWeights", + "type": "uint256[]" + }, + { + "internalType": "uint256", + "name": "swapFeePercentage", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "pauseWindowDuration", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "bufferPeriodDuration", + "type": "uint256" + }, + { + "internalType": "address", + "name": "owner", + "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": false, + "internalType": "bool", + "name": "paused", + "type": "bool" + } + ], + "name": "PausedStateChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "swapFeePercentage", + "type": "uint256" + } + ], + "name": "SwapFeePercentageChanged", + "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": "DOMAIN_SEPARATOR", + "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": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "decreaseApproval", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "selector", + "type": "bytes4" + } + ], + "name": "getActionId", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getAuthorizer", + "outputs": [ + { + "internalType": "contract IAuthorizer", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getInvariant", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getLastInvariant", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getNormalizedWeights", + "outputs": [ + { + "internalType": "uint256[]", + "name": "", + "type": "uint256[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getOwner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getPausedState", + "outputs": [ + { + "internalType": "bool", + "name": "paused", + "type": "bool" + }, + { + "internalType": "uint256", + "name": "pauseWindowEndTime", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "bufferPeriodEndTime", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getPoolId", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getRate", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getSwapFeePercentage", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getVault", + "outputs": [ + { + "internalType": "contract IVault", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "increaseApproval", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "nonces", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "poolId", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256[]", + "name": "balances", + "type": "uint256[]" + }, + { + "internalType": "uint256", + "name": "lastChangeBlock", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "protocolSwapFeePercentage", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "userData", + "type": "bytes" + } + ], + "name": "onExitPool", + "outputs": [ + { + "internalType": "uint256[]", + "name": "", + "type": "uint256[]" + }, + { + "internalType": "uint256[]", + "name": "", + "type": "uint256[]" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "poolId", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256[]", + "name": "balances", + "type": "uint256[]" + }, + { + "internalType": "uint256", + "name": "lastChangeBlock", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "protocolSwapFeePercentage", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "userData", + "type": "bytes" + } + ], + "name": "onJoinPool", + "outputs": [ + { + "internalType": "uint256[]", + "name": "", + "type": "uint256[]" + }, + { + "internalType": "uint256[]", + "name": "", + "type": "uint256[]" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "enum IVault.SwapKind", + "name": "kind", + "type": "uint8" + }, + { + "internalType": "contract IERC20", + "name": "tokenIn", + "type": "address" + }, + { + "internalType": "contract IERC20", + "name": "tokenOut", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "poolId", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "lastChangeBlock", + "type": "uint256" + }, + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "bytes", + "name": "userData", + "type": "bytes" + } + ], + "internalType": "struct IPoolSwapStructs.SwapRequest", + "name": "request", + "type": "tuple" + }, + { + "internalType": "uint256", + "name": "balanceTokenIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "balanceTokenOut", + "type": "uint256" + } + ], + "name": "onSwap", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "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": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "poolId", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256[]", + "name": "balances", + "type": "uint256[]" + }, + { + "internalType": "uint256", + "name": "lastChangeBlock", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "protocolSwapFeePercentage", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "userData", + "type": "bytes" + } + ], + "name": "queryExit", + "outputs": [ + { + "internalType": "uint256", + "name": "bptIn", + "type": "uint256" + }, + { + "internalType": "uint256[]", + "name": "amountsOut", + "type": "uint256[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "poolId", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256[]", + "name": "balances", + "type": "uint256[]" + }, + { + "internalType": "uint256", + "name": "lastChangeBlock", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "protocolSwapFeePercentage", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "userData", + "type": "bytes" + } + ], + "name": "queryJoin", + "outputs": [ + { + "internalType": "uint256", + "name": "bptOut", + "type": "uint256" + }, + { + "internalType": "uint256[]", + "name": "amountsIn", + "type": "uint256[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bool", + "name": "paused", + "type": "bool" + } + ], + "name": "setPaused", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "swapFeePercentage", + "type": "uint256" + } + ], + "name": "setSwapFeePercentage", + "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" + } +] diff --git a/abis/balancerV2/WeightedPoolFactory.json b/abis/balancerV2/WeightedPoolFactory.json new file mode 100644 index 0000000..cb4a4f4 --- /dev/null +++ b/abis/balancerV2/WeightedPoolFactory.json @@ -0,0 +1,120 @@ +[ + { + "inputs": [ + { + "internalType": "contract IVault", + "name": "vault", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "pool", + "type": "address" + } + ], + "name": "PoolCreated", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "internalType": "string", + "name": "symbol", + "type": "string" + }, + { + "internalType": "contract IERC20[]", + "name": "tokens", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "weights", + "type": "uint256[]" + }, + { + "internalType": "uint256", + "name": "swapFeePercentage", + "type": "uint256" + }, + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "create", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "getPauseConfiguration", + "outputs": [ + { + "internalType": "uint256", + "name": "pauseWindowDuration", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "bufferPeriodDuration", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getVault", + "outputs": [ + { + "internalType": "contract IVault", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "pool", + "type": "address" + } + ], + "name": "isPoolFromFactory", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + } +] diff --git a/packages/subgraph-gnosis-chain/abis/gno.json b/abis/gno.json similarity index 100% rename from packages/subgraph-gnosis-chain/abis/gno.json rename to abis/gno.json diff --git a/packages/subgraph-gnosis-chain/abis/lgno.json b/abis/lgno.json similarity index 100% rename from packages/subgraph-gnosis-chain/abis/lgno.json rename to abis/lgno.json diff --git a/abis/sbcWrapper.json b/abis/sbcWrapper.json new file mode 100644 index 0000000..a929533 --- /dev/null +++ b/abis/sbcWrapper.json @@ -0,0 +1,234 @@ +[ + { + "type": "constructor", + "stateMutability": "nonpayable", + "inputs": [ + { + "type": "address", + "name": "_sbcToken", + "internalType": "contract SBCToken" + }, + { + "type": "address", + "name": "_depositContract", + "internalType": "contract SBCDepositContract" + } + ] + }, + { + "type": "event", + "name": "Paused", + "inputs": [ + { + "type": "address", + "name": "account", + "internalType": "address", + "indexed": false + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "Swap", + "inputs": [ + { + "type": "address", + "name": "token", + "internalType": "address", + "indexed": true + }, + { + "type": "address", + "name": "user", + "internalType": "address", + "indexed": true + }, + { + "type": "uint256", + "name": "amount", + "internalType": "uint256", + "indexed": false + }, + { + "type": "uint256", + "name": "received", + "internalType": "uint256", + "indexed": false + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "SwapRateUpdated", + "inputs": [ + { + "type": "address", + "name": "token", + "internalType": "address", + "indexed": true + }, + { + "type": "uint256", + "name": "rate", + "internalType": "uint256", + "indexed": false + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "TokenSwapEnabled", + "inputs": [ + { + "type": "address", + "name": "token", + "internalType": "address", + "indexed": true + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "TokenSwapPaused", + "inputs": [ + { + "type": "address", + "name": "token", + "internalType": "address", + "indexed": true + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "Unpaused", + "inputs": [ + { + "type": "address", + "name": "account", + "internalType": "address", + "indexed": false + } + ], + "anonymous": false + }, + { + "type": "function", + "stateMutability": "nonpayable", + "outputs": [], + "name": "claimTokens", + "inputs": [ + { "type": "address", "name": "_token", "internalType": "address" }, + { "type": "address", "name": "_to", "internalType": "address" } + ] + }, + { + "type": "function", + "stateMutability": "nonpayable", + "outputs": [], + "name": "enableToken", + "inputs": [ + { "type": "address", "name": "_token", "internalType": "address" }, + { "type": "uint256", "name": "_rate", "internalType": "uint256" } + ] + }, + { + "type": "function", + "stateMutability": "nonpayable", + "outputs": [{ "type": "bool", "name": "", "internalType": "bool" }], + "name": "onTokenTransfer", + "inputs": [ + { "type": "address", "name": "from", "internalType": "address" }, + { "type": "uint256", "name": "value", "internalType": "uint256" }, + { "type": "bytes", "name": "data", "internalType": "bytes" } + ] + }, + { + "type": "function", + "stateMutability": "nonpayable", + "outputs": [], + "name": "pause", + "inputs": [] + }, + { + "type": "function", + "stateMutability": "nonpayable", + "outputs": [], + "name": "pauseToken", + "inputs": [ + { "type": "address", "name": "_token", "internalType": "address" } + ] + }, + { + "type": "function", + "stateMutability": "view", + "outputs": [{ "type": "bool", "name": "", "internalType": "bool" }], + "name": "paused", + "inputs": [] + }, + { + "type": "function", + "stateMutability": "view", + "outputs": [ + { + "type": "address", + "name": "", + "internalType": "contract SBCDepositContract" + } + ], + "name": "sbcDepositContract", + "inputs": [] + }, + { + "type": "function", + "stateMutability": "view", + "outputs": [ + { "type": "address", "name": "", "internalType": "contract SBCToken" } + ], + "name": "sbcToken", + "inputs": [] + }, + { + "type": "function", + "stateMutability": "nonpayable", + "outputs": [], + "name": "swap", + "inputs": [ + { "type": "address", "name": "_token", "internalType": "address" }, + { "type": "uint256", "name": "_amount", "internalType": "uint256" }, + { "type": "bytes", "name": "_permitData", "internalType": "bytes" } + ] + }, + { + "type": "function", + "stateMutability": "view", + "outputs": [{ "type": "uint256", "name": "", "internalType": "uint256" }], + "name": "tokenRate", + "inputs": [{ "type": "address", "name": "", "internalType": "address" }] + }, + { + "type": "function", + "stateMutability": "view", + "outputs": [ + { + "type": "uint8", + "name": "", + "internalType": "enum SBCWrapper.TokenStatus" + } + ], + "name": "tokenStatus", + "inputs": [{ "type": "address", "name": "", "internalType": "address" }] + }, + { + "type": "function", + "stateMutability": "nonpayable", + "outputs": [], + "name": "unpause", + "inputs": [] + } +] diff --git a/packages/subgraph-base/abis/factory.json b/abis/uniswapV2/factory.json similarity index 100% rename from packages/subgraph-base/abis/factory.json rename to abis/uniswapV2/factory.json diff --git a/packages/subgraph-base/abis/pair.json b/abis/uniswapV2/pair.json similarity index 100% rename from packages/subgraph-base/abis/pair.json rename to abis/uniswapV2/pair.json diff --git a/packages/subgraph-mainnet/abis/NonfungiblePositionManager.json b/abis/uniswapV3/NonfungiblePositionManager.json similarity index 100% rename from packages/subgraph-mainnet/abis/NonfungiblePositionManager.json rename to abis/uniswapV3/NonfungiblePositionManager.json diff --git a/packages/subgraph-mainnet/abis/factory.json b/abis/uniswapV3/factory.json similarity index 100% rename from packages/subgraph-mainnet/abis/factory.json rename to abis/uniswapV3/factory.json diff --git a/packages/subgraph-mainnet/abis/pool.json b/abis/uniswapV3/pool.json similarity index 100% rename from packages/subgraph-mainnet/abis/pool.json rename to abis/uniswapV3/pool.json diff --git a/package.json b/package.json new file mode 100644 index 0000000..733f5d5 --- /dev/null +++ b/package.json @@ -0,0 +1,22 @@ +{ + "name": "subgraph-voting-power", + "license": "UNLICENSED", + "author": "Cristóvão Honorato", + "scripts": { + "clean": "rm -rf generated && rm -rf generated-gc && rm -rf build && rm -rf build-gc", + "codegen": "graph codegen && graph codegen -o generated-gc subgraph-gnosis-chain.yaml", + "build": "graph build", + "build:gc": "graph build -o build-gc subgraph-gnosis-chain.yaml", + "doall": "yarn clean && yarn codegen && yarn build && yarn build:gc", + "deploy": "graph deploy --node https://api.thegraph.com/deploy/ jfschwarz/gno-voting-power-eth", + "deploy:gc": "graph deploy -o build-gc --node https://api.thegraph.com/deploy/ jfschwarz/gno-voting-power-gc subgraph-gnosis-chain.yaml", + "test": "graph test" + }, + "dependencies": { + "@graphprotocol/graph-cli": "0.29.0", + "@graphprotocol/graph-ts": "0.26.0" + }, + "devDependencies": { + "matchstick-as": "^0.4.1" + } +} diff --git a/packages/subgraph-base/package.json b/packages/subgraph-base/package.json deleted file mode 100644 index a7d118d..0000000 --- a/packages/subgraph-base/package.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "name": "subgraph-base", - "license": "UNLICENSED", - "author": "Cristóvão Honorato", - "scripts": { - "doall": "rm -rf generated && rm -rf build && graph codegen && graph build", - "codegen": "graph codegen", - "test": "graph test" - }, - "dependencies": { - "@graphprotocol/graph-cli": "0.28.0", - "@graphprotocol/graph-ts": "0.26.0" - }, - "devDependencies": { - "matchstick-as": "^0.4.0" - } -} diff --git a/packages/subgraph-base/schema.graphql b/packages/subgraph-base/schema.graphql deleted file mode 100644 index d774f5b..0000000 --- a/packages/subgraph-base/schema.graphql +++ /dev/null @@ -1,27 +0,0 @@ -type User @entity { - id: ID! # address - voteWeight: BigInt! - gno: BigInt! - mgno: BigInt! - lgno: BigInt! - deposit: BigInt! - positions: [AMMPosition!]! @derivedFrom(field: "user") -} - -type AMMPair @entity { - id: ID! # address - totalSupply: BigInt! - gnoReserves: BigInt! - previousRatio: BigInt! - ratio: BigInt! - positions: [AMMPosition!]! @derivedFrom(field: "pair") -} - -type AMMPosition @entity { - id: ID! # pair.id.concat("-").concat(user.id) - user: User! - pair: AMMPair! - balance: BigInt! - lowerBound: BigInt! - upperBound: BigInt! -} diff --git a/packages/subgraph-base/src/factory.ts b/packages/subgraph-base/src/factory.ts deleted file mode 100644 index 345e7b8..0000000 --- a/packages/subgraph-base/src/factory.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { Address, log } from "@graphprotocol/graph-ts"; -import { PairCreated } from "../generated/Factory/Factory"; -import { Pair } from "../generated/templates"; -import { GNO_ADDRESS, loadOrCreateAMMPair } from "./helpers"; - -export function handleNewPair(event: PairCreated): void { - const isGnoTradingPair = - event.params.token0.equals(GNO_ADDRESS) || - event.params.token1.equals(GNO_ADDRESS); - - if (isGnoTradingPair) { - loadOrCreateAMMPair(event.params.pair); - } -} diff --git a/packages/subgraph-base/src/helpers.ts b/packages/subgraph-base/src/helpers.ts deleted file mode 100644 index f07e130..0000000 --- a/packages/subgraph-base/src/helpers.ts +++ /dev/null @@ -1,179 +0,0 @@ -/* eslint-disable prefer-const */ -import { - log, - BigInt, - BigDecimal, - Address, - store, - Bytes, - dataSource, -} from "@graphprotocol/graph-ts"; -import { AMMPair, AMMPosition, User } from "../generated/schema"; -import { ERC20 } from "../generated/templates/Pair/ERC20"; -import { Pair } from "../generated/templates"; - -export const GNO_ADDRESS = Address.fromString( - dataSource.network() === "mainnet" - ? "0x6810e776880C02933D47DB1b9fc05908e5386b96" - : "0x9C58BAcC331c9aa871AFD802DB6379a98e80CEdb" -); - -export const gno = ERC20.bind(GNO_ADDRESS); - -export const ADDRESS_ZERO = Address.fromHexString( - "0x0000000000000000000000000000000000000000" -); - -export const ONE_GNO = BigInt.fromString("1000000000000000000"); - -export let ZERO_BI = BigInt.fromI32(0); -export let ONE_BI = BigInt.fromI32(1); -export let ZERO_BD = BigDecimal.fromString("0"); -export let ONE_BD = BigDecimal.fromString("1"); -export let BI_18 = BigInt.fromI32(18); - -// export let factoryContract = FactoryContract.bind( -// Address.fromString(FACTORY_ADDRESS) -// ); - -export function exponentToBigDecimal(decimals: BigInt): BigDecimal { - let bd = BigDecimal.fromString("1"); - for (let i = ZERO_BI; i.lt(decimals as BigInt); i = i.plus(ONE_BI)) { - bd = bd.times(BigDecimal.fromString("10")); - } - return bd; -} - -export function bigDecimalExp18(): BigDecimal { - return BigDecimal.fromString("1000000000000000000"); -} - -export function convertTokenToDecimal( - tokenAmount: BigInt, - exchangeDecimals: BigInt -): BigDecimal { - if (exchangeDecimals == ZERO_BI) { - return tokenAmount.toBigDecimal(); - } - return tokenAmount.toBigDecimal().div(exponentToBigDecimal(exchangeDecimals)); -} - -export function equalToZero(value: BigDecimal): boolean { - const formattedVal = parseFloat(value.toString()); - const zero = parseFloat(ZERO_BD.toString()); - if (zero == formattedVal) { - return true; - } - return false; -} - -export function isNullEthValue(value: string): boolean { - return ( - value == - "0x0000000000000000000000000000000000000000000000000000000000000001" - ); -} - -export function loadOrCreateUser(address: Address): User { - const id = address.toHexString(); - let entry = User.load(id); - if (entry == null) { - entry = new User(id); - entry.voteWeight = BigInt.fromI32(0); - entry.gno = BigInt.fromI32(0); - entry.mgno = BigInt.fromI32(0); - entry.lgno = BigInt.fromI32(0); - entry.deposit = BigInt.fromI32(0); - if (id != ADDRESS_ZERO.toHexString() && !AMMPair.load(id)) { - entry.save(); - } - } - return entry; -} - -export function removeOrSaveUser(user: User): void { - if (user) { - if (user && user.voteWeight == BigInt.fromI32(0)) { - store.remove("User", user.id); - } else { - user.save(); - } - } -} - -const BIGINT_MAX = BigInt.fromUnsignedBytes( - Bytes.fromHexString("ff".repeat(32)) // 256 bits = 32 * ff byte -); - -export function loadOrCreateAMMPosition( - pair: Address, - user: Address, - lowerBound: BigInt = BigInt.zero(), - upperBound: BigInt = BIGINT_MAX -): AMMPosition { - const id = pair - .toHexString() - .concat("-") - .concat(user.toHexString()) - .concat("-") - .concat(lowerBound.toHexString()) - .concat("-") - .concat(upperBound.toHexString()); - let entry = AMMPosition.load(id); - if (entry === null) { - entry = new AMMPosition(id); - entry.pair = pair.toHexString(); - entry.user = user.toHexString(); - entry.balance = ZERO_BI; - // entry; - entry.save(); - } - - return entry; -} - -export function loadOrCreateAMMPair(address: Address): AMMPair { - const id = address.toHexString(); - let entry = AMMPair.load(id); - if (entry == null) { - Pair.create(address); - log.info("pair created", []); - entry = new AMMPair(id); - entry.totalSupply = BigInt.fromI32(0); - entry.gnoReserves = gno.balanceOf(Address.fromString(id)); - entry.previousRatio = BigInt.fromI32(0); - entry.ratio = BigInt.fromI32(0); - entry.save(); - log.info("pair saved: {}", [entry.id]); - } - return entry; -} - -export function getGnoInPosition(value: BigInt, pair: AMMPair): BigInt { - // pair.balanceOf(user) / pair.totalSupply() * gno.balanceOf(pair) - // or - // value * ratio * gno.balanceOf(pair) - return value - .times(pair.ratio) - .div(gno.balanceOf(Address.fromString(pair.id))); -} - -export function updateVoteWeight(user: User, position: AMMPosition): void { - const pair = loadOrCreateAMMPair(Address.fromString(position.pair)); - // subtract vote weight from previous ratio - let amountToSubtract = pair.previousRatio.times(position.balance); - user.voteWeight = user.voteWeight.minus(amountToSubtract); - // add vote weight from current ratio - user.voteWeight = user.voteWeight.plus(pair.ratio.times(position.balance)); - - removeOrSaveUser(user); -} - -// export function createUser(address: Address): void { -// let user = User.load(address.toHexString()); -// if (user === null) { -// user = new User(address.toHexString()); -// user.usdSwapped = ZERO_BD; -// user.save(); -// } -// } diff --git a/packages/subgraph-base/src/pair.ts b/packages/subgraph-base/src/pair.ts deleted file mode 100644 index 9ce535d..0000000 --- a/packages/subgraph-base/src/pair.ts +++ /dev/null @@ -1,156 +0,0 @@ -import { BigInt, log, store, Address, Value } from "@graphprotocol/graph-ts"; -import { Transfer, Sync } from "../generated/templates/Pair/Pair"; - -import { ERC20 } from "../generated/templates/Pair/ERC20"; -import { - ADDRESS_ZERO, - loadOrCreateAMMPair, - loadOrCreateAMMPosition, - loadOrCreateUser, - gno, - removeOrSaveUser, - updateVoteWeight, -} from "./helpers"; -import { AMMPosition, User } from "../generated/schema"; - -export function handleTransfer(event: Transfer): void { - const pair = loadOrCreateAMMPair(event.address); - log.info("pair loaded: {}", [pair.id]); - - // ignore initial transfers for first adds - if ( - event.params.to.toHexString() == ADDRESS_ZERO.toHexString() && - event.params.value.equals(BigInt.fromI32(1000)) - ) { - return; - } - log.info("past initial transfer event", []); - - // user stats - const from = event.params.from; - const to = event.params.to; - - const userTo = loadOrCreateUser(to); - const userFrom = loadOrCreateUser(from); - - // liquidity token amount being transferred - let value = event.params.value; - log.info("\nFrom: {}\nTo: {}\nValue: {}", [ - userFrom.id, - userTo.id, - value.toString(), - ]); - - // mint - if ( - from.toHexString() == ADDRESS_ZERO.toHexString() && - value.gt(BigInt.fromI32(0)) - ) { - log.info("made it past the mint check", []); - // update total supply - pair.totalSupply = pair.totalSupply.plus(value); - pair.gnoReserves = gno.balanceOf(Address.fromString(pair.id)); - if (pair.ratio == BigInt.fromI32(0)) { - pair.ratio = pair.gnoReserves.div(pair.totalSupply); - pair.previousRatio = pair.ratio; - log.info("set the ratio", []); - } - pair.save(); - } - - // burn - if ( - to.toHexString() == ADDRESS_ZERO.toHexString() && - from.toHexString() == pair.id - ) { - log.info("made it past the burn check", []); - pair.totalSupply = pair.totalSupply.minus(value); - pair.gnoReserves = gno.balanceOf(Address.fromString(pair.id)); - pair.save(); - log.info("successfully burned", []); - } - - // transfer from - if ( - from.toHexString() != ADDRESS_ZERO.toHexString() && - from.toHexString() != pair.id - ) { - log.info("made it past the from check", []); - let position = loadOrCreateAMMPosition(event.address, from); - log.info("loaded position: {}", [position.id]); - const voteWeightToSubtract = pair.ratio.times(value); - userFrom.voteWeight = userFrom.voteWeight.minus(voteWeightToSubtract); - log.info("subtracted {} from vote weight, for a new total of {}", [ - voteWeightToSubtract.toString(), - userFrom.voteWeight.toString(), - ]); - - pair.save(); - - if (position.balance.minus(value) == BigInt.fromI32(0)) { - log.info("made it past the zero balance check", []); - store.remove("AMMPosition", position.id); - removeOrSaveUser(userFrom); - pair.set("positions", Value.fromArray([])); - pair.save(); - } else { - position.balance = position.balance.minus(value); - removeOrSaveUser(userFrom); - position.save(); - } - } - - // transfer to - if ( - event.params.to.toHexString() != ADDRESS_ZERO.toHexString() && - to.toHexString() != pair.id - ) { - log.info("Made it into the to check", []); - // increase position balance - const position = loadOrCreateAMMPosition(event.address, to); - position.balance = position.balance.plus(value); - log.info("position balance: {}", [position.balance.toString()]); - // increase vote weight - userTo.voteWeight = userTo.voteWeight.plus(pair.ratio.times(value)); - removeOrSaveUser(userTo); - position.save(); - pair.save(); - position.save(); - log.info("managed to save everything", []); - } -} - -export function handleSync(event: Sync): void { - log.info("trying to do Sync", []); - const pair = loadOrCreateAMMPair(event.address); - log.info("loaded pair: {}", [pair.id]); - pair.gnoReserves = gno.balanceOf(event.address); - log.info("gno reserves: {}", [pair.gnoReserves.toString()]); - // gno.balanceOf(pair) / pair.totalSupply() - pair.ratio = pair.gnoReserves.div(ERC20.bind(event.address).totalSupply()); - log.info("pair.ratio: {}", [pair.ratio.toString()]); - const positions = pair.positions; - log.info("pair.positions: {}", [pair.positions.toString()]); - pair.previousRatio = pair.ratio; - log.info("pair.previousRatio: {}", [pair.previousRatio.toString()]); - pair.save(); - // set set previous ratio to current ratio - if (positions) { - log.info("inside the Sync if statement", []); - for (let index = 0; index < positions.length; index++) { - log.info("start for loop", []); - const position = AMMPosition.load(positions[index]); - log.info("load positions", [positions.toString()]); - if (position) { - log.info("Position: {}\nIndex: {}", [position.id, index.toString()]); - log.info("inside the position check in Sync", []); - const user = loadOrCreateUser(Address.fromString(position.user)); - // const position = new AMMPosition(pair.id.concat("-").concat(user.id)); - updateVoteWeight(user, position); - log.info("vote weight updated", []); - position.save(); - log.info("successfully updated?", []); - } - } - } -} diff --git a/packages/subgraph-base/subgraph.yaml b/packages/subgraph-base/subgraph.yaml deleted file mode 100644 index 3919411..0000000 --- a/packages/subgraph-base/subgraph.yaml +++ /dev/null @@ -1,89 +0,0 @@ -specVersion: 0.0.4 -schema: - file: ./schema.graphql -dataSources: - - kind: ethereum - name: ds-gno - network: mainnet - source: - address: "0x0000000000000000000000000000000000000000" - abi: ERC20 - startBlock: 0 - mapping: - kind: ethereum/events - apiVersion: 0.0.6 - language: wasm/assemblyscript - entities: - - User - abis: - - name: ERC20 - file: ./abis/ERC20.json - eventHandlers: - - event: Transfer(indexed address,indexed address,uint256) - handler: handleTransfer - file: ./src/gno.ts - - kind: ethereum - name: ds-lgno - network: mainnet - source: - address: "0x0000000000000000000000000000000000000000" - abi: ERC20 - startBlock: 0 - mapping: - kind: ethereum/events - apiVersion: 0.0.6 - language: wasm/assemblyscript - entities: - - User - abis: - - name: ERC20 - file: ./abis/ERC20.json - eventHandlers: - - event: Transfer(indexed address,indexed address,uint256) - handler: handleTransfer - file: ./src/lgno.ts - - kind: ethereum/contract - name: Factory - network: mainnet - source: - address: "0x0000000000000000000000000000000000000000" - abi: Factory - startBlock: 0 - mapping: - kind: ethereum/events - apiVersion: 0.0.6 - language: wasm/assemblyscript - file: ./src/factory.ts - entities: - - User - abis: - - name: Factory - file: ./abis/factory.json - - name: ERC20 - file: ./abis/ERC20.json - eventHandlers: - - event: PairCreated(indexed address,indexed address,address,uint256) - handler: handleNewPair -templates: - - kind: ethereum/contract - name: Pair - network: mainnet - source: - abi: Pair - mapping: - kind: ethereum/events - apiVersion: 0.0.6 - language: wasm/assemblyscript - file: ./src/pair.ts - entities: - - AMMPair - abis: - - name: Pair - file: ./abis/pair.json - - name: ERC20 - file: ./abis/ERC20.json - eventHandlers: - - event: Transfer(indexed address,indexed address,uint256) - handler: handleTransfer - - event: Sync(uint112,uint112) - handler: handleSync diff --git a/packages/subgraph-base/tests/factory.test.ts b/packages/subgraph-base/tests/factory.test.ts deleted file mode 100644 index 1955cd2..0000000 --- a/packages/subgraph-base/tests/factory.test.ts +++ /dev/null @@ -1,106 +0,0 @@ -import { - createMockedFunction, - clearStore, - test, - assert, -} from "matchstick-as/assembly/index"; -import { ethereum } from "@graphprotocol/graph-ts"; -import { - GNO_ADDRESS, - USER1_ADDRESS, - value, - PAIR_ADDRESS, - value2x, -} from "./helpers"; -import { handleNewPair } from "../src/factory"; -import { createPairCreatedEvent } from "./helpers"; - -// mock pair.totalSupply() -createMockedFunction(PAIR_ADDRESS, "totalSupply", "totalSupply():(uint256)") - .withArgs([]) - .returns([ethereum.Value.fromUnsignedBigInt(value)]); - -// mock gno.balanceOf(pair.address) -createMockedFunction(GNO_ADDRESS, "balanceOf", "balanceOf(address):(uint256)") - .withArgs([ethereum.Value.fromAddress(PAIR_ADDRESS)]) - .returns([ethereum.Value.fromUnsignedBigInt(value2x)]); - -test("Factory spawns pair", () => { - clearStore(); - let otherToken = USER1_ADDRESS; - let pairCreatedEvent = createPairCreatedEvent( - GNO_ADDRESS, - otherToken, - PAIR_ADDRESS, - value - ); - handleNewPair(pairCreatedEvent); - assert.fieldEquals( - "AMMPair", - PAIR_ADDRESS.toHexString(), - "id", - PAIR_ADDRESS.toHexString() - ); -}); - -test("New pair has correct totalSupply", () => { - clearStore(); - let otherToken = USER1_ADDRESS; - let pairCreatedEvent = createPairCreatedEvent( - GNO_ADDRESS, - otherToken, - PAIR_ADDRESS, - value - ); - handleNewPair(pairCreatedEvent); - assert.fieldEquals("AMMPair", PAIR_ADDRESS.toHexString(), "totalSupply", "0"); -}); - -test("New pair has correct gnoReserves", () => { - clearStore(); - let otherToken = USER1_ADDRESS; - let pairCreatedEvent = createPairCreatedEvent( - GNO_ADDRESS, - otherToken, - PAIR_ADDRESS, - value - ); - handleNewPair(pairCreatedEvent); - assert.fieldEquals( - "AMMPair", - PAIR_ADDRESS.toHexString(), - "gnoReserves", - value2x.toString() - ); -}); - -test("New pair has correct previousRatio", () => { - clearStore(); - let otherToken = USER1_ADDRESS; - let pairCreatedEvent = createPairCreatedEvent( - GNO_ADDRESS, - otherToken, - PAIR_ADDRESS, - value - ); - handleNewPair(pairCreatedEvent); - assert.fieldEquals( - "AMMPair", - PAIR_ADDRESS.toHexString(), - "previousRatio", - "0" - ); -}); - -test("New pair has correct current ratio", () => { - clearStore(); - let otherToken = USER1_ADDRESS; - let pairCreatedEvent = createPairCreatedEvent( - GNO_ADDRESS, - otherToken, - PAIR_ADDRESS, - value - ); - handleNewPair(pairCreatedEvent); - assert.fieldEquals("AMMPair", PAIR_ADDRESS.toHexString(), "ratio", "0"); -}); diff --git a/packages/subgraph-base/tests/pair.test.ts b/packages/subgraph-base/tests/pair.test.ts deleted file mode 100644 index 7be34bf..0000000 --- a/packages/subgraph-base/tests/pair.test.ts +++ /dev/null @@ -1,454 +0,0 @@ -import { - createMockedFunction, - clearStore, - test, - assert, - logStore, -} from "matchstick-as/assembly/index"; -import { Address, BigInt, Bytes, ethereum } from "@graphprotocol/graph-ts"; -import { User, AMMPair, AMMPosition } from "../generated/schema"; -import { log, newMockEvent } from "matchstick-as"; -import { - ADDRESS_ZERO, - GNO_ADDRESS, - USER1_ADDRESS, - USER2_ADDRESS, - PAIR_ADDRESS, - value, - value2x, - data, - OTHERTOKEN_ADDRESS, -} from "./helpers"; -import { loadOrCreateAMMPosition, loadOrCreateAMMPair } from "../src/helpers"; -import { handleNewPair } from "../src/factory"; -import { createPairCreatedEvent } from "./helpers"; -// import { ERC20, Transfer } from "../generated/templates/Pair/ERC20"; -import { Pair, Transfer, Sync } from "../generated/templates/Pair/Pair"; -import { handleSync, handleTransfer } from "../src/pair"; - -let mintEvent = createTransferEvent(ADDRESS_ZERO, USER1_ADDRESS, value, data); -let PreBurnEvent = createTransferEvent( - USER1_ADDRESS, - PAIR_ADDRESS, - value, - data -); -let burnEvent = createTransferEvent(PAIR_ADDRESS, ADDRESS_ZERO, value, data); -let transferEvent = createTransferEvent( - USER1_ADDRESS, - USER2_ADDRESS, - value, - data -); -let smallTransferEvent = createTransferEvent( - USER1_ADDRESS, - USER2_ADDRESS, - value.div(BigInt.fromI32(2)), - data -); - -// mock pair.totalSupply() -createMockedFunction(PAIR_ADDRESS, "totalSupply", "totalSupply():(uint256)") - .withArgs([]) - .returns([ethereum.Value.fromI32(value.toI32())]); - -// mock gno.balanceOf(pair.address) -createMockedFunction(GNO_ADDRESS, "balanceOf", "balanceOf(address):(uint256)") - .withArgs([ethereum.Value.fromAddress(PAIR_ADDRESS)]) - .returns([ethereum.Value.fromUnsignedBigInt(value2x)]); - -function createPair( - token0: Address, - token1: Address, - pair: Address, - value: BigInt -): AMMPair { - let pairCreatedEvent = createPairCreatedEvent(token0, token1, pair, value); - handleNewPair(pairCreatedEvent); - assert.fieldEquals("AMMPair", pair.toHexString(), "id", pair.toHexString()); - const newPair: AMMPair = new AMMPair(pair.toHexString()); - return newPair; -} - -function createTransferEvent( - from: Address, - to: Address, - value: BigInt, - data: string -): Transfer { - let mockEvent = newMockEvent(); - - mockEvent.parameters = new Array(); - - mockEvent.parameters.push( - new ethereum.EventParam("from", ethereum.Value.fromAddress(from)) - ); - mockEvent.parameters.push( - new ethereum.EventParam("to", ethereum.Value.fromAddress(to)) - ); - mockEvent.parameters.push( - new ethereum.EventParam("value", ethereum.Value.fromSignedBigInt(value)) - ); - mockEvent.parameters.push( - new ethereum.EventParam("data", ethereum.Value.fromString(data)) - ); - - let newTransferEvent = new Transfer( - PAIR_ADDRESS, - mockEvent.logIndex, - mockEvent.transactionLogIndex, - mockEvent.logType, - mockEvent.block, - mockEvent.transaction, - mockEvent.parameters - ); - - return newTransferEvent; -} - -function createSyncEvent(reserve0: BigInt, reserve1: BigInt): Sync { - let mockEvent = newMockEvent(); - - mockEvent.parameters = new Array(); - - mockEvent.parameters.push( - new ethereum.EventParam("reserve0", ethereum.Value.fromSignedBigInt(value)) - ); - - mockEvent.parameters.push( - new ethereum.EventParam("reserve0", ethereum.Value.fromSignedBigInt(value)) - ); - - let newSyncEvent = new Sync( - PAIR_ADDRESS, - mockEvent.logIndex, - mockEvent.transactionLogIndex, - mockEvent.logType, - mockEvent.block, - mockEvent.transaction, - mockEvent.parameters - ); - - return newSyncEvent; -} - -const lowerBound: BigInt = BigInt.zero(); -const BIGINT_MAX = BigInt.fromUnsignedBytes( - Bytes.fromHexString("ff".repeat(32)) // 256 bits = 32 * ff byte -); -const upperBound: BigInt = BIGINT_MAX; - -function getPositionID(pair: Address, user: Address): string { - return pair - .toHexString() - .concat("-") - .concat(user.toHexString()) - .concat("-") - .concat(lowerBound.toHexString()) - .concat("-") - .concat(upperBound.toHexString()); -} - -// TESTS - -test("Creates position on mint", () => { - clearStore(); - // mint value to user 1 - handleTransfer(mintEvent); - assert.fieldEquals( - "AMMPosition", - getPositionID(PAIR_ADDRESS, USER1_ADDRESS), - "balance", - value.toString() - ); -}); - -test("Creates Position on mint and transfer", () => { - clearStore(); - createPair(GNO_ADDRESS, OTHERTOKEN_ADDRESS, PAIR_ADDRESS, value); - handleTransfer(mintEvent); - assert.fieldEquals( - "AMMPosition", - getPositionID(PAIR_ADDRESS, USER1_ADDRESS), - "id", - getPositionID(PAIR_ADDRESS, USER1_ADDRESS) - ); - handleTransfer(smallTransferEvent); - assert.fieldEquals( - "AMMPosition", - getPositionID(PAIR_ADDRESS, USER2_ADDRESS), - "id", - getPositionID(PAIR_ADDRESS, USER2_ADDRESS) - ); -}); - -test("Adds Position to pair.positions and user.positions on mint and transfer", () => { - clearStore(); - createPair(GNO_ADDRESS, OTHERTOKEN_ADDRESS, PAIR_ADDRESS, value); - handleTransfer(mintEvent); - assert.fieldEquals( - "AMMPair", - PAIR_ADDRESS.toHexString(), - "positions", - "[" + getPositionID(PAIR_ADDRESS, USER1_ADDRESS) + "]" - ); - assert.fieldEquals( - "User", - USER1_ADDRESS.toHexString(), - "positions", - "[" + getPositionID(PAIR_ADDRESS, USER1_ADDRESS) + "]" - ); - handleTransfer(smallTransferEvent); - assert.fieldEquals( - "AMMPair", - PAIR_ADDRESS.toHexString(), - "positions", - "[" + - getPositionID(PAIR_ADDRESS, USER1_ADDRESS) + - ", " + - getPositionID(PAIR_ADDRESS, USER2_ADDRESS) + - "]" - ); - assert.fieldEquals( - "User", - USER2_ADDRESS.toHexString(), - "positions", - "[" + getPositionID(PAIR_ADDRESS, USER2_ADDRESS) + "]" - ); -}); - -test("Removes Position from store if position balance is 0", () => { - clearStore(); - createPair(GNO_ADDRESS, OTHERTOKEN_ADDRESS, PAIR_ADDRESS, value); - handleTransfer(mintEvent); - assert.fieldEquals( - "AMMPosition", - getPositionID(PAIR_ADDRESS, USER1_ADDRESS), - "id", - getPositionID(PAIR_ADDRESS, USER1_ADDRESS) - ); - handleTransfer(transferEvent); - assert.notInStore("AMMPosition", getPositionID(PAIR_ADDRESS, USER1_ADDRESS)); -}); - -test("Removes Position from positions if balance is 0", () => { - clearStore(); - createPair(GNO_ADDRESS, OTHERTOKEN_ADDRESS, PAIR_ADDRESS, value); - handleTransfer(mintEvent); - assert.fieldEquals( - "AMMPosition", - getPositionID(PAIR_ADDRESS, USER1_ADDRESS), - "id", - getPositionID(PAIR_ADDRESS, USER1_ADDRESS) - ); - handleTransfer(PreBurnEvent); - handleTransfer(burnEvent); - assert.notInStore("AMMPosition", getPositionID(PAIR_ADDRESS, USER1_ADDRESS)); - assert.notInStore("User", USER1_ADDRESS.toHexString()); - assert.fieldEquals("AMMPair", PAIR_ADDRESS.toHexString(), "positions", "[]"); - handleTransfer(mintEvent); - assert.fieldEquals( - "AMMPair", - PAIR_ADDRESS.toHexString(), - "positions", - "[" + getPositionID(PAIR_ADDRESS, USER1_ADDRESS) + "]" - ); -}); - -test("Updates position balance for recipient on mint", () => { - clearStore(); - createPair(GNO_ADDRESS, OTHERTOKEN_ADDRESS, PAIR_ADDRESS, value); - // mint value to user 1 - handleTransfer(mintEvent); - assert.fieldEquals( - "AMMPosition", - getPositionID(PAIR_ADDRESS, USER1_ADDRESS), - "balance", - value.toString() - ); -}); - -test("Updates vote weight for sender and recipient on transfer", () => { - clearStore(); - createPair(GNO_ADDRESS, OTHERTOKEN_ADDRESS, PAIR_ADDRESS, value); - - // mint value to user 1 - handleTransfer(mintEvent); - - // transfer value from USER1 to USER2 - handleTransfer(smallTransferEvent); - - assert.fieldEquals( - "AMMPosition", - getPositionID(PAIR_ADDRESS, USER1_ADDRESS), - "balance", - value.div(BigInt.fromI32(2)).toString() - ); - assert.fieldEquals( - "AMMPosition", - getPositionID(PAIR_ADDRESS, USER2_ADDRESS), - "balance", - value.div(BigInt.fromI32(2)).toString() - ); -}); - -test("Updates vote weight for recipient on mint", () => { - clearStore(); - createPair(GNO_ADDRESS, OTHERTOKEN_ADDRESS, PAIR_ADDRESS, value); - - // mint value to user 1 - handleTransfer(mintEvent); - let pair = loadOrCreateAMMPair(PAIR_ADDRESS); - assert.fieldEquals( - "User", - USER1_ADDRESS.toHexString(), - "voteWeight", - value.times(pair.ratio).toString() - ); -}); - -test("Updates vote weight for sender and recipient on transfer", () => { - clearStore(); - createPair(GNO_ADDRESS, OTHERTOKEN_ADDRESS, PAIR_ADDRESS, value); - - // mint value to user 1 - handleTransfer(mintEvent); - let pair = loadOrCreateAMMPair(PAIR_ADDRESS); - assert.fieldEquals( - "User", - USER1_ADDRESS.toHexString(), - "voteWeight", - value.times(pair.ratio).toString() - ); - - // transfer value from USER1 to USER2 - handleTransfer(smallTransferEvent); - assert.fieldEquals( - "User", - USER1_ADDRESS.toHexString(), - "voteWeight", - value - .times(pair.ratio) - .div(BigInt.fromI32(2)) - .toString() - ); - assert.fieldEquals( - "User", - USER2_ADDRESS.toHexString(), - "voteWeight", - value - .times(pair.ratio) - .div(BigInt.fromI32(2)) - .toString() - ); -}); - -test("Removes sender if vote weight is 0", () => { - clearStore(); - createPair(GNO_ADDRESS, OTHERTOKEN_ADDRESS, PAIR_ADDRESS, value); - - // mint value to user 1 - handleTransfer(mintEvent); - let pair = loadOrCreateAMMPair(PAIR_ADDRESS); - assert.fieldEquals( - "User", - USER1_ADDRESS.toHexString(), - "voteWeight", - value.times(pair.ratio).toString() - ); - - // transfer value from USER1 to USER2 - handleTransfer(transferEvent); - assert.notInStore( - "AMMPosition", - PAIR_ADDRESS.toHexString() - .concat("-") - .concat(USER1_ADDRESS.toHexString()) - ); - assert.notInStore("User", USER1_ADDRESS.toHexString()); - assert.fieldEquals( - "User", - USER2_ADDRESS.toHexString(), - "voteWeight", - value.times(pair.ratio).toString() - ); -}); - -test("Updates totalSupply on mint", () => { - clearStore(); - createPair(GNO_ADDRESS, OTHERTOKEN_ADDRESS, PAIR_ADDRESS, value); - - // mint value to user 1 - handleTransfer(mintEvent); - assert.fieldEquals( - "AMMPair", - PAIR_ADDRESS.toHexString(), - "totalSupply", - value.toString() - ); -}); - -test("Updates totalSupply on burn", () => { - clearStore(); - createPair(GNO_ADDRESS, OTHERTOKEN_ADDRESS, PAIR_ADDRESS, value); - - // mint value to user 1 - handleTransfer(mintEvent); - assert.fieldEquals( - "AMMPair", - PAIR_ADDRESS.toHexString(), - "totalSupply", - value.toString() - ); - handleTransfer(burnEvent); - assert.fieldEquals( - "AMMPair", - PAIR_ADDRESS.toHexString(), - "totalSupply", - BigInt.fromI32(0).toString() - ); - assert.notInStore("User", PAIR_ADDRESS.toHexString()); -}); - -test("Updates vote weight for all LPs on sync", () => { - clearStore(); - createPair(GNO_ADDRESS, OTHERTOKEN_ADDRESS, PAIR_ADDRESS, value); - - // mint value to user 1 - handleTransfer(mintEvent); - let pair = loadOrCreateAMMPair(PAIR_ADDRESS); - - // transfer half of value from USER1 to USER2 - handleTransfer(smallTransferEvent); - - // mock gno.balanceOf(pair.address) - createMockedFunction(GNO_ADDRESS, "balanceOf", "balanceOf(address):(uint256)") - .withArgs([ethereum.Value.fromAddress(PAIR_ADDRESS)]) - .returns([ethereum.Value.fromUnsignedBigInt(value)]); - - // emit sync event - // note: second param is not used - let syncEvent = createSyncEvent(value, value); - handleSync(syncEvent); - - let positionUser1 = loadOrCreateAMMPosition(PAIR_ADDRESS, USER1_ADDRESS); - let positionUser2 = loadOrCreateAMMPosition(PAIR_ADDRESS, USER2_ADDRESS); - assert.fieldEquals( - "AMMPair", - pair.id, - "positions", - "[" + positionUser1.id + ", " + positionUser2.id + "]" - ); - assert.fieldEquals( - "User", - USER1_ADDRESS.toHexString(), - "voteWeight", - positionUser1.balance.times(pair.ratio).toString() - ); - assert.fieldEquals( - "User", - USER2_ADDRESS.toHexString(), - "voteWeight", - positionUser2.balance.times(pair.ratio).toString() - ); -}); diff --git a/packages/subgraph-gnosis-chain/abis/ERC20.json b/packages/subgraph-gnosis-chain/abis/ERC20.json deleted file mode 100644 index 405d6b3..0000000 --- a/packages/subgraph-gnosis-chain/abis/ERC20.json +++ /dev/null @@ -1,222 +0,0 @@ -[ - { - "constant": true, - "inputs": [], - "name": "name", - "outputs": [ - { - "name": "", - "type": "string" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "_spender", - "type": "address" - }, - { - "name": "_value", - "type": "uint256" - } - ], - "name": "approve", - "outputs": [ - { - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "totalSupply", - "outputs": [ - { - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "_from", - "type": "address" - }, - { - "name": "_to", - "type": "address" - }, - { - "name": "_value", - "type": "uint256" - } - ], - "name": "transferFrom", - "outputs": [ - { - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "decimals", - "outputs": [ - { - "name": "", - "type": "uint8" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "_owner", - "type": "address" - } - ], - "name": "balanceOf", - "outputs": [ - { - "name": "balance", - "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": "_to", - "type": "address" - }, - { - "name": "_value", - "type": "uint256" - } - ], - "name": "transfer", - "outputs": [ - { - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "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" - }, - { - "payable": true, - "stateMutability": "payable", - "type": "fallback" - }, - { - "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" - }, - { - "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" - } -] diff --git a/packages/subgraph-gnosis-chain/abis/SBCToken.json b/packages/subgraph-gnosis-chain/abis/SBCToken.json deleted file mode 100644 index 075974f..0000000 --- a/packages/subgraph-gnosis-chain/abis/SBCToken.json +++ /dev/null @@ -1,242 +0,0 @@ -[ - { "type": "constructor", "stateMutability": "nonpayable", "inputs": [] }, - { - "type": "event", - "name": "Approval", - "inputs": [ - { - "type": "address", - "name": "owner", - "internalType": "address", - "indexed": true - }, - { - "type": "address", - "name": "spender", - "internalType": "address", - "indexed": true - }, - { - "type": "uint256", - "name": "value", - "internalType": "uint256", - "indexed": false - } - ], - "anonymous": false - }, - { - "type": "event", - "name": "Paused", - "inputs": [ - { - "type": "address", - "name": "account", - "internalType": "address", - "indexed": false - } - ], - "anonymous": false - }, - { - "type": "event", - "name": "Transfer", - "inputs": [ - { - "type": "address", - "name": "from", - "internalType": "address", - "indexed": true - }, - { - "type": "address", - "name": "to", - "internalType": "address", - "indexed": true - }, - { - "type": "uint256", - "name": "value", - "internalType": "uint256", - "indexed": false - } - ], - "anonymous": false - }, - { - "type": "event", - "name": "Unpaused", - "inputs": [ - { - "type": "address", - "name": "account", - "internalType": "address", - "indexed": false - } - ], - "anonymous": false - }, - { - "type": "function", - "stateMutability": "view", - "outputs": [{ "type": "uint256", "name": "", "internalType": "uint256" }], - "name": "allowance", - "inputs": [ - { "type": "address", "name": "owner", "internalType": "address" }, - { "type": "address", "name": "spender", "internalType": "address" } - ] - }, - { - "type": "function", - "stateMutability": "nonpayable", - "outputs": [{ "type": "bool", "name": "", "internalType": "bool" }], - "name": "approve", - "inputs": [ - { "type": "address", "name": "spender", "internalType": "address" }, - { "type": "uint256", "name": "amount", "internalType": "uint256" } - ] - }, - { - "type": "function", - "stateMutability": "view", - "outputs": [{ "type": "uint256", "name": "", "internalType": "uint256" }], - "name": "balanceOf", - "inputs": [ - { "type": "address", "name": "account", "internalType": "address" } - ] - }, - { - "type": "function", - "stateMutability": "nonpayable", - "outputs": [], - "name": "claimTokens", - "inputs": [ - { "type": "address", "name": "_token", "internalType": "address" }, - { "type": "address", "name": "_to", "internalType": "address" } - ] - }, - { - "type": "function", - "stateMutability": "view", - "outputs": [{ "type": "uint8", "name": "", "internalType": "uint8" }], - "name": "decimals", - "inputs": [] - }, - { - "type": "function", - "stateMutability": "nonpayable", - "outputs": [{ "type": "bool", "name": "", "internalType": "bool" }], - "name": "decreaseAllowance", - "inputs": [ - { "type": "address", "name": "spender", "internalType": "address" }, - { - "type": "uint256", - "name": "subtractedValue", - "internalType": "uint256" - } - ] - }, - { - "type": "function", - "stateMutability": "nonpayable", - "outputs": [{ "type": "bool", "name": "", "internalType": "bool" }], - "name": "increaseAllowance", - "inputs": [ - { "type": "address", "name": "spender", "internalType": "address" }, - { "type": "uint256", "name": "addedValue", "internalType": "uint256" } - ] - }, - { - "type": "function", - "stateMutability": "nonpayable", - "outputs": [], - "name": "mint", - "inputs": [ - { "type": "address", "name": "_to", "internalType": "address" }, - { "type": "uint256", "name": "_amount", "internalType": "uint256" } - ] - }, - { - "type": "function", - "stateMutability": "view", - "outputs": [{ "type": "string", "name": "", "internalType": "string" }], - "name": "name", - "inputs": [] - }, - { - "type": "function", - "stateMutability": "nonpayable", - "outputs": [], - "name": "pause", - "inputs": [] - }, - { - "type": "function", - "stateMutability": "view", - "outputs": [{ "type": "bool", "name": "", "internalType": "bool" }], - "name": "paused", - "inputs": [] - }, - { - "type": "function", - "stateMutability": "nonpayable", - "outputs": [], - "name": "setMinter", - "inputs": [ - { "type": "address", "name": "minter", "internalType": "address" } - ] - }, - { - "type": "function", - "stateMutability": "view", - "outputs": [{ "type": "string", "name": "", "internalType": "string" }], - "name": "symbol", - "inputs": [] - }, - { - "type": "function", - "stateMutability": "view", - "outputs": [{ "type": "uint256", "name": "", "internalType": "uint256" }], - "name": "totalSupply", - "inputs": [] - }, - { - "type": "function", - "stateMutability": "nonpayable", - "outputs": [{ "type": "bool", "name": "", "internalType": "bool" }], - "name": "transfer", - "inputs": [ - { "type": "address", "name": "recipient", "internalType": "address" }, - { "type": "uint256", "name": "amount", "internalType": "uint256" } - ] - }, - { - "type": "function", - "stateMutability": "nonpayable", - "outputs": [], - "name": "transferAndCall", - "inputs": [ - { "type": "address", "name": "_to", "internalType": "address" }, - { "type": "uint256", "name": "_amount", "internalType": "uint256" }, - { "type": "bytes", "name": "_data", "internalType": "bytes" } - ] - }, - { - "type": "function", - "stateMutability": "nonpayable", - "outputs": [{ "type": "bool", "name": "", "internalType": "bool" }], - "name": "transferFrom", - "inputs": [ - { "type": "address", "name": "sender", "internalType": "address" }, - { "type": "address", "name": "recipient", "internalType": "address" }, - { "type": "uint256", "name": "amount", "internalType": "uint256" } - ] - }, - { - "type": "function", - "stateMutability": "nonpayable", - "outputs": [], - "name": "unpause", - "inputs": [] - } -] diff --git a/packages/subgraph-gnosis-chain/abis/factory.json b/packages/subgraph-gnosis-chain/abis/factory.json deleted file mode 100644 index a2f1327..0000000 --- a/packages/subgraph-gnosis-chain/abis/factory.json +++ /dev/null @@ -1,193 +0,0 @@ -[ - { - "inputs": [ - { - "internalType": "address", - "name": "_feeToSetter", - "type": "address" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "token0", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "token1", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "pair", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "PairCreated", - "type": "event" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "allPairs", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "allPairsLength", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "tokenA", - "type": "address" - }, - { - "internalType": "address", - "name": "tokenB", - "type": "address" - } - ], - "name": "createPair", - "outputs": [ - { - "internalType": "address", - "name": "pair", - "type": "address" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "feeTo", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "feeToSetter", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - }, - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "getPair", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_feeTo", - "type": "address" - } - ], - "name": "setFeeTo", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_feeToSetter", - "type": "address" - } - ], - "name": "setFeeToSetter", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - } -] diff --git a/packages/subgraph-gnosis-chain/package.json b/packages/subgraph-gnosis-chain/package.json deleted file mode 100644 index 4363fa1..0000000 --- a/packages/subgraph-gnosis-chain/package.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "name": "subgraph-gnosis-chain", - "license": "UNLICENSED", - "author": "Cristóvão Honorato", - "scripts": { - "doall": "rm -rf generated && rm -rf build && graph codegen && graph build", - "codegen": "graph codegen", - "build": "graph build", - "deploy": "graph deploy --node https://api.thegraph.com/deploy/ cristovaoth/gno-voting-power-gc", - "test": "graph test", - "create-local": "graph create --node http://localhost:8020/ cristovaoth/gno-voting-power-gc", - "remove-local": "graph remove --node http://localhost:8020/ cristovaoth/gno-voting-power-gc", - "deploy-local": "graph deploy --node http://localhost:8020/ --ipfs http://localhost:5001 cristovaoth/gno-voting-power-gc" - }, - "dependencies": { - "@graphprotocol/graph-cli": "0.28.0", - "@graphprotocol/graph-ts": "0.26.0" - }, - "devDependencies": { - "matchstick-as": "^0.4.0" - } -} diff --git a/packages/subgraph-gnosis-chain/src/helpers.ts b/packages/subgraph-gnosis-chain/src/helpers.ts deleted file mode 100644 index d4daa31..0000000 --- a/packages/subgraph-gnosis-chain/src/helpers.ts +++ /dev/null @@ -1,34 +0,0 @@ -/* eslint-disable prefer-const */ -import { log, BigInt, Address, store } from "@graphprotocol/graph-ts"; -import { AMMPair, User } from "../generated/schema"; - -export const ADDRESS_ZERO = Address.fromString( - "0x0000000000000000000000000000000000000000" -); - -export function loadOrCreateUser(address: Address): User { - const id = address.toHexString(); - let entry = User.load(id); - if (!entry) { - entry = new User(id); - entry.voteWeight = BigInt.fromI32(0); - entry.gno = BigInt.fromI32(0); - entry.mgno = BigInt.fromI32(0); - entry.lgno = BigInt.fromI32(0); - entry.deposit = BigInt.fromI32(0); - if (id != ADDRESS_ZERO.toHexString() && !AMMPair.load(id)) { - entry.save(); - } - } - return entry; -} - -export function removeOrSaveUser(user: User): void { - if (user) { - if (user && user.voteWeight == BigInt.fromI32(0)) { - store.remove("User", user.id); - } else { - user.save(); - } - } -} diff --git a/packages/subgraph-gnosis-chain/subgraph.yaml b/packages/subgraph-gnosis-chain/subgraph.yaml deleted file mode 100644 index 80d4fc7..0000000 --- a/packages/subgraph-gnosis-chain/subgraph.yaml +++ /dev/null @@ -1,197 +0,0 @@ -specVersion: 0.0.4 -schema: - file: ../subgraph-base/schema.graphql -dataSources: - - kind: ethereum - name: ds-gno - network: xdai - source: - address: "0x9C58BAcC331c9aa871AFD802DB6379a98e80CEdb" - abi: ERC20 - startBlock: 11629829 - mapping: - kind: ethereum/events - apiVersion: 0.0.6 - language: wasm/assemblyscript - entities: - - User - abis: - - name: ERC20 - file: ../subgraph-base/abis/ERC20.json - eventHandlers: - - event: Transfer(indexed address,indexed address,uint256) - handler: handleTransfer - file: ../subgraph-base/src/gno.ts - - kind: ethereum - name: ds-mgno - network: xdai - source: - address: "0x722fc4DAABFEaff81b97894fC623f91814a1BF68" - abi: ERC20 - startBlock: 19468779 - mapping: - kind: ethereum/events - apiVersion: 0.0.6 - language: wasm/assemblyscript - entities: - - User - abis: - - name: ERC20 - file: ../subgraph-base/abis/ERC20.json - eventHandlers: - - event: Transfer(indexed address,indexed address,uint256) - handler: handleTransfer - file: ./src/mgno.ts - - kind: ethereum - name: ds-lgno - network: xdai - source: - address: "0xd4Ca39f78Bf14BfaB75226AC833b1858dB16f9a1" - abi: ERC20 - startBlock: 20388099 - mapping: - kind: ethereum/events - apiVersion: 0.0.6 - language: wasm/assemblyscript - entities: - - User - abis: - - name: ERC20 - file: ../subgraph-base/abis/ERC20.json - eventHandlers: - - event: Transfer(indexed address,indexed address,uint256) - handler: handleTransfer - file: ../subgraph-base/src/lgno.ts - - kind: ethereum/contract - name: HoneySwap - network: xdai - source: - address: "0xA818b4F111Ccac7AA31D0BCc0806d64F2E0737D7" - abi: Factory - startBlock: 11813490 - mapping: - kind: ethereum/events - apiVersion: 0.0.6 - language: wasm/assemblyscript - file: ../subgraph-base/src/factory.ts - entities: - - User - abis: - - name: Factory - file: ../subgraph-base/abis/factory.json - - name: ERC20 - file: ../subgraph-base/abis/ERC20.json - eventHandlers: - - event: PairCreated(indexed address,indexed address,address,uint256) - handler: handleNewPair - - kind: ethereum/contract - name: Swapr - network: xdai - source: - address: "0x5D48C95AdfFD4B40c1AAADc4e08fc44117E02179" - abi: Factory - startBlock: 14913783 - mapping: - kind: ethereum/events - apiVersion: 0.0.6 - language: wasm/assemblyscript - file: ../subgraph-base/src/factory.ts - entities: - - User - abis: - - name: Factory - file: ../subgraph-base/abis/factory.json - - name: ERC20 - file: ../subgraph-base/abis/ERC20.json - eventHandlers: - - event: PairCreated(indexed address,indexed address,address,uint256) - handler: handleNewPair - - kind: ethereum/contract - name: Sushi - network: xdai - source: - address: "0xc35DADB65012eC5796536bD9864eD8773aBc74C4" - abi: Factory - startBlock: 14735904 - mapping: - kind: ethereum/events - apiVersion: 0.0.6 - language: wasm/assemblyscript - file: ../subgraph-base/src/factory.ts - entities: - - User - abis: - - name: Factory - file: ../subgraph-base/abis/factory.json - - name: ERC20 - file: ../subgraph-base/abis/ERC20.json - eventHandlers: - - event: PairCreated(indexed address,indexed address,address,uint256) - handler: handleNewPair - - kind: ethereum/contract - name: Elk - network: xdai - source: - address: "0xCB018587dA9590A18f49fFE2b85314c33aF3Ad3B" - abi: Factory - startBlock: 17623247 - mapping: - kind: ethereum/events - apiVersion: 0.0.6 - language: wasm/assemblyscript - file: ../subgraph-base/src/factory.ts - entities: - - User - abis: - - name: Factory - file: ../subgraph-base/abis/factory.json - - name: ERC20 - file: ../subgraph-base/abis/ERC20.json - eventHandlers: - - event: PairCreated(indexed address,indexed address,address,uint256) - handler: handleNewPair - - kind: ethereum/contract - name: BaoSwap - network: xdai - source: - address: "0x45DE240fbE2077dd3e711299538A09854FAE9c9b" - abi: Factory - startBlock: 14515972 - mapping: - kind: ethereum/events - apiVersion: 0.0.6 - language: wasm/assemblyscript - file: ../subgraph-base/src/factory.ts - entities: - - User - abis: - - name: Factory - file: ../subgraph-base/abis/factory.json - - name: ERC20 - file: ../subgraph-base/abis/ERC20.json - eventHandlers: - - event: PairCreated(indexed address,indexed address,address,uint256) - handler: handleNewPair -templates: - - kind: ethereum/contract - name: Pair - network: xdai - source: - abi: Pair - mapping: - kind: ethereum/events - apiVersion: 0.0.6 - language: wasm/assemblyscript - file: ../subgraph-base/src/pair.ts - entities: - - AMMPair - abis: - - name: Pair - file: ../subgraph-base/abis/pair.json - - name: ERC20 - file: ../subgraph-base/abis/ERC20.json - eventHandlers: - - event: Transfer(indexed address,indexed address,uint256) - handler: handleTransfer - - event: Sync(uint112,uint112) - handler: handleSync diff --git a/packages/subgraph-gnosis-chain/tests/helpers.ts b/packages/subgraph-gnosis-chain/tests/helpers.ts deleted file mode 100644 index fd04778..0000000 --- a/packages/subgraph-gnosis-chain/tests/helpers.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { BigInt, Address } from "@graphprotocol/graph-ts"; - -export const DEPOSIT_ADDRESS = Address.fromString( - "0x0B98057eA310F4d31F2a452B414647007d1645d9" -); - -export const ADDRESS_ZERO = Address.fromString( - "0x0000000000000000000000000000000000000000" -); -export const USER1_ADDRESS = Address.fromString( - "0x0000000000000000000000000000000000000001" -); -export const USER2_ADDRESS = Address.fromString( - "0x0000000000000000000000000000000000000002" -); - -export const data = "0x00"; - -export const MGNO_PER_GNO = BigInt.fromString("32"); -export const ONE_GNO = BigInt.fromString("1000000000000000000"); diff --git a/packages/subgraph-gnosis-chain/yarn.lock b/packages/subgraph-gnosis-chain/yarn.lock deleted file mode 100644 index e6edaaa..0000000 --- a/packages/subgraph-gnosis-chain/yarn.lock +++ /dev/null @@ -1,3419 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@babel/code-frame@^7.0.0": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.16.7.tgz#44416b6bd7624b998f5b1af5d470856c40138789" - integrity sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg== - dependencies: - "@babel/highlight" "^7.16.7" - -"@babel/helper-validator-identifier@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz#e8c602438c4a8195751243da9031d1607d247cad" - integrity sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw== - -"@babel/highlight@^7.16.7": - version "7.16.10" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.16.10.tgz#744f2eb81579d6eea753c227b0f570ad785aba88" - integrity sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw== - dependencies: - "@babel/helper-validator-identifier" "^7.16.7" - chalk "^2.0.0" - js-tokens "^4.0.0" - -"@babel/runtime@^7.9.2": - version "7.17.7" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.17.7.tgz#a5f3328dc41ff39d803f311cfe17703418cf9825" - integrity sha512-L6rvG9GDxaLgFjg41K+5Yv9OMrU98sWe+Ykmc6FDJW/+vYZMhdOMKkISgzptMaERHvS2Y2lw9MDRm2gHhlQQoA== - dependencies: - regenerator-runtime "^0.13.4" - -"@ethersproject/abi@5.0.7": - version "5.0.7" - resolved "https://registry.yarnpkg.com/@ethersproject/abi/-/abi-5.0.7.tgz#79e52452bd3ca2956d0e1c964207a58ad1a0ee7b" - integrity sha512-Cqktk+hSIckwP/W8O47Eef60VwmoSC/L3lY0+dIBhQPCNn9E4V7rwmm2aFrNRRDJfFlGuZ1khkQUOc3oBX+niw== - dependencies: - "@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" - -"@ethersproject/abstract-provider@^5.6.0": - version "5.6.0" - resolved "https://registry.yarnpkg.com/@ethersproject/abstract-provider/-/abstract-provider-5.6.0.tgz#0c4ac7054650dbd9c476cf5907f588bbb6ef3061" - integrity sha512-oPMFlKLN+g+y7a79cLK3WiLcjWFnZQtXWgnLAbHZcN3s7L4v90UHpTOrLk+m3yr0gt+/h9STTM6zrr7PM8uoRw== - dependencies: - "@ethersproject/bignumber" "^5.6.0" - "@ethersproject/bytes" "^5.6.0" - "@ethersproject/logger" "^5.6.0" - "@ethersproject/networks" "^5.6.0" - "@ethersproject/properties" "^5.6.0" - "@ethersproject/transactions" "^5.6.0" - "@ethersproject/web" "^5.6.0" - -"@ethersproject/abstract-signer@^5.6.0": - version "5.6.0" - resolved "https://registry.yarnpkg.com/@ethersproject/abstract-signer/-/abstract-signer-5.6.0.tgz#9cd7ae9211c2b123a3b29bf47aab17d4d016e3e7" - integrity sha512-WOqnG0NJKtI8n0wWZPReHtaLkDByPL67tn4nBaDAhmVq8sjHTPbCdz4DRhVu/cfTOvfy9w3iq5QZ7BX7zw56BQ== - dependencies: - "@ethersproject/abstract-provider" "^5.6.0" - "@ethersproject/bignumber" "^5.6.0" - "@ethersproject/bytes" "^5.6.0" - "@ethersproject/logger" "^5.6.0" - "@ethersproject/properties" "^5.6.0" - -"@ethersproject/address@^5.0.4", "@ethersproject/address@^5.6.0": - version "5.6.0" - resolved "https://registry.yarnpkg.com/@ethersproject/address/-/address-5.6.0.tgz#13c49836d73e7885fc148ad633afad729da25012" - integrity sha512-6nvhYXjbXsHPS+30sHZ+U4VMagFC/9zAk6Gd/h3S21YW4+yfb0WfRtaAIZ4kfM4rrVwqiy284LP0GtL5HXGLxQ== - dependencies: - "@ethersproject/bignumber" "^5.6.0" - "@ethersproject/bytes" "^5.6.0" - "@ethersproject/keccak256" "^5.6.0" - "@ethersproject/logger" "^5.6.0" - "@ethersproject/rlp" "^5.6.0" - -"@ethersproject/base64@^5.6.0": - version "5.6.0" - resolved "https://registry.yarnpkg.com/@ethersproject/base64/-/base64-5.6.0.tgz#a12c4da2a6fb86d88563216b0282308fc15907c9" - integrity sha512-2Neq8wxJ9xHxCF9TUgmKeSh9BXJ6OAxWfeGWvbauPh8FuHEjamgHilllx8KkSd5ErxyHIX7Xv3Fkcud2kY9ezw== - dependencies: - "@ethersproject/bytes" "^5.6.0" - -"@ethersproject/bignumber@^5.0.7", "@ethersproject/bignumber@^5.6.0": - version "5.6.0" - resolved "https://registry.yarnpkg.com/@ethersproject/bignumber/-/bignumber-5.6.0.tgz#116c81b075c57fa765a8f3822648cf718a8a0e26" - integrity sha512-VziMaXIUHQlHJmkv1dlcd6GY2PmT0khtAqaMctCIDogxkrarMzA9L94KN1NeXqqOfFD6r0sJT3vCTOFSmZ07DA== - dependencies: - "@ethersproject/bytes" "^5.6.0" - "@ethersproject/logger" "^5.6.0" - bn.js "^4.11.9" - -"@ethersproject/bytes@^5.0.4", "@ethersproject/bytes@^5.6.0": - version "5.6.0" - resolved "https://registry.yarnpkg.com/@ethersproject/bytes/-/bytes-5.6.0.tgz#81652f2a0e04533575befadce555213c11d8aa20" - integrity sha512-3hJPlYemb9V4VLfJF5BfN0+55vltPZSHU3QKUyP9M3Y2TcajbiRrz65UG+xVHOzBereB1b9mn7r12o177xgN7w== - dependencies: - "@ethersproject/logger" "^5.6.0" - -"@ethersproject/constants@^5.0.4", "@ethersproject/constants@^5.6.0": - version "5.6.0" - resolved "https://registry.yarnpkg.com/@ethersproject/constants/-/constants-5.6.0.tgz#55e3eb0918584d3acc0688e9958b0cedef297088" - integrity sha512-SrdaJx2bK0WQl23nSpV/b1aq293Lh0sUaZT/yYKPDKn4tlAbkH96SPJwIhwSwTsoQQZxuh1jnqsKwyymoiBdWA== - dependencies: - "@ethersproject/bignumber" "^5.6.0" - -"@ethersproject/hash@^5.0.4": - version "5.6.0" - resolved "https://registry.yarnpkg.com/@ethersproject/hash/-/hash-5.6.0.tgz#d24446a5263e02492f9808baa99b6e2b4c3429a2" - integrity sha512-fFd+k9gtczqlr0/BruWLAu7UAOas1uRRJvOR84uDf4lNZ+bTkGl366qvniUZHKtlqxBRU65MkOobkmvmpHU+jA== - dependencies: - "@ethersproject/abstract-signer" "^5.6.0" - "@ethersproject/address" "^5.6.0" - "@ethersproject/bignumber" "^5.6.0" - "@ethersproject/bytes" "^5.6.0" - "@ethersproject/keccak256" "^5.6.0" - "@ethersproject/logger" "^5.6.0" - "@ethersproject/properties" "^5.6.0" - "@ethersproject/strings" "^5.6.0" - -"@ethersproject/keccak256@^5.0.3", "@ethersproject/keccak256@^5.6.0": - version "5.6.0" - resolved "https://registry.yarnpkg.com/@ethersproject/keccak256/-/keccak256-5.6.0.tgz#fea4bb47dbf8f131c2e1774a1cecbfeb9d606459" - integrity sha512-tk56BJ96mdj/ksi7HWZVWGjCq0WVl/QvfhFQNeL8fxhBlGoP+L80uDCiQcpJPd+2XxkivS3lwRm3E0CXTfol0w== - dependencies: - "@ethersproject/bytes" "^5.6.0" - js-sha3 "0.8.0" - -"@ethersproject/logger@^5.0.5", "@ethersproject/logger@^5.6.0": - version "5.6.0" - resolved "https://registry.yarnpkg.com/@ethersproject/logger/-/logger-5.6.0.tgz#d7db1bfcc22fd2e4ab574cba0bb6ad779a9a3e7a" - integrity sha512-BiBWllUROH9w+P21RzoxJKzqoqpkyM1pRnEKG69bulE9TSQD8SAIvTQqIMZmmCO8pUNkgLP1wndX1gKghSpBmg== - -"@ethersproject/networks@^5.6.0": - version "5.6.0" - resolved "https://registry.yarnpkg.com/@ethersproject/networks/-/networks-5.6.0.tgz#486d03fff29b4b6b5414d47a232ded09fe10de5e" - integrity sha512-DaVzgyThzHgSDLuURhvkp4oviGoGe9iTZW4jMEORHDRCgSZ9K9THGFKqL+qGXqPAYLEgZTf5z2w56mRrPR1MjQ== - dependencies: - "@ethersproject/logger" "^5.6.0" - -"@ethersproject/properties@^5.0.3", "@ethersproject/properties@^5.6.0": - version "5.6.0" - resolved "https://registry.yarnpkg.com/@ethersproject/properties/-/properties-5.6.0.tgz#38904651713bc6bdd5bdd1b0a4287ecda920fa04" - integrity sha512-szoOkHskajKePTJSZ46uHUWWkbv7TzP2ypdEK6jGMqJaEt2sb0jCgfBo0gH0m2HBpRixMuJ6TBRaQCF7a9DoCg== - dependencies: - "@ethersproject/logger" "^5.6.0" - -"@ethersproject/rlp@^5.6.0": - version "5.6.0" - resolved "https://registry.yarnpkg.com/@ethersproject/rlp/-/rlp-5.6.0.tgz#55a7be01c6f5e64d6e6e7edb6061aa120962a717" - integrity sha512-dz9WR1xpcTL+9DtOT/aDO+YyxSSdO8YIS0jyZwHHSlAmnxA6cKU3TrTd4Xc/bHayctxTgGLYNuVVoiXE4tTq1g== - dependencies: - "@ethersproject/bytes" "^5.6.0" - "@ethersproject/logger" "^5.6.0" - -"@ethersproject/signing-key@^5.6.0": - version "5.6.0" - resolved "https://registry.yarnpkg.com/@ethersproject/signing-key/-/signing-key-5.6.0.tgz#4f02e3fb09e22b71e2e1d6dc4bcb5dafa69ce042" - integrity sha512-S+njkhowmLeUu/r7ir8n78OUKx63kBdMCPssePS89So1TH4hZqnWFsThEd/GiXYp9qMxVrydf7KdM9MTGPFukA== - dependencies: - "@ethersproject/bytes" "^5.6.0" - "@ethersproject/logger" "^5.6.0" - "@ethersproject/properties" "^5.6.0" - bn.js "^4.11.9" - elliptic "6.5.4" - hash.js "1.1.7" - -"@ethersproject/strings@^5.0.4", "@ethersproject/strings@^5.6.0": - version "5.6.0" - resolved "https://registry.yarnpkg.com/@ethersproject/strings/-/strings-5.6.0.tgz#9891b26709153d996bf1303d39a7f4bc047878fd" - integrity sha512-uv10vTtLTZqrJuqBZR862ZQjTIa724wGPWQqZrofaPI/kUsf53TBG0I0D+hQ1qyNtllbNzaW+PDPHHUI6/65Mg== - dependencies: - "@ethersproject/bytes" "^5.6.0" - "@ethersproject/constants" "^5.6.0" - "@ethersproject/logger" "^5.6.0" - -"@ethersproject/transactions@^5.6.0": - version "5.6.0" - resolved "https://registry.yarnpkg.com/@ethersproject/transactions/-/transactions-5.6.0.tgz#4b594d73a868ef6e1529a2f8f94a785e6791ae4e" - integrity sha512-4HX+VOhNjXHZyGzER6E/LVI2i6lf9ejYeWD6l4g50AdmimyuStKc39kvKf1bXWQMg7QNVh+uC7dYwtaZ02IXeg== - dependencies: - "@ethersproject/address" "^5.6.0" - "@ethersproject/bignumber" "^5.6.0" - "@ethersproject/bytes" "^5.6.0" - "@ethersproject/constants" "^5.6.0" - "@ethersproject/keccak256" "^5.6.0" - "@ethersproject/logger" "^5.6.0" - "@ethersproject/properties" "^5.6.0" - "@ethersproject/rlp" "^5.6.0" - "@ethersproject/signing-key" "^5.6.0" - -"@ethersproject/web@^5.6.0": - version "5.6.0" - resolved "https://registry.yarnpkg.com/@ethersproject/web/-/web-5.6.0.tgz#4bf8b3cbc17055027e1a5dd3c357e37474eaaeb8" - integrity sha512-G/XHj0hV1FxI2teHRfCGvfBUHFmU+YOSbCxlAMqJklxSa7QMiHFQfAxvwY2PFqgvdkxEKwRNr/eCjfAPEm2Ctg== - dependencies: - "@ethersproject/base64" "^5.6.0" - "@ethersproject/bytes" "^5.6.0" - "@ethersproject/logger" "^5.6.0" - "@ethersproject/properties" "^5.6.0" - "@ethersproject/strings" "^5.6.0" - -"@graphprotocol/graph-cli@0.28.0": - version "0.28.0" - resolved "https://registry.yarnpkg.com/@graphprotocol/graph-cli/-/graph-cli-0.28.0.tgz#7dbd5fd59f30b0c547c23bb4180a4559251e0afa" - integrity sha512-a6MLYosEwHEkLzXyuS2IRcB4mp/v2Qtndv5/H8aR6f1f1YbQXd8YfGRIkxl6eZCMDf319nm98wp8Vo+xunYB0w== - dependencies: - assemblyscript "0.19.10" - binary-install-raw "0.0.13" - chalk "3.0.0" - chokidar "3.5.1" - debug "4.1.1" - docker-compose "0.23.4" - dockerode "2.5.8" - fs-extra "9.0.0" - glob "7.1.6" - gluegun "https://github.com/edgeandnode/gluegun#v4.3.1-pin-colors-dep" - graphql "15.5.0" - immutable "3.8.2" - ipfs-http-client "34.0.0" - jayson "3.2.0" - js-yaml "3.13.1" - node-fetch "2.6.0" - pkginfo "0.4.1" - prettier "1.19.1" - request "2.88.2" - semver "7.3.5" - sync-request "6.1.0" - tmp-promise "3.0.2" - web3-eth-abi "1.7.0" - which "2.0.2" - yaml "1.9.2" - -"@graphprotocol/graph-ts@0.26.0": - version "0.26.0" - resolved "https://registry.yarnpkg.com/@graphprotocol/graph-ts/-/graph-ts-0.26.0.tgz#576f995531eebaca4374901aeaff499219e382e8" - integrity sha512-GW/emOJl+35MXgmIxTnUK7dJtPCaB9u5aAwoLVqJ8swogC794O92UrXMVrAJsherUriu+yI9bLMGmNPOIi60jw== - dependencies: - assemblyscript "0.19.10" - -"@graphprotocol/graph-ts@^0.24.1": - version "0.24.1" - resolved "https://registry.yarnpkg.com/@graphprotocol/graph-ts/-/graph-ts-0.24.1.tgz#50961b52b5383f9c5cf5e6e23fa039f24e729ddf" - integrity sha512-2vU4m5ZPQIqMlMce/z5vmOtGHRlRmcRhMfemS3NIwxCSxSBGVnX2zb7QBTzzdQKGwsAZdbz6V0okkOtvohELfQ== - dependencies: - assemblyscript "0.19.10" - -"@types/bn.js@^5.1.0": - version "5.1.0" - resolved "https://registry.yarnpkg.com/@types/bn.js/-/bn.js-5.1.0.tgz#32c5d271503a12653c62cf4d2b45e6eab8cebc68" - integrity sha512-QSSVYj7pYFN49kW77o2s9xTCwZ8F2xLbjLLSEVh8D2F4JUhZtPAGOFLTD+ffqksBx/u4cE/KImFjyhqCjn/LIA== - dependencies: - "@types/node" "*" - -"@types/concat-stream@^1.6.0": - version "1.6.1" - resolved "https://registry.yarnpkg.com/@types/concat-stream/-/concat-stream-1.6.1.tgz#24bcfc101ecf68e886aaedce60dfd74b632a1b74" - integrity sha512-eHE4cQPoj6ngxBZMvVf6Hw7Mh4jMW4U9lpGmS5GBPB9RYxlFg+CHaVN7ErNY4W9XfLIEn20b4VDYaIrbq0q4uA== - dependencies: - "@types/node" "*" - -"@types/connect@^3.4.32": - version "3.4.35" - resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.35.tgz#5fcf6ae445e4021d1fc2219a4873cc73a3bb2ad1" - integrity sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ== - dependencies: - "@types/node" "*" - -"@types/express-serve-static-core@^4.16.9": - version "4.17.28" - resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.28.tgz#c47def9f34ec81dc6328d0b1b5303d1ec98d86b8" - integrity sha512-P1BJAEAW3E2DJUlkgq4tOL3RyMunoWXqbSCygWo5ZIWTjUgN1YnaXWW4VWl/oc8vs/XoYibEGBKP0uZyF4AHig== - dependencies: - "@types/node" "*" - "@types/qs" "*" - "@types/range-parser" "*" - -"@types/form-data@0.0.33": - version "0.0.33" - resolved "https://registry.yarnpkg.com/@types/form-data/-/form-data-0.0.33.tgz#c9ac85b2a5fd18435b8c85d9ecb50e6d6c893ff8" - integrity sha1-yayFsqX9GENbjIXZ7LUObWyJP/g= - dependencies: - "@types/node" "*" - -"@types/lodash@^4.14.139": - version "4.14.180" - resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.180.tgz#4ab7c9ddfc92ec4a887886483bc14c79fb380670" - integrity sha512-XOKXa1KIxtNXgASAnwj7cnttJxS4fksBRywK/9LzRV5YxrF80BXZIGeQSuoESQ/VkUj30Ae0+YcuHc15wJCB2g== - -"@types/node@*": - version "17.0.14" - resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.14.tgz#33b9b94f789a8fedd30a68efdbca4dbb06b61f20" - integrity sha512-SbjLmERksKOGzWzPNuW7fJM7fk3YXVTFiZWB/Hs99gwhk+/dnrQRPBQjPW9aO+fi1tAffi9PrwFvsmOKmDTyng== - -"@types/node@^10.0.3": - version "10.17.60" - resolved "https://registry.yarnpkg.com/@types/node/-/node-10.17.60.tgz#35f3d6213daed95da7f0f73e75bcc6980e90597b" - integrity sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw== - -"@types/node@^12.7.7": - version "12.20.47" - resolved "https://registry.yarnpkg.com/@types/node/-/node-12.20.47.tgz#ca9237d51f2a2557419688511dab1c8daf475188" - integrity sha512-BzcaRsnFuznzOItW1WpQrDHM7plAa7GIDMZ6b5pnMbkqEtM/6WCOhvZar39oeMQP79gwvFUWjjptE7/KGcNqFg== - -"@types/node@^8.0.0": - version "8.10.66" - resolved "https://registry.yarnpkg.com/@types/node/-/node-8.10.66.tgz#dd035d409df322acc83dff62a602f12a5783bbb3" - integrity sha512-tktOkFUA4kXx2hhhrB8bIFb5TbwzS4uOhKEmwiD+NoiL0qtP2OQ9mFldbgD4dV1djrlBYP6eBuQZiWjuHUpqFw== - -"@types/parse-json@^4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" - integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== - -"@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== - dependencies: - "@types/node" "*" - -"@types/qs@*", "@types/qs@^6.2.31": - version "6.9.7" - resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.7.tgz#63bb7d067db107cc1e457c303bc25d511febf6cb" - integrity sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw== - -"@types/range-parser@*": - version "1.2.4" - resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.4.tgz#cd667bcfdd025213aafb7ca5915a932590acdcdc" - integrity sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw== - -"@types/secp256k1@^4.0.1": - version "4.0.3" - resolved "https://registry.yarnpkg.com/@types/secp256k1/-/secp256k1-4.0.3.tgz#1b8e55d8e00f08ee7220b4d59a6abe89c37a901c" - integrity sha512-Da66lEIFeIz9ltsdMZcpQvmrmmoqrfju8pm1BH8WbYjZSwUgCwXLb9C+9XYogwBITnbsSaMdVPb2ekf7TV+03w== - dependencies: - "@types/node" "*" - -JSONStream@1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.2.tgz#c102371b6ec3a7cf3b847ca00c20bb0fce4c6dea" - integrity sha1-wQI3G27Dp887hHygDCC7D85Mbeo= - dependencies: - jsonparse "^1.2.0" - through ">=2.2.7 <3" - -JSONStream@^1.3.1: - version "1.3.5" - resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.5.tgz#3208c1f08d3a4d99261ab64f92302bc15e111ca0" - integrity sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ== - dependencies: - jsonparse "^1.2.0" - through ">=2.2.7 <3" - -abort-controller@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/abort-controller/-/abort-controller-3.0.0.tgz#eaf54d53b62bae4138e809ca225c8439a6efb392" - integrity sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg== - dependencies: - event-target-shim "^5.0.0" - -ajv@^6.12.3: - version "6.12.6" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" - integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== - 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" - -ansi-colors@^3.2.1: - version "3.2.4" - resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.4.tgz#e3a3da4bfbae6c86a9c285625de124a234026fbf" - integrity sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA== - -ansi-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" - integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= - -ansi-regex@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" - integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== - -ansi-styles@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" - integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== - dependencies: - color-convert "^1.9.0" - -ansi-styles@^4.1.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" - integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== - dependencies: - color-convert "^2.0.1" - -anymatch@~3.1.1: - version "3.1.2" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" - integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== - dependencies: - normalize-path "^3.0.0" - picomatch "^2.0.4" - -apisauce@^1.0.1: - version "1.1.5" - resolved "https://registry.yarnpkg.com/apisauce/-/apisauce-1.1.5.tgz#31d41a5cf805e401266cec67faf1a50f4aeae234" - integrity sha512-gKC8qb/bDJsPsnEXLZnXJ7gVx7dh87CEVNeIwv1dvaffnXoh5GHwac5pWR1P2broLiVj/fqFMQvLDDt/RhjiqA== - dependencies: - axios "^0.21.2" - ramda "^0.25.0" - -app-module-path@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/app-module-path/-/app-module-path-2.2.0.tgz#641aa55dfb7d6a6f0a8141c4b9c0aa50b6c24dd5" - integrity sha1-ZBqlXft9am8KgUHEucCqULbCTdU= - -argparse@^1.0.7: - version "1.0.10" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" - integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== - dependencies: - sprintf-js "~1.0.2" - -asap@~2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" - integrity sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY= - -asmcrypto.js@^2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/asmcrypto.js/-/asmcrypto.js-2.3.2.tgz#b9f84bd0a1fb82f21f8c29cc284a707ad17bba2e" - integrity sha512-3FgFARf7RupsZETQ1nHnhLUUvpcttcCq1iZCaVAbJZbCZ5VNRrNyvpDyHTOb0KC3llFcsyOT/a99NZcCbeiEsA== - -asn1.js@^5.0.1: - 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.6" - resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.6.tgz#0d3a7bb6e64e02a90c0303b31f292868ea09a08d" - integrity sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ== - dependencies: - safer-buffer "~2.1.0" - -assemblyscript@0.19.10: - version "0.19.10" - resolved "https://registry.yarnpkg.com/assemblyscript/-/assemblyscript-0.19.10.tgz#7ede6d99c797a219beb4fa4614c3eab9e6343c8e" - integrity sha512-HavcUBXB3mBTRGJcpvaQjmnmaqKHBGREjSPNsIvnAk2f9dj78y4BkMaSSdvBQYWcDDzsHQjyUC8stICFkD1Odg== - dependencies: - binaryen "101.0.0-nightly.20210723" - long "^4.0.0" - -assemblyscript@^0.19.20: - version "0.19.23" - resolved "https://registry.yarnpkg.com/assemblyscript/-/assemblyscript-0.19.23.tgz#16ece69f7f302161e2e736a0f6a474e6db72134c" - integrity sha512-fwOQNZVTMga5KRsfY80g7cpOl4PsFQczMwHzdtgoqLXaYhkhavufKb0sB0l3T1DUxpAufA0KNhlbpuuhZUwxMA== - dependencies: - binaryen "102.0.0-nightly.20211028" - long "^5.2.0" - source-map-support "^0.5.20" - -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@^2.6.1, async@^2.6.2, async@^2.6.3: - 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= - -at-least-node@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" - integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== - -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.11.0" - resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.11.0.tgz#d61f46d83b2519250e2784daf5b09479a8b41c59" - integrity sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA== - -axios@^0.21.1, axios@^0.21.2: - version "0.21.4" - resolved "https://registry.yarnpkg.com/axios/-/axios-0.21.4.tgz#c67b90dc0568e5c1cf2b0b858c43ba28e2eda575" - integrity sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg== - dependencies: - follow-redirects "^1.14.0" - -balanced-match@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" - integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== - -base-x@^3.0.2, base-x@^3.0.8: - version "3.0.9" - resolved "https://registry.yarnpkg.com/base-x/-/base-x-3.0.9.tgz#6349aaabb58526332de9f60995e548a53fe21320" - integrity sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ== - dependencies: - safe-buffer "^5.0.1" - -base64-js@^1.3.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" - integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== - -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.2" - resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-9.0.2.tgz#71c6c6bed38de64e24a65ebe16cfcf23ae693673" - integrity sha512-GAcQvbpsM0pUb0zw1EI0KhQEZ+lRwR5fYaAp3vPOYuP7aDvGy6cVN6XHLauvF8SOga2y0dcLcjt3iQDTSEliyw== - -binary-extensions@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" - integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== - -binary-install-raw@0.0.13: - version "0.0.13" - resolved "https://registry.yarnpkg.com/binary-install-raw/-/binary-install-raw-0.0.13.tgz#43a13c6980eb9844e2932eb7a91a56254f55b7dd" - integrity sha512-v7ms6N/H7iciuk6QInon3/n2mu7oRX+6knJ9xFPsJ3rQePgAqcR3CRTwUheFd8SLbiq4LL7Z4G/44L9zscdt9A== - dependencies: - axios "^0.21.1" - rimraf "^3.0.2" - tar "^6.1.0" - -binaryen@101.0.0-nightly.20210723: - version "101.0.0-nightly.20210723" - resolved "https://registry.yarnpkg.com/binaryen/-/binaryen-101.0.0-nightly.20210723.tgz#b6bb7f3501341727681a03866c0856500eec3740" - integrity sha512-eioJNqhHlkguVSbblHOtLqlhtC882SOEPKmNFZaDuz1hzQjolxZ+eu3/kaS10n3sGPONsIZsO7R9fR00UyhEUA== - -binaryen@102.0.0-nightly.20211028: - version "102.0.0-nightly.20211028" - resolved "https://registry.yarnpkg.com/binaryen/-/binaryen-102.0.0-nightly.20211028.tgz#8f1efb0920afd34509e342e37f84313ec936afb2" - integrity sha512-GCJBVB5exbxzzvyt8MGDv/MeUjs6gkXDvf4xOIItRBptYl0Tz5sm1o/uG95YK0L0VeG5ajDu3hRtkBP2kzqC5w== - -bindings@^1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" - integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== - dependencies: - file-uri-to-path "1.0.0" - -bip66@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/bip66/-/bip66-1.1.5.tgz#01fa8748785ca70955d5011217d1b3139969ca22" - integrity sha1-AfqHSHhcpwlV1QESF9GzE5lpyiI= - dependencies: - safe-buffer "^5.0.1" - -bl@^1.0.0: - version "1.2.3" - resolved "https://registry.yarnpkg.com/bl/-/bl-1.2.3.tgz#1e8dd80142eac80d7158c9dccc047fb620e035e7" - integrity sha512-pvcNpa0UU69UT341rO6AYy4FVAIkUHuZXRIWbq+zHnsVcRzDDjIAhGuuYoi0d//cwIwtt4pkpKycWEfjdV+vww== - dependencies: - readable-stream "^2.3.5" - safe-buffer "^5.1.1" - -bl@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/bl/-/bl-3.0.1.tgz#1cbb439299609e419b5a74d7fce2f8b37d8e5c6f" - integrity sha512-jrCW5ZhfQ/Vt07WX1Ngs+yn9BDqPL/gw28S7s9H6QK/gupnizNzJAss5akW20ISgOrbLTlXOOCTJeNUQqruAWQ== - dependencies: - readable-stream "^3.0.1" - -bl@^4.0.3: - version "4.1.0" - resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" - integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== - dependencies: - buffer "^5.5.0" - inherits "^2.0.4" - readable-stream "^3.4.0" - -blakejs@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/blakejs/-/blakejs-1.1.1.tgz#bf313053978b2cd4c444a48795710be05c785702" - integrity sha512-bLG6PHOCZJKNshTjGRBvET0vTciwQE6zFKOKKXPDJfwFBd4Ac0yBfPZqcGvGJap50l7ktvlpFqc2jGVaUgbJgg== - -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.11.8, bn.js@^4.11.9: - version "4.12.0" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" - integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== - -bn.js@^5.1.2, bn.js@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.0.tgz#358860674396c6997771a9d051fcc1b57d4ae002" - integrity sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw== - -borc@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/borc/-/borc-2.1.2.tgz#6ce75e7da5ce711b963755117dd1b187f6f8cf19" - integrity sha512-Sy9eoUi4OiKzq7VovMn246iTo17kzuyHJKomCfpWMlI6RpfN1gk95w7d7gH264nApVLg0HZfcpz62/g4VH1Y4w== - dependencies: - bignumber.js "^9.0.0" - buffer "^5.5.0" - commander "^2.15.0" - ieee754 "^1.1.13" - iso-url "~0.4.7" - json-text-sequence "~0.1.0" - readable-stream "^3.6.0" - -brace-expansion@^1.1.7: - version "1.1.11" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" - integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== - dependencies: - balanced-match "^1.0.0" - concat-map "0.0.1" - -braces@~3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" - integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== - dependencies: - fill-range "^7.0.1" - -brorand@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" - integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8= - -browserify-aes@^1.0.6, 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" - -bs58@^4.0.0, bs58@^4.0.1: - 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-alloc-unsafe@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz#bd7dc26ae2972d0eda253be061dba992349c19f0" - integrity sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg== - -buffer-alloc@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/buffer-alloc/-/buffer-alloc-1.2.0.tgz#890dd90d923a873e08e10e5fd51a57e5b7cce0ec" - integrity sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow== - dependencies: - buffer-alloc-unsafe "^1.1.0" - buffer-fill "^1.0.0" - -buffer-fill@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/buffer-fill/-/buffer-fill-1.0.0.tgz#f8f78b76789888ef39f205cd637f68e702122b2c" - integrity sha1-+PeLdniYiO858gXNY39o5wISKyw= - -buffer-from@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" - integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== - -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@^5.2.1, buffer@^5.4.2, buffer@^5.4.3, buffer@^5.5.0, buffer@^5.6.0: - version "5.7.1" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" - integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== - dependencies: - base64-js "^1.3.1" - ieee754 "^1.1.13" - -buffer@^6.0.3: - version "6.0.3" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6" - integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== - dependencies: - base64-js "^1.3.1" - ieee754 "^1.2.1" - -builtin-status-codes@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" - integrity sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug= - -call-bind@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" - integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== - dependencies: - function-bind "^1.1.1" - get-intrinsic "^1.0.2" - -callsites@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" - integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== - -camelcase@^5.0.0: - 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, 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, 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" - -chalk@^2.0.0, chalk@^2.4.2: - version "2.4.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" - integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== - dependencies: - ansi-styles "^3.2.1" - escape-string-regexp "^1.0.5" - supports-color "^5.3.0" - -chokidar@3.5.1: - version "3.5.1" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.1.tgz#ee9ce7bbebd2b79f49f304799d5468e31e14e68a" - integrity sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw== - dependencies: - anymatch "~3.1.1" - braces "~3.0.2" - glob-parent "~5.1.0" - is-binary-path "~2.1.0" - is-glob "~4.0.1" - normalize-path "~3.0.0" - readdirp "~3.5.0" - optionalDependencies: - fsevents "~2.3.1" - -chownr@^1.0.1: - version "1.1.4" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" - integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== - -chownr@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece" - integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== - -cids@~0.7.0, 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" - -cids@~0.8.0: - version "0.8.3" - resolved "https://registry.yarnpkg.com/cids/-/cids-0.8.3.tgz#aaf48ac8ed857c3d37dad94d8db1d8c9407b92db" - integrity sha512-yoXTbV3llpm+EBGWKeL9xKtksPE/s6DPoDSY4fn8I8TEW1zehWXPSB0pwAXVDlLaOlrw+sNynj995uD9abmPhA== - dependencies: - buffer "^5.6.0" - class-is "^1.1.0" - multibase "^1.0.0" - multicodec "^1.0.1" - multihashes "^1.0.1" - -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== - -cli-cursor@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" - integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== - dependencies: - restore-cursor "^3.1.0" - -cli-spinners@^2.2.0: - version "2.6.1" - resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.6.1.tgz#adc954ebe281c37a6319bfa401e6dd2488ffb70d" - integrity sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g== - -cli-table3@~0.5.0: - version "0.5.1" - resolved "https://registry.yarnpkg.com/cli-table3/-/cli-table3-0.5.1.tgz#0252372d94dfc40dbd8df06005f48f31f656f202" - integrity sha512-7Qg2Jrep1S/+Q3EceiZtQcDPWxhAvBw+ERf1162v4sikJrvojMHFqXt8QIVha8UlH9rgU0BeWPytZ9/TzYqlUw== - dependencies: - object-assign "^4.1.0" - string-width "^2.1.1" - optionalDependencies: - colors "^1.1.2" - -clone@^1.0.2: - version "1.0.4" - resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" - integrity sha1-2jCcwmPfFZlMaIypAheco8fNfH4= - -color-convert@^1.9.0: - version "1.9.3" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" - integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== - dependencies: - color-name "1.1.3" - -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.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" - integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= - -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== - -colors@1.3.3: - version "1.3.3" - resolved "https://registry.yarnpkg.com/colors/-/colors-1.3.3.tgz#39e005d546afe01e01f9c4ca8fa50f686a01205d" - integrity sha512-mmGt/1pZqYRjMxB1axhTo16/snVZ5krrKkcmMeVKxzECMMXoCgnvTPp10QgHfcbQZw8Dq2jMNG6je4JlWU0gWg== - -colors@^1.1.2: - version "1.4.0" - resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78" - integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA== - -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" - -commander@^2.12.2, commander@^2.15.0: - version "2.20.3" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" - integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== - -concat-map@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= - -concat-stream@^1.6.0, concat-stream@^1.6.2, concat-stream@~1.6.2: - version "1.6.2" - resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" - integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== - dependencies: - buffer-from "^1.0.0" - inherits "^2.0.3" - readable-stream "^2.2.2" - typedarray "^0.0.6" - -"concat-stream@github:hugomrdias/concat-stream#feat/smaller": - version "2.0.0" - resolved "https://codeload.github.com/hugomrdias/concat-stream/tar.gz/057bc7b5d6d8df26c8cf00a3f151b6721a0a8034" - dependencies: - inherits "^2.0.3" - readable-stream "^3.0.2" - -core-util-is@1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" - integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= - -core-util-is@~1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" - integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== - -cosmiconfig@6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-6.0.0.tgz#da4fee853c52f6b1e6935f41c1a2fc50bd4a9982" - integrity sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg== - dependencies: - "@types/parse-json" "^4.0.0" - import-fresh "^3.1.0" - parse-json "^5.0.0" - path-type "^4.0.0" - yaml "^1.7.2" - -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.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" - -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" - -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@4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" - integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== - dependencies: - ms "^2.1.1" - -debug@^3.2.6: - version "3.2.7" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" - integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== - dependencies: - ms "^2.1.1" - -debug@^4.1.0: - version "4.3.3" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.3.tgz#04266e0b70a98d4462e6e288e38259213332b664" - integrity sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q== - dependencies: - ms "2.1.2" - -decamelize@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" - integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= - -defaults@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.3.tgz#c656051e9817d9ff08ed881477f3fe4019f3ef7d" - integrity sha1-xlYFHpgX2f8I7YgUd/P+QBnz730= - dependencies: - clone "^1.0.2" - -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= - -delimit-stream@0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/delimit-stream/-/delimit-stream-0.1.0.tgz#9b8319477c0e5f8aeb3ce357ae305fc25ea1cd2b" - integrity sha1-m4MZR3wOX4rrPONXrjBfwl6hzSs= - -detect-node@^2.0.4: - version "2.1.0" - resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.1.0.tgz#c9c70775a49c3d03bc2c06d9a73be550f978f8b1" - integrity sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g== - -docker-compose@0.23.4: - version "0.23.4" - resolved "https://registry.yarnpkg.com/docker-compose/-/docker-compose-0.23.4.tgz#43bcabcde55a6ba2873b52fe0ccd99dd8fdceba8" - integrity sha512-yWdXby9uQ8o4syOfvoSJ9ZlTnLipvUmDn59uaYY5VGIUSUAfMPPGqE1DE3pOCnfSg9Tl9UOOFO0PCSAzuIHmuA== - -docker-modem@^1.0.8: - version "1.0.9" - resolved "https://registry.yarnpkg.com/docker-modem/-/docker-modem-1.0.9.tgz#a1f13e50e6afb6cf3431b2d5e7aac589db6aaba8" - integrity sha512-lVjqCSCIAUDZPAZIeyM125HXfNvOmYYInciphNrLrylUtKyW66meAjSPXWchKVzoIYZx69TPnAepVSSkeawoIw== - dependencies: - JSONStream "1.3.2" - debug "^3.2.6" - readable-stream "~1.0.26-4" - split-ca "^1.0.0" - -dockerode@2.5.8: - version "2.5.8" - resolved "https://registry.yarnpkg.com/dockerode/-/dockerode-2.5.8.tgz#1b661e36e1e4f860e25f56e0deabe9f87f1d0acc" - integrity sha512-+7iOUYBeDTScmOmQqpUYQaE7F4vvIt6+gIZNHWhqAQEI887tiPFB9OvXI/HzQYqfUNvukMK+9myLW63oTJPZpw== - dependencies: - concat-stream "~1.6.2" - docker-modem "^1.0.8" - tar-fs "~1.16.3" - -drbg.js@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/drbg.js/-/drbg.js-1.0.1.tgz#3e36b6c42b37043823cdbc332d58f31e2445480b" - integrity sha1-Pja2xCs3BDgjzbwzLVjzHiRFSAs= - dependencies: - browserify-aes "^1.0.6" - create-hash "^1.1.2" - create-hmac "^1.1.4" - -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" - -ejs@^2.6.1: - version "2.7.4" - resolved "https://registry.yarnpkg.com/ejs/-/ejs-2.7.4.tgz#48661287573dcc53e366c7a1ae52c3a120eec9ba" - integrity sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA== - -elliptic@6.5.4, elliptic@^6.5.2, elliptic@^6.5.4: - version "6.5.4" - resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" - integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ== - dependencies: - bn.js "^4.11.9" - brorand "^1.1.0" - hash.js "^1.0.0" - hmac-drbg "^1.0.1" - inherits "^2.0.4" - minimalistic-assert "^1.0.1" - minimalistic-crypto-utils "^1.0.1" - -end-of-stream@^1.0.0, end-of-stream@^1.1.0, end-of-stream@^1.4.1: - 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" - -enquirer@2.3.4: - version "2.3.4" - resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.4.tgz#c608f2e1134c7f68c1c9ee056de13f9b31076de9" - integrity sha512-pkYrrDZumL2VS6VBGDhqbajCM2xpkUNLuKfGPjfKaSIBKYopQbqEFyrOkRMIb2HDR/rO1kGhEt/5twBwtzKBXw== - dependencies: - ansi-colors "^3.2.1" - -err-code@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/err-code/-/err-code-1.1.2.tgz#06e0116d3028f6aef4806849eb0ea6a748ae6960" - integrity sha1-BuARbTAo9q70gGhJ6w6mp0iuaWA= - -err-code@^2.0.0: - version "2.0.3" - resolved "https://registry.yarnpkg.com/err-code/-/err-code-2.0.3.tgz#23c2f3b756ffdfc608d30e27c9a941024807e7f9" - integrity sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA== - -error-ex@^1.3.1: - version "1.3.2" - resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" - integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== - dependencies: - is-arrayish "^0.2.1" - -es6-promise@^4.0.3: - version "4.2.8" - resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.8.tgz#4eb21594c972bc40553d276e510539143db53e0a" - integrity sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w== - -es6-promisify@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/es6-promisify/-/es6-promisify-5.0.0.tgz#5109d62f3e56ea967c4b63505aef08291c8a5203" - integrity sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM= - dependencies: - es6-promise "^4.0.3" - -escape-string-regexp@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" - integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= - -esprima@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" - integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== - -ethereum-bloom-filters@^1.0.6: - version "1.0.10" - resolved "https://registry.yarnpkg.com/ethereum-bloom-filters/-/ethereum-bloom-filters-1.0.10.tgz#3ca07f4aed698e75bd134584850260246a5fed8a" - integrity sha512-rxJ5OFN3RwjQxDcFP2Z5+Q9ho4eIdEmSc2ht0fCu8Se9nbXjZ7/031uXoUYJ87KHCOdVeiUuwSnoS7hmYAGVHA== - 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== - 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-util@^7.1.0: - version "7.1.4" - resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-7.1.4.tgz#a6885bcdd92045b06f596c7626c3e89ab3312458" - integrity sha512-p6KmuPCX4mZIqsQzXfmSx9Y0l2hqf+VkAiwSisW3UKUFdk8ZkAt+AYaor83z2nSi6CU2zSsXMlD80hAbNEGM0A== - dependencies: - "@types/bn.js" "^5.1.0" - bn.js "^5.1.2" - create-hash "^1.1.2" - ethereum-cryptography "^0.1.3" - rlp "^2.2.4" - -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" - -event-target-shim@^5.0.0: - version "5.0.1" - resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789" - integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== - -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@^3.0.0: - version "3.4.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-3.4.0.tgz#c08ed4550ef65d858fac269ffc8572446f37eb89" - integrity sha512-r9vdGQk4bmCuK1yKQu1KTwcT2zwfWdbdaXfCtAh+5nU/4fSX+JAb7vZGvI5naJrQlvONrEB20jeruESI69530g== - 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" - p-finally "^2.0.0" - signal-exit "^3.0.2" - strip-final-newline "^2.0.0" - -explain-error@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/explain-error/-/explain-error-1.0.4.tgz#a793d3ac0cad4c6ab571e9968fbbab6cb2532929" - integrity sha1-p5PTrAytTGq1cemWj7urbLJTKSk= - -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.1" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.1.tgz#8d172c064867f235c0c84a596806d279bf4bcc07" - integrity sha512-Wrk35e8ydCKDj/ArClo1VrPVmN8zph5V4AtHwIuHhvMXsKf73UT3BOD+azBIW+3wOJ4FhEH7zyaJCFvChjYvMA== - -eyes@^0.1.8: - version "0.1.8" - resolved "https://registry.yarnpkg.com/eyes/-/eyes-0.1.8.tgz#62cf120234c683785d902348a800ef3e0cc20bc0" - integrity sha1-Ys8SAjTGg3hdkCNIqADvPgzCC8A= - -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== - -file-uri-to-path@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" - integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== - -fill-range@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" - integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== - dependencies: - to-regex-range "^5.0.1" - -flatmap@0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/flatmap/-/flatmap-0.0.3.tgz#1f18a4d938152d495965f9c958d923ab2dd669b4" - integrity sha1-Hxik2TgVLUlZZfnJWNkjqy3WabQ= - -follow-redirects@^1.14.0: - version "1.14.7" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.14.7.tgz#2004c02eb9436eee9a21446a6477debf17e81685" - integrity sha512-+hbxoLbFMbRKDwohX8GkTataGqO6Jb7jGwpAlwgy2bIz25XtRm7KEzJM76R1WiNT5SwZkX4Y75SwBolkpmE7iQ== - -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.2.0: - version "2.5.1" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.5.1.tgz#f2cbec57b5e59e23716e128fe44d4e5dd23895f4" - integrity sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA== - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.6" - mime-types "^2.1.12" - -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" - -fs-constants@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" - integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== - -fs-extra@9.0.0: - version "9.0.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.0.0.tgz#b6afc31036e247b2466dc99c29ae797d5d4580a3" - integrity sha512-pmEYSk3vYsG/bF651KPUXZ+hvjpgWYw/Gc7W9NFUe3ZVLczKKWIij3IKpOrQcdw4TILtibFslZ0UmR8Vvzig4g== - dependencies: - at-least-node "^1.0.0" - graceful-fs "^4.2.0" - jsonfile "^6.0.1" - universalify "^1.0.0" - -fs-jetpack@^2.2.2: - version "2.4.0" - resolved "https://registry.yarnpkg.com/fs-jetpack/-/fs-jetpack-2.4.0.tgz#6080c4ab464a019d37a404baeb47f32af8835026" - integrity sha512-S/o9Dd7K9A7gicVU32eT8G0kHcmSu0rCVdP79P0MWInKFb8XpTc8Syhoo66k9no+HDshtlh4pUJTws8X+8fdFQ== - dependencies: - minimatch "^3.0.2" - rimraf "^2.6.3" - -fs-minipass@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" - integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== - dependencies: - minipass "^3.0.0" - -fs.realpath@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" - integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= - -fsevents@~2.3.1: - version "2.3.2" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" - integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== - -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-intrinsic@^1.0.2: - version "1.1.1" - resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6" - integrity sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q== - dependencies: - function-bind "^1.1.1" - has "^1.0.3" - has-symbols "^1.0.1" - -get-port@^3.1.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/get-port/-/get-port-3.2.0.tgz#dd7ce7de187c06c8bf353796ac71e099f0980ebc" - integrity sha1-3Xzn3hh8Bsi/NTeWrHHgmfCYDrw= - -get-stream@^5.0.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" - -glob-parent@~5.1.0: - version "5.1.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" - integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== - dependencies: - is-glob "^4.0.1" - -glob@7.1.6: - version "7.1.6" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" - integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.4" - once "^1.3.0" - path-is-absolute "^1.0.0" - -glob@^7.1.3: - version "7.2.0" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" - integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.4" - once "^1.3.0" - path-is-absolute "^1.0.0" - -"gluegun@git+https://github.com/edgeandnode/gluegun.git#v4.3.1-pin-colors-dep": - version "4.3.1" - resolved "git+https://github.com/edgeandnode/gluegun.git#b34b9003d7bf556836da41b57ef36eb21570620a" - dependencies: - apisauce "^1.0.1" - app-module-path "^2.2.0" - cli-table3 "~0.5.0" - colors "1.3.3" - cosmiconfig "6.0.0" - cross-spawn "^7.0.0" - ejs "^2.6.1" - enquirer "2.3.4" - execa "^3.0.0" - fs-jetpack "^2.2.2" - lodash.camelcase "^4.3.0" - lodash.kebabcase "^4.1.1" - lodash.lowercase "^4.3.0" - lodash.lowerfirst "^4.3.1" - lodash.pad "^4.5.1" - lodash.padend "^4.6.1" - lodash.padstart "^4.6.1" - lodash.repeat "^4.1.0" - lodash.snakecase "^4.1.1" - lodash.startcase "^4.4.0" - lodash.trim "^4.5.1" - lodash.trimend "^4.5.1" - lodash.trimstart "^4.5.1" - lodash.uppercase "^4.3.0" - lodash.upperfirst "^4.3.1" - ora "^4.0.0" - pluralize "^8.0.0" - ramdasauce "^2.1.0" - semver "^7.0.0" - which "^2.0.0" - yargs-parser "^16.1.0" - -graceful-fs@^4.1.6, graceful-fs@^4.2.0: - version "4.2.9" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.9.tgz#041b05df45755e587a24942279b9d113146e1c96" - integrity sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ== - -graphql@15.5.0: - version "15.5.0" - resolved "https://registry.yarnpkg.com/graphql/-/graphql-15.5.0.tgz#39d19494dbe69d1ea719915b578bf920344a69d5" - integrity sha512-OmaM7y0kaK31NKG31q4YbD2beNYa6jBBKtMFT6gLYJljHLJr42IqJ8KX08u3Li/0ifzTU5HjmoOOrwa5BRLeDA== - -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@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" - integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= - -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-symbols@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.2.tgz#165d3070c00309752a1236a479331e3ac56f1423" - integrity sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw== - -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.1.7, 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" - -hi-base32@~0.5.0: - version "0.5.1" - resolved "https://registry.yarnpkg.com/hi-base32/-/hi-base32-0.5.1.tgz#1279f2ddae2673219ea5870c2121d2a33132857e" - integrity sha512-EmBBpvdYh/4XxsnUybsPag6VikPYnN30td+vQk+GI3qpahVEG9+gTkG0aXVxTjBqQ5T6ijbWIu77O+C5WFWsnA== - -hmac-drbg@^1.0.1: - 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-basic@^8.1.1: - version "8.1.3" - resolved "https://registry.yarnpkg.com/http-basic/-/http-basic-8.1.3.tgz#a7cabee7526869b9b710136970805b1004261bbf" - integrity sha512-/EcDMwJZh3mABI2NhGfHOGOeOZITqfkEO4p/xK+l3NpyncIHUQBoMvCSF/b5GqvKtySC2srL/GGG3+EtlqlmCw== - dependencies: - caseless "^0.12.0" - concat-stream "^1.6.2" - http-response-object "^3.0.1" - parse-cache-control "^1.0.1" - -http-response-object@^3.0.1: - version "3.0.2" - resolved "https://registry.yarnpkg.com/http-response-object/-/http-response-object-3.0.2.tgz#7f435bb210454e4360d074ef1f989d5ea8aa9810" - integrity sha512-bqX0XTF6fnXSQcEJ2Iuyr75yVakyjIDCqroJQ/aHfSdlM743Cwqoi2nDYMzLGWUcuTWGWy8AAvOKXTfiv6q9RA== - dependencies: - "@types/node" "^10.0.3" - -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== - -ieee754@^1.1.13, ieee754@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" - integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== - -immutable@3.8.2: - version "3.8.2" - resolved "https://registry.yarnpkg.com/immutable/-/immutable-3.8.2.tgz#c2439951455bb39913daf281376f1530e104adf3" - integrity sha1-wkOZUUVbs5kT2vKBN28VMOEErfM= - -import-fresh@^3.1.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" - integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== - dependencies: - parent-module "^1.0.0" - resolve-from "^4.0.0" - -inflight@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" - integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= - dependencies: - once "^1.3.0" - wrappy "1" - -inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, 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== - -ip-regex@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9" - integrity sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk= - -ip-regex@^4.0.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-4.3.0.tgz#687275ab0f57fa76978ff8f4dddc8a23d5990db5" - integrity sha512-B9ZWJxHHOHUhUjCPrMpLD4xEq35bUTClHM1S6CBU5ixQnkZmwipwgc96vAd7AAGM9TGHvJR+Uss+/Ak6UphK+Q== - -ip@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" - integrity sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo= - -ipfs-block@~0.8.1: - version "0.8.1" - resolved "https://registry.yarnpkg.com/ipfs-block/-/ipfs-block-0.8.1.tgz#05e1068832775e8f1c2da5b64106cc837fd2acb9" - integrity sha512-0FaCpmij+jZBoUYhjoB5ptjdl9QzvrdRIoBmUU5JiBnK2GA+4YM/ifklaB8ePRhA/rRzhd+KYBjvMFMAL4NrVQ== - dependencies: - cids "~0.7.0" - class-is "^1.1.0" - -ipfs-http-client@34.0.0: - version "34.0.0" - resolved "https://registry.yarnpkg.com/ipfs-http-client/-/ipfs-http-client-34.0.0.tgz#8804d06a11c22306332a8ffa0949b6f672a0c9c8" - integrity sha512-4RCkk8ix4Dqn6sxqFVwuXWCZ1eLFPsVaj6Ijvu1fs9VYgxgVudsW9PWwarlr4mw1xUCmPWYyXnEbGgzBrfMy0Q== - dependencies: - abort-controller "^3.0.0" - async "^2.6.1" - bignumber.js "^9.0.0" - bl "^3.0.0" - bs58 "^4.0.1" - buffer "^5.4.2" - cids "~0.7.1" - concat-stream "github:hugomrdias/concat-stream#feat/smaller" - debug "^4.1.0" - detect-node "^2.0.4" - end-of-stream "^1.4.1" - err-code "^2.0.0" - explain-error "^1.0.4" - flatmap "0.0.3" - glob "^7.1.3" - ipfs-block "~0.8.1" - ipfs-utils "~0.0.3" - ipld-dag-cbor "~0.15.0" - ipld-dag-pb "~0.17.3" - ipld-raw "^4.0.0" - is-ipfs "~0.6.1" - is-pull-stream "0.0.0" - is-stream "^2.0.0" - iso-stream-http "~0.1.2" - iso-url "~0.4.6" - iterable-ndjson "^1.1.0" - just-kebab-case "^1.1.0" - just-map-keys "^1.1.0" - kind-of "^6.0.2" - ky "^0.11.2" - ky-universal "^0.2.2" - lru-cache "^5.1.1" - multiaddr "^6.0.6" - multibase "~0.6.0" - multicodec "~0.5.1" - multihashes "~0.4.14" - ndjson "github:hugomrdias/ndjson#feat/readable-stream3" - once "^1.4.0" - peer-id "~0.12.3" - peer-info "~0.15.1" - promise-nodeify "^3.0.1" - promisify-es6 "^1.0.3" - pull-defer "~0.2.3" - pull-stream "^3.6.9" - pull-to-stream "~0.1.1" - pump "^3.0.0" - qs "^6.5.2" - readable-stream "^3.1.1" - stream-to-pull-stream "^1.7.2" - tar-stream "^2.0.1" - through2 "^3.0.1" - -ipfs-utils@~0.0.3: - version "0.0.4" - resolved "https://registry.yarnpkg.com/ipfs-utils/-/ipfs-utils-0.0.4.tgz#946114cfeb6afb4454b4ccb10d2327cd323b0cce" - integrity sha512-7cZf6aGj2FG3XJWhCNwn4mS93Q0GEWjtBZvEHqzgI43U2qzNDCyzfS1pei1Y5F+tw/zDJ5U4XG0G9reJxR53Ig== - dependencies: - buffer "^5.2.1" - is-buffer "^2.0.3" - is-electron "^2.2.0" - is-pull-stream "0.0.0" - is-stream "^2.0.0" - kind-of "^6.0.2" - readable-stream "^3.4.0" - -ipld-dag-cbor@~0.15.0: - version "0.15.3" - resolved "https://registry.yarnpkg.com/ipld-dag-cbor/-/ipld-dag-cbor-0.15.3.tgz#283afdb81d5b07db8e4fff7a10ef5e517e87f299" - integrity sha512-m23nG7ZyoVFnkK55/bLAErc7EfiMgaEQlqHWDTGzPI+O5r6bPfp+qbL5zTVSIT8tpbHmu174dwerVtLoVgeVyA== - dependencies: - borc "^2.1.2" - buffer "^5.5.0" - cids "~0.8.0" - is-circular "^1.0.2" - multicodec "^1.0.0" - multihashing-async "~0.8.0" - -ipld-dag-pb@~0.17.3: - version "0.17.4" - resolved "https://registry.yarnpkg.com/ipld-dag-pb/-/ipld-dag-pb-0.17.4.tgz#080841cfdd014d996f8da7f3a522ec8b1f6b6494" - integrity sha512-YwCxETEMuXVspOKOhjIOHJvKvB/OZfCDkpSFiYBQN2/JQjM9y/RFCYzIQGm0wg7dCFLrhvfjAZLTSaKs65jzWA== - dependencies: - cids "~0.7.0" - class-is "^1.1.0" - multicodec "~0.5.1" - multihashing-async "~0.7.0" - protons "^1.0.1" - stable "~0.1.8" - -ipld-raw@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/ipld-raw/-/ipld-raw-4.0.1.tgz#49a6f58cdfece5a4d581925b19ee19255be2a29d" - integrity sha512-WjIdtZ06jJEar8zh+BHB84tE6ZdbS/XNa7+XCArOYfmeJ/c01T9VQpeMwdJQYn5c3s5UvvCu7y4VIi3vk2g1bA== - dependencies: - cids "~0.7.0" - multicodec "^1.0.0" - multihashing-async "~0.8.0" - -is-arrayish@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" - integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= - -is-binary-path@~2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" - integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== - dependencies: - binary-extensions "^2.0.0" - -is-buffer@^2.0.3: - version "2.0.5" - resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.5.tgz#ebc252e400d22ff8d77fa09888821a24a658c191" - integrity sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ== - -is-circular@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-circular/-/is-circular-1.0.2.tgz#2e0ab4e9835f4c6b0ea2b9855a84acd501b8366c" - integrity sha512-YttjnrswnUYRVJvxCvu8z+PGMUSzC2JttP0OEXezlAEdp3EXzhf7IZ3j0gRAybJBQupedIZFhY61Tga6E0qASA== - -is-electron@^2.2.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/is-electron/-/is-electron-2.2.1.tgz#751b1dd8a74907422faa5c35aaa0cf66d98086e9" - integrity sha512-r8EEQQsqT+Gn0aXFx7lTFygYQhILLCB+wn0WCDL5LZRINeLH/Rvw1j2oKodELLXYNImQ3CRlVsY8wW4cGOsyuw== - -is-extglob@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" - integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= - -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-glob@^4.0.1, is-glob@~4.0.1: - version "4.0.3" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" - integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== - dependencies: - is-extglob "^2.1.1" - -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-interactive@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-interactive/-/is-interactive-1.0.0.tgz#cea6e6ae5c870a7b0a0004070b7b587e0252912e" - integrity sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w== - -is-ip@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-ip/-/is-ip-2.0.0.tgz#68eea07e8a0a0a94c2d080dd674c731ab2a461ab" - integrity sha1-aO6gfooKCpTC0IDdZ0xzGrKkYas= - dependencies: - ip-regex "^2.0.0" - -is-ip@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/is-ip/-/is-ip-3.1.0.tgz#2ae5ddfafaf05cb8008a62093cf29734f657c5d8" - integrity sha512-35vd5necO7IitFPjd/YBeqwWnyDWbuLH9ZXQdMfDA8TEo7pv5X8yfrvVO3xbJbLUlERCMvf6X0hTUamQxCYJ9Q== - dependencies: - ip-regex "^4.0.0" - -is-ipfs@~0.6.1: - version "0.6.3" - resolved "https://registry.yarnpkg.com/is-ipfs/-/is-ipfs-0.6.3.tgz#82a5350e0a42d01441c40b369f8791e91404c497" - integrity sha512-HyRot1dvLcxImtDqPxAaY1miO6WsiP/z7Yxpg2qpaLWv5UdhAPtLvHJ4kMLM0w8GSl8AFsVF23PHe1LzuWrUlQ== - dependencies: - bs58 "^4.0.1" - cids "~0.7.0" - mafmt "^7.0.0" - multiaddr "^7.2.1" - multibase "~0.6.0" - multihashes "~0.4.13" - -is-number@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" - integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== - -is-promise@~1, is-promise@~1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-1.0.1.tgz#31573761c057e33c2e91aab9e96da08cefbe76e5" - integrity sha1-MVc3YcBX4zwukaq56W2gjO++duU= - -is-pull-stream@0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/is-pull-stream/-/is-pull-stream-0.0.0.tgz#a3bc3d1c6d3055151c46bde6f399efed21440ca9" - integrity sha1-o7w9HG0wVRUcRr3m85nv7SFEDKk= - -is-stream@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" - integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== - -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= - -isarray@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" - integrity sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8= - -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= - -iso-random-stream@^1.1.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/iso-random-stream/-/iso-random-stream-1.1.2.tgz#c703da2c518db573277c5678cc43c5298283d64c" - integrity sha512-7y0tsBBgQs544iTYjyrMp5xvgrbYR8b+plQq1Bryp+03p0LssrxC9C1M0oHv4QESDt7d95c74XvMk/yawKqX+A== - dependencies: - buffer "^6.0.3" - readable-stream "^3.4.0" - -iso-stream-http@~0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/iso-stream-http/-/iso-stream-http-0.1.2.tgz#b3dfea4c9f23ff26d078d40c539cfc0dfebacd37" - integrity sha512-oHEDNOysIMTNypbg2f1SlydqRBvjl4ZbSE9+0awVxnkx3K2stGTFwB/kpVqnB6UEfF8QD36kAjDwZvqyXBLMnQ== - dependencies: - builtin-status-codes "^3.0.0" - inherits "^2.0.1" - readable-stream "^3.1.1" - -iso-url@~0.4.6, iso-url@~0.4.7: - version "0.4.7" - resolved "https://registry.yarnpkg.com/iso-url/-/iso-url-0.4.7.tgz#de7e48120dae46921079fe78f325ac9e9217a385" - integrity sha512-27fFRDnPAMnHGLq36bWTpKET+eiXct3ENlCcdcMdk+mjXrb2kw3mhBUg1B7ewAC0kVzlOPhADzQgz1SE6Tglog== - -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= - -iterable-ndjson@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/iterable-ndjson/-/iterable-ndjson-1.1.0.tgz#36f7e8a5bb04fd087d384f29e44fc4280fc014fc" - integrity sha512-OOp1Lb0o3k5MkXHx1YaIY5Z0ELosZfTnBaas9f8opJVcZGBIONA2zY/6CYE+LKkqrSDooIneZbrBGgOZnHPkrg== - dependencies: - string_decoder "^1.2.0" - -jayson@3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/jayson/-/jayson-3.2.0.tgz#df6d8139cd9f6ee2f56c8c2deaee448da7eccf1b" - integrity sha512-DZQnwA57GcStw4soSYB2VntWXFfoWvmSarlaWePDYOWhjxT72PBM4atEBomaTaS1uqk3jFC9UO9AyWjlujo3xw== - dependencies: - "@types/connect" "^3.4.32" - "@types/express-serve-static-core" "^4.16.9" - "@types/lodash" "^4.14.139" - "@types/node" "^12.7.7" - JSONStream "^1.3.1" - commander "^2.12.2" - es6-promisify "^5.0.0" - eyes "^0.1.8" - json-stringify-safe "^5.0.1" - lodash "^4.17.15" - uuid "^3.2.1" - -js-sha3@0.8.0, js-sha3@^0.8.0, 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-tokens@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" - integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== - -js-yaml@3.13.1: - version "3.13.1" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847" - integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw== - dependencies: - argparse "^1.0.7" - esprima "^4.0.0" - -jsbn@~0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" - integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= - -json-parse-even-better-errors@^2.3.0: - version "2.3.1" - resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" - integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== - -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.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.4.0.tgz#f7de4cf6efab838ebaeb3236474cbba5a1930ab5" - integrity sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA== - -json-stringify-safe@^5.0.1, 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= - -json-text-sequence@~0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/json-text-sequence/-/json-text-sequence-0.1.1.tgz#a72f217dc4afc4629fff5feb304dc1bd51a2f3d2" - integrity sha1-py8hfcSvxGKf/1/rME3BvVGi89I= - dependencies: - delimit-stream "0.1.0" - -jsonfile@^6.0.1: - version "6.1.0" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" - integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== - dependencies: - universalify "^2.0.0" - optionalDependencies: - graceful-fs "^4.1.6" - -jsonparse@^1.2.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280" - integrity sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA= - -jsprim@^1.2.2: - version "1.4.2" - resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.2.tgz#712c65533a15c878ba59e9ed5f0e26d5b77c5feb" - integrity sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw== - dependencies: - assert-plus "1.0.0" - extsprintf "1.3.0" - json-schema "0.4.0" - verror "1.10.0" - -just-kebab-case@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/just-kebab-case/-/just-kebab-case-1.1.0.tgz#ebe854fde84b0afa4e597fcd870b12eb3c026755" - integrity sha512-QkuwuBMQ9BQHMUEkAtIA4INLrkmnnveqlFB1oFi09gbU0wBdZo6tTnyxNWMR84zHxBuwK7GLAwqN8nrvVxOLTA== - -just-map-keys@^1.1.0: - version "1.2.1" - resolved "https://registry.yarnpkg.com/just-map-keys/-/just-map-keys-1.2.1.tgz#ef6e16133b7d34329962dfae9101d581abb1b143" - integrity sha512-Dmyz1Cy2SWM+PpqDPB1kdDglyexdzMthnAsvOIE9w4OPj8NDRuY1mh20x/JfG5w6fCGw9F0WmcofJhYZ4MiuyA== - -keccak@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/keccak/-/keccak-3.0.2.tgz#4c2c6e8c54e04f2670ee49fa734eb9da152206e0" - integrity sha512-PyKKjkH53wDMLGrvmRGSNWgmSxZOUqbnXwKL9tmgbFYA1iAYqW21kfR7mZXV0MlESiefxQQE9X9fTa3X+2MPDQ== - dependencies: - node-addon-api "^2.0.0" - node-gyp-build "^4.2.0" - readable-stream "^3.6.0" - -keypair@^1.0.1: - version "1.0.4" - resolved "https://registry.yarnpkg.com/keypair/-/keypair-1.0.4.tgz#a749a45f388593f3950f18b3757d32a93bd8ce83" - integrity sha512-zwhgOhhniaL7oxMgUMKKw5219PWWABMO+dgMnzJOQ2/5L3XJtTJGhW2PEXlxXj9zaccdReZJZ83+4NPhVfNVDg== - -kind-of@^6.0.2: - version "6.0.3" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" - integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== - -ky-universal@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/ky-universal/-/ky-universal-0.2.2.tgz#7a36e1a75641a98f878157463513965f799f5bfe" - integrity sha512-fb32o/fKy/ux2ALWa9HU2hvGtfOq7/vn2nH0FpVE+jwNzyTeORlAbj3Fiw+WLMbUlmVqZIWupnLZ2USHvqwZHw== - dependencies: - abort-controller "^3.0.0" - node-fetch "^2.3.0" - -ky@^0.11.2: - version "0.11.2" - resolved "https://registry.yarnpkg.com/ky/-/ky-0.11.2.tgz#4ffe6621d9d9ab61bf0f5500542e3a96d1ba0815" - integrity sha512-5Aou5BWue5/mkPqIRqzSWW+0Hkl403pr/2AIrCKYw7cVl/Xoe8Xe4KLBO0PRjbz7GnRe1/8wW1KhqQNFFE7/GQ== - -libp2p-crypto-secp256k1@~0.3.0: - version "0.3.1" - resolved "https://registry.yarnpkg.com/libp2p-crypto-secp256k1/-/libp2p-crypto-secp256k1-0.3.1.tgz#4cbeb857f5cfe5fefb1253e6b2994420c0ca166e" - integrity sha512-evrfK/CeUSd/lcELUdDruyPBvxDmLairth75S32OLl3H+++2m2fV24JEtxzdFS9JH3xEFw0h6JFO8DBa1bP9dA== - dependencies: - async "^2.6.2" - bs58 "^4.0.1" - multihashing-async "~0.6.0" - nodeify "^1.0.1" - safe-buffer "^5.1.2" - secp256k1 "^3.6.2" - -libp2p-crypto@~0.16.1: - version "0.16.4" - resolved "https://registry.yarnpkg.com/libp2p-crypto/-/libp2p-crypto-0.16.4.tgz#fb1a4ba39d56789303947784b5b0d6cefce12fdc" - integrity sha512-II8HxKc9jbmQp34pprlluNxsBCWJDjHRPYJzuRy7ragztNip9Zb7uJ4lCje6gGzz4DNAcHkAUn+GqCIK1592iA== - dependencies: - asmcrypto.js "^2.3.2" - asn1.js "^5.0.1" - async "^2.6.1" - bn.js "^4.11.8" - browserify-aes "^1.2.0" - bs58 "^4.0.1" - iso-random-stream "^1.1.0" - keypair "^1.0.1" - libp2p-crypto-secp256k1 "~0.3.0" - multihashing-async "~0.5.1" - node-forge "^0.10.0" - pem-jwk "^2.0.0" - protons "^1.0.1" - rsa-pem-to-jwk "^1.1.3" - tweetnacl "^1.0.0" - ursa-optional "~0.10.0" - -lines-and-columns@^1.1.6: - version "1.2.4" - resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" - integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== - -lodash.camelcase@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" - integrity sha1-soqmKIorn8ZRA1x3EfZathkDMaY= - -lodash.kebabcase@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz#8489b1cb0d29ff88195cceca448ff6d6cc295c36" - integrity sha1-hImxyw0p/4gZXM7KRI/21swpXDY= - -lodash.lowercase@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/lodash.lowercase/-/lodash.lowercase-4.3.0.tgz#46515aced4acb0b7093133333af068e4c3b14e9d" - integrity sha1-RlFaztSssLcJMTMzOvBo5MOxTp0= - -lodash.lowerfirst@^4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/lodash.lowerfirst/-/lodash.lowerfirst-4.3.1.tgz#de3c7b12e02c6524a0059c2f6cb7c5c52655a13d" - integrity sha1-3jx7EuAsZSSgBZwvbLfFxSZVoT0= - -lodash.pad@^4.5.1: - version "4.5.1" - resolved "https://registry.yarnpkg.com/lodash.pad/-/lodash.pad-4.5.1.tgz#4330949a833a7c8da22cc20f6a26c4d59debba70" - integrity sha1-QzCUmoM6fI2iLMIPaibE1Z3runA= - -lodash.padend@^4.6.1: - version "4.6.1" - resolved "https://registry.yarnpkg.com/lodash.padend/-/lodash.padend-4.6.1.tgz#53ccba047d06e158d311f45da625f4e49e6f166e" - integrity sha1-U8y6BH0G4VjTEfRdpiX05J5vFm4= - -lodash.padstart@^4.6.1: - version "4.6.1" - resolved "https://registry.yarnpkg.com/lodash.padstart/-/lodash.padstart-4.6.1.tgz#d2e3eebff0d9d39ad50f5cbd1b52a7bce6bb611b" - integrity sha1-0uPuv/DZ05rVD1y9G1KnvOa7YRs= - -lodash.repeat@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/lodash.repeat/-/lodash.repeat-4.1.0.tgz#fc7de8131d8c8ac07e4b49f74ffe829d1f2bec44" - integrity sha1-/H3oEx2MisB+S0n3T/6CnR8r7EQ= - -lodash.snakecase@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/lodash.snakecase/-/lodash.snakecase-4.1.1.tgz#39d714a35357147837aefd64b5dcbb16becd8f8d" - integrity sha1-OdcUo1NXFHg3rv1ktdy7Fr7Nj40= - -lodash.startcase@^4.4.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/lodash.startcase/-/lodash.startcase-4.4.0.tgz#9436e34ed26093ed7ffae1936144350915d9add8" - integrity sha1-lDbjTtJgk+1/+uGTYUQ1CRXZrdg= - -lodash.trim@^4.5.1: - version "4.5.1" - resolved "https://registry.yarnpkg.com/lodash.trim/-/lodash.trim-4.5.1.tgz#36425e7ee90be4aa5e27bcebb85b7d11ea47aa57" - integrity sha1-NkJefukL5KpeJ7zruFt9EepHqlc= - -lodash.trimend@^4.5.1: - version "4.5.1" - resolved "https://registry.yarnpkg.com/lodash.trimend/-/lodash.trimend-4.5.1.tgz#12804437286b98cad8996b79414e11300114082f" - integrity sha1-EoBENyhrmMrYmWt5QU4RMAEUCC8= - -lodash.trimstart@^4.5.1: - version "4.5.1" - resolved "https://registry.yarnpkg.com/lodash.trimstart/-/lodash.trimstart-4.5.1.tgz#8ff4dec532d82486af59573c39445914e944a7f1" - integrity sha1-j/TexTLYJIavWVc8OURZFOlEp/E= - -lodash.uppercase@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/lodash.uppercase/-/lodash.uppercase-4.3.0.tgz#c404abfd1469f93931f9bb24cf6cc7d57059bc73" - integrity sha1-xASr/RRp+Tkx+bskz2zH1XBZvHM= - -lodash.upperfirst@^4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/lodash.upperfirst/-/lodash.upperfirst-4.3.1.tgz#1365edf431480481ef0d1c68957a5ed99d49f7ce" - integrity sha1-E2Xt9DFIBIHvDRxolXpe2Z1J984= - -lodash@^4.17.14, lodash@^4.17.15: - version "4.17.21" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" - integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== - -log-symbols@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-3.0.0.tgz#f3a08516a5dea893336a7dee14d18a1cfdab77c4" - integrity sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ== - dependencies: - chalk "^2.4.2" - -long@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/long/-/long-4.0.0.tgz#9a7b71cfb7d361a194ea555241c92f7468d5bf28" - integrity sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA== - -long@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/long/-/long-5.2.0.tgz#2696dadf4b4da2ce3f6f6b89186085d94d52fd61" - integrity sha512-9RTUNjK60eJbx3uz+TEGF7fUr29ZDxR5QzXcyDpeSfeH28S9ycINflOgOlppit5U+4kNTe83KQnMEerw7GmE8w== - -looper@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/looper/-/looper-3.0.0.tgz#2efa54c3b1cbaba9b94aee2e5914b0be57fbb749" - integrity sha1-LvpUw7HLq6m5Su4uWRSwvlf7t0k= - -lru-cache@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" - integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== - dependencies: - yallist "^3.0.2" - -lru-cache@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" - integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== - dependencies: - yallist "^4.0.0" - -mafmt@^6.0.2: - version "6.0.10" - resolved "https://registry.yarnpkg.com/mafmt/-/mafmt-6.0.10.tgz#3ad251c78f14f8164e66f70fd3265662da41113a" - integrity sha512-FjHDnew6dW9lUu3eYwP0FvvJl9uvNbqfoJM+c1WJcSyutNEIlyu6v3f/rlPnD1cnmue38IjuHlhBdIh3btAiyw== - dependencies: - multiaddr "^6.1.0" - -mafmt@^7.0.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/mafmt/-/mafmt-7.1.0.tgz#4126f6d0eded070ace7dbbb6fb04977412d380b5" - integrity sha512-vpeo9S+hepT3k2h5iFxzEHvvR0GPBx9uKaErmnRzYNcaKb03DgOArjEMlgG4a9LcuZZ89a3I8xbeto487n26eA== - dependencies: - multiaddr "^7.3.0" - -matchstick-as@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/matchstick-as/-/matchstick-as-0.4.0.tgz#7456c2f20abee6d12366b65f4216385a9ef62a50" - integrity sha512-XkWoXQWUg1ms8DaDMkl2M95woGPB89f7aysjwDNst/x+G9FV48dxcAKSwilJ1BVGV3MqU7HfuKGHxegSsuxQxQ== - dependencies: - "@graphprotocol/graph-ts" "^0.24.1" - assemblyscript "^0.19.20" - wabt "1.0.24" - -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" - -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== - -mime-db@1.51.0: - version "1.51.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.51.0.tgz#d9ff62451859b18342d960850dc3cfb77e63fb0c" - integrity sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g== - -mime-types@^2.1.12, mime-types@~2.1.19: - version "2.1.34" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.34.tgz#5a712f9ec1503511a945803640fafe09d3793c24" - integrity sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A== - dependencies: - mime-db "1.51.0" - -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== - -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.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= - -minimatch@^3.0.2, minimatch@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" - integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== - dependencies: - brace-expansion "^1.1.7" - -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@^3.0.0: - version "3.1.6" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.1.6.tgz#3b8150aa688a711a1521af5e8779c1d3bb4f45ee" - integrity sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ== - dependencies: - yallist "^4.0.0" - -minizlib@^2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931" - integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg== - dependencies: - minipass "^3.0.0" - yallist "^4.0.0" - -mkdirp@^0.5.1: - 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" - -mkdirp@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" - integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== - -ms@2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" - integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== - -ms@^2.1.1: - version "2.1.3" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" - integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== - -multiaddr@^6.0.3, multiaddr@^6.0.6, multiaddr@^6.1.0: - version "6.1.1" - resolved "https://registry.yarnpkg.com/multiaddr/-/multiaddr-6.1.1.tgz#9aae57b3e399089b9896d9455afa8f6b117dff06" - integrity sha512-Q1Ika0F9MNhMtCs62Ue+GWIJtRFEhZ3Xz8wH7/MZDVZTWhil1/H2bEGN02kUees3hkI3q1oHSjmXYDM0gxaFjQ== - dependencies: - bs58 "^4.0.1" - class-is "^1.1.0" - hi-base32 "~0.5.0" - ip "^1.1.5" - is-ip "^2.0.0" - varint "^5.0.0" - -multiaddr@^7.2.1, multiaddr@^7.3.0: - version "7.5.0" - resolved "https://registry.yarnpkg.com/multiaddr/-/multiaddr-7.5.0.tgz#976c88e256e512263445ab03b3b68c003d5f485e" - integrity sha512-GvhHsIGDULh06jyb6ev+VfREH9evJCFIRnh3jUt9iEZ6XDbyoisZRFEI9bMvK/AiR6y66y6P+eoBw9mBYMhMvw== - dependencies: - buffer "^5.5.0" - cids "~0.8.0" - class-is "^1.1.0" - is-ip "^3.1.0" - multibase "^0.7.0" - varint "^5.0.0" - -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@^1.0.0, multibase@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/multibase/-/multibase-1.0.1.tgz#4adbe1de0be8a1ab0274328b653c3f1903476724" - integrity sha512-KcCxpBVY8fdVKu4dJMAahq4F/2Z/9xqEjIiR7PiMe7LRGeorFn2NLmicN6nLBCqQvft6MG2Lc9X5P0IdyvnxEw== - 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@^1.0.0, multicodec@^1.0.1: - 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" - -multicodec@~0.5.1: - 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" - -multihashes@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/multihashes/-/multihashes-1.0.1.tgz#a89415d68283cf6287c6e219e304e75ce7fb73fe" - integrity sha512-S27Tepg4i8atNiFaU5ZOm3+gl3KQlUanLs/jWcBxQHFttgq+5x1OgbQmf2d8axJ/48zYGBd/wT9d723USMFduw== - dependencies: - buffer "^5.6.0" - multibase "^1.0.1" - varint "^5.0.0" - -multihashes@~0.4.13, multihashes@~0.4.14, 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" - -multihashing-async@~0.5.1: - version "0.5.2" - resolved "https://registry.yarnpkg.com/multihashing-async/-/multihashing-async-0.5.2.tgz#4af40e0dde2f1dbb12a7c6b265181437ac26b9de" - integrity sha512-mmyG6M/FKxrpBh9xQDUvuJ7BbqT93ZeEeH5X6LeMYKoYshYLr9BDdCsvDtZvn+Egf+/Xi+aOznrWL4vp3s+p0Q== - dependencies: - blakejs "^1.1.0" - js-sha3 "~0.8.0" - multihashes "~0.4.13" - murmurhash3js "^3.0.1" - nodeify "^1.0.1" - -multihashing-async@~0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/multihashing-async/-/multihashing-async-0.6.0.tgz#c1fc6696a624b9bf39b160b0c4c4e7ba3f394453" - integrity sha512-Qv8pgg99Lewc191A5nlXy0bSd2amfqlafNJZmarU6Sj7MZVjpR94SCxQjf4DwPtgWZkiLqsjUQBXA2RSq+hYyA== - dependencies: - blakejs "^1.1.0" - js-sha3 "~0.8.0" - multihashes "~0.4.13" - murmurhash3js "^3.0.1" - nodeify "^1.0.1" - -multihashing-async@~0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/multihashing-async/-/multihashing-async-0.7.0.tgz#3234fb98295be84386b85bfd20377d3e5be20d6b" - integrity sha512-SCbfl3f+DzJh+/5piukga9ofIOxwfT05t8R4jfzZIJ88YE9zU9+l3K2X+XB19MYyxqvyK9UJRNWbmQpZqQlbRA== - dependencies: - blakejs "^1.1.0" - buffer "^5.2.1" - err-code "^1.1.2" - js-sha3 "~0.8.0" - multihashes "~0.4.13" - murmurhash3js-revisited "^3.0.0" - -multihashing-async@~0.8.0: - version "0.8.2" - resolved "https://registry.yarnpkg.com/multihashing-async/-/multihashing-async-0.8.2.tgz#3d5da05df27d83be923f6d04143a0954ff87f27f" - integrity sha512-2lKa1autuCy8x7KIEj9aVNbAb3aIMRFYIwN7mq/zD4pxgNIVgGlm+f6GKY4880EOF2Y3GktHYssRy7TAJQ2DyQ== - dependencies: - blakejs "^1.1.0" - buffer "^5.4.3" - err-code "^2.0.0" - js-sha3 "^0.8.0" - multihashes "^1.0.1" - murmurhash3js-revisited "^3.0.0" - -murmurhash3js-revisited@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/murmurhash3js-revisited/-/murmurhash3js-revisited-3.0.0.tgz#6bd36e25de8f73394222adc6e41fa3fac08a5869" - integrity sha512-/sF3ee6zvScXMb1XFJ8gDsSnY+X8PbOyjIuBhtgis10W2Jx4ZjIhikUCIF9c4gpJxVnQIsPAFrSwTCuAjicP6g== - -murmurhash3js@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/murmurhash3js/-/murmurhash3js-3.0.1.tgz#3e983e5b47c2a06f43a713174e7e435ca044b998" - integrity sha1-Ppg+W0fCoG9DpxMXTn5DXKBEuZg= - -mute-stream@0.0.8: - version "0.0.8" - resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" - integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== - -nan@^2.14.0, nan@^2.14.2: - version "2.15.0" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.15.0.tgz#3f34a473ff18e15c1b5626b62903b5ad6e665fee" - integrity sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ== - -"ndjson@github:hugomrdias/ndjson#feat/readable-stream3": - version "1.5.0" - resolved "https://codeload.github.com/hugomrdias/ndjson/tar.gz/4db16da6b42e5b39bf300c3a7cde62abb3fa3a11" - dependencies: - json-stringify-safe "^5.0.1" - minimist "^1.2.0" - split2 "^3.1.0" - through2 "^3.0.0" - -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: - version "2.6.0" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.0.tgz#e633456386d4aa55863f676a7ab0daa8fdecb0fd" - integrity sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA== - -node-fetch@^2.3.0: - version "2.6.7" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" - integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ== - dependencies: - whatwg-url "^5.0.0" - -node-forge@^0.10.0: - version "0.10.0" - resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.10.0.tgz#32dea2afb3e9926f02ee5ce8794902691a676bf3" - integrity sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA== - -node-gyp-build@^4.2.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.3.0.tgz#9f256b03e5826150be39c764bf51e993946d71a3" - integrity sha512-iWjXZvmboq0ja1pUGULQBexmxq8CV4xBhX7VDOTbL7ZR4FOowwY/VOtRxBN/yKxmdGoIp4j5ysNT4u3S2pDQ3Q== - -nodeify@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/nodeify/-/nodeify-1.0.1.tgz#64ab69a7bdbaf03ce107b4f0335c87c0b9e91b1d" - integrity sha1-ZKtpp7268DzhB7TwM1yHwLnpGx0= - dependencies: - is-promise "~1.0.0" - promise "~1.3.0" - -normalize-path@^3.0.0, normalize-path@~3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" - integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== - -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@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-2.1.1.tgz#43c36e5d569ff8e4816c4efa8be02d26967c18aa" - integrity sha1-Q8NuXVaf+OSBbE76i+AtJpZ8GKo= - -object-assign@^4.1.0: - 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.9.0: - version "1.12.0" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.0.tgz#6e2c120e868fd1fd18cb4f18c31741d0d6e776f0" - integrity sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g== - -once@^1.3.0, 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" - -optimist@~0.3.5: - version "0.3.7" - resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.3.7.tgz#c90941ad59e4273328923074d2cf2e7cbc6ec0d9" - integrity sha1-yQlBrVnkJzMokjB00s8ufLxuwNk= - dependencies: - wordwrap "~0.0.2" - -ora@^4.0.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/ora/-/ora-4.1.1.tgz#566cc0348a15c36f5f0e979612842e02ba9dddbc" - integrity sha512-sjYP8QyVWBpBZWD6Vr1M/KwknSw6kJOz41tvGMlwWeClHBtYKTbHMki1PsLZnxKpXMPbTKv9b3pjQu3REib96A== - dependencies: - chalk "^3.0.0" - cli-cursor "^3.1.0" - cli-spinners "^2.2.0" - is-interactive "^1.0.0" - log-symbols "^3.0.0" - mute-stream "0.0.8" - strip-ansi "^6.0.0" - wcwidth "^1.0.1" - -p-finally@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-2.0.1.tgz#bd6fcaa9c559a096b680806f4d657b3f0f240561" - integrity sha512-vpm09aKwq6H9phqRQzecoDpD8TmVyGw70qmWlyq5onxY7tqyTTFVvxMykxQSQKILBSFlbXpypIw2T1Ml7+DDtw== - -parent-module@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" - integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== - dependencies: - callsites "^3.0.0" - -parse-cache-control@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/parse-cache-control/-/parse-cache-control-1.0.1.tgz#8eeab3e54fa56920fe16ba38f77fa21aacc2d74e" - integrity sha1-juqz5U+laSD+Fro493+iGqzC104= - -parse-json@^5.0.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" - integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== - dependencies: - "@babel/code-frame" "^7.0.0" - error-ex "^1.3.1" - json-parse-even-better-errors "^2.3.0" - lines-and-columns "^1.1.6" - -path-is-absolute@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" - integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= - -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-type@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" - integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== - -pbkdf2@^3.0.17: - version "3.1.2" - resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.2.tgz#dd822aa0887580e52f1a039dc3eda108efae3075" - integrity sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA== - 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" - -peer-id@~0.12.2, peer-id@~0.12.3: - version "0.12.5" - resolved "https://registry.yarnpkg.com/peer-id/-/peer-id-0.12.5.tgz#b22a1edc5b4aaaa2bb830b265ba69429823e5179" - integrity sha512-3xVWrtIvNm9/OPzaQBgXDrfWNx63AftgFQkvqO6YSZy7sP3Fuadwwbn54F/VO9AnpyW/26i0WRQz9FScivXrmw== - dependencies: - async "^2.6.3" - class-is "^1.1.0" - libp2p-crypto "~0.16.1" - multihashes "~0.4.15" - -peer-info@~0.15.1: - version "0.15.1" - resolved "https://registry.yarnpkg.com/peer-info/-/peer-info-0.15.1.tgz#21254a7c516d0dd046b150120b9aaf1b9ad02146" - integrity sha512-Y91Q2tZRC0CpSTPd1UebhGqniOrOAk/aj60uYUcWJXCoLTAnGu+4LJGoiay8ayudS6ice7l3SKhgL/cS62QacA== - dependencies: - mafmt "^6.0.2" - multiaddr "^6.0.3" - peer-id "~0.12.2" - unique-by "^1.0.0" - -pem-jwk@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/pem-jwk/-/pem-jwk-2.0.0.tgz#1c5bb264612fc391340907f5c1de60c06d22f085" - integrity sha512-rFxu7rVoHgQ5H9YsP50dDWf0rHjreVA2z0yPiWr5WdH/UHb29hKtF7h6l8vNd1cbYR1t0QL+JKhW55a2ZV4KtA== - dependencies: - asn1.js "^5.0.1" - -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= - -picomatch@^2.0.4, picomatch@^2.2.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" - integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== - -pkginfo@0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/pkginfo/-/pkginfo-0.4.1.tgz#b5418ef0439de5425fc4995042dced14fb2a84ff" - integrity sha1-tUGO8EOd5UJfxJlQQtztFPsqhP8= - -pluralize@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-8.0.0.tgz#1a6fa16a38d12a1901e0320fa017051c539ce3b1" - integrity sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA== - -prettier@1.19.1: - version "1.19.1" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.19.1.tgz#f7d7f5ff8a9cd872a7be4ca142095956a60797cb" - integrity sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew== - -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== - -promise-nodeify@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/promise-nodeify/-/promise-nodeify-3.0.1.tgz#f0f5d9720ee9ec71dd2bfa92667be504c10229c2" - integrity sha512-ghsSuzZXJX8iO7WVec2z7GI+Xk/EyiD+JZK7AZKhUqYfpLa/Zs4ylUD+CwwnKlG6G3HnkUPMAi6PO7zeqGKssg== - -promise@^8.0.0: - version "8.1.0" - resolved "https://registry.yarnpkg.com/promise/-/promise-8.1.0.tgz#697c25c3dfe7435dd79fcd58c38a135888eaf05e" - integrity sha512-W04AqnILOL/sPRXziNicCjSNRruLAuIHEOVBazepu0545DDNGYHz7ar9ZgZ1fMU8/MA4mVxp5rkBWRi6OXIy3Q== - dependencies: - asap "~2.0.6" - -promise@~1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/promise/-/promise-1.3.0.tgz#e5cc9a4c8278e4664ffedc01c7da84842b040175" - integrity sha1-5cyaTIJ45GZP/twBx9qEhCsEAXU= - dependencies: - is-promise "~1" - -promisify-es6@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/promisify-es6/-/promisify-es6-1.0.3.tgz#b012668c4df3c965ce13daac2b3a4d1726a96346" - integrity sha512-N9iVG+CGJsI4b4ZGazjwLnxErD2d9Pe4DPvvXSxYA9tFNu8ymXME4Qs5HIQ0LMJpNM7zj+m0NlNnNeqFpKzqnA== - -protocol-buffers-schema@^3.3.1: - version "3.6.0" - resolved "https://registry.yarnpkg.com/protocol-buffers-schema/-/protocol-buffers-schema-3.6.0.tgz#77bc75a48b2ff142c1ad5b5b90c94cd0fa2efd03" - integrity sha512-TdDRD+/QNdrCGCE7v8340QyuXd4kIWIgapsE2+n/SaGiSSbomYl4TjHlvIoCWRpE7wFt02EpB35VVA2ImcBVqw== - -protons@^1.0.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/protons/-/protons-1.2.1.tgz#5f1e0db8b2139469cd1c3b4e332a4c2d95d0a218" - integrity sha512-2oqDyc/SN+tNcJf8XxrXhYL7sQn2/OMl8mSdD7NVGsWjMEmAbks4eDVnCyf0vAoRbBWyWTEXWk4D8XfuKVl3zg== - dependencies: - buffer "^5.5.0" - protocol-buffers-schema "^3.3.1" - signed-varint "^2.0.1" - varint "^5.0.0" - -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== - -pull-defer@~0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/pull-defer/-/pull-defer-0.2.3.tgz#4ee09c6d9e227bede9938db80391c3dac489d113" - integrity sha512-/An3KE7mVjZCqNhZsr22k1Tx8MACnUnHZZNPSJ0S62td8JtYr/AiRG42Vz7Syu31SoTLUzVIe61jtT/pNdjVYA== - -pull-stream@^3.2.3, pull-stream@^3.6.9: - version "3.6.14" - resolved "https://registry.yarnpkg.com/pull-stream/-/pull-stream-3.6.14.tgz#529dbd5b86131f4a5ed636fdf7f6af00781357ee" - integrity sha512-KIqdvpqHHaTUA2mCYcLG1ibEbu/LCKoJZsBWyv9lSYtPkJPBq8m3Hxa103xHi6D2thj5YXa0TqK3L3GUkwgnew== - -pull-to-stream@~0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/pull-to-stream/-/pull-to-stream-0.1.1.tgz#fa2058528528e3542b81d6f17cbc42288508ff37" - integrity sha512-thZkMv6F9PILt9zdvpI2gxs19mkDrlixYKX6cOBxAW16i1NZH+yLAmF4r8QfJ69zuQh27e01JZP9y27tsH021w== - dependencies: - readable-stream "^3.1.1" - -pump@^1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/pump/-/pump-1.0.3.tgz#5dfe8311c33bbf6fc18261f9f34702c47c08a954" - integrity sha512-8k0JupWme55+9tCVE+FS5ULT3K6AbgqrGa58lTT49RpyfwwcGedHqaC5LlQNdEAumn/wFsu6aPwkuPMioy8kqw== - dependencies: - end-of-stream "^1.1.0" - once "^1.3.1" - -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@^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== - -qs@^6.4.0, qs@^6.5.2: - version "6.10.3" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.10.3.tgz#d6cde1b2ffca87b5aa57889816c5f81535e22e8e" - integrity sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ== - dependencies: - side-channel "^1.0.4" - -qs@~6.5.2: - version "6.5.3" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.3.tgz#3aeeffc91967ef6e35c0e488ef46fb296ab76aad" - integrity sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA== - -ramda@^0.24.1: - version "0.24.1" - resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.24.1.tgz#c3b7755197f35b8dc3502228262c4c91ddb6b857" - integrity sha1-w7d1UZfzW43DUCIoJixMkd22uFc= - -ramda@^0.25.0: - version "0.25.0" - resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.25.0.tgz#8fdf68231cffa90bc2f9460390a0cb74a29b29a9" - integrity sha512-GXpfrYVPwx3K7RQ6aYT8KPS8XViSXUVJT1ONhoKPE9VAleW42YE+U+8VEyGWt41EnEQW7gwecYJriTI0pKoecQ== - -ramdasauce@^2.1.0: - version "2.1.3" - resolved "https://registry.yarnpkg.com/ramdasauce/-/ramdasauce-2.1.3.tgz#acb45ecc7e4fc4d6f39e19989b4a16dff383e9c2" - integrity sha512-Ml3CPim4SKwmg5g9UI77lnRSeKr/kQw7YhQ6rfdMcBYy6DMlwmkEwQqjygJ3OhxPR+NfFfpjKl3Tf8GXckaqqg== - dependencies: - ramda "^0.24.1" - -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" - -"readable-stream@2 || 3", readable-stream@^3.0.0, readable-stream@^3.0.1, readable-stream@^3.0.2, readable-stream@^3.1.1, readable-stream@^3.4.0, 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.2.2, readable-stream@^2.3.0, readable-stream@^2.3.5: - 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" - -readable-stream@~1.0.26-4: - version "1.0.34" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c" - integrity sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw= - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.1" - isarray "0.0.1" - string_decoder "~0.10.x" - -readdirp@~3.5.0: - version "3.5.0" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.5.0.tgz#9ba74c019b15d365278d2e91bb8c48d7b4d42c9e" - integrity sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ== - dependencies: - picomatch "^2.2.1" - -regenerator-runtime@^0.13.4: - version "0.13.9" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz#8925742a98ffd90814988d7566ad30ca3b263b52" - integrity sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA== - -request@2.88.2: - 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@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" - integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== - -restore-cursor@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" - integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== - dependencies: - onetime "^5.1.0" - signal-exit "^3.0.2" - -rimraf@^2.6.3: - version "2.7.1" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" - integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== - dependencies: - glob "^7.1.3" - -rimraf@^3.0.0, rimraf@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" - integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== - dependencies: - glob "^7.1.3" - -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.4: - version "2.2.7" - resolved "https://registry.yarnpkg.com/rlp/-/rlp-2.2.7.tgz#33f31c4afac81124ac4b283e2bd4d9720b30beaf" - integrity sha512-d5gdPmgQ0Z+AklL2NVXr/IoSjNZFfTVvQWzL/AM2AOcSzYP2xjlb0AC8YyCLc41MSNf6P6QVtjgPdmVtzb+4lQ== - dependencies: - bn.js "^5.2.0" - -rsa-pem-to-jwk@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/rsa-pem-to-jwk/-/rsa-pem-to-jwk-1.1.3.tgz#245e76bdb7e7234cfee7ca032d31b54c38fab98e" - integrity sha1-JF52vbfnI0z+58oDLTG1TDj6uY4= - dependencies: - object-assign "^2.0.0" - rsa-unpack "0.0.6" - -rsa-unpack@0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/rsa-unpack/-/rsa-unpack-0.0.6.tgz#f50ebd56a628378e631f297161026ce9ab4eddba" - integrity sha1-9Q69VqYoN45jHylxYQJs6atO3bo= - dependencies: - optimist "~0.3.5" - -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== - -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== - -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== - -scrypt-js@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/scrypt-js/-/scrypt-js-3.0.1.tgz#d314a57c2aef69d1ad98a138a21fe9eafa9ee312" - integrity sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA== - -secp256k1@^3.6.2: - version "3.8.0" - resolved "https://registry.yarnpkg.com/secp256k1/-/secp256k1-3.8.0.tgz#28f59f4b01dbee9575f56a47034b7d2e3b3b352d" - integrity sha512-k5ke5avRZbtl9Tqx/SA7CbY3NF6Ro+Sj9cZxezFzuBlLDmyqPiL8hJJ+EmzD8Ig4LUDByHJ3/iPOVoRixs/hmw== - dependencies: - bindings "^1.5.0" - bip66 "^1.1.5" - bn.js "^4.11.8" - create-hash "^1.2.0" - drbg.js "^1.0.1" - elliptic "^6.5.2" - nan "^2.14.0" - safe-buffer "^5.1.2" - -secp256k1@^4.0.1: - version "4.0.3" - resolved "https://registry.yarnpkg.com/secp256k1/-/secp256k1-4.0.3.tgz#c4559ecd1b8d3c1827ed2d1b94190d69ce267303" - integrity sha512-NLZVf+ROMxwtEj3Xa562qgv2BK5e2WNmXPiOdVIPLgs6lyTzMvBq0aWTYMI5XCP9jZMVKOcqZLw/Wc4vDkuxhA== - dependencies: - elliptic "^6.5.4" - node-addon-api "^2.0.0" - node-gyp-build "^4.2.0" - -semver@7.3.5, semver@^7.0.0: - version "7.3.5" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" - integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== - dependencies: - lru-cache "^6.0.0" - -setimmediate@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" - integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU= - -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== - -side-channel@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" - integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== - dependencies: - call-bind "^1.0.0" - get-intrinsic "^1.0.2" - object-inspect "^1.9.0" - -signal-exit@^3.0.2: - version "3.0.6" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.6.tgz#24e630c4b0f03fea446a2bd299e62b4a6ca8d0af" - integrity sha512-sDl4qMFpijcGw22U5w63KmD3cZJfBuFlVNbVMKje2keoKML7X2UzWbc4XrmEbDwg0NXJc3yv4/ox7b+JWb57kQ== - -signed-varint@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/signed-varint/-/signed-varint-2.0.1.tgz#50a9989da7c98c2c61dad119bc97470ef8528129" - integrity sha1-UKmYnafJjCxh2tEZvJdHDvhSgSk= - dependencies: - varint "~5.0.0" - -source-map-support@^0.5.20: - version "0.5.21" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" - integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== - dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" - -source-map@^0.6.0: - version "0.6.1" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" - integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== - -split-ca@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/split-ca/-/split-ca-1.0.1.tgz#6c83aff3692fa61256e0cd197e05e9de157691a6" - integrity sha1-bIOv82kvphJW4M0ZfgXp3hV2kaY= - -split2@^3.1.0: - version "3.2.2" - resolved "https://registry.yarnpkg.com/split2/-/split2-3.2.2.tgz#bf2cf2a37d838312c249c89206fd7a17dd12365f" - integrity sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg== - dependencies: - readable-stream "^3.0.0" - -sprintf-js@~1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" - integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= - -sshpk@^1.7.0: - version "1.17.0" - resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.17.0.tgz#578082d92d4fe612b13007496e543fa0fbcbe4c5" - integrity sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ== - 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" - -stable@~0.1.8: - version "0.1.8" - resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" - integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w== - -stream-to-pull-stream@^1.7.2: - version "1.7.3" - resolved "https://registry.yarnpkg.com/stream-to-pull-stream/-/stream-to-pull-stream-1.7.3.tgz#4161aa2d2eb9964de60bfa1af7feaf917e874ece" - integrity sha512-6sNyqJpr5dIOQdgNy/xcDWwDuzAsAwVzhzrWlAPAQ7Lkjx/rv0wgvxEyKwTq6FmNd5rjTrELt/CLmaSw7crMGg== - dependencies: - looper "^3.0.0" - pull-stream "^3.2.3" - -string-width@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" - integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== - dependencies: - is-fullwidth-code-point "^2.0.0" - strip-ansi "^4.0.0" - -string_decoder@^1.1.1, string_decoder@^1.2.0: - 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@~0.10.x: - version "0.10.31" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" - integrity sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ= - -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@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" - integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= - dependencies: - ansi-regex "^3.0.0" - -strip-ansi@^6.0.0: - version "6.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" - integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== - dependencies: - ansi-regex "^5.0.1" - -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" - -supports-color@^5.3.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" - integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== - dependencies: - has-flag "^3.0.0" - -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" - -sync-request@6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/sync-request/-/sync-request-6.1.0.tgz#e96217565b5e50bbffe179868ba75532fb597e68" - integrity sha512-8fjNkrNlNCrVc/av+Jn+xxqfCjYaBoHqCsDz6mt030UMxJGr+GSfCV1dQt2gRtlL63+VPidwDVLr7V2OcTSdRw== - dependencies: - http-response-object "^3.0.1" - sync-rpc "^1.2.1" - then-request "^6.0.0" - -sync-rpc@^1.2.1: - version "1.3.6" - resolved "https://registry.yarnpkg.com/sync-rpc/-/sync-rpc-1.3.6.tgz#b2e8b2550a12ccbc71df8644810529deb68665a7" - integrity sha512-J8jTXuZzRlvU7HemDgHi3pGnh/rkoqR/OZSjhTyyZrEkkYQbk7Z33AXp37mkPfPpfdOuj7Ex3H/TJM1z48uPQw== - dependencies: - get-port "^3.1.0" - -tar-fs@~1.16.3: - version "1.16.3" - resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-1.16.3.tgz#966a628841da2c4010406a82167cbd5e0c72d509" - integrity sha512-NvCeXpYx7OsmOh8zIOP/ebG55zZmxLE0etfWRbWok+q2Qo8x/vOR/IJT1taADXPe+jsiu9axDb3X4B+iIgNlKw== - dependencies: - chownr "^1.0.1" - mkdirp "^0.5.1" - pump "^1.0.0" - tar-stream "^1.1.2" - -tar-stream@^1.1.2: - version "1.6.2" - resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-1.6.2.tgz#8ea55dab37972253d9a9af90fdcd559ae435c555" - integrity sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A== - dependencies: - bl "^1.0.0" - buffer-alloc "^1.2.0" - end-of-stream "^1.0.0" - fs-constants "^1.0.0" - readable-stream "^2.3.0" - to-buffer "^1.1.1" - xtend "^4.0.0" - -tar-stream@^2.0.1: - version "2.2.0" - resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.2.0.tgz#acad84c284136b060dc3faa64474aa9aebd77287" - integrity sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ== - dependencies: - bl "^4.0.3" - end-of-stream "^1.4.1" - fs-constants "^1.0.0" - inherits "^2.0.3" - readable-stream "^3.1.1" - -tar@^6.1.0: - version "6.1.11" - resolved "https://registry.yarnpkg.com/tar/-/tar-6.1.11.tgz#6760a38f003afa1b2ffd0ffe9e9abbd0eab3d621" - integrity sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA== - dependencies: - chownr "^2.0.0" - fs-minipass "^2.0.0" - minipass "^3.0.0" - minizlib "^2.1.1" - mkdirp "^1.0.3" - yallist "^4.0.0" - -then-request@^6.0.0: - version "6.0.2" - resolved "https://registry.yarnpkg.com/then-request/-/then-request-6.0.2.tgz#ec18dd8b5ca43aaee5cb92f7e4c1630e950d4f0c" - integrity sha512-3ZBiG7JvP3wbDzA9iNY5zJQcHL4jn/0BWtXIkagfz7QgOL/LqjCEOBQuJNZfu0XYnv5JhKh+cDxCPM4ILrqruA== - dependencies: - "@types/concat-stream" "^1.6.0" - "@types/form-data" "0.0.33" - "@types/node" "^8.0.0" - "@types/qs" "^6.2.31" - caseless "~0.12.0" - concat-stream "^1.6.0" - form-data "^2.2.0" - http-basic "^8.1.1" - http-response-object "^3.0.1" - promise "^8.0.0" - qs "^6.4.0" - -through2@^3.0.0, through2@^3.0.1: - version "3.0.2" - resolved "https://registry.yarnpkg.com/through2/-/through2-3.0.2.tgz#99f88931cfc761ec7678b41d5d7336b5b6a07bf4" - integrity sha512-enaDQ4MUyP2W6ZyT6EsMzqBPZaM/avg8iuo+l2d3QCs0J+6RaqkHV/2/lOwDTueBHeJ/2LG9lrLW3d5rWPucuQ== - dependencies: - inherits "^2.0.4" - readable-stream "2 || 3" - -"through@>=2.2.7 <3": - version "2.3.8" - resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" - integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= - -tmp-promise@3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/tmp-promise/-/tmp-promise-3.0.2.tgz#6e933782abff8b00c3119d63589ca1fb9caaa62a" - integrity sha512-OyCLAKU1HzBjL6Ev3gxUeraJNlbNingmi8IrHHEsYH8LTmEuhvYfqvhn2F/je+mjf4N58UmZ96OMEy1JanSCpA== - dependencies: - tmp "^0.2.0" - -tmp@^0.2.0: - version "0.2.1" - resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.2.1.tgz#8457fc3037dcf4719c251367a1af6500ee1ccf14" - integrity sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ== - dependencies: - rimraf "^3.0.0" - -to-buffer@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/to-buffer/-/to-buffer-1.1.1.tgz#493bd48f62d7c43fcded313a03dcadb2e1213a80" - integrity sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg== - -to-regex-range@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" - integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== - dependencies: - is-number "^7.0.0" - -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" - -tr46@~0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" - integrity sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o= - -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= - -tweetnacl@^1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-1.0.3.tgz#ac0af71680458d8a6378d0d0d050ab1407d35596" - integrity sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw== - -typedarray@^0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" - integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= - -unique-by@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unique-by/-/unique-by-1.0.0.tgz#5220c86ba7bc572fb713ad74651470cb644212bd" - integrity sha1-UiDIa6e8Vy+3E610ZRRwy2RCEr0= - -universalify@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-1.0.0.tgz#b61a1da173e8435b2fe3c67d29b9adf8594bd16d" - integrity sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug== - -universalify@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" - integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== - -uri-js@^4.2.2: - version "4.4.1" - resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" - integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== - dependencies: - punycode "^2.1.0" - -ursa-optional@~0.10.0: - version "0.10.2" - resolved "https://registry.yarnpkg.com/ursa-optional/-/ursa-optional-0.10.2.tgz#bd74e7d60289c22ac2a69a3c8dea5eb2817f9681" - integrity sha512-TKdwuLboBn7M34RcvVTuQyhvrA8gYKapuVdm0nBP0mnBc7oECOfUQZrY91cefL3/nm64ZyrejSRrhTVdX7NG/A== - dependencies: - bindings "^1.5.0" - nan "^2.14.2" - -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= - -uuid@^3.2.1, 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, varint@~5.0.0: - version "5.0.2" - resolved "https://registry.yarnpkg.com/varint/-/varint-5.0.2.tgz#5b47f8a947eb668b848e034dcfa87d0ff8a7f7a4" - integrity sha512-lKxKYG6H03yCZUpAGOPOsMcGxd1RHCu1iKvEHYDPmTyq2HueGhD73ssNBqqQWfvYs04G9iUFRvmAVLW20Jw6ow== - -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" - -wabt@1.0.24: - version "1.0.24" - resolved "https://registry.yarnpkg.com/wabt/-/wabt-1.0.24.tgz#c02e0b5b4503b94feaf4a30a426ef01c1bea7c6c" - integrity sha512-8l7sIOd3i5GWfTWciPL0+ff/FK/deVK2Q6FN+MPz4vfUcD78i2M/49XJTwF6aml91uIiuXJEsLKWMB2cw/mtKg== - -wcwidth@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" - integrity sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g= - dependencies: - defaults "^1.0.3" - -web3-eth-abi@1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/web3-eth-abi/-/web3-eth-abi-1.7.0.tgz#4fac9c7d9e5a62b57f8884b37371f515c766f3f4" - integrity sha512-heqR0bWxgCJwjWIhq2sGyNj9bwun5+Xox/LdZKe+WMyTSy0cXDXEAgv3XKNkXC4JqdDt/ZlbTEx4TWak4TRMSg== - dependencies: - "@ethersproject/abi" "5.0.7" - web3-utils "1.7.0" - -web3-utils@1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.7.0.tgz#c59f0fd43b2449357296eb54541810b99b1c771c" - integrity sha512-O8Tl4Ky40Sp6pe89Olk2FsaUkgHyb5QAXuaKo38ms3CxZZ4d3rPGfjP9DNKGm5+IUgAZBNpF1VmlSmNCqfDI1w== - dependencies: - bn.js "^4.11.9" - ethereum-bloom-filters "^1.0.6" - ethereumjs-util "^7.1.0" - ethjs-unit "0.1.6" - number-to-bn "1.7.0" - randombytes "^2.1.0" - utf8 "3.0.0" - -webidl-conversions@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" - integrity sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE= - -whatwg-url@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" - integrity sha1-lmRU6HZUYuN2RNNib2dCzotwll0= - dependencies: - tr46 "~0.0.3" - webidl-conversions "^3.0.0" - -which@2.0.2, which@^2.0.0, 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" - -wordwrap@~0.0.2: - version "0.0.3" - resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" - integrity sha1-o9XabNXAvAAI03I0u68b7WMFkQc= - -wrappy@1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= - -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== - -yallist@^3.0.2: - version "3.1.1" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" - integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== - -yallist@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" - integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== - -yaml@1.9.2: - version "1.9.2" - resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.9.2.tgz#f0cfa865f003ab707663e4f04b3956957ea564ed" - integrity sha512-HPT7cGGI0DuRcsO51qC1j9O16Dh1mZ2bnXwsi0jrSpsLz0WxOLSLXfkABVl6bZO629py3CU+OMJtpNHDLB97kg== - dependencies: - "@babel/runtime" "^7.9.2" - -yaml@^1.7.2: - version "1.10.2" - resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" - integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== - -yargs-parser@^16.1.0: - version "16.1.0" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-16.1.0.tgz#73747d53ae187e7b8dbe333f95714c76ea00ecf1" - integrity sha512-H/V41UNZQPkUMIT5h5hiwg4QKIY1RPvoBV4XcjUbRM8Bk2oKqqyZ0DIEbTFZB0XjbtSPG8SAa/0DxCQmiRgzKg== - dependencies: - camelcase "^5.0.0" - decamelize "^1.2.0" diff --git a/packages/subgraph-mainnet/abis/ERC20.json b/packages/subgraph-mainnet/abis/ERC20.json deleted file mode 100644 index 405d6b3..0000000 --- a/packages/subgraph-mainnet/abis/ERC20.json +++ /dev/null @@ -1,222 +0,0 @@ -[ - { - "constant": true, - "inputs": [], - "name": "name", - "outputs": [ - { - "name": "", - "type": "string" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "_spender", - "type": "address" - }, - { - "name": "_value", - "type": "uint256" - } - ], - "name": "approve", - "outputs": [ - { - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "totalSupply", - "outputs": [ - { - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "_from", - "type": "address" - }, - { - "name": "_to", - "type": "address" - }, - { - "name": "_value", - "type": "uint256" - } - ], - "name": "transferFrom", - "outputs": [ - { - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "decimals", - "outputs": [ - { - "name": "", - "type": "uint8" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "_owner", - "type": "address" - } - ], - "name": "balanceOf", - "outputs": [ - { - "name": "balance", - "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": "_to", - "type": "address" - }, - { - "name": "_value", - "type": "uint256" - } - ], - "name": "transfer", - "outputs": [ - { - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "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" - }, - { - "payable": true, - "stateMutability": "payable", - "type": "fallback" - }, - { - "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" - }, - { - "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" - } -] diff --git a/packages/subgraph-mainnet/abis/Gnosis.json b/packages/subgraph-mainnet/abis/Gnosis.json deleted file mode 100644 index e497aa0..0000000 --- a/packages/subgraph-mainnet/abis/Gnosis.json +++ /dev/null @@ -1,116 +0,0 @@ -[ - { - "constant": true, - "inputs": [], - "name": "name", - "outputs": [{ "name": "", "type": "string" }], - "payable": false, - "type": "function" - }, - { - "constant": false, - "inputs": [ - { "name": "_spender", "type": "address" }, - { "name": "_value", "type": "uint256" } - ], - "name": "approve", - "outputs": [{ "name": "", "type": "bool" }], - "payable": false, - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "totalSupply", - "outputs": [{ "name": "", "type": "uint256" }], - "payable": false, - "type": "function" - }, - { - "constant": false, - "inputs": [ - { "name": "_from", "type": "address" }, - { "name": "_to", "type": "address" }, - { "name": "_value", "type": "uint256" } - ], - "name": "transferFrom", - "outputs": [{ "name": "", "type": "bool" }], - "payable": false, - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "decimals", - "outputs": [{ "name": "", "type": "uint8" }], - "payable": false, - "type": "function" - }, - { - "constant": true, - "inputs": [{ "name": "_owner", "type": "address" }], - "name": "balanceOf", - "outputs": [{ "name": "", "type": "uint256" }], - "payable": false, - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "symbol", - "outputs": [{ "name": "", "type": "string" }], - "payable": false, - "type": "function" - }, - { - "constant": false, - "inputs": [ - { "name": "_to", "type": "address" }, - { "name": "_value", "type": "uint256" } - ], - "name": "transfer", - "outputs": [{ "name": "", "type": "bool" }], - "payable": false, - "type": "function" - }, - { - "constant": true, - "inputs": [ - { "name": "_owner", "type": "address" }, - { "name": "_spender", "type": "address" } - ], - "name": "allowance", - "outputs": [{ "name": "", "type": "uint256" }], - "payable": false, - "type": "function" - }, - { - "inputs": [ - { "name": "dutchAuction", "type": "address" }, - { "name": "owners", "type": "address[]" }, - { "name": "tokens", "type": "uint256[]" } - ], - "payable": false, - "type": "constructor" - }, - { - "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" - } -] diff --git a/packages/subgraph-mainnet/package.json b/packages/subgraph-mainnet/package.json deleted file mode 100644 index f5a95e9..0000000 --- a/packages/subgraph-mainnet/package.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "name": "subgraph-mainnet", - "license": "UNLICENSED", - "scripts": { - "doall": "rm -rf generated && rm -rf build && graph codegen && graph build", - "codegen": "graph codegen", - "test": "graph test", - "deploy": "graph deploy --node https://api.thegraph.com/deploy/ jfschwarz/gno-voting-power-eth", - "create-local": "graph create --node http://localhost:8020/ jfschwarz/gno-voting-power-eth", - "remove-local": "graph remove --node http://localhost:8020/ jfschwarz/gno-voting-power-eth", - "deploy-local": "graph deploy --node http://localhost:8020/ --ipfs http://localhost:5001 jfschwarz/gno-voting-power-eth" - }, - "dependencies": { - "@graphprotocol/graph-cli": "0.28.0", - "@graphprotocol/graph-ts": "0.26.0" - } -} diff --git a/packages/subgraph-mainnet/subgraph.yaml b/packages/subgraph-mainnet/subgraph.yaml deleted file mode 100644 index 858606b..0000000 --- a/packages/subgraph-mainnet/subgraph.yaml +++ /dev/null @@ -1,134 +0,0 @@ -specVersion: 0.0.4 -schema: - file: ../subgraph-base/schema.graphql -dataSources: - - kind: ethereum - name: ds-gno - network: mainnet - source: - address: "0x6810e776880C02933D47DB1b9fc05908e5386b96" - abi: ERC20 - startBlock: 3557596 - mapping: - kind: ethereum/events - apiVersion: 0.0.6 - language: wasm/assemblyscript - entities: - - User - abis: - - name: ERC20 - file: ../subgraph-base/abis/ERC20.json - eventHandlers: - - event: Transfer(indexed address,indexed address,uint256) - handler: handleTransfer - file: ../subgraph-base/src/gno.ts - - kind: ethereum - name: ds-lgno - network: mainnet - source: - address: "0x4f8AD938eBA0CD19155a835f617317a6E788c868" - abi: ERC20 - startBlock: 14111111 - mapping: - kind: ethereum/events - apiVersion: 0.0.6 - language: wasm/assemblyscript - entities: - - User - abis: - - name: ERC20 - file: ../subgraph-base/abis/ERC20.json - eventHandlers: - - event: Transfer(indexed address,indexed address,uint256) - handler: handleTransfer - file: ../subgraph-base/src/lgno.ts -# - kind: ethereum/contract -# name: Factory -# network: mainnet -# source: -# address: "0x1F98431c8aD98523631AE4a59f267346ea31F984" -# abi: Factory -# startBlock: 12369621 -# mapping: -# kind: ethereum/events -# apiVersion: 0.0.6 -# language: wasm/assemblyscript -# file: ./src/factory.ts -# entities: -# - Pool -# - Token -# abis: -# - name: Factory -# file: ./abis/factory.json -# - name: ERC20 -# file: ./abis/ERC20.json -# - name: ERC20SymbolBytes -# file: ./abis/ERC20SymbolBytes.json -# - name: ERC20NameBytes -# file: ./abis/ERC20NameBytes.json -# - name: Pool -# file: ./abis/pool.json -# eventHandlers: -# - event: PoolCreated(indexed address,indexed address,indexed uint24,int24,address) -# handler: handlePoolCreated -# - kind: ethereum/contract -# name: NonfungiblePositionManager -# network: mainnet -# source: -# address: "0xC36442b4a4522E871399CD717aBDD847Ab11FE88" -# abi: NonfungiblePositionManager -# startBlock: 12369651 -# mapping: -# kind: ethereum/events -# apiVersion: 0.0.6 -# language: wasm/assemblyscript -# file: ./src/positionManager.ts -# entities: -# - Pool -# - Token -# abis: -# - name: NonfungiblePositionManager -# file: ./abis/NonfungiblePositionManager.json -# - name: Pool -# file: ./abis/pool.json -# - name: Factory -# file: ./abis/factory.json -# - name: ERC20 -# file: ./abis/ERC20.json -# eventHandlers: -# - event: IncreaseLiquidity(indexed uint256,uint128,uint256,uint256) -# handler: handleIncreaseLiquidity -# - event: DecreaseLiquidity(indexed uint256,uint128,uint256,uint256) -# handler: handleDecreaseLiquidity -# - event: Transfer(indexed address,indexed address,indexed uint256) -# handler: handleTransfer -# templates: -# - kind: ethereum/contract -# name: Pool -# network: mainnet -# source: -# abi: Pool -# mapping: -# kind: ethereum/events -# apiVersion: 0.0.6 -# language: wasm/assemblyscript -# file: ./src/pool.ts -# entities: -# - Pool -# - Token -# abis: -# - name: Pool -# file: ./abis/pool.json -# - name: Factory -# file: ./abis/factory.json -# - name: ERC20 -# file: ./abis/ERC20.json -# eventHandlers: -# - event: Initialize(uint160,int24) -# handler: handleInitialize -# - event: Swap(indexed address,indexed address,int256,int256,uint160,uint128,int24) -# handler: handleSwap -# - event: Mint(address,indexed address,indexed int24,indexed int24,uint128,uint256,uint256) -# handler: handleMint -# - event: Burn(indexed address,indexed int24,indexed int24,uint128,uint256,uint256) -# handler: handleBurn diff --git a/packages/subgraph-mainnet/tsconfig.json b/packages/subgraph-mainnet/tsconfig.json deleted file mode 100644 index 5c5d17c..0000000 --- a/packages/subgraph-mainnet/tsconfig.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "extends": "@graphprotocol/graph-ts/types/tsconfig.base.json", - "include": ["src"] -} diff --git a/packages/subgraph-mainnet/yarn.lock b/packages/subgraph-mainnet/yarn.lock deleted file mode 100644 index 282f1fe..0000000 --- a/packages/subgraph-mainnet/yarn.lock +++ /dev/null @@ -1,3366 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@babel/code-frame@^7.0.0": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.16.7.tgz#44416b6bd7624b998f5b1af5d470856c40138789" - integrity sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg== - dependencies: - "@babel/highlight" "^7.16.7" - -"@babel/helper-validator-identifier@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz#e8c602438c4a8195751243da9031d1607d247cad" - integrity sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw== - -"@babel/highlight@^7.16.7": - version "7.16.10" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.16.10.tgz#744f2eb81579d6eea753c227b0f570ad785aba88" - integrity sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw== - dependencies: - "@babel/helper-validator-identifier" "^7.16.7" - chalk "^2.0.0" - js-tokens "^4.0.0" - -"@babel/runtime@^7.9.2": - version "7.17.2" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.17.2.tgz#66f68591605e59da47523c631416b18508779941" - integrity sha512-hzeyJyMA1YGdJTuWU0e/j4wKXrU4OMFvY2MSlaI9B7VQb0r5cxTE3EAIS2Q7Tn2RIcDkRvTA/v2JsAEhxe99uw== - dependencies: - regenerator-runtime "^0.13.4" - -"@ethersproject/abi@5.0.7": - version "5.0.7" - resolved "https://registry.yarnpkg.com/@ethersproject/abi/-/abi-5.0.7.tgz#79e52452bd3ca2956d0e1c964207a58ad1a0ee7b" - integrity sha512-Cqktk+hSIckwP/W8O47Eef60VwmoSC/L3lY0+dIBhQPCNn9E4V7rwmm2aFrNRRDJfFlGuZ1khkQUOc3oBX+niw== - dependencies: - "@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" - -"@ethersproject/abstract-provider@^5.6.0": - version "5.6.0" - resolved "https://registry.yarnpkg.com/@ethersproject/abstract-provider/-/abstract-provider-5.6.0.tgz#0c4ac7054650dbd9c476cf5907f588bbb6ef3061" - integrity sha512-oPMFlKLN+g+y7a79cLK3WiLcjWFnZQtXWgnLAbHZcN3s7L4v90UHpTOrLk+m3yr0gt+/h9STTM6zrr7PM8uoRw== - dependencies: - "@ethersproject/bignumber" "^5.6.0" - "@ethersproject/bytes" "^5.6.0" - "@ethersproject/logger" "^5.6.0" - "@ethersproject/networks" "^5.6.0" - "@ethersproject/properties" "^5.6.0" - "@ethersproject/transactions" "^5.6.0" - "@ethersproject/web" "^5.6.0" - -"@ethersproject/abstract-signer@^5.6.0": - version "5.6.0" - resolved "https://registry.yarnpkg.com/@ethersproject/abstract-signer/-/abstract-signer-5.6.0.tgz#9cd7ae9211c2b123a3b29bf47aab17d4d016e3e7" - integrity sha512-WOqnG0NJKtI8n0wWZPReHtaLkDByPL67tn4nBaDAhmVq8sjHTPbCdz4DRhVu/cfTOvfy9w3iq5QZ7BX7zw56BQ== - dependencies: - "@ethersproject/abstract-provider" "^5.6.0" - "@ethersproject/bignumber" "^5.6.0" - "@ethersproject/bytes" "^5.6.0" - "@ethersproject/logger" "^5.6.0" - "@ethersproject/properties" "^5.6.0" - -"@ethersproject/address@^5.0.4", "@ethersproject/address@^5.6.0": - version "5.6.0" - resolved "https://registry.yarnpkg.com/@ethersproject/address/-/address-5.6.0.tgz#13c49836d73e7885fc148ad633afad729da25012" - integrity sha512-6nvhYXjbXsHPS+30sHZ+U4VMagFC/9zAk6Gd/h3S21YW4+yfb0WfRtaAIZ4kfM4rrVwqiy284LP0GtL5HXGLxQ== - dependencies: - "@ethersproject/bignumber" "^5.6.0" - "@ethersproject/bytes" "^5.6.0" - "@ethersproject/keccak256" "^5.6.0" - "@ethersproject/logger" "^5.6.0" - "@ethersproject/rlp" "^5.6.0" - -"@ethersproject/base64@^5.6.0": - version "5.6.0" - resolved "https://registry.yarnpkg.com/@ethersproject/base64/-/base64-5.6.0.tgz#a12c4da2a6fb86d88563216b0282308fc15907c9" - integrity sha512-2Neq8wxJ9xHxCF9TUgmKeSh9BXJ6OAxWfeGWvbauPh8FuHEjamgHilllx8KkSd5ErxyHIX7Xv3Fkcud2kY9ezw== - dependencies: - "@ethersproject/bytes" "^5.6.0" - -"@ethersproject/bignumber@^5.0.7", "@ethersproject/bignumber@^5.6.0": - version "5.6.0" - resolved "https://registry.yarnpkg.com/@ethersproject/bignumber/-/bignumber-5.6.0.tgz#116c81b075c57fa765a8f3822648cf718a8a0e26" - integrity sha512-VziMaXIUHQlHJmkv1dlcd6GY2PmT0khtAqaMctCIDogxkrarMzA9L94KN1NeXqqOfFD6r0sJT3vCTOFSmZ07DA== - dependencies: - "@ethersproject/bytes" "^5.6.0" - "@ethersproject/logger" "^5.6.0" - bn.js "^4.11.9" - -"@ethersproject/bytes@^5.0.4", "@ethersproject/bytes@^5.6.0": - version "5.6.0" - resolved "https://registry.yarnpkg.com/@ethersproject/bytes/-/bytes-5.6.0.tgz#81652f2a0e04533575befadce555213c11d8aa20" - integrity sha512-3hJPlYemb9V4VLfJF5BfN0+55vltPZSHU3QKUyP9M3Y2TcajbiRrz65UG+xVHOzBereB1b9mn7r12o177xgN7w== - dependencies: - "@ethersproject/logger" "^5.6.0" - -"@ethersproject/constants@^5.0.4", "@ethersproject/constants@^5.6.0": - version "5.6.0" - resolved "https://registry.yarnpkg.com/@ethersproject/constants/-/constants-5.6.0.tgz#55e3eb0918584d3acc0688e9958b0cedef297088" - integrity sha512-SrdaJx2bK0WQl23nSpV/b1aq293Lh0sUaZT/yYKPDKn4tlAbkH96SPJwIhwSwTsoQQZxuh1jnqsKwyymoiBdWA== - dependencies: - "@ethersproject/bignumber" "^5.6.0" - -"@ethersproject/hash@^5.0.4": - version "5.6.0" - resolved "https://registry.yarnpkg.com/@ethersproject/hash/-/hash-5.6.0.tgz#d24446a5263e02492f9808baa99b6e2b4c3429a2" - integrity sha512-fFd+k9gtczqlr0/BruWLAu7UAOas1uRRJvOR84uDf4lNZ+bTkGl366qvniUZHKtlqxBRU65MkOobkmvmpHU+jA== - dependencies: - "@ethersproject/abstract-signer" "^5.6.0" - "@ethersproject/address" "^5.6.0" - "@ethersproject/bignumber" "^5.6.0" - "@ethersproject/bytes" "^5.6.0" - "@ethersproject/keccak256" "^5.6.0" - "@ethersproject/logger" "^5.6.0" - "@ethersproject/properties" "^5.6.0" - "@ethersproject/strings" "^5.6.0" - -"@ethersproject/keccak256@^5.0.3", "@ethersproject/keccak256@^5.6.0": - version "5.6.0" - resolved "https://registry.yarnpkg.com/@ethersproject/keccak256/-/keccak256-5.6.0.tgz#fea4bb47dbf8f131c2e1774a1cecbfeb9d606459" - integrity sha512-tk56BJ96mdj/ksi7HWZVWGjCq0WVl/QvfhFQNeL8fxhBlGoP+L80uDCiQcpJPd+2XxkivS3lwRm3E0CXTfol0w== - dependencies: - "@ethersproject/bytes" "^5.6.0" - js-sha3 "0.8.0" - -"@ethersproject/logger@^5.0.5", "@ethersproject/logger@^5.6.0": - version "5.6.0" - resolved "https://registry.yarnpkg.com/@ethersproject/logger/-/logger-5.6.0.tgz#d7db1bfcc22fd2e4ab574cba0bb6ad779a9a3e7a" - integrity sha512-BiBWllUROH9w+P21RzoxJKzqoqpkyM1pRnEKG69bulE9TSQD8SAIvTQqIMZmmCO8pUNkgLP1wndX1gKghSpBmg== - -"@ethersproject/networks@^5.6.0": - version "5.6.0" - resolved "https://registry.yarnpkg.com/@ethersproject/networks/-/networks-5.6.0.tgz#486d03fff29b4b6b5414d47a232ded09fe10de5e" - integrity sha512-DaVzgyThzHgSDLuURhvkp4oviGoGe9iTZW4jMEORHDRCgSZ9K9THGFKqL+qGXqPAYLEgZTf5z2w56mRrPR1MjQ== - dependencies: - "@ethersproject/logger" "^5.6.0" - -"@ethersproject/properties@^5.0.3", "@ethersproject/properties@^5.6.0": - version "5.6.0" - resolved "https://registry.yarnpkg.com/@ethersproject/properties/-/properties-5.6.0.tgz#38904651713bc6bdd5bdd1b0a4287ecda920fa04" - integrity sha512-szoOkHskajKePTJSZ46uHUWWkbv7TzP2ypdEK6jGMqJaEt2sb0jCgfBo0gH0m2HBpRixMuJ6TBRaQCF7a9DoCg== - dependencies: - "@ethersproject/logger" "^5.6.0" - -"@ethersproject/rlp@^5.6.0": - version "5.6.0" - resolved "https://registry.yarnpkg.com/@ethersproject/rlp/-/rlp-5.6.0.tgz#55a7be01c6f5e64d6e6e7edb6061aa120962a717" - integrity sha512-dz9WR1xpcTL+9DtOT/aDO+YyxSSdO8YIS0jyZwHHSlAmnxA6cKU3TrTd4Xc/bHayctxTgGLYNuVVoiXE4tTq1g== - dependencies: - "@ethersproject/bytes" "^5.6.0" - "@ethersproject/logger" "^5.6.0" - -"@ethersproject/signing-key@^5.6.0": - version "5.6.0" - resolved "https://registry.yarnpkg.com/@ethersproject/signing-key/-/signing-key-5.6.0.tgz#4f02e3fb09e22b71e2e1d6dc4bcb5dafa69ce042" - integrity sha512-S+njkhowmLeUu/r7ir8n78OUKx63kBdMCPssePS89So1TH4hZqnWFsThEd/GiXYp9qMxVrydf7KdM9MTGPFukA== - dependencies: - "@ethersproject/bytes" "^5.6.0" - "@ethersproject/logger" "^5.6.0" - "@ethersproject/properties" "^5.6.0" - bn.js "^4.11.9" - elliptic "6.5.4" - hash.js "1.1.7" - -"@ethersproject/strings@^5.0.4", "@ethersproject/strings@^5.6.0": - version "5.6.0" - resolved "https://registry.yarnpkg.com/@ethersproject/strings/-/strings-5.6.0.tgz#9891b26709153d996bf1303d39a7f4bc047878fd" - integrity sha512-uv10vTtLTZqrJuqBZR862ZQjTIa724wGPWQqZrofaPI/kUsf53TBG0I0D+hQ1qyNtllbNzaW+PDPHHUI6/65Mg== - dependencies: - "@ethersproject/bytes" "^5.6.0" - "@ethersproject/constants" "^5.6.0" - "@ethersproject/logger" "^5.6.0" - -"@ethersproject/transactions@^5.6.0": - version "5.6.0" - resolved "https://registry.yarnpkg.com/@ethersproject/transactions/-/transactions-5.6.0.tgz#4b594d73a868ef6e1529a2f8f94a785e6791ae4e" - integrity sha512-4HX+VOhNjXHZyGzER6E/LVI2i6lf9ejYeWD6l4g50AdmimyuStKc39kvKf1bXWQMg7QNVh+uC7dYwtaZ02IXeg== - dependencies: - "@ethersproject/address" "^5.6.0" - "@ethersproject/bignumber" "^5.6.0" - "@ethersproject/bytes" "^5.6.0" - "@ethersproject/constants" "^5.6.0" - "@ethersproject/keccak256" "^5.6.0" - "@ethersproject/logger" "^5.6.0" - "@ethersproject/properties" "^5.6.0" - "@ethersproject/rlp" "^5.6.0" - "@ethersproject/signing-key" "^5.6.0" - -"@ethersproject/web@^5.6.0": - version "5.6.0" - resolved "https://registry.yarnpkg.com/@ethersproject/web/-/web-5.6.0.tgz#4bf8b3cbc17055027e1a5dd3c357e37474eaaeb8" - integrity sha512-G/XHj0hV1FxI2teHRfCGvfBUHFmU+YOSbCxlAMqJklxSa7QMiHFQfAxvwY2PFqgvdkxEKwRNr/eCjfAPEm2Ctg== - dependencies: - "@ethersproject/base64" "^5.6.0" - "@ethersproject/bytes" "^5.6.0" - "@ethersproject/logger" "^5.6.0" - "@ethersproject/properties" "^5.6.0" - "@ethersproject/strings" "^5.6.0" - -"@graphprotocol/graph-cli@0.28.0": - version "0.28.0" - resolved "https://registry.yarnpkg.com/@graphprotocol/graph-cli/-/graph-cli-0.28.0.tgz#7dbd5fd59f30b0c547c23bb4180a4559251e0afa" - integrity sha512-a6MLYosEwHEkLzXyuS2IRcB4mp/v2Qtndv5/H8aR6f1f1YbQXd8YfGRIkxl6eZCMDf319nm98wp8Vo+xunYB0w== - dependencies: - assemblyscript "0.19.10" - binary-install-raw "0.0.13" - chalk "3.0.0" - chokidar "3.5.1" - debug "4.1.1" - docker-compose "0.23.4" - dockerode "2.5.8" - fs-extra "9.0.0" - glob "7.1.6" - gluegun "https://github.com/edgeandnode/gluegun#v4.3.1-pin-colors-dep" - graphql "15.5.0" - immutable "3.8.2" - ipfs-http-client "34.0.0" - jayson "3.2.0" - js-yaml "3.13.1" - node-fetch "2.6.0" - pkginfo "0.4.1" - prettier "1.19.1" - request "2.88.2" - semver "7.3.5" - sync-request "6.1.0" - tmp-promise "3.0.2" - web3-eth-abi "1.7.0" - which "2.0.2" - yaml "1.9.2" - -"@graphprotocol/graph-ts@0.26.0": - version "0.26.0" - resolved "https://registry.yarnpkg.com/@graphprotocol/graph-ts/-/graph-ts-0.26.0.tgz#576f995531eebaca4374901aeaff499219e382e8" - integrity sha512-GW/emOJl+35MXgmIxTnUK7dJtPCaB9u5aAwoLVqJ8swogC794O92UrXMVrAJsherUriu+yI9bLMGmNPOIi60jw== - dependencies: - assemblyscript "0.19.10" - -"@types/bn.js@^5.1.0": - version "5.1.0" - resolved "https://registry.yarnpkg.com/@types/bn.js/-/bn.js-5.1.0.tgz#32c5d271503a12653c62cf4d2b45e6eab8cebc68" - integrity sha512-QSSVYj7pYFN49kW77o2s9xTCwZ8F2xLbjLLSEVh8D2F4JUhZtPAGOFLTD+ffqksBx/u4cE/KImFjyhqCjn/LIA== - dependencies: - "@types/node" "*" - -"@types/concat-stream@^1.6.0": - version "1.6.1" - resolved "https://registry.yarnpkg.com/@types/concat-stream/-/concat-stream-1.6.1.tgz#24bcfc101ecf68e886aaedce60dfd74b632a1b74" - integrity sha512-eHE4cQPoj6ngxBZMvVf6Hw7Mh4jMW4U9lpGmS5GBPB9RYxlFg+CHaVN7ErNY4W9XfLIEn20b4VDYaIrbq0q4uA== - dependencies: - "@types/node" "*" - -"@types/connect@^3.4.32": - version "3.4.35" - resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.35.tgz#5fcf6ae445e4021d1fc2219a4873cc73a3bb2ad1" - integrity sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ== - dependencies: - "@types/node" "*" - -"@types/express-serve-static-core@^4.16.9": - version "4.17.28" - resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.28.tgz#c47def9f34ec81dc6328d0b1b5303d1ec98d86b8" - integrity sha512-P1BJAEAW3E2DJUlkgq4tOL3RyMunoWXqbSCygWo5ZIWTjUgN1YnaXWW4VWl/oc8vs/XoYibEGBKP0uZyF4AHig== - dependencies: - "@types/node" "*" - "@types/qs" "*" - "@types/range-parser" "*" - -"@types/form-data@0.0.33": - version "0.0.33" - resolved "https://registry.yarnpkg.com/@types/form-data/-/form-data-0.0.33.tgz#c9ac85b2a5fd18435b8c85d9ecb50e6d6c893ff8" - integrity sha1-yayFsqX9GENbjIXZ7LUObWyJP/g= - dependencies: - "@types/node" "*" - -"@types/lodash@^4.14.139": - version "4.14.179" - resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.179.tgz#490ec3288088c91295780237d2497a3aa9dfb5c5" - integrity sha512-uwc1x90yCKqGcIOAT6DwOSuxnrAbpkdPsUOZtwrXb4D/6wZs+6qG7QnIawDuZWg0sWpxl+ltIKCaLoMlna678w== - -"@types/node@*": - version "17.0.21" - resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.21.tgz#864b987c0c68d07b4345845c3e63b75edd143644" - integrity sha512-DBZCJbhII3r90XbQxI8Y9IjjiiOGlZ0Hr32omXIZvwwZ7p4DMMXGrKXVyPfuoBOri9XNtL0UK69jYIBIsRX3QQ== - -"@types/node@^10.0.3": - version "10.17.60" - resolved "https://registry.yarnpkg.com/@types/node/-/node-10.17.60.tgz#35f3d6213daed95da7f0f73e75bcc6980e90597b" - integrity sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw== - -"@types/node@^12.7.7": - version "12.20.47" - resolved "https://registry.yarnpkg.com/@types/node/-/node-12.20.47.tgz#ca9237d51f2a2557419688511dab1c8daf475188" - integrity sha512-BzcaRsnFuznzOItW1WpQrDHM7plAa7GIDMZ6b5pnMbkqEtM/6WCOhvZar39oeMQP79gwvFUWjjptE7/KGcNqFg== - -"@types/node@^8.0.0": - version "8.10.66" - resolved "https://registry.yarnpkg.com/@types/node/-/node-8.10.66.tgz#dd035d409df322acc83dff62a602f12a5783bbb3" - integrity sha512-tktOkFUA4kXx2hhhrB8bIFb5TbwzS4uOhKEmwiD+NoiL0qtP2OQ9mFldbgD4dV1djrlBYP6eBuQZiWjuHUpqFw== - -"@types/parse-json@^4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" - integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== - -"@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== - dependencies: - "@types/node" "*" - -"@types/qs@*", "@types/qs@^6.2.31": - version "6.9.7" - resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.7.tgz#63bb7d067db107cc1e457c303bc25d511febf6cb" - integrity sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw== - -"@types/range-parser@*": - version "1.2.4" - resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.4.tgz#cd667bcfdd025213aafb7ca5915a932590acdcdc" - integrity sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw== - -"@types/secp256k1@^4.0.1": - version "4.0.3" - resolved "https://registry.yarnpkg.com/@types/secp256k1/-/secp256k1-4.0.3.tgz#1b8e55d8e00f08ee7220b4d59a6abe89c37a901c" - integrity sha512-Da66lEIFeIz9ltsdMZcpQvmrmmoqrfju8pm1BH8WbYjZSwUgCwXLb9C+9XYogwBITnbsSaMdVPb2ekf7TV+03w== - dependencies: - "@types/node" "*" - -JSONStream@1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.2.tgz#c102371b6ec3a7cf3b847ca00c20bb0fce4c6dea" - integrity sha1-wQI3G27Dp887hHygDCC7D85Mbeo= - dependencies: - jsonparse "^1.2.0" - through ">=2.2.7 <3" - -JSONStream@^1.3.1: - version "1.3.5" - resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.5.tgz#3208c1f08d3a4d99261ab64f92302bc15e111ca0" - integrity sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ== - dependencies: - jsonparse "^1.2.0" - through ">=2.2.7 <3" - -abort-controller@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/abort-controller/-/abort-controller-3.0.0.tgz#eaf54d53b62bae4138e809ca225c8439a6efb392" - integrity sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg== - dependencies: - event-target-shim "^5.0.0" - -ajv@^6.12.3: - version "6.12.6" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" - integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== - 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" - -ansi-colors@^3.2.1: - version "3.2.4" - resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.4.tgz#e3a3da4bfbae6c86a9c285625de124a234026fbf" - integrity sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA== - -ansi-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" - integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= - -ansi-regex@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" - integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== - -ansi-styles@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" - integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== - dependencies: - color-convert "^1.9.0" - -ansi-styles@^4.1.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" - integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== - dependencies: - color-convert "^2.0.1" - -anymatch@~3.1.1: - version "3.1.2" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" - integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== - dependencies: - normalize-path "^3.0.0" - picomatch "^2.0.4" - -apisauce@^1.0.1: - version "1.1.5" - resolved "https://registry.yarnpkg.com/apisauce/-/apisauce-1.1.5.tgz#31d41a5cf805e401266cec67faf1a50f4aeae234" - integrity sha512-gKC8qb/bDJsPsnEXLZnXJ7gVx7dh87CEVNeIwv1dvaffnXoh5GHwac5pWR1P2broLiVj/fqFMQvLDDt/RhjiqA== - dependencies: - axios "^0.21.2" - ramda "^0.25.0" - -app-module-path@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/app-module-path/-/app-module-path-2.2.0.tgz#641aa55dfb7d6a6f0a8141c4b9c0aa50b6c24dd5" - integrity sha1-ZBqlXft9am8KgUHEucCqULbCTdU= - -argparse@^1.0.7: - version "1.0.10" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" - integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== - dependencies: - sprintf-js "~1.0.2" - -asap@~2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" - integrity sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY= - -asmcrypto.js@^2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/asmcrypto.js/-/asmcrypto.js-2.3.2.tgz#b9f84bd0a1fb82f21f8c29cc284a707ad17bba2e" - integrity sha512-3FgFARf7RupsZETQ1nHnhLUUvpcttcCq1iZCaVAbJZbCZ5VNRrNyvpDyHTOb0KC3llFcsyOT/a99NZcCbeiEsA== - -asn1.js@^5.0.1: - 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.6" - resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.6.tgz#0d3a7bb6e64e02a90c0303b31f292868ea09a08d" - integrity sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ== - dependencies: - safer-buffer "~2.1.0" - -assemblyscript@0.19.10: - version "0.19.10" - resolved "https://registry.yarnpkg.com/assemblyscript/-/assemblyscript-0.19.10.tgz#7ede6d99c797a219beb4fa4614c3eab9e6343c8e" - integrity sha512-HavcUBXB3mBTRGJcpvaQjmnmaqKHBGREjSPNsIvnAk2f9dj78y4BkMaSSdvBQYWcDDzsHQjyUC8stICFkD1Odg== - dependencies: - binaryen "101.0.0-nightly.20210723" - long "^4.0.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@^2.6.1, async@^2.6.2, async@^2.6.3: - 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= - -at-least-node@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" - integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== - -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.11.0" - resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.11.0.tgz#d61f46d83b2519250e2784daf5b09479a8b41c59" - integrity sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA== - -axios@^0.21.1, axios@^0.21.2: - version "0.21.4" - resolved "https://registry.yarnpkg.com/axios/-/axios-0.21.4.tgz#c67b90dc0568e5c1cf2b0b858c43ba28e2eda575" - integrity sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg== - dependencies: - follow-redirects "^1.14.0" - -balanced-match@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" - integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== - -base-x@^3.0.2, base-x@^3.0.8: - version "3.0.9" - resolved "https://registry.yarnpkg.com/base-x/-/base-x-3.0.9.tgz#6349aaabb58526332de9f60995e548a53fe21320" - integrity sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ== - dependencies: - safe-buffer "^5.0.1" - -base64-js@^1.3.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" - integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== - -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.2" - resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-9.0.2.tgz#71c6c6bed38de64e24a65ebe16cfcf23ae693673" - integrity sha512-GAcQvbpsM0pUb0zw1EI0KhQEZ+lRwR5fYaAp3vPOYuP7aDvGy6cVN6XHLauvF8SOga2y0dcLcjt3iQDTSEliyw== - -binary-extensions@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" - integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== - -binary-install-raw@0.0.13: - version "0.0.13" - resolved "https://registry.yarnpkg.com/binary-install-raw/-/binary-install-raw-0.0.13.tgz#43a13c6980eb9844e2932eb7a91a56254f55b7dd" - integrity sha512-v7ms6N/H7iciuk6QInon3/n2mu7oRX+6knJ9xFPsJ3rQePgAqcR3CRTwUheFd8SLbiq4LL7Z4G/44L9zscdt9A== - dependencies: - axios "^0.21.1" - rimraf "^3.0.2" - tar "^6.1.0" - -binaryen@101.0.0-nightly.20210723: - version "101.0.0-nightly.20210723" - resolved "https://registry.yarnpkg.com/binaryen/-/binaryen-101.0.0-nightly.20210723.tgz#b6bb7f3501341727681a03866c0856500eec3740" - integrity sha512-eioJNqhHlkguVSbblHOtLqlhtC882SOEPKmNFZaDuz1hzQjolxZ+eu3/kaS10n3sGPONsIZsO7R9fR00UyhEUA== - -bindings@^1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" - integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== - dependencies: - file-uri-to-path "1.0.0" - -bip66@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/bip66/-/bip66-1.1.5.tgz#01fa8748785ca70955d5011217d1b3139969ca22" - integrity sha1-AfqHSHhcpwlV1QESF9GzE5lpyiI= - dependencies: - safe-buffer "^5.0.1" - -bl@^1.0.0: - version "1.2.3" - resolved "https://registry.yarnpkg.com/bl/-/bl-1.2.3.tgz#1e8dd80142eac80d7158c9dccc047fb620e035e7" - integrity sha512-pvcNpa0UU69UT341rO6AYy4FVAIkUHuZXRIWbq+zHnsVcRzDDjIAhGuuYoi0d//cwIwtt4pkpKycWEfjdV+vww== - dependencies: - readable-stream "^2.3.5" - safe-buffer "^5.1.1" - -bl@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/bl/-/bl-3.0.1.tgz#1cbb439299609e419b5a74d7fce2f8b37d8e5c6f" - integrity sha512-jrCW5ZhfQ/Vt07WX1Ngs+yn9BDqPL/gw28S7s9H6QK/gupnizNzJAss5akW20ISgOrbLTlXOOCTJeNUQqruAWQ== - dependencies: - readable-stream "^3.0.1" - -bl@^4.0.3: - version "4.1.0" - resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" - integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== - dependencies: - buffer "^5.5.0" - inherits "^2.0.4" - readable-stream "^3.4.0" - -blakejs@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/blakejs/-/blakejs-1.1.1.tgz#bf313053978b2cd4c444a48795710be05c785702" - integrity sha512-bLG6PHOCZJKNshTjGRBvET0vTciwQE6zFKOKKXPDJfwFBd4Ac0yBfPZqcGvGJap50l7ktvlpFqc2jGVaUgbJgg== - -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.11.8, bn.js@^4.11.9: - version "4.12.0" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" - integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== - -bn.js@^5.1.2, bn.js@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.0.tgz#358860674396c6997771a9d051fcc1b57d4ae002" - integrity sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw== - -borc@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/borc/-/borc-2.1.2.tgz#6ce75e7da5ce711b963755117dd1b187f6f8cf19" - integrity sha512-Sy9eoUi4OiKzq7VovMn246iTo17kzuyHJKomCfpWMlI6RpfN1gk95w7d7gH264nApVLg0HZfcpz62/g4VH1Y4w== - dependencies: - bignumber.js "^9.0.0" - buffer "^5.5.0" - commander "^2.15.0" - ieee754 "^1.1.13" - iso-url "~0.4.7" - json-text-sequence "~0.1.0" - readable-stream "^3.6.0" - -brace-expansion@^1.1.7: - version "1.1.11" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" - integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== - dependencies: - balanced-match "^1.0.0" - concat-map "0.0.1" - -braces@~3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" - integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== - dependencies: - fill-range "^7.0.1" - -brorand@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" - integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8= - -browserify-aes@^1.0.6, 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" - -bs58@^4.0.0, bs58@^4.0.1: - 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-alloc-unsafe@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz#bd7dc26ae2972d0eda253be061dba992349c19f0" - integrity sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg== - -buffer-alloc@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/buffer-alloc/-/buffer-alloc-1.2.0.tgz#890dd90d923a873e08e10e5fd51a57e5b7cce0ec" - integrity sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow== - dependencies: - buffer-alloc-unsafe "^1.1.0" - buffer-fill "^1.0.0" - -buffer-fill@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/buffer-fill/-/buffer-fill-1.0.0.tgz#f8f78b76789888ef39f205cd637f68e702122b2c" - integrity sha1-+PeLdniYiO858gXNY39o5wISKyw= - -buffer-from@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" - integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== - -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@^5.2.1, buffer@^5.4.2, buffer@^5.4.3, buffer@^5.5.0, buffer@^5.6.0: - version "5.7.1" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" - integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== - dependencies: - base64-js "^1.3.1" - ieee754 "^1.1.13" - -buffer@^6.0.3: - version "6.0.3" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6" - integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== - dependencies: - base64-js "^1.3.1" - ieee754 "^1.2.1" - -builtin-status-codes@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" - integrity sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug= - -call-bind@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" - integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== - dependencies: - function-bind "^1.1.1" - get-intrinsic "^1.0.2" - -callsites@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" - integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== - -camelcase@^5.0.0: - 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, 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, 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" - -chalk@^2.0.0, chalk@^2.4.2: - version "2.4.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" - integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== - dependencies: - ansi-styles "^3.2.1" - escape-string-regexp "^1.0.5" - supports-color "^5.3.0" - -chokidar@3.5.1: - version "3.5.1" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.1.tgz#ee9ce7bbebd2b79f49f304799d5468e31e14e68a" - integrity sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw== - dependencies: - anymatch "~3.1.1" - braces "~3.0.2" - glob-parent "~5.1.0" - is-binary-path "~2.1.0" - is-glob "~4.0.1" - normalize-path "~3.0.0" - readdirp "~3.5.0" - optionalDependencies: - fsevents "~2.3.1" - -chownr@^1.0.1: - version "1.1.4" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" - integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== - -chownr@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece" - integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== - -cids@~0.7.0, 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" - -cids@~0.8.0: - version "0.8.3" - resolved "https://registry.yarnpkg.com/cids/-/cids-0.8.3.tgz#aaf48ac8ed857c3d37dad94d8db1d8c9407b92db" - integrity sha512-yoXTbV3llpm+EBGWKeL9xKtksPE/s6DPoDSY4fn8I8TEW1zehWXPSB0pwAXVDlLaOlrw+sNynj995uD9abmPhA== - dependencies: - buffer "^5.6.0" - class-is "^1.1.0" - multibase "^1.0.0" - multicodec "^1.0.1" - multihashes "^1.0.1" - -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== - -cli-cursor@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" - integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== - dependencies: - restore-cursor "^3.1.0" - -cli-spinners@^2.2.0: - version "2.6.1" - resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.6.1.tgz#adc954ebe281c37a6319bfa401e6dd2488ffb70d" - integrity sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g== - -cli-table3@~0.5.0: - version "0.5.1" - resolved "https://registry.yarnpkg.com/cli-table3/-/cli-table3-0.5.1.tgz#0252372d94dfc40dbd8df06005f48f31f656f202" - integrity sha512-7Qg2Jrep1S/+Q3EceiZtQcDPWxhAvBw+ERf1162v4sikJrvojMHFqXt8QIVha8UlH9rgU0BeWPytZ9/TzYqlUw== - dependencies: - object-assign "^4.1.0" - string-width "^2.1.1" - optionalDependencies: - colors "^1.1.2" - -clone@^1.0.2: - version "1.0.4" - resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" - integrity sha1-2jCcwmPfFZlMaIypAheco8fNfH4= - -color-convert@^1.9.0: - version "1.9.3" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" - integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== - dependencies: - color-name "1.1.3" - -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.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" - integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= - -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== - -colors@1.3.3: - version "1.3.3" - resolved "https://registry.yarnpkg.com/colors/-/colors-1.3.3.tgz#39e005d546afe01e01f9c4ca8fa50f686a01205d" - integrity sha512-mmGt/1pZqYRjMxB1axhTo16/snVZ5krrKkcmMeVKxzECMMXoCgnvTPp10QgHfcbQZw8Dq2jMNG6je4JlWU0gWg== - -colors@^1.1.2: - version "1.4.0" - resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78" - integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA== - -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" - -commander@^2.12.2, commander@^2.15.0: - version "2.20.3" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" - integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== - -concat-map@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= - -concat-stream@^1.6.0, concat-stream@^1.6.2, concat-stream@~1.6.2: - version "1.6.2" - resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" - integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== - dependencies: - buffer-from "^1.0.0" - inherits "^2.0.3" - readable-stream "^2.2.2" - typedarray "^0.0.6" - -"concat-stream@github:hugomrdias/concat-stream#feat/smaller": - version "2.0.0" - resolved "https://codeload.github.com/hugomrdias/concat-stream/tar.gz/057bc7b5d6d8df26c8cf00a3f151b6721a0a8034" - dependencies: - inherits "^2.0.3" - readable-stream "^3.0.2" - -core-util-is@1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" - integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= - -core-util-is@~1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" - integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== - -cosmiconfig@6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-6.0.0.tgz#da4fee853c52f6b1e6935f41c1a2fc50bd4a9982" - integrity sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg== - dependencies: - "@types/parse-json" "^4.0.0" - import-fresh "^3.1.0" - parse-json "^5.0.0" - path-type "^4.0.0" - yaml "^1.7.2" - -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.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" - -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" - -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@4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" - integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== - dependencies: - ms "^2.1.1" - -debug@^3.2.6: - version "3.2.7" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" - integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== - dependencies: - ms "^2.1.1" - -debug@^4.1.0: - version "4.3.3" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.3.tgz#04266e0b70a98d4462e6e288e38259213332b664" - integrity sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q== - dependencies: - ms "2.1.2" - -decamelize@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" - integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= - -defaults@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.3.tgz#c656051e9817d9ff08ed881477f3fe4019f3ef7d" - integrity sha1-xlYFHpgX2f8I7YgUd/P+QBnz730= - dependencies: - clone "^1.0.2" - -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= - -delimit-stream@0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/delimit-stream/-/delimit-stream-0.1.0.tgz#9b8319477c0e5f8aeb3ce357ae305fc25ea1cd2b" - integrity sha1-m4MZR3wOX4rrPONXrjBfwl6hzSs= - -detect-node@^2.0.4: - version "2.1.0" - resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.1.0.tgz#c9c70775a49c3d03bc2c06d9a73be550f978f8b1" - integrity sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g== - -docker-compose@0.23.4: - version "0.23.4" - resolved "https://registry.yarnpkg.com/docker-compose/-/docker-compose-0.23.4.tgz#43bcabcde55a6ba2873b52fe0ccd99dd8fdceba8" - integrity sha512-yWdXby9uQ8o4syOfvoSJ9ZlTnLipvUmDn59uaYY5VGIUSUAfMPPGqE1DE3pOCnfSg9Tl9UOOFO0PCSAzuIHmuA== - -docker-modem@^1.0.8: - version "1.0.9" - resolved "https://registry.yarnpkg.com/docker-modem/-/docker-modem-1.0.9.tgz#a1f13e50e6afb6cf3431b2d5e7aac589db6aaba8" - integrity sha512-lVjqCSCIAUDZPAZIeyM125HXfNvOmYYInciphNrLrylUtKyW66meAjSPXWchKVzoIYZx69TPnAepVSSkeawoIw== - dependencies: - JSONStream "1.3.2" - debug "^3.2.6" - readable-stream "~1.0.26-4" - split-ca "^1.0.0" - -dockerode@2.5.8: - version "2.5.8" - resolved "https://registry.yarnpkg.com/dockerode/-/dockerode-2.5.8.tgz#1b661e36e1e4f860e25f56e0deabe9f87f1d0acc" - integrity sha512-+7iOUYBeDTScmOmQqpUYQaE7F4vvIt6+gIZNHWhqAQEI887tiPFB9OvXI/HzQYqfUNvukMK+9myLW63oTJPZpw== - dependencies: - concat-stream "~1.6.2" - docker-modem "^1.0.8" - tar-fs "~1.16.3" - -drbg.js@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/drbg.js/-/drbg.js-1.0.1.tgz#3e36b6c42b37043823cdbc332d58f31e2445480b" - integrity sha1-Pja2xCs3BDgjzbwzLVjzHiRFSAs= - dependencies: - browserify-aes "^1.0.6" - create-hash "^1.1.2" - create-hmac "^1.1.4" - -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" - -ejs@^2.6.1: - version "2.7.4" - resolved "https://registry.yarnpkg.com/ejs/-/ejs-2.7.4.tgz#48661287573dcc53e366c7a1ae52c3a120eec9ba" - integrity sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA== - -elliptic@6.5.4, elliptic@^6.5.2, elliptic@^6.5.4: - version "6.5.4" - resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" - integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ== - dependencies: - bn.js "^4.11.9" - brorand "^1.1.0" - hash.js "^1.0.0" - hmac-drbg "^1.0.1" - inherits "^2.0.4" - minimalistic-assert "^1.0.1" - minimalistic-crypto-utils "^1.0.1" - -end-of-stream@^1.0.0, end-of-stream@^1.1.0, end-of-stream@^1.4.1: - 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" - -enquirer@2.3.4: - version "2.3.4" - resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.4.tgz#c608f2e1134c7f68c1c9ee056de13f9b31076de9" - integrity sha512-pkYrrDZumL2VS6VBGDhqbajCM2xpkUNLuKfGPjfKaSIBKYopQbqEFyrOkRMIb2HDR/rO1kGhEt/5twBwtzKBXw== - dependencies: - ansi-colors "^3.2.1" - -err-code@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/err-code/-/err-code-1.1.2.tgz#06e0116d3028f6aef4806849eb0ea6a748ae6960" - integrity sha1-BuARbTAo9q70gGhJ6w6mp0iuaWA= - -err-code@^2.0.0: - version "2.0.3" - resolved "https://registry.yarnpkg.com/err-code/-/err-code-2.0.3.tgz#23c2f3b756ffdfc608d30e27c9a941024807e7f9" - integrity sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA== - -error-ex@^1.3.1: - version "1.3.2" - resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" - integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== - dependencies: - is-arrayish "^0.2.1" - -es6-promise@^4.0.3: - version "4.2.8" - resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.8.tgz#4eb21594c972bc40553d276e510539143db53e0a" - integrity sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w== - -es6-promisify@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/es6-promisify/-/es6-promisify-5.0.0.tgz#5109d62f3e56ea967c4b63505aef08291c8a5203" - integrity sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM= - dependencies: - es6-promise "^4.0.3" - -escape-string-regexp@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" - integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= - -esprima@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" - integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== - -ethereum-bloom-filters@^1.0.6: - version "1.0.10" - resolved "https://registry.yarnpkg.com/ethereum-bloom-filters/-/ethereum-bloom-filters-1.0.10.tgz#3ca07f4aed698e75bd134584850260246a5fed8a" - integrity sha512-rxJ5OFN3RwjQxDcFP2Z5+Q9ho4eIdEmSc2ht0fCu8Se9nbXjZ7/031uXoUYJ87KHCOdVeiUuwSnoS7hmYAGVHA== - 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== - 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-util@^7.1.0: - version "7.1.4" - resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-7.1.4.tgz#a6885bcdd92045b06f596c7626c3e89ab3312458" - integrity sha512-p6KmuPCX4mZIqsQzXfmSx9Y0l2hqf+VkAiwSisW3UKUFdk8ZkAt+AYaor83z2nSi6CU2zSsXMlD80hAbNEGM0A== - dependencies: - "@types/bn.js" "^5.1.0" - bn.js "^5.1.2" - create-hash "^1.1.2" - ethereum-cryptography "^0.1.3" - rlp "^2.2.4" - -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" - -event-target-shim@^5.0.0: - version "5.0.1" - resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789" - integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== - -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@^3.0.0: - version "3.4.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-3.4.0.tgz#c08ed4550ef65d858fac269ffc8572446f37eb89" - integrity sha512-r9vdGQk4bmCuK1yKQu1KTwcT2zwfWdbdaXfCtAh+5nU/4fSX+JAb7vZGvI5naJrQlvONrEB20jeruESI69530g== - 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" - p-finally "^2.0.0" - signal-exit "^3.0.2" - strip-final-newline "^2.0.0" - -explain-error@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/explain-error/-/explain-error-1.0.4.tgz#a793d3ac0cad4c6ab571e9968fbbab6cb2532929" - integrity sha1-p5PTrAytTGq1cemWj7urbLJTKSk= - -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.1" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.1.tgz#8d172c064867f235c0c84a596806d279bf4bcc07" - integrity sha512-Wrk35e8ydCKDj/ArClo1VrPVmN8zph5V4AtHwIuHhvMXsKf73UT3BOD+azBIW+3wOJ4FhEH7zyaJCFvChjYvMA== - -eyes@^0.1.8: - version "0.1.8" - resolved "https://registry.yarnpkg.com/eyes/-/eyes-0.1.8.tgz#62cf120234c683785d902348a800ef3e0cc20bc0" - integrity sha1-Ys8SAjTGg3hdkCNIqADvPgzCC8A= - -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== - -file-uri-to-path@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" - integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== - -fill-range@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" - integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== - dependencies: - to-regex-range "^5.0.1" - -flatmap@0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/flatmap/-/flatmap-0.0.3.tgz#1f18a4d938152d495965f9c958d923ab2dd669b4" - integrity sha1-Hxik2TgVLUlZZfnJWNkjqy3WabQ= - -follow-redirects@^1.14.0: - version "1.14.9" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.14.9.tgz#dd4ea157de7bfaf9ea9b3fbd85aa16951f78d8d7" - integrity sha512-MQDfihBQYMcyy5dhRDJUHcw7lb2Pv/TuE6xP1vyraLukNDHKbDxDNaOE3NbCAdKQApno+GPRyo1YAp89yCjK4w== - -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.2.0: - version "2.5.1" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.5.1.tgz#f2cbec57b5e59e23716e128fe44d4e5dd23895f4" - integrity sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA== - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.6" - mime-types "^2.1.12" - -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" - -fs-constants@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" - integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== - -fs-extra@9.0.0: - version "9.0.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.0.0.tgz#b6afc31036e247b2466dc99c29ae797d5d4580a3" - integrity sha512-pmEYSk3vYsG/bF651KPUXZ+hvjpgWYw/Gc7W9NFUe3ZVLczKKWIij3IKpOrQcdw4TILtibFslZ0UmR8Vvzig4g== - dependencies: - at-least-node "^1.0.0" - graceful-fs "^4.2.0" - jsonfile "^6.0.1" - universalify "^1.0.0" - -fs-jetpack@^2.2.2: - version "2.4.0" - resolved "https://registry.yarnpkg.com/fs-jetpack/-/fs-jetpack-2.4.0.tgz#6080c4ab464a019d37a404baeb47f32af8835026" - integrity sha512-S/o9Dd7K9A7gicVU32eT8G0kHcmSu0rCVdP79P0MWInKFb8XpTc8Syhoo66k9no+HDshtlh4pUJTws8X+8fdFQ== - dependencies: - minimatch "^3.0.2" - rimraf "^2.6.3" - -fs-minipass@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" - integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== - dependencies: - minipass "^3.0.0" - -fs.realpath@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" - integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= - -fsevents@~2.3.1: - version "2.3.2" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" - integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== - -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-intrinsic@^1.0.2: - version "1.1.1" - resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6" - integrity sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q== - dependencies: - function-bind "^1.1.1" - has "^1.0.3" - has-symbols "^1.0.1" - -get-port@^3.1.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/get-port/-/get-port-3.2.0.tgz#dd7ce7de187c06c8bf353796ac71e099f0980ebc" - integrity sha1-3Xzn3hh8Bsi/NTeWrHHgmfCYDrw= - -get-stream@^5.0.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" - -glob-parent@~5.1.0: - version "5.1.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" - integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== - dependencies: - is-glob "^4.0.1" - -glob@7.1.6: - version "7.1.6" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" - integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.4" - once "^1.3.0" - path-is-absolute "^1.0.0" - -glob@^7.1.3: - version "7.2.0" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" - integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.4" - once "^1.3.0" - path-is-absolute "^1.0.0" - -"gluegun@git+https://github.com/edgeandnode/gluegun.git#v4.3.1-pin-colors-dep": - version "4.3.1" - resolved "git+https://github.com/edgeandnode/gluegun.git#b34b9003d7bf556836da41b57ef36eb21570620a" - dependencies: - apisauce "^1.0.1" - app-module-path "^2.2.0" - cli-table3 "~0.5.0" - colors "1.3.3" - cosmiconfig "6.0.0" - cross-spawn "^7.0.0" - ejs "^2.6.1" - enquirer "2.3.4" - execa "^3.0.0" - fs-jetpack "^2.2.2" - lodash.camelcase "^4.3.0" - lodash.kebabcase "^4.1.1" - lodash.lowercase "^4.3.0" - lodash.lowerfirst "^4.3.1" - lodash.pad "^4.5.1" - lodash.padend "^4.6.1" - lodash.padstart "^4.6.1" - lodash.repeat "^4.1.0" - lodash.snakecase "^4.1.1" - lodash.startcase "^4.4.0" - lodash.trim "^4.5.1" - lodash.trimend "^4.5.1" - lodash.trimstart "^4.5.1" - lodash.uppercase "^4.3.0" - lodash.upperfirst "^4.3.1" - ora "^4.0.0" - pluralize "^8.0.0" - ramdasauce "^2.1.0" - semver "^7.0.0" - which "^2.0.0" - yargs-parser "^16.1.0" - -graceful-fs@^4.1.6, graceful-fs@^4.2.0: - version "4.2.9" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.9.tgz#041b05df45755e587a24942279b9d113146e1c96" - integrity sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ== - -graphql@15.5.0: - version "15.5.0" - resolved "https://registry.yarnpkg.com/graphql/-/graphql-15.5.0.tgz#39d19494dbe69d1ea719915b578bf920344a69d5" - integrity sha512-OmaM7y0kaK31NKG31q4YbD2beNYa6jBBKtMFT6gLYJljHLJr42IqJ8KX08u3Li/0ifzTU5HjmoOOrwa5BRLeDA== - -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@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" - integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= - -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-symbols@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" - integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== - -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.1.7, 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" - -hi-base32@~0.5.0: - version "0.5.1" - resolved "https://registry.yarnpkg.com/hi-base32/-/hi-base32-0.5.1.tgz#1279f2ddae2673219ea5870c2121d2a33132857e" - integrity sha512-EmBBpvdYh/4XxsnUybsPag6VikPYnN30td+vQk+GI3qpahVEG9+gTkG0aXVxTjBqQ5T6ijbWIu77O+C5WFWsnA== - -hmac-drbg@^1.0.1: - 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-basic@^8.1.1: - version "8.1.3" - resolved "https://registry.yarnpkg.com/http-basic/-/http-basic-8.1.3.tgz#a7cabee7526869b9b710136970805b1004261bbf" - integrity sha512-/EcDMwJZh3mABI2NhGfHOGOeOZITqfkEO4p/xK+l3NpyncIHUQBoMvCSF/b5GqvKtySC2srL/GGG3+EtlqlmCw== - dependencies: - caseless "^0.12.0" - concat-stream "^1.6.2" - http-response-object "^3.0.1" - parse-cache-control "^1.0.1" - -http-response-object@^3.0.1: - version "3.0.2" - resolved "https://registry.yarnpkg.com/http-response-object/-/http-response-object-3.0.2.tgz#7f435bb210454e4360d074ef1f989d5ea8aa9810" - integrity sha512-bqX0XTF6fnXSQcEJ2Iuyr75yVakyjIDCqroJQ/aHfSdlM743Cwqoi2nDYMzLGWUcuTWGWy8AAvOKXTfiv6q9RA== - dependencies: - "@types/node" "^10.0.3" - -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== - -ieee754@^1.1.13, ieee754@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" - integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== - -immutable@3.8.2: - version "3.8.2" - resolved "https://registry.yarnpkg.com/immutable/-/immutable-3.8.2.tgz#c2439951455bb39913daf281376f1530e104adf3" - integrity sha1-wkOZUUVbs5kT2vKBN28VMOEErfM= - -import-fresh@^3.1.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" - integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== - dependencies: - parent-module "^1.0.0" - resolve-from "^4.0.0" - -inflight@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" - integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= - dependencies: - once "^1.3.0" - wrappy "1" - -inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, 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== - -ip-regex@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9" - integrity sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk= - -ip-regex@^4.0.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-4.3.0.tgz#687275ab0f57fa76978ff8f4dddc8a23d5990db5" - integrity sha512-B9ZWJxHHOHUhUjCPrMpLD4xEq35bUTClHM1S6CBU5ixQnkZmwipwgc96vAd7AAGM9TGHvJR+Uss+/Ak6UphK+Q== - -ip@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" - integrity sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo= - -ipfs-block@~0.8.1: - version "0.8.1" - resolved "https://registry.yarnpkg.com/ipfs-block/-/ipfs-block-0.8.1.tgz#05e1068832775e8f1c2da5b64106cc837fd2acb9" - integrity sha512-0FaCpmij+jZBoUYhjoB5ptjdl9QzvrdRIoBmUU5JiBnK2GA+4YM/ifklaB8ePRhA/rRzhd+KYBjvMFMAL4NrVQ== - dependencies: - cids "~0.7.0" - class-is "^1.1.0" - -ipfs-http-client@34.0.0: - version "34.0.0" - resolved "https://registry.yarnpkg.com/ipfs-http-client/-/ipfs-http-client-34.0.0.tgz#8804d06a11c22306332a8ffa0949b6f672a0c9c8" - integrity sha512-4RCkk8ix4Dqn6sxqFVwuXWCZ1eLFPsVaj6Ijvu1fs9VYgxgVudsW9PWwarlr4mw1xUCmPWYyXnEbGgzBrfMy0Q== - dependencies: - abort-controller "^3.0.0" - async "^2.6.1" - bignumber.js "^9.0.0" - bl "^3.0.0" - bs58 "^4.0.1" - buffer "^5.4.2" - cids "~0.7.1" - concat-stream "github:hugomrdias/concat-stream#feat/smaller" - debug "^4.1.0" - detect-node "^2.0.4" - end-of-stream "^1.4.1" - err-code "^2.0.0" - explain-error "^1.0.4" - flatmap "0.0.3" - glob "^7.1.3" - ipfs-block "~0.8.1" - ipfs-utils "~0.0.3" - ipld-dag-cbor "~0.15.0" - ipld-dag-pb "~0.17.3" - ipld-raw "^4.0.0" - is-ipfs "~0.6.1" - is-pull-stream "0.0.0" - is-stream "^2.0.0" - iso-stream-http "~0.1.2" - iso-url "~0.4.6" - iterable-ndjson "^1.1.0" - just-kebab-case "^1.1.0" - just-map-keys "^1.1.0" - kind-of "^6.0.2" - ky "^0.11.2" - ky-universal "^0.2.2" - lru-cache "^5.1.1" - multiaddr "^6.0.6" - multibase "~0.6.0" - multicodec "~0.5.1" - multihashes "~0.4.14" - ndjson "github:hugomrdias/ndjson#feat/readable-stream3" - once "^1.4.0" - peer-id "~0.12.3" - peer-info "~0.15.1" - promise-nodeify "^3.0.1" - promisify-es6 "^1.0.3" - pull-defer "~0.2.3" - pull-stream "^3.6.9" - pull-to-stream "~0.1.1" - pump "^3.0.0" - qs "^6.5.2" - readable-stream "^3.1.1" - stream-to-pull-stream "^1.7.2" - tar-stream "^2.0.1" - through2 "^3.0.1" - -ipfs-utils@~0.0.3: - version "0.0.4" - resolved "https://registry.yarnpkg.com/ipfs-utils/-/ipfs-utils-0.0.4.tgz#946114cfeb6afb4454b4ccb10d2327cd323b0cce" - integrity sha512-7cZf6aGj2FG3XJWhCNwn4mS93Q0GEWjtBZvEHqzgI43U2qzNDCyzfS1pei1Y5F+tw/zDJ5U4XG0G9reJxR53Ig== - dependencies: - buffer "^5.2.1" - is-buffer "^2.0.3" - is-electron "^2.2.0" - is-pull-stream "0.0.0" - is-stream "^2.0.0" - kind-of "^6.0.2" - readable-stream "^3.4.0" - -ipld-dag-cbor@~0.15.0: - version "0.15.3" - resolved "https://registry.yarnpkg.com/ipld-dag-cbor/-/ipld-dag-cbor-0.15.3.tgz#283afdb81d5b07db8e4fff7a10ef5e517e87f299" - integrity sha512-m23nG7ZyoVFnkK55/bLAErc7EfiMgaEQlqHWDTGzPI+O5r6bPfp+qbL5zTVSIT8tpbHmu174dwerVtLoVgeVyA== - dependencies: - borc "^2.1.2" - buffer "^5.5.0" - cids "~0.8.0" - is-circular "^1.0.2" - multicodec "^1.0.0" - multihashing-async "~0.8.0" - -ipld-dag-pb@~0.17.3: - version "0.17.4" - resolved "https://registry.yarnpkg.com/ipld-dag-pb/-/ipld-dag-pb-0.17.4.tgz#080841cfdd014d996f8da7f3a522ec8b1f6b6494" - integrity sha512-YwCxETEMuXVspOKOhjIOHJvKvB/OZfCDkpSFiYBQN2/JQjM9y/RFCYzIQGm0wg7dCFLrhvfjAZLTSaKs65jzWA== - dependencies: - cids "~0.7.0" - class-is "^1.1.0" - multicodec "~0.5.1" - multihashing-async "~0.7.0" - protons "^1.0.1" - stable "~0.1.8" - -ipld-raw@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/ipld-raw/-/ipld-raw-4.0.1.tgz#49a6f58cdfece5a4d581925b19ee19255be2a29d" - integrity sha512-WjIdtZ06jJEar8zh+BHB84tE6ZdbS/XNa7+XCArOYfmeJ/c01T9VQpeMwdJQYn5c3s5UvvCu7y4VIi3vk2g1bA== - dependencies: - cids "~0.7.0" - multicodec "^1.0.0" - multihashing-async "~0.8.0" - -is-arrayish@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" - integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= - -is-binary-path@~2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" - integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== - dependencies: - binary-extensions "^2.0.0" - -is-buffer@^2.0.3: - version "2.0.5" - resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.5.tgz#ebc252e400d22ff8d77fa09888821a24a658c191" - integrity sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ== - -is-circular@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-circular/-/is-circular-1.0.2.tgz#2e0ab4e9835f4c6b0ea2b9855a84acd501b8366c" - integrity sha512-YttjnrswnUYRVJvxCvu8z+PGMUSzC2JttP0OEXezlAEdp3EXzhf7IZ3j0gRAybJBQupedIZFhY61Tga6E0qASA== - -is-electron@^2.2.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/is-electron/-/is-electron-2.2.1.tgz#751b1dd8a74907422faa5c35aaa0cf66d98086e9" - integrity sha512-r8EEQQsqT+Gn0aXFx7lTFygYQhILLCB+wn0WCDL5LZRINeLH/Rvw1j2oKodELLXYNImQ3CRlVsY8wW4cGOsyuw== - -is-extglob@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" - integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= - -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-glob@^4.0.1, is-glob@~4.0.1: - version "4.0.3" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" - integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== - dependencies: - is-extglob "^2.1.1" - -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-interactive@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-interactive/-/is-interactive-1.0.0.tgz#cea6e6ae5c870a7b0a0004070b7b587e0252912e" - integrity sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w== - -is-ip@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-ip/-/is-ip-2.0.0.tgz#68eea07e8a0a0a94c2d080dd674c731ab2a461ab" - integrity sha1-aO6gfooKCpTC0IDdZ0xzGrKkYas= - dependencies: - ip-regex "^2.0.0" - -is-ip@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/is-ip/-/is-ip-3.1.0.tgz#2ae5ddfafaf05cb8008a62093cf29734f657c5d8" - integrity sha512-35vd5necO7IitFPjd/YBeqwWnyDWbuLH9ZXQdMfDA8TEo7pv5X8yfrvVO3xbJbLUlERCMvf6X0hTUamQxCYJ9Q== - dependencies: - ip-regex "^4.0.0" - -is-ipfs@~0.6.1: - version "0.6.3" - resolved "https://registry.yarnpkg.com/is-ipfs/-/is-ipfs-0.6.3.tgz#82a5350e0a42d01441c40b369f8791e91404c497" - integrity sha512-HyRot1dvLcxImtDqPxAaY1miO6WsiP/z7Yxpg2qpaLWv5UdhAPtLvHJ4kMLM0w8GSl8AFsVF23PHe1LzuWrUlQ== - dependencies: - bs58 "^4.0.1" - cids "~0.7.0" - mafmt "^7.0.0" - multiaddr "^7.2.1" - multibase "~0.6.0" - multihashes "~0.4.13" - -is-number@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" - integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== - -is-promise@~1, is-promise@~1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-1.0.1.tgz#31573761c057e33c2e91aab9e96da08cefbe76e5" - integrity sha1-MVc3YcBX4zwukaq56W2gjO++duU= - -is-pull-stream@0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/is-pull-stream/-/is-pull-stream-0.0.0.tgz#a3bc3d1c6d3055151c46bde6f399efed21440ca9" - integrity sha1-o7w9HG0wVRUcRr3m85nv7SFEDKk= - -is-stream@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" - integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== - -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= - -isarray@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" - integrity sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8= - -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= - -iso-random-stream@^1.1.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/iso-random-stream/-/iso-random-stream-1.1.2.tgz#c703da2c518db573277c5678cc43c5298283d64c" - integrity sha512-7y0tsBBgQs544iTYjyrMp5xvgrbYR8b+plQq1Bryp+03p0LssrxC9C1M0oHv4QESDt7d95c74XvMk/yawKqX+A== - dependencies: - buffer "^6.0.3" - readable-stream "^3.4.0" - -iso-stream-http@~0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/iso-stream-http/-/iso-stream-http-0.1.2.tgz#b3dfea4c9f23ff26d078d40c539cfc0dfebacd37" - integrity sha512-oHEDNOysIMTNypbg2f1SlydqRBvjl4ZbSE9+0awVxnkx3K2stGTFwB/kpVqnB6UEfF8QD36kAjDwZvqyXBLMnQ== - dependencies: - builtin-status-codes "^3.0.0" - inherits "^2.0.1" - readable-stream "^3.1.1" - -iso-url@~0.4.6, iso-url@~0.4.7: - version "0.4.7" - resolved "https://registry.yarnpkg.com/iso-url/-/iso-url-0.4.7.tgz#de7e48120dae46921079fe78f325ac9e9217a385" - integrity sha512-27fFRDnPAMnHGLq36bWTpKET+eiXct3ENlCcdcMdk+mjXrb2kw3mhBUg1B7ewAC0kVzlOPhADzQgz1SE6Tglog== - -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= - -iterable-ndjson@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/iterable-ndjson/-/iterable-ndjson-1.1.0.tgz#36f7e8a5bb04fd087d384f29e44fc4280fc014fc" - integrity sha512-OOp1Lb0o3k5MkXHx1YaIY5Z0ELosZfTnBaas9f8opJVcZGBIONA2zY/6CYE+LKkqrSDooIneZbrBGgOZnHPkrg== - dependencies: - string_decoder "^1.2.0" - -jayson@3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/jayson/-/jayson-3.2.0.tgz#df6d8139cd9f6ee2f56c8c2deaee448da7eccf1b" - integrity sha512-DZQnwA57GcStw4soSYB2VntWXFfoWvmSarlaWePDYOWhjxT72PBM4atEBomaTaS1uqk3jFC9UO9AyWjlujo3xw== - dependencies: - "@types/connect" "^3.4.32" - "@types/express-serve-static-core" "^4.16.9" - "@types/lodash" "^4.14.139" - "@types/node" "^12.7.7" - JSONStream "^1.3.1" - commander "^2.12.2" - es6-promisify "^5.0.0" - eyes "^0.1.8" - json-stringify-safe "^5.0.1" - lodash "^4.17.15" - uuid "^3.2.1" - -js-sha3@0.8.0, js-sha3@^0.8.0, 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-tokens@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" - integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== - -js-yaml@3.13.1: - version "3.13.1" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847" - integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw== - dependencies: - argparse "^1.0.7" - esprima "^4.0.0" - -jsbn@~0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" - integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= - -json-parse-even-better-errors@^2.3.0: - version "2.3.1" - resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" - integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== - -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.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.4.0.tgz#f7de4cf6efab838ebaeb3236474cbba5a1930ab5" - integrity sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA== - -json-stringify-safe@^5.0.1, 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= - -json-text-sequence@~0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/json-text-sequence/-/json-text-sequence-0.1.1.tgz#a72f217dc4afc4629fff5feb304dc1bd51a2f3d2" - integrity sha1-py8hfcSvxGKf/1/rME3BvVGi89I= - dependencies: - delimit-stream "0.1.0" - -jsonfile@^6.0.1: - version "6.1.0" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" - integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== - dependencies: - universalify "^2.0.0" - optionalDependencies: - graceful-fs "^4.1.6" - -jsonparse@^1.2.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280" - integrity sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA= - -jsprim@^1.2.2: - version "1.4.2" - resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.2.tgz#712c65533a15c878ba59e9ed5f0e26d5b77c5feb" - integrity sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw== - dependencies: - assert-plus "1.0.0" - extsprintf "1.3.0" - json-schema "0.4.0" - verror "1.10.0" - -just-kebab-case@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/just-kebab-case/-/just-kebab-case-1.1.0.tgz#ebe854fde84b0afa4e597fcd870b12eb3c026755" - integrity sha512-QkuwuBMQ9BQHMUEkAtIA4INLrkmnnveqlFB1oFi09gbU0wBdZo6tTnyxNWMR84zHxBuwK7GLAwqN8nrvVxOLTA== - -just-map-keys@^1.1.0: - version "1.2.1" - resolved "https://registry.yarnpkg.com/just-map-keys/-/just-map-keys-1.2.1.tgz#ef6e16133b7d34329962dfae9101d581abb1b143" - integrity sha512-Dmyz1Cy2SWM+PpqDPB1kdDglyexdzMthnAsvOIE9w4OPj8NDRuY1mh20x/JfG5w6fCGw9F0WmcofJhYZ4MiuyA== - -keccak@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/keccak/-/keccak-3.0.2.tgz#4c2c6e8c54e04f2670ee49fa734eb9da152206e0" - integrity sha512-PyKKjkH53wDMLGrvmRGSNWgmSxZOUqbnXwKL9tmgbFYA1iAYqW21kfR7mZXV0MlESiefxQQE9X9fTa3X+2MPDQ== - dependencies: - node-addon-api "^2.0.0" - node-gyp-build "^4.2.0" - readable-stream "^3.6.0" - -keypair@^1.0.1: - version "1.0.4" - resolved "https://registry.yarnpkg.com/keypair/-/keypair-1.0.4.tgz#a749a45f388593f3950f18b3757d32a93bd8ce83" - integrity sha512-zwhgOhhniaL7oxMgUMKKw5219PWWABMO+dgMnzJOQ2/5L3XJtTJGhW2PEXlxXj9zaccdReZJZ83+4NPhVfNVDg== - -kind-of@^6.0.2: - version "6.0.3" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" - integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== - -ky-universal@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/ky-universal/-/ky-universal-0.2.2.tgz#7a36e1a75641a98f878157463513965f799f5bfe" - integrity sha512-fb32o/fKy/ux2ALWa9HU2hvGtfOq7/vn2nH0FpVE+jwNzyTeORlAbj3Fiw+WLMbUlmVqZIWupnLZ2USHvqwZHw== - dependencies: - abort-controller "^3.0.0" - node-fetch "^2.3.0" - -ky@^0.11.2: - version "0.11.2" - resolved "https://registry.yarnpkg.com/ky/-/ky-0.11.2.tgz#4ffe6621d9d9ab61bf0f5500542e3a96d1ba0815" - integrity sha512-5Aou5BWue5/mkPqIRqzSWW+0Hkl403pr/2AIrCKYw7cVl/Xoe8Xe4KLBO0PRjbz7GnRe1/8wW1KhqQNFFE7/GQ== - -libp2p-crypto-secp256k1@~0.3.0: - version "0.3.1" - resolved "https://registry.yarnpkg.com/libp2p-crypto-secp256k1/-/libp2p-crypto-secp256k1-0.3.1.tgz#4cbeb857f5cfe5fefb1253e6b2994420c0ca166e" - integrity sha512-evrfK/CeUSd/lcELUdDruyPBvxDmLairth75S32OLl3H+++2m2fV24JEtxzdFS9JH3xEFw0h6JFO8DBa1bP9dA== - dependencies: - async "^2.6.2" - bs58 "^4.0.1" - multihashing-async "~0.6.0" - nodeify "^1.0.1" - safe-buffer "^5.1.2" - secp256k1 "^3.6.2" - -libp2p-crypto@~0.16.1: - version "0.16.4" - resolved "https://registry.yarnpkg.com/libp2p-crypto/-/libp2p-crypto-0.16.4.tgz#fb1a4ba39d56789303947784b5b0d6cefce12fdc" - integrity sha512-II8HxKc9jbmQp34pprlluNxsBCWJDjHRPYJzuRy7ragztNip9Zb7uJ4lCje6gGzz4DNAcHkAUn+GqCIK1592iA== - dependencies: - asmcrypto.js "^2.3.2" - asn1.js "^5.0.1" - async "^2.6.1" - bn.js "^4.11.8" - browserify-aes "^1.2.0" - bs58 "^4.0.1" - iso-random-stream "^1.1.0" - keypair "^1.0.1" - libp2p-crypto-secp256k1 "~0.3.0" - multihashing-async "~0.5.1" - node-forge "^0.10.0" - pem-jwk "^2.0.0" - protons "^1.0.1" - rsa-pem-to-jwk "^1.1.3" - tweetnacl "^1.0.0" - ursa-optional "~0.10.0" - -lines-and-columns@^1.1.6: - version "1.2.4" - resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" - integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== - -lodash.camelcase@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" - integrity sha1-soqmKIorn8ZRA1x3EfZathkDMaY= - -lodash.kebabcase@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz#8489b1cb0d29ff88195cceca448ff6d6cc295c36" - integrity sha1-hImxyw0p/4gZXM7KRI/21swpXDY= - -lodash.lowercase@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/lodash.lowercase/-/lodash.lowercase-4.3.0.tgz#46515aced4acb0b7093133333af068e4c3b14e9d" - integrity sha1-RlFaztSssLcJMTMzOvBo5MOxTp0= - -lodash.lowerfirst@^4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/lodash.lowerfirst/-/lodash.lowerfirst-4.3.1.tgz#de3c7b12e02c6524a0059c2f6cb7c5c52655a13d" - integrity sha1-3jx7EuAsZSSgBZwvbLfFxSZVoT0= - -lodash.pad@^4.5.1: - version "4.5.1" - resolved "https://registry.yarnpkg.com/lodash.pad/-/lodash.pad-4.5.1.tgz#4330949a833a7c8da22cc20f6a26c4d59debba70" - integrity sha1-QzCUmoM6fI2iLMIPaibE1Z3runA= - -lodash.padend@^4.6.1: - version "4.6.1" - resolved "https://registry.yarnpkg.com/lodash.padend/-/lodash.padend-4.6.1.tgz#53ccba047d06e158d311f45da625f4e49e6f166e" - integrity sha1-U8y6BH0G4VjTEfRdpiX05J5vFm4= - -lodash.padstart@^4.6.1: - version "4.6.1" - resolved "https://registry.yarnpkg.com/lodash.padstart/-/lodash.padstart-4.6.1.tgz#d2e3eebff0d9d39ad50f5cbd1b52a7bce6bb611b" - integrity sha1-0uPuv/DZ05rVD1y9G1KnvOa7YRs= - -lodash.repeat@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/lodash.repeat/-/lodash.repeat-4.1.0.tgz#fc7de8131d8c8ac07e4b49f74ffe829d1f2bec44" - integrity sha1-/H3oEx2MisB+S0n3T/6CnR8r7EQ= - -lodash.snakecase@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/lodash.snakecase/-/lodash.snakecase-4.1.1.tgz#39d714a35357147837aefd64b5dcbb16becd8f8d" - integrity sha1-OdcUo1NXFHg3rv1ktdy7Fr7Nj40= - -lodash.startcase@^4.4.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/lodash.startcase/-/lodash.startcase-4.4.0.tgz#9436e34ed26093ed7ffae1936144350915d9add8" - integrity sha1-lDbjTtJgk+1/+uGTYUQ1CRXZrdg= - -lodash.trim@^4.5.1: - version "4.5.1" - resolved "https://registry.yarnpkg.com/lodash.trim/-/lodash.trim-4.5.1.tgz#36425e7ee90be4aa5e27bcebb85b7d11ea47aa57" - integrity sha1-NkJefukL5KpeJ7zruFt9EepHqlc= - -lodash.trimend@^4.5.1: - version "4.5.1" - resolved "https://registry.yarnpkg.com/lodash.trimend/-/lodash.trimend-4.5.1.tgz#12804437286b98cad8996b79414e11300114082f" - integrity sha1-EoBENyhrmMrYmWt5QU4RMAEUCC8= - -lodash.trimstart@^4.5.1: - version "4.5.1" - resolved "https://registry.yarnpkg.com/lodash.trimstart/-/lodash.trimstart-4.5.1.tgz#8ff4dec532d82486af59573c39445914e944a7f1" - integrity sha1-j/TexTLYJIavWVc8OURZFOlEp/E= - -lodash.uppercase@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/lodash.uppercase/-/lodash.uppercase-4.3.0.tgz#c404abfd1469f93931f9bb24cf6cc7d57059bc73" - integrity sha1-xASr/RRp+Tkx+bskz2zH1XBZvHM= - -lodash.upperfirst@^4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/lodash.upperfirst/-/lodash.upperfirst-4.3.1.tgz#1365edf431480481ef0d1c68957a5ed99d49f7ce" - integrity sha1-E2Xt9DFIBIHvDRxolXpe2Z1J984= - -lodash@^4.17.14, lodash@^4.17.15: - version "4.17.21" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" - integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== - -log-symbols@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-3.0.0.tgz#f3a08516a5dea893336a7dee14d18a1cfdab77c4" - integrity sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ== - dependencies: - chalk "^2.4.2" - -long@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/long/-/long-4.0.0.tgz#9a7b71cfb7d361a194ea555241c92f7468d5bf28" - integrity sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA== - -looper@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/looper/-/looper-3.0.0.tgz#2efa54c3b1cbaba9b94aee2e5914b0be57fbb749" - integrity sha1-LvpUw7HLq6m5Su4uWRSwvlf7t0k= - -lru-cache@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" - integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== - dependencies: - yallist "^3.0.2" - -lru-cache@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" - integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== - dependencies: - yallist "^4.0.0" - -mafmt@^6.0.2: - version "6.0.10" - resolved "https://registry.yarnpkg.com/mafmt/-/mafmt-6.0.10.tgz#3ad251c78f14f8164e66f70fd3265662da41113a" - integrity sha512-FjHDnew6dW9lUu3eYwP0FvvJl9uvNbqfoJM+c1WJcSyutNEIlyu6v3f/rlPnD1cnmue38IjuHlhBdIh3btAiyw== - dependencies: - multiaddr "^6.1.0" - -mafmt@^7.0.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/mafmt/-/mafmt-7.1.0.tgz#4126f6d0eded070ace7dbbb6fb04977412d380b5" - integrity sha512-vpeo9S+hepT3k2h5iFxzEHvvR0GPBx9uKaErmnRzYNcaKb03DgOArjEMlgG4a9LcuZZ89a3I8xbeto487n26eA== - dependencies: - multiaddr "^7.3.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" - -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== - -mime-db@1.51.0: - version "1.51.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.51.0.tgz#d9ff62451859b18342d960850dc3cfb77e63fb0c" - integrity sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g== - -mime-types@^2.1.12, mime-types@~2.1.19: - version "2.1.34" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.34.tgz#5a712f9ec1503511a945803640fafe09d3793c24" - integrity sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A== - dependencies: - mime-db "1.51.0" - -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== - -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.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= - -minimatch@^3.0.2, minimatch@^3.0.4: - version "3.1.2" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" - integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== - dependencies: - brace-expansion "^1.1.7" - -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@^3.0.0: - version "3.1.6" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.1.6.tgz#3b8150aa688a711a1521af5e8779c1d3bb4f45ee" - integrity sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ== - dependencies: - yallist "^4.0.0" - -minizlib@^2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931" - integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg== - dependencies: - minipass "^3.0.0" - yallist "^4.0.0" - -mkdirp@^0.5.1: - 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" - -mkdirp@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" - integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== - -ms@2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" - integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== - -ms@^2.1.1: - version "2.1.3" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" - integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== - -multiaddr@^6.0.3, multiaddr@^6.0.6, multiaddr@^6.1.0: - version "6.1.1" - resolved "https://registry.yarnpkg.com/multiaddr/-/multiaddr-6.1.1.tgz#9aae57b3e399089b9896d9455afa8f6b117dff06" - integrity sha512-Q1Ika0F9MNhMtCs62Ue+GWIJtRFEhZ3Xz8wH7/MZDVZTWhil1/H2bEGN02kUees3hkI3q1oHSjmXYDM0gxaFjQ== - dependencies: - bs58 "^4.0.1" - class-is "^1.1.0" - hi-base32 "~0.5.0" - ip "^1.1.5" - is-ip "^2.0.0" - varint "^5.0.0" - -multiaddr@^7.2.1, multiaddr@^7.3.0: - version "7.5.0" - resolved "https://registry.yarnpkg.com/multiaddr/-/multiaddr-7.5.0.tgz#976c88e256e512263445ab03b3b68c003d5f485e" - integrity sha512-GvhHsIGDULh06jyb6ev+VfREH9evJCFIRnh3jUt9iEZ6XDbyoisZRFEI9bMvK/AiR6y66y6P+eoBw9mBYMhMvw== - dependencies: - buffer "^5.5.0" - cids "~0.8.0" - class-is "^1.1.0" - is-ip "^3.1.0" - multibase "^0.7.0" - varint "^5.0.0" - -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@^1.0.0, multibase@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/multibase/-/multibase-1.0.1.tgz#4adbe1de0be8a1ab0274328b653c3f1903476724" - integrity sha512-KcCxpBVY8fdVKu4dJMAahq4F/2Z/9xqEjIiR7PiMe7LRGeorFn2NLmicN6nLBCqQvft6MG2Lc9X5P0IdyvnxEw== - 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@^1.0.0, multicodec@^1.0.1: - 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" - -multicodec@~0.5.1: - 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" - -multihashes@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/multihashes/-/multihashes-1.0.1.tgz#a89415d68283cf6287c6e219e304e75ce7fb73fe" - integrity sha512-S27Tepg4i8atNiFaU5ZOm3+gl3KQlUanLs/jWcBxQHFttgq+5x1OgbQmf2d8axJ/48zYGBd/wT9d723USMFduw== - dependencies: - buffer "^5.6.0" - multibase "^1.0.1" - varint "^5.0.0" - -multihashes@~0.4.13, multihashes@~0.4.14, 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" - -multihashing-async@~0.5.1: - version "0.5.2" - resolved "https://registry.yarnpkg.com/multihashing-async/-/multihashing-async-0.5.2.tgz#4af40e0dde2f1dbb12a7c6b265181437ac26b9de" - integrity sha512-mmyG6M/FKxrpBh9xQDUvuJ7BbqT93ZeEeH5X6LeMYKoYshYLr9BDdCsvDtZvn+Egf+/Xi+aOznrWL4vp3s+p0Q== - dependencies: - blakejs "^1.1.0" - js-sha3 "~0.8.0" - multihashes "~0.4.13" - murmurhash3js "^3.0.1" - nodeify "^1.0.1" - -multihashing-async@~0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/multihashing-async/-/multihashing-async-0.6.0.tgz#c1fc6696a624b9bf39b160b0c4c4e7ba3f394453" - integrity sha512-Qv8pgg99Lewc191A5nlXy0bSd2amfqlafNJZmarU6Sj7MZVjpR94SCxQjf4DwPtgWZkiLqsjUQBXA2RSq+hYyA== - dependencies: - blakejs "^1.1.0" - js-sha3 "~0.8.0" - multihashes "~0.4.13" - murmurhash3js "^3.0.1" - nodeify "^1.0.1" - -multihashing-async@~0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/multihashing-async/-/multihashing-async-0.7.0.tgz#3234fb98295be84386b85bfd20377d3e5be20d6b" - integrity sha512-SCbfl3f+DzJh+/5piukga9ofIOxwfT05t8R4jfzZIJ88YE9zU9+l3K2X+XB19MYyxqvyK9UJRNWbmQpZqQlbRA== - dependencies: - blakejs "^1.1.0" - buffer "^5.2.1" - err-code "^1.1.2" - js-sha3 "~0.8.0" - multihashes "~0.4.13" - murmurhash3js-revisited "^3.0.0" - -multihashing-async@~0.8.0: - version "0.8.2" - resolved "https://registry.yarnpkg.com/multihashing-async/-/multihashing-async-0.8.2.tgz#3d5da05df27d83be923f6d04143a0954ff87f27f" - integrity sha512-2lKa1autuCy8x7KIEj9aVNbAb3aIMRFYIwN7mq/zD4pxgNIVgGlm+f6GKY4880EOF2Y3GktHYssRy7TAJQ2DyQ== - dependencies: - blakejs "^1.1.0" - buffer "^5.4.3" - err-code "^2.0.0" - js-sha3 "^0.8.0" - multihashes "^1.0.1" - murmurhash3js-revisited "^3.0.0" - -murmurhash3js-revisited@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/murmurhash3js-revisited/-/murmurhash3js-revisited-3.0.0.tgz#6bd36e25de8f73394222adc6e41fa3fac08a5869" - integrity sha512-/sF3ee6zvScXMb1XFJ8gDsSnY+X8PbOyjIuBhtgis10W2Jx4ZjIhikUCIF9c4gpJxVnQIsPAFrSwTCuAjicP6g== - -murmurhash3js@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/murmurhash3js/-/murmurhash3js-3.0.1.tgz#3e983e5b47c2a06f43a713174e7e435ca044b998" - integrity sha1-Ppg+W0fCoG9DpxMXTn5DXKBEuZg= - -mute-stream@0.0.8: - version "0.0.8" - resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" - integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== - -nan@^2.14.0, nan@^2.14.2: - version "2.15.0" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.15.0.tgz#3f34a473ff18e15c1b5626b62903b5ad6e665fee" - integrity sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ== - -"ndjson@github:hugomrdias/ndjson#feat/readable-stream3": - version "1.5.0" - resolved "https://codeload.github.com/hugomrdias/ndjson/tar.gz/4db16da6b42e5b39bf300c3a7cde62abb3fa3a11" - dependencies: - json-stringify-safe "^5.0.1" - minimist "^1.2.0" - split2 "^3.1.0" - through2 "^3.0.0" - -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: - version "2.6.0" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.0.tgz#e633456386d4aa55863f676a7ab0daa8fdecb0fd" - integrity sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA== - -node-fetch@^2.3.0: - version "2.6.7" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" - integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ== - dependencies: - whatwg-url "^5.0.0" - -node-forge@^0.10.0: - version "0.10.0" - resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.10.0.tgz#32dea2afb3e9926f02ee5ce8794902691a676bf3" - integrity sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA== - -node-gyp-build@^4.2.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.3.0.tgz#9f256b03e5826150be39c764bf51e993946d71a3" - integrity sha512-iWjXZvmboq0ja1pUGULQBexmxq8CV4xBhX7VDOTbL7ZR4FOowwY/VOtRxBN/yKxmdGoIp4j5ysNT4u3S2pDQ3Q== - -nodeify@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/nodeify/-/nodeify-1.0.1.tgz#64ab69a7bdbaf03ce107b4f0335c87c0b9e91b1d" - integrity sha1-ZKtpp7268DzhB7TwM1yHwLnpGx0= - dependencies: - is-promise "~1.0.0" - promise "~1.3.0" - -normalize-path@^3.0.0, normalize-path@~3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" - integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== - -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@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-2.1.1.tgz#43c36e5d569ff8e4816c4efa8be02d26967c18aa" - integrity sha1-Q8NuXVaf+OSBbE76i+AtJpZ8GKo= - -object-assign@^4.1.0: - 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.9.0: - version "1.12.0" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.0.tgz#6e2c120e868fd1fd18cb4f18c31741d0d6e776f0" - integrity sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g== - -once@^1.3.0, 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" - -optimist@~0.3.5: - version "0.3.7" - resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.3.7.tgz#c90941ad59e4273328923074d2cf2e7cbc6ec0d9" - integrity sha1-yQlBrVnkJzMokjB00s8ufLxuwNk= - dependencies: - wordwrap "~0.0.2" - -ora@^4.0.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/ora/-/ora-4.1.1.tgz#566cc0348a15c36f5f0e979612842e02ba9dddbc" - integrity sha512-sjYP8QyVWBpBZWD6Vr1M/KwknSw6kJOz41tvGMlwWeClHBtYKTbHMki1PsLZnxKpXMPbTKv9b3pjQu3REib96A== - dependencies: - chalk "^3.0.0" - cli-cursor "^3.1.0" - cli-spinners "^2.2.0" - is-interactive "^1.0.0" - log-symbols "^3.0.0" - mute-stream "0.0.8" - strip-ansi "^6.0.0" - wcwidth "^1.0.1" - -p-finally@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-2.0.1.tgz#bd6fcaa9c559a096b680806f4d657b3f0f240561" - integrity sha512-vpm09aKwq6H9phqRQzecoDpD8TmVyGw70qmWlyq5onxY7tqyTTFVvxMykxQSQKILBSFlbXpypIw2T1Ml7+DDtw== - -parent-module@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" - integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== - dependencies: - callsites "^3.0.0" - -parse-cache-control@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/parse-cache-control/-/parse-cache-control-1.0.1.tgz#8eeab3e54fa56920fe16ba38f77fa21aacc2d74e" - integrity sha1-juqz5U+laSD+Fro493+iGqzC104= - -parse-json@^5.0.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" - integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== - dependencies: - "@babel/code-frame" "^7.0.0" - error-ex "^1.3.1" - json-parse-even-better-errors "^2.3.0" - lines-and-columns "^1.1.6" - -path-is-absolute@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" - integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= - -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-type@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" - integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== - -pbkdf2@^3.0.17: - version "3.1.2" - resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.2.tgz#dd822aa0887580e52f1a039dc3eda108efae3075" - integrity sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA== - 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" - -peer-id@~0.12.2, peer-id@~0.12.3: - version "0.12.5" - resolved "https://registry.yarnpkg.com/peer-id/-/peer-id-0.12.5.tgz#b22a1edc5b4aaaa2bb830b265ba69429823e5179" - integrity sha512-3xVWrtIvNm9/OPzaQBgXDrfWNx63AftgFQkvqO6YSZy7sP3Fuadwwbn54F/VO9AnpyW/26i0WRQz9FScivXrmw== - dependencies: - async "^2.6.3" - class-is "^1.1.0" - libp2p-crypto "~0.16.1" - multihashes "~0.4.15" - -peer-info@~0.15.1: - version "0.15.1" - resolved "https://registry.yarnpkg.com/peer-info/-/peer-info-0.15.1.tgz#21254a7c516d0dd046b150120b9aaf1b9ad02146" - integrity sha512-Y91Q2tZRC0CpSTPd1UebhGqniOrOAk/aj60uYUcWJXCoLTAnGu+4LJGoiay8ayudS6ice7l3SKhgL/cS62QacA== - dependencies: - mafmt "^6.0.2" - multiaddr "^6.0.3" - peer-id "~0.12.2" - unique-by "^1.0.0" - -pem-jwk@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/pem-jwk/-/pem-jwk-2.0.0.tgz#1c5bb264612fc391340907f5c1de60c06d22f085" - integrity sha512-rFxu7rVoHgQ5H9YsP50dDWf0rHjreVA2z0yPiWr5WdH/UHb29hKtF7h6l8vNd1cbYR1t0QL+JKhW55a2ZV4KtA== - dependencies: - asn1.js "^5.0.1" - -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= - -picomatch@^2.0.4, picomatch@^2.2.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" - integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== - -pkginfo@0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/pkginfo/-/pkginfo-0.4.1.tgz#b5418ef0439de5425fc4995042dced14fb2a84ff" - integrity sha1-tUGO8EOd5UJfxJlQQtztFPsqhP8= - -pluralize@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-8.0.0.tgz#1a6fa16a38d12a1901e0320fa017051c539ce3b1" - integrity sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA== - -prettier@1.19.1: - version "1.19.1" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.19.1.tgz#f7d7f5ff8a9cd872a7be4ca142095956a60797cb" - integrity sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew== - -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== - -promise-nodeify@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/promise-nodeify/-/promise-nodeify-3.0.1.tgz#f0f5d9720ee9ec71dd2bfa92667be504c10229c2" - integrity sha512-ghsSuzZXJX8iO7WVec2z7GI+Xk/EyiD+JZK7AZKhUqYfpLa/Zs4ylUD+CwwnKlG6G3HnkUPMAi6PO7zeqGKssg== - -promise@^8.0.0: - version "8.1.0" - resolved "https://registry.yarnpkg.com/promise/-/promise-8.1.0.tgz#697c25c3dfe7435dd79fcd58c38a135888eaf05e" - integrity sha512-W04AqnILOL/sPRXziNicCjSNRruLAuIHEOVBazepu0545DDNGYHz7ar9ZgZ1fMU8/MA4mVxp5rkBWRi6OXIy3Q== - dependencies: - asap "~2.0.6" - -promise@~1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/promise/-/promise-1.3.0.tgz#e5cc9a4c8278e4664ffedc01c7da84842b040175" - integrity sha1-5cyaTIJ45GZP/twBx9qEhCsEAXU= - dependencies: - is-promise "~1" - -promisify-es6@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/promisify-es6/-/promisify-es6-1.0.3.tgz#b012668c4df3c965ce13daac2b3a4d1726a96346" - integrity sha512-N9iVG+CGJsI4b4ZGazjwLnxErD2d9Pe4DPvvXSxYA9tFNu8ymXME4Qs5HIQ0LMJpNM7zj+m0NlNnNeqFpKzqnA== - -protocol-buffers-schema@^3.3.1: - version "3.6.0" - resolved "https://registry.yarnpkg.com/protocol-buffers-schema/-/protocol-buffers-schema-3.6.0.tgz#77bc75a48b2ff142c1ad5b5b90c94cd0fa2efd03" - integrity sha512-TdDRD+/QNdrCGCE7v8340QyuXd4kIWIgapsE2+n/SaGiSSbomYl4TjHlvIoCWRpE7wFt02EpB35VVA2ImcBVqw== - -protons@^1.0.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/protons/-/protons-1.2.1.tgz#5f1e0db8b2139469cd1c3b4e332a4c2d95d0a218" - integrity sha512-2oqDyc/SN+tNcJf8XxrXhYL7sQn2/OMl8mSdD7NVGsWjMEmAbks4eDVnCyf0vAoRbBWyWTEXWk4D8XfuKVl3zg== - dependencies: - buffer "^5.5.0" - protocol-buffers-schema "^3.3.1" - signed-varint "^2.0.1" - varint "^5.0.0" - -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== - -pull-defer@~0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/pull-defer/-/pull-defer-0.2.3.tgz#4ee09c6d9e227bede9938db80391c3dac489d113" - integrity sha512-/An3KE7mVjZCqNhZsr22k1Tx8MACnUnHZZNPSJ0S62td8JtYr/AiRG42Vz7Syu31SoTLUzVIe61jtT/pNdjVYA== - -pull-stream@^3.2.3, pull-stream@^3.6.9: - version "3.6.14" - resolved "https://registry.yarnpkg.com/pull-stream/-/pull-stream-3.6.14.tgz#529dbd5b86131f4a5ed636fdf7f6af00781357ee" - integrity sha512-KIqdvpqHHaTUA2mCYcLG1ibEbu/LCKoJZsBWyv9lSYtPkJPBq8m3Hxa103xHi6D2thj5YXa0TqK3L3GUkwgnew== - -pull-to-stream@~0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/pull-to-stream/-/pull-to-stream-0.1.1.tgz#fa2058528528e3542b81d6f17cbc42288508ff37" - integrity sha512-thZkMv6F9PILt9zdvpI2gxs19mkDrlixYKX6cOBxAW16i1NZH+yLAmF4r8QfJ69zuQh27e01JZP9y27tsH021w== - dependencies: - readable-stream "^3.1.1" - -pump@^1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/pump/-/pump-1.0.3.tgz#5dfe8311c33bbf6fc18261f9f34702c47c08a954" - integrity sha512-8k0JupWme55+9tCVE+FS5ULT3K6AbgqrGa58lTT49RpyfwwcGedHqaC5LlQNdEAumn/wFsu6aPwkuPMioy8kqw== - dependencies: - end-of-stream "^1.1.0" - once "^1.3.1" - -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@^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== - -qs@^6.4.0, qs@^6.5.2: - version "6.10.3" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.10.3.tgz#d6cde1b2ffca87b5aa57889816c5f81535e22e8e" - integrity sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ== - dependencies: - side-channel "^1.0.4" - -qs@~6.5.2: - version "6.5.3" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.3.tgz#3aeeffc91967ef6e35c0e488ef46fb296ab76aad" - integrity sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA== - -ramda@^0.24.1: - version "0.24.1" - resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.24.1.tgz#c3b7755197f35b8dc3502228262c4c91ddb6b857" - integrity sha1-w7d1UZfzW43DUCIoJixMkd22uFc= - -ramda@^0.25.0: - version "0.25.0" - resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.25.0.tgz#8fdf68231cffa90bc2f9460390a0cb74a29b29a9" - integrity sha512-GXpfrYVPwx3K7RQ6aYT8KPS8XViSXUVJT1ONhoKPE9VAleW42YE+U+8VEyGWt41EnEQW7gwecYJriTI0pKoecQ== - -ramdasauce@^2.1.0: - version "2.1.3" - resolved "https://registry.yarnpkg.com/ramdasauce/-/ramdasauce-2.1.3.tgz#acb45ecc7e4fc4d6f39e19989b4a16dff383e9c2" - integrity sha512-Ml3CPim4SKwmg5g9UI77lnRSeKr/kQw7YhQ6rfdMcBYy6DMlwmkEwQqjygJ3OhxPR+NfFfpjKl3Tf8GXckaqqg== - dependencies: - ramda "^0.24.1" - -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" - -"readable-stream@2 || 3", readable-stream@^3.0.0, readable-stream@^3.0.1, readable-stream@^3.0.2, readable-stream@^3.1.1, readable-stream@^3.4.0, 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.2.2, readable-stream@^2.3.0, readable-stream@^2.3.5: - 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" - -readable-stream@~1.0.26-4: - version "1.0.34" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c" - integrity sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw= - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.1" - isarray "0.0.1" - string_decoder "~0.10.x" - -readdirp@~3.5.0: - version "3.5.0" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.5.0.tgz#9ba74c019b15d365278d2e91bb8c48d7b4d42c9e" - integrity sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ== - dependencies: - picomatch "^2.2.1" - -regenerator-runtime@^0.13.4: - version "0.13.9" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz#8925742a98ffd90814988d7566ad30ca3b263b52" - integrity sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA== - -request@2.88.2: - 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@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" - integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== - -restore-cursor@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" - integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== - dependencies: - onetime "^5.1.0" - signal-exit "^3.0.2" - -rimraf@^2.6.3: - version "2.7.1" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" - integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== - dependencies: - glob "^7.1.3" - -rimraf@^3.0.0, rimraf@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" - integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== - dependencies: - glob "^7.1.3" - -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.4: - version "2.2.7" - resolved "https://registry.yarnpkg.com/rlp/-/rlp-2.2.7.tgz#33f31c4afac81124ac4b283e2bd4d9720b30beaf" - integrity sha512-d5gdPmgQ0Z+AklL2NVXr/IoSjNZFfTVvQWzL/AM2AOcSzYP2xjlb0AC8YyCLc41MSNf6P6QVtjgPdmVtzb+4lQ== - dependencies: - bn.js "^5.2.0" - -rsa-pem-to-jwk@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/rsa-pem-to-jwk/-/rsa-pem-to-jwk-1.1.3.tgz#245e76bdb7e7234cfee7ca032d31b54c38fab98e" - integrity sha1-JF52vbfnI0z+58oDLTG1TDj6uY4= - dependencies: - object-assign "^2.0.0" - rsa-unpack "0.0.6" - -rsa-unpack@0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/rsa-unpack/-/rsa-unpack-0.0.6.tgz#f50ebd56a628378e631f297161026ce9ab4eddba" - integrity sha1-9Q69VqYoN45jHylxYQJs6atO3bo= - dependencies: - optimist "~0.3.5" - -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== - -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== - -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== - -scrypt-js@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/scrypt-js/-/scrypt-js-3.0.1.tgz#d314a57c2aef69d1ad98a138a21fe9eafa9ee312" - integrity sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA== - -secp256k1@^3.6.2: - version "3.8.0" - resolved "https://registry.yarnpkg.com/secp256k1/-/secp256k1-3.8.0.tgz#28f59f4b01dbee9575f56a47034b7d2e3b3b352d" - integrity sha512-k5ke5avRZbtl9Tqx/SA7CbY3NF6Ro+Sj9cZxezFzuBlLDmyqPiL8hJJ+EmzD8Ig4LUDByHJ3/iPOVoRixs/hmw== - dependencies: - bindings "^1.5.0" - bip66 "^1.1.5" - bn.js "^4.11.8" - create-hash "^1.2.0" - drbg.js "^1.0.1" - elliptic "^6.5.2" - nan "^2.14.0" - safe-buffer "^5.1.2" - -secp256k1@^4.0.1: - version "4.0.3" - resolved "https://registry.yarnpkg.com/secp256k1/-/secp256k1-4.0.3.tgz#c4559ecd1b8d3c1827ed2d1b94190d69ce267303" - integrity sha512-NLZVf+ROMxwtEj3Xa562qgv2BK5e2WNmXPiOdVIPLgs6lyTzMvBq0aWTYMI5XCP9jZMVKOcqZLw/Wc4vDkuxhA== - dependencies: - elliptic "^6.5.4" - node-addon-api "^2.0.0" - node-gyp-build "^4.2.0" - -semver@7.3.5, semver@^7.0.0: - version "7.3.5" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" - integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== - dependencies: - lru-cache "^6.0.0" - -setimmediate@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" - integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU= - -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== - -side-channel@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" - integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== - dependencies: - call-bind "^1.0.0" - get-intrinsic "^1.0.2" - object-inspect "^1.9.0" - -signal-exit@^3.0.2: - version "3.0.7" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" - integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== - -signed-varint@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/signed-varint/-/signed-varint-2.0.1.tgz#50a9989da7c98c2c61dad119bc97470ef8528129" - integrity sha1-UKmYnafJjCxh2tEZvJdHDvhSgSk= - dependencies: - varint "~5.0.0" - -split-ca@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/split-ca/-/split-ca-1.0.1.tgz#6c83aff3692fa61256e0cd197e05e9de157691a6" - integrity sha1-bIOv82kvphJW4M0ZfgXp3hV2kaY= - -split2@^3.1.0: - version "3.2.2" - resolved "https://registry.yarnpkg.com/split2/-/split2-3.2.2.tgz#bf2cf2a37d838312c249c89206fd7a17dd12365f" - integrity sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg== - dependencies: - readable-stream "^3.0.0" - -sprintf-js@~1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" - integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= - -sshpk@^1.7.0: - version "1.17.0" - resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.17.0.tgz#578082d92d4fe612b13007496e543fa0fbcbe4c5" - integrity sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ== - 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" - -stable@~0.1.8: - version "0.1.8" - resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" - integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w== - -stream-to-pull-stream@^1.7.2: - version "1.7.3" - resolved "https://registry.yarnpkg.com/stream-to-pull-stream/-/stream-to-pull-stream-1.7.3.tgz#4161aa2d2eb9964de60bfa1af7feaf917e874ece" - integrity sha512-6sNyqJpr5dIOQdgNy/xcDWwDuzAsAwVzhzrWlAPAQ7Lkjx/rv0wgvxEyKwTq6FmNd5rjTrELt/CLmaSw7crMGg== - dependencies: - looper "^3.0.0" - pull-stream "^3.2.3" - -string-width@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" - integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== - dependencies: - is-fullwidth-code-point "^2.0.0" - strip-ansi "^4.0.0" - -string_decoder@^1.1.1, string_decoder@^1.2.0: - 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@~0.10.x: - version "0.10.31" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" - integrity sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ= - -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@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" - integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= - dependencies: - ansi-regex "^3.0.0" - -strip-ansi@^6.0.0: - version "6.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" - integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== - dependencies: - ansi-regex "^5.0.1" - -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" - -supports-color@^5.3.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" - integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== - dependencies: - has-flag "^3.0.0" - -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" - -sync-request@6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/sync-request/-/sync-request-6.1.0.tgz#e96217565b5e50bbffe179868ba75532fb597e68" - integrity sha512-8fjNkrNlNCrVc/av+Jn+xxqfCjYaBoHqCsDz6mt030UMxJGr+GSfCV1dQt2gRtlL63+VPidwDVLr7V2OcTSdRw== - dependencies: - http-response-object "^3.0.1" - sync-rpc "^1.2.1" - then-request "^6.0.0" - -sync-rpc@^1.2.1: - version "1.3.6" - resolved "https://registry.yarnpkg.com/sync-rpc/-/sync-rpc-1.3.6.tgz#b2e8b2550a12ccbc71df8644810529deb68665a7" - integrity sha512-J8jTXuZzRlvU7HemDgHi3pGnh/rkoqR/OZSjhTyyZrEkkYQbk7Z33AXp37mkPfPpfdOuj7Ex3H/TJM1z48uPQw== - dependencies: - get-port "^3.1.0" - -tar-fs@~1.16.3: - version "1.16.3" - resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-1.16.3.tgz#966a628841da2c4010406a82167cbd5e0c72d509" - integrity sha512-NvCeXpYx7OsmOh8zIOP/ebG55zZmxLE0etfWRbWok+q2Qo8x/vOR/IJT1taADXPe+jsiu9axDb3X4B+iIgNlKw== - dependencies: - chownr "^1.0.1" - mkdirp "^0.5.1" - pump "^1.0.0" - tar-stream "^1.1.2" - -tar-stream@^1.1.2: - version "1.6.2" - resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-1.6.2.tgz#8ea55dab37972253d9a9af90fdcd559ae435c555" - integrity sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A== - dependencies: - bl "^1.0.0" - buffer-alloc "^1.2.0" - end-of-stream "^1.0.0" - fs-constants "^1.0.0" - readable-stream "^2.3.0" - to-buffer "^1.1.1" - xtend "^4.0.0" - -tar-stream@^2.0.1: - version "2.2.0" - resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.2.0.tgz#acad84c284136b060dc3faa64474aa9aebd77287" - integrity sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ== - dependencies: - bl "^4.0.3" - end-of-stream "^1.4.1" - fs-constants "^1.0.0" - inherits "^2.0.3" - readable-stream "^3.1.1" - -tar@^6.1.0: - version "6.1.11" - resolved "https://registry.yarnpkg.com/tar/-/tar-6.1.11.tgz#6760a38f003afa1b2ffd0ffe9e9abbd0eab3d621" - integrity sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA== - dependencies: - chownr "^2.0.0" - fs-minipass "^2.0.0" - minipass "^3.0.0" - minizlib "^2.1.1" - mkdirp "^1.0.3" - yallist "^4.0.0" - -then-request@^6.0.0: - version "6.0.2" - resolved "https://registry.yarnpkg.com/then-request/-/then-request-6.0.2.tgz#ec18dd8b5ca43aaee5cb92f7e4c1630e950d4f0c" - integrity sha512-3ZBiG7JvP3wbDzA9iNY5zJQcHL4jn/0BWtXIkagfz7QgOL/LqjCEOBQuJNZfu0XYnv5JhKh+cDxCPM4ILrqruA== - dependencies: - "@types/concat-stream" "^1.6.0" - "@types/form-data" "0.0.33" - "@types/node" "^8.0.0" - "@types/qs" "^6.2.31" - caseless "~0.12.0" - concat-stream "^1.6.0" - form-data "^2.2.0" - http-basic "^8.1.1" - http-response-object "^3.0.1" - promise "^8.0.0" - qs "^6.4.0" - -through2@^3.0.0, through2@^3.0.1: - version "3.0.2" - resolved "https://registry.yarnpkg.com/through2/-/through2-3.0.2.tgz#99f88931cfc761ec7678b41d5d7336b5b6a07bf4" - integrity sha512-enaDQ4MUyP2W6ZyT6EsMzqBPZaM/avg8iuo+l2d3QCs0J+6RaqkHV/2/lOwDTueBHeJ/2LG9lrLW3d5rWPucuQ== - dependencies: - inherits "^2.0.4" - readable-stream "2 || 3" - -"through@>=2.2.7 <3": - version "2.3.8" - resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" - integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= - -tmp-promise@3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/tmp-promise/-/tmp-promise-3.0.2.tgz#6e933782abff8b00c3119d63589ca1fb9caaa62a" - integrity sha512-OyCLAKU1HzBjL6Ev3gxUeraJNlbNingmi8IrHHEsYH8LTmEuhvYfqvhn2F/je+mjf4N58UmZ96OMEy1JanSCpA== - dependencies: - tmp "^0.2.0" - -tmp@^0.2.0: - version "0.2.1" - resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.2.1.tgz#8457fc3037dcf4719c251367a1af6500ee1ccf14" - integrity sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ== - dependencies: - rimraf "^3.0.0" - -to-buffer@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/to-buffer/-/to-buffer-1.1.1.tgz#493bd48f62d7c43fcded313a03dcadb2e1213a80" - integrity sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg== - -to-regex-range@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" - integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== - dependencies: - is-number "^7.0.0" - -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" - -tr46@~0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" - integrity sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o= - -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= - -tweetnacl@^1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-1.0.3.tgz#ac0af71680458d8a6378d0d0d050ab1407d35596" - integrity sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw== - -typedarray@^0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" - integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= - -unique-by@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unique-by/-/unique-by-1.0.0.tgz#5220c86ba7bc572fb713ad74651470cb644212bd" - integrity sha1-UiDIa6e8Vy+3E610ZRRwy2RCEr0= - -universalify@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-1.0.0.tgz#b61a1da173e8435b2fe3c67d29b9adf8594bd16d" - integrity sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug== - -universalify@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" - integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== - -uri-js@^4.2.2: - version "4.4.1" - resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" - integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== - dependencies: - punycode "^2.1.0" - -ursa-optional@~0.10.0: - version "0.10.2" - resolved "https://registry.yarnpkg.com/ursa-optional/-/ursa-optional-0.10.2.tgz#bd74e7d60289c22ac2a69a3c8dea5eb2817f9681" - integrity sha512-TKdwuLboBn7M34RcvVTuQyhvrA8gYKapuVdm0nBP0mnBc7oECOfUQZrY91cefL3/nm64ZyrejSRrhTVdX7NG/A== - dependencies: - bindings "^1.5.0" - nan "^2.14.2" - -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= - -uuid@^3.2.1, 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, varint@~5.0.0: - version "5.0.2" - resolved "https://registry.yarnpkg.com/varint/-/varint-5.0.2.tgz#5b47f8a947eb668b848e034dcfa87d0ff8a7f7a4" - integrity sha512-lKxKYG6H03yCZUpAGOPOsMcGxd1RHCu1iKvEHYDPmTyq2HueGhD73ssNBqqQWfvYs04G9iUFRvmAVLW20Jw6ow== - -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" - -wcwidth@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" - integrity sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g= - dependencies: - defaults "^1.0.3" - -web3-eth-abi@1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/web3-eth-abi/-/web3-eth-abi-1.7.0.tgz#4fac9c7d9e5a62b57f8884b37371f515c766f3f4" - integrity sha512-heqR0bWxgCJwjWIhq2sGyNj9bwun5+Xox/LdZKe+WMyTSy0cXDXEAgv3XKNkXC4JqdDt/ZlbTEx4TWak4TRMSg== - dependencies: - "@ethersproject/abi" "5.0.7" - web3-utils "1.7.0" - -web3-utils@1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.7.0.tgz#c59f0fd43b2449357296eb54541810b99b1c771c" - integrity sha512-O8Tl4Ky40Sp6pe89Olk2FsaUkgHyb5QAXuaKo38ms3CxZZ4d3rPGfjP9DNKGm5+IUgAZBNpF1VmlSmNCqfDI1w== - dependencies: - bn.js "^4.11.9" - ethereum-bloom-filters "^1.0.6" - ethereumjs-util "^7.1.0" - ethjs-unit "0.1.6" - number-to-bn "1.7.0" - randombytes "^2.1.0" - utf8 "3.0.0" - -webidl-conversions@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" - integrity sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE= - -whatwg-url@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" - integrity sha1-lmRU6HZUYuN2RNNib2dCzotwll0= - dependencies: - tr46 "~0.0.3" - webidl-conversions "^3.0.0" - -which@2.0.2, which@^2.0.0, 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" - -wordwrap@~0.0.2: - version "0.0.3" - resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" - integrity sha1-o9XabNXAvAAI03I0u68b7WMFkQc= - -wrappy@1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= - -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== - -yallist@^3.0.2: - version "3.1.1" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" - integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== - -yallist@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" - integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== - -yaml@1.9.2: - version "1.9.2" - resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.9.2.tgz#f0cfa865f003ab707663e4f04b3956957ea564ed" - integrity sha512-HPT7cGGI0DuRcsO51qC1j9O16Dh1mZ2bnXwsi0jrSpsLz0WxOLSLXfkABVl6bZO629py3CU+OMJtpNHDLB97kg== - dependencies: - "@babel/runtime" "^7.9.2" - -yaml@^1.7.2: - version "1.10.2" - resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" - integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== - -yargs-parser@^16.1.0: - version "16.1.0" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-16.1.0.tgz#73747d53ae187e7b8dbe333f95714c76ea00ecf1" - integrity sha512-H/V41UNZQPkUMIT5h5hiwg4QKIY1RPvoBV4XcjUbRM8Bk2oKqqyZ0DIEbTFZB0XjbtSPG8SAa/0DxCQmiRgzKg== - dependencies: - camelcase "^5.0.0" - decamelize "^1.2.0" diff --git a/schema.graphql b/schema.graphql new file mode 100644 index 0000000..c948a70 --- /dev/null +++ b/schema.graphql @@ -0,0 +1,45 @@ +type User @entity { + id: ID! # address + voteWeight: BigInt! + gno: BigInt! + mgno: BigInt! + lgno: BigInt! + deposit: BigInt! + sgno: BigInt! + balancerInternalGno: BigInt! + weightedPoolPositions: [WeightedPoolPosition!]! @derivedFrom(field: "user") + concentratedLiquidityPositions: [ConcentratedLiquidityPosition!]! + @derivedFrom(field: "user") +} + +# used for Uniswap V2 pairs and Balancer weighted pools +type WeightedPool @entity { + id: ID! # address + totalSupply: BigInt! + gnoIsFirst: Boolean! # only relevant for uni v2 + gnoBalance: BigInt! + positions: [WeightedPoolPosition!]! +} +type WeightedPoolPosition @entity { + id: ID! # - + user: User! + pool: WeightedPool! + liquidity: BigInt! +} + +# used for Uniswap V3 pairs +type ConcentratedLiquidityPair @entity { + id: ID! # address + sqrtRatio: BigDecimal! + gnoIsFirst: Boolean! + positions: [ConcentratedLiquidityPosition!]! +} +type ConcentratedLiquidityPosition @entity { + id: ID! # UniV3 NFT tokenId + user: User + pair: ConcentratedLiquidityPair! + liquidity: BigInt! + lowerTick: BigInt! + upperTick: BigInt! + gnoBalance: BigInt! +} diff --git a/src/balancerV1/factory.ts b/src/balancerV1/factory.ts new file mode 100644 index 0000000..6ff509e --- /dev/null +++ b/src/balancerV1/factory.ts @@ -0,0 +1,33 @@ +import { log } from "@graphprotocol/graph-ts"; +import { LOG_NEW_POOL } from "../../generated-gc/ds-balancer-v1-factory/Factory"; +import { Pool as PoolContract } from "../../generated-gc/templates/BalancerV1Pool/Pool"; + +import { WeightedPool } from "../../generated/schema"; + +import { BalancerV1Pool as BalancerV1PoolTemplate } from "../../generated-gc/templates"; + +import { GNO_ADDRESS, ZERO_BI } from "../constants"; + +export function handleNewPool(event: LOG_NEW_POOL): void { + const address = event.params.pool; + + const poolContract = PoolContract.bind(address); + + const currentTokensCall = poolContract.try_getCurrentTokens(); + if (!currentTokensCall.reverted) { + const tokens = currentTokensCall.value; + if (tokens.some(token => token.equals(GNO_ADDRESS))) { + const pool = new WeightedPool(address.toHexString()); + pool.positions = []; + pool.totalSupply = ZERO_BI; + pool.gnoBalance = ZERO_BI; + pool.gnoIsFirst = false; + pool.save(); + log.info("instantiated WeightedPool instance: {}", [ + address.toHexString(), + ]); + + BalancerV1PoolTemplate.create(address); + } + } +} diff --git a/src/balancerV1/pool.ts b/src/balancerV1/pool.ts new file mode 100644 index 0000000..4ca28bb --- /dev/null +++ b/src/balancerV1/pool.ts @@ -0,0 +1,134 @@ +import { + LOG_JOIN, + LOG_EXIT, + LOG_SWAP, + LOG_CALL, + Transfer, + GulpCall, + Pool as BPoolContract, +} from "../../generated-gc/templates/BalancerV1Pool/Pool"; + +import { + loadPool as loadWeightedPool, + handleSwap as handleSwapForWeightedPool, + handleTransfer as handleTransferForWeightedPool, + handleBalanceChange as handleBalanceChangeForWeightedPool, +} from "../helpers/weightedPool"; + +import { GNO_ADDRESS, ZERO_BI } from "../constants"; +import { Address, BigInt, Bytes, log } from "@graphprotocol/graph-ts"; +import { WeightedPool } from "../../generated/schema"; + +/************************************ + ********** JOINS & EXITS *********** + ************************************/ + +export function handleJoinPool(event: LOG_JOIN): void { + const pool = loadWeightedPool(event.address); + + if (event.params.tokenIn.equals(GNO_ADDRESS)) { + pool.gnoBalance = pool.gnoBalance.plus(event.params.tokenAmountIn); + pool.save(); + } +} + +export function handleExitPool(event: LOG_EXIT): void { + const pool = loadWeightedPool(event.address); + + if (pool && event.params.tokenOut.equals(GNO_ADDRESS)) { + pool.gnoBalance = pool.gnoBalance.minus(event.params.tokenAmountOut); + pool.save(); + } +} + +/************************************ + ************** SWAPS *************** + ************************************/ + +export function handleSwap(event: LOG_SWAP): void { + const gnoIn = event.params.tokenIn.equals(GNO_ADDRESS) + ? event.params.tokenAmountIn + : ZERO_BI; + const gnoOut = event.params.tokenOut.equals(GNO_ADDRESS) + ? event.params.tokenAmountOut + : ZERO_BI; + + if (gnoIn.equals(ZERO_BI) && gnoOut.equals(ZERO_BI)) { + // no change in GNO reserves + return; + } + + const pool = loadWeightedPool(event.address); + + pool.gnoBalance = pool.gnoBalance.plus(gnoIn).minus(gnoOut); + pool.save(); + + handleSwapForWeightedPool(pool, gnoIn, gnoOut); +} + +/************************************ + *********** POOL SHARES ************ + ************************************/ + +export function handleTransfer(event: Transfer): void { + const from = event.params.src; + const to = event.params.dst; + const value = event.params.amt; + + handleTransferForWeightedPool(event, from, to, value); +} + +export function handleGulp(event: GulpCall): void { + if (!event.inputs.token.equals(GNO_ADDRESS)) { + return; + } + + const poolAddress = event.to; + let pool = loadWeightedPool(poolAddress); + + let poolContract = BPoolContract.bind(poolAddress); + let balanceCall = poolContract.try_getBalance(event.inputs.token); + + let nextGnoBalance: BigInt; + if (balanceCall.reverted) { + log.warning("Failed to get balance for GNO in pool {}", [ + poolAddress.toHexString(), + ]); + nextGnoBalance = ZERO_BI; + } else { + nextGnoBalance = balanceCall.value; + } + + handleBalanceChangeForWeightedPool(pool, nextGnoBalance); + pool.gnoBalance = nextGnoBalance; + pool.save(); +} + +export function handleRebind(event: LOG_CALL): void { + const poolId = event.address.toHex(); + const pool = WeightedPool.load(poolId); + if (!pool) { + return; + } + + const tokenAddress = Address.fromString( + event.params.data.toHexString().slice(34, 74) + ); + + if (!tokenAddress.equals(GNO_ADDRESS)) { + return; + } + + const nextGnoBalance = hexToBigInt( + event.params.data.toHexString().slice(74, 138) + ); + + handleBalanceChangeForWeightedPool(pool, nextGnoBalance); + pool.gnoBalance = nextGnoBalance; + pool.save(); +} + +export function hexToBigInt(hexString: string): BigInt { + let bytes = Bytes.fromHexString(hexString).reverse() as Bytes; + return BigInt.fromUnsignedBytes(bytes); +} diff --git a/src/balancerV2/factory.ts b/src/balancerV2/factory.ts new file mode 100644 index 0000000..9f96a10 --- /dev/null +++ b/src/balancerV2/factory.ts @@ -0,0 +1,46 @@ +import { Address, log } from "@graphprotocol/graph-ts"; + +import { Vault as VaultContract } from "../../generated/ds-balancer-v2-factory/Vault"; +import { WeightedPool as WeightedPoolContract } from "../../generated/ds-balancer-v2-factory/WeightedPool"; +import { PoolCreated as PoolCreatedEvent } from "../../generated/ds-balancer-v2-factory/WeightedPoolFactory"; + +import { WeightedPool } from "../../generated/schema"; + +import { BalancerV2Pool as BalancerV2PoolTemplate } from "../../generated/templates"; + +import { GNO_ADDRESS, ZERO_BI } from "../constants"; + +const VAULT_ADDRESS = Address.fromString( + "0xBA12222222228d8Ba445958a75a0704d566BF2C8" +); + +export function handlePoolCreated(event: PoolCreatedEvent): void { + const address = event.params.pool; + const poolContract = WeightedPoolContract.bind(address); + + const poolIdCall = poolContract.try_getPoolId(); + const poolId = poolIdCall.value; + + const vaultContract = VaultContract.bind(VAULT_ADDRESS); + const tokensCall = vaultContract.try_getPoolTokens(poolId); + if (!tokensCall.reverted) { + const tokens = tokensCall.value.value0; + if (tokens.some(token => token.equals(GNO_ADDRESS))) { + const pool = new WeightedPool(address.toHexString()); + pool.positions = []; + pool.totalSupply = ZERO_BI; + pool.gnoBalance = ZERO_BI; + pool.gnoIsFirst = false; + pool.save(); + log.info("instantiated Balancer WeightedPool instance: {}", [ + poolId.toHexString(), + ]); + + BalancerV2PoolTemplate.create(address); + } + } else { + log.warning("getPoolTokens call reverted for pool ID {}", [ + poolId.toHexString(), + ]); + } +} diff --git a/src/balancerV2/gauge.ts b/src/balancerV2/gauge.ts new file mode 100644 index 0000000..46aadd6 --- /dev/null +++ b/src/balancerV2/gauge.ts @@ -0,0 +1,127 @@ +import { store, BigInt, log, Address } from "@graphprotocol/graph-ts"; +import { Transfer as TransferEvent } from "../../generated/templates/BalancerV2Pool/ERC20"; +import { + loadOrCreate as loadOrCreateUser, + saveOrRemove as saveOrRemoveUser, +} from "../helpers/user"; + +import { + loadPool as loadWeightedPool, + loadOrCreatePosition, +} from "../helpers/weightedPool"; + +import { ADDRESS_ZERO, arrayRemove } from "../constants"; + +export const COW_GNO_POOL_ADDRESS = Address.fromString( + "0x92762b42a06dcdddc5b7362cfb01e631c4d44b40" +); +export const GNO_WETH_POOL_ADDRESS = Address.fromString( + "0xf4c0dd9b82da36c07605df83c8a416f11724d88b" +); +export const COW_GNO_GAUGE_ADDRESS = Address.fromString( + "0xa6468eca7633246dcb24e5599681767d27d1f978" +); +export const GNO_WETH_GAUGE_ADDRESS = Address.fromString( + "0xcb664132622f29943f67fa56ccfd1e24cc8b4995" +); + +// Staked LP token transfers are handled like actual LP token transfers, but without updates to the LP token total supply on burn and mint. +export function handleTransfer(event: TransferEvent): void { + const from = event.params.from; + const to = event.params.to; + const value = event.params.value; + + let poolAddress: Address | null = null; + if (event.address.equals(COW_GNO_GAUGE_ADDRESS)) { + poolAddress = COW_GNO_POOL_ADDRESS; + } + if (event.address.equals(GNO_WETH_GAUGE_ADDRESS)) { + poolAddress = GNO_WETH_POOL_ADDRESS; + } + + if (!poolAddress) { + throw new Error( + `Could not find pool address for gauge ${event.address.toHexString()}` + ); + } + + const pool = loadWeightedPool(poolAddress); + + const gnoReserves = pool.gnoBalance; + log.info("pool loaded: {}, gno reserves: {}, total supply: {}", [ + pool.id, + gnoReserves.toString(), + pool.totalSupply.toString(), + ]); + + const userTo = loadOrCreateUser(to); + const userFrom = loadOrCreateUser(from); + + log.info("transfer staked Balancer LP token from: {}, to: {}, value: {}", [ + userFrom.id, + userTo.id, + value.toString(), + ]); + + // transfer from + if ( + from.toHexString() != ADDRESS_ZERO.toHexString() && + from.toHexString() != pool.id + ) { + const position = loadOrCreatePosition(pool, from); + + // decrease position liquidity and remove it if it gets to zero + if (position.liquidity.minus(value) == BigInt.fromI32(0)) { + store.remove("WeightedPoolPosition", position.id); + pool.positions = arrayRemove(pool.positions, position.id); + pool.save(); + log.info("removed from position {} of user {}", [ + position.id, + userFrom.id, + ]); + } else { + position.liquidity = position.liquidity.minus(value); + position.save(); + log.info("adjusted from position {} of user {}, new liquidity: {}", [ + position.id, + userFrom.id, + position.liquidity.toString(), + ]); + } + + // decrease vote weight + const voteWeightToSubtract = value.times(gnoReserves).div(pool.totalSupply); + userFrom.voteWeight = userFrom.voteWeight.minus(voteWeightToSubtract); + saveOrRemoveUser(userFrom); + log.info("subtracted {} from vote weight of {}, for a new total of {}", [ + voteWeightToSubtract.toString(), + userFrom.id, + userFrom.voteWeight.toString(), + ]); + } + + // transfer to + if ( + to.toHexString() != ADDRESS_ZERO.toHexString() && + to.toHexString() != pool.id + ) { + // increase position liquidity + const position = loadOrCreatePosition(pool, to); + position.liquidity = position.liquidity.plus(value); + position.save(); + log.info("adjusted to position of user {}, new liquidity: {}", [ + userTo.id, + position.liquidity.toString(), + ]); + + // increase vote weight + const voteWeightToAdd = value.times(gnoReserves).div(pool.totalSupply); + userTo.voteWeight = userTo.voteWeight.plus(voteWeightToAdd); + saveOrRemoveUser(userTo); + log.info("added {} to vote weight of {}, for a new total of {}", [ + voteWeightToAdd.toString(), + userTo.id, + userTo.voteWeight.toString(), + ]); + } +} diff --git a/src/balancerV2/pool.ts b/src/balancerV2/pool.ts new file mode 100644 index 0000000..3d178b7 --- /dev/null +++ b/src/balancerV2/pool.ts @@ -0,0 +1,11 @@ +import { Transfer as TransferEvent } from "../../generated/templates/BalancerV2Pool/ERC20"; + +import { handleTransfer as handleTransferForWeightedPool } from "../helpers/weightedPool"; + +export function handleTransfer(event: TransferEvent): void { + const from = event.params.from; + const to = event.params.to; + const value = event.params.value; + + handleTransferForWeightedPool(event, from, to, value); +} diff --git a/src/balancerV2/vault.ts b/src/balancerV2/vault.ts new file mode 100644 index 0000000..8b2912b --- /dev/null +++ b/src/balancerV2/vault.ts @@ -0,0 +1,80 @@ +import { Address, Bytes } from "@graphprotocol/graph-ts"; +import { + InternalBalanceChanged, + PoolBalanceChanged, + Swap, +} from "../../generated/ds-balancer-v2-vault/Vault"; + +import { WeightedPool } from "../../generated/schema"; + +import { + loadOrCreate as loadOrCreateUser, + saveOrRemove as removeOrSaveUser, +} from "../helpers/user"; + +import { handleSwap as handleSwapForWeightedPool } from "../helpers/weightedPool"; + +import { GNO_ADDRESS, ZERO_BI } from "../constants"; + +export function handleSwap(event: Swap): void { + // swaps don't change LP token total supply, but they might change the GNO reserves + const gnoIn = event.params.tokenIn.equals(GNO_ADDRESS) + ? event.params.amountIn + : ZERO_BI; + const gnoOut = event.params.tokenOut.equals(GNO_ADDRESS) + ? event.params.amountOut + : ZERO_BI; + + if (gnoIn.equals(ZERO_BI) && gnoOut.equals(ZERO_BI)) { + // no change in GNO reserves + return; + } + + const pool = loadWeightedPool(event.params.poolId); + + pool.gnoBalance = pool.gnoBalance.plus(gnoIn).minus(gnoOut); + pool.save(); + handleSwapForWeightedPool(pool, gnoIn, gnoOut); +} + +export function handleBalanceChange(event: PoolBalanceChanged): void { + const index = event.params.tokens.findIndex(t => t.equals(GNO_ADDRESS)); + if (index == -1) { + return; + } + + const delta = event.params.deltas[index]; + const pool = loadWeightedPool(event.params.poolId); + pool.gnoBalance = pool.gnoBalance.plus(delta); + pool.save(); +} + +export function handleInternalBalanceChange( + event: InternalBalanceChanged +): void { + if (event.params.token.equals(GNO_ADDRESS)) { + const user = loadOrCreateUser(event.params.user); + user.balancerInternalGno = user.balancerInternalGno.plus( + event.params.delta + ); + user.voteWeight = user.voteWeight.plus(event.params.delta); + removeOrSaveUser(user); + } +} + +function loadWeightedPool(poolId: Bytes): WeightedPool { + const address = getPoolAddress(poolId); + const pool = WeightedPool.load(address.toHexString()); + if (!pool) { + throw new Error(`WeightedPool with id ${address.toHexString()} not found`); + } + return pool; +} + +function getPoolAddress(poolId: Bytes): Address { + // balancer pool id's are generated like this: + // serialized |= bytes32(uint256(nonce)); + // serialized |= bytes32(uint256(specialization)) << (10 * 8); + // serialized |= bytes32(uint256(pool)) << (12 * 8); + return Address.fromString(poolId.toHexString().slice(0, 42)); +} diff --git a/src/constants.ts b/src/constants.ts new file mode 100644 index 0000000..54b8d57 --- /dev/null +++ b/src/constants.ts @@ -0,0 +1,32 @@ +import { + BigInt, + BigDecimal, + Address, + dataSource, +} from "@graphprotocol/graph-ts"; + +export const GNO_ADDRESS = Address.fromString( + dataSource.network() == "mainnet" + ? "0x6810e776880C02933D47DB1b9fc05908e5386b96" + : "0x9C58BAcC331c9aa871AFD802DB6379a98e80CEdb" +); + +export const ADDRESS_ZERO = Address.fromString( + "0x0000000000000000000000000000000000000000" +); + +export const ONE_GNO = BigInt.fromString("1000000000000000000"); + +export const ZERO_BI = BigInt.fromI32(0); +export const ONE_BI = BigInt.fromI32(1); +export const ZERO_BD = BigDecimal.fromString("0"); +export const ONE_BD = BigDecimal.fromString("1"); +export const BI_18 = BigInt.fromI32(18); + +export function arrayRemove( + array: string[], + elementToRemove: string +): string[] { + const index = array.indexOf(elementToRemove); + return array.slice(0, index).concat(array.slice(index + 1)); +} diff --git a/src/deposit.ts b/src/deposit.ts new file mode 100644 index 0000000..396f525 --- /dev/null +++ b/src/deposit.ts @@ -0,0 +1,12 @@ +import { DepositEvent } from "../generated-gc/ds-deposit/SBCDepositContract"; +import { loadOrCreate as loadOrCreateUser } from "./helpers/user"; +import { ONE_GNO } from "./constants"; + +export function handleDeposit(event: DepositEvent): void { + const user = event.transaction.from; + + const entry = loadOrCreateUser(user); + entry.deposit = entry.deposit.plus(ONE_GNO); + entry.voteWeight = entry.voteWeight.plus(ONE_GNO); + entry.save(); +} diff --git a/packages/subgraph-base/src/gno.ts b/src/gno.ts similarity index 77% rename from packages/subgraph-base/src/gno.ts rename to src/gno.ts index 1c1af09..2774a61 100644 --- a/packages/subgraph-base/src/gno.ts +++ b/src/gno.ts @@ -1,12 +1,10 @@ -import { - Address, - Bytes, - BigInt, - store, - ethereum, -} from "@graphprotocol/graph-ts"; import { Transfer } from "../generated/ds-gno/ERC20"; -import { loadOrCreateUser, ADDRESS_ZERO, removeOrSaveUser } from "./helpers"; +import { + loadOrCreate as loadOrCreateUser, + saveOrRemove as saveOrRemoveUser, +} from "./helpers/user"; + +import { ADDRESS_ZERO } from "./constants"; export function handleTransfer(event: Transfer): void { const to = event.params.to; @@ -16,7 +14,7 @@ export function handleTransfer(event: Transfer): void { const userFrom = loadOrCreateUser(from); userFrom.gno = userFrom.gno.minus(event.params.value); userFrom.voteWeight = userFrom.voteWeight.minus(event.params.value); - removeOrSaveUser(userFrom); + saveOrRemoveUser(userFrom); } if (to.toHexString() != ADDRESS_ZERO.toHexString()) { diff --git a/src/helpers/user.ts b/src/helpers/user.ts new file mode 100644 index 0000000..950ca9e --- /dev/null +++ b/src/helpers/user.ts @@ -0,0 +1,34 @@ +import { log, BigInt, Address, store } from "@graphprotocol/graph-ts"; +import { User } from "../../generated/schema"; +import { ADDRESS_ZERO } from "../constants"; + +export function loadOrCreate(address: Address): User { + const id = address.toHexString(); + let user = User.load(id); + if (user == null) { + user = new User(id); + user.voteWeight = BigInt.fromI32(0); + user.gno = BigInt.fromI32(0); + user.mgno = BigInt.fromI32(0); + user.lgno = BigInt.fromI32(0); + user.sgno = BigInt.fromI32(0); + user.deposit = BigInt.fromI32(0); + user.balancerInternalGno = BigInt.fromI32(0); + if (id != ADDRESS_ZERO.toHexString()) { + user.save(); + log.info("created user {}", [id]); + } + } + return user; +} + +export function saveOrRemove(user: User): void { + if (user) { + if (user.voteWeight == BigInt.fromI32(0)) { + store.remove("User", user.id); + log.info("removed user {}", [user.id]); + } else { + user.save(); + } + } +} diff --git a/src/helpers/weightedPool.ts b/src/helpers/weightedPool.ts new file mode 100644 index 0000000..23b1f46 --- /dev/null +++ b/src/helpers/weightedPool.ts @@ -0,0 +1,238 @@ +import { log, BigInt, Address, store, ethereum } from "@graphprotocol/graph-ts"; +import { WeightedPool, WeightedPoolPosition } from "../../generated/schema"; + +import { + loadOrCreate as loadOrCreateUser, + saveOrRemove as saveOrRemoveUser, +} from "./user"; + +import { arrayRemove, ADDRESS_ZERO } from "../constants"; + +export function loadPool(address: Address): WeightedPool { + const id = address.toHexString(); + const pool = WeightedPool.load(id); + if (!pool) { + log.error("Weighted pool with id {} could not be loaded", [id]); + throw new Error(`WeightedPool with id ${id} not found`); + } + return pool; +} + +export function loadOrCreatePosition( + pool: WeightedPool, + user: Address +): WeightedPoolPosition { + const id = pool.id.concat("-").concat(user.toHexString()); + let position = WeightedPoolPosition.load(id); + if (!position) { + position = new WeightedPoolPosition(id); + position.pool = pool.id; + position.user = user.toHexString(); + position.liquidity = BigInt.fromI32(0); + position.save(); + pool.positions = pool.positions.concat([id]); + pool.save(); + log.info("created new position {} in WeightedPool {}", [id, pool.id]); + } + return position; +} + +// Before calling this function, make sure that pool.gnoBalance set to the up-to-date value AFTER the swap has been made +export function handleSwap( + pool: WeightedPool, + gnoIn: BigInt, + gnoOut: BigInt +): void { + const gnoReserves = pool.gnoBalance; + // to get the GNO reserves before the swap, we add the amount delta + const gnoReservesBefore = gnoReserves.minus(gnoIn).plus(gnoOut); + + log.info("handle swap in {}, gno reserves before: {}, after: {}", [ + pool.id, + gnoReservesBefore.toString(), + gnoReserves.toString(), + ]); + + // set set previous ratio to current ratio + if (pool.positions) { + for (let index = 0; index < pool.positions.length; index++) { + const position = WeightedPoolPosition.load(pool.positions[index]); + if (position) { + const user = loadOrCreateUser(Address.fromString(position.user)); + + const voteWeightToSubtract = position.liquidity + .times(gnoReservesBefore) + .div(pool.totalSupply); + const voteWeightToAdd = position.liquidity + .times(gnoReserves) + .div(pool.totalSupply); + user.voteWeight = user.voteWeight + .plus(voteWeightToAdd) + .minus(voteWeightToSubtract); + user.save(); + + log.info( + "updated vote weight of user {} with liquidity {} (-{}, +{})", + [ + user.id, + position.liquidity.toString(), + voteWeightToSubtract.toString(), + voteWeightToAdd.toString(), + ] + ); + } + } + } +} + +export function handleBalanceChange( + pool: WeightedPool, + nextGnoBalance: BigInt +): void { + const gnoBalance = pool.gnoBalance; + + log.info("handle swap in {}, gno reserves before: {}, after: {}", [ + pool.id, + gnoBalance.toString(), + nextGnoBalance.toString(), + ]); + + // set set previous ratio to current ratio + if (pool.positions) { + for (let index = 0; index < pool.positions.length; index++) { + const position = WeightedPoolPosition.load(pool.positions[index]); + if (position) { + const user = loadOrCreateUser(Address.fromString(position.user)); + + const voteWeightToSubtract = position.liquidity + .times(gnoBalance) + .div(pool.totalSupply); + const voteWeightToAdd = position.liquidity + .times(nextGnoBalance) + .div(pool.totalSupply); + user.voteWeight = user.voteWeight + .plus(voteWeightToAdd) + .minus(voteWeightToSubtract); + user.save(); + + log.info( + "updated vote weight of user {} with liquidity {} (-{}, +{})", + [ + user.id, + position.liquidity.toString(), + voteWeightToSubtract.toString(), + voteWeightToAdd.toString(), + ] + ); + } + } + } +} + +export function handleTransfer( + event: ethereum.Event, + from: Address, + to: Address, + value: BigInt +): void { + const pool = loadPool(event.address); + + const gnoReserves = pool.gnoBalance; + log.info("pool loaded: {}, gno reserves: {}, total supply: {}", [ + pool.id, + gnoReserves.toString(), + pool.totalSupply.toString(), + ]); + + const userTo = loadOrCreateUser(to); + const userFrom = loadOrCreateUser(from); + + log.info("transfer from: {}, to: {}, value: {}", [ + userFrom.id, + userTo.id, + value.toString(), + ]); + + // mint + if (from.toHexString() == ADDRESS_ZERO.toHexString()) { + // update total supply + pool.totalSupply = pool.totalSupply.plus(value); + pool.save(); + log.info("mint {}, new total supply: {}", [ + pool.id, + pool.totalSupply.toString(), + ]); + } + + // burn + if (to.toHexString() == ADDRESS_ZERO.toHexString()) { + pool.totalSupply = pool.totalSupply.minus(value); + pool.save(); + log.info("burn {}, new total supply: {}", [ + pool.id, + pool.totalSupply.toString(), + ]); + } + + // transfer from + if ( + from.toHexString() != ADDRESS_ZERO.toHexString() && + from.toHexString() != pool.id + ) { + const position = loadOrCreatePosition(pool, from); + + // decrease position liquidity and remove it if it gets to zero + if (position.liquidity.minus(value) == BigInt.fromI32(0)) { + store.remove("WeightedPoolPosition", position.id); + pool.positions = arrayRemove(pool.positions, position.id); + pool.save(); + log.info("removed from position {} of user {}", [ + position.id, + userFrom.id, + ]); + } else { + position.liquidity = position.liquidity.minus(value); + position.save(); + log.info("adjusted from position {} of user {}, new liquidity: {}", [ + position.id, + userFrom.id, + position.liquidity.toString(), + ]); + } + + // decrease vote weight + const voteWeightToSubtract = value.times(gnoReserves).div(pool.totalSupply); + userFrom.voteWeight = userFrom.voteWeight.minus(voteWeightToSubtract); + saveOrRemoveUser(userFrom); + log.info("subtracted {} from vote weight of {}, for a new total of {}", [ + voteWeightToSubtract.toString(), + userFrom.id, + userFrom.voteWeight.toString(), + ]); + } + + // transfer to + if ( + to.toHexString() != ADDRESS_ZERO.toHexString() && + to.toHexString() != pool.id + ) { + // increase position liquidity + const position = loadOrCreatePosition(pool, to); + position.liquidity = position.liquidity.plus(value); + position.save(); + log.info("adjusted to position of user {}, new liquidity: {}", [ + userTo.id, + position.liquidity.toString(), + ]); + + // increase vote weight + const voteWeightToAdd = value.times(gnoReserves).div(pool.totalSupply); + userTo.voteWeight = userTo.voteWeight.plus(voteWeightToAdd); + saveOrRemoveUser(userTo); + log.info("added {} to vote weight of {}, for a new total of {}", [ + voteWeightToAdd.toString(), + userTo.id, + userTo.voteWeight.toString(), + ]); + } +} diff --git a/packages/subgraph-base/src/lgno.ts b/src/lgno.ts similarity index 80% rename from packages/subgraph-base/src/lgno.ts rename to src/lgno.ts index 7bc5e70..7f846c0 100644 --- a/packages/subgraph-base/src/lgno.ts +++ b/src/lgno.ts @@ -1,6 +1,11 @@ -import { BigInt, store } from "@graphprotocol/graph-ts"; import { Transfer } from "../generated/ds-lgno/ERC20"; -import { loadOrCreateUser, removeOrSaveUser, ADDRESS_ZERO } from "./helpers"; + +import { + loadOrCreate as loadOrCreateUser, + saveOrRemove as saveOrRemoveUser, +} from "./helpers/user"; + +import { ADDRESS_ZERO } from "./constants"; export function handleTransfer(event: Transfer): void { // note to and from are flipped because of an error in the contract implementation @@ -10,7 +15,7 @@ export function handleTransfer(event: Transfer): void { const userFrom = loadOrCreateUser(from); userFrom.lgno = userFrom.lgno.minus(event.params.value); userFrom.voteWeight = userFrom.voteWeight.minus(event.params.value); - removeOrSaveUser(userFrom); + saveOrRemoveUser(userFrom); } const to = event.params.from; diff --git a/packages/subgraph-gnosis-chain/src/mgno.ts b/src/mgno.ts similarity index 67% rename from packages/subgraph-gnosis-chain/src/mgno.ts rename to src/mgno.ts index cd1f2d5..364715c 100644 --- a/packages/subgraph-gnosis-chain/src/mgno.ts +++ b/src/mgno.ts @@ -1,6 +1,12 @@ import { Address, BigInt } from "@graphprotocol/graph-ts"; -import { Transfer } from "../generated/ds-mgno/ERC20"; -import { loadOrCreateUser, ADDRESS_ZERO, removeOrSaveUser } from "./helpers"; +import { Transfer } from "../generated-gc/ds-mgno/ERC20"; + +import { + loadOrCreate as loadOrCreateUser, + saveOrRemove as saveOrRemoveUser, +} from "./helpers/user"; + +import { ADDRESS_ZERO } from "./constants"; export const DEPOSIT_ADDRESS = Address.fromString( "0x0B98057eA310F4d31F2a452B414647007d1645d9" @@ -16,12 +22,8 @@ export function handleTransfer(event: Transfer): void { if (from.toHexString() != ADDRESS_ZERO.toHexString()) { const userFrom = loadOrCreateUser(from); userFrom.mgno = userFrom.mgno.minus(value); - if (to.toHexString() == DEPOSIT_ADDRESS.toHexString()) { - userFrom.deposit = userFrom.deposit.plus(value.div(MGNO_PER_GNO)); - } else { - userFrom.voteWeight = userFrom.voteWeight.minus(value.div(MGNO_PER_GNO)); - } - removeOrSaveUser(userFrom); + userFrom.voteWeight = userFrom.voteWeight.minus(value.div(MGNO_PER_GNO)); + saveOrRemoveUser(userFrom); } if ( diff --git a/src/sgno.ts b/src/sgno.ts new file mode 100644 index 0000000..a4d3e6b --- /dev/null +++ b/src/sgno.ts @@ -0,0 +1,26 @@ +import { Transfer } from "../generated-gc/ds-sgno/ERC20"; +import { + loadOrCreate as loadOrCreateUser, + saveOrRemove as saveOrRemoveUser, +} from "./helpers/user"; + +import { ADDRESS_ZERO } from "./constants"; + +export function handleTransfer(event: Transfer): void { + const to = event.params.to; + const from = event.params.from; + + if (from.toHexString() != ADDRESS_ZERO.toHexString()) { + const userFrom = loadOrCreateUser(from); + userFrom.sgno = userFrom.sgno.minus(event.params.value); + userFrom.voteWeight = userFrom.voteWeight.minus(event.params.value); + saveOrRemoveUser(userFrom); + } + + if (to.toHexString() != ADDRESS_ZERO.toHexString()) { + const userTo = loadOrCreateUser(to); + userTo.sgno = userTo.sgno.plus(event.params.value); + userTo.voteWeight = userTo.voteWeight.plus(event.params.value); + userTo.save(); + } +} diff --git a/src/uniswapV2/factory.ts b/src/uniswapV2/factory.ts new file mode 100644 index 0000000..2a71802 --- /dev/null +++ b/src/uniswapV2/factory.ts @@ -0,0 +1,36 @@ +import { Address, log } from "@graphprotocol/graph-ts"; +import { PairCreated as PairCreatedEvent } from "../../generated-gc/ds-uniswap-v2-factory/Factory"; +import { WeightedPool } from "../../generated/schema"; +import { UniswapV2Pair as UniwapV2PairTemplate } from "../../generated-gc/templates"; + +import { GNO_ADDRESS, ZERO_BI } from "../constants"; + +export function handleNewPair(event: PairCreatedEvent): void { + const isGnoTradingPair = + event.params.token0.equals(GNO_ADDRESS) || + event.params.token1.equals(GNO_ADDRESS); + + if (isGnoTradingPair) { + createWeightedPool( + event.params.pair, + event.params.token0, + event.params.token1 + ); + } +} + +function createWeightedPool( + address: Address, + token0: Address, + token1: Address +): WeightedPool { + UniwapV2PairTemplate.create(address); + const id = address.toHexString(); + log.info("instantiated UniswapV2 WeightedPool instance: {}", [id]); + const pool = new WeightedPool(id); + pool.gnoIsFirst = token0.equals(GNO_ADDRESS); + pool.totalSupply = ZERO_BI; + pool.gnoBalance = ZERO_BI; + pool.save(); + return pool; +} diff --git a/src/uniswapV2/pair.ts b/src/uniswapV2/pair.ts new file mode 100644 index 0000000..52ad1db --- /dev/null +++ b/src/uniswapV2/pair.ts @@ -0,0 +1,59 @@ +import { Transfer as TransferEvent } from "../../generated-gc/templates/UniswapV2Pair/ERC20"; +import { + Sync as SyncEvent, + Swap as SwapEvent, +} from "../../generated-gc/templates/UniswapV2Pair/Pair"; +import { User, WeightedPool } from "../../generated/schema"; + +import { + loadPool as loadWeightedPool, + handleSwap as handleSwapForWeightedPool, + handleTransfer as handleTransferForWeightedPool, +} from "../helpers/weightedPool"; + +import { ZERO_BI } from "../constants"; + +export function handleSync(event: SyncEvent): void { + const pool = loadWeightedPool(event.address); + pool.gnoBalance = pool.gnoIsFirst + ? event.params.reserve0 + : event.params.reserve1; + pool.save(); +} + +export function handleTransfer(event: TransferEvent): void { + const id = event.address.toHexString(); + const from = event.params.from; + const to = event.params.to; + const value = event.params.value; + + // for UniswapV2 the we have the following ordering of events: + // - reserve0 token transfer event + // - reserve1 token transfer event + // - LP token transfer event + // - Sync event + // As weightedPoolTransfer relies on the pools GNO balance being up-to-date, + // we make sure it is. + const pool = WeightedPool.load(id); + if (!pool) throw new Error(`Expected WeightedPool #${id} to exist`); + const userEntryForPool = User.load(id); + pool.gnoBalance = userEntryForPool ? userEntryForPool.gno : ZERO_BI; + pool.save(); + + handleTransferForWeightedPool(event, from, to, value); +} + +export function handleSwap(event: SwapEvent): void { + // swaps don't change LP token total supply, but they do change the GNO reserves and thus the ratio + const pool = loadWeightedPool(event.address); + + const gnoIn = pool.gnoIsFirst + ? event.params.amount0In + : event.params.amount1In; + const gnoOut = pool.gnoIsFirst + ? event.params.amount0Out + : event.params.amount1Out; + + // Swap is emitted after Sync, so pool.gnoBalance has already been set to the latest state in handleSync when we arrive here. + handleSwapForWeightedPool(pool, gnoIn, gnoOut); +} diff --git a/src/uniswapV3/factory.ts b/src/uniswapV3/factory.ts new file mode 100644 index 0000000..f5bc569 --- /dev/null +++ b/src/uniswapV3/factory.ts @@ -0,0 +1,36 @@ +import { Address, log } from "@graphprotocol/graph-ts"; +import { ConcentratedLiquidityPair } from "../../generated/schema"; +import { PoolCreated as PoolCreatedEvent } from "../../generated/ds-uniswap-v3-factory/Factory"; +import { UniswapV3Pool as UniswapV3PoolTemplate } from "../../generated/templates"; + +import { GNO_ADDRESS, ZERO_BD } from "../constants"; + +export function handlePoolCreated(event: PoolCreatedEvent): void { + const isGnoTradingPair = + event.params.token0.equals(GNO_ADDRESS) || + event.params.token1.equals(GNO_ADDRESS); + + if (isGnoTradingPair) { + createConcentratedLiquidityPair( + event.params.pool, + event.params.token0, + event.params.token1 + ); + } +} + +function createConcentratedLiquidityPair( + address: Address, + token0: Address, + token1: Address +): ConcentratedLiquidityPair { + UniswapV3PoolTemplate.create(address); + const id = address.toHexString(); + log.info("instantiated ConcentratedLiquidityPair instance: {}", [id]); + const pair = new ConcentratedLiquidityPair(id); + pair.gnoIsFirst = token0.equals(GNO_ADDRESS); + pair.sqrtRatio = ZERO_BD; + pair.positions = []; + pair.save(); + return pair; +} diff --git a/src/uniswapV3/pool.ts b/src/uniswapV3/pool.ts new file mode 100644 index 0000000..5edf5ca --- /dev/null +++ b/src/uniswapV3/pool.ts @@ -0,0 +1,49 @@ +import { Address, BigDecimal, BigInt, log } from "@graphprotocol/graph-ts"; +import { + Initialize as InitializeEvent, + Swap as SwapEvent, +} from "../../generated/templates/UniswapV3Pool/Pool"; + +import { ConcentratedLiquidityPair } from "../../generated/schema"; + +import { updateForRatioChange } from "./voteWeight"; + +export function handleInitialize(event: InitializeEvent): void { + // initialize pool sqrt price + const pair = loadConcentratedLiquidityPair(event.address); + if (!pair) return; + pair.sqrtRatio = toX96Decimal(event.params.sqrtPriceX96); + pair.save(); + log.info("initialized pair {}, sqrtRatio: {}", [ + pair.id, + pair.sqrtRatio.toString(), + ]); +} + +export function handleSwap(event: SwapEvent): void { + const pair = loadConcentratedLiquidityPair(event.address); + const previousSqrtRatio = pair.sqrtRatio; + pair.sqrtRatio = toX96Decimal(event.params.sqrtPriceX96); + pair.save(); + + updateForRatioChange(pair, previousSqrtRatio); +} + +function toX96Decimal(bi: BigInt): BigDecimal { + return bi.toBigDecimal().div( + BigDecimal.fromString( + BigInt.fromI32(2) + .pow(96) + .toString() + ) + ); +} + +function loadConcentratedLiquidityPair( + address: Address +): ConcentratedLiquidityPair { + const id = address.toHexString(); + const pair = ConcentratedLiquidityPair.load(id); + if (!pair) throw new Error(`pair with ID ${id} not found`); + return pair; +} diff --git a/src/uniswapV3/position.ts b/src/uniswapV3/position.ts new file mode 100644 index 0000000..962a510 --- /dev/null +++ b/src/uniswapV3/position.ts @@ -0,0 +1,163 @@ +import { Address, BigInt, ethereum, log, store } from "@graphprotocol/graph-ts"; +import { + DecreaseLiquidity, + IncreaseLiquidity, + NonfungiblePositionManager, + Transfer, +} from "../../generated/ds-uniswap-v3-position/NonfungiblePositionManager"; +import { Factory as FactoryContract } from "../../generated/ds-uniswap-v3-position/Factory"; + +import { + ConcentratedLiquidityPair, + ConcentratedLiquidityPosition, +} from "../../generated/schema"; + +import { updateForLiquidityChange } from "./voteWeight"; +import { ADDRESS_ZERO, GNO_ADDRESS, ZERO_BI } from "../constants"; + +export function handleIncreaseLiquidity(event: IncreaseLiquidity): void { + const position = loadOrCreateConcentratedLiquidityPosition( + event, + event.params.tokenId + ); + if (position == null) return; + + const previousLiquidity = position.liquidity; + position.liquidity = position.liquidity.plus(event.params.liquidity); + position.save(); + + updateForLiquidityChange(position, previousLiquidity); +} + +export function handleDecreaseLiquidity(event: DecreaseLiquidity): void { + const position = loadOrCreateConcentratedLiquidityPosition( + event, + event.params.tokenId + ); + if (position == null) return; + + const previousLiquidity = position.liquidity; + position.liquidity = position.liquidity.minus(event.params.liquidity); + + updateForLiquidityChange(position, previousLiquidity); + removeOrSavePosition(position); +} + +export function handleTransfer(event: Transfer): void { + const position = loadOrCreateConcentratedLiquidityPosition( + event, + event.params.tokenId + ); + if (position == null) return; + + const recipient = event.params.to.toHexString(); + const liquidity = position.liquidity; + + log.info("Transfer nun-fungible position {} from {} to {} (liquidity: {})", [ + position.id, + (position.user || "") as string, + recipient, + liquidity.toString(), + ]); + + // update vote weight of sender + if (position.user != ADDRESS_ZERO.toHexString()) { + // temporarily set to zero for updating vote weight + position.liquidity = ZERO_BI; + updateForLiquidityChange(position, liquidity); + position.liquidity = liquidity; + } + + // update vote weight of recipient + position.user = recipient; + position.save(); + updateForLiquidityChange(position, ZERO_BI); +} + +export const FACTORY_ADDRESS = "0x1F98431c8aD98523631AE4a59f267346ea31F984"; +const factoryContract = FactoryContract.bind( + Address.fromString(FACTORY_ADDRESS) +); + +function loadOrCreateConcentratedLiquidityPosition( + event: ethereum.Event, + tokenId: BigInt +): ConcentratedLiquidityPosition | null { + let position = ConcentratedLiquidityPosition.load(tokenId.toString()); + + if (!position) { + const contract = NonfungiblePositionManager.bind(event.address); + const positionCall = contract.try_positions(tokenId); + + if (positionCall.reverted) { + // apparently this happens :/ + // (see: https://github.com/Uniswap/v3-subgraph/blob/bf03f940f17c3d32ee58bd37386f26713cff21e2/src/mappings/position-manager.ts#L20) + log.warning("positions call reverted, could not create position {}", [ + tokenId.toString(), + ]); + return null; + } + const positionResult = positionCall.value; + const tokenA = positionResult.value2; + const tokenB = positionResult.value3; + + if (!tokenA.equals(GNO_ADDRESS) && !tokenB.equals(GNO_ADDRESS)) { + // we don't track this pair, so we can ignore this position + return null; + } + + const poolAddress = factoryContract.getPool( + tokenA, + tokenB, + positionResult.value4 + ); + const pair = ConcentratedLiquidityPair.load(poolAddress.toHexString()); + if (!pair) { + throw new Error(`Could not find pair ${poolAddress.toHexString()}`); + } + + position = new ConcentratedLiquidityPosition(tokenId.toString()); + // The user gets correctly updated in the Transfer handler + position.user = ADDRESS_ZERO.toHexString(); + position.pair = poolAddress.toHexString(); + position.liquidity = ZERO_BI; + position.lowerTick = BigInt.fromI32(positionResult.value5); + position.upperTick = BigInt.fromI32(positionResult.value6); + position.save(); + + pair.positions = pair.positions.concat([tokenId.toString()]); + pair.save(); + + log.info( + "created new position {} in pair {} with lower tick: {}, upper tick: {}", + [ + tokenId.toString(), + pair.id, + position.lowerTick.toString(), + position.upperTick.toString(), + ] + ); + } + + return position; +} + +function removeOrSavePosition(position: ConcentratedLiquidityPosition): void { + if (position.liquidity.equals(ZERO_BI)) { + store.remove("ConcentratedLiquidityPosition", position.id); + const pair = ConcentratedLiquidityPair.load(position.pair); + if (pair) { + pair.positions = arrayRemove(pair.positions, position.id); + pair.save(); + } + log.info("removed concentrated liquidity position {}", [position.id]); + } else { + log.info("save {}", [position.liquidity.toString()]); + position.save(); + } +} + +function arrayRemove(array: string[], elementToRemove: string): string[] { + const index = array.indexOf(elementToRemove); + return array.slice(0, index).concat(array.slice(index + 1)); +} diff --git a/src/uniswapV3/voteWeight.ts b/src/uniswapV3/voteWeight.ts new file mode 100644 index 0000000..b977c7e --- /dev/null +++ b/src/uniswapV3/voteWeight.ts @@ -0,0 +1,286 @@ +import { BigInt, BigDecimal, Address, log } from "@graphprotocol/graph-ts"; +import { + ConcentratedLiquidityPair, + ConcentratedLiquidityPosition, +} from "../../generated/schema"; +import { + loadOrCreate as loadOrCreateUser, + saveOrRemove as saveOrRemoveUser, +} from "../helpers/user"; +import { ZERO_BI } from "../constants"; + +export function updateForLiquidityChange( + position: ConcentratedLiquidityPosition, + previousLiquidity: BigInt +): void { + if (!position.user) { + log.warning("Tried updating vote weight of position without user: {}", [ + position.id, + ]); + return; + } + + const pair = ConcentratedLiquidityPair.load(position.pair); + if (!pair) throw new Error(`Pair with id ${position.pair} not found`); + const gnoIsFirst = pair.gnoIsFirst; + const sqrtRatio = pair.sqrtRatio; + + if (sqrtRatio.equals(ZERO_BD)) { + log.warning( + "Cannot update position {} since sqrtRatio is not yet initialized for pair {}", + [position.id, pair.id] + ); + return; + } + + const user = loadOrCreateUser(Address.fromString(position.user as string)); + + // temporarily set position liquidity to the previous value + const newLiquidity = position.liquidity; + position.liquidity = previousLiquidity; + const amountToSubtract = gnoIsFirst + ? getToken0Balance(position, sqrtRatio) + : getToken1Balance(position, sqrtRatio); + position.liquidity = newLiquidity; + + // add vote weight for the new liquidity value + const amountToAdd = gnoIsFirst + ? getToken0Balance(position, pair.sqrtRatio) + : getToken1Balance(position, pair.sqrtRatio); + + position.gnoBalance = amountToAdd; + position.save(); + + const delta = amountToAdd.minus(amountToSubtract); + + if (!delta.equals(ZERO_BI)) { + user.voteWeight = user.voteWeight.plus(delta); + + log.info( + "updated voting weight of user {} (delta: {}) for liquidity change (old: {}, new: {})", + [ + user.id, + delta.toString(), + previousLiquidity.toString(), + newLiquidity.toString(), + ] + ); + + saveOrRemoveUser(user); + } +} + +export function updateForRatioChange( + pair: ConcentratedLiquidityPair, + previousSqrtRatio: BigDecimal +): void { + const sqrtRatio = pair.sqrtRatio; + if (sqrtRatio.equals(previousSqrtRatio)) return; + + const gnoIsFirst = pair.gnoIsFirst; + const positions = pair.positions; + for (let index = 0; index < positions.length; index++) { + const position = ConcentratedLiquidityPosition.load(positions[index]); + if (position && position.user) { + const user = loadOrCreateUser( + Address.fromString(position.user as string) + ); + + log.info("gnoIsFirst: {}, pair.sqrtRatio: {}", [ + gnoIsFirst.toString(), + pair.sqrtRatio.toString(), + ]); + + // add vote weight for new ratio + const amountToAdd = gnoIsFirst + ? getToken0Balance(position, pair.sqrtRatio) + : getToken1Balance(position, pair.sqrtRatio); + + // subtract vote weight for previous ratio + let amountToSubtract = ZERO_BI; + if (!previousSqrtRatio.equals(ZERO_BD)) { + amountToSubtract = gnoIsFirst + ? getToken0Balance(position, previousSqrtRatio) + : getToken1Balance(position, previousSqrtRatio); + } + + position.gnoBalance = amountToAdd; + position.save(); + + const delta = amountToAdd.minus(amountToSubtract); + + if (!delta.equals(ZERO_BI)) { + user.voteWeight = user.voteWeight.plus(delta); + + log.info( + "updated voting weight of user {} (delta: {}) for ratio change (old: {}, new: {}, position: {})", + [ + user.id, + delta.toString(), + previousSqrtRatio.toString(), + sqrtRatio.toString(), + position.id, + ] + ); + + saveOrRemoveUser(user); + } + } + } +} + +export function getToken0Balance( + position: ConcentratedLiquidityPosition, + sqrtRatio: BigDecimal +): BigInt { + // lower and upper bounds are expressed as a tick indices (exponents to sqrt(1.0001)) + // see: Uniswap v3 whitepaper section 6.1 and equation 6.2 + const lowerBound = bigDecimalExponated( + BigDecimal.fromString("1.0001"), + position.lowerTick.div(BigInt.fromI32(2)) + ); + const upperBound = bigDecimalExponated( + BigDecimal.fromString("1.0001"), + position.upperTick.div(BigInt.fromI32(2)) + ); + + if (sqrtRatio < lowerBound) { + // liquidity is fully in token0 + // use equation (4) from https://atiselsts.github.io/pdfs/uniswap-v3-liquidity-math.pdf + const result = bigDecimalToBigInt( + position.liquidity + .toBigDecimal() + .times(upperBound.minus(lowerBound)) + .div(lowerBound.times(upperBound)) + ); + log.info( + "liquidity ({}) of position {} is fully in GNO at sqrtRatio {}, balance: {}", + [ + position.liquidity.toString(), + position.id, + sqrtRatio.toString(), + result.toString(), + ] + ); + return result; + } else if (sqrtRatio > upperBound) { + // liquidity is fully in token1 + log.info( + "liquidity ({}) of position {} is fully in other token at sqrtRatio {}", + [position.liquidity.toString(), position.id, sqrtRatio.toString()] + ); + return ZERO_BI; + } else { + // liquidity is in token0 and token1 + // use equation (11) from https://atiselsts.github.io/pdfs/uniswap-v3-liquidity-math.pdf + const result = bigDecimalToBigInt( + position.liquidity + .toBigDecimal() + .times(upperBound.minus(sqrtRatio)) + .div(sqrtRatio.times(upperBound)) + ); + log.info( + "liquidity ({}) of position {} is partially in GNO at sqrtRatio {}, balance: {}", + [ + position.liquidity.toString(), + position.id, + sqrtRatio.toString(), + result.toString(), + ] + ); + return result; + } +} + +export function getToken1Balance( + position: ConcentratedLiquidityPosition, + sqrtRatio: BigDecimal +): BigInt { + // lower and upper bounds are expressed as a tick indices (exponents to sqrt(1.0001)) + // see: Uniswap v3 whitepaper section 6.1 and equation 6.2 + const lowerBound = bigDecimalExponated( + BigDecimal.fromString("1.0001"), + position.lowerTick.div(BigInt.fromI32(2)) + ); + const upperBound = bigDecimalExponated( + BigDecimal.fromString("1.0001"), + position.upperTick.div(BigInt.fromI32(2)) + ); + + if (sqrtRatio < lowerBound) { + // liquidity is fully in token0 + log.info( + "liquidity ({}) of position {} is fully in other token at sqrtRatio {}", + [position.liquidity.toString(), position.id, sqrtRatio.toString()] + ); + return ZERO_BI; + } else if (sqrtRatio > upperBound) { + // liquidity is fully in token1 + // use equation (8) from https://atiselsts.github.io/pdfs/uniswap-v3-liquidity-math.pdf + const result = bigDecimalToBigInt( + position.liquidity.toBigDecimal().times(upperBound.minus(lowerBound)) + ); + log.info( + "liquidity ({}) of position {} is fully in GNO at sqrtRatio {}, balance: {}", + [ + position.liquidity.toString(), + position.id, + sqrtRatio.toString(), + result.toString(), + ] + ); + return result; + } else { + // liquidity is in token0 and token1 + // use equation (12) from https://atiselsts.github.io/pdfs/uniswap-v3-liquidity-math.pdf + const result = bigDecimalToBigInt( + position.liquidity.toBigDecimal().times(sqrtRatio.minus(lowerBound)) + ); + log.info( + "liquidity ({}) of position {} is partially in GNO at sqrtRatio {}, balance: {}", + [ + position.liquidity.toString(), + position.id, + sqrtRatio.toString(), + result.toString(), + ] + ); + return result; + } +} + +function bigDecimalToBigInt(bd: BigDecimal): BigInt { + return BigInt.fromString(bd.toString().split(".")[0]); +} + +const ONE_BI = BigInt.fromI32(1); +const ZERO_BD = BigDecimal.fromString("0"); +const ONE_BD = BigDecimal.fromString("1"); + +// taken from: https://github.com/Uniswap/v3-subgraph/blob/be1d1f5506b02606a32c17aa9098e82b8fee7d12/src/utils/index.ts +function bigDecimalExponated(value: BigDecimal, power: BigInt): BigDecimal { + if (power.equals(ZERO_BI)) { + return ONE_BD; + } + let negativePower = power.lt(ZERO_BI); + let result = ZERO_BD.plus(value); + let powerAbs = power.abs(); + for (let i = ONE_BI; i.lt(powerAbs); i = i.plus(ONE_BI)) { + result = result.times(value); + } + + if (negativePower) { + result = safeDiv(ONE_BD, result); + } + + return result; +} + +// return 0 if denominator is 0 in division +function safeDiv(amount0: BigDecimal, amount1: BigDecimal): BigDecimal { + if (amount1.equals(ZERO_BD)) { + return ZERO_BD; + } else { + return amount0.div(amount1); + } +} diff --git a/subgraph-gnosis-chain.yaml b/subgraph-gnosis-chain.yaml new file mode 100644 index 0000000..bcfb8e1 --- /dev/null +++ b/subgraph-gnosis-chain.yaml @@ -0,0 +1,295 @@ +specVersion: 0.0.4 +schema: + file: ./schema.graphql +dataSources: + - kind: ethereum + name: ds-gno + network: xdai + source: + address: "0x9C58BAcC331c9aa871AFD802DB6379a98e80CEdb" + abi: ERC20 + startBlock: 11629829 + mapping: + kind: ethereum/events + apiVersion: 0.0.6 + language: wasm/assemblyscript + entities: + - User + abis: + - name: ERC20 + file: ./abis/ERC20.json + eventHandlers: + - event: Transfer(indexed address,indexed address,uint256) + handler: handleTransfer + file: ./src/gno.ts + - kind: ethereum + name: ds-mgno + network: xdai + source: + address: "0x722fc4DAABFEaff81b97894fC623f91814a1BF68" + abi: ERC20 + startBlock: 19468779 + mapping: + kind: ethereum/events + apiVersion: 0.0.6 + language: wasm/assemblyscript + entities: + - User + abis: + - name: ERC20 + file: ./abis/ERC20.json + eventHandlers: + - event: Transfer(indexed address,indexed address,uint256) + handler: handleTransfer + file: ./src/mgno.ts + - kind: ethereum + name: ds-lgno + network: xdai + source: + address: "0xd4Ca39f78Bf14BfaB75226AC833b1858dB16f9a1" + abi: ERC20 + startBlock: 20388099 + mapping: + kind: ethereum/events + apiVersion: 0.0.6 + language: wasm/assemblyscript + entities: + - User + abis: + - name: ERC20 + file: ./abis/ERC20.json + eventHandlers: + - event: Transfer(indexed address,indexed address,uint256) + handler: handleTransfer + file: ./src/lgno.ts + - kind: ethereum + name: ds-deposit + network: xdai + source: + address: "0x0B98057eA310F4d31F2a452B414647007d1645d9" + abi: SBCDepositContract + startBlock: 19469077 + mapping: + kind: ethereum/events + apiVersion: 0.0.6 + language: wasm/assemblyscript + entities: + - User + abis: + - name: SBCDepositContract + file: ./abis/SBCDepositContract.json + eventHandlers: + - event: DepositEvent(bytes,bytes,bytes,bytes,bytes) + handler: handleDeposit + file: ./src/deposit.ts + - kind: ethereum + name: ds-sgno + network: xdai + source: + address: "0xa4ef9da5ba71cc0d2e5e877a910a37ec43420445" + abi: ERC20 + startBlock: 21275850 + mapping: + kind: ethereum/events + apiVersion: 0.0.6 + language: wasm/assemblyscript + entities: + - User + abis: + - name: ERC20 + file: ./abis/ERC20.json + eventHandlers: + - event: Transfer(indexed address,indexed address,uint256) + handler: handleTransfer + file: ./src/sgno.ts + - kind: ethereum/contract + name: ds-uniswap-v2-factory + network: xdai + source: + # note this is actually the swapr factory, i.e., the biggest tvl uniswap-v2 clone on gnosis-chain + address: "0x5D48C95AdfFD4B40c1AAADc4e08fc44117E02179" + abi: Factory + startBlock: 14913783 + mapping: + kind: ethereum/events + apiVersion: 0.0.6 + language: wasm/assemblyscript + file: ./src/uniswapV2/factory.ts + entities: + - User + - WeightedPool + abis: + - name: Factory + file: ./abis/uniswapV2/factory.json + eventHandlers: + - event: PairCreated(indexed address,indexed address,address,uint256) + handler: handleNewPair + - kind: ethereum/contract + name: ds-honeyswap + network: xdai + source: + address: "0xA818b4F111Ccac7AA31D0BCc0806d64F2E0737D7" + abi: Factory + startBlock: 11813490 + mapping: + kind: ethereum/events + apiVersion: 0.0.6 + language: wasm/assemblyscript + file: ./src/uniswapV2/factory.ts + entities: + - User + - WeightedPool + abis: + - name: Factory + file: ./abis/uniswapV2/factory.json + eventHandlers: + - event: PairCreated(indexed address,indexed address,address,uint256) + handler: handleNewPair + - kind: ethereum/contract + name: ds-sushi + network: xdai + source: + address: "0xc35DADB65012eC5796536bD9864eD8773aBc74C4" + abi: Factory + startBlock: 14735904 + mapping: + kind: ethereum/events + apiVersion: 0.0.6 + language: wasm/assemblyscript + file: ./src/uniswapV2/factory.ts + entities: + - User + - WeightedPool + abis: + - name: Factory + file: ./abis/uniswapV2/factory.json + eventHandlers: + - event: PairCreated(indexed address,indexed address,address,uint256) + handler: handleNewPair + - kind: ethereum/contract + name: ds-elk + network: xdai + source: + address: "0xCB018587dA9590A18f49fFE2b85314c33aF3Ad3B" + abi: Factory + startBlock: 17623247 + mapping: + kind: ethereum/events + apiVersion: 0.0.6 + language: wasm/assemblyscript + file: ./src/uniswapV2/factory.ts + entities: + - User + - WeightedPool + abis: + - name: Factory + file: ./abis/uniswapV2/factory.json + eventHandlers: + - event: PairCreated(indexed address,indexed address,address,uint256) + handler: handleNewPair + - kind: ethereum/contract + name: ds-baoswap + network: xdai + source: + address: "0x45DE240fbE2077dd3e711299538A09854FAE9c9b" + abi: Factory + startBlock: 14515972 + mapping: + kind: ethereum/events + apiVersion: 0.0.6 + language: wasm/assemblyscript + file: ./src/uniswapV2/factory.ts + entities: + - User + - WeightedPool + abis: + - name: Factory + file: ./abis/uniswapV2/factory.json + eventHandlers: + - event: PairCreated(indexed address,indexed address,address,uint256) + handler: handleNewPair + - kind: ethereum/contract + name: ds-balancer-v1-factory + network: xdai + source: + # symmetric's factory address, a balancer-v1 clone + address: "0x9B4214FD41cD24347A25122AC7bb6B479BED72Ac" + abi: Factory + startBlock: 16465037 + mapping: + kind: ethereum/events + apiVersion: 0.0.6 + language: wasm/assemblyscript + file: ./src/balancerV1/factory.ts + entities: + - User + - WeightedPool + abis: + - name: Factory + file: ./abis/balancerV1/BFactory.json + - name: Pool + file: ./abis/balancerV1/BPool.json + eventHandlers: + - event: LOG_NEW_POOL(indexed address,indexed address) + handler: handleNewPool +templates: + - kind: ethereum/contract + name: UniswapV2Pair + network: xdai + source: + abi: Pair + mapping: + kind: ethereum/events + apiVersion: 0.0.6 + language: wasm/assemblyscript + file: ./src/uniswapV2/pair.ts + entities: + - User + - WeightedPool + - WeightedPoolPosition + abis: + - name: Pair + file: ./abis/uniswapV2/pair.json + - name: ERC20 + file: ./abis/ERC20.json + eventHandlers: + - event: Transfer(indexed address,indexed address,uint256) + handler: handleTransfer + - event: Swap(indexed address,uint256,uint256,uint256,uint256,indexed address) + handler: handleSwap + - event: Sync(uint112,uint112) + handler: handleSync + - kind: ethereum/contract + name: BalancerV1Pool + network: xdai + source: + abi: Pool + mapping: + kind: ethereum/events + apiVersion: 0.0.6 + language: wasm/assemblyscript + file: ./src/balancerV1/pool.ts + entities: + - User + - WeightedPool + abis: + - name: Pool + file: ./abis/balancerV1/BPool.json + eventHandlers: + - event: LOG_CALL(indexed bytes4,indexed address,bytes) + topic0: "0x3fdddaa200000000000000000000000000000000000000000000000000000000" + handler: handleRebind + - event: LOG_CALL(indexed bytes4,indexed address,bytes) + topic0: "0xe4e1e53800000000000000000000000000000000000000000000000000000000" + handler: handleRebind + - event: LOG_JOIN(indexed address,indexed address,uint256) + handler: handleJoinPool + - event: LOG_EXIT(indexed address,indexed address,uint256) + handler: handleExitPool + - event: LOG_SWAP(indexed address,indexed address,indexed address,uint256,uint256) + handler: handleSwap + - event: Transfer(indexed address,indexed address,uint256) + handler: handleTransfer + callHandlers: + - function: gulp(address) + handler: handleGulp diff --git a/subgraph.yaml b/subgraph.yaml new file mode 100644 index 0000000..9bfd869 --- /dev/null +++ b/subgraph.yaml @@ -0,0 +1,256 @@ +specVersion: 0.0.4 +schema: + file: ./schema.graphql +dataSources: + - kind: ethereum + name: ds-gno + network: mainnet + source: + address: "0x6810e776880C02933D47DB1b9fc05908e5386b96" + abi: ERC20 + startBlock: 3557596 + mapping: + kind: ethereum/events + apiVersion: 0.0.6 + language: wasm/assemblyscript + entities: + - User + abis: + - name: ERC20 + file: ./abis/ERC20.json + eventHandlers: + - event: Transfer(indexed address,indexed address,uint256) + handler: handleTransfer + file: ./src/gno.ts + - kind: ethereum + name: ds-lgno + network: mainnet + source: + address: "0x4f8AD938eBA0CD19155a835f617317a6E788c868" + abi: ERC20 + startBlock: 14111111 + mapping: + kind: ethereum/events + apiVersion: 0.0.6 + language: wasm/assemblyscript + entities: + - User + abis: + - name: ERC20 + file: ./abis/ERC20.json + eventHandlers: + - event: Transfer(indexed address,indexed address,uint256) + handler: handleTransfer + file: ./src/lgno.ts + # Balancer + - kind: ethereum/contract + name: ds-balancer-v2-vault + network: mainnet + source: + address: "0xBA12222222228d8Ba445958a75a0704d566BF2C8" + abi: Vault + startBlock: 12272146 + mapping: + kind: ethereum/events + apiVersion: 0.0.6 + language: wasm/assemblyscript + file: ./src/balancerV2/vault.ts + entities: + - WeightedPool + abis: + - name: Vault + file: ./abis/balancerV2/Vault.json + eventHandlers: + - event: Swap(indexed bytes32,indexed address,indexed address,uint256,uint256) + handler: handleSwap + - event: PoolBalanceChanged(indexed bytes32,indexed address,address[],int256[],uint256[]) + handler: handleBalanceChange + - event: InternalBalanceChanged(indexed address,indexed address,int256) + handler: handleInternalBalanceChange + - kind: ethereum/contract + name: ds-balancer-v2-gauge-cow-gno + network: mainnet + source: + address: "0xa6468eca7633246dcb24e5599681767d27d1f978" + abi: ERC20 + startBlock: 14476099 + mapping: + kind: ethereum/events + apiVersion: 0.0.6 + language: wasm/assemblyscript + entities: + - User + - WeightedPool + - WeightedPoolPosition + abis: + - name: ERC20 + file: ./abis/ERC20.json + eventHandlers: + - event: Transfer(indexed address,indexed address,uint256) + handler: handleTransfer + file: ./src/balancerV2/gauge.ts + - kind: ethereum/contract + name: ds-balancer-v2-gauge-gno-weth + network: mainnet + source: + address: "0xcb664132622f29943f67fa56ccfd1e24cc8b4995" + abi: ERC20 + startBlock: 14474311 + mapping: + kind: ethereum/events + apiVersion: 0.0.6 + language: wasm/assemblyscript + entities: + - User + - WeightedPool + - WeightedPoolPosition + abis: + - name: ERC20 + file: ./abis/ERC20.json + eventHandlers: + - event: Transfer(indexed address,indexed address,uint256) + handler: handleTransfer + file: ./src/balancerV2/gauge.ts + - kind: ethereum/contract + name: ds-balancer-v2-factory + network: mainnet + source: + address: "0x8E9aa87E45e92bad84D5F8DD1bff34Fb92637dE9" + abi: WeightedPoolFactory + startBlock: 12272146 + mapping: + kind: ethereum/events + apiVersion: 0.0.6 + language: wasm/assemblyscript + file: ./src/balancerV2/factory.ts + entities: + - WeightedPool + abis: + - name: Vault + file: ./abis/balancerV2/Vault.json + - name: WeightedPoolFactory + file: ./abis/balancerV2/WeightedPoolFactory.json + - name: WeightedPool + file: ./abis/balancerV2/WeightedPool.json + eventHandlers: + - event: PoolCreated(indexed address) + handler: handlePoolCreated + - kind: ethereum/contract + name: ds-balancer-v2-factory-two-tokens + network: mainnet + source: + address: "0xA5bf2ddF098bb0Ef6d120C98217dD6B141c74EE0" + abi: WeightedPoolFactory + startBlock: 12349890 + mapping: + kind: ethereum/events + apiVersion: 0.0.6 + language: wasm/assemblyscript + file: ./src/balancerV2/factory.ts + entities: + - WeightedPool + abis: + - name: WeightedPoolFactory + file: ./abis/balancerV2/WeightedPoolFactory.json + - name: WeightedPool + file: ./abis/balancerV2/WeightedPool.json + - name: Vault + file: ./abis/balancerV2/Vault.json + eventHandlers: + - event: PoolCreated(indexed address) + handler: handlePoolCreated + # Uniswap V3 + - kind: ethereum/contract + name: ds-uniswap-v3-factory + network: mainnet + source: + address: "0x1F98431c8aD98523631AE4a59f267346ea31F984" + abi: Factory + startBlock: 12369621 + mapping: + kind: ethereum/events + apiVersion: 0.0.6 + language: wasm/assemblyscript + file: ./src/uniswapV3/factory.ts + entities: + - ConcentratedLiquidityPair + abis: + - name: Factory + file: ./abis/uniswapV3/factory.json + eventHandlers: + - event: PoolCreated(indexed address,indexed address,indexed uint24,int24,address) + handler: handlePoolCreated + - kind: ethereum/contract + name: ds-uniswap-v3-position + network: mainnet + source: + address: "0xC36442b4a4522E871399CD717aBDD847Ab11FE88" + abi: NonfungiblePositionManager + startBlock: 12369651 + mapping: + kind: ethereum/events + apiVersion: 0.0.6 + language: wasm/assemblyscript + file: ./src/uniswapV3/position.ts + entities: + - ConcentratedLiquidityPair + - ConcentratedLiquidityPosition + abis: + - name: NonfungiblePositionManager + file: ./abis/uniswapV3/NonfungiblePositionManager.json + - name: Factory + file: ./abis/uniswapV3/factory.json + eventHandlers: + - event: IncreaseLiquidity(indexed uint256,uint128,uint256,uint256) + handler: handleIncreaseLiquidity + - event: DecreaseLiquidity(indexed uint256,uint128,uint256,uint256) + handler: handleDecreaseLiquidity + - event: Transfer(indexed address,indexed address,indexed uint256) + handler: handleTransfer +templates: + # Balancer + - kind: ethereum/contract + name: BalancerV2Pool + network: mainnet + source: + abi: ERC20 + mapping: + kind: ethereum/events + apiVersion: 0.0.6 + language: wasm/assemblyscript + file: ./src/balancerV2/pool.ts + entities: + - User + - WeightedPool + - WeightedPoolPosition + abis: + - name: Vault + file: ./abis/balancerV2/Vault.json + - name: ERC20 + file: ./abis/ERC20.json + eventHandlers: + - event: Transfer(indexed address,indexed address,uint256) + handler: handleTransfer + # Uniswap V3 + - kind: ethereum/contract + name: UniswapV3Pool + network: mainnet + source: + abi: Pool + mapping: + kind: ethereum/events + apiVersion: 0.0.6 + language: wasm/assemblyscript + file: ./src/uniswapV3/pool.ts + entities: + - User + - ConcentratedLiquidityPair + - ConcentratedLiquidityPosition + abis: + - name: Pool + file: ./abis/uniswapV3/pool.json + eventHandlers: + - event: Initialize(uint160,int24) + handler: handleInitialize + - event: Swap(indexed address,indexed address,int256,int256,uint160,uint128,int24) + handler: handleSwap diff --git a/tests/balancerV1/factory.test.ts b/tests/balancerV1/factory.test.ts new file mode 100644 index 0000000..1c25982 --- /dev/null +++ b/tests/balancerV1/factory.test.ts @@ -0,0 +1,56 @@ +import { + clearStore, + test, + assert, + newMockEvent, + createMockedFunction, +} from "matchstick-as/assembly/index"; +import { Address, ethereum } from "@graphprotocol/graph-ts"; +import { handleNewPool } from "../../src/balancerV1/factory"; +import { OTHERTOKEN_ADDRESS, USER1_ADDRESS } from "../helpers"; +import { LOG_NEW_POOL } from "../../generated-gc/ds-balancer-v1-factory/Factory"; +import { GNO_ADDRESS } from "../../src/helpers"; + +const POOL_ADDRESS = Address.fromString( + "0x0000000000000000000000000000000000000003" +); + +createMockedFunction( + POOL_ADDRESS, + "getCurrentTokens", + "getCurrentTokens():(address[])" +).returns([ethereum.Value.fromAddressArray([GNO_ADDRESS, OTHERTOKEN_ADDRESS])]); + +test("Factory spawns pool", () => { + clearStore(); + const poolCreatedEvent = createPoolCreatedEvent(POOL_ADDRESS); + handleNewPool(poolCreatedEvent); + assert.fieldEquals( + "WeightedPool", + POOL_ADDRESS.toHexString(), + "id", + POOL_ADDRESS.toHexString() + ); +}); + +export function createPoolCreatedEvent(pool: Address): LOG_NEW_POOL { + let mockEvent = newMockEvent(); + + mockEvent.parameters = new Array(); + mockEvent.parameters.push( + new ethereum.EventParam("caller", ethereum.Value.fromAddress(USER1_ADDRESS)) + ); + mockEvent.parameters.push( + new ethereum.EventParam("pool", ethereum.Value.fromAddress(pool)) + ); + + return new LOG_NEW_POOL( + Address.fromString("0x9B4214FD41cD24347A25122AC7bb6B479BED72Ac"), + mockEvent.logIndex, + mockEvent.transactionLogIndex, + mockEvent.logType, + mockEvent.block, + mockEvent.transaction, + mockEvent.parameters + ); +} diff --git a/tests/balancerV1/pool.test.ts b/tests/balancerV1/pool.test.ts new file mode 100644 index 0000000..16e7b90 --- /dev/null +++ b/tests/balancerV1/pool.test.ts @@ -0,0 +1,204 @@ +import { Address, BigInt, Bytes, ethereum } from "@graphprotocol/graph-ts"; +import { + clearStore, + test, + assert, + newMockEvent, +} from "matchstick-as/assembly/index"; +import { + User, + WeightedPool, + WeightedPoolPosition, +} from "../../generated/schema"; +import { GNO_ADDRESS, ONE_GNO } from "../../src/helpers"; +import { PAIR_ADDRESS, USER1_ADDRESS } from "../helpers"; +import { + handleSwap, + handleExitPool, + handleJoinPool, +} from "../../src/balancerV1/pool"; +import { + LOG_JOIN, + LOG_EXIT, + LOG_SWAP, +} from "../../generated-gc/templates/BalancerV1Pool/Pool"; + +const POOL_ADDRESS = Address.fromString( + "0x0000000000000000000000000000000000000003" +); +const OTHER_TOKEN_ADDRESS = Address.fromString( + "0x0000000000000000000000000000000000002222" +); + +const POOL_ID = POOL_ADDRESS.concat(Bytes.fromHexString("0x0000123123")); + +const HALF_A_GNO = ONE_GNO.div(BigInt.fromI32(2)); + +function resetFixtures(): void { + clearStore(); + + // Create pool with total supply of 1e18 + const pool = new WeightedPool(POOL_ADDRESS.toHexString()); + pool.gnoIsFirst = true; + pool.totalSupply = ONE_GNO; + pool.gnoBalance = ONE_GNO; + pool.save(); + + // create user + const user = new User(USER1_ADDRESS.toHexString()); + user.voteWeight = ONE_GNO; + user.gno = BigInt.fromI32(0); + user.mgno = BigInt.fromI32(0); + user.lgno = BigInt.fromI32(0); + user.deposit = BigInt.fromI32(0); + user.balancerInternalGno = BigInt.fromI32(0); + user.save(); + + // create a position of that user in the pool with 1e18 liquidity + const position = new WeightedPoolPosition( + pool.id.concat("-").concat(user.id) + ); + position.pool = pool.id; + position.user = user.id; + position.liquidity = ONE_GNO; + position.save(); + pool.positions = pool.positions.concat([position.id]); + pool.save(); +} + +test("Updates pool's GNO balance when LP joins", () => { + resetFixtures(); + + handleJoinPool(createJoinEvent(HALF_A_GNO)); + assert.fieldEquals( + "WeightedPool", + PAIR_ADDRESS.toHexString(), + "gnoBalance", + ONE_GNO.plus(HALF_A_GNO).toString() + ); +}); + +test("Updates pool's GNO balance when LP exits", () => { + resetFixtures(); + + handleExitPool(createExitEvent(HALF_A_GNO)); + assert.fieldEquals( + "WeightedPool", + PAIR_ADDRESS.toHexString(), + "gnoBalance", + HALF_A_GNO.toString() + ); +}); + +test("Updates vote weights of LPs on swaps changing the pool's GNO balance", () => { + resetFixtures(); + + handleSwap(createSwapEvent(HALF_A_GNO)); + + assert.fieldEquals( + "User", + USER1_ADDRESS.toHexString(), + "voteWeight", + HALF_A_GNO.toString() + ); +}); + +function createJoinEvent(gnoIn: BigInt): LOG_JOIN { + let mockEvent = newMockEvent(); + + mockEvent.parameters = new Array(); + + mockEvent.parameters.push( + new ethereum.EventParam("caller", ethereum.Value.fromAddress(USER1_ADDRESS)) + ); + mockEvent.parameters.push( + new ethereum.EventParam("tokenIn", ethereum.Value.fromAddress(GNO_ADDRESS)) + ); + mockEvent.parameters.push( + new ethereum.EventParam( + "tokenAmountIn", + ethereum.Value.fromSignedBigInt(gnoIn) + ) + ); + + return new LOG_JOIN( + PAIR_ADDRESS, + mockEvent.logIndex, + mockEvent.transactionLogIndex, + mockEvent.logType, + mockEvent.block, + mockEvent.transaction, + mockEvent.parameters + ); +} + +function createExitEvent(gnoOut: BigInt): LOG_EXIT { + let mockEvent = newMockEvent(); + + mockEvent.parameters = new Array(); + + mockEvent.parameters.push( + new ethereum.EventParam("caller", ethereum.Value.fromAddress(USER1_ADDRESS)) + ); + mockEvent.parameters.push( + new ethereum.EventParam("tokenOut", ethereum.Value.fromAddress(GNO_ADDRESS)) + ); + mockEvent.parameters.push( + new ethereum.EventParam( + "tokenAmountOut", + ethereum.Value.fromSignedBigInt(gnoOut) + ) + ); + + return new LOG_EXIT( + PAIR_ADDRESS, + mockEvent.logIndex, + mockEvent.transactionLogIndex, + mockEvent.logType, + mockEvent.block, + mockEvent.transaction, + mockEvent.parameters + ); +} + +function createSwapEvent(gnoOut: BigInt): LOG_SWAP { + let mockEvent = newMockEvent(); + + mockEvent.parameters = new Array(); + + mockEvent.parameters.push( + new ethereum.EventParam("caller", ethereum.Value.fromAddress(USER1_ADDRESS)) + ); + mockEvent.parameters.push( + new ethereum.EventParam( + "tokenIn", + ethereum.Value.fromAddress(OTHER_TOKEN_ADDRESS) + ) + ); + mockEvent.parameters.push( + new ethereum.EventParam("tokenOut", ethereum.Value.fromAddress(GNO_ADDRESS)) + ); + + mockEvent.parameters.push( + new ethereum.EventParam( + "tokenAmountIn", + ethereum.Value.fromSignedBigInt(BigInt.fromI32(1000000000)) + ) + ); + mockEvent.parameters.push( + new ethereum.EventParam( + "tokenAmountOut", + ethereum.Value.fromSignedBigInt(gnoOut) + ) + ); + + return new LOG_SWAP( + PAIR_ADDRESS, + mockEvent.logIndex, + mockEvent.transactionLogIndex, + mockEvent.logType, + mockEvent.block, + mockEvent.transaction, + mockEvent.parameters + ); +} diff --git a/tests/balancerV2/factory.test.ts b/tests/balancerV2/factory.test.ts new file mode 100644 index 0000000..b57bded --- /dev/null +++ b/tests/balancerV2/factory.test.ts @@ -0,0 +1,48 @@ +import { + clearStore, + test, + assert, + newMockEvent, +} from "matchstick-as/assembly/index"; +import { Address, ethereum } from "@graphprotocol/graph-ts"; +import { handlePoolCreated } from "../../src/balancerV2/factory"; +import { USER1_ADDRESS } from "../helpers"; +import { PoolCreated } from "../../generated/ds-balancer-v2-factory/WeightedPoolFactory"; + +const POOL_ADDRESS = Address.fromString( + "0x0000000000000000000000000000000000000003" +); + +test("Factory spawns pool", () => { + clearStore(); + const otherToken = USER1_ADDRESS; + const poolCreatedEvent = createPoolCreatedEvent(POOL_ADDRESS); + handlePoolCreated(poolCreatedEvent); + assert.fieldEquals( + "WeightedPool", + POOL_ADDRESS.toHexString(), + "id", + POOL_ADDRESS.toHexString() + ); +}); + +export function createPoolCreatedEvent(pool: Address): PoolCreated { + let mockEvent = newMockEvent(); + + mockEvent.parameters = new Array(); + mockEvent.parameters.push( + new ethereum.EventParam("pool", ethereum.Value.fromAddress(pool)) + ); + + let newPairCreatedEvent = new PoolCreated( + mockEvent.address, + mockEvent.logIndex, + mockEvent.transactionLogIndex, + mockEvent.logType, + mockEvent.block, + mockEvent.transaction, + mockEvent.parameters + ); + + return newPairCreatedEvent; +} diff --git a/tests/balancerV2/gauge.test.ts b/tests/balancerV2/gauge.test.ts new file mode 100644 index 0000000..f826fe0 --- /dev/null +++ b/tests/balancerV2/gauge.test.ts @@ -0,0 +1,172 @@ +import { clearStore, test, assert } from "matchstick-as/assembly/index"; +import { Address, BigInt, ethereum } from "@graphprotocol/graph-ts"; +import { + User, + WeightedPool, + WeightedPoolPosition, +} from "../../generated/schema"; +import { newMockEvent } from "matchstick-as"; +import { ADDRESS_ZERO, USER1_ADDRESS, USER2_ADDRESS } from "../helpers"; +import { handleTransfer as handleLpTokenTransfer } from "../../src/balancerV2/pool"; +import { + COW_GNO_GAUGE_ADDRESS, + COW_GNO_POOL_ADDRESS, + handleTransfer as handleStakedTokenTransfer, +} from "../../src/balancerV2/gauge"; +import { ONE_GNO } from "../../src/helpers"; +import { Transfer } from "../../generated/templates/BalancerV2Pool/ERC20"; + +function resetFixtures(): void { + clearStore(); + + // Create 50COW-50GNO pool with total supply of 1e18 + const pool = new WeightedPool(COW_GNO_POOL_ADDRESS.toHexString()); + pool.gnoIsFirst = true; + pool.totalSupply = ONE_GNO; + pool.gnoBalance = ONE_GNO; + pool.save(); + + // create user + const user = new User(USER1_ADDRESS.toHexString()); + user.voteWeight = ONE_GNO; + user.gno = BigInt.fromI32(0); + user.mgno = BigInt.fromI32(0); + user.lgno = BigInt.fromI32(0); + user.deposit = BigInt.fromI32(0); + user.balancerInternalGno = BigInt.fromI32(0); + user.save(); + + // create a position of that user in the pool with 1e18 liquidity + const position = new WeightedPoolPosition( + pool.id.concat("-").concat(user.id) + ); + position.pool = pool.id; + position.user = user.id; + position.liquidity = ONE_GNO; + position.save(); + pool.positions = pool.positions.concat([position.id]); + pool.save(); +} + +function simulateStake(userAddress: Address, amount: BigInt): void { + handleLpTokenTransfer( + createLpTokenTransferEvent(userAddress, COW_GNO_GAUGE_ADDRESS, amount) + ); + handleStakedTokenTransfer( + createStakedTokenTransferEvent(ADDRESS_ZERO, userAddress, amount) + ); +} + +function simulateUnstake(userAddress: Address, amount: BigInt): void { + handleStakedTokenTransfer( + createStakedTokenTransferEvent(userAddress, COW_GNO_GAUGE_ADDRESS, amount) + ); + handleLpTokenTransfer( + createLpTokenTransferEvent(COW_GNO_GAUGE_ADDRESS, userAddress, amount) + ); +} + +function createLpTokenTransferEvent( + from: Address, + to: Address, + value: BigInt, + data: string = "0x00" +): Transfer { + const mockEvent = newMockEvent(); + + mockEvent.parameters = new Array(); + + mockEvent.parameters.push( + new ethereum.EventParam("from", ethereum.Value.fromAddress(from)) + ); + mockEvent.parameters.push( + new ethereum.EventParam("to", ethereum.Value.fromAddress(to)) + ); + mockEvent.parameters.push( + new ethereum.EventParam("value", ethereum.Value.fromSignedBigInt(value)) + ); + mockEvent.parameters.push( + new ethereum.EventParam("data", ethereum.Value.fromString(data)) + ); + + return new Transfer( + COW_GNO_POOL_ADDRESS, + mockEvent.logIndex, + mockEvent.transactionLogIndex, + mockEvent.logType, + mockEvent.block, + mockEvent.transaction, + mockEvent.parameters + ); +} + +function createStakedTokenTransferEvent( + from: Address, + to: Address, + value: BigInt, + data: string = "0x00" +): Transfer { + const mockEvent = newMockEvent(); + + mockEvent.parameters = new Array(); + + mockEvent.parameters.push( + new ethereum.EventParam("from", ethereum.Value.fromAddress(from)) + ); + mockEvent.parameters.push( + new ethereum.EventParam("to", ethereum.Value.fromAddress(to)) + ); + mockEvent.parameters.push( + new ethereum.EventParam("value", ethereum.Value.fromSignedBigInt(value)) + ); + mockEvent.parameters.push( + new ethereum.EventParam("data", ethereum.Value.fromString(data)) + ); + + return new Transfer( + COW_GNO_GAUGE_ADDRESS, + mockEvent.logIndex, + mockEvent.transactionLogIndex, + mockEvent.logType, + mockEvent.block, + mockEvent.transaction, + mockEvent.parameters + ); +} + +// TESTS +test("Keeps vote weight when staking & unstaking LP tokens", () => { + resetFixtures(); + + simulateStake(USER1_ADDRESS, ONE_GNO); + assert.fieldEquals( + "User", + USER1_ADDRESS.toHexString(), + "voteWeight", + ONE_GNO.toString() + ); + + simulateUnstake(USER1_ADDRESS, ONE_GNO); + assert.fieldEquals( + "User", + USER1_ADDRESS.toHexString(), + "voteWeight", + ONE_GNO.toString() + ); +}); + +test("Updates users' vote weights when transferring staked LP tokens", () => { + resetFixtures(); + simulateStake(USER1_ADDRESS, ONE_GNO); + + handleStakedTokenTransfer( + createStakedTokenTransferEvent(USER1_ADDRESS, USER2_ADDRESS, ONE_GNO) + ); + assert.notInStore("User", USER1_ADDRESS.toHexString()); + assert.fieldEquals( + "User", + USER2_ADDRESS.toHexString(), + "voteWeight", + ONE_GNO.toString() + ); +}); diff --git a/tests/balancerV2/vault.test.ts b/tests/balancerV2/vault.test.ts new file mode 100644 index 0000000..d38c9bd --- /dev/null +++ b/tests/balancerV2/vault.test.ts @@ -0,0 +1,245 @@ +import { Address, BigInt, Bytes, ethereum } from "@graphprotocol/graph-ts"; +import { + clearStore, + test, + assert, + newMockEvent, + createMockedFunction, +} from "matchstick-as/assembly/index"; +import { + User, + WeightedPool, + WeightedPoolPosition, +} from "../../generated/schema"; +import { Transfer as GnoTransfer } from "../../generated/ds-gno/ERC20"; +import { GNO_ADDRESS, ONE_GNO, ZERO_BI } from "../../src/constants"; +import { USER1_ADDRESS, USER2_ADDRESS } from "../helpers"; +import { + handleInternalBalanceChange, + handleSwap, +} from "../../src/balancerV2/vault"; +import { + InternalBalanceChanged, + Swap, +} from "../../generated/ds-balancer-v2-vault/Vault"; +import { handleTransfer } from "../../src/gno"; + +const POOL_ADDRESS = Address.fromString( + "0x0000000000000000000000000000000000000003" +); +const OTHER_TOKEN_ADDRESS = Address.fromString( + "0x0000000000000000000000000000000000002222" +); + +const VAULT_ADDRESS = Address.fromString( + "0xBA12222222228d8Ba445958a75a0704d566BF2C8" +); + +const POOL_ID = POOL_ADDRESS.concat(Bytes.fromHexString("0x0000123123")); + +const HALF_A_GNO = ONE_GNO.div(BigInt.fromI32(2)); + +function resetFixtures(): void { + clearStore(); + + // Create pool with total supply of 1e18 + const pool = new WeightedPool(POOL_ADDRESS.toHexString()); + pool.gnoIsFirst = true; + pool.totalSupply = ONE_GNO; + pool.save(); + + // create user + const user = new User(USER1_ADDRESS.toHexString()); + user.voteWeight = ONE_GNO; + user.gno = BigInt.fromI32(0); + user.mgno = BigInt.fromI32(0); + user.lgno = BigInt.fromI32(0); + user.deposit = BigInt.fromI32(0); + user.balancerInternalGno = BigInt.fromI32(0); + user.save(); + + // create a position of that user in the pool with 1e18 liquidity + const position = new WeightedPoolPosition( + pool.id.concat("-").concat(user.id) + ); + position.pool = pool.id; + position.user = user.id; + position.liquidity = ONE_GNO; + position.save(); + pool.positions = pool.positions.concat([position.id]); + pool.save(); +} + +createMockedFunction( + POOL_ADDRESS, + "getPoolId", + "getPoolId():(bytes32)" +).returns([ethereum.Value.fromBytes(POOL_ID)]); + +createMockedFunction( + VAULT_ADDRESS, + "getPoolTokens", + "getPoolTokens(bytes32):(address[],uint256[],uint256)" +) + .withArgs([ethereum.Value.fromFixedBytes(POOL_ID)]) + .returns([ + ethereum.Value.fromAddressArray([GNO_ADDRESS, OTHER_TOKEN_ADDRESS]), + ethereum.Value.fromUnsignedBigIntArray([ONE_GNO, ONE_GNO]), + ethereum.Value.fromUnsignedBigInt(ZERO_BI), + ]); + +test("Updates vote weights of LPs on swaps changing the pool's GNO balance", () => { + resetFixtures(); + + handleTransfer( + createGnoTransferEvent(POOL_ADDRESS, USER2_ADDRESS, HALF_A_GNO) + ); + handleSwap(createSwapEvent(HALF_A_GNO)); + + assert.fieldEquals( + "User", + USER1_ADDRESS.toHexString(), + "voteWeight", + HALF_A_GNO.toString() + ); +}); + +test("Accounts for internal balances", () => { + resetFixtures(); + handleInternalBalanceChange(createInternalBalanceChangedEvent(ONE_GNO)); + + // add 1 GNO to internal balance + assert.fieldEquals( + "User", + USER1_ADDRESS.toHexString(), + "balancerInternalGno", + ONE_GNO.toString() + ); + assert.fieldEquals( + "User", + USER1_ADDRESS.toHexString(), + "voteWeight", + ONE_GNO.plus(ONE_GNO).toString() + ); + + // subtract 0.5 GNO from internal balance + handleInternalBalanceChange( + createInternalBalanceChangedEvent(HALF_A_GNO.neg()) + ); + assert.fieldEquals( + "User", + USER1_ADDRESS.toHexString(), + "balancerInternalGno", + HALF_A_GNO.toString() + ); + assert.fieldEquals( + "User", + USER1_ADDRESS.toHexString(), + "voteWeight", + ONE_GNO.plus(HALF_A_GNO).toString() + ); +}); + +function createSwapEvent(gnoOut: BigInt): Swap { + let mockEvent = newMockEvent(); + + mockEvent.parameters = new Array(); + mockEvent.parameters.push( + new ethereum.EventParam("poolId", ethereum.Value.fromBytes(POOL_ID)) + ); + mockEvent.parameters.push( + new ethereum.EventParam( + "tokenIn", + ethereum.Value.fromAddress(OTHER_TOKEN_ADDRESS) + ) + ); + mockEvent.parameters.push( + new ethereum.EventParam("tokenOut", ethereum.Value.fromAddress(GNO_ADDRESS)) + ); + + mockEvent.parameters.push( + new ethereum.EventParam( + "amountIn", + ethereum.Value.fromSignedBigInt(BigInt.fromI32(1000000000)) + ) + ); + mockEvent.parameters.push( + new ethereum.EventParam( + "amountOut", + ethereum.Value.fromSignedBigInt(gnoOut) + ) + ); + + return new Swap( + VAULT_ADDRESS, + mockEvent.logIndex, + mockEvent.transactionLogIndex, + mockEvent.logType, + mockEvent.block, + mockEvent.transaction, + mockEvent.parameters + ); +} + +function createInternalBalanceChangedEvent( + delta: BigInt +): InternalBalanceChanged { + let mockEvent = newMockEvent(); + + mockEvent.parameters = new Array(); + + mockEvent.parameters.push( + new ethereum.EventParam("user", ethereum.Value.fromAddress(USER1_ADDRESS)) + ); + mockEvent.parameters.push( + new ethereum.EventParam("token", ethereum.Value.fromAddress(GNO_ADDRESS)) + ); + + mockEvent.parameters.push( + new ethereum.EventParam("delta", ethereum.Value.fromSignedBigInt(delta)) + ); + + return new InternalBalanceChanged( + VAULT_ADDRESS, + mockEvent.logIndex, + mockEvent.transactionLogIndex, + mockEvent.logType, + mockEvent.block, + mockEvent.transaction, + mockEvent.parameters + ); +} + +function createGnoTransferEvent( + from: Address, + to: Address, + value: BigInt, + data: string = "0x00" +): GnoTransfer { + const mockEvent = newMockEvent(); + + mockEvent.parameters = new Array(); + + mockEvent.parameters.push( + new ethereum.EventParam("from", ethereum.Value.fromAddress(from)) + ); + mockEvent.parameters.push( + new ethereum.EventParam("to", ethereum.Value.fromAddress(to)) + ); + mockEvent.parameters.push( + new ethereum.EventParam("value", ethereum.Value.fromSignedBigInt(value)) + ); + mockEvent.parameters.push( + new ethereum.EventParam("data", ethereum.Value.fromString(data)) + ); + + return new GnoTransfer( + GNO_ADDRESS, + mockEvent.logIndex, + mockEvent.transactionLogIndex, + mockEvent.logType, + mockEvent.block, + mockEvent.transaction, + mockEvent.parameters + ); +} diff --git a/tests/deposit.test.ts b/tests/deposit.test.ts new file mode 100644 index 0000000..ddd4ea5 --- /dev/null +++ b/tests/deposit.test.ts @@ -0,0 +1,55 @@ +import { clearStore, test, assert } from "matchstick-as/assembly/index"; +import { Address, ethereum } from "@graphprotocol/graph-ts"; +import { handleDeposit } from "../src/deposit"; +import { DepositEvent } from "../generated-gc/ds-deposit/SBCDepositContract"; +import { newMockEvent } from "matchstick-as"; +import { USER1_ADDRESS } from "./helpers"; +import { ONE_GNO } from "../src/constants"; + +function createDepositEvent(from: string): DepositEvent { + let mockEvent = newMockEvent(); + + let newTransferEvent = new DepositEvent( + mockEvent.address, + mockEvent.logIndex, + mockEvent.transactionLogIndex, + mockEvent.logType, + mockEvent.block, + new ethereum.Transaction( + mockEvent.transaction.hash, + mockEvent.transaction.index, + Address.fromString(from), + mockEvent.transaction.to, + mockEvent.transaction.value, + mockEvent.transaction.gasLimit, + mockEvent.transaction.gasPrice, + mockEvent.transaction.input, + mockEvent.transaction.nonce + ), + mockEvent.parameters + ); + + return newTransferEvent; +} + +test("Deposit increases the deposit amount of the sender by 1 GNO", () => { + clearStore(); + handleDeposit(createDepositEvent(USER1_ADDRESS.toHexString())); + assert.fieldEquals( + "User", + USER1_ADDRESS.toHexString(), + "deposit", + ONE_GNO.toString() + ); +}); + +test("Deposit increases the vote weight of the sender by 1 GNO", () => { + clearStore(); + handleDeposit(createDepositEvent(USER1_ADDRESS.toHexString())); + assert.fieldEquals( + "User", + USER1_ADDRESS.toHexString(), + "voteWeight", + ONE_GNO.toString() + ); +}); diff --git a/packages/subgraph-base/tests/gno.test.ts b/tests/gno.test.ts similarity index 90% rename from packages/subgraph-base/tests/gno.test.ts rename to tests/gno.test.ts index 7e49c13..755415d 100644 --- a/packages/subgraph-base/tests/gno.test.ts +++ b/tests/gno.test.ts @@ -1,29 +1,21 @@ -import { - createMockedFunction, - clearStore, - test, - assert, - logStore, -} from "matchstick-as/assembly/index"; -import { Address, BigInt, Bytes, ethereum } from "@graphprotocol/graph-ts"; -import { User } from "../generated/schema"; +import { newMockEvent } from "matchstick-as"; +import { clearStore, test, assert } from "matchstick-as/assembly/index"; +import { Address, BigInt, ethereum } from "@graphprotocol/graph-ts"; import { handleTransfer } from "../src/gno"; import { Transfer } from "../generated/ds-gno/ERC20"; -import { log, newMockEvent } from "matchstick-as"; import { ADDRESS_ZERO, USER1_ADDRESS, USER2_ADDRESS, value, value2x, - data, } from "./helpers"; function createTransferEvent( from: string, to: string, value: BigInt, - data: string + data: string = "0x00" ): Transfer { let mockEvent = newMockEvent(); @@ -65,8 +57,7 @@ test("Transfer correctly increases GNO balance of recipient", () => { let transferEvent = createTransferEvent( ADDRESS_ZERO.toHexString(), USER1_ADDRESS.toHexString(), - value, - data + value ); // mint 1337 to user 1 @@ -94,8 +85,7 @@ test("Transfer correctly decreases GNO balance of sender", () => { let mintEvent = createTransferEvent( ADDRESS_ZERO.toHexString(), USER1_ADDRESS.toHexString(), - value2x, - data + value2x ); handleTransfer(mintEvent); assert.fieldEquals( @@ -109,8 +99,7 @@ test("Transfer correctly decreases GNO balance of sender", () => { let transferEvent = createTransferEvent( USER1_ADDRESS.toHexString(), USER2_ADDRESS.toHexString(), - value, - data + value ); handleTransfer(transferEvent); assert.fieldEquals( @@ -127,8 +116,7 @@ test("Transfer correctly increases vote weight of recipient", () => { let transferEvent = createTransferEvent( ADDRESS_ZERO.toHexString(), USER1_ADDRESS.toHexString(), - value, - data + value ); // mint 1337 to user 1 @@ -156,8 +144,7 @@ test("Transfer correctly decreases vote weight of sender", () => { let mintEvent = createTransferEvent( ADDRESS_ZERO.toHexString(), USER1_ADDRESS.toHexString(), - value2x, - data + value2x ); handleTransfer(mintEvent); assert.fieldEquals( @@ -171,8 +158,7 @@ test("Transfer correctly decreases vote weight of sender", () => { let transferEvent = createTransferEvent( USER1_ADDRESS.toHexString(), USER2_ADDRESS.toHexString(), - value, - data + value ); handleTransfer(transferEvent); assert.fieldEquals( @@ -190,8 +176,7 @@ test("Transfer resulting in 0 vote weight removes user from store.", () => { let mintEvent = createTransferEvent( ADDRESS_ZERO.toHexString(), USER1_ADDRESS.toHexString(), - value, - data + value ); handleTransfer(mintEvent); assert.fieldEquals( @@ -205,8 +190,7 @@ test("Transfer resulting in 0 vote weight removes user from store.", () => { let transferEvent = createTransferEvent( USER1_ADDRESS.toHexString(), USER2_ADDRESS.toHexString(), - value, - data + value ); handleTransfer(transferEvent); assert.notInStore("User", USER1_ADDRESS.toHexString()); @@ -219,8 +203,7 @@ test("Transfer involving ADDRESS_ZERO does not create an ADDRESS_ZERO entity.", let mintEvent = createTransferEvent( ADDRESS_ZERO.toHexString(), USER1_ADDRESS.toHexString(), - value, - data + value ); handleTransfer(mintEvent); assert.notInStore("User", ADDRESS_ZERO.toHexString()); @@ -229,8 +212,7 @@ test("Transfer involving ADDRESS_ZERO does not create an ADDRESS_ZERO entity.", let transferEvent = createTransferEvent( USER1_ADDRESS.toHexString(), ADDRESS_ZERO.toHexString(), - value, - data + value ); handleTransfer(transferEvent); assert.notInStore("User", ADDRESS_ZERO.toHexString()); diff --git a/packages/subgraph-base/tests/helpers.ts b/tests/helpers.ts similarity index 85% rename from packages/subgraph-base/tests/helpers.ts rename to tests/helpers.ts index 7d90b79..f763aa1 100644 --- a/packages/subgraph-base/tests/helpers.ts +++ b/tests/helpers.ts @@ -1,16 +1,8 @@ -import { - createMockedFunction, - clearStore, - test, - assert, - logStore, -} from "matchstick-as/assembly/index"; import { Address, BigInt, Bytes, ethereum } from "@graphprotocol/graph-ts"; -import { User } from "../generated/schema"; -import { log, newMockEvent } from "matchstick-as"; -import { Transfer } from "../generated/templates/Pair/ERC20"; -import { Sync } from "../generated/templates/Pair/Pair"; -import { PairCreated } from "../generated/Factory/Factory"; +import { newMockEvent } from "matchstick-as"; +import { PairCreated } from "../generated-gc/ds-uniswap-v2-factory/Factory"; +import { Transfer } from "../generated-gc/templates/UniswapV2Pair/ERC20"; +import { Sync } from "../generated-gc/templates/UniswapV2Pair/Pair"; export const ADDRESS_ZERO = Address.fromString( "0x0000000000000000000000000000000000000000" @@ -28,15 +20,11 @@ export const FACTORY_ADDRESS = Address.fromString( "0xa818b4f111ccac7aa31d0bcc0806d64f2e0737d7" ); -export const GNO_ADDRESS = Address.fromString( - "0x9C58BAcC331c9aa871AFD802DB6379a98e80CEdb" -); export const OTHERTOKEN_ADDRESS = Address.fromString( "0x0000000000000000000000000000000000000004" ); export const value = BigInt.fromI32(2000000); export const value2x = BigInt.fromI32(4000000); -export const data = "0x00"; export function createTransferEvent( from: Address, diff --git a/packages/subgraph-base/tests/lgno.test.ts b/tests/lgno.test.ts similarity index 76% rename from packages/subgraph-base/tests/lgno.test.ts rename to tests/lgno.test.ts index b101ff1..026d2c5 100644 --- a/packages/subgraph-base/tests/lgno.test.ts +++ b/tests/lgno.test.ts @@ -1,29 +1,15 @@ -import { - createMockedFunction, - clearStore, - test, - assert, - logStore, -} from "matchstick-as/assembly/index"; -import { Address, BigInt, Bytes, ethereum } from "@graphprotocol/graph-ts"; -import { User } from "../generated/schema"; +import { newMockEvent } from "matchstick-as"; +import { clearStore, test, assert } from "matchstick-as/assembly/index"; +import { Address, BigInt, ethereum } from "@graphprotocol/graph-ts"; import { handleTransfer } from "../src/lgno"; import { Transfer } from "../generated/ds-lgno/ERC20"; -import { log, newMockEvent } from "matchstick-as"; -import { - ADDRESS_ZERO, - USER1_ADDRESS, - USER2_ADDRESS, - value, - value2x, - data, -} from "./helpers"; +import { ADDRESS_ZERO, USER1_ADDRESS, value, value2x } from "./helpers"; function createTransferEvent( from: Address, to: Address, value: BigInt, - data: string + data: string = "0x00" ): Transfer { let mockEvent = newMockEvent(); @@ -58,12 +44,7 @@ function createTransferEvent( test("Transfer correctly increases lGNO balance of recipient", () => { clearStore(); // note: from and to are reversed due to an error in the implementation - let transferEvent = createTransferEvent( - USER1_ADDRESS, - ADDRESS_ZERO, - value, - data - ); + let transferEvent = createTransferEvent(USER1_ADDRESS, ADDRESS_ZERO, value); // mint 1337 to user 1 handleTransfer(transferEvent); @@ -86,12 +67,7 @@ test("Transfer correctly increases lGNO balance of recipient", () => { test("Transfer correctly increases vote weight of recipient", () => { clearStore(); - let transferEvent = createTransferEvent( - USER1_ADDRESS, - ADDRESS_ZERO, - value, - data - ); + let transferEvent = createTransferEvent(USER1_ADDRESS, ADDRESS_ZERO, value); // mint 1337 to user 1 handleTransfer(transferEvent); @@ -114,17 +90,12 @@ test("Transfer correctly increases vote weight of recipient", () => { test("Transfer involving ADDRESS_ZERO does not create an ADDRESS_ZERO entity.", () => { // send 1337 from USER1_ADDRESS to ADDRESS_ZERO, ADDRESS_ZERO should not be in store - let mintEvent = createTransferEvent(ADDRESS_ZERO, USER1_ADDRESS, value, data); + let mintEvent = createTransferEvent(ADDRESS_ZERO, USER1_ADDRESS, value); handleTransfer(mintEvent); assert.notInStore("User", ADDRESS_ZERO.toHexString()); // send 1337 from ADDRESS_ZERO to USER1_ADDRESS, ADDRESS_ZERO should not be in store - let transferEvent = createTransferEvent( - USER1_ADDRESS, - ADDRESS_ZERO, - value, - data - ); + let transferEvent = createTransferEvent(USER1_ADDRESS, ADDRESS_ZERO, value); handleTransfer(transferEvent); assert.notInStore("User", ADDRESS_ZERO.toHexString()); diff --git a/packages/subgraph-gnosis-chain/tests/mgno.test.ts b/tests/mgno.test.ts similarity index 83% rename from packages/subgraph-gnosis-chain/tests/mgno.test.ts rename to tests/mgno.test.ts index 409707b..10ae0a0 100644 --- a/packages/subgraph-gnosis-chain/tests/mgno.test.ts +++ b/tests/mgno.test.ts @@ -1,17 +1,10 @@ import { clearStore, test, assert } from "matchstick-as/assembly/index"; import { Address, BigInt, ethereum } from "@graphprotocol/graph-ts"; -import { handleTransfer } from "../src/mgno"; -import { Transfer } from "../generated/ds-mgno/ERC20"; -import { log, newMockEvent } from "matchstick-as"; -import { - ADDRESS_ZERO, - ONE_GNO, - MGNO_PER_GNO, - DEPOSIT_ADDRESS, - USER1_ADDRESS, - USER2_ADDRESS, - data, -} from "./helpers"; +import { DEPOSIT_ADDRESS, handleTransfer, MGNO_PER_GNO } from "../src/mgno"; +import { Transfer } from "../generated-gc/ds-mgno/ERC20"; +import { newMockEvent } from "matchstick-as"; +import { ADDRESS_ZERO, USER1_ADDRESS, USER2_ADDRESS } from "./helpers"; +import { ONE_GNO } from "../src/constants"; let value = ONE_GNO.times(MGNO_PER_GNO); let value2x = value.times(BigInt.fromI32(2)); @@ -64,7 +57,7 @@ test("Transfer correctly increases mGNO balance of recipient", () => { ADDRESS_ZERO.toHexString(), USER1_ADDRESS.toHexString(), value, - data + "0x00" ); // mint value to user 1 @@ -93,7 +86,7 @@ test("Transfer correctly decreases mGNO balance of sender", () => { ADDRESS_ZERO.toHexString(), USER1_ADDRESS.toHexString(), value2x, - data + "0x00" ); handleTransfer(mintEvent); assert.fieldEquals( @@ -108,7 +101,7 @@ test("Transfer correctly decreases mGNO balance of sender", () => { USER1_ADDRESS.toHexString(), USER2_ADDRESS.toHexString(), value, - data + "0x00" ); handleTransfer(transferEvent); assert.fieldEquals( @@ -125,7 +118,7 @@ test("Transfer correctly increases vote weight of recipient", () => { ADDRESS_ZERO.toHexString(), USER1_ADDRESS.toHexString(), value, - data + "0x00" ); // mint value to user 1 @@ -154,7 +147,7 @@ test("Transfer correctly decreases vote weight of sender", () => { ADDRESS_ZERO.toHexString(), USER1_ADDRESS.toHexString(), value2x, - data + "0x00" ); handleTransfer(mintEvent); assert.fieldEquals( @@ -169,7 +162,7 @@ test("Transfer correctly decreases vote weight of sender", () => { USER1_ADDRESS.toHexString(), USER2_ADDRESS.toHexString(), value, - data + "0x00" ); handleTransfer(transferEvent); assert.fieldEquals( @@ -180,39 +173,6 @@ test("Transfer correctly decreases vote weight of sender", () => { ); }); -test("Transfer to DEPOSIT_ADDRESS does not change vote weight", () => { - clearStore(); - // mint value2x to USER1_ADDRESS - let mintEvent = createTransferEvent( - ADDRESS_ZERO.toHexString(), - USER1_ADDRESS.toHexString(), - value2x, - data - ); - handleTransfer(mintEvent); - assert.fieldEquals( - "User", - USER1_ADDRESS.toHexString(), - "voteWeight", - value2x.div(MGNO_PER_GNO).toString() - ); - - // send value from USER1_ADDRESS to USER2_ADDRESS, user one should have value left - let transferEvent = createTransferEvent( - USER1_ADDRESS.toHexString(), - DEPOSIT_ADDRESS.toHexString(), - value, - data - ); - handleTransfer(transferEvent); - assert.fieldEquals( - "User", - USER1_ADDRESS.toHexString(), - "voteWeight", - value2x.div(MGNO_PER_GNO).toString() - ); -}); - test("Transfer resulting in 0 vote weight removes user from store.", () => { clearStore(); // mint value2x to USER1_ADDRESS @@ -220,7 +180,7 @@ test("Transfer resulting in 0 vote weight removes user from store.", () => { ADDRESS_ZERO.toHexString(), USER1_ADDRESS.toHexString(), value, - data + "0x00" ); handleTransfer(mintEvent); assert.fieldEquals( @@ -235,7 +195,7 @@ test("Transfer resulting in 0 vote weight removes user from store.", () => { USER1_ADDRESS.toHexString(), USER2_ADDRESS.toHexString(), value, - data + "0x00" ); handleTransfer(transferEvent); assert.notInStore("User", USER1_ADDRESS.toHexString()); @@ -248,7 +208,7 @@ test("Transfer involving ADDRESS_ZERO does not create an ADDRESS_ZERO entity.", ADDRESS_ZERO.toHexString(), USER1_ADDRESS.toHexString(), value, - data + "0x00" ); handleTransfer(mintEvent); assert.notInStore("User", ADDRESS_ZERO.toHexString()); @@ -258,7 +218,7 @@ test("Transfer involving ADDRESS_ZERO does not create an ADDRESS_ZERO entity.", USER1_ADDRESS.toHexString(), ADDRESS_ZERO.toHexString(), value, - data + "0x00" ); handleTransfer(transferEvent); assert.notInStore("User", ADDRESS_ZERO.toHexString()); @@ -271,7 +231,7 @@ test("Transfer involving DEPOSIT_ADDRESS does not create a DEPOSIT_ADDRESS entit ADDRESS_ZERO.toHexString(), USER1_ADDRESS.toHexString(), value, - data + "0x00" ); handleTransfer(mintEvent); assert.notInStore("User", DEPOSIT_ADDRESS.toHexString()); @@ -281,7 +241,7 @@ test("Transfer involving DEPOSIT_ADDRESS does not create a DEPOSIT_ADDRESS entit USER1_ADDRESS.toHexString(), DEPOSIT_ADDRESS.toHexString(), value, - data + "0x00" ); handleTransfer(transferEvent); assert.notInStore("User", DEPOSIT_ADDRESS.toHexString()); diff --git a/tests/sgno.test.ts b/tests/sgno.test.ts new file mode 100644 index 0000000..0ee13a3 --- /dev/null +++ b/tests/sgno.test.ts @@ -0,0 +1,219 @@ +import { clearStore, test, assert } from "matchstick-as/assembly/index"; +import { Address, BigInt, Bytes, ethereum } from "@graphprotocol/graph-ts"; +import { handleTransfer } from "../src/sgno"; +import { Transfer } from "../generated-gc/ds-sgno/ERC20"; +import { newMockEvent } from "matchstick-as"; +import { ADDRESS_ZERO, USER1_ADDRESS, USER2_ADDRESS } from "./helpers"; +import { ONE_GNO } from "../src/constants"; + +let value = ONE_GNO; +let value2x = value.times(BigInt.fromI32(2)); + +function createTransferEvent( + from: string, + to: string, + value: BigInt, + data: string = "0x00" +): Transfer { + let mockEvent = newMockEvent(); + + mockEvent.parameters = new Array(); + + mockEvent.parameters.push( + new ethereum.EventParam( + "from", + ethereum.Value.fromAddress(Address.fromString(from)) + ) + ); + mockEvent.parameters.push( + new ethereum.EventParam( + "to", + ethereum.Value.fromAddress(Address.fromString(to)) + ) + ); + mockEvent.parameters.push( + new ethereum.EventParam("value", ethereum.Value.fromSignedBigInt(value)) + ); + mockEvent.parameters.push( + new ethereum.EventParam("data", ethereum.Value.fromString(data)) + ); + + let newTransferEvent = new Transfer( + mockEvent.address, + mockEvent.logIndex, + mockEvent.transactionLogIndex, + mockEvent.logType, + mockEvent.block, + mockEvent.transaction, + mockEvent.parameters + ); + + return newTransferEvent; +} + +test("Transfer correctly increases sGNO balance of recipient", () => { + let transferEvent = createTransferEvent( + ADDRESS_ZERO.toHexString(), + USER1_ADDRESS.toHexString(), + value + ); + + // mint 1337 to user 1 + handleTransfer(transferEvent); + assert.fieldEquals( + "User", + USER1_ADDRESS.toHexString(), + "sgno", + value.toString() + ); + + // mint another 1337 to user 1, should have a total of 2674 + handleTransfer(transferEvent); + assert.fieldEquals( + "User", + USER1_ADDRESS.toHexString(), + "sgno", + value2x.toString() + ); + clearStore(); +}); + +test("Transfer correctly decreases sGNO balance of sender", () => { + // mint 2674 to USER1_ADDRESS + let mintEvent = createTransferEvent( + ADDRESS_ZERO.toHexString(), + USER1_ADDRESS.toHexString(), + value2x + ); + handleTransfer(mintEvent); + assert.fieldEquals( + "User", + USER1_ADDRESS.toHexString(), + "sgno", + value2x.toString() + ); + + // send 1337 from USER1_ADDRESS to USER2_ADDRESS, user one should have 1337 left + let transferEvent = createTransferEvent( + USER1_ADDRESS.toHexString(), + USER2_ADDRESS.toHexString(), + value + ); + handleTransfer(transferEvent); + assert.fieldEquals( + "User", + USER1_ADDRESS.toHexString(), + "sgno", + value.toString() + ); + + clearStore(); +}); + +test("Transfer correctly increases vote weight of recipient", () => { + let transferEvent = createTransferEvent( + ADDRESS_ZERO.toHexString(), + USER1_ADDRESS.toHexString(), + value + ); + + // mint 1337 to user 1 + handleTransfer(transferEvent); + assert.fieldEquals( + "User", + USER1_ADDRESS.toHexString(), + "voteWeight", + value.toString() + ); + + // mint another 1337 to user 1, should have a total of 2674 + handleTransfer(transferEvent); + assert.fieldEquals( + "User", + USER1_ADDRESS.toHexString(), + "voteWeight", + value2x.toString() + ); + clearStore(); +}); + +test("Transfer correctly decreases vote weight of sender", () => { + // mint 2674 to USER1_ADDRESS + let mintEvent = createTransferEvent( + ADDRESS_ZERO.toHexString(), + USER1_ADDRESS.toHexString(), + value2x + ); + handleTransfer(mintEvent); + assert.fieldEquals( + "User", + USER1_ADDRESS.toHexString(), + "voteWeight", + value2x.toString() + ); + + // send 1337 from USER1_ADDRESS to USER2_ADDRESS, user one should have 1337 left + let transferEvent = createTransferEvent( + USER1_ADDRESS.toHexString(), + USER2_ADDRESS.toHexString(), + value + ); + handleTransfer(transferEvent); + assert.fieldEquals( + "User", + USER1_ADDRESS.toHexString(), + "voteWeight", + value.toString() + ); + + clearStore(); +}); + +test("Transfer resulting in 0 vote weight removes user from store.", () => { + // mint 2674 to USER1_ADDRESS + let mintEvent = createTransferEvent( + ADDRESS_ZERO.toHexString(), + USER1_ADDRESS.toHexString(), + value + ); + handleTransfer(mintEvent); + assert.fieldEquals( + "User", + USER1_ADDRESS.toHexString(), + "voteWeight", + value.toString() + ); + + // send 1337 from USER1_ADDRESS to USER2_ADDRESS, user one should have 0 left and be removed from store + let transferEvent = createTransferEvent( + USER1_ADDRESS.toHexString(), + USER2_ADDRESS.toHexString(), + value + ); + handleTransfer(transferEvent); + assert.notInStore("User", USER1_ADDRESS.toHexString()); + + clearStore(); +}); + +test("Transfer involving ADDRESS_ZERO does not create an ADDRESS_ZERO entity.", () => { + // mint 1337 from ADDRESS_ZERO to USER1_ADDRESS, ADDRESS_ZERO should not be in store + let mintEvent = createTransferEvent( + ADDRESS_ZERO.toHexString(), + USER1_ADDRESS.toHexString(), + value + ); + handleTransfer(mintEvent); + assert.notInStore("User", ADDRESS_ZERO.toHexString()); + + // send 1337 from USER1_ADDRESS to ADDRESS_ZERO, ADDRESS_ZERO should not be in store + let transferEvent = createTransferEvent( + USER1_ADDRESS.toHexString(), + ADDRESS_ZERO.toHexString(), + value + ); + handleTransfer(transferEvent); + assert.notInStore("User", ADDRESS_ZERO.toHexString()); + + clearStore(); +}); diff --git a/tests/uniswapV2/factory.test.ts b/tests/uniswapV2/factory.test.ts new file mode 100644 index 0000000..55a698d --- /dev/null +++ b/tests/uniswapV2/factory.test.ts @@ -0,0 +1,48 @@ +import { clearStore, test, assert } from "matchstick-as/assembly/index"; +import { USER1_ADDRESS, value, PAIR_ADDRESS } from "../helpers"; +import { handleNewPair } from "../../src/uniswapV2/factory"; +import { createPairCreatedEvent } from "../helpers"; +import { GNO_ADDRESS } from "../../src/constants"; + +test("Factory spawns pair", () => { + clearStore(); + const otherToken = USER1_ADDRESS; + const pairCreatedEvent = createPairCreatedEvent( + GNO_ADDRESS, + otherToken, + PAIR_ADDRESS, + value + ); + handleNewPair(pairCreatedEvent); + assert.fieldEquals( + "WeightedPool", + PAIR_ADDRESS.toHexString(), + "id", + PAIR_ADDRESS.toHexString() + ); +}); + +test("New pair has correct GNO position", () => { + clearStore(); + const otherToken = USER1_ADDRESS; + handleNewPair( + createPairCreatedEvent(GNO_ADDRESS, otherToken, PAIR_ADDRESS, value) + ); + assert.fieldEquals( + "WeightedPool", + PAIR_ADDRESS.toHexString(), + "gnoIsFirst", + "true" + ); + + clearStore(); + handleNewPair( + createPairCreatedEvent(otherToken, GNO_ADDRESS, PAIR_ADDRESS, value) + ); + assert.fieldEquals( + "WeightedPool", + PAIR_ADDRESS.toHexString(), + "gnoIsFirst", + "false" + ); +}); diff --git a/tests/uniswapV2/pair.test.ts b/tests/uniswapV2/pair.test.ts new file mode 100644 index 0000000..98aec75 --- /dev/null +++ b/tests/uniswapV2/pair.test.ts @@ -0,0 +1,490 @@ +import { clearStore, test, assert } from "matchstick-as/assembly/index"; +import { Address, BigInt, ethereum } from "@graphprotocol/graph-ts"; +import { User } from "../../generated/schema"; +import { newMockEvent } from "matchstick-as"; +import { + ADDRESS_ZERO, + USER1_ADDRESS, + USER2_ADDRESS, + PAIR_ADDRESS, + value, + OTHERTOKEN_ADDRESS, +} from "../helpers"; +import { handleNewPair } from "../../src/uniswapV2/factory"; +import { handleTransfer as handleGnoTransfer } from "../../src/gno"; +import { createPairCreatedEvent } from "../helpers"; +import { Transfer } from "../../generated-gc/templates/UniswapV2Pair/ERC20"; +import { Swap, Sync } from "../../generated-gc/templates/UniswapV2Pair/Pair"; +import { Transfer as GnoTransfer } from "../../generated/ds-gno/ERC20"; +import { + handleSwap, + handleSync, + handleTransfer, +} from "../../src/uniswapV2/pair"; +import { GNO_ADDRESS, ZERO_BI } from "../../src/constants"; + +let transferEvent = createTransferEvent(USER1_ADDRESS, USER2_ADDRESS, value); +let smallTransferEvent = createTransferEvent( + USER1_ADDRESS, + USER2_ADDRESS, + value.div(BigInt.fromI32(2)) +); + +function resetFixtures(): void { + clearStore(); + + // add user with a bit of GNO + const user = new User(USER1_ADDRESS.toHexString()); + user.voteWeight = value; + user.gno = value; + user.mgno = BigInt.fromI32(0); + user.lgno = BigInt.fromI32(0); + user.sgno = BigInt.fromI32(0); + user.deposit = BigInt.fromI32(0); + user.save(); + + const pairCreatedEvent = createPairCreatedEvent( + GNO_ADDRESS, + OTHERTOKEN_ADDRESS, + PAIR_ADDRESS, + value + ); + handleNewPair(pairCreatedEvent); +} + +function simulateMint(): void { + // 1) GNO transfer: user1 -> pair + handleGnoTransfer(createGnoTransferEvent(USER1_ADDRESS, PAIR_ADDRESS, value)); + + // 2) LP token transfer: zero -> user1 + handleTransfer(createTransferEvent(ADDRESS_ZERO, USER1_ADDRESS, value)); +} + +function simulateBurn(): void { + // 1) LP token transfers: user1 -> pair -> zero + handleTransfer(createTransferEvent(USER1_ADDRESS, PAIR_ADDRESS, value)); + handleTransfer(createTransferEvent(PAIR_ADDRESS, ADDRESS_ZERO, value)); + + // 2) GNO transfer: pair -> user1 + handleGnoTransfer(createGnoTransferEvent(PAIR_ADDRESS, USER1_ADDRESS, value)); +} + +function simulateSwap(): void { + const USER9_ADDRESS = Address.fromString( + "0x0000000000000000000000000000000000000009" + ); + + const gnoDelta = BigInt.fromI32(105000); + + // 1) transfer GNO to pool + handleGnoTransfer( + createGnoTransferEvent(USER9_ADDRESS, PAIR_ADDRESS, gnoDelta) + ); + + // 2) handle Sync event + const userForPool = User.load(PAIR_ADDRESS.toHexString()); + const gnoReserve = userForPool ? userForPool.gno.plus(gnoDelta) : gnoDelta; + handleSync(createSyncEvent(gnoReserve)); + + // 3) handle Swap event + handleSwap( + createSwapEvent( + gnoDelta, + ZERO_BI, + ZERO_BI, + BigInt.fromI32(100000), + USER9_ADDRESS + ) + ); +} + +function createTransferEvent( + from: Address, + to: Address, + value: BigInt, + data: string = "0x00" +): Transfer { + const mockEvent = newMockEvent(); + + mockEvent.parameters = new Array(); + + mockEvent.parameters.push( + new ethereum.EventParam("from", ethereum.Value.fromAddress(from)) + ); + mockEvent.parameters.push( + new ethereum.EventParam("to", ethereum.Value.fromAddress(to)) + ); + mockEvent.parameters.push( + new ethereum.EventParam("value", ethereum.Value.fromSignedBigInt(value)) + ); + mockEvent.parameters.push( + new ethereum.EventParam("data", ethereum.Value.fromString(data)) + ); + + return new Transfer( + PAIR_ADDRESS, + mockEvent.logIndex, + mockEvent.transactionLogIndex, + mockEvent.logType, + mockEvent.block, + mockEvent.transaction, + mockEvent.parameters + ); +} + +function createGnoTransferEvent( + from: Address, + to: Address, + value: BigInt, + data: string = "0x00" +): GnoTransfer { + const mockEvent = newMockEvent(); + + mockEvent.parameters = new Array(); + + mockEvent.parameters.push( + new ethereum.EventParam("from", ethereum.Value.fromAddress(from)) + ); + mockEvent.parameters.push( + new ethereum.EventParam("to", ethereum.Value.fromAddress(to)) + ); + mockEvent.parameters.push( + new ethereum.EventParam("value", ethereum.Value.fromSignedBigInt(value)) + ); + mockEvent.parameters.push( + new ethereum.EventParam("data", ethereum.Value.fromString(data)) + ); + + return new GnoTransfer( + GNO_ADDRESS, + mockEvent.logIndex, + mockEvent.transactionLogIndex, + mockEvent.logType, + mockEvent.block, + mockEvent.transaction, + mockEvent.parameters + ); +} + +function createSwapEvent( + amount0In: BigInt, + amount1In: BigInt, + amount0Out: BigInt, + amount1Out: BigInt, + to: Address +): Swap { + let mockEvent = newMockEvent(); + + mockEvent.parameters = new Array(); + + mockEvent.parameters.push( + new ethereum.EventParam("sender", ethereum.Value.fromAddress(to)) + ); + + mockEvent.parameters.push( + new ethereum.EventParam( + "amount0In", + ethereum.Value.fromSignedBigInt(amount0In) + ) + ); + + mockEvent.parameters.push( + new ethereum.EventParam( + "amount1In", + ethereum.Value.fromSignedBigInt(amount1In) + ) + ); + + mockEvent.parameters.push( + new ethereum.EventParam( + "amount0Out", + ethereum.Value.fromSignedBigInt(amount0Out) + ) + ); + + mockEvent.parameters.push( + new ethereum.EventParam( + "amount1Out", + ethereum.Value.fromSignedBigInt(amount1Out) + ) + ); + + mockEvent.parameters.push( + new ethereum.EventParam("to", ethereum.Value.fromAddress(to)) + ); + + return new Swap( + PAIR_ADDRESS, + mockEvent.logIndex, + mockEvent.transactionLogIndex, + mockEvent.logType, + mockEvent.block, + mockEvent.transaction, + mockEvent.parameters + ); +} + +function createSyncEvent(gnoAmount: BigInt): Sync { + let mockEvent = newMockEvent(); + + mockEvent.parameters = new Array(); + + mockEvent.parameters.push( + new ethereum.EventParam( + "reserve0", + ethereum.Value.fromSignedBigInt(gnoAmount) + ) + ); + + mockEvent.parameters.push( + new ethereum.EventParam( + "reserve1", + ethereum.Value.fromSignedBigInt(gnoAmount) + ) + ); + + return new Sync( + PAIR_ADDRESS, + mockEvent.logIndex, + mockEvent.transactionLogIndex, + mockEvent.logType, + mockEvent.block, + mockEvent.transaction, + mockEvent.parameters + ); +} + +function getPositionID(pair: Address, user: Address): string { + return pair + .toHexString() + .concat("-") + .concat(user.toHexString()); +} + +// TESTS + +test("Creates WeightedPoolPosition on mint and transfer", () => { + resetFixtures(); + + simulateMint(); + assert.fieldEquals( + "WeightedPoolPosition", + getPositionID(PAIR_ADDRESS, USER1_ADDRESS), + "id", + getPositionID(PAIR_ADDRESS, USER1_ADDRESS) + ); + handleTransfer(smallTransferEvent); + assert.fieldEquals( + "WeightedPoolPosition", + getPositionID(PAIR_ADDRESS, USER2_ADDRESS), + "id", + getPositionID(PAIR_ADDRESS, USER2_ADDRESS) + ); +}); + +test("Adds position to pair.positions and user.positions on mint and transfer", () => { + resetFixtures(); + + simulateMint(); + assert.fieldEquals( + "WeightedPool", + PAIR_ADDRESS.toHexString(), + "positions", + "[" + getPositionID(PAIR_ADDRESS, USER1_ADDRESS) + "]" + ); + + assert.fieldEquals( + "WeightedPoolPosition", + PAIR_ADDRESS.toHexString() + .concat("-") + .concat(USER1_ADDRESS.toHexString()), + "user", + USER1_ADDRESS.toHexString() + ); + + // assert.fieldEquals( + // "User", + // USER1_ADDRESS.toHexString(), + // "weightedPoolPositions", + // "[" + getPositionID(PAIR_ADDRESS, USER1_ADDRESS) + "]" + // ); + handleTransfer(smallTransferEvent); + assert.fieldEquals( + "WeightedPool", + PAIR_ADDRESS.toHexString(), + "positions", + "[" + + getPositionID(PAIR_ADDRESS, USER1_ADDRESS) + + ", " + + getPositionID(PAIR_ADDRESS, USER2_ADDRESS) + + "]" + ); + // assert.fieldEquals( + // "User", + // USER2_ADDRESS.toHexString(), + // "weightedPoolPositions", + // "[" + getPositionID(PAIR_ADDRESS, USER2_ADDRESS) + "]" + // ); +}); + +test("Removes position if liquidity is 0", () => { + resetFixtures(); + + simulateMint(); + assert.fieldEquals( + "WeightedPoolPosition", + getPositionID(PAIR_ADDRESS, USER1_ADDRESS), + "id", + getPositionID(PAIR_ADDRESS, USER1_ADDRESS) + ); + handleTransfer(transferEvent); + assert.notInStore( + "WeightedPoolPosition", + getPositionID(PAIR_ADDRESS, USER1_ADDRESS) + ); +}); + +test("Updates position liquidity for recipient on mint", () => { + resetFixtures(); + + // mint value to user 1 + simulateMint(); + assert.fieldEquals( + "WeightedPoolPosition", + getPositionID(PAIR_ADDRESS, USER1_ADDRESS), + "liquidity", + value.toString() + ); +}); + +test("Updates positions of sender and recipient on transfer", () => { + resetFixtures(); + + // mint value to user 1 + simulateMint(); + + // transfer value from USER1 to USER2 + handleTransfer(smallTransferEvent); + + assert.fieldEquals( + "WeightedPoolPosition", + getPositionID(PAIR_ADDRESS, USER1_ADDRESS), + "liquidity", + value.div(BigInt.fromI32(2)).toString() + ); + assert.fieldEquals( + "WeightedPoolPosition", + getPositionID(PAIR_ADDRESS, USER2_ADDRESS), + "liquidity", + value.div(BigInt.fromI32(2)).toString() + ); +}); + +test("Updates vote weight for recipient on mint", () => { + resetFixtures(); + + // mint value to user 1 + simulateMint(); + + assert.fieldEquals( + "User", + USER1_ADDRESS.toHexString(), + "voteWeight", + value.toString() + ); +}); + +test("Updates vote weight for sender and recipient on transfer", () => { + resetFixtures(); + + // mint value to user 1 + simulateMint(); + assert.fieldEquals( + "User", + USER1_ADDRESS.toHexString(), + "voteWeight", + "2000000" + ); + + // transfer value from USER1 to USER2 + handleTransfer(smallTransferEvent); + assert.fieldEquals( + "User", + USER1_ADDRESS.toHexString(), + "voteWeight", + "1000000" + ); + assert.fieldEquals( + "User", + USER2_ADDRESS.toHexString(), + "voteWeight", + "1000000" + ); +}); + +test("Removes sender if vote weight is 0", () => { + resetFixtures(); + + // mint value to user 1 + simulateMint(); + assert.fieldEquals( + "User", + USER1_ADDRESS.toHexString(), + "voteWeight", + "2000000" + ); + + // transfer value from USER1 to USER2 + handleTransfer(transferEvent); + assert.notInStore( + "WeightedPoolPosition", + PAIR_ADDRESS.toHexString() + .concat("-") + .concat(USER1_ADDRESS.toHexString()) + ); + assert.notInStore("User", USER1_ADDRESS.toHexString()); + assert.fieldEquals( + "User", + USER2_ADDRESS.toHexString(), + "voteWeight", + "2000000" + ); +}); + +test("Updates vote weight for all LPs on swap", () => { + resetFixtures(); + // mint value to user 1 + simulateMint(); + // transfer half of value from USER1 to USER2 + handleTransfer(smallTransferEvent); + // vote weights before swap: + // user1: 1000000 + // user2: 1000000 + assert.fieldEquals( + "User", + USER1_ADDRESS.toHexString(), + "voteWeight", + "1000000" + ); + assert.fieldEquals( + "User", + USER2_ADDRESS.toHexString(), + "voteWeight", + "1000000" + ); + + simulateSwap(); + + assert.fieldEquals( + "User", + USER1_ADDRESS.toHexString(), + "voteWeight", + "1052500" + ); + assert.fieldEquals( + "User", + USER2_ADDRESS.toHexString(), + "voteWeight", + "1052500" + ); +}); diff --git a/tests/uniswapV3/factory.test.ts b/tests/uniswapV3/factory.test.ts new file mode 100644 index 0000000..b9bfabe --- /dev/null +++ b/tests/uniswapV3/factory.test.ts @@ -0,0 +1,66 @@ +import { + clearStore, + test, + assert, + newMockEvent, +} from "matchstick-as/assembly/index"; +import { Address, ethereum } from "@graphprotocol/graph-ts"; +import { handlePoolCreated } from "../../src/uniswapV3/factory"; +import { PoolCreated } from "../../generated/ds-uniswap-v3-factory/Factory"; +import { GNO_ADDRESS } from "../../src/constants"; +import { PAIR_ADDRESS, USER1_ADDRESS } from "../helpers"; + +test("Factory spawns pair", () => { + clearStore(); + const otherToken = USER1_ADDRESS; + const poolCreatedEvent = createPoolCreatedEvent( + GNO_ADDRESS, + otherToken, + PAIR_ADDRESS + ); + handlePoolCreated(poolCreatedEvent); + assert.fieldEquals( + "ConcentratedLiquidityPair", + PAIR_ADDRESS.toHexString(), + "id", + PAIR_ADDRESS.toHexString() + ); +}); + +export function createPoolCreatedEvent( + token0: Address, + token1: Address, + pool: Address +): PoolCreated { + let mockEvent = newMockEvent(); + + mockEvent.parameters = new Array(); + + mockEvent.parameters.push( + new ethereum.EventParam("token0", ethereum.Value.fromAddress(token0)) + ); + mockEvent.parameters.push( + new ethereum.EventParam("token1", ethereum.Value.fromAddress(token1)) + ); + mockEvent.parameters.push( + new ethereum.EventParam("fee", ethereum.Value.fromI32(1)) + ); + mockEvent.parameters.push( + new ethereum.EventParam("tickSpacing", ethereum.Value.fromI32(1)) + ); + mockEvent.parameters.push( + new ethereum.EventParam("pool", ethereum.Value.fromAddress(pool)) + ); + + let newPairCreatedEvent = new PoolCreated( + mockEvent.address, + mockEvent.logIndex, + mockEvent.transactionLogIndex, + mockEvent.logType, + mockEvent.block, + mockEvent.transaction, + mockEvent.parameters + ); + + return newPairCreatedEvent; +} diff --git a/tests/uniswapV3/pool.test.ts b/tests/uniswapV3/pool.test.ts new file mode 100644 index 0000000..0917258 --- /dev/null +++ b/tests/uniswapV3/pool.test.ts @@ -0,0 +1,177 @@ +import { clearStore, test, assert } from "matchstick-as/assembly/index"; +import { Address, BigInt, ethereum } from "@graphprotocol/graph-ts"; +import { + ConcentratedLiquidityPair, + ConcentratedLiquidityPosition, +} from "../../generated/schema"; +import { newMockEvent } from "matchstick-as"; +import { handleInitialize, handleSwap } from "../../src/uniswapV3/pool"; +import { ONE_GNO, ZERO_BD } from "../../src/constants"; +import { Initialize, Swap } from "../../generated/templates/UniswapV3Pool/Pool"; +import { User } from "../../generated/schema"; + +const PAIR_ADDRESS = Address.fromString( + "0x0000000000000000000000000000000000000003" +); +export const USER1_ADDRESS = Address.fromString( + "0x0000000000000000000000000000000000000001" +); + +const initializeEvent = createInitializeEvent(); + +const MIN_TICK = -887272; +const MAX_TICK = -MIN_TICK; + +function resetFixtures(): void { + clearStore(); + + const pair = new ConcentratedLiquidityPair(PAIR_ADDRESS.toHexString()); + pair.gnoIsFirst = true; + pair.sqrtRatio = ZERO_BD; + pair.positions = []; + pair.save(); + + const user = new User(USER1_ADDRESS.toHexString()); + user.voteWeight = ONE_GNO; + user.gno = BigInt.fromI32(0); + user.mgno = BigInt.fromI32(0); + user.lgno = BigInt.fromI32(0); + user.sgno = BigInt.fromI32(0); + user.deposit = BigInt.fromI32(0); + user.save(); +} + +test("initializes with the correct sqrtRatio decimal", () => { + resetFixtures(); + + handleInitialize(initializeEvent); + + assert.fieldEquals( + "ConcentratedLiquidityPair", + PAIR_ADDRESS.toHexString(), + "sqrtRatio", + "1" + ); +}); + +test("swaps correctly update the sqrtRatio", () => { + resetFixtures(); + handleInitialize(initializeEvent); + + handleSwap(createSwapEvent(2)); + assert.fieldEquals( + "ConcentratedLiquidityPair", + PAIR_ADDRESS.toHexString(), + "sqrtRatio", + "2" + ); + + handleSwap(createSwapEvent(1, 2)); + assert.fieldEquals( + "ConcentratedLiquidityPair", + PAIR_ADDRESS.toHexString(), + "sqrtRatio", + "0.5" + ); +}); + +test("updates vote weight after swaps", () => { + resetFixtures(); + handleInitialize(initializeEvent); + + // create position over full range + const position = new ConcentratedLiquidityPosition("1234567890"); + position.user = USER1_ADDRESS.toHexString(); + position.pair = PAIR_ADDRESS.toHexString(); + position.liquidity = ONE_GNO; + position.lowerTick = BigInt.fromI32(MIN_TICK); + position.upperTick = BigInt.fromI32(MAX_TICK); + position.save(); + const pair = ConcentratedLiquidityPair.load(PAIR_ADDRESS.toHexString()); + if (!pair) throw new Error("should never happen"); + pair.positions = pair.positions.concat(["1234567890"]); + pair.save(); + assert.fieldEquals( + "ConcentratedLiquidityPair", + PAIR_ADDRESS.toHexString(), + "sqrtRatio", + "1" + ); + + // sqrtRatio changes from 1/1 (x=1, y=1) to 1/2 => ratio changes to 1/4 + // x=2 GNO reserves, y=0.5 other token reserves (preserving x*y=k) + handleSwap(createSwapEvent(1, 2)); + assert.fieldEquals( + "User", + USER1_ADDRESS.toHexString(), + "voteWeight", + "1999999999999999999" // there is some rounding error + ); +}); + +function createInitializeEvent(): Initialize { + const mockEvent = newMockEvent(); + + mockEvent.parameters = new Array(); + mockEvent.parameters.push( + new ethereum.EventParam( + "sqrtPriceX96", + ethereum.Value.fromUnsignedBigInt(BigInt.fromI32(2).pow(96)) + ) + ); + + return new Initialize( + PAIR_ADDRESS, + mockEvent.logIndex, + mockEvent.transactionLogIndex, + mockEvent.logType, + mockEvent.block, + mockEvent.transaction, + mockEvent.parameters + ); +} + +function createSwapEvent( + sqrtRatioNumerator: i32, + sqrtRatioDenominator: i32 = 1 +): Swap { + const mockEvent = newMockEvent(); + + mockEvent.parameters = new Array(); + mockEvent.parameters.push( + new ethereum.EventParam("sender", ethereum.Value.fromAddress(USER1_ADDRESS)) + ); + mockEvent.parameters.push( + new ethereum.EventParam( + "recipient", + ethereum.Value.fromAddress(USER1_ADDRESS) + ) + ); + mockEvent.parameters.push( + new ethereum.EventParam("amount0", ethereum.Value.fromI32(0)) + ); + mockEvent.parameters.push( + new ethereum.EventParam("amount1", ethereum.Value.fromI32(0)) + ); + mockEvent.parameters.push( + new ethereum.EventParam( + "sqrtPriceX96", + ethereum.Value.fromUnsignedBigInt( + BigInt.fromI32(2) + .pow(96) + .times(BigInt.fromI32(sqrtRatioNumerator)) + .div(BigInt.fromI32(sqrtRatioDenominator)) + ) + ) + ); + + return new Swap( + PAIR_ADDRESS, + mockEvent.logIndex, + mockEvent.transactionLogIndex, + mockEvent.logType, + mockEvent.block, + mockEvent.transaction, + mockEvent.parameters + ); +} diff --git a/tests/uniswapV3/position.test.ts b/tests/uniswapV3/position.test.ts new file mode 100644 index 0000000..946dc9d --- /dev/null +++ b/tests/uniswapV3/position.test.ts @@ -0,0 +1,288 @@ +import { Address, BigInt, ethereum } from "@graphprotocol/graph-ts"; +import { + assert, + clearStore, + createMockedFunction, + newMockEvent, + test, +} from "matchstick-as"; +import { + ConcentratedLiquidityPair, + ConcentratedLiquidityPosition, + User, +} from "../../generated/schema"; +import { GNO_ADDRESS, ONE_BD, ONE_GNO, ZERO_BI } from "../../src/constants"; +import { + DecreaseLiquidity, + IncreaseLiquidity, + Transfer, +} from "../../generated/ds-uniswap-v3-position/NonfungiblePositionManager"; +import { + handleIncreaseLiquidity, + handleDecreaseLiquidity, + handleTransfer, + FACTORY_ADDRESS, +} from "../../src/uniswapV3/position"; + +const PAIR_ADDRESS = Address.fromString( + "0x0000000000000000000000000000000000000003" +); +const USER1_ADDRESS = Address.fromString( + "0x0000000000000000000000000000000000000001" +); +const USER2_ADDRESS = Address.fromString( + "0x0000000000000000000000000000000000000002" +); +const OTHER_TOKEN_ADDRESS = Address.fromString( + "0x0000000000000000000000000000000000002222" +); +const NONFUNGIBLE_POSITION_MANAGER_ADDRESS = Address.fromString( + "0xC36442b4a4522E871399CD717aBDD847Ab11FE88" +); + +const MIN_TICK = -887272; +const MAX_TICK = -MIN_TICK; + +const TOKEN_ID = BigInt.fromI32(123); + +function resetFixtures(): void { + clearStore(); + + const pair = new ConcentratedLiquidityPair(PAIR_ADDRESS.toHexString()); + pair.gnoIsFirst = true; + pair.sqrtRatio = ONE_BD; + pair.positions = []; + pair.save(); + + const user = new User(USER1_ADDRESS.toHexString()); + user.voteWeight = ONE_GNO; + user.gno = BigInt.fromI32(0); + user.mgno = BigInt.fromI32(0); + user.lgno = BigInt.fromI32(0); + user.sgno = BigInt.fromI32(0); + user.deposit = BigInt.fromI32(0); + user.save(); +} + +createMockedFunction( + NONFUNGIBLE_POSITION_MANAGER_ADDRESS, + "positions", + "positions(uint256):(uint96,address,address,address,uint24,int24,int24,uint128,uint256,uint256,uint128,uint128)" +) + .withArgs([ethereum.Value.fromUnsignedBigInt(TOKEN_ID)]) + .returns([ + ethereum.Value.fromUnsignedBigInt(ZERO_BI), + ethereum.Value.fromAddress(USER1_ADDRESS), + ethereum.Value.fromAddress(GNO_ADDRESS), + ethereum.Value.fromAddress(OTHER_TOKEN_ADDRESS), + ethereum.Value.fromUnsignedBigInt(ZERO_BI), + ethereum.Value.fromSignedBigInt(BigInt.fromI32(MIN_TICK)), + ethereum.Value.fromSignedBigInt(BigInt.fromI32(MAX_TICK)), + ethereum.Value.fromUnsignedBigInt(ONE_GNO), + ethereum.Value.fromUnsignedBigInt(ZERO_BI), + ethereum.Value.fromUnsignedBigInt(ZERO_BI), + ethereum.Value.fromUnsignedBigInt(ZERO_BI), + ethereum.Value.fromUnsignedBigInt(ZERO_BI), + ]); + +createMockedFunction( + Address.fromString(FACTORY_ADDRESS), + "getPool", + "getPool(address,address,uint24):(address)" +) + .withArgs([ + ethereum.Value.fromAddress(GNO_ADDRESS), + ethereum.Value.fromAddress(OTHER_TOKEN_ADDRESS), + ethereum.Value.fromUnsignedBigInt(ZERO_BI), + ]) + .returns([ethereum.Value.fromAddress(PAIR_ADDRESS)]); + +function createTestPosition(): void { + const position = new ConcentratedLiquidityPosition(TOKEN_ID.toString()); + // The user gets correctly updated in the Transfer handler + position.user = USER1_ADDRESS.toHexString(); + position.pair = PAIR_ADDRESS.toHexString(); + position.liquidity = ONE_GNO; + position.lowerTick = BigInt.fromI32(MIN_TICK); + position.upperTick = BigInt.fromI32(MAX_TICK); + position.save(); + + const pair = ConcentratedLiquidityPair.load(PAIR_ADDRESS.toHexString()); + if (!pair) { + throw new Error("must call resetFixtures before createTestPosition"); + } + pair.positions = [position.id]; + pair.save(); +} + +test("updates vote weight when minting new position", () => { + resetFixtures(); + handleIncreaseLiquidity(createIncreaseLiquidityEvent(ONE_GNO)); + + assert.fieldEquals( + "ConcentratedLiquidityPosition", + TOKEN_ID.toString(), + "liquidity", + "1000000000000000000" + ); + + assert.fieldEquals( + "User", + USER1_ADDRESS.toHexString(), + "voteWeight", + "2000000000000000000" + ); +}); + +test("updates vote weight when increasing liquidity of positions", () => { + resetFixtures(); + createTestPosition(); + + // increase by 1 + handleIncreaseLiquidity(createIncreaseLiquidityEvent(ONE_GNO)); + + assert.fieldEquals( + "User", + USER1_ADDRESS.toHexString(), + "voteWeight", + "2000000000000000000" // 2 GNO + ); +}); + +test("updates vote weight when decreasing liquidity of positions", () => { + resetFixtures(); + createTestPosition(); + + // decrease by 0.1 + handleDecreaseLiquidity( + createDecreaseLiquidityEvent(ONE_GNO.div(BigInt.fromI32(10))) + ); + + assert.fieldEquals( + "User", + USER1_ADDRESS.toHexString(), + "voteWeight", + "900000000000000000" // 0.9 GNO + ); +}); + +test("deletes position with zero liquidity", () => { + resetFixtures(); + createTestPosition(); + + // decrease by 1 (full amount) + handleDecreaseLiquidity(createDecreaseLiquidityEvent(ONE_GNO)); + + assert.notInStore("ConcentratedLiquidityPosition", TOKEN_ID.toString()); + + // also removed from pair.positions + assert.fieldEquals( + "ConcentratedLiquidityPair", + PAIR_ADDRESS.toHexString(), + "positions", + "[]" + ); +}); + +test("updates vote weights when transferring a position", () => { + resetFixtures(); + createTestPosition(); + + handleTransfer(createTransferEvent(USER2_ADDRESS)); + + // user 1 has zero vote weight and is deleted + assert.notInStore("User", USER1_ADDRESS.toString()); + + // user 2 got 1 GNO vote weight + assert.fieldEquals( + "User", + USER2_ADDRESS.toHexString(), + "voteWeight", + ONE_GNO.toString() + ); +}); + +function createIncreaseLiquidityEvent(liquidity: BigInt): IncreaseLiquidity { + const mockEvent = newMockEvent(); + + mockEvent.parameters = new Array(); + mockEvent.parameters.push( + new ethereum.EventParam( + "tokenId", + ethereum.Value.fromUnsignedBigInt(TOKEN_ID) + ) + ); + mockEvent.parameters.push( + new ethereum.EventParam( + "liquidity", + ethereum.Value.fromUnsignedBigInt(liquidity) + ) + ); + + return new IncreaseLiquidity( + NONFUNGIBLE_POSITION_MANAGER_ADDRESS, + mockEvent.logIndex, + mockEvent.transactionLogIndex, + mockEvent.logType, + mockEvent.block, + mockEvent.transaction, + mockEvent.parameters + ); +} + +function createDecreaseLiquidityEvent(liquidity: BigInt): DecreaseLiquidity { + const mockEvent = newMockEvent(); + + mockEvent.parameters = new Array(); + mockEvent.parameters.push( + new ethereum.EventParam( + "tokenId", + ethereum.Value.fromUnsignedBigInt(TOKEN_ID) + ) + ); + mockEvent.parameters.push( + new ethereum.EventParam( + "liquidity", + ethereum.Value.fromUnsignedBigInt(liquidity) + ) + ); + + return new DecreaseLiquidity( + NONFUNGIBLE_POSITION_MANAGER_ADDRESS, + mockEvent.logIndex, + mockEvent.transactionLogIndex, + mockEvent.logType, + mockEvent.block, + mockEvent.transaction, + mockEvent.parameters + ); +} + +function createTransferEvent(to: Address): Transfer { + const mockEvent = newMockEvent(); + + mockEvent.parameters = new Array(); + + mockEvent.parameters.push( + new ethereum.EventParam("from", ethereum.Value.fromAddress(USER1_ADDRESS)) + ); + mockEvent.parameters.push( + new ethereum.EventParam("to", ethereum.Value.fromAddress(to)) + ); + mockEvent.parameters.push( + new ethereum.EventParam( + "tokenId", + ethereum.Value.fromUnsignedBigInt(TOKEN_ID) + ) + ); + + return new Transfer( + NONFUNGIBLE_POSITION_MANAGER_ADDRESS, + mockEvent.logIndex, + mockEvent.transactionLogIndex, + mockEvent.logType, + mockEvent.block, + mockEvent.transaction, + mockEvent.parameters + ); +} diff --git a/tests/uniswapV3/voteWeight.test.ts b/tests/uniswapV3/voteWeight.test.ts new file mode 100644 index 0000000..08bdc07 --- /dev/null +++ b/tests/uniswapV3/voteWeight.test.ts @@ -0,0 +1,67 @@ +import { BigDecimal, BigInt } from "@graphprotocol/graph-ts"; +import { assert, test } from "matchstick-as"; +import { ConcentratedLiquidityPosition } from "../../generated/schema"; +import { + getToken0Balance, + getToken1Balance, +} from "../../src/uniswapV3/voteWeight"; + +test("correctly calculates balances of first token when price is in the range", () => { + const position = new ConcentratedLiquidityPosition("218573"); + position.liquidity = BigInt.fromString("62899636745155889642835"); + position.lowerTick = BigInt.fromString("-22080"); + position.upperTick = BigInt.fromString("-13920"); + const result = getToken0Balance( + position, + BigDecimal.fromString("0.3341933625038068863626110801625951") + ); + assert.bigIntEquals(BigInt.fromString("62059024890327950407709"), result); +}); + +test("it correctly calculates first token balance when price is lower than the range", () => { + const position = new ConcentratedLiquidityPosition("218573"); + position.liquidity = BigInt.fromString("62899636745155889642835"); + position.lowerTick = BigInt.fromString("-22080"); + position.upperTick = BigInt.fromString("-13920"); + const result = getToken0Balance(position, BigDecimal.fromString("0.1")); + assert.bigIntEquals(BigInt.fromString("63553559125093023476285"), result); +}); + +test("it correctly calculates first token balance when price is higher than the range", () => { + const position = new ConcentratedLiquidityPosition("218573"); + position.liquidity = BigInt.fromString("62899636745155889642835"); + position.lowerTick = BigInt.fromString("-22080"); + position.upperTick = BigInt.fromString("-13920"); + const result = getToken0Balance(position, BigDecimal.fromString("0.6")); + assert.bigIntEquals(BigInt.fromString("0"), result); +}); + +test("correctly calculates balances of second token when price is within bounds", () => { + const position = new ConcentratedLiquidityPosition("218573"); + position.liquidity = BigInt.fromString("62899636745155889642835"); + position.lowerTick = BigInt.fromString("-22080"); + position.upperTick = BigInt.fromString("-13920"); + const result = getToken1Balance( + position, + BigDecimal.fromString("0.3341933625038068863626110801625951") + ); + assert.bigIntEquals(BigInt.fromString("165602371265231992269"), result); +}); + +test("it correctly calculates second token balance when price is lower than the range", () => { + const position = new ConcentratedLiquidityPosition("218573"); + position.liquidity = BigInt.fromString("62899636745155889642835"); + position.lowerTick = BigInt.fromString("-22080"); + position.upperTick = BigInt.fromString("-13920"); + const result = getToken1Balance(position, BigDecimal.fromString("0.1")); + assert.bigIntEquals(BigInt.fromString("0"), result); +}); + +test("it correctly calculates second token balance when price is higher than the range", () => { + const position = new ConcentratedLiquidityPosition("218573"); + position.liquidity = BigInt.fromString("62899636745155889642835"); + position.lowerTick = BigInt.fromString("-22080"); + position.upperTick = BigInt.fromString("-13920"); + const result = getToken1Balance(position, BigDecimal.fromString("0.6")); + assert.bigIntEquals(BigInt.fromString("10506278125357606316290"), result); +}); diff --git a/packages/subgraph-gnosis-chain/tsconfig.json b/tsconfig.json similarity index 100% rename from packages/subgraph-gnosis-chain/tsconfig.json rename to tsconfig.json diff --git a/packages/subgraph-base/yarn.lock b/yarn.lock similarity index 98% rename from packages/subgraph-base/yarn.lock rename to yarn.lock index cae2b19..c01bd90 100644 --- a/packages/subgraph-base/yarn.lock +++ b/yarn.lock @@ -24,9 +24,9 @@ js-tokens "^4.0.0" "@babel/runtime@^7.9.2": - version "7.17.7" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.17.7.tgz#a5f3328dc41ff39d803f311cfe17703418cf9825" - integrity sha512-L6rvG9GDxaLgFjg41K+5Yv9OMrU98sWe+Ykmc6FDJW/+vYZMhdOMKkISgzptMaERHvS2Y2lw9MDRm2gHhlQQoA== + version "7.17.8" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.17.8.tgz#3e56e4aff81befa55ac3ac6a0967349fd1c5bca2" + integrity sha512-dQpEpK0O9o6lj6oPu0gRDbbnk+4LeHlNcBpspf6Olzt3GIX4P1lWF1gS+pHLDFlaJvbR6q7jCfQ08zA4QJBnmA== dependencies: regenerator-runtime "^0.13.4" @@ -97,9 +97,9 @@ bn.js "^4.11.9" "@ethersproject/bytes@^5.0.4", "@ethersproject/bytes@^5.6.0": - version "5.6.0" - resolved "https://registry.yarnpkg.com/@ethersproject/bytes/-/bytes-5.6.0.tgz#81652f2a0e04533575befadce555213c11d8aa20" - integrity sha512-3hJPlYemb9V4VLfJF5BfN0+55vltPZSHU3QKUyP9M3Y2TcajbiRrz65UG+xVHOzBereB1b9mn7r12o177xgN7w== + version "5.6.1" + resolved "https://registry.yarnpkg.com/@ethersproject/bytes/-/bytes-5.6.1.tgz#24f916e411f82a8a60412344bf4a813b917eefe7" + integrity sha512-NwQt7cKn5+ZE4uDn+X5RAXLp46E1chXoaMmrxAyA0rblpxz8t58lVkrHXoRIn0lz1joQElQ8410GqhTqMOwc6g== dependencies: "@ethersproject/logger" "^5.6.0" @@ -138,9 +138,9 @@ integrity sha512-BiBWllUROH9w+P21RzoxJKzqoqpkyM1pRnEKG69bulE9TSQD8SAIvTQqIMZmmCO8pUNkgLP1wndX1gKghSpBmg== "@ethersproject/networks@^5.6.0": - version "5.6.0" - resolved "https://registry.yarnpkg.com/@ethersproject/networks/-/networks-5.6.0.tgz#486d03fff29b4b6b5414d47a232ded09fe10de5e" - integrity sha512-DaVzgyThzHgSDLuURhvkp4oviGoGe9iTZW4jMEORHDRCgSZ9K9THGFKqL+qGXqPAYLEgZTf5z2w56mRrPR1MjQ== + version "5.6.1" + resolved "https://registry.yarnpkg.com/@ethersproject/networks/-/networks-5.6.1.tgz#7a21ed1f83e86121737b16841961ec99ccf5c9c7" + integrity sha512-b2rrupf3kCTcc3jr9xOWBuHylSFtbpJf79Ga7QR98ienU2UqGimPGEsYMgbI29KHJfA5Us89XwGVmxrlxmSrMg== dependencies: "@ethersproject/logger" "^5.6.0" @@ -206,10 +206,10 @@ "@ethersproject/properties" "^5.6.0" "@ethersproject/strings" "^5.6.0" -"@graphprotocol/graph-cli@0.28.0": - version "0.28.0" - resolved "https://registry.yarnpkg.com/@graphprotocol/graph-cli/-/graph-cli-0.28.0.tgz#7dbd5fd59f30b0c547c23bb4180a4559251e0afa" - integrity sha512-a6MLYosEwHEkLzXyuS2IRcB4mp/v2Qtndv5/H8aR6f1f1YbQXd8YfGRIkxl6eZCMDf319nm98wp8Vo+xunYB0w== +"@graphprotocol/graph-cli@0.29.0": + version "0.29.0" + resolved "https://registry.yarnpkg.com/@graphprotocol/graph-cli/-/graph-cli-0.29.0.tgz#bf723ea95736462684eca8a816934800aa467148" + integrity sha512-bO7dVqVfPXwtXqTHO8NHyWafJQ+Umdom5DrXXlWbSUoZYHpNQ+gIPQM91kLxY9JouL/lrSu79zRsC0+ynlRhdA== dependencies: assemblyscript "0.19.10" binary-install-raw "0.0.13" @@ -289,14 +289,14 @@ "@types/node" "*" "@types/lodash@^4.14.139": - version "4.14.180" - resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.180.tgz#4ab7c9ddfc92ec4a887886483bc14c79fb380670" - integrity sha512-XOKXa1KIxtNXgASAnwj7cnttJxS4fksBRywK/9LzRV5YxrF80BXZIGeQSuoESQ/VkUj30Ae0+YcuHc15wJCB2g== + version "4.14.181" + resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.181.tgz#d1d3740c379fda17ab175165ba04e2d03389385d" + integrity sha512-n3tyKthHJbkiWhDZs3DkhkCzt2MexYHXlX0td5iMplyfwketaOeKboEVBqzceH7juqvEg3q5oUoBFxSLu7zFag== "@types/node@*": - version "17.0.21" - resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.21.tgz#864b987c0c68d07b4345845c3e63b75edd143644" - integrity sha512-DBZCJbhII3r90XbQxI8Y9IjjiiOGlZ0Hr32omXIZvwwZ7p4DMMXGrKXVyPfuoBOri9XNtL0UK69jYIBIsRX3QQ== + version "17.0.23" + resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.23.tgz#3b41a6e643589ac6442bdbd7a4a3ded62f33f7da" + integrity sha512-UxDxWn7dl97rKVeVS61vErvw086aCYhDLyvRQZ5Rk65rZKepaFdm53GeqXaKBuOhED4e9uWq34IC3TdSdJJ2Gw== "@types/node@^10.0.3": version "10.17.60" @@ -381,9 +381,9 @@ ansi-colors@^3.2.1: integrity sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA== ansi-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" - integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= + version "3.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.1.tgz#123d6479e92ad45ad897d4054e3c7ca7db4944e1" + integrity sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw== ansi-regex@^5.0.1: version "5.0.1" @@ -607,9 +607,9 @@ bl@^4.0.3: readable-stream "^3.4.0" blakejs@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/blakejs/-/blakejs-1.1.1.tgz#bf313053978b2cd4c444a48795710be05c785702" - integrity sha512-bLG6PHOCZJKNshTjGRBvET0vTciwQE6zFKOKKXPDJfwFBd4Ac0yBfPZqcGvGJap50l7ktvlpFqc2jGVaUgbJgg== + version "1.2.1" + resolved "https://registry.yarnpkg.com/blakejs/-/blakejs-1.2.1.tgz#5057e4206eadb4a97f7c0b6e197a505042fc3814" + integrity sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ== bn.js@4.11.6: version "4.11.6" @@ -1006,9 +1006,9 @@ debug@^3.2.6: ms "^2.1.1" debug@^4.1.0: - version "4.3.3" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.3.tgz#04266e0b70a98d4462e6e288e38259213332b664" - integrity sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q== + version "4.3.4" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" + integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== dependencies: ms "2.1.2" @@ -1411,9 +1411,9 @@ glob@^7.1.3: once "^1.3.0" path-is-absolute "^1.0.0" -"gluegun@git+https://github.com/edgeandnode/gluegun.git#v4.3.1-pin-colors-dep": +"gluegun@https://github.com/edgeandnode/gluegun#v4.3.1-pin-colors-dep": version "4.3.1" - resolved "git+https://github.com/edgeandnode/gluegun.git#b34b9003d7bf556836da41b57ef36eb21570620a" + resolved "https://github.com/edgeandnode/gluegun#b34b9003d7bf556836da41b57ef36eb21570620a" dependencies: apisauce "^1.0.1" app-module-path "^2.2.0" @@ -2167,10 +2167,10 @@ mafmt@^7.0.0: dependencies: multiaddr "^7.3.0" -matchstick-as@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/matchstick-as/-/matchstick-as-0.4.0.tgz#7456c2f20abee6d12366b65f4216385a9ef62a50" - integrity sha512-XkWoXQWUg1ms8DaDMkl2M95woGPB89f7aysjwDNst/x+G9FV48dxcAKSwilJ1BVGV3MqU7HfuKGHxegSsuxQxQ== +matchstick-as@^0.4.1: + version "0.4.2" + resolved "https://registry.yarnpkg.com/matchstick-as/-/matchstick-as-0.4.2.tgz#d9b20af5890a1c0191a2b88936a1296d8113a90b" + integrity sha512-LbLWA9DLMgus/GIsT7fHxP9cdb/oLQFrjpj2dAcHd64X4wxrVs2VIyxoNlha6h+9lQWHBmdT8042Oi+/wh/idg== dependencies: "@graphprotocol/graph-ts" "^0.24.1" assemblyscript "^0.19.20" @@ -2224,10 +2224,10 @@ minimatch@^3.0.2, minimatch@^3.0.4: dependencies: brace-expansion "^1.1.7" -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== +minimist@^1.2.0, minimist@^1.2.6: + version "1.2.6" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44" + integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q== minipass@^3.0.0: version "3.1.6" @@ -2245,11 +2245,11 @@ minizlib@^2.1.1: yallist "^4.0.0" mkdirp@^0.5.1: - version "0.5.5" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" - integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== + version "0.5.6" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" + integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== dependencies: - minimist "^1.2.5" + minimist "^1.2.6" mkdirp@^1.0.3: version "1.0.4"