cic-internal-integration/apps/cic-eth/tests/testdata/bancor/ConverterRegistryData.json

17181 lines
746 KiB
JSON

{
"contractName": "ConverterRegistryData",
"abi": [
{
"inputs": [
{
"internalType": "contract IContractRegistry",
"name": "_registry",
"type": "address"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "_prevOwner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "_newOwner",
"type": "address"
}
],
"name": "OwnerUpdate",
"type": "event"
},
{
"inputs": [],
"name": "acceptOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "newOwner",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function",
"constant": true
},
{
"inputs": [],
"name": "onlyOwnerCanUpdateRegistry",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function",
"constant": true
},
{
"inputs": [],
"name": "owner",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function",
"constant": true
},
{
"inputs": [],
"name": "prevRegistry",
"outputs": [
{
"internalType": "contract IContractRegistry",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function",
"constant": true
},
{
"inputs": [],
"name": "registry",
"outputs": [
{
"internalType": "contract IContractRegistry",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function",
"constant": true
},
{
"inputs": [],
"name": "restoreRegistry",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bool",
"name": "_onlyOwnerCanUpdateRegistry",
"type": "bool"
}
],
"name": "restrictRegistryUpdate",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_newOwner",
"type": "address"
}
],
"name": "transferOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "updateRegistry",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "contract IConverterAnchor",
"name": "_anchor",
"type": "address"
}
],
"name": "addSmartToken",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "contract IConverterAnchor",
"name": "_anchor",
"type": "address"
}
],
"name": "removeSmartToken",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "contract IConverterAnchor",
"name": "_liquidityPoolAnchor",
"type": "address"
}
],
"name": "addLiquidityPool",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "contract IConverterAnchor",
"name": "_liquidityPoolAnchor",
"type": "address"
}
],
"name": "removeLiquidityPool",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "contract IERC20Token",
"name": "_convertibleToken",
"type": "address"
},
{
"internalType": "contract IConverterAnchor",
"name": "_anchor",
"type": "address"
}
],
"name": "addConvertibleToken",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "contract IERC20Token",
"name": "_convertibleToken",
"type": "address"
},
{
"internalType": "contract IConverterAnchor",
"name": "_anchor",
"type": "address"
}
],
"name": "removeConvertibleToken",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "getSmartTokenCount",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function",
"constant": true
},
{
"inputs": [],
"name": "getSmartTokens",
"outputs": [
{
"internalType": "address[]",
"name": "",
"type": "address[]"
}
],
"stateMutability": "view",
"type": "function",
"constant": true
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_index",
"type": "uint256"
}
],
"name": "getSmartToken",
"outputs": [
{
"internalType": "contract IConverterAnchor",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function",
"constant": true
},
{
"inputs": [
{
"internalType": "address",
"name": "_value",
"type": "address"
}
],
"name": "isSmartToken",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function",
"constant": true
},
{
"inputs": [],
"name": "getLiquidityPoolCount",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function",
"constant": true
},
{
"inputs": [],
"name": "getLiquidityPools",
"outputs": [
{
"internalType": "address[]",
"name": "",
"type": "address[]"
}
],
"stateMutability": "view",
"type": "function",
"constant": true
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_index",
"type": "uint256"
}
],
"name": "getLiquidityPool",
"outputs": [
{
"internalType": "contract IConverterAnchor",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function",
"constant": true
},
{
"inputs": [
{
"internalType": "address",
"name": "_value",
"type": "address"
}
],
"name": "isLiquidityPool",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function",
"constant": true
},
{
"inputs": [],
"name": "getConvertibleTokenCount",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function",
"constant": true
},
{
"inputs": [],
"name": "getConvertibleTokens",
"outputs": [
{
"internalType": "address[]",
"name": "",
"type": "address[]"
}
],
"stateMutability": "view",
"type": "function",
"constant": true
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_index",
"type": "uint256"
}
],
"name": "getConvertibleToken",
"outputs": [
{
"internalType": "contract IERC20Token",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function",
"constant": true
},
{
"inputs": [
{
"internalType": "address",
"name": "_value",
"type": "address"
}
],
"name": "isConvertibleToken",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function",
"constant": true
},
{
"inputs": [
{
"internalType": "contract IERC20Token",
"name": "_convertibleToken",
"type": "address"
}
],
"name": "getConvertibleTokenSmartTokenCount",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function",
"constant": true
},
{
"inputs": [
{
"internalType": "contract IERC20Token",
"name": "_convertibleToken",
"type": "address"
}
],
"name": "getConvertibleTokenSmartTokens",
"outputs": [
{
"internalType": "address[]",
"name": "",
"type": "address[]"
}
],
"stateMutability": "view",
"type": "function",
"constant": true
},
{
"inputs": [
{
"internalType": "contract IERC20Token",
"name": "_convertibleToken",
"type": "address"
},
{
"internalType": "uint256",
"name": "_index",
"type": "uint256"
}
],
"name": "getConvertibleTokenSmartToken",
"outputs": [
{
"internalType": "contract IConverterAnchor",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function",
"constant": true
},
{
"inputs": [
{
"internalType": "contract IERC20Token",
"name": "_convertibleToken",
"type": "address"
},
{
"internalType": "address",
"name": "_value",
"type": "address"
}
],
"name": "isConvertibleTokenSmartToken",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function",
"constant": true
}
],
"metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IContractRegistry\",\"name\":\"_registry\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_prevOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_newOwner\",\"type\":\"address\"}],\"name\":\"OwnerUpdate\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"acceptOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20Token\",\"name\":\"_convertibleToken\",\"type\":\"address\"},{\"internalType\":\"contract IConverterAnchor\",\"name\":\"_anchor\",\"type\":\"address\"}],\"name\":\"addConvertibleToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IConverterAnchor\",\"name\":\"_liquidityPoolAnchor\",\"type\":\"address\"}],\"name\":\"addLiquidityPool\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IConverterAnchor\",\"name\":\"_anchor\",\"type\":\"address\"}],\"name\":\"addSmartToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"getConvertibleToken\",\"outputs\":[{\"internalType\":\"contract IERC20Token\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getConvertibleTokenCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20Token\",\"name\":\"_convertibleToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"getConvertibleTokenSmartToken\",\"outputs\":[{\"internalType\":\"contract IConverterAnchor\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20Token\",\"name\":\"_convertibleToken\",\"type\":\"address\"}],\"name\":\"getConvertibleTokenSmartTokenCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20Token\",\"name\":\"_convertibleToken\",\"type\":\"address\"}],\"name\":\"getConvertibleTokenSmartTokens\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getConvertibleTokens\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"getLiquidityPool\",\"outputs\":[{\"internalType\":\"contract IConverterAnchor\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getLiquidityPoolCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getLiquidityPools\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"getSmartToken\",\"outputs\":[{\"internalType\":\"contract IConverterAnchor\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getSmartTokenCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getSmartTokens\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_value\",\"type\":\"address\"}],\"name\":\"isConvertibleToken\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20Token\",\"name\":\"_convertibleToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_value\",\"type\":\"address\"}],\"name\":\"isConvertibleTokenSmartToken\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_value\",\"type\":\"address\"}],\"name\":\"isLiquidityPool\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_value\",\"type\":\"address\"}],\"name\":\"isSmartToken\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"newOwner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"onlyOwnerCanUpdateRegistry\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"prevRegistry\",\"outputs\":[{\"internalType\":\"contract IContractRegistry\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"registry\",\"outputs\":[{\"internalType\":\"contract IContractRegistry\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20Token\",\"name\":\"_convertibleToken\",\"type\":\"address\"},{\"internalType\":\"contract IConverterAnchor\",\"name\":\"_anchor\",\"type\":\"address\"}],\"name\":\"removeConvertibleToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IConverterAnchor\",\"name\":\"_liquidityPoolAnchor\",\"type\":\"address\"}],\"name\":\"removeLiquidityPool\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IConverterAnchor\",\"name\":\"_anchor\",\"type\":\"address\"}],\"name\":\"removeSmartToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"restoreRegistry\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"_onlyOwnerCanUpdateRegistry\",\"type\":\"bool\"}],\"name\":\"restrictRegistryUpdate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"updateRegistry\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"The ConverterRegistryData contract is an integral part of the converter registry as it serves as the database contract that holds all registry data. The registry is separated into two different contracts for upgradability - the data contract is harder to upgrade as it requires migrating all registry data into a new contract, while the registry contract itself can be easily upgraded. For that same reason, the data contract is simple and contains no logic beyond the basic data access utilities that it exposes.\",\"kind\":\"dev\",\"methods\":{\"acceptOwnership()\":{\"details\":\"used by a new owner to accept an ownership transfer\"},\"addConvertibleToken(address,address)\":{\"details\":\"adds a convertible token\",\"params\":{\"_anchor\":\"associated smart token\",\"_convertibleToken\":\"convertible token\"}},\"addLiquidityPool(address)\":{\"details\":\"adds a liquidity pool\",\"params\":{\"_liquidityPoolAnchor\":\"liquidity pool\"}},\"addSmartToken(address)\":{\"details\":\"adds a smart token\",\"params\":{\"_anchor\":\"smart token\"}},\"constructor\":{\"details\":\"initializes a new ConverterRegistryData instance\",\"params\":{\"_registry\":\"address of a contract registry contract\"}},\"getConvertibleToken(uint256)\":{\"details\":\"returns the convertible token at a given index\",\"params\":{\"_index\":\"index\"},\"returns\":{\"_0\":\"convertible token at the given index\"}},\"getConvertibleTokenCount()\":{\"details\":\"returns the number of convertible tokens\",\"returns\":{\"_0\":\"number of convertible tokens\"}},\"getConvertibleTokenSmartToken(address,uint256)\":{\"details\":\"returns the smart token associated with a given convertible token at a given index\",\"params\":{\"_index\":\"index\"},\"returns\":{\"_0\":\"smart token associated with the given convertible token at the given index\"}},\"getConvertibleTokenSmartTokenCount(address)\":{\"details\":\"returns the number of smart tokens associated with a given convertible token\",\"params\":{\"_convertibleToken\":\"convertible token\"},\"returns\":{\"_0\":\"number of smart tokens associated with the given convertible token\"}},\"getConvertibleTokenSmartTokens(address)\":{\"details\":\"returns the list of smart tokens associated with a given convertible token\",\"params\":{\"_convertibleToken\":\"convertible token\"},\"returns\":{\"_0\":\"list of smart tokens associated with the given convertible token\"}},\"getConvertibleTokens()\":{\"details\":\"returns the list of convertible tokens\",\"returns\":{\"_0\":\"list of convertible tokens\"}},\"getLiquidityPool(uint256)\":{\"details\":\"returns the liquidity pool at a given index\",\"params\":{\"_index\":\"index\"},\"returns\":{\"_0\":\"liquidity pool at the given index\"}},\"getLiquidityPoolCount()\":{\"details\":\"returns the number of liquidity pools\",\"returns\":{\"_0\":\"number of liquidity pools\"}},\"getLiquidityPools()\":{\"details\":\"returns the list of liquidity pools\",\"returns\":{\"_0\":\"list of liquidity pools\"}},\"getSmartToken(uint256)\":{\"details\":\"returns the smart token at a given index\",\"params\":{\"_index\":\"index\"},\"returns\":{\"_0\":\"smart token at the given index\"}},\"getSmartTokenCount()\":{\"details\":\"returns the number of smart tokens\",\"returns\":{\"_0\":\"number of smart tokens\"}},\"getSmartTokens()\":{\"details\":\"returns the list of smart tokens\",\"returns\":{\"_0\":\"list of smart tokens\"}},\"isConvertibleToken(address)\":{\"details\":\"checks whether or not a given value is a convertible token\",\"params\":{\"_value\":\"value\"},\"returns\":{\"_0\":\"true if the given value is a convertible token, false if not\"}},\"isConvertibleTokenSmartToken(address,address)\":{\"details\":\"checks whether or not a given value is a smart token of a given convertible token\",\"params\":{\"_convertibleToken\":\"convertible token\",\"_value\":\"value\"},\"returns\":{\"_0\":\"true if the given value is a smart token of the given convertible token, false it not\"}},\"isLiquidityPool(address)\":{\"details\":\"checks whether or not a given value is a liquidity pool\",\"params\":{\"_value\":\"value\"},\"returns\":{\"_0\":\"true if the given value is a liquidity pool, false if not\"}},\"isSmartToken(address)\":{\"details\":\"checks whether or not a given value is a smart token\",\"params\":{\"_value\":\"value\"},\"returns\":{\"_0\":\"true if the given value is a smart token, false if not\"}},\"removeConvertibleToken(address,address)\":{\"details\":\"removes a convertible token\",\"params\":{\"_anchor\":\"associated smart token\",\"_convertibleToken\":\"convertible token\"}},\"removeLiquidityPool(address)\":{\"details\":\"removes a liquidity pool\",\"params\":{\"_liquidityPoolAnchor\":\"liquidity pool\"}},\"removeSmartToken(address)\":{\"details\":\"removes a smart token\",\"params\":{\"_anchor\":\"smart token\"}},\"restoreRegistry()\":{\"details\":\"restores the previous contract-registry\"},\"restrictRegistryUpdate(bool)\":{\"details\":\"restricts the permission to update the contract-registry\",\"params\":{\"_onlyOwnerCanUpdateRegistry\":\"indicates whether or not permission is restricted to owner only\"}},\"transferOwnership(address)\":{\"details\":\"allows transferring the contract ownership the new owner still needs to accept the transfer can only be called by the contract owner\",\"params\":{\"_newOwner\":\"new contract owner\"}},\"updateRegistry()\":{\"details\":\"updates to the new contract-registry\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/converter/ConverterRegistryData.sol\":\"ConverterRegistryData\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/converter/ConverterRegistryData.sol\":{\"keccak256\":\"0x1cd40757c5d9316221a12e4f2a73593b3d01fd45d719534e2ec5d78f60ac92f0\",\"license\":\"SEE LICENSE IN LICENSE\",\"urls\":[\"bzz-raw://ed83c89f0284b0868364f0788434e963f7e98c86ce982ff747882981aff9e31d\",\"dweb:/ipfs/QmVC8zcAfdZ5EG1QNpvvGnm2xMVAzsJjiBhHCJHAumpA8n\"]},\"/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/converter/interfaces/IConverterAnchor.sol\":{\"keccak256\":\"0x9448cdbe90293fb5c1a0808b77af8754a1025b59c45f432eee01f659361a6115\",\"license\":\"SEE LICENSE IN LICENSE\",\"urls\":[\"bzz-raw://1ef2bb2e1543c9324daf7f3fd086a57efb45b89f3d62b9d7a9fc78c138d24dbc\",\"dweb:/ipfs/QmVcXDib3K6xYJMBNxawmo4krJGiDfxb5oL64Lc3pi14XK\"]},\"/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/converter/interfaces/IConverterRegistryData.sol\":{\"keccak256\":\"0xc2b8e75bf4d69b34f9687d90d8eb31e8462bfcf25565f5ca399151648624c73a\",\"license\":\"SEE LICENSE IN LICENSE\",\"urls\":[\"bzz-raw://e3825b1ccce31117c984a7605376ec2e6f18b15cdd61e9d5624667332a935dd7\",\"dweb:/ipfs/QmeRHtWU1oZJtL8UxJQMbwmTyMhf8Z3DJz6XubFxbP5xQx\"]},\"/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/token/interfaces/IERC20Token.sol\":{\"keccak256\":\"0xe6f988c3156e88258474526a541d5a42b6a9adae98b04177a059d9f723bc82cd\",\"license\":\"SEE LICENSE IN LICENSE\",\"urls\":[\"bzz-raw://9a6eb77a5b9ce70995a11a6e48ac3985a4c70896fe5fe04d46146ad7c1c83ea3\",\"dweb:/ipfs/QmYvGSveZFG51tghwkVuu6eK9Jy8frHpfLxHTMyvNZN461\"]},\"/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/utility/ContractRegistryClient.sol\":{\"keccak256\":\"0x74caf88eff1cb113ad8277df9ba7933a6f1e0deea8fd1855157def3be833b859\",\"license\":\"SEE LICENSE IN LICENSE\",\"urls\":[\"bzz-raw://c7793c9f245736cd8413bc8c4b5c40b67949cbee32289a16d29c83cf59396ad6\",\"dweb:/ipfs/QmWony7b1buUrGnE32gjLAnSwkBYMrJ68vUcCwDMmp3MbJ\"]},\"/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/utility/Owned.sol\":{\"keccak256\":\"0x6ef69d9dcc80a8a36d5eb37783375cd5e4831c6d20c723fa6f6b6a06c0aeb53d\",\"license\":\"SEE LICENSE IN LICENSE\",\"urls\":[\"bzz-raw://5a5d087e2c5b47739615ef22e1f29749de44b43c9a37cfae32b3dfc498a258c4\",\"dweb:/ipfs/Qmd1mXKEQbmBxqHk326LGVzNoayXsam8gZNecknnYpBnyh\"]},\"/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/utility/Utils.sol\":{\"keccak256\":\"0x073efa69fcd6b5e60f841b28b366d63b62ff48ab12a06ce3f5a7f41afd6ce885\",\"license\":\"SEE LICENSE IN LICENSE\",\"urls\":[\"bzz-raw://e8b8ecb2d29197ca77f0ed98f728ace54e6edcfdf5cd1194ae22701607eaf608\",\"dweb:/ipfs/QmcsR6Q35Hurh3TrPkYAboicz9bQQoGCWmZLzUCDyhotH8\"]},\"/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/utility/interfaces/IContractRegistry.sol\":{\"keccak256\":\"0x3551889a83738b621c29ed66f1ecb6a843cca4217e54c9357198559b9cc92259\",\"license\":\"SEE LICENSE IN LICENSE\",\"urls\":[\"bzz-raw://231a59c8f2665adeda8c7e6930832409c9b991fd27ad84b3a24335e7bf269bbe\",\"dweb:/ipfs/QmeJJbn1EAUbZenruTEdJAnwUn3dxsVNeJvxPe81qKEGqL\"]},\"/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/utility/interfaces/IOwned.sol\":{\"keccak256\":\"0xc60a9d197abc28c1906ed4d18b59caa0242db754a0e1f67af6e6277593530dae\",\"license\":\"SEE LICENSE IN LICENSE\",\"urls\":[\"bzz-raw://a8c6f3e6525a81a5165ccbf04f73f6c389c14b74135d11a7b5f70b1c9bdac75c\",\"dweb:/ipfs/QmaPu4Z7yUPc9sMADmoTZVY6AnyDSYHtNNCx3mm4VkJwhP\"]},\"/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/utility/interfaces/ITokenHolder.sol\":{\"keccak256\":\"0x9ccb8ab04d0bd874ba7aae5277e60f35c36918922649a0596bf3664ed257bfe2\",\"license\":\"SEE LICENSE IN LICENSE\",\"urls\":[\"bzz-raw://b65e6db19cd244c9f3545695de5fd7573711c49fb306631ddbf0e1d2fa9fb589\",\"dweb:/ipfs/QmZeu5KYVMTbTx7h2BVUq52fpwL9Q44AUfzeVksucDohgf\"]}},\"version\":1}",
"bytecode": "0x608060405234801561001057600080fd5b506040516113c43803806113c48339818101604052602081101561003357600080fd5b5051600080546001600160a01b03191633179055808061005281610083565b50600280546001600160a01b039092166001600160a01b0319928316811790915560038054909216179055506100e1565b6001600160a01b0381166100de576040805162461bcd60e51b815260206004820152601360248201527f4552525f494e56414c49445f4144445245535300000000000000000000000000604482015290519081900360640190fd5b50565b6112d4806100f06000396000f3fe608060405234801561001057600080fd5b50600436106101f05760003560e01c80638da5cb5b1161010f578063d4ee1d90116100a2578063ee6a934c11610071578063ee6a934c14610501578063f2fde38b14610527578063f4fb86c01461054d578063fba8f03114610573576101f0565b8063d4ee1d901461049f578063d6c4b5b2146104a7578063e571049b146104d3578063e85455d7146104db576101f0565b8063a74498aa116100de578063a74498aa1461042e578063ae22107f1461044b578063b4a176d314610471578063ceb9838c14610479576101f0565b80638da5cb5b146103bd5780638de6c3eb146103c5578063a109d214146103eb578063a43d5e9414610408576101f0565b806361cd756e116101875780637a5f0ffd116101565780637a5f0ffd146103885780637b103999146103905780637f45c4c314610398578063865cf194146103a0576101f0565b806361cd756e1461031457806369be478414610338578063725b87861461035257806379ba509714610380576101f0565b80633ab8857c116101c35780633ab8857c146102b85780634123ef60146102de57806349d10b64146103045780635f1b50fe1461030c576101f0565b8063024c7ec7146101f557806304ceaf41146102165780632fe8a6ad1461026e57806336900c111461028a575b600080fd5b6102146004803603602081101561020b57600080fd5b503515156105a1565b005b61021e6105c7565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561025a578181015183820152602001610242565b505050509050019250505060405180910390f35b61027661062c565b604080519115158252519081900360200190f35b610214600480360360408110156102a057600080fd5b506001600160a01b038135811691602001351661063c565b610276600480360360208110156102ce57600080fd5b50356001600160a01b03166106d7565b610276600480360360208110156102f457600080fd5b50356001600160a01b03166106f7565b610214610715565b61021e61091d565b61031c610980565b604080516001600160a01b039092168252519081900360200190f35b61034061098f565b60408051918252519081900360200190f35b6102766004803603604081101561036857600080fd5b506001600160a01b0381358116916020013516610995565b6102146109c7565b610340610a7e565b61031c610a84565b61021e610a93565b61031c600480360360208110156103b657600080fd5b5035610af6565b61031c610b23565b610214600480360360208110156103db57600080fd5b50356001600160a01b0316610b32565b61031c6004803603602081101561040157600080fd5b5035610b59565b6103406004803603602081101561041e57600080fd5b50356001600160a01b0316610b6b565b61031c6004803603602081101561044457600080fd5b5035610b89565b6102146004803603602081101561046157600080fd5b50356001600160a01b0316610b9b565b610214610bbe565b6102146004803603602081101561048f57600080fd5b50356001600160a01b0316610bea565b61031c610c0d565b61031c600480360360408110156104bd57600080fd5b506001600160a01b038135169060200135610c1c565b610340610c5f565b610276600480360360208110156104f157600080fd5b50356001600160a01b0316610c65565b6102146004803603602081101561051757600080fd5b50356001600160a01b0316610c83565b6102146004803603602081101561053d57600080fd5b50356001600160a01b0316610ca6565b61021e6004803603602081101561056357600080fd5b50356001600160a01b0316610d24565b6102146004803603604081101561058957600080fd5b506001600160a01b0381358116916020013516610d9d565b6105a9610ec3565b60038054911515600160a01b0260ff60a01b19909216919091179055565b6060600460000180548060200260200160405190810160405280929190818152602001828054801561062257602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610604575b5050505050905090565b600354600160a01b900460ff1681565b60008051602061127f83398151915261065481610f18565b6001600160a01b038316600090815260096020526040902060018101546106c457600880548083556001810182556000919091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30180546001600160a01b0319166001600160a01b0386161790555b6106d18160010184610f7d565b50505050565b6001600160a01b0316600090815260096020526040902060010154151590565b6001600160a01b031660009081526005602052604090205460ff1690565b6000546001600160a01b03163314806107385750600354600160a01b900460ff16155b61077d576040805162461bcd60e51b815260206004820152601160248201527011549497d050d0d154d4d7d11153925151607a1b604482015290519081900360640190fd5b600061079b6f436f6e7472616374526567697374727960801b611032565b6002549091506001600160a01b038083169116148015906107c457506001600160a01b03811615155b61080c576040805162461bcd60e51b81526020600482015260146024820152734552525f494e56414c49445f524547495354525960601b604482015290519081900360640190fd5b60006001600160a01b0316816001600160a01b031663bb34534c6f436f6e7472616374526567697374727960801b6040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561086e57600080fd5b505afa158015610882573d6000803e3d6000fd5b505050506040513d602081101561089857600080fd5b50516001600160a01b031614156108ed576040805162461bcd60e51b81526020600482015260146024820152734552525f494e56414c49445f524547495354525960601b604482015290519081900360640190fd5b60028054600380546001600160a01b038084166001600160a01b0319928316179092559091169216919091179055565b60606008600001805480602002602001604051908101604052809291908181526020018280548015610622576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610604575050505050905090565b6003546001600160a01b031681565b60085490565b6001600160a01b0391821660009081526009602090815260408083209390941682526002909201909152205460ff1690565b6001546001600160a01b03163314610a1a576040805162461bcd60e51b815260206004820152601160248201527011549497d050d0d154d4d7d11153925151607a1b604482015290519081900360640190fd5b600154600080546040516001600160a01b0393841693909116917f343765429aea5a34b3ff6a3785a98a5abb2597aca87bfbb58632c173d585373a91a360018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b60065490565b6002546001600160a01b031681565b60606006600001805480602002602001604051908101604052809291908181526020018280548015610622576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610604575050505050905090565b600060086000018281548110610b0857fe5b6000918252602090912001546001600160a01b031692915050565b6000546001600160a01b031681565b60008051602061127f833981519152610b4a81610f18565b610b55600483610f7d565b5050565b600060046000018281548110610b0857fe5b6001600160a01b031660009081526009602052604090206001015490565b600060066000018281548110610b0857fe5b60008051602061127f833981519152610bb381610f18565b610b556006836110b0565b610bc6610ec3565b600354600280546001600160a01b0319166001600160a01b03909216919091179055565b60008051602061127f833981519152610c0281610f18565b610b556004836110b0565b6001546001600160a01b031681565b6001600160a01b0382166000908152600960205260408120600101805483908110610c4357fe5b6000918252602090912001546001600160a01b03169392505050565b60045490565b6001600160a01b031660009081526007602052604090205460ff1690565b60008051602061127f833981519152610c9b81610f18565b610b55600683610f7d565b610cae610ec3565b6000546001600160a01b0382811691161415610d02576040805162461bcd60e51b815260206004820152600e60248201526d22a9292fa9a0a6a2afa7aba722a960911b604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038116600090815260096020908152604091829020600101805483518184028101840190945280845260609392830182828015610d9157602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d73575b50505050509050919050565b60008051602061127f833981519152610db581610f18565b6001600160a01b0383166000908152600960205260409020610dda60018201846110b0565b60018101546106d15760088054600091906000198101908110610df957fe5b600091825260208083209091015484546001600160a01b039091168084526009909252604090922082905560088054919350839290918110610e3757fe5b600091825260209091200180546001600160a01b0319166001600160a01b03929092169190911790556008805480610e6b57fe5b60008281526020808220830160001990810180546001600160a01b03191690559092019092556001600160a01b03871682526009905260408120818155906001820181610eb8828261124c565b505050505050505050565b6000546001600160a01b03163314610f16576040805162461bcd60e51b815260206004820152601160248201527011549497d050d0d154d4d7d11153925151607a1b604482015290519081900360640190fd5b565b610f2181611032565b6001600160a01b0316336001600160a01b031614610f7a576040805162461bcd60e51b815260206004820152601160248201527011549497d050d0d154d4d7d11153925151607a1b604482015290519081900360640190fd5b50565b80610f87816111fb565b6001600160a01b03821660009081526001840160205260409020805460ff1615610feb576040805162461bcd60e51b815260206004820152601060248201526f4552525f494e56414c49445f4954454d60801b604482015290519081900360640190fd5b835460018281018290558082018655600095865260209095200180546001600160a01b0319166001600160a01b03949094169390931790925550805460ff19169091179055565b60025460408051632ecd14d360e21b81526004810184905290516000926001600160a01b03169163bb34534c916024808301926020929190829003018186803b15801561107e57600080fd5b505afa158015611092573d6000803e3d6000fd5b505050506040513d60208110156110a857600080fd5b505192915050565b806110ba816111fb565b6001600160a01b03821660009081526001840160205260409020805460ff1661111d576040805162461bcd60e51b815260206004820152601060248201526f4552525f494e56414c49445f4954454d60801b604482015290519081900360640190fd5b83546000908590600019810190811061113257fe5b60009182526020808320909101546001858101546001600160a01b039092168085528982019093526040909320909201829055865490925082918791811061117657fe5b600091825260209091200180546001600160a01b0319166001600160a01b039290921691909117905584548590806111aa57fe5b60008281526020808220830160001990810180546001600160a01b03191690559092019092556001600160a01b039590951681526001958601909452505060408220805460ff191681559092015550565b6001600160a01b038116610f7a576040805162461bcd60e51b81526020600482015260136024820152724552525f494e56414c49445f4144445245535360681b604482015290519081900360640190fd5b5080546000825590600052602060002090810190610f7a91905b8082111561127a5760008155600101611266565b509056fe42616e636f72436f6e7665727465725265676973747279000000000000000000a26469706673582212204a484f67d4c791ea09d72b50c23bff0b3e627810a6c00a1935a071f3ff88796464736f6c634300060c0033",
"deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101f05760003560e01c80638da5cb5b1161010f578063d4ee1d90116100a2578063ee6a934c11610071578063ee6a934c14610501578063f2fde38b14610527578063f4fb86c01461054d578063fba8f03114610573576101f0565b8063d4ee1d901461049f578063d6c4b5b2146104a7578063e571049b146104d3578063e85455d7146104db576101f0565b8063a74498aa116100de578063a74498aa1461042e578063ae22107f1461044b578063b4a176d314610471578063ceb9838c14610479576101f0565b80638da5cb5b146103bd5780638de6c3eb146103c5578063a109d214146103eb578063a43d5e9414610408576101f0565b806361cd756e116101875780637a5f0ffd116101565780637a5f0ffd146103885780637b103999146103905780637f45c4c314610398578063865cf194146103a0576101f0565b806361cd756e1461031457806369be478414610338578063725b87861461035257806379ba509714610380576101f0565b80633ab8857c116101c35780633ab8857c146102b85780634123ef60146102de57806349d10b64146103045780635f1b50fe1461030c576101f0565b8063024c7ec7146101f557806304ceaf41146102165780632fe8a6ad1461026e57806336900c111461028a575b600080fd5b6102146004803603602081101561020b57600080fd5b503515156105a1565b005b61021e6105c7565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561025a578181015183820152602001610242565b505050509050019250505060405180910390f35b61027661062c565b604080519115158252519081900360200190f35b610214600480360360408110156102a057600080fd5b506001600160a01b038135811691602001351661063c565b610276600480360360208110156102ce57600080fd5b50356001600160a01b03166106d7565b610276600480360360208110156102f457600080fd5b50356001600160a01b03166106f7565b610214610715565b61021e61091d565b61031c610980565b604080516001600160a01b039092168252519081900360200190f35b61034061098f565b60408051918252519081900360200190f35b6102766004803603604081101561036857600080fd5b506001600160a01b0381358116916020013516610995565b6102146109c7565b610340610a7e565b61031c610a84565b61021e610a93565b61031c600480360360208110156103b657600080fd5b5035610af6565b61031c610b23565b610214600480360360208110156103db57600080fd5b50356001600160a01b0316610b32565b61031c6004803603602081101561040157600080fd5b5035610b59565b6103406004803603602081101561041e57600080fd5b50356001600160a01b0316610b6b565b61031c6004803603602081101561044457600080fd5b5035610b89565b6102146004803603602081101561046157600080fd5b50356001600160a01b0316610b9b565b610214610bbe565b6102146004803603602081101561048f57600080fd5b50356001600160a01b0316610bea565b61031c610c0d565b61031c600480360360408110156104bd57600080fd5b506001600160a01b038135169060200135610c1c565b610340610c5f565b610276600480360360208110156104f157600080fd5b50356001600160a01b0316610c65565b6102146004803603602081101561051757600080fd5b50356001600160a01b0316610c83565b6102146004803603602081101561053d57600080fd5b50356001600160a01b0316610ca6565b61021e6004803603602081101561056357600080fd5b50356001600160a01b0316610d24565b6102146004803603604081101561058957600080fd5b506001600160a01b0381358116916020013516610d9d565b6105a9610ec3565b60038054911515600160a01b0260ff60a01b19909216919091179055565b6060600460000180548060200260200160405190810160405280929190818152602001828054801561062257602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610604575b5050505050905090565b600354600160a01b900460ff1681565b60008051602061127f83398151915261065481610f18565b6001600160a01b038316600090815260096020526040902060018101546106c457600880548083556001810182556000919091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30180546001600160a01b0319166001600160a01b0386161790555b6106d18160010184610f7d565b50505050565b6001600160a01b0316600090815260096020526040902060010154151590565b6001600160a01b031660009081526005602052604090205460ff1690565b6000546001600160a01b03163314806107385750600354600160a01b900460ff16155b61077d576040805162461bcd60e51b815260206004820152601160248201527011549497d050d0d154d4d7d11153925151607a1b604482015290519081900360640190fd5b600061079b6f436f6e7472616374526567697374727960801b611032565b6002549091506001600160a01b038083169116148015906107c457506001600160a01b03811615155b61080c576040805162461bcd60e51b81526020600482015260146024820152734552525f494e56414c49445f524547495354525960601b604482015290519081900360640190fd5b60006001600160a01b0316816001600160a01b031663bb34534c6f436f6e7472616374526567697374727960801b6040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561086e57600080fd5b505afa158015610882573d6000803e3d6000fd5b505050506040513d602081101561089857600080fd5b50516001600160a01b031614156108ed576040805162461bcd60e51b81526020600482015260146024820152734552525f494e56414c49445f524547495354525960601b604482015290519081900360640190fd5b60028054600380546001600160a01b038084166001600160a01b0319928316179092559091169216919091179055565b60606008600001805480602002602001604051908101604052809291908181526020018280548015610622576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610604575050505050905090565b6003546001600160a01b031681565b60085490565b6001600160a01b0391821660009081526009602090815260408083209390941682526002909201909152205460ff1690565b6001546001600160a01b03163314610a1a576040805162461bcd60e51b815260206004820152601160248201527011549497d050d0d154d4d7d11153925151607a1b604482015290519081900360640190fd5b600154600080546040516001600160a01b0393841693909116917f343765429aea5a34b3ff6a3785a98a5abb2597aca87bfbb58632c173d585373a91a360018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b60065490565b6002546001600160a01b031681565b60606006600001805480602002602001604051908101604052809291908181526020018280548015610622576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610604575050505050905090565b600060086000018281548110610b0857fe5b6000918252602090912001546001600160a01b031692915050565b6000546001600160a01b031681565b60008051602061127f833981519152610b4a81610f18565b610b55600483610f7d565b5050565b600060046000018281548110610b0857fe5b6001600160a01b031660009081526009602052604090206001015490565b600060066000018281548110610b0857fe5b60008051602061127f833981519152610bb381610f18565b610b556006836110b0565b610bc6610ec3565b600354600280546001600160a01b0319166001600160a01b03909216919091179055565b60008051602061127f833981519152610c0281610f18565b610b556004836110b0565b6001546001600160a01b031681565b6001600160a01b0382166000908152600960205260408120600101805483908110610c4357fe5b6000918252602090912001546001600160a01b03169392505050565b60045490565b6001600160a01b031660009081526007602052604090205460ff1690565b60008051602061127f833981519152610c9b81610f18565b610b55600683610f7d565b610cae610ec3565b6000546001600160a01b0382811691161415610d02576040805162461bcd60e51b815260206004820152600e60248201526d22a9292fa9a0a6a2afa7aba722a960911b604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038116600090815260096020908152604091829020600101805483518184028101840190945280845260609392830182828015610d9157602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d73575b50505050509050919050565b60008051602061127f833981519152610db581610f18565b6001600160a01b0383166000908152600960205260409020610dda60018201846110b0565b60018101546106d15760088054600091906000198101908110610df957fe5b600091825260208083209091015484546001600160a01b039091168084526009909252604090922082905560088054919350839290918110610e3757fe5b600091825260209091200180546001600160a01b0319166001600160a01b03929092169190911790556008805480610e6b57fe5b60008281526020808220830160001990810180546001600160a01b03191690559092019092556001600160a01b03871682526009905260408120818155906001820181610eb8828261124c565b505050505050505050565b6000546001600160a01b03163314610f16576040805162461bcd60e51b815260206004820152601160248201527011549497d050d0d154d4d7d11153925151607a1b604482015290519081900360640190fd5b565b610f2181611032565b6001600160a01b0316336001600160a01b031614610f7a576040805162461bcd60e51b815260206004820152601160248201527011549497d050d0d154d4d7d11153925151607a1b604482015290519081900360640190fd5b50565b80610f87816111fb565b6001600160a01b03821660009081526001840160205260409020805460ff1615610feb576040805162461bcd60e51b815260206004820152601060248201526f4552525f494e56414c49445f4954454d60801b604482015290519081900360640190fd5b835460018281018290558082018655600095865260209095200180546001600160a01b0319166001600160a01b03949094169390931790925550805460ff19169091179055565b60025460408051632ecd14d360e21b81526004810184905290516000926001600160a01b03169163bb34534c916024808301926020929190829003018186803b15801561107e57600080fd5b505afa158015611092573d6000803e3d6000fd5b505050506040513d60208110156110a857600080fd5b505192915050565b806110ba816111fb565b6001600160a01b03821660009081526001840160205260409020805460ff1661111d576040805162461bcd60e51b815260206004820152601060248201526f4552525f494e56414c49445f4954454d60801b604482015290519081900360640190fd5b83546000908590600019810190811061113257fe5b60009182526020808320909101546001858101546001600160a01b039092168085528982019093526040909320909201829055865490925082918791811061117657fe5b600091825260209091200180546001600160a01b0319166001600160a01b039290921691909117905584548590806111aa57fe5b60008281526020808220830160001990810180546001600160a01b03191690559092019092556001600160a01b039590951681526001958601909452505060408220805460ff191681559092015550565b6001600160a01b038116610f7a576040805162461bcd60e51b81526020600482015260136024820152724552525f494e56414c49445f4144445245535360681b604482015290519081900360640190fd5b5080546000825590600052602060002090810190610f7a91905b8082111561127a5760008155600101611266565b509056fe42616e636f72436f6e7665727465725265676973747279000000000000000000a26469706673582212204a484f67d4c791ea09d72b50c23bff0b3e627810a6c00a1935a071f3ff88796464736f6c634300060c0033",
"immutableReferences": {},
"sourceMap": "752:10050:11:-:0;;;1441:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1441:90:11;619:5:57;:18;;-1:-1:-1;;;;;;619:18:57;627:10;619:18;;;1441:90:11;;594:23:64;1441:90:11;594:13:64;:23::i;:::-;-1:-1:-1;2122:8:56::1;:39:::0;;-1:-1:-1;;;;;2122:39:56;;::::1;-1:-1:-1::0;;;;;;2122:39:56;;::::1;::::0;::::1;::::0;;;2172:12:::1;:43:::0;;;;::::1;;::::0;;-1:-1:-1;752:10050:11;;692:128:64;-1:-1:-1;;;;;766:22:64;;758:54;;;;;-1:-1:-1;;;758:54:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;692:128;:::o;752:10050:11:-;;;;;;;",
"deployedSourceMap": "752:10050:11:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3655:224:56;;;;;;;;;;;;;;;;-1:-1:-1;3655:224:56;;;;:::i;:::-;;4556:119:11;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1333:38:56;;;:::i;:::-;;;;;;;;;;;;;;;;;;2847:452:11;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;2847:452:11;;;;;;;;;;:::i;7605:162::-;;;;;;;;;;;;;;;;-1:-1:-1;7605:162:11;-1:-1:-1;;;;;7605:162:11;;:::i;5201:133::-;;;;;;;;;;;;;;;;-1:-1:-1;5201:133:11;-1:-1:-1;;;;;5201:133:11;;:::i;2300:925:56:-;;;:::i;6922:131:11:-;;;:::i;1243:37:56:-;;;:::i;:::-;;;;-1:-1:-1;;;;;1243:37:56;;;;;;;;;;;;;;6658:133:11;;;:::i;:::-;;;;;;;;;;;;;;;;9524:226;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;9524:226:11;;;;;;;;;;:::i;1422:217:57:-;;;:::i;5463:127:11:-;;;:::i;1154:33:56:-;;;:::i;5715:125:11:-;;;:::i;7231:160::-;;;;;;;;;;;;;;;;-1:-1:-1;7231:160:11;;:::i;219:29:57:-;;;:::i;1634:149:11:-;;;;;;;;;;;;;;;;-1:-1:-1;1634:149:11;-1:-1:-1;;;;;1634:149:11;;:::i;4841:158::-;;;;;;;;;;;;;;;;-1:-1:-1;4841:158:11;;:::i;8028:212::-;;;;;;;;;;;;;;;;-1:-1:-1;8028:212:11;-1:-1:-1;;;;;8028:212:11;;:::i;6012:164::-;;;;;;;;;;;;;;;;-1:-1:-1;6012:164:11;;:::i;2472:187::-;;;;;;;;;;;;;;;;-1:-1:-1;2472:187:11;-1:-1:-1;;;;;2472:187:11;;:::i;3304:137:56:-;;;:::i;1889:155:11:-;;;;;;;;;;;;;;;;-1:-1:-1;1889:155:11;-1:-1:-1;;;;;1889:155:11;;:::i;255:23:57:-;;;:::i;8959:251:11:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;8959:251:11;;;;;;;;:::i;4316:121::-;;;:::i;6384:139::-;;;;;;;;;;;;;;;;-1:-1:-1;6384:139:11;-1:-1:-1;;;;;6384:139:11;;:::i;2166:181::-;;;;;;;;;;;;;;;;-1:-1:-1;2166:181:11;-1:-1:-1;;;;;2166:181:11;;:::i;1164:167:57:-;;;;;;;;;;;;;;;;-1:-1:-1;1164:167:57;-1:-1:-1;;;;;1164:167:57;;:::i;8497:210:11:-;;;;;;;;;;;;;;;;-1:-1:-1;8497:210:11;-1:-1:-1;;;;;8497:210:11;;:::i;3490:703::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;3490:703:11;;;;;;;;;;:::i;3655:224:56:-;726:12:57;:10;:12::i;:::-;3815:26:56::1;:56:::0;;;::::1;;-1:-1:-1::0;;;3815:56:56::1;-1:-1:-1::0;;;;3815:56:56;;::::1;::::0;;;::::1;::::0;;3655:224::o;4556:119:11:-;4614:16;4650:11;:17;;4643:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4643:24:11;;;;;;;;;;;;;;;;;;;;;;;4556:119;:::o;1333:38:56:-;;;-1:-1:-1;;;1333:38:56;;;;;:::o;2847:452:11:-;-1:-1:-1;;;;;;;;;;;1627:20:56;1633:13;1627:5;:20::i;:::-;-1:-1:-1;;;;;3007:51:11;::::1;2987:17;3007:51:::0;;;:23;:51:::1;::::0;;;;:23:::1;3073:10:::0;::::1;:23:::0;3069:175:::1;;3131:17;:30:::0;;3118:43;;;3176:56:::1;::::0;::::1;::::0;;-1:-1:-1;3176:56:11;;;;;::::1;::::0;;-1:-1:-1;;;;;;3176:56:11::1;-1:-1:-1::0;;;;;3176:56:11;::::1;;::::0;;3069:175:::1;3254:37;3262:4;:10;;3282:7;3254;:37::i;:::-;1658:1:56;2847:452:11::0;;;:::o;7605:162::-;-1:-1:-1;;;;;7705:31:11;7681:4;7705:31;;;:23;:31;;;;;:23;:37;:50;:54;;;7605:162::o;5201:133::-;-1:-1:-1;;;;;5295:25:11;5271:4;5295:25;;;:17;:25;;;;;:31;;;;5201:133::o;2300:925:56:-;2417:5;;-1:-1:-1;;;;;2417:5:56;2403:10;:19;;:50;;-1:-1:-1;2427:26:56;;-1:-1:-1;;;2427:26:56;;;;2426:27;2403:50;2395:80;;;;;-1:-1:-1;;;2395:80:56;;;;;;;;;;;;-1:-1:-1;;;2395:80:56;;;;;;;;;;;;;;;2530:29;2580:28;-1:-1:-1;;;2580:9:56;:28::i;:::-;2721:8;;2530:79;;-1:-1:-1;;;;;;2706:23:56;;;2721:8;;2706:23;;;;:61;;-1:-1:-1;;;;;;2733:34:56;;;;2706:61;2698:94;;;;;-1:-1:-1;;;2698:94:56;;;;;;;;;;;;-1:-1:-1;;;2698:94:56;;;;;;;;;;;;;;;2959:1;-1:-1:-1;;;;;2907:54:56;:11;-1:-1:-1;;;;;2907:21:56;;-1:-1:-1;;;2907:40:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2907:40:56;-1:-1:-1;;;;;2907:54:56;;;2899:87;;;;;-1:-1:-1;;;2899:87:56;;;;;;;;;;;;-1:-1:-1;;;2899:87:56;;;;;;;;;;;;;;;3093:8;;;3078:12;:23;;-1:-1:-1;;;;;3093:8:56;;;-1:-1:-1;;;;;;3078:23:56;;;;;;;3195:22;;;;;;;;;;;2300:925::o;6922:131:11:-;6986:16;7022:17;:23;;7015:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7015:30:11;;;;;;;;;;;;;;;;;;;;;;6922:131;:::o;1243:37:56:-;;;-1:-1:-1;;;;;1243:37:56;;:::o;6658:133:11:-;6753:17;:30;6658:133;:::o;9524:226::-;-1:-1:-1;;;;;9665:51:11;;;9641:4;9665:51;;;:23;:51;;;;;;;;:71;;;;;;:63;;;;:71;;;;:77;;;;9524:226::o;1422:217:57:-;1498:8;;-1:-1:-1;;;;;1498:8:57;1484:10;:22;1476:52;;;;;-1:-1:-1;;;1476:52:57;;;;;;;;;;;;-1:-1:-1;;;1476:52:57;;;;;;;;;;;;;;;1563:8;;;1556:5;;1544:28;;-1:-1:-1;;;;;1563:8:57;;;;1556:5;;;;1544:28;;;1591:8;;;;1583:16;;-1:-1:-1;;;;;;1583:16:57;;;-1:-1:-1;;;;;1591:8:57;;1583:16;;;;1610:21;;;1422:217::o;5463:127:11:-;5555:14;:27;5463:127;:::o;1154:33:56:-;;;-1:-1:-1;;;;;1154:33:56;;:::o;5715:125:11:-;5776:16;5812:14;:20;;5805:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5805:27:11;;;;;;;;;;;;;;;;;;;;;;5715:125;:::o;7231:160::-;7308:11;7351:17;:23;;7375:6;7351:31;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7351:31:11;;7231:160;-1:-1:-1;;7231:160:11:o;219:29:57:-;;;-1:-1:-1;;;;;219:29:57;;:::o;1634:149:11:-;-1:-1:-1;;;;;;;;;;;1627:20:56;1633:13;1627:5;:20::i;:::-;1737:38:11::1;1745:11;1766:7;1737;:38::i;:::-;1634:149:::0;;:::o;4841:158::-;4912:16;4965:11;:17;;4983:6;4965:25;;;;;;;8028:212;-1:-1:-1;;;;;8162:51:11;8135:7;8162:51;;;:23;:51;;;;;:23;:57;:70;;8028:212::o;6012:164::-;6086:16;6139:14;:20;;6160:6;6139:28;;;;;;;2472:187;-1:-1:-1;;;;;;;;;;;1627:20:56;1633:13;1627:5;:20::i;:::-;2594:57:11::1;2605:14;2629:20;2594:10;:57::i;3304:137:56:-:0;726:12:57;:10;:12::i;:::-;3421::56::1;::::0;3410:8:::1;:23:::0;;-1:-1:-1;;;;;;3410:23:56::1;-1:-1:-1::0;;;;;3421:12:56;;::::1;3410:23:::0;;;::::1;::::0;;3304:137::o;1889:155:11:-;-1:-1:-1;;;;;;;;;;;1627:20:56;1633:13;1627:5;:20::i;:::-;1995:41:11::1;2006:11;2027:7;1995:10;:41::i;255:23:57:-:0;;;-1:-1:-1;;;;;255:23:57;;:::o;8959:251:11:-;-1:-1:-1;;;;;9130:51:11;;9077:16;9130:51;;;:23;:51;;;;;:23;:57;:71;;9194:6;;9130:71;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9130:71:11;;8959:251;-1:-1:-1;;;8959:251:11:o;4316:121::-;4405:11;:24;4316:121;:::o;6384:139::-;-1:-1:-1;;;;;6481:28:11;6457:4;6481:28;;;:20;:28;;;;;:34;;;;6384:139::o;2166:181::-;-1:-1:-1;;;;;;;;;;;1627:20:56;1633:13;1627:5;:20::i;:::-;2285:54:11::1;2293:14;2317:20;2285:7;:54::i;1164:167:57:-:0;726:12;:10;:12::i;:::-;1268:5:::1;::::0;-1:-1:-1;;;;;1255:18:57;;::::1;1268:5:::0;::::1;1255:18;;1247:45;;;::::0;;-1:-1:-1;;;1247:45:57;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;1247:45:57;;;;;;;;;;;;;::::1;;1303:8;:20:::0;;-1:-1:-1;;;;;;1303:20:57::1;-1:-1:-1::0;;;;;1303:20:57;;;::::1;::::0;;;::::1;::::0;;1164:167::o;8497:210:11:-;-1:-1:-1;;;;;8636:51:11;;;;;;:23;:51;;;;;;;;;:23;:57;8629:70;;;;;;;;;;;;;;;;;8600:16;;8629:70;;;8636:57;8629:70;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8629:70:11;;;;;;;;;;;;;;;;;;;;;;;8497:210;;;:::o;3490:703::-;-1:-1:-1;;;;;;;;;;;1627:20:56;1633:13;1627:5;:20::i;:::-;-1:-1:-1;;;;;3653:51:11;::::1;3633:17;3653:51:::0;;;:23;:51:::1;::::0;;;;3715:40:::1;3653:23;3726:10:::0;::::1;3746:7:::0;3715:10:::1;:40::i;:::-;3770:10;::::0;::::1;:23:::0;3766:420:::1;;3846:17;3870:30:::0;;3815:28:::1;::::0;3846:17;-1:-1:-1;;3870:34:11;;;3846:59;::::1;;;;;;::::0;;;::::1;::::0;;;;;::::1;::::0;3974:10;;-1:-1:-1;;;;;3846:59:11;;::::1;3920:45:::0;;;:23;:45;;;;;;;:64;;;:17:::1;3999:35:::0;;3846:59;;-1:-1:-1;3846:59:11;;3920:17;;3999:35;::::1;;;;;;::::0;;;::::1;::::0;;;::::1;:58:::0;;-1:-1:-1;;;;;;3999:58:11::1;-1:-1:-1::0;;;;;3999:58:11;;;::::1;::::0;;;::::1;::::0;;4072:17:::1;:29:::0;;;::::1;;;;;::::0;;;::::1;::::0;;;;;-1:-1:-1;;4072:29:11;;;;;-1:-1:-1;;;;;;4072:29:11::1;::::0;;;;;;;;-1:-1:-1;;;;;4123:51:11;::::1;::::0;;:23;:51;;;;;4116:58;;;4123:51;4072:29:::1;4116:58:::0;::::1;4072:29:::0;4116:58:::1;::::0;4072:29;4116:58:::1;:::i;:::-;;;;;3766:420;1658:1:56;3490:703:11::0;;;:::o;813:104:57:-;882:5;;-1:-1:-1;;;;;882:5:57;868:10;:19;860:49;;;;;-1:-1:-1;;;860:49:57;;;;;;;;;;;;-1:-1:-1;;;860:49:57;;;;;;;;;;;;;;;813:104::o;1722:139:56:-;1807:24;1817:13;1807:9;:24::i;:::-;-1:-1:-1;;;;;1793:38:56;:10;-1:-1:-1;;;;;1793:38:56;;1785:68;;;;;-1:-1:-1;;;1785:68:56;;;;;;;;;;;;-1:-1:-1;;;1785:68:56;;;;;;;;;;;;;;;1722:139;:::o;9903:304:11:-;9980:6;594:23:64;608:8;594:13;:23::i;:::-;-1:-1:-1;;;;;10019:20:11;::::1;9999:17;10019:20:::0;;;:12:::1;::::0;::::1;:20;::::0;;;;10059:10;;::::1;;10058:11;10050:40;;;::::0;;-1:-1:-1;;;10050:40:11;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;10050:40:11;;;;;;;;;;;;;::::1;;10116:19:::0;;10103:10:::1;::::0;;::::1;:32:::0;;;10146:25;;::::1;::::0;;-1:-1:-1;10146:25:11;;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;;;;;;10146:25:11::1;-1:-1:-1::0;;;;;10146:25:11;;;::::1;::::0;;;::::1;::::0;;;-1:-1:-1;10182:17:11;;-1:-1:-1;;10182:17:11::1;::::0;;::::1;::::0;;9903:304::o;4077:133:56:-;4169:8;;:33;;;-1:-1:-1;;;4169:33:56;;;;;;;;;;4142:7;;-1:-1:-1;;;;;4169:8:56;;:18;;:33;;;;;;;;;;;;;;:8;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4169:33:56;;4077:133;-1:-1:-1;;4077:133:56:o;10365:434:11:-;10445:6;594:23:64;608:8;594:13;:23::i;:::-;-1:-1:-1;;;;;10484:20:11;::::1;10464:17;10484:20:::0;;;:12:::1;::::0;::::1;:20;::::0;;;;10523:10;;::::1;;10515:39;;;::::0;;-1:-1:-1;;;10515:39:11;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;10515:39:11;;;;;;;;;;;;;::::1;;10600:19:::0;;10567:17:::1;::::0;10587:6;;-1:-1:-1;;10600:23:11;;;10587:37;::::1;;;;;;::::0;;;::::1;::::0;;;;;::::1;::::0;;10667:10;;::::1;::::0;-1:-1:-1;;;;;10587:37:11;;::::1;10635:23:::0;;;:12;;::::1;:23:::0;;;;;;;:29;;::::1;:42:::0;;;10688:24;;10587:37;;-1:-1:-1;10587:37:11;;10635:6;;10688:24;::::1;;;;;;::::0;;;::::1;::::0;;;::::1;:36:::0;;-1:-1:-1;;;;;;10688:36:11::1;-1:-1:-1::0;;;;;10688:36:11;;;::::1;::::0;;;::::1;::::0;;10735:18;;;;;::::1;;;;;::::0;;;::::1;::::0;;;;;-1:-1:-1;;10735:18:11;;;;;-1:-1:-1;;;;;;10735:18:11::1;::::0;;;;;;;;-1:-1:-1;;;;;10771:20:11;;;::::1;::::0;;10735:18:::1;10771:12:::0;;::::1;:20:::0;;;-1:-1:-1;;10771:20:11;;;10764:27;;-1:-1:-1;;10764:27:11::1;::::0;;;;::::1;::::0;-1:-1:-1;10365:434:11:o;692:128:64:-;-1:-1:-1;;;;;766:22:64;;758:54;;;;;-1:-1:-1;;;758:54:64;;;;;;;;;;;;-1:-1:-1;;;758:54:64;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o",
"source": "// SPDX-License-Identifier: SEE LICENSE IN LICENSE\r\npragma solidity 0.6.12;\r\nimport \"../utility/ContractRegistryClient.sol\";\r\nimport \"./interfaces/IConverterRegistryData.sol\";\r\n\r\n/**\r\n * @dev The ConverterRegistryData contract is an integral part of the converter registry\r\n * as it serves as the database contract that holds all registry data.\r\n *\r\n * The registry is separated into two different contracts for upgradability - the data contract\r\n * is harder to upgrade as it requires migrating all registry data into a new contract, while\r\n * the registry contract itself can be easily upgraded.\r\n *\r\n * For that same reason, the data contract is simple and contains no logic beyond the basic data\r\n * access utilities that it exposes.\r\n*/\r\ncontract ConverterRegistryData is IConverterRegistryData, ContractRegistryClient {\r\n struct Item {\r\n bool valid;\r\n uint256 index;\r\n }\r\n\r\n struct Items {\r\n address[] array;\r\n mapping(address => Item) table;\r\n }\r\n\r\n struct List {\r\n uint256 index;\r\n Items items;\r\n }\r\n\r\n struct Lists {\r\n address[] array;\r\n mapping(address => List) table;\r\n }\r\n\r\n Items private smartTokens;\r\n Items private liquidityPools;\r\n Lists private convertibleTokens;\r\n\r\n /**\r\n * @dev initializes a new ConverterRegistryData instance\r\n *\r\n * @param _registry address of a contract registry contract\r\n */\r\n constructor(IContractRegistry _registry) ContractRegistryClient(_registry) public {\r\n }\r\n\r\n /**\r\n * @dev adds a smart token\r\n *\r\n * @param _anchor smart token\r\n */\r\n function addSmartToken(IConverterAnchor _anchor) external override only(CONVERTER_REGISTRY) {\r\n addItem(smartTokens, address(_anchor));\r\n }\r\n\r\n /**\r\n * @dev removes a smart token\r\n *\r\n * @param _anchor smart token\r\n */\r\n function removeSmartToken(IConverterAnchor _anchor) external override only(CONVERTER_REGISTRY) {\r\n removeItem(smartTokens, address(_anchor));\r\n }\r\n\r\n /**\r\n * @dev adds a liquidity pool\r\n *\r\n * @param _liquidityPoolAnchor liquidity pool\r\n */\r\n function addLiquidityPool(IConverterAnchor _liquidityPoolAnchor) external override only(CONVERTER_REGISTRY) {\r\n addItem(liquidityPools, address(_liquidityPoolAnchor));\r\n }\r\n\r\n /**\r\n * @dev removes a liquidity pool\r\n *\r\n * @param _liquidityPoolAnchor liquidity pool\r\n */\r\n function removeLiquidityPool(IConverterAnchor _liquidityPoolAnchor) external override only(CONVERTER_REGISTRY) {\r\n removeItem(liquidityPools, address(_liquidityPoolAnchor));\r\n }\r\n\r\n /**\r\n * @dev adds a convertible token\r\n *\r\n * @param _convertibleToken convertible token\r\n * @param _anchor associated smart token\r\n */\r\n function addConvertibleToken(IERC20Token _convertibleToken, IConverterAnchor _anchor) external override only(CONVERTER_REGISTRY) {\r\n List storage list = convertibleTokens.table[address(_convertibleToken)];\r\n if (list.items.array.length == 0) {\r\n list.index = convertibleTokens.array.length;\r\n convertibleTokens.array.push(address(_convertibleToken));\r\n }\r\n addItem(list.items, address(_anchor));\r\n }\r\n\r\n /**\r\n * @dev removes a convertible token\r\n *\r\n * @param _convertibleToken convertible token\r\n * @param _anchor associated smart token\r\n */\r\n function removeConvertibleToken(IERC20Token _convertibleToken, IConverterAnchor _anchor) external override only(CONVERTER_REGISTRY) {\r\n List storage list = convertibleTokens.table[address(_convertibleToken)];\r\n removeItem(list.items, address(_anchor));\r\n if (list.items.array.length == 0) {\r\n address lastConvertibleToken = convertibleTokens.array[convertibleTokens.array.length - 1];\r\n convertibleTokens.table[lastConvertibleToken].index = list.index;\r\n convertibleTokens.array[list.index] = lastConvertibleToken;\r\n convertibleTokens.array.pop();\r\n delete convertibleTokens.table[address(_convertibleToken)];\r\n }\r\n }\r\n\r\n /**\r\n * @dev returns the number of smart tokens\r\n *\r\n * @return number of smart tokens\r\n */\r\n function getSmartTokenCount() external view override returns (uint256) {\r\n return smartTokens.array.length;\r\n }\r\n\r\n /**\r\n * @dev returns the list of smart tokens\r\n *\r\n * @return list of smart tokens\r\n */\r\n function getSmartTokens() external view override returns (address[] memory) {\r\n return smartTokens.array;\r\n }\r\n\r\n /**\r\n * @dev returns the smart token at a given index\r\n *\r\n * @param _index index\r\n * @return smart token at the given index\r\n */\r\n function getSmartToken(uint256 _index) external view override returns (IConverterAnchor) {\r\n return IConverterAnchor(smartTokens.array[_index]);\r\n }\r\n\r\n /**\r\n * @dev checks whether or not a given value is a smart token\r\n *\r\n * @param _value value\r\n * @return true if the given value is a smart token, false if not\r\n */\r\n function isSmartToken(address _value) external view override returns (bool) {\r\n return smartTokens.table[_value].valid;\r\n }\r\n\r\n /**\r\n * @dev returns the number of liquidity pools\r\n *\r\n * @return number of liquidity pools\r\n */\r\n function getLiquidityPoolCount() external view override returns (uint256) {\r\n return liquidityPools.array.length;\r\n }\r\n\r\n /**\r\n * @dev returns the list of liquidity pools\r\n *\r\n * @return list of liquidity pools\r\n */\r\n function getLiquidityPools() external view override returns (address[] memory) {\r\n return liquidityPools.array;\r\n }\r\n\r\n /**\r\n * @dev returns the liquidity pool at a given index\r\n *\r\n * @param _index index\r\n * @return liquidity pool at the given index\r\n */\r\n function getLiquidityPool(uint256 _index) external view override returns (IConverterAnchor) {\r\n return IConverterAnchor(liquidityPools.array[_index]);\r\n }\r\n\r\n /**\r\n * @dev checks whether or not a given value is a liquidity pool\r\n *\r\n * @param _value value\r\n * @return true if the given value is a liquidity pool, false if not\r\n */\r\n function isLiquidityPool(address _value) external view override returns (bool) {\r\n return liquidityPools.table[_value].valid;\r\n }\r\n\r\n /**\r\n * @dev returns the number of convertible tokens\r\n *\r\n * @return number of convertible tokens\r\n */\r\n function getConvertibleTokenCount() external view override returns (uint256) {\r\n return convertibleTokens.array.length;\r\n }\r\n\r\n /**\r\n * @dev returns the list of convertible tokens\r\n *\r\n * @return list of convertible tokens\r\n */\r\n function getConvertibleTokens() external view override returns (address[] memory) {\r\n return convertibleTokens.array;\r\n }\r\n\r\n /**\r\n * @dev returns the convertible token at a given index\r\n *\r\n * @param _index index\r\n * @return convertible token at the given index\r\n */\r\n function getConvertibleToken(uint256 _index) external view override returns (IERC20Token) {\r\n return IERC20Token(convertibleTokens.array[_index]);\r\n }\r\n\r\n /**\r\n * @dev checks whether or not a given value is a convertible token\r\n *\r\n * @param _value value\r\n * @return true if the given value is a convertible token, false if not\r\n */\r\n function isConvertibleToken(address _value) external view override returns (bool) {\r\n return convertibleTokens.table[_value].items.array.length > 0;\r\n }\r\n\r\n /**\r\n * @dev returns the number of smart tokens associated with a given convertible token\r\n *\r\n * @param _convertibleToken convertible token\r\n * @return number of smart tokens associated with the given convertible token\r\n */\r\n function getConvertibleTokenSmartTokenCount(IERC20Token _convertibleToken) external view override returns (uint256) {\r\n return convertibleTokens.table[address(_convertibleToken)].items.array.length;\r\n }\r\n\r\n /**\r\n * @dev returns the list of smart tokens associated with a given convertible token\r\n *\r\n * @param _convertibleToken convertible token\r\n * @return list of smart tokens associated with the given convertible token\r\n */\r\n function getConvertibleTokenSmartTokens(IERC20Token _convertibleToken) external view override returns (address[] memory) {\r\n return convertibleTokens.table[address(_convertibleToken)].items.array;\r\n }\r\n\r\n /**\r\n * @dev returns the smart token associated with a given convertible token at a given index\r\n *\r\n * @param _index index\r\n * @return smart token associated with the given convertible token at the given index\r\n */\r\n function getConvertibleTokenSmartToken(IERC20Token _convertibleToken, uint256 _index) external view override returns (IConverterAnchor) {\r\n return IConverterAnchor(convertibleTokens.table[address(_convertibleToken)].items.array[_index]);\r\n }\r\n\r\n /**\r\n * @dev checks whether or not a given value is a smart token of a given convertible token\r\n *\r\n * @param _convertibleToken convertible token\r\n * @param _value value\r\n * @return true if the given value is a smart token of the given convertible token, false it not\r\n */\r\n function isConvertibleTokenSmartToken(IERC20Token _convertibleToken, address _value) external view override returns (bool) {\r\n return convertibleTokens.table[address(_convertibleToken)].items.table[_value].valid;\r\n }\r\n\r\n /**\r\n * @dev adds an item to a list of items\r\n *\r\n * @param _items list of items\r\n * @param _value item's value\r\n */\r\n function addItem(Items storage _items, address _value) internal validAddress(_value) {\r\n Item storage item = _items.table[_value];\r\n require(!item.valid, \"ERR_INVALID_ITEM\");\r\n\r\n item.index = _items.array.length;\r\n _items.array.push(_value);\r\n item.valid = true;\r\n }\r\n\r\n /**\r\n * @dev removes an item from a list of items\r\n *\r\n * @param _items list of items\r\n * @param _value item's value\r\n */\r\n function removeItem(Items storage _items, address _value) internal validAddress(_value) {\r\n Item storage item = _items.table[_value];\r\n require(item.valid, \"ERR_INVALID_ITEM\");\r\n\r\n address lastValue = _items.array[_items.array.length - 1];\r\n _items.table[lastValue].index = item.index;\r\n _items.array[item.index] = lastValue;\r\n _items.array.pop();\r\n delete _items.table[_value];\r\n }\r\n}\r\n",
"sourcePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/converter/ConverterRegistryData.sol",
"ast": {
"absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/converter/ConverterRegistryData.sol",
"exportedSymbols": {
"ConverterRegistryData": [
12324
]
},
"id": 12325,
"license": "SEE LICENSE IN LICENSE",
"nodeType": "SourceUnit",
"nodes": [
{
"id": 11669,
"literals": [
"solidity",
"0.6",
".12"
],
"nodeType": "PragmaDirective",
"src": "52:23:11"
},
{
"absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/utility/ContractRegistryClient.sol",
"file": "../utility/ContractRegistryClient.sol",
"id": 11670,
"nodeType": "ImportDirective",
"scope": 12325,
"sourceUnit": 21720,
"src": "77:47:11",
"symbolAliases": [],
"unitAlias": ""
},
{
"absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/converter/interfaces/IConverterRegistryData.sol",
"file": "./interfaces/IConverterRegistryData.sol",
"id": 11671,
"nodeType": "ImportDirective",
"scope": 12325,
"sourceUnit": 13648,
"src": "126:49:11",
"symbolAliases": [],
"unitAlias": ""
},
{
"abstract": false,
"baseContracts": [
{
"arguments": null,
"baseName": {
"contractScope": null,
"id": 11673,
"name": "IConverterRegistryData",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 13647,
"src": "786:22:11",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
"typeString": "contract IConverterRegistryData"
}
},
"id": 11674,
"nodeType": "InheritanceSpecifier",
"src": "786:22:11"
},
{
"arguments": null,
"baseName": {
"contractScope": null,
"id": 11675,
"name": "ContractRegistryClient",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 21719,
"src": "810:22:11",
"typeDescriptions": {
"typeIdentifier": "t_contract$_ContractRegistryClient_$21719",
"typeString": "contract ContractRegistryClient"
}
},
"id": 11676,
"nodeType": "InheritanceSpecifier",
"src": "810:22:11"
}
],
"contractDependencies": [
13647,
21719,
21818,
22661,
22847
],
"contractKind": "contract",
"documentation": {
"id": 11672,
"nodeType": "StructuredDocumentation",
"src": "179:571:11",
"text": " @dev The ConverterRegistryData contract is an integral part of the converter registry\n as it serves as the database contract that holds all registry data.\n The registry is separated into two different contracts for upgradability - the data contract\n is harder to upgrade as it requires migrating all registry data into a new contract, while\n the registry contract itself can be easily upgraded.\n For that same reason, the data contract is simple and contains no logic beyond the basic data\n access utilities that it exposes."
},
"fullyImplemented": true,
"id": 12324,
"linearizedBaseContracts": [
12324,
21719,
22661,
21818,
22847,
13647
],
"name": "ConverterRegistryData",
"nodeType": "ContractDefinition",
"nodes": [
{
"canonicalName": "ConverterRegistryData.Item",
"id": 11681,
"members": [
{
"constant": false,
"id": 11678,
"mutability": "mutable",
"name": "valid",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11681,
"src": "863:10:11",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 11677,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "863:4:11",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 11680,
"mutability": "mutable",
"name": "index",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11681,
"src": "884:13:11",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 11679,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "884:7:11",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"name": "Item",
"nodeType": "StructDefinition",
"scope": 12324,
"src": "840:65:11",
"visibility": "public"
},
{
"canonicalName": "ConverterRegistryData.Items",
"id": 11689,
"members": [
{
"constant": false,
"id": 11684,
"mutability": "mutable",
"name": "array",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11689,
"src": "937:15:11",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
"typeString": "address[]"
},
"typeName": {
"baseType": {
"id": 11682,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "937:7:11",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 11683,
"length": null,
"nodeType": "ArrayTypeName",
"src": "937:9:11",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
"typeString": "address[]"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 11688,
"mutability": "mutable",
"name": "table",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11689,
"src": "963:30:11",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_struct$_Item_$11681_storage_$",
"typeString": "mapping(address => struct ConverterRegistryData.Item)"
},
"typeName": {
"id": 11687,
"keyType": {
"id": 11685,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "971:7:11",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Mapping",
"src": "963:24:11",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_struct$_Item_$11681_storage_$",
"typeString": "mapping(address => struct ConverterRegistryData.Item)"
},
"valueType": {
"contractScope": null,
"id": 11686,
"name": "Item",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 11681,
"src": "982:4:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Item_$11681_storage_ptr",
"typeString": "struct ConverterRegistryData.Item"
}
}
},
"value": null,
"visibility": "internal"
}
],
"name": "Items",
"nodeType": "StructDefinition",
"scope": 12324,
"src": "913:88:11",
"visibility": "public"
},
{
"canonicalName": "ConverterRegistryData.List",
"id": 11694,
"members": [
{
"constant": false,
"id": 11691,
"mutability": "mutable",
"name": "index",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11694,
"src": "1032:13:11",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 11690,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "1032:7:11",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 11693,
"mutability": "mutable",
"name": "items",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11694,
"src": "1056:11:11",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Items_$11689_storage_ptr",
"typeString": "struct ConverterRegistryData.Items"
},
"typeName": {
"contractScope": null,
"id": 11692,
"name": "Items",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 11689,
"src": "1056:5:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Items_$11689_storage_ptr",
"typeString": "struct ConverterRegistryData.Items"
}
},
"value": null,
"visibility": "internal"
}
],
"name": "List",
"nodeType": "StructDefinition",
"scope": 12324,
"src": "1009:66:11",
"visibility": "public"
},
{
"canonicalName": "ConverterRegistryData.Lists",
"id": 11702,
"members": [
{
"constant": false,
"id": 11697,
"mutability": "mutable",
"name": "array",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11702,
"src": "1107:15:11",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
"typeString": "address[]"
},
"typeName": {
"baseType": {
"id": 11695,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1107:7:11",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 11696,
"length": null,
"nodeType": "ArrayTypeName",
"src": "1107:9:11",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
"typeString": "address[]"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 11701,
"mutability": "mutable",
"name": "table",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11702,
"src": "1133:30:11",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_struct$_List_$11694_storage_$",
"typeString": "mapping(address => struct ConverterRegistryData.List)"
},
"typeName": {
"id": 11700,
"keyType": {
"id": 11698,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1141:7:11",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Mapping",
"src": "1133:24:11",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_struct$_List_$11694_storage_$",
"typeString": "mapping(address => struct ConverterRegistryData.List)"
},
"valueType": {
"contractScope": null,
"id": 11699,
"name": "List",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 11694,
"src": "1152:4:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_List_$11694_storage_ptr",
"typeString": "struct ConverterRegistryData.List"
}
}
},
"value": null,
"visibility": "internal"
}
],
"name": "Lists",
"nodeType": "StructDefinition",
"scope": 12324,
"src": "1083:88:11",
"visibility": "public"
},
{
"constant": false,
"id": 11704,
"mutability": "mutable",
"name": "smartTokens",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 12324,
"src": "1179:25:11",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Items_$11689_storage",
"typeString": "struct ConverterRegistryData.Items"
},
"typeName": {
"contractScope": null,
"id": 11703,
"name": "Items",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 11689,
"src": "1179:5:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Items_$11689_storage_ptr",
"typeString": "struct ConverterRegistryData.Items"
}
},
"value": null,
"visibility": "private"
},
{
"constant": false,
"id": 11706,
"mutability": "mutable",
"name": "liquidityPools",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 12324,
"src": "1211:28:11",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Items_$11689_storage",
"typeString": "struct ConverterRegistryData.Items"
},
"typeName": {
"contractScope": null,
"id": 11705,
"name": "Items",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 11689,
"src": "1211:5:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Items_$11689_storage_ptr",
"typeString": "struct ConverterRegistryData.Items"
}
},
"value": null,
"visibility": "private"
},
{
"constant": false,
"id": 11708,
"mutability": "mutable",
"name": "convertibleTokens",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 12324,
"src": "1246:31:11",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Lists_$11702_storage",
"typeString": "struct ConverterRegistryData.Lists"
},
"typeName": {
"contractScope": null,
"id": 11707,
"name": "Lists",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 11702,
"src": "1246:5:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Lists_$11702_storage_ptr",
"typeString": "struct ConverterRegistryData.Lists"
}
},
"value": null,
"visibility": "private"
},
{
"body": {
"id": 11717,
"nodeType": "Block",
"src": "1523:8:11",
"statements": []
},
"documentation": {
"id": 11709,
"nodeType": "StructuredDocumentation",
"src": "1286:149:11",
"text": " @dev initializes a new ConverterRegistryData instance\n @param _registry address of a contract registry contract"
},
"id": 11718,
"implemented": true,
"kind": "constructor",
"modifiers": [
{
"arguments": [
{
"argumentTypes": null,
"id": 11714,
"name": "_registry",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11711,
"src": "1505:9:11",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IContractRegistry_$22831",
"typeString": "contract IContractRegistry"
}
}
],
"id": 11715,
"modifierName": {
"argumentTypes": null,
"id": 11713,
"name": "ContractRegistryClient",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21719,
"src": "1482:22:11",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_ContractRegistryClient_$21719_$",
"typeString": "type(contract ContractRegistryClient)"
}
},
"nodeType": "ModifierInvocation",
"src": "1482:33:11"
}
],
"name": "",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 11712,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 11711,
"mutability": "mutable",
"name": "_registry",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11718,
"src": "1453:27:11",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IContractRegistry_$22831",
"typeString": "contract IContractRegistry"
},
"typeName": {
"contractScope": null,
"id": 11710,
"name": "IContractRegistry",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 22831,
"src": "1453:17:11",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IContractRegistry_$22831",
"typeString": "contract IContractRegistry"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "1452:29:11"
},
"returnParameters": {
"id": 11716,
"nodeType": "ParameterList",
"parameters": [],
"src": "1523:0:11"
},
"scope": 12324,
"src": "1441:90:11",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "public"
},
{
"baseFunctions": [
13509
],
"body": {
"id": 11736,
"nodeType": "Block",
"src": "1726:57:11",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 11729,
"name": "smartTokens",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11704,
"src": "1745:11:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Items_$11689_storage",
"typeString": "struct ConverterRegistryData.Items storage ref"
}
},
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 11732,
"name": "_anchor",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11721,
"src": "1766:7:11",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
],
"id": 11731,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "1758:7:11",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 11730,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1758:7:11",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 11733,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1758:16:11",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_struct$_Items_$11689_storage",
"typeString": "struct ConverterRegistryData.Items storage ref"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 11728,
"name": "addItem",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 12255,
"src": "1737:7:11",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Items_$11689_storage_ptr_$_t_address_$returns$__$",
"typeString": "function (struct ConverterRegistryData.Items storage pointer,address)"
}
},
"id": 11734,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1737:38:11",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 11735,
"nodeType": "ExpressionStatement",
"src": "1737:38:11"
}
]
},
"documentation": {
"id": 11719,
"nodeType": "StructuredDocumentation",
"src": "1539:89:11",
"text": " @dev adds a smart token\n @param _anchor smart token"
},
"functionSelector": "8de6c3eb",
"id": 11737,
"implemented": true,
"kind": "function",
"modifiers": [
{
"arguments": [
{
"argumentTypes": null,
"id": 11725,
"name": "CONVERTER_REGISTRY",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21545,
"src": "1706:18:11",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
}
],
"id": 11726,
"modifierName": {
"argumentTypes": null,
"id": 11724,
"name": "only",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21577,
"src": "1701:4:11",
"typeDescriptions": {
"typeIdentifier": "t_modifier$_t_bytes32_$",
"typeString": "modifier (bytes32)"
}
},
"nodeType": "ModifierInvocation",
"src": "1701:24:11"
}
],
"name": "addSmartToken",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 11723,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "1692:8:11"
},
"parameters": {
"id": 11722,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 11721,
"mutability": "mutable",
"name": "_anchor",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11737,
"src": "1657:24:11",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
},
"typeName": {
"contractScope": null,
"id": 11720,
"name": "IConverterAnchor",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 13349,
"src": "1657:16:11",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "1656:26:11"
},
"returnParameters": {
"id": 11727,
"nodeType": "ParameterList",
"parameters": [],
"src": "1726:0:11"
},
"scope": 12324,
"src": "1634:149:11",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
},
{
"baseFunctions": [
13514
],
"body": {
"id": 11755,
"nodeType": "Block",
"src": "1984:60:11",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 11748,
"name": "smartTokens",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11704,
"src": "2006:11:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Items_$11689_storage",
"typeString": "struct ConverterRegistryData.Items storage ref"
}
},
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 11751,
"name": "_anchor",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11740,
"src": "2027:7:11",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
],
"id": 11750,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "2019:7:11",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 11749,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "2019:7:11",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 11752,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2019:16:11",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_struct$_Items_$11689_storage",
"typeString": "struct ConverterRegistryData.Items storage ref"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 11747,
"name": "removeItem",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 12323,
"src": "1995:10:11",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Items_$11689_storage_ptr_$_t_address_$returns$__$",
"typeString": "function (struct ConverterRegistryData.Items storage pointer,address)"
}
},
"id": 11753,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1995:41:11",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 11754,
"nodeType": "ExpressionStatement",
"src": "1995:41:11"
}
]
},
"documentation": {
"id": 11738,
"nodeType": "StructuredDocumentation",
"src": "1791:92:11",
"text": " @dev removes a smart token\n @param _anchor smart token"
},
"functionSelector": "ceb9838c",
"id": 11756,
"implemented": true,
"kind": "function",
"modifiers": [
{
"arguments": [
{
"argumentTypes": null,
"id": 11744,
"name": "CONVERTER_REGISTRY",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21545,
"src": "1964:18:11",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
}
],
"id": 11745,
"modifierName": {
"argumentTypes": null,
"id": 11743,
"name": "only",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21577,
"src": "1959:4:11",
"typeDescriptions": {
"typeIdentifier": "t_modifier$_t_bytes32_$",
"typeString": "modifier (bytes32)"
}
},
"nodeType": "ModifierInvocation",
"src": "1959:24:11"
}
],
"name": "removeSmartToken",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 11742,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "1950:8:11"
},
"parameters": {
"id": 11741,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 11740,
"mutability": "mutable",
"name": "_anchor",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11756,
"src": "1915:24:11",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
},
"typeName": {
"contractScope": null,
"id": 11739,
"name": "IConverterAnchor",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 13349,
"src": "1915:16:11",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "1914:26:11"
},
"returnParameters": {
"id": 11746,
"nodeType": "ParameterList",
"parameters": [],
"src": "1984:0:11"
},
"scope": 12324,
"src": "1889:155:11",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
},
{
"baseFunctions": [
13519
],
"body": {
"id": 11774,
"nodeType": "Block",
"src": "2274:73:11",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 11767,
"name": "liquidityPools",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11706,
"src": "2293:14:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Items_$11689_storage",
"typeString": "struct ConverterRegistryData.Items storage ref"
}
},
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 11770,
"name": "_liquidityPoolAnchor",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11759,
"src": "2317:20:11",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
],
"id": 11769,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "2309:7:11",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 11768,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "2309:7:11",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 11771,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2309:29:11",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_struct$_Items_$11689_storage",
"typeString": "struct ConverterRegistryData.Items storage ref"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 11766,
"name": "addItem",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 12255,
"src": "2285:7:11",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Items_$11689_storage_ptr_$_t_address_$returns$__$",
"typeString": "function (struct ConverterRegistryData.Items storage pointer,address)"
}
},
"id": 11772,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2285:54:11",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 11773,
"nodeType": "ExpressionStatement",
"src": "2285:54:11"
}
]
},
"documentation": {
"id": 11757,
"nodeType": "StructuredDocumentation",
"src": "2052:108:11",
"text": " @dev adds a liquidity pool\n @param _liquidityPoolAnchor liquidity pool"
},
"functionSelector": "ee6a934c",
"id": 11775,
"implemented": true,
"kind": "function",
"modifiers": [
{
"arguments": [
{
"argumentTypes": null,
"id": 11763,
"name": "CONVERTER_REGISTRY",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21545,
"src": "2254:18:11",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
}
],
"id": 11764,
"modifierName": {
"argumentTypes": null,
"id": 11762,
"name": "only",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21577,
"src": "2249:4:11",
"typeDescriptions": {
"typeIdentifier": "t_modifier$_t_bytes32_$",
"typeString": "modifier (bytes32)"
}
},
"nodeType": "ModifierInvocation",
"src": "2249:24:11"
}
],
"name": "addLiquidityPool",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 11761,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "2240:8:11"
},
"parameters": {
"id": 11760,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 11759,
"mutability": "mutable",
"name": "_liquidityPoolAnchor",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11775,
"src": "2192:37:11",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
},
"typeName": {
"contractScope": null,
"id": 11758,
"name": "IConverterAnchor",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 13349,
"src": "2192:16:11",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "2191:39:11"
},
"returnParameters": {
"id": 11765,
"nodeType": "ParameterList",
"parameters": [],
"src": "2274:0:11"
},
"scope": 12324,
"src": "2166:181:11",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
},
{
"baseFunctions": [
13524
],
"body": {
"id": 11793,
"nodeType": "Block",
"src": "2583:76:11",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 11786,
"name": "liquidityPools",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11706,
"src": "2605:14:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Items_$11689_storage",
"typeString": "struct ConverterRegistryData.Items storage ref"
}
},
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 11789,
"name": "_liquidityPoolAnchor",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11778,
"src": "2629:20:11",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
],
"id": 11788,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "2621:7:11",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 11787,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "2621:7:11",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 11790,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2621:29:11",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_struct$_Items_$11689_storage",
"typeString": "struct ConverterRegistryData.Items storage ref"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 11785,
"name": "removeItem",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 12323,
"src": "2594:10:11",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Items_$11689_storage_ptr_$_t_address_$returns$__$",
"typeString": "function (struct ConverterRegistryData.Items storage pointer,address)"
}
},
"id": 11791,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2594:57:11",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 11792,
"nodeType": "ExpressionStatement",
"src": "2594:57:11"
}
]
},
"documentation": {
"id": 11776,
"nodeType": "StructuredDocumentation",
"src": "2355:111:11",
"text": " @dev removes a liquidity pool\n @param _liquidityPoolAnchor liquidity pool"
},
"functionSelector": "ae22107f",
"id": 11794,
"implemented": true,
"kind": "function",
"modifiers": [
{
"arguments": [
{
"argumentTypes": null,
"id": 11782,
"name": "CONVERTER_REGISTRY",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21545,
"src": "2563:18:11",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
}
],
"id": 11783,
"modifierName": {
"argumentTypes": null,
"id": 11781,
"name": "only",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21577,
"src": "2558:4:11",
"typeDescriptions": {
"typeIdentifier": "t_modifier$_t_bytes32_$",
"typeString": "modifier (bytes32)"
}
},
"nodeType": "ModifierInvocation",
"src": "2558:24:11"
}
],
"name": "removeLiquidityPool",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 11780,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "2549:8:11"
},
"parameters": {
"id": 11779,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 11778,
"mutability": "mutable",
"name": "_liquidityPoolAnchor",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11794,
"src": "2501:37:11",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
},
"typeName": {
"contractScope": null,
"id": 11777,
"name": "IConverterAnchor",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 13349,
"src": "2501:16:11",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "2500:39:11"
},
"returnParameters": {
"id": 11784,
"nodeType": "ParameterList",
"parameters": [],
"src": "2583:0:11"
},
"scope": 12324,
"src": "2472:187:11",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
},
{
"baseFunctions": [
13531
],
"body": {
"id": 11852,
"nodeType": "Block",
"src": "2976:323:11",
"statements": [
{
"assignments": [
11807
],
"declarations": [
{
"constant": false,
"id": 11807,
"mutability": "mutable",
"name": "list",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11852,
"src": "2987:17:11",
"stateVariable": false,
"storageLocation": "storage",
"typeDescriptions": {
"typeIdentifier": "t_struct$_List_$11694_storage_ptr",
"typeString": "struct ConverterRegistryData.List"
},
"typeName": {
"contractScope": null,
"id": 11806,
"name": "List",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 11694,
"src": "2987:4:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_List_$11694_storage_ptr",
"typeString": "struct ConverterRegistryData.List"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 11815,
"initialValue": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 11808,
"name": "convertibleTokens",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11708,
"src": "3007:17:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Lists_$11702_storage",
"typeString": "struct ConverterRegistryData.Lists storage ref"
}
},
"id": 11809,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "table",
"nodeType": "MemberAccess",
"referencedDeclaration": 11701,
"src": "3007:23:11",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_struct$_List_$11694_storage_$",
"typeString": "mapping(address => struct ConverterRegistryData.List storage ref)"
}
},
"id": 11814,
"indexExpression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 11812,
"name": "_convertibleToken",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11797,
"src": "3039:17:11",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
],
"id": 11811,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "3031:7:11",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 11810,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "3031:7:11",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 11813,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3031:26:11",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "3007:51:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_List_$11694_storage",
"typeString": "struct ConverterRegistryData.List storage ref"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "2987:71:11"
},
{
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 11821,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 11816,
"name": "list",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11807,
"src": "3073:4:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_List_$11694_storage_ptr",
"typeString": "struct ConverterRegistryData.List storage pointer"
}
},
"id": 11817,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "items",
"nodeType": "MemberAccess",
"referencedDeclaration": 11693,
"src": "3073:10:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Items_$11689_storage",
"typeString": "struct ConverterRegistryData.Items storage ref"
}
},
"id": 11818,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "array",
"nodeType": "MemberAccess",
"referencedDeclaration": 11684,
"src": "3073:16:11",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage",
"typeString": "address[] storage ref"
}
},
"id": 11819,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "3073:23:11",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"hexValue": "30",
"id": 11820,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3100:1:11",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "3073:28:11",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": null,
"id": 11842,
"nodeType": "IfStatement",
"src": "3069:175:11",
"trueBody": {
"id": 11841,
"nodeType": "Block",
"src": "3103:141:11",
"statements": [
{
"expression": {
"argumentTypes": null,
"id": 11828,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 11822,
"name": "list",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11807,
"src": "3118:4:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_List_$11694_storage_ptr",
"typeString": "struct ConverterRegistryData.List storage pointer"
}
},
"id": 11824,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"memberName": "index",
"nodeType": "MemberAccess",
"referencedDeclaration": 11691,
"src": "3118:10:11",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 11825,
"name": "convertibleTokens",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11708,
"src": "3131:17:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Lists_$11702_storage",
"typeString": "struct ConverterRegistryData.Lists storage ref"
}
},
"id": 11826,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "array",
"nodeType": "MemberAccess",
"referencedDeclaration": 11697,
"src": "3131:23:11",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage",
"typeString": "address[] storage ref"
}
},
"id": 11827,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "3131:30:11",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "3118:43:11",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 11829,
"nodeType": "ExpressionStatement",
"src": "3118:43:11"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 11837,
"name": "_convertibleToken",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11797,
"src": "3213:17:11",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
],
"id": 11836,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "3205:7:11",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 11835,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "3205:7:11",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 11838,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3205:26:11",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"expression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 11830,
"name": "convertibleTokens",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11708,
"src": "3176:17:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Lists_$11702_storage",
"typeString": "struct ConverterRegistryData.Lists storage ref"
}
},
"id": 11833,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "array",
"nodeType": "MemberAccess",
"referencedDeclaration": 11697,
"src": "3176:23:11",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage",
"typeString": "address[] storage ref"
}
},
"id": 11834,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "push",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "3176:28:11",
"typeDescriptions": {
"typeIdentifier": "t_function_arraypush_nonpayable$_t_address_$returns$__$",
"typeString": "function (address)"
}
},
"id": 11839,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3176:56:11",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 11840,
"nodeType": "ExpressionStatement",
"src": "3176:56:11"
}
]
}
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 11844,
"name": "list",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11807,
"src": "3262:4:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_List_$11694_storage_ptr",
"typeString": "struct ConverterRegistryData.List storage pointer"
}
},
"id": 11845,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "items",
"nodeType": "MemberAccess",
"referencedDeclaration": 11693,
"src": "3262:10:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Items_$11689_storage",
"typeString": "struct ConverterRegistryData.Items storage ref"
}
},
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 11848,
"name": "_anchor",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11799,
"src": "3282:7:11",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
],
"id": 11847,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "3274:7:11",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 11846,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "3274:7:11",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 11849,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3274:16:11",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_struct$_Items_$11689_storage",
"typeString": "struct ConverterRegistryData.Items storage ref"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 11843,
"name": "addItem",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 12255,
"src": "3254:7:11",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Items_$11689_storage_ptr_$_t_address_$returns$__$",
"typeString": "function (struct ConverterRegistryData.Items storage pointer,address)"
}
},
"id": 11850,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3254:37:11",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 11851,
"nodeType": "ExpressionStatement",
"src": "3254:37:11"
}
]
},
"documentation": {
"id": 11795,
"nodeType": "StructuredDocumentation",
"src": "2667:174:11",
"text": " @dev adds a convertible token\n @param _convertibleToken convertible token\n @param _anchor associated smart token"
},
"functionSelector": "36900c11",
"id": 11853,
"implemented": true,
"kind": "function",
"modifiers": [
{
"arguments": [
{
"argumentTypes": null,
"id": 11803,
"name": "CONVERTER_REGISTRY",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21545,
"src": "2956:18:11",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
}
],
"id": 11804,
"modifierName": {
"argumentTypes": null,
"id": 11802,
"name": "only",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21577,
"src": "2951:4:11",
"typeDescriptions": {
"typeIdentifier": "t_modifier$_t_bytes32_$",
"typeString": "modifier (bytes32)"
}
},
"nodeType": "ModifierInvocation",
"src": "2951:24:11"
}
],
"name": "addConvertibleToken",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 11801,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "2942:8:11"
},
"parameters": {
"id": 11800,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 11797,
"mutability": "mutable",
"name": "_convertibleToken",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11853,
"src": "2876:29:11",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
},
"typeName": {
"contractScope": null,
"id": 11796,
"name": "IERC20Token",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 21127,
"src": "2876:11:11",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 11799,
"mutability": "mutable",
"name": "_anchor",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11853,
"src": "2907:24:11",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
},
"typeName": {
"contractScope": null,
"id": 11798,
"name": "IConverterAnchor",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 13349,
"src": "2907:16:11",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "2875:57:11"
},
"returnParameters": {
"id": 11805,
"nodeType": "ParameterList",
"parameters": [],
"src": "2976:0:11"
},
"scope": 12324,
"src": "2847:452:11",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
},
{
"baseFunctions": [
13538
],
"body": {
"id": 11938,
"nodeType": "Block",
"src": "3622:571:11",
"statements": [
{
"assignments": [
11866
],
"declarations": [
{
"constant": false,
"id": 11866,
"mutability": "mutable",
"name": "list",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11938,
"src": "3633:17:11",
"stateVariable": false,
"storageLocation": "storage",
"typeDescriptions": {
"typeIdentifier": "t_struct$_List_$11694_storage_ptr",
"typeString": "struct ConverterRegistryData.List"
},
"typeName": {
"contractScope": null,
"id": 11865,
"name": "List",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 11694,
"src": "3633:4:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_List_$11694_storage_ptr",
"typeString": "struct ConverterRegistryData.List"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 11874,
"initialValue": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 11867,
"name": "convertibleTokens",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11708,
"src": "3653:17:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Lists_$11702_storage",
"typeString": "struct ConverterRegistryData.Lists storage ref"
}
},
"id": 11868,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "table",
"nodeType": "MemberAccess",
"referencedDeclaration": 11701,
"src": "3653:23:11",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_struct$_List_$11694_storage_$",
"typeString": "mapping(address => struct ConverterRegistryData.List storage ref)"
}
},
"id": 11873,
"indexExpression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 11871,
"name": "_convertibleToken",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11856,
"src": "3685:17:11",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
],
"id": 11870,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "3677:7:11",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 11869,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "3677:7:11",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 11872,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3677:26:11",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "3653:51:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_List_$11694_storage",
"typeString": "struct ConverterRegistryData.List storage ref"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "3633:71:11"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 11876,
"name": "list",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11866,
"src": "3726:4:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_List_$11694_storage_ptr",
"typeString": "struct ConverterRegistryData.List storage pointer"
}
},
"id": 11877,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "items",
"nodeType": "MemberAccess",
"referencedDeclaration": 11693,
"src": "3726:10:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Items_$11689_storage",
"typeString": "struct ConverterRegistryData.Items storage ref"
}
},
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 11880,
"name": "_anchor",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11858,
"src": "3746:7:11",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
],
"id": 11879,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "3738:7:11",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 11878,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "3738:7:11",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 11881,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3738:16:11",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_struct$_Items_$11689_storage",
"typeString": "struct ConverterRegistryData.Items storage ref"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 11875,
"name": "removeItem",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 12323,
"src": "3715:10:11",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Items_$11689_storage_ptr_$_t_address_$returns$__$",
"typeString": "function (struct ConverterRegistryData.Items storage pointer,address)"
}
},
"id": 11882,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3715:40:11",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 11883,
"nodeType": "ExpressionStatement",
"src": "3715:40:11"
},
{
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 11889,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 11884,
"name": "list",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11866,
"src": "3770:4:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_List_$11694_storage_ptr",
"typeString": "struct ConverterRegistryData.List storage pointer"
}
},
"id": 11885,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "items",
"nodeType": "MemberAccess",
"referencedDeclaration": 11693,
"src": "3770:10:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Items_$11689_storage",
"typeString": "struct ConverterRegistryData.Items storage ref"
}
},
"id": 11886,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "array",
"nodeType": "MemberAccess",
"referencedDeclaration": 11684,
"src": "3770:16:11",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage",
"typeString": "address[] storage ref"
}
},
"id": 11887,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "3770:23:11",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"hexValue": "30",
"id": 11888,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3797:1:11",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "3770:28:11",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": null,
"id": 11937,
"nodeType": "IfStatement",
"src": "3766:420:11",
"trueBody": {
"id": 11936,
"nodeType": "Block",
"src": "3800:386:11",
"statements": [
{
"assignments": [
11891
],
"declarations": [
{
"constant": false,
"id": 11891,
"mutability": "mutable",
"name": "lastConvertibleToken",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11936,
"src": "3815:28:11",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 11890,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "3815:7:11",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 11900,
"initialValue": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 11892,
"name": "convertibleTokens",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11708,
"src": "3846:17:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Lists_$11702_storage",
"typeString": "struct ConverterRegistryData.Lists storage ref"
}
},
"id": 11893,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "array",
"nodeType": "MemberAccess",
"referencedDeclaration": 11697,
"src": "3846:23:11",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage",
"typeString": "address[] storage ref"
}
},
"id": 11899,
"indexExpression": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 11898,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 11894,
"name": "convertibleTokens",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11708,
"src": "3870:17:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Lists_$11702_storage",
"typeString": "struct ConverterRegistryData.Lists storage ref"
}
},
"id": 11895,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "array",
"nodeType": "MemberAccess",
"referencedDeclaration": 11697,
"src": "3870:23:11",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage",
"typeString": "address[] storage ref"
}
},
"id": 11896,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "3870:30:11",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "-",
"rightExpression": {
"argumentTypes": null,
"hexValue": "31",
"id": 11897,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3903:1:11",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_1_by_1",
"typeString": "int_const 1"
},
"value": "1"
},
"src": "3870:34:11",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "3846:59:11",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "3815:90:11"
},
{
"expression": {
"argumentTypes": null,
"id": 11909,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 11901,
"name": "convertibleTokens",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11708,
"src": "3920:17:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Lists_$11702_storage",
"typeString": "struct ConverterRegistryData.Lists storage ref"
}
},
"id": 11904,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "table",
"nodeType": "MemberAccess",
"referencedDeclaration": 11701,
"src": "3920:23:11",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_struct$_List_$11694_storage_$",
"typeString": "mapping(address => struct ConverterRegistryData.List storage ref)"
}
},
"id": 11905,
"indexExpression": {
"argumentTypes": null,
"id": 11903,
"name": "lastConvertibleToken",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11891,
"src": "3944:20:11",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "3920:45:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_List_$11694_storage",
"typeString": "struct ConverterRegistryData.List storage ref"
}
},
"id": 11906,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"memberName": "index",
"nodeType": "MemberAccess",
"referencedDeclaration": 11691,
"src": "3920:51:11",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 11907,
"name": "list",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11866,
"src": "3974:4:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_List_$11694_storage_ptr",
"typeString": "struct ConverterRegistryData.List storage pointer"
}
},
"id": 11908,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "index",
"nodeType": "MemberAccess",
"referencedDeclaration": 11691,
"src": "3974:10:11",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "3920:64:11",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 11910,
"nodeType": "ExpressionStatement",
"src": "3920:64:11"
},
{
"expression": {
"argumentTypes": null,
"id": 11918,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 11911,
"name": "convertibleTokens",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11708,
"src": "3999:17:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Lists_$11702_storage",
"typeString": "struct ConverterRegistryData.Lists storage ref"
}
},
"id": 11915,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "array",
"nodeType": "MemberAccess",
"referencedDeclaration": 11697,
"src": "3999:23:11",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage",
"typeString": "address[] storage ref"
}
},
"id": 11916,
"indexExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 11913,
"name": "list",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11866,
"src": "4023:4:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_List_$11694_storage_ptr",
"typeString": "struct ConverterRegistryData.List storage pointer"
}
},
"id": 11914,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "index",
"nodeType": "MemberAccess",
"referencedDeclaration": 11691,
"src": "4023:10:11",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "3999:35:11",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 11917,
"name": "lastConvertibleToken",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11891,
"src": "4037:20:11",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "3999:58:11",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 11919,
"nodeType": "ExpressionStatement",
"src": "3999:58:11"
},
{
"expression": {
"argumentTypes": null,
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 11920,
"name": "convertibleTokens",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11708,
"src": "4072:17:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Lists_$11702_storage",
"typeString": "struct ConverterRegistryData.Lists storage ref"
}
},
"id": 11923,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "array",
"nodeType": "MemberAccess",
"referencedDeclaration": 11697,
"src": "4072:23:11",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage",
"typeString": "address[] storage ref"
}
},
"id": 11924,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "pop",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "4072:27:11",
"typeDescriptions": {
"typeIdentifier": "t_function_arraypop_nonpayable$__$returns$__$",
"typeString": "function ()"
}
},
"id": 11925,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "4072:29:11",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 11926,
"nodeType": "ExpressionStatement",
"src": "4072:29:11"
},
{
"expression": {
"argumentTypes": null,
"id": 11934,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "delete",
"prefix": true,
"src": "4116:58:11",
"subExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 11927,
"name": "convertibleTokens",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11708,
"src": "4123:17:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Lists_$11702_storage",
"typeString": "struct ConverterRegistryData.Lists storage ref"
}
},
"id": 11928,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "table",
"nodeType": "MemberAccess",
"referencedDeclaration": 11701,
"src": "4123:23:11",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_struct$_List_$11694_storage_$",
"typeString": "mapping(address => struct ConverterRegistryData.List storage ref)"
}
},
"id": 11933,
"indexExpression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 11931,
"name": "_convertibleToken",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11856,
"src": "4155:17:11",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
],
"id": 11930,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "4147:7:11",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 11929,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "4147:7:11",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 11932,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "4147:26:11",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "4123:51:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_List_$11694_storage",
"typeString": "struct ConverterRegistryData.List storage ref"
}
},
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 11935,
"nodeType": "ExpressionStatement",
"src": "4116:58:11"
}
]
}
}
]
},
"documentation": {
"id": 11854,
"nodeType": "StructuredDocumentation",
"src": "3307:177:11",
"text": " @dev removes a convertible token\n @param _convertibleToken convertible token\n @param _anchor associated smart token"
},
"functionSelector": "fba8f031",
"id": 11939,
"implemented": true,
"kind": "function",
"modifiers": [
{
"arguments": [
{
"argumentTypes": null,
"id": 11862,
"name": "CONVERTER_REGISTRY",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21545,
"src": "3602:18:11",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
}
],
"id": 11863,
"modifierName": {
"argumentTypes": null,
"id": 11861,
"name": "only",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21577,
"src": "3597:4:11",
"typeDescriptions": {
"typeIdentifier": "t_modifier$_t_bytes32_$",
"typeString": "modifier (bytes32)"
}
},
"nodeType": "ModifierInvocation",
"src": "3597:24:11"
}
],
"name": "removeConvertibleToken",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 11860,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "3588:8:11"
},
"parameters": {
"id": 11859,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 11856,
"mutability": "mutable",
"name": "_convertibleToken",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11939,
"src": "3522:29:11",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
},
"typeName": {
"contractScope": null,
"id": 11855,
"name": "IERC20Token",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 21127,
"src": "3522:11:11",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 11858,
"mutability": "mutable",
"name": "_anchor",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11939,
"src": "3553:24:11",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
},
"typeName": {
"contractScope": null,
"id": 11857,
"name": "IConverterAnchor",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 13349,
"src": "3553:16:11",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "3521:57:11"
},
"returnParameters": {
"id": 11864,
"nodeType": "ParameterList",
"parameters": [],
"src": "3622:0:11"
},
"scope": 12324,
"src": "3490:703:11",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
},
{
"baseFunctions": [
13543
],
"body": {
"id": 11950,
"nodeType": "Block",
"src": "4387:50:11",
"statements": [
{
"expression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 11946,
"name": "smartTokens",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11704,
"src": "4405:11:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Items_$11689_storage",
"typeString": "struct ConverterRegistryData.Items storage ref"
}
},
"id": 11947,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "array",
"nodeType": "MemberAccess",
"referencedDeclaration": 11684,
"src": "4405:17:11",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage",
"typeString": "address[] storage ref"
}
},
"id": 11948,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "4405:24:11",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"functionReturnParameters": 11945,
"id": 11949,
"nodeType": "Return",
"src": "4398:31:11"
}
]
},
"documentation": {
"id": 11940,
"nodeType": "StructuredDocumentation",
"src": "4201:109:11",
"text": " @dev returns the number of smart tokens\n @return number of smart tokens"
},
"functionSelector": "e571049b",
"id": 11951,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "getSmartTokenCount",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 11942,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "4360:8:11"
},
"parameters": {
"id": 11941,
"nodeType": "ParameterList",
"parameters": [],
"src": "4343:2:11"
},
"returnParameters": {
"id": 11945,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 11944,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11951,
"src": "4378:7:11",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 11943,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "4378:7:11",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "4377:9:11"
},
"scope": 12324,
"src": "4316:121:11",
"stateMutability": "view",
"virtual": false,
"visibility": "external"
},
{
"baseFunctions": [
13549
],
"body": {
"id": 11962,
"nodeType": "Block",
"src": "4632:43:11",
"statements": [
{
"expression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 11959,
"name": "smartTokens",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11704,
"src": "4650:11:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Items_$11689_storage",
"typeString": "struct ConverterRegistryData.Items storage ref"
}
},
"id": 11960,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "array",
"nodeType": "MemberAccess",
"referencedDeclaration": 11684,
"src": "4650:17:11",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage",
"typeString": "address[] storage ref"
}
},
"functionReturnParameters": 11958,
"id": 11961,
"nodeType": "Return",
"src": "4643:24:11"
}
]
},
"documentation": {
"id": 11952,
"nodeType": "StructuredDocumentation",
"src": "4445:105:11",
"text": " @dev returns the list of smart tokens\n @return list of smart tokens"
},
"functionSelector": "04ceaf41",
"id": 11963,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "getSmartTokens",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 11954,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "4596:8:11"
},
"parameters": {
"id": 11953,
"nodeType": "ParameterList",
"parameters": [],
"src": "4579:2:11"
},
"returnParameters": {
"id": 11958,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 11957,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11963,
"src": "4614:16:11",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[]"
},
"typeName": {
"baseType": {
"id": 11955,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "4614:7:11",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 11956,
"length": null,
"nodeType": "ArrayTypeName",
"src": "4614:9:11",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
"typeString": "address[]"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "4613:18:11"
},
"scope": 12324,
"src": "4556:119:11",
"stateMutability": "view",
"virtual": false,
"visibility": "external"
},
{
"baseFunctions": [
13556
],
"body": {
"id": 11979,
"nodeType": "Block",
"src": "4930:69:11",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 11973,
"name": "smartTokens",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11704,
"src": "4965:11:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Items_$11689_storage",
"typeString": "struct ConverterRegistryData.Items storage ref"
}
},
"id": 11974,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "array",
"nodeType": "MemberAccess",
"referencedDeclaration": 11684,
"src": "4965:17:11",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage",
"typeString": "address[] storage ref"
}
},
"id": 11976,
"indexExpression": {
"argumentTypes": null,
"id": 11975,
"name": "_index",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11966,
"src": "4983:6:11",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "4965:25:11",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 11972,
"name": "IConverterAnchor",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 13349,
"src": "4948:16:11",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_IConverterAnchor_$13349_$",
"typeString": "type(contract IConverterAnchor)"
}
},
"id": 11977,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "4948:43:11",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
},
"functionReturnParameters": 11971,
"id": 11978,
"nodeType": "Return",
"src": "4941:50:11"
}
]
},
"documentation": {
"id": 11964,
"nodeType": "StructuredDocumentation",
"src": "4683:152:11",
"text": " @dev returns the smart token at a given index\n @param _index index\n @return smart token at the given index"
},
"functionSelector": "a109d214",
"id": 11980,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "getSmartToken",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 11968,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "4894:8:11"
},
"parameters": {
"id": 11967,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 11966,
"mutability": "mutable",
"name": "_index",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11980,
"src": "4864:14:11",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 11965,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "4864:7:11",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "4863:16:11"
},
"returnParameters": {
"id": 11971,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 11970,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11980,
"src": "4912:16:11",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
},
"typeName": {
"contractScope": null,
"id": 11969,
"name": "IConverterAnchor",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 13349,
"src": "4912:16:11",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "4911:18:11"
},
"scope": 12324,
"src": "4841:158:11",
"stateMutability": "view",
"virtual": false,
"visibility": "external"
},
{
"baseFunctions": [
13563
],
"body": {
"id": 11995,
"nodeType": "Block",
"src": "5277:57:11",
"statements": [
{
"expression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 11989,
"name": "smartTokens",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11704,
"src": "5295:11:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Items_$11689_storage",
"typeString": "struct ConverterRegistryData.Items storage ref"
}
},
"id": 11990,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "table",
"nodeType": "MemberAccess",
"referencedDeclaration": 11688,
"src": "5295:17:11",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_struct$_Item_$11681_storage_$",
"typeString": "mapping(address => struct ConverterRegistryData.Item storage ref)"
}
},
"id": 11992,
"indexExpression": {
"argumentTypes": null,
"id": 11991,
"name": "_value",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11983,
"src": "5313:6:11",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "5295:25:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Item_$11681_storage",
"typeString": "struct ConverterRegistryData.Item storage ref"
}
},
"id": 11993,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "valid",
"nodeType": "MemberAccess",
"referencedDeclaration": 11678,
"src": "5295:31:11",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"functionReturnParameters": 11988,
"id": 11994,
"nodeType": "Return",
"src": "5288:38:11"
}
]
},
"documentation": {
"id": 11981,
"nodeType": "StructuredDocumentation",
"src": "5007:188:11",
"text": " @dev checks whether or not a given value is a smart token\n @param _value value\n @return true if the given value is a smart token, false if not"
},
"functionSelector": "4123ef60",
"id": 11996,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "isSmartToken",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 11985,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "5253:8:11"
},
"parameters": {
"id": 11984,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 11983,
"mutability": "mutable",
"name": "_value",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11996,
"src": "5223:14:11",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 11982,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "5223:7:11",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "5222:16:11"
},
"returnParameters": {
"id": 11988,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 11987,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11996,
"src": "5271:4:11",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 11986,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "5271:4:11",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "5270:6:11"
},
"scope": 12324,
"src": "5201:133:11",
"stateMutability": "view",
"virtual": false,
"visibility": "external"
},
{
"baseFunctions": [
13568
],
"body": {
"id": 12007,
"nodeType": "Block",
"src": "5537:53:11",
"statements": [
{
"expression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 12003,
"name": "liquidityPools",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11706,
"src": "5555:14:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Items_$11689_storage",
"typeString": "struct ConverterRegistryData.Items storage ref"
}
},
"id": 12004,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "array",
"nodeType": "MemberAccess",
"referencedDeclaration": 11684,
"src": "5555:20:11",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage",
"typeString": "address[] storage ref"
}
},
"id": 12005,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "5555:27:11",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"functionReturnParameters": 12002,
"id": 12006,
"nodeType": "Return",
"src": "5548:34:11"
}
]
},
"documentation": {
"id": 11997,
"nodeType": "StructuredDocumentation",
"src": "5342:115:11",
"text": " @dev returns the number of liquidity pools\n @return number of liquidity pools"
},
"functionSelector": "7a5f0ffd",
"id": 12008,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "getLiquidityPoolCount",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 11999,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "5510:8:11"
},
"parameters": {
"id": 11998,
"nodeType": "ParameterList",
"parameters": [],
"src": "5493:2:11"
},
"returnParameters": {
"id": 12002,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 12001,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 12008,
"src": "5528:7:11",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 12000,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "5528:7:11",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "5527:9:11"
},
"scope": 12324,
"src": "5463:127:11",
"stateMutability": "view",
"virtual": false,
"visibility": "external"
},
{
"baseFunctions": [
13574
],
"body": {
"id": 12019,
"nodeType": "Block",
"src": "5794:46:11",
"statements": [
{
"expression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 12016,
"name": "liquidityPools",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11706,
"src": "5812:14:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Items_$11689_storage",
"typeString": "struct ConverterRegistryData.Items storage ref"
}
},
"id": 12017,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "array",
"nodeType": "MemberAccess",
"referencedDeclaration": 11684,
"src": "5812:20:11",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage",
"typeString": "address[] storage ref"
}
},
"functionReturnParameters": 12015,
"id": 12018,
"nodeType": "Return",
"src": "5805:27:11"
}
]
},
"documentation": {
"id": 12009,
"nodeType": "StructuredDocumentation",
"src": "5598:111:11",
"text": " @dev returns the list of liquidity pools\n @return list of liquidity pools"
},
"functionSelector": "7f45c4c3",
"id": 12020,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "getLiquidityPools",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 12011,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "5758:8:11"
},
"parameters": {
"id": 12010,
"nodeType": "ParameterList",
"parameters": [],
"src": "5741:2:11"
},
"returnParameters": {
"id": 12015,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 12014,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 12020,
"src": "5776:16:11",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[]"
},
"typeName": {
"baseType": {
"id": 12012,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "5776:7:11",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 12013,
"length": null,
"nodeType": "ArrayTypeName",
"src": "5776:9:11",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
"typeString": "address[]"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "5775:18:11"
},
"scope": 12324,
"src": "5715:125:11",
"stateMutability": "view",
"virtual": false,
"visibility": "external"
},
{
"baseFunctions": [
13581
],
"body": {
"id": 12036,
"nodeType": "Block",
"src": "6104:72:11",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 12030,
"name": "liquidityPools",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11706,
"src": "6139:14:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Items_$11689_storage",
"typeString": "struct ConverterRegistryData.Items storage ref"
}
},
"id": 12031,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "array",
"nodeType": "MemberAccess",
"referencedDeclaration": 11684,
"src": "6139:20:11",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage",
"typeString": "address[] storage ref"
}
},
"id": 12033,
"indexExpression": {
"argumentTypes": null,
"id": 12032,
"name": "_index",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 12023,
"src": "6160:6:11",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "6139:28:11",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 12029,
"name": "IConverterAnchor",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 13349,
"src": "6122:16:11",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_IConverterAnchor_$13349_$",
"typeString": "type(contract IConverterAnchor)"
}
},
"id": 12034,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "6122:46:11",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
},
"functionReturnParameters": 12028,
"id": 12035,
"nodeType": "Return",
"src": "6115:53:11"
}
]
},
"documentation": {
"id": 12021,
"nodeType": "StructuredDocumentation",
"src": "5848:158:11",
"text": " @dev returns the liquidity pool at a given index\n @param _index index\n @return liquidity pool at the given index"
},
"functionSelector": "a74498aa",
"id": 12037,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "getLiquidityPool",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 12025,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "6068:8:11"
},
"parameters": {
"id": 12024,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 12023,
"mutability": "mutable",
"name": "_index",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 12037,
"src": "6038:14:11",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 12022,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "6038:7:11",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "6037:16:11"
},
"returnParameters": {
"id": 12028,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 12027,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 12037,
"src": "6086:16:11",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
},
"typeName": {
"contractScope": null,
"id": 12026,
"name": "IConverterAnchor",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 13349,
"src": "6086:16:11",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "6085:18:11"
},
"scope": 12324,
"src": "6012:164:11",
"stateMutability": "view",
"virtual": false,
"visibility": "external"
},
{
"baseFunctions": [
13588
],
"body": {
"id": 12052,
"nodeType": "Block",
"src": "6463:60:11",
"statements": [
{
"expression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 12046,
"name": "liquidityPools",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11706,
"src": "6481:14:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Items_$11689_storage",
"typeString": "struct ConverterRegistryData.Items storage ref"
}
},
"id": 12047,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "table",
"nodeType": "MemberAccess",
"referencedDeclaration": 11688,
"src": "6481:20:11",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_struct$_Item_$11681_storage_$",
"typeString": "mapping(address => struct ConverterRegistryData.Item storage ref)"
}
},
"id": 12049,
"indexExpression": {
"argumentTypes": null,
"id": 12048,
"name": "_value",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 12040,
"src": "6502:6:11",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "6481:28:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Item_$11681_storage",
"typeString": "struct ConverterRegistryData.Item storage ref"
}
},
"id": 12050,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "valid",
"nodeType": "MemberAccess",
"referencedDeclaration": 11678,
"src": "6481:34:11",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"functionReturnParameters": 12045,
"id": 12051,
"nodeType": "Return",
"src": "6474:41:11"
}
]
},
"documentation": {
"id": 12038,
"nodeType": "StructuredDocumentation",
"src": "6184:194:11",
"text": " @dev checks whether or not a given value is a liquidity pool\n @param _value value\n @return true if the given value is a liquidity pool, false if not"
},
"functionSelector": "e85455d7",
"id": 12053,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "isLiquidityPool",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 12042,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "6439:8:11"
},
"parameters": {
"id": 12041,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 12040,
"mutability": "mutable",
"name": "_value",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 12053,
"src": "6409:14:11",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 12039,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "6409:7:11",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "6408:16:11"
},
"returnParameters": {
"id": 12045,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 12044,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 12053,
"src": "6457:4:11",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 12043,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "6457:4:11",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "6456:6:11"
},
"scope": 12324,
"src": "6384:139:11",
"stateMutability": "view",
"virtual": false,
"visibility": "external"
},
{
"baseFunctions": [
13593
],
"body": {
"id": 12064,
"nodeType": "Block",
"src": "6735:56:11",
"statements": [
{
"expression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 12060,
"name": "convertibleTokens",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11708,
"src": "6753:17:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Lists_$11702_storage",
"typeString": "struct ConverterRegistryData.Lists storage ref"
}
},
"id": 12061,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "array",
"nodeType": "MemberAccess",
"referencedDeclaration": 11697,
"src": "6753:23:11",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage",
"typeString": "address[] storage ref"
}
},
"id": 12062,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "6753:30:11",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"functionReturnParameters": 12059,
"id": 12063,
"nodeType": "Return",
"src": "6746:37:11"
}
]
},
"documentation": {
"id": 12054,
"nodeType": "StructuredDocumentation",
"src": "6531:121:11",
"text": " @dev returns the number of convertible tokens\n @return number of convertible tokens"
},
"functionSelector": "69be4784",
"id": 12065,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "getConvertibleTokenCount",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 12056,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "6708:8:11"
},
"parameters": {
"id": 12055,
"nodeType": "ParameterList",
"parameters": [],
"src": "6691:2:11"
},
"returnParameters": {
"id": 12059,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 12058,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 12065,
"src": "6726:7:11",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 12057,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "6726:7:11",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "6725:9:11"
},
"scope": 12324,
"src": "6658:133:11",
"stateMutability": "view",
"virtual": false,
"visibility": "external"
},
{
"baseFunctions": [
13599
],
"body": {
"id": 12076,
"nodeType": "Block",
"src": "7004:49:11",
"statements": [
{
"expression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 12073,
"name": "convertibleTokens",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11708,
"src": "7022:17:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Lists_$11702_storage",
"typeString": "struct ConverterRegistryData.Lists storage ref"
}
},
"id": 12074,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "array",
"nodeType": "MemberAccess",
"referencedDeclaration": 11697,
"src": "7022:23:11",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage",
"typeString": "address[] storage ref"
}
},
"functionReturnParameters": 12072,
"id": 12075,
"nodeType": "Return",
"src": "7015:30:11"
}
]
},
"documentation": {
"id": 12066,
"nodeType": "StructuredDocumentation",
"src": "6799:117:11",
"text": " @dev returns the list of convertible tokens\n @return list of convertible tokens"
},
"functionSelector": "5f1b50fe",
"id": 12077,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "getConvertibleTokens",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 12068,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "6968:8:11"
},
"parameters": {
"id": 12067,
"nodeType": "ParameterList",
"parameters": [],
"src": "6951:2:11"
},
"returnParameters": {
"id": 12072,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 12071,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 12077,
"src": "6986:16:11",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[]"
},
"typeName": {
"baseType": {
"id": 12069,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "6986:7:11",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 12070,
"length": null,
"nodeType": "ArrayTypeName",
"src": "6986:9:11",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
"typeString": "address[]"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "6985:18:11"
},
"scope": 12324,
"src": "6922:131:11",
"stateMutability": "view",
"virtual": false,
"visibility": "external"
},
{
"baseFunctions": [
13606
],
"body": {
"id": 12093,
"nodeType": "Block",
"src": "7321:70:11",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 12087,
"name": "convertibleTokens",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11708,
"src": "7351:17:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Lists_$11702_storage",
"typeString": "struct ConverterRegistryData.Lists storage ref"
}
},
"id": 12088,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "array",
"nodeType": "MemberAccess",
"referencedDeclaration": 11697,
"src": "7351:23:11",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage",
"typeString": "address[] storage ref"
}
},
"id": 12090,
"indexExpression": {
"argumentTypes": null,
"id": 12089,
"name": "_index",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 12080,
"src": "7375:6:11",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "7351:31:11",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 12086,
"name": "IERC20Token",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21127,
"src": "7339:11:11",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_IERC20Token_$21127_$",
"typeString": "type(contract IERC20Token)"
}
},
"id": 12091,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "7339:44:11",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
},
"functionReturnParameters": 12085,
"id": 12092,
"nodeType": "Return",
"src": "7332:51:11"
}
]
},
"documentation": {
"id": 12078,
"nodeType": "StructuredDocumentation",
"src": "7061:164:11",
"text": " @dev returns the convertible token at a given index\n @param _index index\n @return convertible token at the given index"
},
"functionSelector": "865cf194",
"id": 12094,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "getConvertibleToken",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 12082,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "7290:8:11"
},
"parameters": {
"id": 12081,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 12080,
"mutability": "mutable",
"name": "_index",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 12094,
"src": "7260:14:11",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 12079,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "7260:7:11",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "7259:16:11"
},
"returnParameters": {
"id": 12085,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 12084,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 12094,
"src": "7308:11:11",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
},
"typeName": {
"contractScope": null,
"id": 12083,
"name": "IERC20Token",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 21127,
"src": "7308:11:11",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "7307:13:11"
},
"scope": 12324,
"src": "7231:160:11",
"stateMutability": "view",
"virtual": false,
"visibility": "external"
},
{
"baseFunctions": [
13613
],
"body": {
"id": 12113,
"nodeType": "Block",
"src": "7687:80:11",
"statements": [
{
"expression": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 12111,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 12103,
"name": "convertibleTokens",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11708,
"src": "7705:17:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Lists_$11702_storage",
"typeString": "struct ConverterRegistryData.Lists storage ref"
}
},
"id": 12104,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "table",
"nodeType": "MemberAccess",
"referencedDeclaration": 11701,
"src": "7705:23:11",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_struct$_List_$11694_storage_$",
"typeString": "mapping(address => struct ConverterRegistryData.List storage ref)"
}
},
"id": 12106,
"indexExpression": {
"argumentTypes": null,
"id": 12105,
"name": "_value",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 12097,
"src": "7729:6:11",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "7705:31:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_List_$11694_storage",
"typeString": "struct ConverterRegistryData.List storage ref"
}
},
"id": 12107,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "items",
"nodeType": "MemberAccess",
"referencedDeclaration": 11693,
"src": "7705:37:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Items_$11689_storage",
"typeString": "struct ConverterRegistryData.Items storage ref"
}
},
"id": 12108,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "array",
"nodeType": "MemberAccess",
"referencedDeclaration": 11684,
"src": "7705:43:11",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage",
"typeString": "address[] storage ref"
}
},
"id": 12109,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "7705:50:11",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": ">",
"rightExpression": {
"argumentTypes": null,
"hexValue": "30",
"id": 12110,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "7758:1:11",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "7705:54:11",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"functionReturnParameters": 12102,
"id": 12112,
"nodeType": "Return",
"src": "7698:61:11"
}
]
},
"documentation": {
"id": 12095,
"nodeType": "StructuredDocumentation",
"src": "7399:200:11",
"text": " @dev checks whether or not a given value is a convertible token\n @param _value value\n @return true if the given value is a convertible token, false if not"
},
"functionSelector": "3ab8857c",
"id": 12114,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "isConvertibleToken",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 12099,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "7663:8:11"
},
"parameters": {
"id": 12098,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 12097,
"mutability": "mutable",
"name": "_value",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 12114,
"src": "7633:14:11",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 12096,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "7633:7:11",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "7632:16:11"
},
"returnParameters": {
"id": 12102,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 12101,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 12114,
"src": "7681:4:11",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 12100,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "7681:4:11",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "7680:6:11"
},
"scope": 12324,
"src": "7605:162:11",
"stateMutability": "view",
"virtual": false,
"visibility": "external"
},
{
"baseFunctions": [
13620
],
"body": {
"id": 12134,
"nodeType": "Block",
"src": "8144:96:11",
"statements": [
{
"expression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 12123,
"name": "convertibleTokens",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11708,
"src": "8162:17:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Lists_$11702_storage",
"typeString": "struct ConverterRegistryData.Lists storage ref"
}
},
"id": 12124,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "table",
"nodeType": "MemberAccess",
"referencedDeclaration": 11701,
"src": "8162:23:11",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_struct$_List_$11694_storage_$",
"typeString": "mapping(address => struct ConverterRegistryData.List storage ref)"
}
},
"id": 12129,
"indexExpression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 12127,
"name": "_convertibleToken",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 12117,
"src": "8194:17:11",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
],
"id": 12126,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "8186:7:11",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 12125,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "8186:7:11",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 12128,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "8186:26:11",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "8162:51:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_List_$11694_storage",
"typeString": "struct ConverterRegistryData.List storage ref"
}
},
"id": 12130,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "items",
"nodeType": "MemberAccess",
"referencedDeclaration": 11693,
"src": "8162:57:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Items_$11689_storage",
"typeString": "struct ConverterRegistryData.Items storage ref"
}
},
"id": 12131,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "array",
"nodeType": "MemberAccess",
"referencedDeclaration": 11684,
"src": "8162:63:11",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage",
"typeString": "address[] storage ref"
}
},
"id": 12132,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "8162:70:11",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"functionReturnParameters": 12122,
"id": 12133,
"nodeType": "Return",
"src": "8155:77:11"
}
]
},
"documentation": {
"id": 12115,
"nodeType": "StructuredDocumentation",
"src": "7775:247:11",
"text": " @dev returns the number of smart tokens associated with a given convertible token\n @param _convertibleToken convertible token\n @return number of smart tokens associated with the given convertible token"
},
"functionSelector": "a43d5e94",
"id": 12135,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "getConvertibleTokenSmartTokenCount",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 12119,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "8117:8:11"
},
"parameters": {
"id": 12118,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 12117,
"mutability": "mutable",
"name": "_convertibleToken",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 12135,
"src": "8072:29:11",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
},
"typeName": {
"contractScope": null,
"id": 12116,
"name": "IERC20Token",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 21127,
"src": "8072:11:11",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "8071:31:11"
},
"returnParameters": {
"id": 12122,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 12121,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 12135,
"src": "8135:7:11",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 12120,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "8135:7:11",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "8134:9:11"
},
"scope": 12324,
"src": "8028:212:11",
"stateMutability": "view",
"virtual": false,
"visibility": "external"
},
{
"baseFunctions": [
13628
],
"body": {
"id": 12155,
"nodeType": "Block",
"src": "8618:89:11",
"statements": [
{
"expression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 12145,
"name": "convertibleTokens",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11708,
"src": "8636:17:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Lists_$11702_storage",
"typeString": "struct ConverterRegistryData.Lists storage ref"
}
},
"id": 12146,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "table",
"nodeType": "MemberAccess",
"referencedDeclaration": 11701,
"src": "8636:23:11",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_struct$_List_$11694_storage_$",
"typeString": "mapping(address => struct ConverterRegistryData.List storage ref)"
}
},
"id": 12151,
"indexExpression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 12149,
"name": "_convertibleToken",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 12138,
"src": "8668:17:11",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
],
"id": 12148,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "8660:7:11",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 12147,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "8660:7:11",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 12150,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "8660:26:11",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "8636:51:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_List_$11694_storage",
"typeString": "struct ConverterRegistryData.List storage ref"
}
},
"id": 12152,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "items",
"nodeType": "MemberAccess",
"referencedDeclaration": 11693,
"src": "8636:57:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Items_$11689_storage",
"typeString": "struct ConverterRegistryData.Items storage ref"
}
},
"id": 12153,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "array",
"nodeType": "MemberAccess",
"referencedDeclaration": 11684,
"src": "8636:63:11",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage",
"typeString": "address[] storage ref"
}
},
"functionReturnParameters": 12144,
"id": 12154,
"nodeType": "Return",
"src": "8629:70:11"
}
]
},
"documentation": {
"id": 12136,
"nodeType": "StructuredDocumentation",
"src": "8248:243:11",
"text": " @dev returns the list of smart tokens associated with a given convertible token\n @param _convertibleToken convertible token\n @return list of smart tokens associated with the given convertible token"
},
"functionSelector": "f4fb86c0",
"id": 12156,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "getConvertibleTokenSmartTokens",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 12140,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "8582:8:11"
},
"parameters": {
"id": 12139,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 12138,
"mutability": "mutable",
"name": "_convertibleToken",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 12156,
"src": "8537:29:11",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
},
"typeName": {
"contractScope": null,
"id": 12137,
"name": "IERC20Token",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 21127,
"src": "8537:11:11",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "8536:31:11"
},
"returnParameters": {
"id": 12144,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 12143,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 12156,
"src": "8600:16:11",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[]"
},
"typeName": {
"baseType": {
"id": 12141,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "8600:7:11",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 12142,
"length": null,
"nodeType": "ArrayTypeName",
"src": "8600:9:11",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
"typeString": "address[]"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "8599:18:11"
},
"scope": 12324,
"src": "8497:210:11",
"stateMutability": "view",
"virtual": false,
"visibility": "external"
},
{
"baseFunctions": [
13637
],
"body": {
"id": 12181,
"nodeType": "Block",
"src": "9095:115:11",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 12168,
"name": "convertibleTokens",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11708,
"src": "9130:17:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Lists_$11702_storage",
"typeString": "struct ConverterRegistryData.Lists storage ref"
}
},
"id": 12169,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "table",
"nodeType": "MemberAccess",
"referencedDeclaration": 11701,
"src": "9130:23:11",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_struct$_List_$11694_storage_$",
"typeString": "mapping(address => struct ConverterRegistryData.List storage ref)"
}
},
"id": 12174,
"indexExpression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 12172,
"name": "_convertibleToken",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 12159,
"src": "9162:17:11",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
],
"id": 12171,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "9154:7:11",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 12170,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "9154:7:11",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 12173,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "9154:26:11",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "9130:51:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_List_$11694_storage",
"typeString": "struct ConverterRegistryData.List storage ref"
}
},
"id": 12175,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "items",
"nodeType": "MemberAccess",
"referencedDeclaration": 11693,
"src": "9130:57:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Items_$11689_storage",
"typeString": "struct ConverterRegistryData.Items storage ref"
}
},
"id": 12176,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "array",
"nodeType": "MemberAccess",
"referencedDeclaration": 11684,
"src": "9130:63:11",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage",
"typeString": "address[] storage ref"
}
},
"id": 12178,
"indexExpression": {
"argumentTypes": null,
"id": 12177,
"name": "_index",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 12161,
"src": "9194:6:11",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "9130:71:11",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 12167,
"name": "IConverterAnchor",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 13349,
"src": "9113:16:11",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_IConverterAnchor_$13349_$",
"typeString": "type(contract IConverterAnchor)"
}
},
"id": 12179,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "9113:89:11",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
},
"functionReturnParameters": 12166,
"id": 12180,
"nodeType": "Return",
"src": "9106:96:11"
}
]
},
"documentation": {
"id": 12157,
"nodeType": "StructuredDocumentation",
"src": "8715:238:11",
"text": " @dev returns the smart token associated with a given convertible token at a given index\n @param _index index\n @return smart token associated with the given convertible token at the given index"
},
"functionSelector": "d6c4b5b2",
"id": 12182,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "getConvertibleTokenSmartToken",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 12163,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "9059:8:11"
},
"parameters": {
"id": 12162,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 12159,
"mutability": "mutable",
"name": "_convertibleToken",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 12182,
"src": "8998:29:11",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
},
"typeName": {
"contractScope": null,
"id": 12158,
"name": "IERC20Token",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 21127,
"src": "8998:11:11",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 12161,
"mutability": "mutable",
"name": "_index",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 12182,
"src": "9029:14:11",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 12160,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "9029:7:11",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "8997:47:11"
},
"returnParameters": {
"id": 12166,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 12165,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 12182,
"src": "9077:16:11",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
},
"typeName": {
"contractScope": null,
"id": 12164,
"name": "IConverterAnchor",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 13349,
"src": "9077:16:11",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "9076:18:11"
},
"scope": 12324,
"src": "8959:251:11",
"stateMutability": "view",
"virtual": false,
"visibility": "external"
},
{
"baseFunctions": [
13646
],
"body": {
"id": 12206,
"nodeType": "Block",
"src": "9647:103:11",
"statements": [
{
"expression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 12193,
"name": "convertibleTokens",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11708,
"src": "9665:17:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Lists_$11702_storage",
"typeString": "struct ConverterRegistryData.Lists storage ref"
}
},
"id": 12194,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "table",
"nodeType": "MemberAccess",
"referencedDeclaration": 11701,
"src": "9665:23:11",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_struct$_List_$11694_storage_$",
"typeString": "mapping(address => struct ConverterRegistryData.List storage ref)"
}
},
"id": 12199,
"indexExpression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 12197,
"name": "_convertibleToken",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 12185,
"src": "9697:17:11",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
],
"id": 12196,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "9689:7:11",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 12195,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "9689:7:11",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 12198,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "9689:26:11",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "9665:51:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_List_$11694_storage",
"typeString": "struct ConverterRegistryData.List storage ref"
}
},
"id": 12200,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "items",
"nodeType": "MemberAccess",
"referencedDeclaration": 11693,
"src": "9665:57:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Items_$11689_storage",
"typeString": "struct ConverterRegistryData.Items storage ref"
}
},
"id": 12201,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "table",
"nodeType": "MemberAccess",
"referencedDeclaration": 11688,
"src": "9665:63:11",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_struct$_Item_$11681_storage_$",
"typeString": "mapping(address => struct ConverterRegistryData.Item storage ref)"
}
},
"id": 12203,
"indexExpression": {
"argumentTypes": null,
"id": 12202,
"name": "_value",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 12187,
"src": "9729:6:11",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "9665:71:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Item_$11681_storage",
"typeString": "struct ConverterRegistryData.Item storage ref"
}
},
"id": 12204,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "valid",
"nodeType": "MemberAccess",
"referencedDeclaration": 11678,
"src": "9665:77:11",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"functionReturnParameters": 12192,
"id": 12205,
"nodeType": "Return",
"src": "9658:84:11"
}
]
},
"documentation": {
"id": 12183,
"nodeType": "StructuredDocumentation",
"src": "9218:300:11",
"text": " @dev checks whether or not a given value is a smart token of a given convertible token\n @param _convertibleToken convertible token\n @param _value value\n @return true if the given value is a smart token of the given convertible token, false it not"
},
"functionSelector": "725b8786",
"id": 12207,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "isConvertibleTokenSmartToken",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 12189,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "9623:8:11"
},
"parameters": {
"id": 12188,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 12185,
"mutability": "mutable",
"name": "_convertibleToken",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 12207,
"src": "9562:29:11",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
},
"typeName": {
"contractScope": null,
"id": 12184,
"name": "IERC20Token",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 21127,
"src": "9562:11:11",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 12187,
"mutability": "mutable",
"name": "_value",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 12207,
"src": "9593:14:11",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 12186,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "9593:7:11",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "9561:47:11"
},
"returnParameters": {
"id": 12192,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 12191,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 12207,
"src": "9641:4:11",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 12190,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "9641:4:11",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "9640:6:11"
},
"scope": 12324,
"src": "9524:226:11",
"stateMutability": "view",
"virtual": false,
"visibility": "external"
},
{
"body": {
"id": 12254,
"nodeType": "Block",
"src": "9988:219:11",
"statements": [
{
"assignments": [
12219
],
"declarations": [
{
"constant": false,
"id": 12219,
"mutability": "mutable",
"name": "item",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 12254,
"src": "9999:17:11",
"stateVariable": false,
"storageLocation": "storage",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Item_$11681_storage_ptr",
"typeString": "struct ConverterRegistryData.Item"
},
"typeName": {
"contractScope": null,
"id": 12218,
"name": "Item",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 11681,
"src": "9999:4:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Item_$11681_storage_ptr",
"typeString": "struct ConverterRegistryData.Item"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 12224,
"initialValue": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 12220,
"name": "_items",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 12210,
"src": "10019:6:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Items_$11689_storage_ptr",
"typeString": "struct ConverterRegistryData.Items storage pointer"
}
},
"id": 12221,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "table",
"nodeType": "MemberAccess",
"referencedDeclaration": 11688,
"src": "10019:12:11",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_struct$_Item_$11681_storage_$",
"typeString": "mapping(address => struct ConverterRegistryData.Item storage ref)"
}
},
"id": 12223,
"indexExpression": {
"argumentTypes": null,
"id": 12222,
"name": "_value",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 12212,
"src": "10032:6:11",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "10019:20:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Item_$11681_storage",
"typeString": "struct ConverterRegistryData.Item storage ref"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "9999:40:11"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 12228,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "!",
"prefix": true,
"src": "10058:11:11",
"subExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 12226,
"name": "item",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 12219,
"src": "10059:4:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Item_$11681_storage_ptr",
"typeString": "struct ConverterRegistryData.Item storage pointer"
}
},
"id": 12227,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "valid",
"nodeType": "MemberAccess",
"referencedDeclaration": 11678,
"src": "10059:10:11",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"argumentTypes": null,
"hexValue": "4552525f494e56414c49445f4954454d",
"id": 12229,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "10071:18:11",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_45c52aff26d012f687a90a37723f3c6469b3bdb8dce3fb6f14072d935b05b47b",
"typeString": "literal_string \"ERR_INVALID_ITEM\""
},
"value": "ERR_INVALID_ITEM"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_45c52aff26d012f687a90a37723f3c6469b3bdb8dce3fb6f14072d935b05b47b",
"typeString": "literal_string \"ERR_INVALID_ITEM\""
}
],
"id": 12225,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "10050:7:11",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 12230,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "10050:40:11",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 12231,
"nodeType": "ExpressionStatement",
"src": "10050:40:11"
},
{
"expression": {
"argumentTypes": null,
"id": 12238,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 12232,
"name": "item",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 12219,
"src": "10103:4:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Item_$11681_storage_ptr",
"typeString": "struct ConverterRegistryData.Item storage pointer"
}
},
"id": 12234,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"memberName": "index",
"nodeType": "MemberAccess",
"referencedDeclaration": 11680,
"src": "10103:10:11",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 12235,
"name": "_items",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 12210,
"src": "10116:6:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Items_$11689_storage_ptr",
"typeString": "struct ConverterRegistryData.Items storage pointer"
}
},
"id": 12236,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "array",
"nodeType": "MemberAccess",
"referencedDeclaration": 11684,
"src": "10116:12:11",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage",
"typeString": "address[] storage ref"
}
},
"id": 12237,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "10116:19:11",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "10103:32:11",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 12239,
"nodeType": "ExpressionStatement",
"src": "10103:32:11"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 12245,
"name": "_value",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 12212,
"src": "10164:6:11",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"expression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 12240,
"name": "_items",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 12210,
"src": "10146:6:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Items_$11689_storage_ptr",
"typeString": "struct ConverterRegistryData.Items storage pointer"
}
},
"id": 12243,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "array",
"nodeType": "MemberAccess",
"referencedDeclaration": 11684,
"src": "10146:12:11",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage",
"typeString": "address[] storage ref"
}
},
"id": 12244,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "push",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "10146:17:11",
"typeDescriptions": {
"typeIdentifier": "t_function_arraypush_nonpayable$_t_address_$returns$__$",
"typeString": "function (address)"
}
},
"id": 12246,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "10146:25:11",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 12247,
"nodeType": "ExpressionStatement",
"src": "10146:25:11"
},
{
"expression": {
"argumentTypes": null,
"id": 12252,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 12248,
"name": "item",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 12219,
"src": "10182:4:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Item_$11681_storage_ptr",
"typeString": "struct ConverterRegistryData.Item storage pointer"
}
},
"id": 12250,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"memberName": "valid",
"nodeType": "MemberAccess",
"referencedDeclaration": 11678,
"src": "10182:10:11",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"hexValue": "74727565",
"id": 12251,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "bool",
"lValueRequested": false,
"nodeType": "Literal",
"src": "10195:4:11",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"value": "true"
},
"src": "10182:17:11",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 12253,
"nodeType": "ExpressionStatement",
"src": "10182:17:11"
}
]
},
"documentation": {
"id": 12208,
"nodeType": "StructuredDocumentation",
"src": "9758:139:11",
"text": " @dev adds an item to a list of items\n @param _items list of items\n @param _value item's value"
},
"id": 12255,
"implemented": true,
"kind": "function",
"modifiers": [
{
"arguments": [
{
"argumentTypes": null,
"id": 12215,
"name": "_value",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 12212,
"src": "9980:6:11",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"id": 12216,
"modifierName": {
"argumentTypes": null,
"id": 12214,
"name": "validAddress",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 22618,
"src": "9967:12:11",
"typeDescriptions": {
"typeIdentifier": "t_modifier$_t_address_$",
"typeString": "modifier (address)"
}
},
"nodeType": "ModifierInvocation",
"src": "9967:20:11"
}
],
"name": "addItem",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 12213,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 12210,
"mutability": "mutable",
"name": "_items",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 12255,
"src": "9920:20:11",
"stateVariable": false,
"storageLocation": "storage",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Items_$11689_storage_ptr",
"typeString": "struct ConverterRegistryData.Items"
},
"typeName": {
"contractScope": null,
"id": 12209,
"name": "Items",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 11689,
"src": "9920:5:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Items_$11689_storage_ptr",
"typeString": "struct ConverterRegistryData.Items"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 12212,
"mutability": "mutable",
"name": "_value",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 12255,
"src": "9942:14:11",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 12211,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "9942:7:11",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "9919:38:11"
},
"returnParameters": {
"id": 12217,
"nodeType": "ParameterList",
"parameters": [],
"src": "9988:0:11"
},
"scope": 12324,
"src": "9903:304:11",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "internal"
},
{
"body": {
"id": 12322,
"nodeType": "Block",
"src": "10453:346:11",
"statements": [
{
"assignments": [
12267
],
"declarations": [
{
"constant": false,
"id": 12267,
"mutability": "mutable",
"name": "item",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 12322,
"src": "10464:17:11",
"stateVariable": false,
"storageLocation": "storage",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Item_$11681_storage_ptr",
"typeString": "struct ConverterRegistryData.Item"
},
"typeName": {
"contractScope": null,
"id": 12266,
"name": "Item",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 11681,
"src": "10464:4:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Item_$11681_storage_ptr",
"typeString": "struct ConverterRegistryData.Item"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 12272,
"initialValue": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 12268,
"name": "_items",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 12258,
"src": "10484:6:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Items_$11689_storage_ptr",
"typeString": "struct ConverterRegistryData.Items storage pointer"
}
},
"id": 12269,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "table",
"nodeType": "MemberAccess",
"referencedDeclaration": 11688,
"src": "10484:12:11",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_struct$_Item_$11681_storage_$",
"typeString": "mapping(address => struct ConverterRegistryData.Item storage ref)"
}
},
"id": 12271,
"indexExpression": {
"argumentTypes": null,
"id": 12270,
"name": "_value",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 12260,
"src": "10497:6:11",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "10484:20:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Item_$11681_storage",
"typeString": "struct ConverterRegistryData.Item storage ref"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "10464:40:11"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 12274,
"name": "item",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 12267,
"src": "10523:4:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Item_$11681_storage_ptr",
"typeString": "struct ConverterRegistryData.Item storage pointer"
}
},
"id": 12275,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "valid",
"nodeType": "MemberAccess",
"referencedDeclaration": 11678,
"src": "10523:10:11",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"argumentTypes": null,
"hexValue": "4552525f494e56414c49445f4954454d",
"id": 12276,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "10535:18:11",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_45c52aff26d012f687a90a37723f3c6469b3bdb8dce3fb6f14072d935b05b47b",
"typeString": "literal_string \"ERR_INVALID_ITEM\""
},
"value": "ERR_INVALID_ITEM"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_45c52aff26d012f687a90a37723f3c6469b3bdb8dce3fb6f14072d935b05b47b",
"typeString": "literal_string \"ERR_INVALID_ITEM\""
}
],
"id": 12273,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "10515:7:11",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 12277,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "10515:39:11",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 12278,
"nodeType": "ExpressionStatement",
"src": "10515:39:11"
},
{
"assignments": [
12280
],
"declarations": [
{
"constant": false,
"id": 12280,
"mutability": "mutable",
"name": "lastValue",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 12322,
"src": "10567:17:11",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 12279,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "10567:7:11",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 12289,
"initialValue": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 12281,
"name": "_items",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 12258,
"src": "10587:6:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Items_$11689_storage_ptr",
"typeString": "struct ConverterRegistryData.Items storage pointer"
}
},
"id": 12282,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "array",
"nodeType": "MemberAccess",
"referencedDeclaration": 11684,
"src": "10587:12:11",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage",
"typeString": "address[] storage ref"
}
},
"id": 12288,
"indexExpression": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 12287,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 12283,
"name": "_items",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 12258,
"src": "10600:6:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Items_$11689_storage_ptr",
"typeString": "struct ConverterRegistryData.Items storage pointer"
}
},
"id": 12284,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "array",
"nodeType": "MemberAccess",
"referencedDeclaration": 11684,
"src": "10600:12:11",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage",
"typeString": "address[] storage ref"
}
},
"id": 12285,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "10600:19:11",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "-",
"rightExpression": {
"argumentTypes": null,
"hexValue": "31",
"id": 12286,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "10622:1:11",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_1_by_1",
"typeString": "int_const 1"
},
"value": "1"
},
"src": "10600:23:11",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "10587:37:11",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "10567:57:11"
},
{
"expression": {
"argumentTypes": null,
"id": 12298,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 12290,
"name": "_items",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 12258,
"src": "10635:6:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Items_$11689_storage_ptr",
"typeString": "struct ConverterRegistryData.Items storage pointer"
}
},
"id": 12293,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "table",
"nodeType": "MemberAccess",
"referencedDeclaration": 11688,
"src": "10635:12:11",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_struct$_Item_$11681_storage_$",
"typeString": "mapping(address => struct ConverterRegistryData.Item storage ref)"
}
},
"id": 12294,
"indexExpression": {
"argumentTypes": null,
"id": 12292,
"name": "lastValue",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 12280,
"src": "10648:9:11",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "10635:23:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Item_$11681_storage",
"typeString": "struct ConverterRegistryData.Item storage ref"
}
},
"id": 12295,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"memberName": "index",
"nodeType": "MemberAccess",
"referencedDeclaration": 11680,
"src": "10635:29:11",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 12296,
"name": "item",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 12267,
"src": "10667:4:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Item_$11681_storage_ptr",
"typeString": "struct ConverterRegistryData.Item storage pointer"
}
},
"id": 12297,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "index",
"nodeType": "MemberAccess",
"referencedDeclaration": 11680,
"src": "10667:10:11",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "10635:42:11",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 12299,
"nodeType": "ExpressionStatement",
"src": "10635:42:11"
},
{
"expression": {
"argumentTypes": null,
"id": 12307,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 12300,
"name": "_items",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 12258,
"src": "10688:6:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Items_$11689_storage_ptr",
"typeString": "struct ConverterRegistryData.Items storage pointer"
}
},
"id": 12304,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "array",
"nodeType": "MemberAccess",
"referencedDeclaration": 11684,
"src": "10688:12:11",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage",
"typeString": "address[] storage ref"
}
},
"id": 12305,
"indexExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 12302,
"name": "item",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 12267,
"src": "10701:4:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Item_$11681_storage_ptr",
"typeString": "struct ConverterRegistryData.Item storage pointer"
}
},
"id": 12303,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "index",
"nodeType": "MemberAccess",
"referencedDeclaration": 11680,
"src": "10701:10:11",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "10688:24:11",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 12306,
"name": "lastValue",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 12280,
"src": "10715:9:11",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "10688:36:11",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 12308,
"nodeType": "ExpressionStatement",
"src": "10688:36:11"
},
{
"expression": {
"argumentTypes": null,
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 12309,
"name": "_items",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 12258,
"src": "10735:6:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Items_$11689_storage_ptr",
"typeString": "struct ConverterRegistryData.Items storage pointer"
}
},
"id": 12312,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "array",
"nodeType": "MemberAccess",
"referencedDeclaration": 11684,
"src": "10735:12:11",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage",
"typeString": "address[] storage ref"
}
},
"id": 12313,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "pop",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "10735:16:11",
"typeDescriptions": {
"typeIdentifier": "t_function_arraypop_nonpayable$__$returns$__$",
"typeString": "function ()"
}
},
"id": 12314,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "10735:18:11",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 12315,
"nodeType": "ExpressionStatement",
"src": "10735:18:11"
},
{
"expression": {
"argumentTypes": null,
"id": 12320,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "delete",
"prefix": true,
"src": "10764:27:11",
"subExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 12316,
"name": "_items",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 12258,
"src": "10771:6:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Items_$11689_storage_ptr",
"typeString": "struct ConverterRegistryData.Items storage pointer"
}
},
"id": 12317,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "table",
"nodeType": "MemberAccess",
"referencedDeclaration": 11688,
"src": "10771:12:11",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_struct$_Item_$11681_storage_$",
"typeString": "mapping(address => struct ConverterRegistryData.Item storage ref)"
}
},
"id": 12319,
"indexExpression": {
"argumentTypes": null,
"id": 12318,
"name": "_value",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 12260,
"src": "10784:6:11",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "10771:20:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Item_$11681_storage",
"typeString": "struct ConverterRegistryData.Item storage ref"
}
},
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 12321,
"nodeType": "ExpressionStatement",
"src": "10764:27:11"
}
]
},
"documentation": {
"id": 12256,
"nodeType": "StructuredDocumentation",
"src": "10215:144:11",
"text": " @dev removes an item from a list of items\n @param _items list of items\n @param _value item's value"
},
"id": 12323,
"implemented": true,
"kind": "function",
"modifiers": [
{
"arguments": [
{
"argumentTypes": null,
"id": 12263,
"name": "_value",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 12260,
"src": "10445:6:11",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"id": 12264,
"modifierName": {
"argumentTypes": null,
"id": 12262,
"name": "validAddress",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 22618,
"src": "10432:12:11",
"typeDescriptions": {
"typeIdentifier": "t_modifier$_t_address_$",
"typeString": "modifier (address)"
}
},
"nodeType": "ModifierInvocation",
"src": "10432:20:11"
}
],
"name": "removeItem",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 12261,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 12258,
"mutability": "mutable",
"name": "_items",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 12323,
"src": "10385:20:11",
"stateVariable": false,
"storageLocation": "storage",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Items_$11689_storage_ptr",
"typeString": "struct ConverterRegistryData.Items"
},
"typeName": {
"contractScope": null,
"id": 12257,
"name": "Items",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 11689,
"src": "10385:5:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Items_$11689_storage_ptr",
"typeString": "struct ConverterRegistryData.Items"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 12260,
"mutability": "mutable",
"name": "_value",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 12323,
"src": "10407:14:11",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 12259,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "10407:7:11",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "10384:38:11"
},
"returnParameters": {
"id": 12265,
"nodeType": "ParameterList",
"parameters": [],
"src": "10453:0:11"
},
"scope": 12324,
"src": "10365:434:11",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "internal"
}
],
"scope": 12325,
"src": "752:10050:11"
}
],
"src": "52:10752:11"
},
"legacyAST": {
"absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/converter/ConverterRegistryData.sol",
"exportedSymbols": {
"ConverterRegistryData": [
12324
]
},
"id": 12325,
"license": "SEE LICENSE IN LICENSE",
"nodeType": "SourceUnit",
"nodes": [
{
"id": 11669,
"literals": [
"solidity",
"0.6",
".12"
],
"nodeType": "PragmaDirective",
"src": "52:23:11"
},
{
"absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/utility/ContractRegistryClient.sol",
"file": "../utility/ContractRegistryClient.sol",
"id": 11670,
"nodeType": "ImportDirective",
"scope": 12325,
"sourceUnit": 21720,
"src": "77:47:11",
"symbolAliases": [],
"unitAlias": ""
},
{
"absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/converter/interfaces/IConverterRegistryData.sol",
"file": "./interfaces/IConverterRegistryData.sol",
"id": 11671,
"nodeType": "ImportDirective",
"scope": 12325,
"sourceUnit": 13648,
"src": "126:49:11",
"symbolAliases": [],
"unitAlias": ""
},
{
"abstract": false,
"baseContracts": [
{
"arguments": null,
"baseName": {
"contractScope": null,
"id": 11673,
"name": "IConverterRegistryData",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 13647,
"src": "786:22:11",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
"typeString": "contract IConverterRegistryData"
}
},
"id": 11674,
"nodeType": "InheritanceSpecifier",
"src": "786:22:11"
},
{
"arguments": null,
"baseName": {
"contractScope": null,
"id": 11675,
"name": "ContractRegistryClient",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 21719,
"src": "810:22:11",
"typeDescriptions": {
"typeIdentifier": "t_contract$_ContractRegistryClient_$21719",
"typeString": "contract ContractRegistryClient"
}
},
"id": 11676,
"nodeType": "InheritanceSpecifier",
"src": "810:22:11"
}
],
"contractDependencies": [
13647,
21719,
21818,
22661,
22847
],
"contractKind": "contract",
"documentation": {
"id": 11672,
"nodeType": "StructuredDocumentation",
"src": "179:571:11",
"text": " @dev The ConverterRegistryData contract is an integral part of the converter registry\n as it serves as the database contract that holds all registry data.\n The registry is separated into two different contracts for upgradability - the data contract\n is harder to upgrade as it requires migrating all registry data into a new contract, while\n the registry contract itself can be easily upgraded.\n For that same reason, the data contract is simple and contains no logic beyond the basic data\n access utilities that it exposes."
},
"fullyImplemented": true,
"id": 12324,
"linearizedBaseContracts": [
12324,
21719,
22661,
21818,
22847,
13647
],
"name": "ConverterRegistryData",
"nodeType": "ContractDefinition",
"nodes": [
{
"canonicalName": "ConverterRegistryData.Item",
"id": 11681,
"members": [
{
"constant": false,
"id": 11678,
"mutability": "mutable",
"name": "valid",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11681,
"src": "863:10:11",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 11677,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "863:4:11",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 11680,
"mutability": "mutable",
"name": "index",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11681,
"src": "884:13:11",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 11679,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "884:7:11",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"name": "Item",
"nodeType": "StructDefinition",
"scope": 12324,
"src": "840:65:11",
"visibility": "public"
},
{
"canonicalName": "ConverterRegistryData.Items",
"id": 11689,
"members": [
{
"constant": false,
"id": 11684,
"mutability": "mutable",
"name": "array",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11689,
"src": "937:15:11",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
"typeString": "address[]"
},
"typeName": {
"baseType": {
"id": 11682,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "937:7:11",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 11683,
"length": null,
"nodeType": "ArrayTypeName",
"src": "937:9:11",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
"typeString": "address[]"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 11688,
"mutability": "mutable",
"name": "table",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11689,
"src": "963:30:11",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_struct$_Item_$11681_storage_$",
"typeString": "mapping(address => struct ConverterRegistryData.Item)"
},
"typeName": {
"id": 11687,
"keyType": {
"id": 11685,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "971:7:11",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Mapping",
"src": "963:24:11",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_struct$_Item_$11681_storage_$",
"typeString": "mapping(address => struct ConverterRegistryData.Item)"
},
"valueType": {
"contractScope": null,
"id": 11686,
"name": "Item",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 11681,
"src": "982:4:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Item_$11681_storage_ptr",
"typeString": "struct ConverterRegistryData.Item"
}
}
},
"value": null,
"visibility": "internal"
}
],
"name": "Items",
"nodeType": "StructDefinition",
"scope": 12324,
"src": "913:88:11",
"visibility": "public"
},
{
"canonicalName": "ConverterRegistryData.List",
"id": 11694,
"members": [
{
"constant": false,
"id": 11691,
"mutability": "mutable",
"name": "index",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11694,
"src": "1032:13:11",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 11690,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "1032:7:11",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 11693,
"mutability": "mutable",
"name": "items",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11694,
"src": "1056:11:11",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Items_$11689_storage_ptr",
"typeString": "struct ConverterRegistryData.Items"
},
"typeName": {
"contractScope": null,
"id": 11692,
"name": "Items",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 11689,
"src": "1056:5:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Items_$11689_storage_ptr",
"typeString": "struct ConverterRegistryData.Items"
}
},
"value": null,
"visibility": "internal"
}
],
"name": "List",
"nodeType": "StructDefinition",
"scope": 12324,
"src": "1009:66:11",
"visibility": "public"
},
{
"canonicalName": "ConverterRegistryData.Lists",
"id": 11702,
"members": [
{
"constant": false,
"id": 11697,
"mutability": "mutable",
"name": "array",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11702,
"src": "1107:15:11",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
"typeString": "address[]"
},
"typeName": {
"baseType": {
"id": 11695,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1107:7:11",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 11696,
"length": null,
"nodeType": "ArrayTypeName",
"src": "1107:9:11",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
"typeString": "address[]"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 11701,
"mutability": "mutable",
"name": "table",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11702,
"src": "1133:30:11",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_struct$_List_$11694_storage_$",
"typeString": "mapping(address => struct ConverterRegistryData.List)"
},
"typeName": {
"id": 11700,
"keyType": {
"id": 11698,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1141:7:11",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Mapping",
"src": "1133:24:11",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_struct$_List_$11694_storage_$",
"typeString": "mapping(address => struct ConverterRegistryData.List)"
},
"valueType": {
"contractScope": null,
"id": 11699,
"name": "List",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 11694,
"src": "1152:4:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_List_$11694_storage_ptr",
"typeString": "struct ConverterRegistryData.List"
}
}
},
"value": null,
"visibility": "internal"
}
],
"name": "Lists",
"nodeType": "StructDefinition",
"scope": 12324,
"src": "1083:88:11",
"visibility": "public"
},
{
"constant": false,
"id": 11704,
"mutability": "mutable",
"name": "smartTokens",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 12324,
"src": "1179:25:11",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Items_$11689_storage",
"typeString": "struct ConverterRegistryData.Items"
},
"typeName": {
"contractScope": null,
"id": 11703,
"name": "Items",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 11689,
"src": "1179:5:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Items_$11689_storage_ptr",
"typeString": "struct ConverterRegistryData.Items"
}
},
"value": null,
"visibility": "private"
},
{
"constant": false,
"id": 11706,
"mutability": "mutable",
"name": "liquidityPools",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 12324,
"src": "1211:28:11",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Items_$11689_storage",
"typeString": "struct ConverterRegistryData.Items"
},
"typeName": {
"contractScope": null,
"id": 11705,
"name": "Items",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 11689,
"src": "1211:5:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Items_$11689_storage_ptr",
"typeString": "struct ConverterRegistryData.Items"
}
},
"value": null,
"visibility": "private"
},
{
"constant": false,
"id": 11708,
"mutability": "mutable",
"name": "convertibleTokens",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 12324,
"src": "1246:31:11",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Lists_$11702_storage",
"typeString": "struct ConverterRegistryData.Lists"
},
"typeName": {
"contractScope": null,
"id": 11707,
"name": "Lists",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 11702,
"src": "1246:5:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Lists_$11702_storage_ptr",
"typeString": "struct ConverterRegistryData.Lists"
}
},
"value": null,
"visibility": "private"
},
{
"body": {
"id": 11717,
"nodeType": "Block",
"src": "1523:8:11",
"statements": []
},
"documentation": {
"id": 11709,
"nodeType": "StructuredDocumentation",
"src": "1286:149:11",
"text": " @dev initializes a new ConverterRegistryData instance\n @param _registry address of a contract registry contract"
},
"id": 11718,
"implemented": true,
"kind": "constructor",
"modifiers": [
{
"arguments": [
{
"argumentTypes": null,
"id": 11714,
"name": "_registry",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11711,
"src": "1505:9:11",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IContractRegistry_$22831",
"typeString": "contract IContractRegistry"
}
}
],
"id": 11715,
"modifierName": {
"argumentTypes": null,
"id": 11713,
"name": "ContractRegistryClient",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21719,
"src": "1482:22:11",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_ContractRegistryClient_$21719_$",
"typeString": "type(contract ContractRegistryClient)"
}
},
"nodeType": "ModifierInvocation",
"src": "1482:33:11"
}
],
"name": "",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 11712,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 11711,
"mutability": "mutable",
"name": "_registry",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11718,
"src": "1453:27:11",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IContractRegistry_$22831",
"typeString": "contract IContractRegistry"
},
"typeName": {
"contractScope": null,
"id": 11710,
"name": "IContractRegistry",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 22831,
"src": "1453:17:11",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IContractRegistry_$22831",
"typeString": "contract IContractRegistry"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "1452:29:11"
},
"returnParameters": {
"id": 11716,
"nodeType": "ParameterList",
"parameters": [],
"src": "1523:0:11"
},
"scope": 12324,
"src": "1441:90:11",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "public"
},
{
"baseFunctions": [
13509
],
"body": {
"id": 11736,
"nodeType": "Block",
"src": "1726:57:11",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 11729,
"name": "smartTokens",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11704,
"src": "1745:11:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Items_$11689_storage",
"typeString": "struct ConverterRegistryData.Items storage ref"
}
},
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 11732,
"name": "_anchor",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11721,
"src": "1766:7:11",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
],
"id": 11731,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "1758:7:11",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 11730,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1758:7:11",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 11733,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1758:16:11",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_struct$_Items_$11689_storage",
"typeString": "struct ConverterRegistryData.Items storage ref"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 11728,
"name": "addItem",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 12255,
"src": "1737:7:11",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Items_$11689_storage_ptr_$_t_address_$returns$__$",
"typeString": "function (struct ConverterRegistryData.Items storage pointer,address)"
}
},
"id": 11734,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1737:38:11",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 11735,
"nodeType": "ExpressionStatement",
"src": "1737:38:11"
}
]
},
"documentation": {
"id": 11719,
"nodeType": "StructuredDocumentation",
"src": "1539:89:11",
"text": " @dev adds a smart token\n @param _anchor smart token"
},
"functionSelector": "8de6c3eb",
"id": 11737,
"implemented": true,
"kind": "function",
"modifiers": [
{
"arguments": [
{
"argumentTypes": null,
"id": 11725,
"name": "CONVERTER_REGISTRY",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21545,
"src": "1706:18:11",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
}
],
"id": 11726,
"modifierName": {
"argumentTypes": null,
"id": 11724,
"name": "only",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21577,
"src": "1701:4:11",
"typeDescriptions": {
"typeIdentifier": "t_modifier$_t_bytes32_$",
"typeString": "modifier (bytes32)"
}
},
"nodeType": "ModifierInvocation",
"src": "1701:24:11"
}
],
"name": "addSmartToken",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 11723,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "1692:8:11"
},
"parameters": {
"id": 11722,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 11721,
"mutability": "mutable",
"name": "_anchor",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11737,
"src": "1657:24:11",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
},
"typeName": {
"contractScope": null,
"id": 11720,
"name": "IConverterAnchor",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 13349,
"src": "1657:16:11",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "1656:26:11"
},
"returnParameters": {
"id": 11727,
"nodeType": "ParameterList",
"parameters": [],
"src": "1726:0:11"
},
"scope": 12324,
"src": "1634:149:11",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
},
{
"baseFunctions": [
13514
],
"body": {
"id": 11755,
"nodeType": "Block",
"src": "1984:60:11",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 11748,
"name": "smartTokens",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11704,
"src": "2006:11:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Items_$11689_storage",
"typeString": "struct ConverterRegistryData.Items storage ref"
}
},
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 11751,
"name": "_anchor",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11740,
"src": "2027:7:11",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
],
"id": 11750,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "2019:7:11",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 11749,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "2019:7:11",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 11752,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2019:16:11",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_struct$_Items_$11689_storage",
"typeString": "struct ConverterRegistryData.Items storage ref"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 11747,
"name": "removeItem",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 12323,
"src": "1995:10:11",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Items_$11689_storage_ptr_$_t_address_$returns$__$",
"typeString": "function (struct ConverterRegistryData.Items storage pointer,address)"
}
},
"id": 11753,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1995:41:11",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 11754,
"nodeType": "ExpressionStatement",
"src": "1995:41:11"
}
]
},
"documentation": {
"id": 11738,
"nodeType": "StructuredDocumentation",
"src": "1791:92:11",
"text": " @dev removes a smart token\n @param _anchor smart token"
},
"functionSelector": "ceb9838c",
"id": 11756,
"implemented": true,
"kind": "function",
"modifiers": [
{
"arguments": [
{
"argumentTypes": null,
"id": 11744,
"name": "CONVERTER_REGISTRY",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21545,
"src": "1964:18:11",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
}
],
"id": 11745,
"modifierName": {
"argumentTypes": null,
"id": 11743,
"name": "only",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21577,
"src": "1959:4:11",
"typeDescriptions": {
"typeIdentifier": "t_modifier$_t_bytes32_$",
"typeString": "modifier (bytes32)"
}
},
"nodeType": "ModifierInvocation",
"src": "1959:24:11"
}
],
"name": "removeSmartToken",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 11742,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "1950:8:11"
},
"parameters": {
"id": 11741,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 11740,
"mutability": "mutable",
"name": "_anchor",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11756,
"src": "1915:24:11",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
},
"typeName": {
"contractScope": null,
"id": 11739,
"name": "IConverterAnchor",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 13349,
"src": "1915:16:11",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "1914:26:11"
},
"returnParameters": {
"id": 11746,
"nodeType": "ParameterList",
"parameters": [],
"src": "1984:0:11"
},
"scope": 12324,
"src": "1889:155:11",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
},
{
"baseFunctions": [
13519
],
"body": {
"id": 11774,
"nodeType": "Block",
"src": "2274:73:11",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 11767,
"name": "liquidityPools",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11706,
"src": "2293:14:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Items_$11689_storage",
"typeString": "struct ConverterRegistryData.Items storage ref"
}
},
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 11770,
"name": "_liquidityPoolAnchor",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11759,
"src": "2317:20:11",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
],
"id": 11769,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "2309:7:11",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 11768,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "2309:7:11",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 11771,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2309:29:11",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_struct$_Items_$11689_storage",
"typeString": "struct ConverterRegistryData.Items storage ref"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 11766,
"name": "addItem",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 12255,
"src": "2285:7:11",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Items_$11689_storage_ptr_$_t_address_$returns$__$",
"typeString": "function (struct ConverterRegistryData.Items storage pointer,address)"
}
},
"id": 11772,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2285:54:11",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 11773,
"nodeType": "ExpressionStatement",
"src": "2285:54:11"
}
]
},
"documentation": {
"id": 11757,
"nodeType": "StructuredDocumentation",
"src": "2052:108:11",
"text": " @dev adds a liquidity pool\n @param _liquidityPoolAnchor liquidity pool"
},
"functionSelector": "ee6a934c",
"id": 11775,
"implemented": true,
"kind": "function",
"modifiers": [
{
"arguments": [
{
"argumentTypes": null,
"id": 11763,
"name": "CONVERTER_REGISTRY",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21545,
"src": "2254:18:11",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
}
],
"id": 11764,
"modifierName": {
"argumentTypes": null,
"id": 11762,
"name": "only",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21577,
"src": "2249:4:11",
"typeDescriptions": {
"typeIdentifier": "t_modifier$_t_bytes32_$",
"typeString": "modifier (bytes32)"
}
},
"nodeType": "ModifierInvocation",
"src": "2249:24:11"
}
],
"name": "addLiquidityPool",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 11761,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "2240:8:11"
},
"parameters": {
"id": 11760,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 11759,
"mutability": "mutable",
"name": "_liquidityPoolAnchor",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11775,
"src": "2192:37:11",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
},
"typeName": {
"contractScope": null,
"id": 11758,
"name": "IConverterAnchor",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 13349,
"src": "2192:16:11",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "2191:39:11"
},
"returnParameters": {
"id": 11765,
"nodeType": "ParameterList",
"parameters": [],
"src": "2274:0:11"
},
"scope": 12324,
"src": "2166:181:11",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
},
{
"baseFunctions": [
13524
],
"body": {
"id": 11793,
"nodeType": "Block",
"src": "2583:76:11",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 11786,
"name": "liquidityPools",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11706,
"src": "2605:14:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Items_$11689_storage",
"typeString": "struct ConverterRegistryData.Items storage ref"
}
},
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 11789,
"name": "_liquidityPoolAnchor",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11778,
"src": "2629:20:11",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
],
"id": 11788,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "2621:7:11",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 11787,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "2621:7:11",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 11790,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2621:29:11",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_struct$_Items_$11689_storage",
"typeString": "struct ConverterRegistryData.Items storage ref"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 11785,
"name": "removeItem",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 12323,
"src": "2594:10:11",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Items_$11689_storage_ptr_$_t_address_$returns$__$",
"typeString": "function (struct ConverterRegistryData.Items storage pointer,address)"
}
},
"id": 11791,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2594:57:11",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 11792,
"nodeType": "ExpressionStatement",
"src": "2594:57:11"
}
]
},
"documentation": {
"id": 11776,
"nodeType": "StructuredDocumentation",
"src": "2355:111:11",
"text": " @dev removes a liquidity pool\n @param _liquidityPoolAnchor liquidity pool"
},
"functionSelector": "ae22107f",
"id": 11794,
"implemented": true,
"kind": "function",
"modifiers": [
{
"arguments": [
{
"argumentTypes": null,
"id": 11782,
"name": "CONVERTER_REGISTRY",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21545,
"src": "2563:18:11",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
}
],
"id": 11783,
"modifierName": {
"argumentTypes": null,
"id": 11781,
"name": "only",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21577,
"src": "2558:4:11",
"typeDescriptions": {
"typeIdentifier": "t_modifier$_t_bytes32_$",
"typeString": "modifier (bytes32)"
}
},
"nodeType": "ModifierInvocation",
"src": "2558:24:11"
}
],
"name": "removeLiquidityPool",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 11780,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "2549:8:11"
},
"parameters": {
"id": 11779,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 11778,
"mutability": "mutable",
"name": "_liquidityPoolAnchor",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11794,
"src": "2501:37:11",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
},
"typeName": {
"contractScope": null,
"id": 11777,
"name": "IConverterAnchor",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 13349,
"src": "2501:16:11",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "2500:39:11"
},
"returnParameters": {
"id": 11784,
"nodeType": "ParameterList",
"parameters": [],
"src": "2583:0:11"
},
"scope": 12324,
"src": "2472:187:11",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
},
{
"baseFunctions": [
13531
],
"body": {
"id": 11852,
"nodeType": "Block",
"src": "2976:323:11",
"statements": [
{
"assignments": [
11807
],
"declarations": [
{
"constant": false,
"id": 11807,
"mutability": "mutable",
"name": "list",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11852,
"src": "2987:17:11",
"stateVariable": false,
"storageLocation": "storage",
"typeDescriptions": {
"typeIdentifier": "t_struct$_List_$11694_storage_ptr",
"typeString": "struct ConverterRegistryData.List"
},
"typeName": {
"contractScope": null,
"id": 11806,
"name": "List",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 11694,
"src": "2987:4:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_List_$11694_storage_ptr",
"typeString": "struct ConverterRegistryData.List"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 11815,
"initialValue": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 11808,
"name": "convertibleTokens",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11708,
"src": "3007:17:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Lists_$11702_storage",
"typeString": "struct ConverterRegistryData.Lists storage ref"
}
},
"id": 11809,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "table",
"nodeType": "MemberAccess",
"referencedDeclaration": 11701,
"src": "3007:23:11",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_struct$_List_$11694_storage_$",
"typeString": "mapping(address => struct ConverterRegistryData.List storage ref)"
}
},
"id": 11814,
"indexExpression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 11812,
"name": "_convertibleToken",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11797,
"src": "3039:17:11",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
],
"id": 11811,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "3031:7:11",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 11810,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "3031:7:11",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 11813,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3031:26:11",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "3007:51:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_List_$11694_storage",
"typeString": "struct ConverterRegistryData.List storage ref"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "2987:71:11"
},
{
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 11821,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 11816,
"name": "list",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11807,
"src": "3073:4:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_List_$11694_storage_ptr",
"typeString": "struct ConverterRegistryData.List storage pointer"
}
},
"id": 11817,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "items",
"nodeType": "MemberAccess",
"referencedDeclaration": 11693,
"src": "3073:10:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Items_$11689_storage",
"typeString": "struct ConverterRegistryData.Items storage ref"
}
},
"id": 11818,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "array",
"nodeType": "MemberAccess",
"referencedDeclaration": 11684,
"src": "3073:16:11",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage",
"typeString": "address[] storage ref"
}
},
"id": 11819,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "3073:23:11",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"hexValue": "30",
"id": 11820,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3100:1:11",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "3073:28:11",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": null,
"id": 11842,
"nodeType": "IfStatement",
"src": "3069:175:11",
"trueBody": {
"id": 11841,
"nodeType": "Block",
"src": "3103:141:11",
"statements": [
{
"expression": {
"argumentTypes": null,
"id": 11828,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 11822,
"name": "list",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11807,
"src": "3118:4:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_List_$11694_storage_ptr",
"typeString": "struct ConverterRegistryData.List storage pointer"
}
},
"id": 11824,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"memberName": "index",
"nodeType": "MemberAccess",
"referencedDeclaration": 11691,
"src": "3118:10:11",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 11825,
"name": "convertibleTokens",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11708,
"src": "3131:17:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Lists_$11702_storage",
"typeString": "struct ConverterRegistryData.Lists storage ref"
}
},
"id": 11826,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "array",
"nodeType": "MemberAccess",
"referencedDeclaration": 11697,
"src": "3131:23:11",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage",
"typeString": "address[] storage ref"
}
},
"id": 11827,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "3131:30:11",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "3118:43:11",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 11829,
"nodeType": "ExpressionStatement",
"src": "3118:43:11"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 11837,
"name": "_convertibleToken",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11797,
"src": "3213:17:11",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
],
"id": 11836,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "3205:7:11",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 11835,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "3205:7:11",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 11838,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3205:26:11",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"expression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 11830,
"name": "convertibleTokens",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11708,
"src": "3176:17:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Lists_$11702_storage",
"typeString": "struct ConverterRegistryData.Lists storage ref"
}
},
"id": 11833,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "array",
"nodeType": "MemberAccess",
"referencedDeclaration": 11697,
"src": "3176:23:11",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage",
"typeString": "address[] storage ref"
}
},
"id": 11834,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "push",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "3176:28:11",
"typeDescriptions": {
"typeIdentifier": "t_function_arraypush_nonpayable$_t_address_$returns$__$",
"typeString": "function (address)"
}
},
"id": 11839,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3176:56:11",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 11840,
"nodeType": "ExpressionStatement",
"src": "3176:56:11"
}
]
}
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 11844,
"name": "list",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11807,
"src": "3262:4:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_List_$11694_storage_ptr",
"typeString": "struct ConverterRegistryData.List storage pointer"
}
},
"id": 11845,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "items",
"nodeType": "MemberAccess",
"referencedDeclaration": 11693,
"src": "3262:10:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Items_$11689_storage",
"typeString": "struct ConverterRegistryData.Items storage ref"
}
},
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 11848,
"name": "_anchor",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11799,
"src": "3282:7:11",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
],
"id": 11847,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "3274:7:11",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 11846,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "3274:7:11",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 11849,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3274:16:11",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_struct$_Items_$11689_storage",
"typeString": "struct ConverterRegistryData.Items storage ref"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 11843,
"name": "addItem",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 12255,
"src": "3254:7:11",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Items_$11689_storage_ptr_$_t_address_$returns$__$",
"typeString": "function (struct ConverterRegistryData.Items storage pointer,address)"
}
},
"id": 11850,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3254:37:11",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 11851,
"nodeType": "ExpressionStatement",
"src": "3254:37:11"
}
]
},
"documentation": {
"id": 11795,
"nodeType": "StructuredDocumentation",
"src": "2667:174:11",
"text": " @dev adds a convertible token\n @param _convertibleToken convertible token\n @param _anchor associated smart token"
},
"functionSelector": "36900c11",
"id": 11853,
"implemented": true,
"kind": "function",
"modifiers": [
{
"arguments": [
{
"argumentTypes": null,
"id": 11803,
"name": "CONVERTER_REGISTRY",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21545,
"src": "2956:18:11",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
}
],
"id": 11804,
"modifierName": {
"argumentTypes": null,
"id": 11802,
"name": "only",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21577,
"src": "2951:4:11",
"typeDescriptions": {
"typeIdentifier": "t_modifier$_t_bytes32_$",
"typeString": "modifier (bytes32)"
}
},
"nodeType": "ModifierInvocation",
"src": "2951:24:11"
}
],
"name": "addConvertibleToken",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 11801,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "2942:8:11"
},
"parameters": {
"id": 11800,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 11797,
"mutability": "mutable",
"name": "_convertibleToken",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11853,
"src": "2876:29:11",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
},
"typeName": {
"contractScope": null,
"id": 11796,
"name": "IERC20Token",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 21127,
"src": "2876:11:11",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 11799,
"mutability": "mutable",
"name": "_anchor",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11853,
"src": "2907:24:11",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
},
"typeName": {
"contractScope": null,
"id": 11798,
"name": "IConverterAnchor",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 13349,
"src": "2907:16:11",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "2875:57:11"
},
"returnParameters": {
"id": 11805,
"nodeType": "ParameterList",
"parameters": [],
"src": "2976:0:11"
},
"scope": 12324,
"src": "2847:452:11",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
},
{
"baseFunctions": [
13538
],
"body": {
"id": 11938,
"nodeType": "Block",
"src": "3622:571:11",
"statements": [
{
"assignments": [
11866
],
"declarations": [
{
"constant": false,
"id": 11866,
"mutability": "mutable",
"name": "list",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11938,
"src": "3633:17:11",
"stateVariable": false,
"storageLocation": "storage",
"typeDescriptions": {
"typeIdentifier": "t_struct$_List_$11694_storage_ptr",
"typeString": "struct ConverterRegistryData.List"
},
"typeName": {
"contractScope": null,
"id": 11865,
"name": "List",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 11694,
"src": "3633:4:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_List_$11694_storage_ptr",
"typeString": "struct ConverterRegistryData.List"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 11874,
"initialValue": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 11867,
"name": "convertibleTokens",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11708,
"src": "3653:17:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Lists_$11702_storage",
"typeString": "struct ConverterRegistryData.Lists storage ref"
}
},
"id": 11868,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "table",
"nodeType": "MemberAccess",
"referencedDeclaration": 11701,
"src": "3653:23:11",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_struct$_List_$11694_storage_$",
"typeString": "mapping(address => struct ConverterRegistryData.List storage ref)"
}
},
"id": 11873,
"indexExpression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 11871,
"name": "_convertibleToken",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11856,
"src": "3685:17:11",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
],
"id": 11870,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "3677:7:11",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 11869,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "3677:7:11",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 11872,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3677:26:11",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "3653:51:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_List_$11694_storage",
"typeString": "struct ConverterRegistryData.List storage ref"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "3633:71:11"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 11876,
"name": "list",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11866,
"src": "3726:4:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_List_$11694_storage_ptr",
"typeString": "struct ConverterRegistryData.List storage pointer"
}
},
"id": 11877,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "items",
"nodeType": "MemberAccess",
"referencedDeclaration": 11693,
"src": "3726:10:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Items_$11689_storage",
"typeString": "struct ConverterRegistryData.Items storage ref"
}
},
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 11880,
"name": "_anchor",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11858,
"src": "3746:7:11",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
],
"id": 11879,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "3738:7:11",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 11878,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "3738:7:11",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 11881,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3738:16:11",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_struct$_Items_$11689_storage",
"typeString": "struct ConverterRegistryData.Items storage ref"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 11875,
"name": "removeItem",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 12323,
"src": "3715:10:11",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Items_$11689_storage_ptr_$_t_address_$returns$__$",
"typeString": "function (struct ConverterRegistryData.Items storage pointer,address)"
}
},
"id": 11882,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3715:40:11",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 11883,
"nodeType": "ExpressionStatement",
"src": "3715:40:11"
},
{
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 11889,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 11884,
"name": "list",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11866,
"src": "3770:4:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_List_$11694_storage_ptr",
"typeString": "struct ConverterRegistryData.List storage pointer"
}
},
"id": 11885,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "items",
"nodeType": "MemberAccess",
"referencedDeclaration": 11693,
"src": "3770:10:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Items_$11689_storage",
"typeString": "struct ConverterRegistryData.Items storage ref"
}
},
"id": 11886,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "array",
"nodeType": "MemberAccess",
"referencedDeclaration": 11684,
"src": "3770:16:11",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage",
"typeString": "address[] storage ref"
}
},
"id": 11887,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "3770:23:11",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"hexValue": "30",
"id": 11888,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3797:1:11",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "3770:28:11",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": null,
"id": 11937,
"nodeType": "IfStatement",
"src": "3766:420:11",
"trueBody": {
"id": 11936,
"nodeType": "Block",
"src": "3800:386:11",
"statements": [
{
"assignments": [
11891
],
"declarations": [
{
"constant": false,
"id": 11891,
"mutability": "mutable",
"name": "lastConvertibleToken",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11936,
"src": "3815:28:11",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 11890,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "3815:7:11",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 11900,
"initialValue": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 11892,
"name": "convertibleTokens",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11708,
"src": "3846:17:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Lists_$11702_storage",
"typeString": "struct ConverterRegistryData.Lists storage ref"
}
},
"id": 11893,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "array",
"nodeType": "MemberAccess",
"referencedDeclaration": 11697,
"src": "3846:23:11",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage",
"typeString": "address[] storage ref"
}
},
"id": 11899,
"indexExpression": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 11898,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 11894,
"name": "convertibleTokens",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11708,
"src": "3870:17:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Lists_$11702_storage",
"typeString": "struct ConverterRegistryData.Lists storage ref"
}
},
"id": 11895,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "array",
"nodeType": "MemberAccess",
"referencedDeclaration": 11697,
"src": "3870:23:11",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage",
"typeString": "address[] storage ref"
}
},
"id": 11896,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "3870:30:11",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "-",
"rightExpression": {
"argumentTypes": null,
"hexValue": "31",
"id": 11897,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3903:1:11",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_1_by_1",
"typeString": "int_const 1"
},
"value": "1"
},
"src": "3870:34:11",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "3846:59:11",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "3815:90:11"
},
{
"expression": {
"argumentTypes": null,
"id": 11909,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 11901,
"name": "convertibleTokens",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11708,
"src": "3920:17:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Lists_$11702_storage",
"typeString": "struct ConverterRegistryData.Lists storage ref"
}
},
"id": 11904,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "table",
"nodeType": "MemberAccess",
"referencedDeclaration": 11701,
"src": "3920:23:11",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_struct$_List_$11694_storage_$",
"typeString": "mapping(address => struct ConverterRegistryData.List storage ref)"
}
},
"id": 11905,
"indexExpression": {
"argumentTypes": null,
"id": 11903,
"name": "lastConvertibleToken",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11891,
"src": "3944:20:11",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "3920:45:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_List_$11694_storage",
"typeString": "struct ConverterRegistryData.List storage ref"
}
},
"id": 11906,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"memberName": "index",
"nodeType": "MemberAccess",
"referencedDeclaration": 11691,
"src": "3920:51:11",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 11907,
"name": "list",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11866,
"src": "3974:4:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_List_$11694_storage_ptr",
"typeString": "struct ConverterRegistryData.List storage pointer"
}
},
"id": 11908,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "index",
"nodeType": "MemberAccess",
"referencedDeclaration": 11691,
"src": "3974:10:11",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "3920:64:11",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 11910,
"nodeType": "ExpressionStatement",
"src": "3920:64:11"
},
{
"expression": {
"argumentTypes": null,
"id": 11918,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 11911,
"name": "convertibleTokens",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11708,
"src": "3999:17:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Lists_$11702_storage",
"typeString": "struct ConverterRegistryData.Lists storage ref"
}
},
"id": 11915,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "array",
"nodeType": "MemberAccess",
"referencedDeclaration": 11697,
"src": "3999:23:11",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage",
"typeString": "address[] storage ref"
}
},
"id": 11916,
"indexExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 11913,
"name": "list",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11866,
"src": "4023:4:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_List_$11694_storage_ptr",
"typeString": "struct ConverterRegistryData.List storage pointer"
}
},
"id": 11914,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "index",
"nodeType": "MemberAccess",
"referencedDeclaration": 11691,
"src": "4023:10:11",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "3999:35:11",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 11917,
"name": "lastConvertibleToken",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11891,
"src": "4037:20:11",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "3999:58:11",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 11919,
"nodeType": "ExpressionStatement",
"src": "3999:58:11"
},
{
"expression": {
"argumentTypes": null,
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 11920,
"name": "convertibleTokens",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11708,
"src": "4072:17:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Lists_$11702_storage",
"typeString": "struct ConverterRegistryData.Lists storage ref"
}
},
"id": 11923,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "array",
"nodeType": "MemberAccess",
"referencedDeclaration": 11697,
"src": "4072:23:11",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage",
"typeString": "address[] storage ref"
}
},
"id": 11924,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "pop",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "4072:27:11",
"typeDescriptions": {
"typeIdentifier": "t_function_arraypop_nonpayable$__$returns$__$",
"typeString": "function ()"
}
},
"id": 11925,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "4072:29:11",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 11926,
"nodeType": "ExpressionStatement",
"src": "4072:29:11"
},
{
"expression": {
"argumentTypes": null,
"id": 11934,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "delete",
"prefix": true,
"src": "4116:58:11",
"subExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 11927,
"name": "convertibleTokens",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11708,
"src": "4123:17:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Lists_$11702_storage",
"typeString": "struct ConverterRegistryData.Lists storage ref"
}
},
"id": 11928,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "table",
"nodeType": "MemberAccess",
"referencedDeclaration": 11701,
"src": "4123:23:11",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_struct$_List_$11694_storage_$",
"typeString": "mapping(address => struct ConverterRegistryData.List storage ref)"
}
},
"id": 11933,
"indexExpression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 11931,
"name": "_convertibleToken",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11856,
"src": "4155:17:11",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
],
"id": 11930,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "4147:7:11",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 11929,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "4147:7:11",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 11932,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "4147:26:11",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "4123:51:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_List_$11694_storage",
"typeString": "struct ConverterRegistryData.List storage ref"
}
},
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 11935,
"nodeType": "ExpressionStatement",
"src": "4116:58:11"
}
]
}
}
]
},
"documentation": {
"id": 11854,
"nodeType": "StructuredDocumentation",
"src": "3307:177:11",
"text": " @dev removes a convertible token\n @param _convertibleToken convertible token\n @param _anchor associated smart token"
},
"functionSelector": "fba8f031",
"id": 11939,
"implemented": true,
"kind": "function",
"modifiers": [
{
"arguments": [
{
"argumentTypes": null,
"id": 11862,
"name": "CONVERTER_REGISTRY",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21545,
"src": "3602:18:11",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
}
],
"id": 11863,
"modifierName": {
"argumentTypes": null,
"id": 11861,
"name": "only",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21577,
"src": "3597:4:11",
"typeDescriptions": {
"typeIdentifier": "t_modifier$_t_bytes32_$",
"typeString": "modifier (bytes32)"
}
},
"nodeType": "ModifierInvocation",
"src": "3597:24:11"
}
],
"name": "removeConvertibleToken",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 11860,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "3588:8:11"
},
"parameters": {
"id": 11859,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 11856,
"mutability": "mutable",
"name": "_convertibleToken",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11939,
"src": "3522:29:11",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
},
"typeName": {
"contractScope": null,
"id": 11855,
"name": "IERC20Token",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 21127,
"src": "3522:11:11",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 11858,
"mutability": "mutable",
"name": "_anchor",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11939,
"src": "3553:24:11",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
},
"typeName": {
"contractScope": null,
"id": 11857,
"name": "IConverterAnchor",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 13349,
"src": "3553:16:11",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "3521:57:11"
},
"returnParameters": {
"id": 11864,
"nodeType": "ParameterList",
"parameters": [],
"src": "3622:0:11"
},
"scope": 12324,
"src": "3490:703:11",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
},
{
"baseFunctions": [
13543
],
"body": {
"id": 11950,
"nodeType": "Block",
"src": "4387:50:11",
"statements": [
{
"expression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 11946,
"name": "smartTokens",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11704,
"src": "4405:11:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Items_$11689_storage",
"typeString": "struct ConverterRegistryData.Items storage ref"
}
},
"id": 11947,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "array",
"nodeType": "MemberAccess",
"referencedDeclaration": 11684,
"src": "4405:17:11",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage",
"typeString": "address[] storage ref"
}
},
"id": 11948,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "4405:24:11",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"functionReturnParameters": 11945,
"id": 11949,
"nodeType": "Return",
"src": "4398:31:11"
}
]
},
"documentation": {
"id": 11940,
"nodeType": "StructuredDocumentation",
"src": "4201:109:11",
"text": " @dev returns the number of smart tokens\n @return number of smart tokens"
},
"functionSelector": "e571049b",
"id": 11951,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "getSmartTokenCount",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 11942,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "4360:8:11"
},
"parameters": {
"id": 11941,
"nodeType": "ParameterList",
"parameters": [],
"src": "4343:2:11"
},
"returnParameters": {
"id": 11945,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 11944,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11951,
"src": "4378:7:11",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 11943,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "4378:7:11",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "4377:9:11"
},
"scope": 12324,
"src": "4316:121:11",
"stateMutability": "view",
"virtual": false,
"visibility": "external"
},
{
"baseFunctions": [
13549
],
"body": {
"id": 11962,
"nodeType": "Block",
"src": "4632:43:11",
"statements": [
{
"expression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 11959,
"name": "smartTokens",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11704,
"src": "4650:11:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Items_$11689_storage",
"typeString": "struct ConverterRegistryData.Items storage ref"
}
},
"id": 11960,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "array",
"nodeType": "MemberAccess",
"referencedDeclaration": 11684,
"src": "4650:17:11",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage",
"typeString": "address[] storage ref"
}
},
"functionReturnParameters": 11958,
"id": 11961,
"nodeType": "Return",
"src": "4643:24:11"
}
]
},
"documentation": {
"id": 11952,
"nodeType": "StructuredDocumentation",
"src": "4445:105:11",
"text": " @dev returns the list of smart tokens\n @return list of smart tokens"
},
"functionSelector": "04ceaf41",
"id": 11963,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "getSmartTokens",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 11954,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "4596:8:11"
},
"parameters": {
"id": 11953,
"nodeType": "ParameterList",
"parameters": [],
"src": "4579:2:11"
},
"returnParameters": {
"id": 11958,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 11957,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11963,
"src": "4614:16:11",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[]"
},
"typeName": {
"baseType": {
"id": 11955,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "4614:7:11",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 11956,
"length": null,
"nodeType": "ArrayTypeName",
"src": "4614:9:11",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
"typeString": "address[]"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "4613:18:11"
},
"scope": 12324,
"src": "4556:119:11",
"stateMutability": "view",
"virtual": false,
"visibility": "external"
},
{
"baseFunctions": [
13556
],
"body": {
"id": 11979,
"nodeType": "Block",
"src": "4930:69:11",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 11973,
"name": "smartTokens",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11704,
"src": "4965:11:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Items_$11689_storage",
"typeString": "struct ConverterRegistryData.Items storage ref"
}
},
"id": 11974,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "array",
"nodeType": "MemberAccess",
"referencedDeclaration": 11684,
"src": "4965:17:11",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage",
"typeString": "address[] storage ref"
}
},
"id": 11976,
"indexExpression": {
"argumentTypes": null,
"id": 11975,
"name": "_index",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11966,
"src": "4983:6:11",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "4965:25:11",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 11972,
"name": "IConverterAnchor",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 13349,
"src": "4948:16:11",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_IConverterAnchor_$13349_$",
"typeString": "type(contract IConverterAnchor)"
}
},
"id": 11977,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "4948:43:11",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
},
"functionReturnParameters": 11971,
"id": 11978,
"nodeType": "Return",
"src": "4941:50:11"
}
]
},
"documentation": {
"id": 11964,
"nodeType": "StructuredDocumentation",
"src": "4683:152:11",
"text": " @dev returns the smart token at a given index\n @param _index index\n @return smart token at the given index"
},
"functionSelector": "a109d214",
"id": 11980,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "getSmartToken",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 11968,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "4894:8:11"
},
"parameters": {
"id": 11967,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 11966,
"mutability": "mutable",
"name": "_index",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11980,
"src": "4864:14:11",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 11965,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "4864:7:11",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "4863:16:11"
},
"returnParameters": {
"id": 11971,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 11970,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11980,
"src": "4912:16:11",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
},
"typeName": {
"contractScope": null,
"id": 11969,
"name": "IConverterAnchor",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 13349,
"src": "4912:16:11",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "4911:18:11"
},
"scope": 12324,
"src": "4841:158:11",
"stateMutability": "view",
"virtual": false,
"visibility": "external"
},
{
"baseFunctions": [
13563
],
"body": {
"id": 11995,
"nodeType": "Block",
"src": "5277:57:11",
"statements": [
{
"expression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 11989,
"name": "smartTokens",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11704,
"src": "5295:11:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Items_$11689_storage",
"typeString": "struct ConverterRegistryData.Items storage ref"
}
},
"id": 11990,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "table",
"nodeType": "MemberAccess",
"referencedDeclaration": 11688,
"src": "5295:17:11",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_struct$_Item_$11681_storage_$",
"typeString": "mapping(address => struct ConverterRegistryData.Item storage ref)"
}
},
"id": 11992,
"indexExpression": {
"argumentTypes": null,
"id": 11991,
"name": "_value",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11983,
"src": "5313:6:11",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "5295:25:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Item_$11681_storage",
"typeString": "struct ConverterRegistryData.Item storage ref"
}
},
"id": 11993,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "valid",
"nodeType": "MemberAccess",
"referencedDeclaration": 11678,
"src": "5295:31:11",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"functionReturnParameters": 11988,
"id": 11994,
"nodeType": "Return",
"src": "5288:38:11"
}
]
},
"documentation": {
"id": 11981,
"nodeType": "StructuredDocumentation",
"src": "5007:188:11",
"text": " @dev checks whether or not a given value is a smart token\n @param _value value\n @return true if the given value is a smart token, false if not"
},
"functionSelector": "4123ef60",
"id": 11996,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "isSmartToken",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 11985,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "5253:8:11"
},
"parameters": {
"id": 11984,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 11983,
"mutability": "mutable",
"name": "_value",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11996,
"src": "5223:14:11",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 11982,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "5223:7:11",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "5222:16:11"
},
"returnParameters": {
"id": 11988,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 11987,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11996,
"src": "5271:4:11",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 11986,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "5271:4:11",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "5270:6:11"
},
"scope": 12324,
"src": "5201:133:11",
"stateMutability": "view",
"virtual": false,
"visibility": "external"
},
{
"baseFunctions": [
13568
],
"body": {
"id": 12007,
"nodeType": "Block",
"src": "5537:53:11",
"statements": [
{
"expression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 12003,
"name": "liquidityPools",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11706,
"src": "5555:14:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Items_$11689_storage",
"typeString": "struct ConverterRegistryData.Items storage ref"
}
},
"id": 12004,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "array",
"nodeType": "MemberAccess",
"referencedDeclaration": 11684,
"src": "5555:20:11",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage",
"typeString": "address[] storage ref"
}
},
"id": 12005,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "5555:27:11",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"functionReturnParameters": 12002,
"id": 12006,
"nodeType": "Return",
"src": "5548:34:11"
}
]
},
"documentation": {
"id": 11997,
"nodeType": "StructuredDocumentation",
"src": "5342:115:11",
"text": " @dev returns the number of liquidity pools\n @return number of liquidity pools"
},
"functionSelector": "7a5f0ffd",
"id": 12008,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "getLiquidityPoolCount",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 11999,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "5510:8:11"
},
"parameters": {
"id": 11998,
"nodeType": "ParameterList",
"parameters": [],
"src": "5493:2:11"
},
"returnParameters": {
"id": 12002,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 12001,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 12008,
"src": "5528:7:11",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 12000,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "5528:7:11",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "5527:9:11"
},
"scope": 12324,
"src": "5463:127:11",
"stateMutability": "view",
"virtual": false,
"visibility": "external"
},
{
"baseFunctions": [
13574
],
"body": {
"id": 12019,
"nodeType": "Block",
"src": "5794:46:11",
"statements": [
{
"expression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 12016,
"name": "liquidityPools",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11706,
"src": "5812:14:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Items_$11689_storage",
"typeString": "struct ConverterRegistryData.Items storage ref"
}
},
"id": 12017,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "array",
"nodeType": "MemberAccess",
"referencedDeclaration": 11684,
"src": "5812:20:11",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage",
"typeString": "address[] storage ref"
}
},
"functionReturnParameters": 12015,
"id": 12018,
"nodeType": "Return",
"src": "5805:27:11"
}
]
},
"documentation": {
"id": 12009,
"nodeType": "StructuredDocumentation",
"src": "5598:111:11",
"text": " @dev returns the list of liquidity pools\n @return list of liquidity pools"
},
"functionSelector": "7f45c4c3",
"id": 12020,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "getLiquidityPools",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 12011,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "5758:8:11"
},
"parameters": {
"id": 12010,
"nodeType": "ParameterList",
"parameters": [],
"src": "5741:2:11"
},
"returnParameters": {
"id": 12015,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 12014,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 12020,
"src": "5776:16:11",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[]"
},
"typeName": {
"baseType": {
"id": 12012,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "5776:7:11",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 12013,
"length": null,
"nodeType": "ArrayTypeName",
"src": "5776:9:11",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
"typeString": "address[]"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "5775:18:11"
},
"scope": 12324,
"src": "5715:125:11",
"stateMutability": "view",
"virtual": false,
"visibility": "external"
},
{
"baseFunctions": [
13581
],
"body": {
"id": 12036,
"nodeType": "Block",
"src": "6104:72:11",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 12030,
"name": "liquidityPools",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11706,
"src": "6139:14:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Items_$11689_storage",
"typeString": "struct ConverterRegistryData.Items storage ref"
}
},
"id": 12031,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "array",
"nodeType": "MemberAccess",
"referencedDeclaration": 11684,
"src": "6139:20:11",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage",
"typeString": "address[] storage ref"
}
},
"id": 12033,
"indexExpression": {
"argumentTypes": null,
"id": 12032,
"name": "_index",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 12023,
"src": "6160:6:11",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "6139:28:11",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 12029,
"name": "IConverterAnchor",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 13349,
"src": "6122:16:11",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_IConverterAnchor_$13349_$",
"typeString": "type(contract IConverterAnchor)"
}
},
"id": 12034,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "6122:46:11",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
},
"functionReturnParameters": 12028,
"id": 12035,
"nodeType": "Return",
"src": "6115:53:11"
}
]
},
"documentation": {
"id": 12021,
"nodeType": "StructuredDocumentation",
"src": "5848:158:11",
"text": " @dev returns the liquidity pool at a given index\n @param _index index\n @return liquidity pool at the given index"
},
"functionSelector": "a74498aa",
"id": 12037,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "getLiquidityPool",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 12025,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "6068:8:11"
},
"parameters": {
"id": 12024,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 12023,
"mutability": "mutable",
"name": "_index",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 12037,
"src": "6038:14:11",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 12022,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "6038:7:11",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "6037:16:11"
},
"returnParameters": {
"id": 12028,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 12027,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 12037,
"src": "6086:16:11",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
},
"typeName": {
"contractScope": null,
"id": 12026,
"name": "IConverterAnchor",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 13349,
"src": "6086:16:11",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "6085:18:11"
},
"scope": 12324,
"src": "6012:164:11",
"stateMutability": "view",
"virtual": false,
"visibility": "external"
},
{
"baseFunctions": [
13588
],
"body": {
"id": 12052,
"nodeType": "Block",
"src": "6463:60:11",
"statements": [
{
"expression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 12046,
"name": "liquidityPools",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11706,
"src": "6481:14:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Items_$11689_storage",
"typeString": "struct ConverterRegistryData.Items storage ref"
}
},
"id": 12047,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "table",
"nodeType": "MemberAccess",
"referencedDeclaration": 11688,
"src": "6481:20:11",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_struct$_Item_$11681_storage_$",
"typeString": "mapping(address => struct ConverterRegistryData.Item storage ref)"
}
},
"id": 12049,
"indexExpression": {
"argumentTypes": null,
"id": 12048,
"name": "_value",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 12040,
"src": "6502:6:11",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "6481:28:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Item_$11681_storage",
"typeString": "struct ConverterRegistryData.Item storage ref"
}
},
"id": 12050,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "valid",
"nodeType": "MemberAccess",
"referencedDeclaration": 11678,
"src": "6481:34:11",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"functionReturnParameters": 12045,
"id": 12051,
"nodeType": "Return",
"src": "6474:41:11"
}
]
},
"documentation": {
"id": 12038,
"nodeType": "StructuredDocumentation",
"src": "6184:194:11",
"text": " @dev checks whether or not a given value is a liquidity pool\n @param _value value\n @return true if the given value is a liquidity pool, false if not"
},
"functionSelector": "e85455d7",
"id": 12053,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "isLiquidityPool",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 12042,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "6439:8:11"
},
"parameters": {
"id": 12041,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 12040,
"mutability": "mutable",
"name": "_value",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 12053,
"src": "6409:14:11",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 12039,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "6409:7:11",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "6408:16:11"
},
"returnParameters": {
"id": 12045,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 12044,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 12053,
"src": "6457:4:11",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 12043,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "6457:4:11",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "6456:6:11"
},
"scope": 12324,
"src": "6384:139:11",
"stateMutability": "view",
"virtual": false,
"visibility": "external"
},
{
"baseFunctions": [
13593
],
"body": {
"id": 12064,
"nodeType": "Block",
"src": "6735:56:11",
"statements": [
{
"expression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 12060,
"name": "convertibleTokens",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11708,
"src": "6753:17:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Lists_$11702_storage",
"typeString": "struct ConverterRegistryData.Lists storage ref"
}
},
"id": 12061,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "array",
"nodeType": "MemberAccess",
"referencedDeclaration": 11697,
"src": "6753:23:11",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage",
"typeString": "address[] storage ref"
}
},
"id": 12062,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "6753:30:11",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"functionReturnParameters": 12059,
"id": 12063,
"nodeType": "Return",
"src": "6746:37:11"
}
]
},
"documentation": {
"id": 12054,
"nodeType": "StructuredDocumentation",
"src": "6531:121:11",
"text": " @dev returns the number of convertible tokens\n @return number of convertible tokens"
},
"functionSelector": "69be4784",
"id": 12065,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "getConvertibleTokenCount",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 12056,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "6708:8:11"
},
"parameters": {
"id": 12055,
"nodeType": "ParameterList",
"parameters": [],
"src": "6691:2:11"
},
"returnParameters": {
"id": 12059,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 12058,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 12065,
"src": "6726:7:11",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 12057,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "6726:7:11",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "6725:9:11"
},
"scope": 12324,
"src": "6658:133:11",
"stateMutability": "view",
"virtual": false,
"visibility": "external"
},
{
"baseFunctions": [
13599
],
"body": {
"id": 12076,
"nodeType": "Block",
"src": "7004:49:11",
"statements": [
{
"expression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 12073,
"name": "convertibleTokens",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11708,
"src": "7022:17:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Lists_$11702_storage",
"typeString": "struct ConverterRegistryData.Lists storage ref"
}
},
"id": 12074,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "array",
"nodeType": "MemberAccess",
"referencedDeclaration": 11697,
"src": "7022:23:11",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage",
"typeString": "address[] storage ref"
}
},
"functionReturnParameters": 12072,
"id": 12075,
"nodeType": "Return",
"src": "7015:30:11"
}
]
},
"documentation": {
"id": 12066,
"nodeType": "StructuredDocumentation",
"src": "6799:117:11",
"text": " @dev returns the list of convertible tokens\n @return list of convertible tokens"
},
"functionSelector": "5f1b50fe",
"id": 12077,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "getConvertibleTokens",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 12068,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "6968:8:11"
},
"parameters": {
"id": 12067,
"nodeType": "ParameterList",
"parameters": [],
"src": "6951:2:11"
},
"returnParameters": {
"id": 12072,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 12071,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 12077,
"src": "6986:16:11",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[]"
},
"typeName": {
"baseType": {
"id": 12069,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "6986:7:11",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 12070,
"length": null,
"nodeType": "ArrayTypeName",
"src": "6986:9:11",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
"typeString": "address[]"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "6985:18:11"
},
"scope": 12324,
"src": "6922:131:11",
"stateMutability": "view",
"virtual": false,
"visibility": "external"
},
{
"baseFunctions": [
13606
],
"body": {
"id": 12093,
"nodeType": "Block",
"src": "7321:70:11",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 12087,
"name": "convertibleTokens",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11708,
"src": "7351:17:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Lists_$11702_storage",
"typeString": "struct ConverterRegistryData.Lists storage ref"
}
},
"id": 12088,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "array",
"nodeType": "MemberAccess",
"referencedDeclaration": 11697,
"src": "7351:23:11",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage",
"typeString": "address[] storage ref"
}
},
"id": 12090,
"indexExpression": {
"argumentTypes": null,
"id": 12089,
"name": "_index",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 12080,
"src": "7375:6:11",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "7351:31:11",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 12086,
"name": "IERC20Token",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21127,
"src": "7339:11:11",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_IERC20Token_$21127_$",
"typeString": "type(contract IERC20Token)"
}
},
"id": 12091,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "7339:44:11",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
},
"functionReturnParameters": 12085,
"id": 12092,
"nodeType": "Return",
"src": "7332:51:11"
}
]
},
"documentation": {
"id": 12078,
"nodeType": "StructuredDocumentation",
"src": "7061:164:11",
"text": " @dev returns the convertible token at a given index\n @param _index index\n @return convertible token at the given index"
},
"functionSelector": "865cf194",
"id": 12094,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "getConvertibleToken",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 12082,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "7290:8:11"
},
"parameters": {
"id": 12081,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 12080,
"mutability": "mutable",
"name": "_index",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 12094,
"src": "7260:14:11",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 12079,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "7260:7:11",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "7259:16:11"
},
"returnParameters": {
"id": 12085,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 12084,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 12094,
"src": "7308:11:11",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
},
"typeName": {
"contractScope": null,
"id": 12083,
"name": "IERC20Token",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 21127,
"src": "7308:11:11",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "7307:13:11"
},
"scope": 12324,
"src": "7231:160:11",
"stateMutability": "view",
"virtual": false,
"visibility": "external"
},
{
"baseFunctions": [
13613
],
"body": {
"id": 12113,
"nodeType": "Block",
"src": "7687:80:11",
"statements": [
{
"expression": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 12111,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 12103,
"name": "convertibleTokens",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11708,
"src": "7705:17:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Lists_$11702_storage",
"typeString": "struct ConverterRegistryData.Lists storage ref"
}
},
"id": 12104,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "table",
"nodeType": "MemberAccess",
"referencedDeclaration": 11701,
"src": "7705:23:11",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_struct$_List_$11694_storage_$",
"typeString": "mapping(address => struct ConverterRegistryData.List storage ref)"
}
},
"id": 12106,
"indexExpression": {
"argumentTypes": null,
"id": 12105,
"name": "_value",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 12097,
"src": "7729:6:11",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "7705:31:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_List_$11694_storage",
"typeString": "struct ConverterRegistryData.List storage ref"
}
},
"id": 12107,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "items",
"nodeType": "MemberAccess",
"referencedDeclaration": 11693,
"src": "7705:37:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Items_$11689_storage",
"typeString": "struct ConverterRegistryData.Items storage ref"
}
},
"id": 12108,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "array",
"nodeType": "MemberAccess",
"referencedDeclaration": 11684,
"src": "7705:43:11",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage",
"typeString": "address[] storage ref"
}
},
"id": 12109,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "7705:50:11",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": ">",
"rightExpression": {
"argumentTypes": null,
"hexValue": "30",
"id": 12110,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "7758:1:11",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "7705:54:11",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"functionReturnParameters": 12102,
"id": 12112,
"nodeType": "Return",
"src": "7698:61:11"
}
]
},
"documentation": {
"id": 12095,
"nodeType": "StructuredDocumentation",
"src": "7399:200:11",
"text": " @dev checks whether or not a given value is a convertible token\n @param _value value\n @return true if the given value is a convertible token, false if not"
},
"functionSelector": "3ab8857c",
"id": 12114,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "isConvertibleToken",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 12099,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "7663:8:11"
},
"parameters": {
"id": 12098,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 12097,
"mutability": "mutable",
"name": "_value",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 12114,
"src": "7633:14:11",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 12096,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "7633:7:11",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "7632:16:11"
},
"returnParameters": {
"id": 12102,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 12101,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 12114,
"src": "7681:4:11",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 12100,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "7681:4:11",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "7680:6:11"
},
"scope": 12324,
"src": "7605:162:11",
"stateMutability": "view",
"virtual": false,
"visibility": "external"
},
{
"baseFunctions": [
13620
],
"body": {
"id": 12134,
"nodeType": "Block",
"src": "8144:96:11",
"statements": [
{
"expression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 12123,
"name": "convertibleTokens",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11708,
"src": "8162:17:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Lists_$11702_storage",
"typeString": "struct ConverterRegistryData.Lists storage ref"
}
},
"id": 12124,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "table",
"nodeType": "MemberAccess",
"referencedDeclaration": 11701,
"src": "8162:23:11",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_struct$_List_$11694_storage_$",
"typeString": "mapping(address => struct ConverterRegistryData.List storage ref)"
}
},
"id": 12129,
"indexExpression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 12127,
"name": "_convertibleToken",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 12117,
"src": "8194:17:11",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
],
"id": 12126,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "8186:7:11",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 12125,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "8186:7:11",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 12128,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "8186:26:11",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "8162:51:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_List_$11694_storage",
"typeString": "struct ConverterRegistryData.List storage ref"
}
},
"id": 12130,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "items",
"nodeType": "MemberAccess",
"referencedDeclaration": 11693,
"src": "8162:57:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Items_$11689_storage",
"typeString": "struct ConverterRegistryData.Items storage ref"
}
},
"id": 12131,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "array",
"nodeType": "MemberAccess",
"referencedDeclaration": 11684,
"src": "8162:63:11",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage",
"typeString": "address[] storage ref"
}
},
"id": 12132,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "8162:70:11",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"functionReturnParameters": 12122,
"id": 12133,
"nodeType": "Return",
"src": "8155:77:11"
}
]
},
"documentation": {
"id": 12115,
"nodeType": "StructuredDocumentation",
"src": "7775:247:11",
"text": " @dev returns the number of smart tokens associated with a given convertible token\n @param _convertibleToken convertible token\n @return number of smart tokens associated with the given convertible token"
},
"functionSelector": "a43d5e94",
"id": 12135,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "getConvertibleTokenSmartTokenCount",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 12119,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "8117:8:11"
},
"parameters": {
"id": 12118,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 12117,
"mutability": "mutable",
"name": "_convertibleToken",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 12135,
"src": "8072:29:11",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
},
"typeName": {
"contractScope": null,
"id": 12116,
"name": "IERC20Token",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 21127,
"src": "8072:11:11",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "8071:31:11"
},
"returnParameters": {
"id": 12122,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 12121,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 12135,
"src": "8135:7:11",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 12120,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "8135:7:11",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "8134:9:11"
},
"scope": 12324,
"src": "8028:212:11",
"stateMutability": "view",
"virtual": false,
"visibility": "external"
},
{
"baseFunctions": [
13628
],
"body": {
"id": 12155,
"nodeType": "Block",
"src": "8618:89:11",
"statements": [
{
"expression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 12145,
"name": "convertibleTokens",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11708,
"src": "8636:17:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Lists_$11702_storage",
"typeString": "struct ConverterRegistryData.Lists storage ref"
}
},
"id": 12146,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "table",
"nodeType": "MemberAccess",
"referencedDeclaration": 11701,
"src": "8636:23:11",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_struct$_List_$11694_storage_$",
"typeString": "mapping(address => struct ConverterRegistryData.List storage ref)"
}
},
"id": 12151,
"indexExpression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 12149,
"name": "_convertibleToken",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 12138,
"src": "8668:17:11",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
],
"id": 12148,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "8660:7:11",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 12147,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "8660:7:11",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 12150,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "8660:26:11",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "8636:51:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_List_$11694_storage",
"typeString": "struct ConverterRegistryData.List storage ref"
}
},
"id": 12152,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "items",
"nodeType": "MemberAccess",
"referencedDeclaration": 11693,
"src": "8636:57:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Items_$11689_storage",
"typeString": "struct ConverterRegistryData.Items storage ref"
}
},
"id": 12153,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "array",
"nodeType": "MemberAccess",
"referencedDeclaration": 11684,
"src": "8636:63:11",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage",
"typeString": "address[] storage ref"
}
},
"functionReturnParameters": 12144,
"id": 12154,
"nodeType": "Return",
"src": "8629:70:11"
}
]
},
"documentation": {
"id": 12136,
"nodeType": "StructuredDocumentation",
"src": "8248:243:11",
"text": " @dev returns the list of smart tokens associated with a given convertible token\n @param _convertibleToken convertible token\n @return list of smart tokens associated with the given convertible token"
},
"functionSelector": "f4fb86c0",
"id": 12156,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "getConvertibleTokenSmartTokens",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 12140,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "8582:8:11"
},
"parameters": {
"id": 12139,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 12138,
"mutability": "mutable",
"name": "_convertibleToken",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 12156,
"src": "8537:29:11",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
},
"typeName": {
"contractScope": null,
"id": 12137,
"name": "IERC20Token",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 21127,
"src": "8537:11:11",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "8536:31:11"
},
"returnParameters": {
"id": 12144,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 12143,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 12156,
"src": "8600:16:11",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[]"
},
"typeName": {
"baseType": {
"id": 12141,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "8600:7:11",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 12142,
"length": null,
"nodeType": "ArrayTypeName",
"src": "8600:9:11",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
"typeString": "address[]"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "8599:18:11"
},
"scope": 12324,
"src": "8497:210:11",
"stateMutability": "view",
"virtual": false,
"visibility": "external"
},
{
"baseFunctions": [
13637
],
"body": {
"id": 12181,
"nodeType": "Block",
"src": "9095:115:11",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 12168,
"name": "convertibleTokens",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11708,
"src": "9130:17:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Lists_$11702_storage",
"typeString": "struct ConverterRegistryData.Lists storage ref"
}
},
"id": 12169,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "table",
"nodeType": "MemberAccess",
"referencedDeclaration": 11701,
"src": "9130:23:11",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_struct$_List_$11694_storage_$",
"typeString": "mapping(address => struct ConverterRegistryData.List storage ref)"
}
},
"id": 12174,
"indexExpression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 12172,
"name": "_convertibleToken",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 12159,
"src": "9162:17:11",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
],
"id": 12171,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "9154:7:11",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 12170,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "9154:7:11",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 12173,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "9154:26:11",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "9130:51:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_List_$11694_storage",
"typeString": "struct ConverterRegistryData.List storage ref"
}
},
"id": 12175,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "items",
"nodeType": "MemberAccess",
"referencedDeclaration": 11693,
"src": "9130:57:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Items_$11689_storage",
"typeString": "struct ConverterRegistryData.Items storage ref"
}
},
"id": 12176,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "array",
"nodeType": "MemberAccess",
"referencedDeclaration": 11684,
"src": "9130:63:11",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage",
"typeString": "address[] storage ref"
}
},
"id": 12178,
"indexExpression": {
"argumentTypes": null,
"id": 12177,
"name": "_index",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 12161,
"src": "9194:6:11",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "9130:71:11",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 12167,
"name": "IConverterAnchor",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 13349,
"src": "9113:16:11",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_IConverterAnchor_$13349_$",
"typeString": "type(contract IConverterAnchor)"
}
},
"id": 12179,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "9113:89:11",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
},
"functionReturnParameters": 12166,
"id": 12180,
"nodeType": "Return",
"src": "9106:96:11"
}
]
},
"documentation": {
"id": 12157,
"nodeType": "StructuredDocumentation",
"src": "8715:238:11",
"text": " @dev returns the smart token associated with a given convertible token at a given index\n @param _index index\n @return smart token associated with the given convertible token at the given index"
},
"functionSelector": "d6c4b5b2",
"id": 12182,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "getConvertibleTokenSmartToken",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 12163,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "9059:8:11"
},
"parameters": {
"id": 12162,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 12159,
"mutability": "mutable",
"name": "_convertibleToken",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 12182,
"src": "8998:29:11",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
},
"typeName": {
"contractScope": null,
"id": 12158,
"name": "IERC20Token",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 21127,
"src": "8998:11:11",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 12161,
"mutability": "mutable",
"name": "_index",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 12182,
"src": "9029:14:11",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 12160,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "9029:7:11",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "8997:47:11"
},
"returnParameters": {
"id": 12166,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 12165,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 12182,
"src": "9077:16:11",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
},
"typeName": {
"contractScope": null,
"id": 12164,
"name": "IConverterAnchor",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 13349,
"src": "9077:16:11",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "9076:18:11"
},
"scope": 12324,
"src": "8959:251:11",
"stateMutability": "view",
"virtual": false,
"visibility": "external"
},
{
"baseFunctions": [
13646
],
"body": {
"id": 12206,
"nodeType": "Block",
"src": "9647:103:11",
"statements": [
{
"expression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 12193,
"name": "convertibleTokens",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11708,
"src": "9665:17:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Lists_$11702_storage",
"typeString": "struct ConverterRegistryData.Lists storage ref"
}
},
"id": 12194,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "table",
"nodeType": "MemberAccess",
"referencedDeclaration": 11701,
"src": "9665:23:11",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_struct$_List_$11694_storage_$",
"typeString": "mapping(address => struct ConverterRegistryData.List storage ref)"
}
},
"id": 12199,
"indexExpression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 12197,
"name": "_convertibleToken",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 12185,
"src": "9697:17:11",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
],
"id": 12196,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "9689:7:11",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 12195,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "9689:7:11",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 12198,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "9689:26:11",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "9665:51:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_List_$11694_storage",
"typeString": "struct ConverterRegistryData.List storage ref"
}
},
"id": 12200,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "items",
"nodeType": "MemberAccess",
"referencedDeclaration": 11693,
"src": "9665:57:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Items_$11689_storage",
"typeString": "struct ConverterRegistryData.Items storage ref"
}
},
"id": 12201,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "table",
"nodeType": "MemberAccess",
"referencedDeclaration": 11688,
"src": "9665:63:11",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_struct$_Item_$11681_storage_$",
"typeString": "mapping(address => struct ConverterRegistryData.Item storage ref)"
}
},
"id": 12203,
"indexExpression": {
"argumentTypes": null,
"id": 12202,
"name": "_value",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 12187,
"src": "9729:6:11",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "9665:71:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Item_$11681_storage",
"typeString": "struct ConverterRegistryData.Item storage ref"
}
},
"id": 12204,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "valid",
"nodeType": "MemberAccess",
"referencedDeclaration": 11678,
"src": "9665:77:11",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"functionReturnParameters": 12192,
"id": 12205,
"nodeType": "Return",
"src": "9658:84:11"
}
]
},
"documentation": {
"id": 12183,
"nodeType": "StructuredDocumentation",
"src": "9218:300:11",
"text": " @dev checks whether or not a given value is a smart token of a given convertible token\n @param _convertibleToken convertible token\n @param _value value\n @return true if the given value is a smart token of the given convertible token, false it not"
},
"functionSelector": "725b8786",
"id": 12207,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "isConvertibleTokenSmartToken",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 12189,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "9623:8:11"
},
"parameters": {
"id": 12188,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 12185,
"mutability": "mutable",
"name": "_convertibleToken",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 12207,
"src": "9562:29:11",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
},
"typeName": {
"contractScope": null,
"id": 12184,
"name": "IERC20Token",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 21127,
"src": "9562:11:11",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 12187,
"mutability": "mutable",
"name": "_value",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 12207,
"src": "9593:14:11",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 12186,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "9593:7:11",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "9561:47:11"
},
"returnParameters": {
"id": 12192,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 12191,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 12207,
"src": "9641:4:11",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 12190,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "9641:4:11",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "9640:6:11"
},
"scope": 12324,
"src": "9524:226:11",
"stateMutability": "view",
"virtual": false,
"visibility": "external"
},
{
"body": {
"id": 12254,
"nodeType": "Block",
"src": "9988:219:11",
"statements": [
{
"assignments": [
12219
],
"declarations": [
{
"constant": false,
"id": 12219,
"mutability": "mutable",
"name": "item",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 12254,
"src": "9999:17:11",
"stateVariable": false,
"storageLocation": "storage",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Item_$11681_storage_ptr",
"typeString": "struct ConverterRegistryData.Item"
},
"typeName": {
"contractScope": null,
"id": 12218,
"name": "Item",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 11681,
"src": "9999:4:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Item_$11681_storage_ptr",
"typeString": "struct ConverterRegistryData.Item"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 12224,
"initialValue": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 12220,
"name": "_items",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 12210,
"src": "10019:6:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Items_$11689_storage_ptr",
"typeString": "struct ConverterRegistryData.Items storage pointer"
}
},
"id": 12221,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "table",
"nodeType": "MemberAccess",
"referencedDeclaration": 11688,
"src": "10019:12:11",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_struct$_Item_$11681_storage_$",
"typeString": "mapping(address => struct ConverterRegistryData.Item storage ref)"
}
},
"id": 12223,
"indexExpression": {
"argumentTypes": null,
"id": 12222,
"name": "_value",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 12212,
"src": "10032:6:11",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "10019:20:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Item_$11681_storage",
"typeString": "struct ConverterRegistryData.Item storage ref"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "9999:40:11"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 12228,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "!",
"prefix": true,
"src": "10058:11:11",
"subExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 12226,
"name": "item",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 12219,
"src": "10059:4:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Item_$11681_storage_ptr",
"typeString": "struct ConverterRegistryData.Item storage pointer"
}
},
"id": 12227,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "valid",
"nodeType": "MemberAccess",
"referencedDeclaration": 11678,
"src": "10059:10:11",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"argumentTypes": null,
"hexValue": "4552525f494e56414c49445f4954454d",
"id": 12229,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "10071:18:11",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_45c52aff26d012f687a90a37723f3c6469b3bdb8dce3fb6f14072d935b05b47b",
"typeString": "literal_string \"ERR_INVALID_ITEM\""
},
"value": "ERR_INVALID_ITEM"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_45c52aff26d012f687a90a37723f3c6469b3bdb8dce3fb6f14072d935b05b47b",
"typeString": "literal_string \"ERR_INVALID_ITEM\""
}
],
"id": 12225,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "10050:7:11",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 12230,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "10050:40:11",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 12231,
"nodeType": "ExpressionStatement",
"src": "10050:40:11"
},
{
"expression": {
"argumentTypes": null,
"id": 12238,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 12232,
"name": "item",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 12219,
"src": "10103:4:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Item_$11681_storage_ptr",
"typeString": "struct ConverterRegistryData.Item storage pointer"
}
},
"id": 12234,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"memberName": "index",
"nodeType": "MemberAccess",
"referencedDeclaration": 11680,
"src": "10103:10:11",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 12235,
"name": "_items",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 12210,
"src": "10116:6:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Items_$11689_storage_ptr",
"typeString": "struct ConverterRegistryData.Items storage pointer"
}
},
"id": 12236,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "array",
"nodeType": "MemberAccess",
"referencedDeclaration": 11684,
"src": "10116:12:11",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage",
"typeString": "address[] storage ref"
}
},
"id": 12237,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "10116:19:11",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "10103:32:11",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 12239,
"nodeType": "ExpressionStatement",
"src": "10103:32:11"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 12245,
"name": "_value",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 12212,
"src": "10164:6:11",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"expression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 12240,
"name": "_items",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 12210,
"src": "10146:6:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Items_$11689_storage_ptr",
"typeString": "struct ConverterRegistryData.Items storage pointer"
}
},
"id": 12243,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "array",
"nodeType": "MemberAccess",
"referencedDeclaration": 11684,
"src": "10146:12:11",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage",
"typeString": "address[] storage ref"
}
},
"id": 12244,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "push",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "10146:17:11",
"typeDescriptions": {
"typeIdentifier": "t_function_arraypush_nonpayable$_t_address_$returns$__$",
"typeString": "function (address)"
}
},
"id": 12246,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "10146:25:11",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 12247,
"nodeType": "ExpressionStatement",
"src": "10146:25:11"
},
{
"expression": {
"argumentTypes": null,
"id": 12252,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 12248,
"name": "item",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 12219,
"src": "10182:4:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Item_$11681_storage_ptr",
"typeString": "struct ConverterRegistryData.Item storage pointer"
}
},
"id": 12250,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"memberName": "valid",
"nodeType": "MemberAccess",
"referencedDeclaration": 11678,
"src": "10182:10:11",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"hexValue": "74727565",
"id": 12251,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "bool",
"lValueRequested": false,
"nodeType": "Literal",
"src": "10195:4:11",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"value": "true"
},
"src": "10182:17:11",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 12253,
"nodeType": "ExpressionStatement",
"src": "10182:17:11"
}
]
},
"documentation": {
"id": 12208,
"nodeType": "StructuredDocumentation",
"src": "9758:139:11",
"text": " @dev adds an item to a list of items\n @param _items list of items\n @param _value item's value"
},
"id": 12255,
"implemented": true,
"kind": "function",
"modifiers": [
{
"arguments": [
{
"argumentTypes": null,
"id": 12215,
"name": "_value",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 12212,
"src": "9980:6:11",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"id": 12216,
"modifierName": {
"argumentTypes": null,
"id": 12214,
"name": "validAddress",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 22618,
"src": "9967:12:11",
"typeDescriptions": {
"typeIdentifier": "t_modifier$_t_address_$",
"typeString": "modifier (address)"
}
},
"nodeType": "ModifierInvocation",
"src": "9967:20:11"
}
],
"name": "addItem",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 12213,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 12210,
"mutability": "mutable",
"name": "_items",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 12255,
"src": "9920:20:11",
"stateVariable": false,
"storageLocation": "storage",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Items_$11689_storage_ptr",
"typeString": "struct ConverterRegistryData.Items"
},
"typeName": {
"contractScope": null,
"id": 12209,
"name": "Items",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 11689,
"src": "9920:5:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Items_$11689_storage_ptr",
"typeString": "struct ConverterRegistryData.Items"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 12212,
"mutability": "mutable",
"name": "_value",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 12255,
"src": "9942:14:11",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 12211,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "9942:7:11",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "9919:38:11"
},
"returnParameters": {
"id": 12217,
"nodeType": "ParameterList",
"parameters": [],
"src": "9988:0:11"
},
"scope": 12324,
"src": "9903:304:11",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "internal"
},
{
"body": {
"id": 12322,
"nodeType": "Block",
"src": "10453:346:11",
"statements": [
{
"assignments": [
12267
],
"declarations": [
{
"constant": false,
"id": 12267,
"mutability": "mutable",
"name": "item",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 12322,
"src": "10464:17:11",
"stateVariable": false,
"storageLocation": "storage",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Item_$11681_storage_ptr",
"typeString": "struct ConverterRegistryData.Item"
},
"typeName": {
"contractScope": null,
"id": 12266,
"name": "Item",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 11681,
"src": "10464:4:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Item_$11681_storage_ptr",
"typeString": "struct ConverterRegistryData.Item"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 12272,
"initialValue": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 12268,
"name": "_items",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 12258,
"src": "10484:6:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Items_$11689_storage_ptr",
"typeString": "struct ConverterRegistryData.Items storage pointer"
}
},
"id": 12269,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "table",
"nodeType": "MemberAccess",
"referencedDeclaration": 11688,
"src": "10484:12:11",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_struct$_Item_$11681_storage_$",
"typeString": "mapping(address => struct ConverterRegistryData.Item storage ref)"
}
},
"id": 12271,
"indexExpression": {
"argumentTypes": null,
"id": 12270,
"name": "_value",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 12260,
"src": "10497:6:11",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "10484:20:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Item_$11681_storage",
"typeString": "struct ConverterRegistryData.Item storage ref"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "10464:40:11"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 12274,
"name": "item",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 12267,
"src": "10523:4:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Item_$11681_storage_ptr",
"typeString": "struct ConverterRegistryData.Item storage pointer"
}
},
"id": 12275,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "valid",
"nodeType": "MemberAccess",
"referencedDeclaration": 11678,
"src": "10523:10:11",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"argumentTypes": null,
"hexValue": "4552525f494e56414c49445f4954454d",
"id": 12276,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "10535:18:11",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_45c52aff26d012f687a90a37723f3c6469b3bdb8dce3fb6f14072d935b05b47b",
"typeString": "literal_string \"ERR_INVALID_ITEM\""
},
"value": "ERR_INVALID_ITEM"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_45c52aff26d012f687a90a37723f3c6469b3bdb8dce3fb6f14072d935b05b47b",
"typeString": "literal_string \"ERR_INVALID_ITEM\""
}
],
"id": 12273,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "10515:7:11",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 12277,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "10515:39:11",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 12278,
"nodeType": "ExpressionStatement",
"src": "10515:39:11"
},
{
"assignments": [
12280
],
"declarations": [
{
"constant": false,
"id": 12280,
"mutability": "mutable",
"name": "lastValue",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 12322,
"src": "10567:17:11",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 12279,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "10567:7:11",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 12289,
"initialValue": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 12281,
"name": "_items",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 12258,
"src": "10587:6:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Items_$11689_storage_ptr",
"typeString": "struct ConverterRegistryData.Items storage pointer"
}
},
"id": 12282,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "array",
"nodeType": "MemberAccess",
"referencedDeclaration": 11684,
"src": "10587:12:11",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage",
"typeString": "address[] storage ref"
}
},
"id": 12288,
"indexExpression": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 12287,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 12283,
"name": "_items",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 12258,
"src": "10600:6:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Items_$11689_storage_ptr",
"typeString": "struct ConverterRegistryData.Items storage pointer"
}
},
"id": 12284,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "array",
"nodeType": "MemberAccess",
"referencedDeclaration": 11684,
"src": "10600:12:11",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage",
"typeString": "address[] storage ref"
}
},
"id": 12285,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "10600:19:11",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "-",
"rightExpression": {
"argumentTypes": null,
"hexValue": "31",
"id": 12286,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "10622:1:11",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_1_by_1",
"typeString": "int_const 1"
},
"value": "1"
},
"src": "10600:23:11",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "10587:37:11",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "10567:57:11"
},
{
"expression": {
"argumentTypes": null,
"id": 12298,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 12290,
"name": "_items",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 12258,
"src": "10635:6:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Items_$11689_storage_ptr",
"typeString": "struct ConverterRegistryData.Items storage pointer"
}
},
"id": 12293,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "table",
"nodeType": "MemberAccess",
"referencedDeclaration": 11688,
"src": "10635:12:11",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_struct$_Item_$11681_storage_$",
"typeString": "mapping(address => struct ConverterRegistryData.Item storage ref)"
}
},
"id": 12294,
"indexExpression": {
"argumentTypes": null,
"id": 12292,
"name": "lastValue",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 12280,
"src": "10648:9:11",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "10635:23:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Item_$11681_storage",
"typeString": "struct ConverterRegistryData.Item storage ref"
}
},
"id": 12295,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"memberName": "index",
"nodeType": "MemberAccess",
"referencedDeclaration": 11680,
"src": "10635:29:11",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 12296,
"name": "item",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 12267,
"src": "10667:4:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Item_$11681_storage_ptr",
"typeString": "struct ConverterRegistryData.Item storage pointer"
}
},
"id": 12297,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "index",
"nodeType": "MemberAccess",
"referencedDeclaration": 11680,
"src": "10667:10:11",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "10635:42:11",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 12299,
"nodeType": "ExpressionStatement",
"src": "10635:42:11"
},
{
"expression": {
"argumentTypes": null,
"id": 12307,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 12300,
"name": "_items",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 12258,
"src": "10688:6:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Items_$11689_storage_ptr",
"typeString": "struct ConverterRegistryData.Items storage pointer"
}
},
"id": 12304,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "array",
"nodeType": "MemberAccess",
"referencedDeclaration": 11684,
"src": "10688:12:11",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage",
"typeString": "address[] storage ref"
}
},
"id": 12305,
"indexExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 12302,
"name": "item",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 12267,
"src": "10701:4:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Item_$11681_storage_ptr",
"typeString": "struct ConverterRegistryData.Item storage pointer"
}
},
"id": 12303,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "index",
"nodeType": "MemberAccess",
"referencedDeclaration": 11680,
"src": "10701:10:11",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "10688:24:11",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 12306,
"name": "lastValue",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 12280,
"src": "10715:9:11",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "10688:36:11",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 12308,
"nodeType": "ExpressionStatement",
"src": "10688:36:11"
},
{
"expression": {
"argumentTypes": null,
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 12309,
"name": "_items",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 12258,
"src": "10735:6:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Items_$11689_storage_ptr",
"typeString": "struct ConverterRegistryData.Items storage pointer"
}
},
"id": 12312,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "array",
"nodeType": "MemberAccess",
"referencedDeclaration": 11684,
"src": "10735:12:11",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage",
"typeString": "address[] storage ref"
}
},
"id": 12313,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "pop",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "10735:16:11",
"typeDescriptions": {
"typeIdentifier": "t_function_arraypop_nonpayable$__$returns$__$",
"typeString": "function ()"
}
},
"id": 12314,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "10735:18:11",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 12315,
"nodeType": "ExpressionStatement",
"src": "10735:18:11"
},
{
"expression": {
"argumentTypes": null,
"id": 12320,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "delete",
"prefix": true,
"src": "10764:27:11",
"subExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 12316,
"name": "_items",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 12258,
"src": "10771:6:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Items_$11689_storage_ptr",
"typeString": "struct ConverterRegistryData.Items storage pointer"
}
},
"id": 12317,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "table",
"nodeType": "MemberAccess",
"referencedDeclaration": 11688,
"src": "10771:12:11",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_struct$_Item_$11681_storage_$",
"typeString": "mapping(address => struct ConverterRegistryData.Item storage ref)"
}
},
"id": 12319,
"indexExpression": {
"argumentTypes": null,
"id": 12318,
"name": "_value",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 12260,
"src": "10784:6:11",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "10771:20:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Item_$11681_storage",
"typeString": "struct ConverterRegistryData.Item storage ref"
}
},
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 12321,
"nodeType": "ExpressionStatement",
"src": "10764:27:11"
}
]
},
"documentation": {
"id": 12256,
"nodeType": "StructuredDocumentation",
"src": "10215:144:11",
"text": " @dev removes an item from a list of items\n @param _items list of items\n @param _value item's value"
},
"id": 12323,
"implemented": true,
"kind": "function",
"modifiers": [
{
"arguments": [
{
"argumentTypes": null,
"id": 12263,
"name": "_value",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 12260,
"src": "10445:6:11",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"id": 12264,
"modifierName": {
"argumentTypes": null,
"id": 12262,
"name": "validAddress",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 22618,
"src": "10432:12:11",
"typeDescriptions": {
"typeIdentifier": "t_modifier$_t_address_$",
"typeString": "modifier (address)"
}
},
"nodeType": "ModifierInvocation",
"src": "10432:20:11"
}
],
"name": "removeItem",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 12261,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 12258,
"mutability": "mutable",
"name": "_items",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 12323,
"src": "10385:20:11",
"stateVariable": false,
"storageLocation": "storage",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Items_$11689_storage_ptr",
"typeString": "struct ConverterRegistryData.Items"
},
"typeName": {
"contractScope": null,
"id": 12257,
"name": "Items",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 11689,
"src": "10385:5:11",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Items_$11689_storage_ptr",
"typeString": "struct ConverterRegistryData.Items"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 12260,
"mutability": "mutable",
"name": "_value",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 12323,
"src": "10407:14:11",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 12259,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "10407:7:11",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "10384:38:11"
},
"returnParameters": {
"id": 12265,
"nodeType": "ParameterList",
"parameters": [],
"src": "10453:0:11"
},
"scope": 12324,
"src": "10365:434:11",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "internal"
}
],
"scope": 12325,
"src": "752:10050:11"
}
],
"src": "52:10752:11"
},
"compiler": {
"name": "solc",
"version": "0.6.12+commit.27d51765.Emscripten.clang"
},
"networks": {
"42": {
"events": {
"0x343765429aea5a34b3ff6a3785a98a5abb2597aca87bfbb58632c173d585373a": {
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "_prevOwner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "_newOwner",
"type": "address"
}
],
"name": "OwnerUpdate",
"type": "event"
}
},
"links": {},
"address": "0xd0097a901AF4ac2E63A5b6E86be8Ad91f10b05d7",
"transactionHash": "0x89fa917fc8afde60ec81e4388b75a298bf821df70589964493f8950d8fc3f63d"
},
"8995": {
"events": {
"0x343765429aea5a34b3ff6a3785a98a5abb2597aca87bfbb58632c173d585373a": {
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "_prevOwner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "_newOwner",
"type": "address"
}
],
"name": "OwnerUpdate",
"type": "event"
}
},
"links": {},
"address": "0xd0097a901AF4ac2E63A5b6E86be8Ad91f10b05d7",
"transactionHash": "0x89fa917fc8afde60ec81e4388b75a298bf821df70589964493f8950d8fc3f63d"
},
"1604964387852": {
"events": {
"0x343765429aea5a34b3ff6a3785a98a5abb2597aca87bfbb58632c173d585373a": {
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "_prevOwner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "_newOwner",
"type": "address"
}
],
"name": "OwnerUpdate",
"type": "event"
}
},
"links": {},
"address": "0x55Ff16F5765c13A4446b511b596263C1De8Dfc26",
"transactionHash": "0x144e03bae03b254034eaa0e1aee71eb82f73230d9588852d68d86a8f921304c1"
},
"1604964469407": {
"events": {
"0x343765429aea5a34b3ff6a3785a98a5abb2597aca87bfbb58632c173d585373a": {
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "_prevOwner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "_newOwner",
"type": "address"
}
],
"name": "OwnerUpdate",
"type": "event"
}
},
"links": {},
"address": "0xAC3ff05D43718dF1d4c0F9363Baec946609640BA",
"transactionHash": "0xa9dc657a9abf000cda08ff7cca415975f43550f7f240e7be3e37f3f888e5485a"
},
"1604965528035": {
"events": {
"0x343765429aea5a34b3ff6a3785a98a5abb2597aca87bfbb58632c173d585373a": {
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "_prevOwner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "_newOwner",
"type": "address"
}
],
"name": "OwnerUpdate",
"type": "event"
}
},
"links": {},
"address": "0xcF7f75A6080BeA51a04A5d10B6f2A9eD4fA94160",
"transactionHash": "0xfe909296dec939d70261c1d9f24e15e47fb1eda091150932ba01fa5330ab0ae4"
},
"1604965645554": {
"events": {
"0x343765429aea5a34b3ff6a3785a98a5abb2597aca87bfbb58632c173d585373a": {
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "_prevOwner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "_newOwner",
"type": "address"
}
],
"name": "OwnerUpdate",
"type": "event"
}
},
"links": {},
"address": "0x48ec918ea761D509b367fe291A0980648554181C",
"transactionHash": "0x98be38342bdb36332b2c7fa19cab1741f3af7ab71882436748519f23e938dfbd"
},
"1604965679541": {
"events": {
"0x343765429aea5a34b3ff6a3785a98a5abb2597aca87bfbb58632c173d585373a": {
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "_prevOwner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "_newOwner",
"type": "address"
}
],
"name": "OwnerUpdate",
"type": "event"
}
},
"links": {},
"address": "0x87745E2a343213bBB441dcd051DdF097a013892E",
"transactionHash": "0x2c03673176e2c2328055a2a41b8cc82543c7a9986ff766e19a5cf2d67a951489"
},
"1604965719492": {
"events": {
"0x343765429aea5a34b3ff6a3785a98a5abb2597aca87bfbb58632c173d585373a": {
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "_prevOwner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "_newOwner",
"type": "address"
}
],
"name": "OwnerUpdate",
"type": "event"
}
},
"links": {},
"address": "0xD382D4E21484C60847a48E52122cCf704C731bFf",
"transactionHash": "0x753f7963061ecd52d6348c9b8af34721f84069b72fcb487c9226d29ccf3771a9"
},
"1604965760834": {
"events": {
"0x343765429aea5a34b3ff6a3785a98a5abb2597aca87bfbb58632c173d585373a": {
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "_prevOwner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "_newOwner",
"type": "address"
}
],
"name": "OwnerUpdate",
"type": "event"
}
},
"links": {},
"address": "0x6076e2Dbe065826C21C4bB82e05D0e5fd1D92d15",
"transactionHash": "0x1c4d1c3a519f64956bc6b5727cf1248addf3d8d8369b350d008125b6710c035d"
}
},
"schemaVersion": "3.2.3",
"updatedAt": "2020-11-10T14:20:41.912Z",
"networkType": "ethereum",
"devdoc": {
"details": "The ConverterRegistryData contract is an integral part of the converter registry as it serves as the database contract that holds all registry data. The registry is separated into two different contracts for upgradability - the data contract is harder to upgrade as it requires migrating all registry data into a new contract, while the registry contract itself can be easily upgraded. For that same reason, the data contract is simple and contains no logic beyond the basic data access utilities that it exposes.",
"kind": "dev",
"methods": {
"acceptOwnership()": {
"details": "used by a new owner to accept an ownership transfer"
},
"addConvertibleToken(address,address)": {
"details": "adds a convertible token",
"params": {
"_anchor": "associated smart token",
"_convertibleToken": "convertible token"
}
},
"addLiquidityPool(address)": {
"details": "adds a liquidity pool",
"params": {
"_liquidityPoolAnchor": "liquidity pool"
}
},
"addSmartToken(address)": {
"details": "adds a smart token",
"params": {
"_anchor": "smart token"
}
},
"constructor": {
"details": "initializes a new ConverterRegistryData instance",
"params": {
"_registry": "address of a contract registry contract"
}
},
"getConvertibleToken(uint256)": {
"details": "returns the convertible token at a given index",
"params": {
"_index": "index"
},
"returns": {
"_0": "convertible token at the given index"
}
},
"getConvertibleTokenCount()": {
"details": "returns the number of convertible tokens",
"returns": {
"_0": "number of convertible tokens"
}
},
"getConvertibleTokenSmartToken(address,uint256)": {
"details": "returns the smart token associated with a given convertible token at a given index",
"params": {
"_index": "index"
},
"returns": {
"_0": "smart token associated with the given convertible token at the given index"
}
},
"getConvertibleTokenSmartTokenCount(address)": {
"details": "returns the number of smart tokens associated with a given convertible token",
"params": {
"_convertibleToken": "convertible token"
},
"returns": {
"_0": "number of smart tokens associated with the given convertible token"
}
},
"getConvertibleTokenSmartTokens(address)": {
"details": "returns the list of smart tokens associated with a given convertible token",
"params": {
"_convertibleToken": "convertible token"
},
"returns": {
"_0": "list of smart tokens associated with the given convertible token"
}
},
"getConvertibleTokens()": {
"details": "returns the list of convertible tokens",
"returns": {
"_0": "list of convertible tokens"
}
},
"getLiquidityPool(uint256)": {
"details": "returns the liquidity pool at a given index",
"params": {
"_index": "index"
},
"returns": {
"_0": "liquidity pool at the given index"
}
},
"getLiquidityPoolCount()": {
"details": "returns the number of liquidity pools",
"returns": {
"_0": "number of liquidity pools"
}
},
"getLiquidityPools()": {
"details": "returns the list of liquidity pools",
"returns": {
"_0": "list of liquidity pools"
}
},
"getSmartToken(uint256)": {
"details": "returns the smart token at a given index",
"params": {
"_index": "index"
},
"returns": {
"_0": "smart token at the given index"
}
},
"getSmartTokenCount()": {
"details": "returns the number of smart tokens",
"returns": {
"_0": "number of smart tokens"
}
},
"getSmartTokens()": {
"details": "returns the list of smart tokens",
"returns": {
"_0": "list of smart tokens"
}
},
"isConvertibleToken(address)": {
"details": "checks whether or not a given value is a convertible token",
"params": {
"_value": "value"
},
"returns": {
"_0": "true if the given value is a convertible token, false if not"
}
},
"isConvertibleTokenSmartToken(address,address)": {
"details": "checks whether or not a given value is a smart token of a given convertible token",
"params": {
"_convertibleToken": "convertible token",
"_value": "value"
},
"returns": {
"_0": "true if the given value is a smart token of the given convertible token, false it not"
}
},
"isLiquidityPool(address)": {
"details": "checks whether or not a given value is a liquidity pool",
"params": {
"_value": "value"
},
"returns": {
"_0": "true if the given value is a liquidity pool, false if not"
}
},
"isSmartToken(address)": {
"details": "checks whether or not a given value is a smart token",
"params": {
"_value": "value"
},
"returns": {
"_0": "true if the given value is a smart token, false if not"
}
},
"removeConvertibleToken(address,address)": {
"details": "removes a convertible token",
"params": {
"_anchor": "associated smart token",
"_convertibleToken": "convertible token"
}
},
"removeLiquidityPool(address)": {
"details": "removes a liquidity pool",
"params": {
"_liquidityPoolAnchor": "liquidity pool"
}
},
"removeSmartToken(address)": {
"details": "removes a smart token",
"params": {
"_anchor": "smart token"
}
},
"restoreRegistry()": {
"details": "restores the previous contract-registry"
},
"restrictRegistryUpdate(bool)": {
"details": "restricts the permission to update the contract-registry",
"params": {
"_onlyOwnerCanUpdateRegistry": "indicates whether or not permission is restricted to owner only"
}
},
"transferOwnership(address)": {
"details": "allows transferring the contract ownership the new owner still needs to accept the transfer can only be called by the contract owner",
"params": {
"_newOwner": "new contract owner"
}
},
"updateRegistry()": {
"details": "updates to the new contract-registry"
}
},
"version": 1
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
}