cic-stack/apps/cic-eth/tests/testdata/bancor/ContractRegistry.json

8533 lines
368 KiB
JSON
Raw Normal View History

2021-02-01 18:12:51 +01:00
{
"contractName": "ContractRegistry",
"abi": [
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "_contractName",
"type": "bytes32"
},
{
"indexed": false,
"internalType": "address",
"name": "_contractAddress",
"type": "address"
}
],
"name": "AddressUpdate",
"type": "event"
},
{
"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": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "contractNames",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function",
"constant": true
},
{
"inputs": [],
"name": "newOwner",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function",
"constant": true
},
{
"inputs": [],
"name": "owner",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function",
"constant": true
},
{
"inputs": [
{
"internalType": "address",
"name": "_newOwner",
"type": "address"
}
],
"name": "transferOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "itemCount",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function",
"constant": true
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "_contractName",
"type": "bytes32"
}
],
"name": "addressOf",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function",
"constant": true
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "_contractName",
"type": "bytes32"
},
{
"internalType": "address",
"name": "_contractAddress",
"type": "address"
}
],
"name": "registerAddress",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "_contractName",
"type": "bytes32"
}
],
"name": "unregisterAddress",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "_contractName",
"type": "bytes32"
}
],
"name": "getAddress",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function",
"constant": true
}
],
"metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"_contractName\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"}],\"name\":\"AddressUpdate\",\"type\":\"event\"},{\"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\":\"bytes32\",\"name\":\"_contractName\",\"type\":\"bytes32\"}],\"name\":\"addressOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"contractNames\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_contractName\",\"type\":\"bytes32\"}],\"name\":\"getAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"itemCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"newOwner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_contractName\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"}],\"name\":\"registerAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_contractName\",\"type\":\"bytes32\"}],\"name\":\"unregisterAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Contract Registry The contract registry keeps contract addresses by name. The owner can update contract addresses so that a contract name always points to the latest version of the given contract. Other contracts can query the registry to get updated addresses instead of depending on specific addresses. Note that contract names are limited to 32 bytes UTF8 encoded ASCII strings to optimize gas costs\",\"events\":{\"AddressUpdate(bytes32,address)\":{\"details\":\"triggered when an address pointed to by a contract name is modified\",\"params\":{\"_contractAddress\":\"new contract address\",\"_contractName\":\"contract name\"}}},\"kind\":\"dev\",\"methods\":{\"acceptOwnership()\":{\"details\":\"used by a new owner to accept an ownership transfer\"},\"addressOf(bytes32)\":{\"details\":\"returns the address associated with the given contract name\",\"params\":{\"_contractName\":\"contract name\"},\"returns\":{\"_0\":\"contract address\"}},\"getAddress(bytes32)\":{\"details\":\"deprecated, backward compatibility\"},\"itemCount()\":{\"details\":\"returns the number of items in the registry\",\"returns\":{\"_0\":\"number of items\"}},\"registerAddress(bytes32,address)\":{\"details\":\"registers a new address for the contract name in the registry\",\"params\":{\"_contractAddress\":\"contract address\",\"_contractName\":\"contract name\"}},\"transferOwnership(address)\":{\"d
"bytecode": "0x608060405234801561001057600080fd5b50600080546001600160a01b0319163317905561098f806100326000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c806379ba50971161006657806379ba5097146101d35780638da5cb5b146101db578063bb34534c146101e3578063d4ee1d9014610200578063f2fde38b146102085761009e565b806321f8a721146100a35780632bbd9530146100dc5780633ca6bb92146100fb578063662de3791461018d5780636bfb0d01146101b9575b600080fd5b6100c0600480360360208110156100b957600080fd5b503561022e565b604080516001600160a01b039092168252519081900360200190f35b6100f9600480360360208110156100f257600080fd5b503561023f565b005b6101186004803603602081101561011157600080fd5b5035610453565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561015257818101518382015260200161013a565b50505050905090810190601f16801561017f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6100f9600480360360408110156101a357600080fd5b50803590602001356001600160a01b03166104f9565b6101c16105f0565b60408051918252519081900360200190f35b6100f96105f6565b6100c06106ad565b6100c0600480360360208110156101f957600080fd5b50356106bc565b6100c06106d7565b6100f96004803603602081101561021e57600080fd5b50356001600160a01b03166106e6565b6000610239826106bc565b92915050565b610247610764565b6000818152600260205260409020546001600160a01b03166102a3576040805162461bcd60e51b815260206004820152601060248201526f4552525f494e56414c49445f4e414d4560801b604482015290519081900360640190fd5b600081815260026020526040902080546001600160a01b0319169055600354600110156103df57600380546060919060001981019081106102e057fe5b600091825260209182902001805460408051601f600260001961010060018716150201909416939093049283018590048502810185019091528181529283018282801561036e5780601f106103435761010080835404028352916020019161036e565b820191906000526020600020905b81548152906001019060200180831161035157829003601f168201915b50505050509050600060026000848152602001908152602001600020600101549050816003828154811061039e57fe5b9060005260206000200190805190602001906103bb929190610886565b5060006103c7836107b9565b60009081526002602052604090206001019190915550505b60038054806103ea57fe5b6001900381819060005260206000200160006104069190610904565b9055600081815260026020908152604080832060010183905580519283525183927ffc08d1253c81bcd5444fc7056ef1f5a5df4c9220b6fd70d7449267f1f0f2991892908290030190a250565b6003818154811061046057fe5b600091825260209182902001805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152935090918301828280156104f15780601f106104c6576101008083540402835291602001916104f1565b820191906000526020600020905b8154815290600101906020018083116104d457829003601f168201915b505050505081565b610501610764565b8061050b816107c0565b6000838152600260205260409020546001600160a01b0390811690831681141561053557506105eb565b6001600160a01b038116610589576003805460008681526002602052604090206001015561056285610814565b8154600181018355600092835260209283902082516105879491909201920190610886565b505b60008481526002602090815260409182902080546001600160a01b0319166001600160a01b0387169081179091558251908152915186927ffc08d1253c81bcd5444fc7056ef1f5a5df4c9220b6fd70d7449267f1f0f2991892908290030190a2505b505050565b60035490565b6001546001600160a01b03163314610649576040805162461bcd60e51b815260206004820152601160248201527011549497d050d0d154d4d7d11153925151607a1b604482015290519081900360640190fd5b600154600080546040516001600160a01b0393841693909116917f343765429aea5a34b3ff6a3785a98a5abb2597aca87bfbb58632c173d585373a91a360018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b6000546001600160a01b031681565b6000908152600260205260409020546001600160a01b031690565b6001546001600160a01b031681565b6106ee610764565b6000546001600160a01b0382811691161415610742576040805162461bcd60e51b815260206004820152600e60248201526d22a9292fa9a0a6a2afa7aba722a960911b604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146107b7576040805162461bcd60e51b815260206004820152601160248201527011549497d050d0d154d4d7d11153925151607a1b604482015290519081900360640190fd5b565b6020015190565b60016001
"deployedBytecode": "0x608060405234801561001057600080fd5b506004361061009e5760003560e01c806379ba50971161006657806379ba5097146101d35780638da5cb5b146101db578063bb34534c146101e3578063d4ee1d9014610200578063f2fde38b146102085761009e565b806321f8a721146100a35780632bbd9530146100dc5780633ca6bb92146100fb578063662de3791461018d5780636bfb0d01146101b9575b600080fd5b6100c0600480360360208110156100b957600080fd5b503561022e565b604080516001600160a01b039092168252519081900360200190f35b6100f9600480360360208110156100f257600080fd5b503561023f565b005b6101186004803603602081101561011157600080fd5b5035610453565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561015257818101518382015260200161013a565b50505050905090810190601f16801561017f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6100f9600480360360408110156101a357600080fd5b50803590602001356001600160a01b03166104f9565b6101c16105f0565b60408051918252519081900360200190f35b6100f96105f6565b6100c06106ad565b6100c0600480360360208110156101f957600080fd5b50356106bc565b6100c06106d7565b6100f96004803603602081101561021e57600080fd5b50356001600160a01b03166106e6565b6000610239826106bc565b92915050565b610247610764565b6000818152600260205260409020546001600160a01b03166102a3576040805162461bcd60e51b815260206004820152601060248201526f4552525f494e56414c49445f4e414d4560801b604482015290519081900360640190fd5b600081815260026020526040902080546001600160a01b0319169055600354600110156103df57600380546060919060001981019081106102e057fe5b600091825260209182902001805460408051601f600260001961010060018716150201909416939093049283018590048502810185019091528181529283018282801561036e5780601f106103435761010080835404028352916020019161036e565b820191906000526020600020905b81548152906001019060200180831161035157829003601f168201915b50505050509050600060026000848152602001908152602001600020600101549050816003828154811061039e57fe5b9060005260206000200190805190602001906103bb929190610886565b5060006103c7836107b9565b60009081526002602052604090206001019190915550505b60038054806103ea57fe5b6001900381819060005260206000200160006104069190610904565b9055600081815260026020908152604080832060010183905580519283525183927ffc08d1253c81bcd5444fc7056ef1f5a5df4c9220b6fd70d7449267f1f0f2991892908290030190a250565b6003818154811061046057fe5b600091825260209182902001805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152935090918301828280156104f15780601f106104c6576101008083540402835291602001916104f1565b820191906000526020600020905b8154815290600101906020018083116104d457829003601f168201915b505050505081565b610501610764565b8061050b816107c0565b6000838152600260205260409020546001600160a01b0390811690831681141561053557506105eb565b6001600160a01b038116610589576003805460008681526002602052604090206001015561056285610814565b8154600181018355600092835260209283902082516105879491909201920190610886565b505b60008481526002602090815260409182902080546001600160a01b0319166001600160a01b0387169081179091558251908152915186927ffc08d1253c81bcd5444fc7056ef1f5a5df4c9220b6fd70d7449267f1f0f2991892908290030190a2505b505050565b60035490565b6001546001600160a01b03163314610649576040805162461bcd60e51b815260206004820152601160248201527011549497d050d0d154d4d7d11153925151607a1b604482015290519081900360640190fd5b600154600080546040516001600160a01b0393841693909116917f343765429aea5a34b3ff6a3785a98a5abb2597aca87bfbb58632c173d585373a91a360018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b6000546001600160a01b031681565b6000908152600260205260409020546001600160a01b031690565b6001546001600160a01b031681565b6106ee610764565b6000546001600160a01b0382811691161415610742576040805162461bcd60e51b815260206004820152600e60248201526d22a9292fa9a0a6a2afa7aba722a960911b604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146107b7576040805162461bcd60e51b815260206004820152601160248201527011549497d050d0d154d4d7d11153925151607a1b604482015290519081900360640190fd5b565b6020015190565b6001600160a01b038116610811576040805162461bcd60e51b81526020600482015260136024820152724552525f494e5641
"immutableReferences": {},
"sourceMap": "633:5154:55:-:0;;;;;;;;;;;;-1:-1:-1;619:5:57;:18;;-1:-1:-1;;;;;;619:18:57;627:10;619:18;;;633:5154:55;;;;;;",
"deployedSourceMap": "633:5154:55:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5661:123;;;;;;;;;;;;;;;;-1:-1:-1;5661:123:55;;:::i;:::-;;;;-1:-1:-1;;;;;5661:123:55;;;;;;;;;;;;;;3240:1394;;;;;;;;;;;;;;;;-1:-1:-1;3240:1394:55;;:::i;:::-;;971:29;;;;;;;;;;;;;;;;-1:-1:-1;971:29:55;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2129:964;;;;;;;;;;;;;;;;-1:-1:-1;2129:964:55;;;;;;-1:-1:-1;;;;;2129:964:55;;:::i;1482:97::-;;;:::i;:::-;;;;;;;;;;;;;;;;1422:217:57;;;:::i;219:29::-;;;:::i;1777:143:55:-;;;;;;;;;;;;;;;;-1:-1:-1;1777:143:55;;:::i;255:23:57:-;;;:::i;1164:167::-;;;;;;;;;;;;;;;;-1:-1:-1;1164:167:57;-1:-1:-1;;;;;1164:167:57;;:::i;5661:123:55:-;5725:7;5752:24;5762:13;5752:9;:24::i;:::-;5745:31;5661:123;-1:-1:-1;;5661:123:55:o;3240:1394::-;726:12:57;:10;:12::i;:::-;3465:1:55::1;3417:20:::0;;;:5:::1;:20;::::0;;;;:36;-1:-1:-1;;;;;3417:36:55::1;3409:79;;;::::0;;-1:-1:-1;;;3409:79:55;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;3409:79:55;;;;;;;;;;;;;::::1;;3597:1;3550:20:::0;;;:5:::1;:20;::::0;;;;:49;;-1:-1:-1;;;;;;3550:49:55::1;::::0;;3862:13:::1;:20:::0;3550:49;-1:-1:-1;3858:488:55::1;;;3942:13;3956:20:::0;;3903:36:::1;::::0;3942:13;-1:-1:-1;;3956:24:55;;;3942:39;::::1;;;;;;::::0;;;::::1;::::0;;;;::::1;3903:78:::0;;::::1;::::0;;::::1;;-1:-1:-1::0;;3903:78:55::1;;::::0;::::1;;;::::0;;;::::1;::::0;;;::::1;::::0;;::::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;;;;::::1;3942:39:::0;3903:78;;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3996:23;4022:5;:20;4028:13;4022:20;;;;;;;;;;;:30;;;3996:56;;4102:22;4069:13;4083:15;4069:30;;;;;;;;;;;;;;;:55;;;;;;;;;;;;:::i;:::-;;4139:24;4166:39;4182:22;4166:15;:39::i;:::-;4220:33;4256:23:::0;;;:5:::1;:23;::::0;;;;4294:22:::1;;:40:::0;;;;-1:-1:-1;;3858:488:55::1;4413:13;:19;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;::::0;;4521:1:::1;4488:20:::0;;;:5:::1;:20;::::0;;;;;;;:30:::1;;:34:::0;;;4586:40;;;;;;4494:13;;4586:40:::1;::::0;;;;;;;::::1;3240:1394:::0;:::o;971:29::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;971:29:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;971:29:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2129:964::-;726:12:57;:10;:12::i;:::-;2260:16:55::1;594:23:64;608:8;594:13;:23::i;:::-;2429:22:55::2;2454:20:::0;;;:5:::2;:20;::::0;;;;:36;-1:-1:-1;;;;;2454:36:55;;::::2;::::0;2505:34;::::2;::::0;::::2;2501:60;;;2554:7;;;2501:60;-1:-1:-1::0;;;;;2577:28:55;::::2;2573:288;;2707:13;:20:::0;;2674::::2;::::0;;;:5:::2;:20;::::0;;;;:30:::2;;:53:::0;2818:30:::2;2680:13:::0;2818:15:::2;:30::i;:::-;2799:50:::0;;::::2;::::0;::::2;::::0;;-1:-1:-1;2799:50:55;;;::::2;::::0;;;;;;::::2;::::0;;;;::::2;::::0;::::2;::::0;::::2;:::i;:::-;;2573:288;2920:20;::::0;;;:5:::2;:20;::::0;;;;;;;;:55;;-1:-1:-1;;;;;;2920:55:55::2;-1:-1:-1::0;;;;;2920:55:55;::::2;::::0;;::::2;::::0;;;3039:46;;;;;;;2920:20;;3039:46:::2;::::0;;;;;;;::::2;628:1:64;;749::57::1;2129:964:55::0;;:::o;1482:97::-;1551:13;:20;1482:97;:::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;219:29::-;;;-1:-1:-1;;;;;219:29:57;;:::o;1777:143:55:-;1849:7;1876:20;;;:5;:20;;;;;:36;-1:-1:-1;;;;;1876:36:55;;1777:143::o;255:23:57:-;;;-1:-1:-1;;;;;255:23:57;;:::o;1164:167::-;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;813:104::-;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;5374:213:55:-;5541:2;5529:15;5523:22;;5374:213::o;692:128:64:-;-1:-1:-1;;;;;766:22:64;;758:54;;;;;-1:-1:-1;;;758:54:64;
"source": "// SPDX-License-Identifier: SEE LICENSE IN LICENSE\r\npragma solidity 0.6.12;\r\nimport \"./Owned.sol\";\r\nimport \"./Utils.sol\";\r\nimport \"./interfaces/IContractRegistry.sol\";\r\n\r\n/**\r\n * @dev Contract Registry\r\n *\r\n * The contract registry keeps contract addresses by name.\r\n * The owner can update contract addresses so that a contract name always points to the latest version\r\n * of the given contract.\r\n * Other contracts can query the registry to get updated addresses instead of depending on specific\r\n * addresses.\r\n *\r\n * Note that contract names are limited to 32 bytes UTF8 encoded ASCII strings to optimize gas costs\r\n*/\r\ncontract ContractRegistry is IContractRegistry, Owned, Utils {\r\n struct RegistryItem {\r\n address contractAddress; // contract address\r\n uint256 nameIndex; // index of the item in the list of contract names\r\n }\r\n\r\n mapping (bytes32 => RegistryItem) private items; // name -> RegistryItem mapping\r\n string[] public contractNames; // list of all registered contract names\r\n\r\n /**\r\n * @dev triggered when an address pointed to by a contract name is modified\r\n *\r\n * @param _contractName contract name\r\n * @param _contractAddress new contract address\r\n */\r\n event AddressUpdate(bytes32 indexed _contractName, address _contractAddress);\r\n\r\n /**\r\n * @dev returns the number of items in the registry\r\n *\r\n * @return number of items\r\n */\r\n function itemCount() public view returns (uint256) {\r\n return contractNames.length;\r\n }\r\n\r\n /**\r\n * @dev returns the address associated with the given contract name\r\n *\r\n * @param _contractName contract name\r\n *\r\n * @return contract address\r\n */\r\n function addressOf(bytes32 _contractName) public view override returns (address) {\r\n return items[_contractName].contractAddress;\r\n }\r\n\r\n /**\r\n * @dev registers a new address for the contract name in the registry\r\n *\r\n * @param _contractName contract name\r\n * @param _contractAddress contract address\r\n */\r\n function registerAddress(bytes32 _contractName, address _contractAddress)\r\n public\r\n ownerOnly\r\n validAddress(_contractAddress)\r\n {\r\n // validate input\r\n require(_contractName.length > 0, \"ERR_INVALID_NAME\");\r\n\r\n // check if any change is needed\r\n address currentAddress = items[_contractName].contractAddress;\r\n if (_contractAddress == currentAddress)\r\n return;\r\n\r\n if (currentAddress == address(0)) {\r\n // update the item's index in the list\r\n items[_contractName].nameIndex = contractNames.length;\r\n\r\n // add the contract name to the name list\r\n contractNames.push(bytes32ToString(_contractName));\r\n }\r\n\r\n // update the address in the registry\r\n items[_contractName].contractAddress = _contractAddress;\r\n\r\n // dispatch the address update event\r\n emit AddressUpdate(_contractName, _contractAddress);\r\n }\r\n\r\n /**\r\n * @dev removes an existing contract address from the registry\r\n *\r\n * @param _contractName contract name\r\n */\r\n function unregisterAddress(bytes32 _contractName) public ownerOnly {\r\n // validate input\r\n require(_contractName.length > 0, \"ERR_INVALID_NAME\");\r\n require(items[_contractName].contractAddress != address(0), \"ERR_INVALID_NAME\");\r\n\r\n // remove the address from the registry\r\n items[_contractName].contractAddress = address(0);\r\n\r\n // if there are multiple items in the registry, move the last element to the deleted element's position\r\n // and modify last element's registryItem.nameIndex in the items collection to point to the right position in contractNames\r\n if (co
"sourcePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/utility/ContractRegistry.sol",
"ast": {
"absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/utility/ContractRegistry.sol",
"exportedSymbols": {
"ContractRegistry": [
21514
]
},
"id": 21515,
"license": "SEE LICENSE IN LICENSE",
"nodeType": "SourceUnit",
"nodes": [
{
"id": 21214,
"literals": [
"solidity",
"0.6",
".12"
],
"nodeType": "PragmaDirective",
"src": "52:23:55"
},
{
"absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/utility/Owned.sol",
"file": "./Owned.sol",
"id": 21215,
"nodeType": "ImportDirective",
"scope": 21515,
"sourceUnit": 21819,
"src": "77:21:55",
"symbolAliases": [],
"unitAlias": ""
},
{
"absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/utility/Utils.sol",
"file": "./Utils.sol",
"id": 21216,
"nodeType": "ImportDirective",
"scope": 21515,
"sourceUnit": 22662,
"src": "100:21:55",
"symbolAliases": [],
"unitAlias": ""
},
{
"absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/utility/interfaces/IContractRegistry.sol",
"file": "./interfaces/IContractRegistry.sol",
"id": 21217,
"nodeType": "ImportDirective",
"scope": 21515,
"sourceUnit": 22832,
"src": "123:44:55",
"symbolAliases": [],
"unitAlias": ""
},
{
"abstract": false,
"baseContracts": [
{
"arguments": null,
"baseName": {
"contractScope": null,
"id": 21219,
"name": "IContractRegistry",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 22831,
"src": "662:17:55",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IContractRegistry_$22831",
"typeString": "contract IContractRegistry"
}
},
"id": 21220,
"nodeType": "InheritanceSpecifier",
"src": "662:17:55"
},
{
"arguments": null,
"baseName": {
"contractScope": null,
"id": 21221,
"name": "Owned",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 21818,
"src": "681:5:55",
"typeDescriptions": {
"typeIdentifier": "t_contract$_Owned_$21818",
"typeString": "contract Owned"
}
},
"id": 21222,
"nodeType": "InheritanceSpecifier",
"src": "681:5:55"
},
{
"arguments": null,
"baseName": {
"contractScope": null,
"id": 21223,
"name": "Utils",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 22661,
"src": "688:5:55",
"typeDescriptions": {
"typeIdentifier": "t_contract$_Utils_$22661",
"typeString": "contract Utils"
}
},
"id": 21224,
"nodeType": "InheritanceSpecifier",
"src": "688:5:55"
}
],
"contractDependencies": [
21818,
22661,
22831,
22847
],
"contractKind": "contract",
"documentation": {
"id": 21218,
"nodeType": "StructuredDocumentation",
"src": "171:460:55",
"text": " @dev Contract Registry\n The contract registry keeps contract addresses by name.\n The owner can update contract addresses so that a contract name always points to the latest version\n of the given contract.\n Other contracts can query the registry to get updated addresses instead of depending on specific\n addresses.\n Note that contract names are limited to 32 bytes UTF8 encoded ASCII strings to optimize gas costs"
},
"fullyImplemented": true,
"id": 21514,
"linearizedBaseContracts": [
21514,
22661,
21818,
22847,
22831
],
"name": "ContractRegistry",
"nodeType": "ContractDefinition",
"nodes": [
{
"canonicalName": "ContractRegistry.RegistryItem",
"id": 21229,
"members": [
{
"constant": false,
"id": 21226,
"mutability": "mutable",
"name": "contractAddress",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 21229,
"src": "732:23:55",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 21225,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "732:7:55",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 21228,
"mutability": "mutable",
"name": "nameIndex",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 21229,
"src": "789:17:55",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 21227,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "789:7:55",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"name": "RegistryItem",
"nodeType": "StructDefinition",
"scope": 21514,
"src": "701:173:55",
"visibility": "public"
},
{
"constant": false,
"id": 21233,
"mutability": "mutable",
"name": "items",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 21514,
"src": "882:47:55",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_RegistryItem_$21229_storage_$",
"typeString": "mapping(bytes32 => struct ContractRegistry.RegistryItem)"
},
"typeName": {
"id": 21232,
"keyType": {
"id": 21230,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "891:7:55",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"nodeType": "Mapping",
"src": "882:33:55",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_RegistryItem_$21229_storage_$",
"typeString": "mapping(bytes32 => struct ContractRegistry.RegistryItem)"
},
"valueType": {
"contractScope": null,
"id": 21231,
"name": "RegistryItem",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 21229,
"src": "902:12:55",
"typeDescriptions": {
"typeIdentifier": "t_struct$_RegistryItem_$21229_storage_ptr",
"typeString": "struct ContractRegistry.RegistryItem"
}
}
},
"value": null,
"visibility": "private"
},
{
"constant": false,
"functionSelector": "3ca6bb92",
"id": 21236,
"mutability": "mutable",
"name": "contractNames",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 21514,
"src": "971:29:55",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_string_storage_$dyn_storage",
"typeString": "string[]"
},
"typeName": {
"baseType": {
"id": 21234,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "971:6:55",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string"
}
},
"id": 21235,
"length": null,
"nodeType": "ArrayTypeName",
"src": "971:8:55",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr",
"typeString": "string[]"
}
},
"value": null,
"visibility": "public"
},
{
"anonymous": false,
"documentation": {
"id": 21237,
"nodeType": "StructuredDocumentation",
"src": "1071:203:55",
"text": " @dev triggered when an address pointed to by a contract name is modified\n @param _contractName contract name\n @param _contractAddress new contract address"
},
"id": 21243,
"name": "AddressUpdate",
"nodeType": "EventDefinition",
"parameters": {
"id": 21242,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 21239,
"indexed": true,
"mutability": "mutable",
"name": "_contractName",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 21243,
"src": "1300:29:55",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 21238,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "1300:7:55",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 21241,
"indexed": false,
"mutability": "mutable",
"name": "_contractAddress",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 21243,
"src": "1331:24:55",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 21240,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1331:7:55",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "1299:57:55"
},
"src": "1280:77:55"
},
{
"body": {
"id": 21252,
"nodeType": "Block",
"src": "1533:46:55",
"statements": [
{
"expression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 21249,
"name": "contractNames",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21236,
"src": "1551:13:55",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_string_storage_$dyn_storage",
"typeString": "string storage ref[] storage ref"
}
},
"id": 21250,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "1551:20:55",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"functionReturnParameters": 21248,
"id": 21251,
"nodeType": "Return",
"src": "1544:27:55"
}
]
},
"documentation": {
"id": 21244,
"nodeType": "StructuredDocumentation",
"src": "1365:111:55",
"text": " @dev returns the number of items in the registry\n @return number of items"
},
"functionSelector": "6bfb0d01",
"id": 21253,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "itemCount",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 21245,
"nodeType": "ParameterList",
"parameters": [],
"src": "1500:2:55"
},
"returnParameters": {
"id": 21248,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 21247,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 21253,
"src": "1524:7:55",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 21246,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "1524:7:55",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "1523:9:55"
},
"scope": 21514,
"src": "1482:97:55",
"stateMutability": "view",
"virtual": false,
"visibility": "public"
},
{
"baseFunctions": [
22830
],
"body": {
"id": 21267,
"nodeType": "Block",
"src": "1858:62:55",
"statements": [
{
"expression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 21262,
"name": "items",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21233,
"src": "1876:5:55",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_RegistryItem_$21229_storage_$",
"typeString": "mapping(bytes32 => struct ContractRegistry.RegistryItem storage ref)"
}
},
"id": 21264,
"indexExpression": {
"argumentTypes": null,
"id": 21263,
"name": "_contractName",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21256,
"src": "1882:13:55",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "1876:20:55",
"typeDescriptions": {
"typeIdentifier": "t_struct$_RegistryItem_$21229_storage",
"typeString": "struct ContractRegistry.RegistryItem storage ref"
}
},
"id": 21265,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "contractAddress",
"nodeType": "MemberAccess",
"referencedDeclaration": 21226,
"src": "1876:36:55",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"functionReturnParameters": 21261,
"id": 21266,
"nodeType": "Return",
"src": "1869:43:55"
}
]
},
"documentation": {
"id": 21254,
"nodeType": "StructuredDocumentation",
"src": "1587:184:55",
"text": " @dev returns the address associated with the given contract name\n @param _contractName contract name\n @return contract address"
},
"functionSelector": "bb34534c",
"id": 21268,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "addressOf",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 21258,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "1831:8:55"
},
"parameters": {
"id": 21257,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 21256,
"mutability": "mutable",
"name": "_contractName",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 21268,
"src": "1796:21:55",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 21255,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "1796:7:55",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "1795:23:55"
},
"returnParameters": {
"id": 21261,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 21260,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 21268,
"src": "1849:7:55",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 21259,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1849:7:55",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "1848:9:55"
},
"scope": 21514,
"src": "1777:143:55",
"stateMutability": "view",
"virtual": false,
"visibility": "public"
},
{
"body": {
"id": 21337,
"nodeType": "Block",
"src": "2283:810:55",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"id": 21285,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 21282,
"name": "_contractName",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21271,
"src": "2329:13:55",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"id": 21283,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "2329:20:55",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "BinaryOperation",
"operator": ">",
"rightExpression": {
"argumentTypes": null,
"hexValue": "30",
"id": 21284,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2352:1:55",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "2329:24:55",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"argumentTypes": null,
"hexValue": "4552525f494e56414c49445f4e414d45",
"id": 21286,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2355:18:55",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_8c31b897cf1b4c41d9a3a2c9019700f5d8d0c36c906997985403c8f4610f8246",
"typeString": "literal_string \"ERR_INVALID_NAME\""
},
"value": "ERR_INVALID_NAME"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_8c31b897cf1b4c41d9a3a2c9019700f5d8d0c36c906997985403c8f4610f8246",
"typeString": "literal_string \"ERR_INVALID_NAME\""
}
],
"id": 21281,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "2321:7:55",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 21287,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2321:53:55",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 21288,
"nodeType": "ExpressionStatement",
"src": "2321:53:55"
},
{
"assignments": [
21290
],
"declarations": [
{
"constant": false,
"id": 21290,
"mutability": "mutable",
"name": "currentAddress",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 21337,
"src": "2429:22:55",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 21289,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "2429:7:55",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 21295,
"initialValue": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 21291,
"name": "items",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21233,
"src": "2454:5:55",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_RegistryItem_$21229_storage_$",
"typeString": "mapping(bytes32 => struct ContractRegistry.RegistryItem storage ref)"
}
},
"id": 21293,
"indexExpression": {
"argumentTypes": null,
"id": 21292,
"name": "_contractName",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21271,
"src": "2460:13:55",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "2454:20:55",
"typeDescriptions": {
"typeIdentifier": "t_struct$_RegistryItem_$21229_storage",
"typeString": "struct ContractRegistry.RegistryItem storage ref"
}
},
"id": 21294,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "contractAddress",
"nodeType": "MemberAccess",
"referencedDeclaration": 21226,
"src": "2454:36:55",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "2429:61:55"
},
{
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 21298,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 21296,
"name": "_contractAddress",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21273,
"src": "2505:16:55",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"id": 21297,
"name": "currentAddress",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21290,
"src": "2525:14:55",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "2505:34:55",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": null,
"id": 21300,
"nodeType": "IfStatement",
"src": "2501:60:55",
"trueBody": {
"expression": null,
"functionReturnParameters": 21280,
"id": 21299,
"nodeType": "Return",
"src": "2554:7:55"
}
},
{
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 21306,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 21301,
"name": "currentAddress",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21290,
"src": "2577:14:55",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "30",
"id": 21304,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2603:1:55",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
}
],
"id": 21303,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "2595:7:55",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 21302,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "2595:7:55",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 21305,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2595:10:55",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
},
"src": "2577:28:55",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": null,
"id": 21324,
"nodeType": "IfStatement",
"src": "2573:288:55",
"trueBody": {
"id": 21323,
"nodeType": "Block",
"src": "2607:254:55",
"statements": [
{
"expression": {
"argumentTypes": null,
"id": 21313,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 21307,
"name": "items",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21233,
"src": "2674:5:55",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_RegistryItem_$21229_storage_$",
"typeString": "mapping(bytes32 => struct ContractRegistry.RegistryItem storage ref)"
}
},
"id": 21309,
"indexExpression": {
"argumentTypes": null,
"id": 21308,
"name": "_contractName",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21271,
"src": "2680:13:55",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "2674:20:55",
"typeDescriptions": {
"typeIdentifier": "t_struct$_RegistryItem_$21229_storage",
"typeString": "struct ContractRegistry.RegistryItem storage ref"
}
},
"id": 21310,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"memberName": "nameIndex",
"nodeType": "MemberAccess",
"referencedDeclaration": 21228,
"src": "2674:30:55",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 21311,
"name": "contractNames",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21236,
"src": "2707:13:55",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_string_storage_$dyn_storage",
"typeString": "string storage ref[] storage ref"
}
},
"id": 21312,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "2707:20:55",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "2674:53:55",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 21314,
"nodeType": "ExpressionStatement",
"src": "2674:53:55"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 21319,
"name": "_contractName",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21271,
"src": "2834:13:55",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
],
"id": 21318,
"name": "bytes32ToString",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21485,
"src": "2818:15:55",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_string_memory_ptr_$",
"typeString": "function (bytes32) pure returns (string memory)"
}
},
"id": 21320,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2818:30:55",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
],
"expression": {
"argumentTypes": null,
"id": 21315,
"name": "contractNames",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21236,
"src": "2799:13:55",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_string_storage_$dyn_storage",
"typeString": "string storage ref[] storage ref"
}
},
"id": 21317,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "push",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "2799:18:55",
"typeDescriptions": {
"typeIdentifier": "t_function_arraypush_nonpayable$_t_string_storage_$returns$__$",
"typeString": "function (string storage ref)"
}
},
"id": 21321,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2799:50:55",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 21322,
"nodeType": "ExpressionStatement",
"src": "2799:50:55"
}
]
}
},
{
"expression": {
"argumentTypes": null,
"id": 21330,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 21325,
"name": "items",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21233,
"src": "2920:5:55",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_RegistryItem_$21229_storage_$",
"typeString": "mapping(bytes32 => struct ContractRegistry.RegistryItem storage ref)"
}
},
"id": 21327,
"indexExpression": {
"argumentTypes": null,
"id": 21326,
"name": "_contractName",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21271,
"src": "2926:13:55",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "2920:20:55",
"typeDescriptions": {
"typeIdentifier": "t_struct$_RegistryItem_$21229_storage",
"typeString": "struct ContractRegistry.RegistryItem storage ref"
}
},
"id": 21328,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"memberName": "contractAddress",
"nodeType": "MemberAccess",
"referencedDeclaration": 21226,
"src": "2920:36:55",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 21329,
"name": "_contractAddress",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21273,
"src": "2959:16:55",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "2920:55:55",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 21331,
"nodeType": "ExpressionStatement",
"src": "2920:55:55"
},
{
"eventCall": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 21333,
"name": "_contractName",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21271,
"src": "3053:13:55",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
{
"argumentTypes": null,
"id": 21334,
"name": "_contractAddress",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21273,
"src": "3068:16:55",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 21332,
"name": "AddressUpdate",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21243,
"src": "3039:13:55",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$returns$__$",
"typeString": "function (bytes32,address)"
}
},
"id": 21335,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3039:46:55",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 21336,
"nodeType": "EmitStatement",
"src": "3034:51:55"
}
]
},
"documentation": {
"id": 21269,
"nodeType": "StructuredDocumentation",
"src": "1928:195:55",
"text": " @dev registers a new address for the contract name in the registry\n @param _contractName contract name\n @param _contractAddress contract address"
},
"functionSelector": "662de379",
"id": 21338,
"implemented": true,
"kind": "function",
"modifiers": [
{
"arguments": null,
"id": 21276,
"modifierName": {
"argumentTypes": null,
"id": 21275,
"name": "ownerOnly",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21754,
"src": "2228:9:55",
"typeDescriptions": {
"typeIdentifier": "t_modifier$__$",
"typeString": "modifier ()"
}
},
"nodeType": "ModifierInvocation",
"src": "2228:9:55"
},
{
"arguments": [
{
"argumentTypes": null,
"id": 21278,
"name": "_contractAddress",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21273,
"src": "2260:16:55",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"id": 21279,
"modifierName": {
"argumentTypes": null,
"id": 21277,
"name": "validAddress",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 22618,
"src": "2247:12:55",
"typeDescriptions": {
"typeIdentifier": "t_modifier$_t_address_$",
"typeString": "modifier (address)"
}
},
"nodeType": "ModifierInvocation",
"src": "2247:30:55"
}
],
"name": "registerAddress",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 21274,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 21271,
"mutability": "mutable",
"name": "_contractName",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 21338,
"src": "2154:21:55",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 21270,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "2154:7:55",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 21273,
"mutability": "mutable",
"name": "_contractAddress",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 21338,
"src": "2177:24:55",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 21272,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "2177:7:55",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "2153:49:55"
},
"returnParameters": {
"id": 21280,
"nodeType": "ParameterList",
"parameters": [],
"src": "2283:0:55"
},
"scope": 21514,
"src": "2129:964:55",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "public"
},
{
"body": {
"id": 21443,
"nodeType": "Block",
"src": "3307:1327:55",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"id": 21350,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 21347,
"name": "_contractName",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21341,
"src": "3353:13:55",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"id": 21348,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "3353:20:55",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "BinaryOperation",
"operator": ">",
"rightExpression": {
"argumentTypes": null,
"hexValue": "30",
"id": 21349,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3376:1:55",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "3353:24:55",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"argumentTypes": null,
"hexValue": "4552525f494e56414c49445f4e414d45",
"id": 21351,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3379:18:55",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_8c31b897cf1b4c41d9a3a2c9019700f5d8d0c36c906997985403c8f4610f8246",
"typeString": "literal_string \"ERR_INVALID_NAME\""
},
"value": "ERR_INVALID_NAME"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_8c31b897cf1b4c41d9a3a2c9019700f5d8d0c36c906997985403c8f4610f8246",
"typeString": "literal_string \"ERR_INVALID_NAME\""
}
],
"id": 21346,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "3345:7:55",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 21352,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3345:53:55",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 21353,
"nodeType": "ExpressionStatement",
"src": "3345:53:55"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 21363,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 21355,
"name": "items",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21233,
"src": "3417:5:55",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_RegistryItem_$21229_storage_$",
"typeString": "mapping(bytes32 => struct ContractRegistry.RegistryItem storage ref)"
}
},
"id": 21357,
"indexExpression": {
"argumentTypes": null,
"id": 21356,
"name": "_contractName",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21341,
"src": "3423:13:55",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "3417:20:55",
"typeDescriptions": {
"typeIdentifier": "t_struct$_RegistryItem_$21229_storage",
"typeString": "struct ContractRegistry.RegistryItem storage ref"
}
},
"id": 21358,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "contractAddress",
"nodeType": "MemberAccess",
"referencedDeclaration": 21226,
"src": "3417:36:55",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "30",
"id": 21361,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3465:1:55",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
}
],
"id": 21360,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "3457:7:55",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 21359,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "3457:7:55",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 21362,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3457:10:55",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
},
"src": "3417:50:55",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"argumentTypes": null,
"hexValue": "4552525f494e56414c49445f4e414d45",
"id": 21364,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3469:18:55",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_8c31b897cf1b4c41d9a3a2c9019700f5d8d0c36c906997985403c8f4610f8246",
"typeString": "literal_string \"ERR_INVALID_NAME\""
},
"value": "ERR_INVALID_NAME"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_8c31b897cf1b4c41d9a3a2c9019700f5d8d0c36c906997985403c8f4610f8246",
"typeString": "literal_string \"ERR_INVALID_NAME\""
}
],
"id": 21354,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "3409:7:55",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 21365,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3409:79:55",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 21366,
"nodeType": "ExpressionStatement",
"src": "3409:79:55"
},
{
"expression": {
"argumentTypes": null,
"id": 21375,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 21367,
"name": "items",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21233,
"src": "3550:5:55",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_RegistryItem_$21229_storage_$",
"typeString": "mapping(bytes32 => struct ContractRegistry.RegistryItem storage ref)"
}
},
"id": 21369,
"indexExpression": {
"argumentTypes": null,
"id": 21368,
"name": "_contractName",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21341,
"src": "3556:13:55",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "3550:20:55",
"typeDescriptions": {
"typeIdentifier": "t_struct$_RegistryItem_$21229_storage",
"typeString": "struct ContractRegistry.RegistryItem storage ref"
}
},
"id": 21370,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"memberName": "contractAddress",
"nodeType": "MemberAccess",
"referencedDeclaration": 21226,
"src": "3550:36:55",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "30",
"id": 21373,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3597:1:55",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
}
],
"id": 21372,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "3589:7:55",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 21371,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "3589:7:55",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 21374,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3589:10:55",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
},
"src": "3550:49:55",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 21376,
"nodeType": "ExpressionStatement",
"src": "3550:49:55"
},
{
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 21380,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 21377,
"name": "contractNames",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21236,
"src": "3862:13:55",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_string_storage_$dyn_storage",
"typeString": "string storage ref[] storage ref"
}
},
"id": 21378,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "3862:20:55",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": ">",
"rightExpression": {
"argumentTypes": null,
"hexValue": "31",
"id": 21379,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3885:1:55",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_1_by_1",
"typeString": "int_const 1"
},
"value": "1"
},
"src": "3862:24:55",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": null,
"id": 21422,
"nodeType": "IfStatement",
"src": "3858:488:55",
"trueBody": {
"id": 21421,
"nodeType": "Block",
"src": "3888:458:55",
"statements": [
{
"assignments": [
21382
],
"declarations": [
{
"constant": false,
"id": 21382,
"mutability": "mutable",
"name": "lastContractNameString",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 21421,
"src": "3903:36:55",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string"
},
"typeName": {
"id": 21381,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "3903:6:55",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 21389,
"initialValue": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 21383,
"name": "contractNames",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21236,
"src": "3942:13:55",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_string_storage_$dyn_storage",
"typeString": "string storage ref[] storage ref"
}
},
"id": 21388,
"indexExpression": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 21387,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 21384,
"name": "contractNames",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21236,
"src": "3956:13:55",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_string_storage_$dyn_storage",
"typeString": "string storage ref[] storage ref"
}
},
"id": 21385,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "3956:20:55",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "-",
"rightExpression": {
"argumentTypes": null,
"hexValue": "31",
"id": 21386,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3979:1:55",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_1_by_1",
"typeString": "int_const 1"
},
"value": "1"
},
"src": "3956:24:55",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "3942:39:55",
"typeDescriptions": {
"typeIdentifier": "t_string_storage",
"typeString": "string storage ref"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "3903:78:55"
},
{
"assignments": [
21391
],
"declarations": [
{
"constant": false,
"id": 21391,
"mutability": "mutable",
"name": "unregisterIndex",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 21421,
"src": "3996:23:55",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 21390,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "3996:7:55",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 21396,
"initialValue": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 21392,
"name": "items",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21233,
"src": "4022:5:55",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_RegistryItem_$21229_storage_$",
"typeString": "mapping(bytes32 => struct ContractRegistry.RegistryItem storage ref)"
}
},
"id": 21394,
"indexExpression": {
"argumentTypes": null,
"id": 21393,
"name": "_contractName",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21341,
"src": "4028:13:55",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "4022:20:55",
"typeDescriptions": {
"typeIdentifier": "t_struct$_RegistryItem_$21229_storage",
"typeString": "struct ContractRegistry.RegistryItem storage ref"
}
},
"id": 21395,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "nameIndex",
"nodeType": "MemberAccess",
"referencedDeclaration": 21228,
"src": "4022:30:55",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "3996:56:55"
},
{
"expression": {
"argumentTypes": null,
"id": 21401,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 21397,
"name": "contractNames",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21236,
"src": "4069:13:55",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_string_storage_$dyn_storage",
"typeString": "string storage ref[] storage ref"
}
},
"id": 21399,
"indexExpression": {
"argumentTypes": null,
"id": 21398,
"name": "unregisterIndex",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21391,
"src": "4083:15:55",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "4069:30:55",
"typeDescriptions": {
"typeIdentifier": "t_string_storage",
"typeString": "string storage ref"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 21400,
"name": "lastContractNameString",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21382,
"src": "4102:22:55",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
},
"src": "4069:55:55",
"typeDescriptions": {
"typeIdentifier": "t_string_storage",
"typeString": "string storage ref"
}
},
"id": 21402,
"nodeType": "ExpressionStatement",
"src": "4069:55:55"
},
{
"assignments": [
21404
],
"declarations": [
{
"constant": false,
"id": 21404,
"mutability": "mutable",
"name": "lastContractName",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 21421,
"src": "4139:24:55",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 21403,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "4139:7:55",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 21408,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 21406,
"name": "lastContractNameString",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21382,
"src": "4182:22:55",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
],
"id": 21405,
"name": "stringToBytes32",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21500,
"src": "4166:15:55",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_bytes32_$",
"typeString": "function (string memory) pure returns (bytes32)"
}
},
"id": 21407,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "4166:39:55",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "4139:66:55"
},
{
"assignments": [
21410
],
"declarations": [
{
"constant": false,
"id": 21410,
"mutability": "mutable",
"name": "registryItem",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 21421,
"src": "4220:33:55",
"stateVariable": false,
"storageLocation": "storage",
"typeDescriptions": {
"typeIdentifier": "t_struct$_RegistryItem_$21229_storage_ptr",
"typeString": "struct ContractRegistry.RegistryItem"
},
"typeName": {
"contractScope": null,
"id": 21409,
"name": "RegistryItem",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 21229,
"src": "4220:12:55",
"typeDescriptions": {
"typeIdentifier": "t_struct$_RegistryItem_$21229_storage_ptr",
"typeString": "struct ContractRegistry.RegistryItem"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 21414,
"initialValue": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 21411,
"name": "items",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21233,
"src": "4256:5:55",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_RegistryItem_$21229_storage_$",
"typeString": "mapping(bytes32 => struct ContractRegistry.RegistryItem storage ref)"
}
},
"id": 21413,
"indexExpression": {
"argumentTypes": null,
"id": 21412,
"name": "lastContractName",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21404,
"src": "4262:16:55",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "4256:23:55",
"typeDescriptions": {
"typeIdentifier": "t_struct$_RegistryItem_$21229_storage",
"typeString": "struct ContractRegistry.RegistryItem storage ref"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "4220:59:55"
},
{
"expression": {
"argumentTypes": null,
"id": 21419,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 21415,
"name": "registryItem",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21410,
"src": "4294:12:55",
"typeDescriptions": {
"typeIdentifier": "t_struct$_RegistryItem_$21229_storage_ptr",
"typeString": "struct ContractRegistry.RegistryItem storage pointer"
}
},
"id": 21417,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"memberName": "nameIndex",
"nodeType": "MemberAccess",
"referencedDeclaration": 21228,
"src": "4294:22:55",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 21418,
"name": "unregisterIndex",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21391,
"src": "4319:15:55",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "4294:40:55",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 21420,
"nodeType": "ExpressionStatement",
"src": "4294:40:55"
}
]
}
},
{
"expression": {
"argumentTypes": null,
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"argumentTypes": null,
"id": 21423,
"name": "contractNames",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21236,
"src": "4413:13:55",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_string_storage_$dyn_storage",
"typeString": "string storage ref[] storage ref"
}
},
"id": 21425,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "pop",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "4413:17:55",
"typeDescriptions": {
"typeIdentifier": "t_function_arraypop_nonpayable$__$returns$__$",
"typeString": "function ()"
}
},
"id": 21426,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "4413:19:55",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 21427,
"nodeType": "ExpressionStatement",
"src": "4413:19:55"
},
{
"expression": {
"argumentTypes": null,
"id": 21433,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 21428,
"name": "items",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21233,
"src": "4488:5:55",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_RegistryItem_$21229_storage_$",
"typeString": "mapping(bytes32 => struct ContractRegistry.RegistryItem storage ref)"
}
},
"id": 21430,
"indexExpression": {
"argumentTypes": null,
"id": 21429,
"name": "_contractName",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21341,
"src": "4494:13:55",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "4488:20:55",
"typeDescriptions": {
"typeIdentifier": "t_struct$_RegistryItem_$21229_storage",
"typeString": "struct ContractRegistry.RegistryItem storage ref"
}
},
"id": 21431,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"memberName": "nameIndex",
"nodeType": "MemberAccess",
"referencedDeclaration": 21228,
"src": "4488:30:55",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"hexValue": "30",
"id": 21432,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "4521:1:55",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "4488:34:55",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 21434,
"nodeType": "ExpressionStatement",
"src": "4488:34:55"
},
{
"eventCall": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 21436,
"name": "_contractName",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21341,
"src": "4600:13:55",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "30",
"id": 21439,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "4623:1:55",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
}
],
"id": 21438,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "4615:7:55",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 21437,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "4615:7:55",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 21440,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "4615:10:55",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
{
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
],
"id": 21435,
"name": "AddressUpdate",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21243,
"src": "4586:13:55",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$returns$__$",
"typeString": "function (bytes32,address)"
}
},
"id": 21441,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "4586:40:55",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 21442,
"nodeType": "EmitStatement",
"src": "4581:45:55"
}
]
},
"documentation": {
"id": 21339,
"nodeType": "StructuredDocumentation",
"src": "3101:133:55",
"text": " @dev removes an existing contract address from the registry\n @param _contractName contract name"
},
"functionSelector": "2bbd9530",
"id": 21444,
"implemented": true,
"kind": "function",
"modifiers": [
{
"arguments": null,
"id": 21344,
"modifierName": {
"argumentTypes": null,
"id": 21343,
"name": "ownerOnly",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21754,
"src": "3297:9:55",
"typeDescriptions": {
"typeIdentifier": "t_modifier$__$",
"typeString": "modifier ()"
}
},
"nodeType": "ModifierInvocation",
"src": "3297:9:55"
}
],
"name": "unregisterAddress",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 21342,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 21341,
"mutability": "mutable",
"name": "_contractName",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 21444,
"src": "3267:21:55",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 21340,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "3267:7:55",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "3266:23:55"
},
"returnParameters": {
"id": 21345,
"nodeType": "ParameterList",
"parameters": [],
"src": "3307:0:55"
},
"scope": 21514,
"src": "3240:1394:55",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "public"
},
{
"body": {
"id": 21484,
"nodeType": "Block",
"src": "4950:188:55",
"statements": [
{
"assignments": [
21453
],
"declarations": [
{
"constant": false,
"id": 21453,
"mutability": "mutable",
"name": "byteArray",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 21484,
"src": "4961:22:55",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 21452,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "4961:5:55",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 21458,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "3332",
"id": 21456,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "4996:2:55",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_32_by_1",
"typeString": "int_const 32"
},
"value": "32"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_rational_32_by_1",
"typeString": "int_const 32"
}
],
"id": 21455,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "NewExpression",
"src": "4986:9:55",
"typeDescriptions": {
"typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$",
"typeString": "function (uint256) pure returns (bytes memory)"
},
"typeName": {
"id": 21454,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "4990:5:55",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
}
},
"id": 21457,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "4986:13:55",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "4961:38:55"
},
{
"body": {
"id": 21477,
"nodeType": "Block",
"src": "5043:51:55",
"statements": [
{
"expression": {
"argumentTypes": null,
"id": 21475,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 21469,
"name": "byteArray",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21453,
"src": "5058:9:55",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
"id": 21471,
"indexExpression": {
"argumentTypes": null,
"id": 21470,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21460,
"src": "5068:1:55",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "5058:12:55",
"typeDescriptions": {
"typeIdentifier": "t_bytes1",
"typeString": "bytes1"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 21472,
"name": "_bytes",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21447,
"src": "5073:6:55",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"id": 21474,
"indexExpression": {
"argumentTypes": null,
"id": 21473,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21460,
"src": "5080:1:55",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "5073:9:55",
"typeDescriptions": {
"typeIdentifier": "t_bytes1",
"typeString": "bytes1"
}
},
"src": "5058:24:55",
"typeDescriptions": {
"typeIdentifier": "t_bytes1",
"typeString": "bytes1"
}
},
"id": 21476,
"nodeType": "ExpressionStatement",
"src": "5058:24:55"
}
]
},
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 21465,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 21463,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21460,
"src": "5030:1:55",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "<",
"rightExpression": {
"argumentTypes": null,
"hexValue": "3332",
"id": 21464,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "5034:2:55",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_32_by_1",
"typeString": "int_const 32"
},
"value": "32"
},
"src": "5030:6:55",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 21478,
"initializationExpression": {
"assignments": [
21460
],
"declarations": [
{
"constant": false,
"id": 21460,
"mutability": "mutable",
"name": "i",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 21478,
"src": "5015:9:55",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 21459,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "5015:7:55",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 21462,
"initialValue": {
"argumentTypes": null,
"hexValue": "30",
"id": 21461,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "5027:1:55",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"nodeType": "VariableDeclarationStatement",
"src": "5015:13:55"
},
"loopExpression": {
"expression": {
"argumentTypes": null,
"id": 21467,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "++",
"prefix": false,
"src": "5038:3:55",
"subExpression": {
"argumentTypes": null,
"id": 21466,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21460,
"src": "5038:1:55",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 21468,
"nodeType": "ExpressionStatement",
"src": "5038:3:55"
},
"nodeType": "ForStatement",
"src": "5010:84:55"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 21481,
"name": "byteArray",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21453,
"src": "5120:9:55",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
],
"id": 21480,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "5113:6:55",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_string_storage_ptr_$",
"typeString": "type(string storage pointer)"
},
"typeName": {
"id": 21479,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "5113:6:55",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 21482,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "5113:17:55",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
},
"functionReturnParameters": 21451,
"id": 21483,
"nodeType": "Return",
"src": "5106:24:55"
}
]
},
"documentation": {
"id": 21445,
"nodeType": "StructuredDocumentation",
"src": "4642:224:55",
"text": " @dev utility, converts bytes32 to a string\n note that the bytes32 argument is assumed to be UTF8 encoded ASCII string\n @return string representation of the given bytes32 argument"
},
"id": 21485,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "bytes32ToString",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 21448,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 21447,
"mutability": "mutable",
"name": "_bytes",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 21485,
"src": "4897:14:55",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 21446,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "4897:7:55",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "4896:16:55"
},
"returnParameters": {
"id": 21451,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 21450,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 21485,
"src": "4935:13:55",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string"
},
"typeName": {
"id": 21449,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "4935:6:55",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "4934:15:55"
},
"scope": 21514,
"src": "4872:266:55",
"stateMutability": "pure",
"virtual": false,
"visibility": "private"
},
{
"body": {
"id": 21499,
"nodeType": "Block",
"src": "5453:134:55",
"statements": [
{
"assignments": [
21494
],
"declarations": [
{
"constant": false,
"id": 21494,
"mutability": "mutable",
"name": "result",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 21499,
"src": "5464:14:55",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 21493,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "5464:7:55",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 21495,
"initialValue": null,
"nodeType": "VariableDeclarationStatement",
"src": "5464:14:55"
},
{
"AST": {
"nodeType": "YulBlock",
"src": "5498:58:55",
"statements": [
{
"nodeType": "YulAssignment",
"src": "5513:32:55",
"value": {
"arguments": [
{
"arguments": [
{
"name": "_string",
"nodeType": "YulIdentifier",
"src": "5533:7:55"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5541:2:55",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "5529:3:55"
},
"nodeType": "YulFunctionCall",
"src": "5529:15:55"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "5523:5:55"
},
"nodeType": "YulFunctionCall",
"src": "5523:22:55"
},
"variableNames": [
{
"name": "result",
"nodeType": "YulIdentifier",
"src": "5513:6:55"
}
]
}
]
},
"evmVersion": "istanbul",
"externalReferences": [
{
"declaration": 21488,
"isOffset": false,
"isSlot": false,
"src": "5533:7:55",
"valueSize": 1
},
{
"declaration": 21494,
"isOffset": false,
"isSlot": false,
"src": "5513:6:55",
"valueSize": 1
}
],
"id": 21496,
"nodeType": "InlineAssembly",
"src": "5489:67:55"
},
{
"expression": {
"argumentTypes": null,
"id": 21497,
"name": "result",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21494,
"src": "5573:6:55",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"functionReturnParameters": 21492,
"id": 21498,
"nodeType": "Return",
"src": "5566:13:55"
}
]
},
"documentation": {
"id": 21486,
"nodeType": "StructuredDocumentation",
"src": "5146:222:55",
"text": " @dev utility, converts string to bytes32\n note that the bytes32 argument is assumed to be UTF8 encoded ASCII string\n @return string representation of the given bytes32 argument"
},
"id": 21500,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "stringToBytes32",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 21489,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 21488,
"mutability": "mutable",
"name": "_string",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 21500,
"src": "5399:21:55",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string"
},
"typeName": {
"id": 21487,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "5399:6:55",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "5398:23:55"
},
"returnParameters": {
"id": 21492,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 21491,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 21500,
"src": "5444:7:55",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 21490,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "5444:7:55",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "5443:9:55"
},
"scope": 21514,
"src": "5374:213:55",
"stateMutability": "pure",
"virtual": false,
"visibility": "private"
},
{
"body": {
"id": 21512,
"nodeType": "Block",
"src": "5734:50:55",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 21509,
"name": "_contractName",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21503,
"src": "5762:13:55",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
],
"id": 21508,
"name": "addressOf",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21268,
"src": "5752:9:55",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$",
"typeString": "function (bytes32) view returns (address)"
}
},
"id": 21510,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "5752:24:55",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"functionReturnParameters": 21507,
"id": 21511,
"nodeType": "Return",
"src": "5745:31:55"
}
]
},
"documentation": {
"id": 21501,
"nodeType": "StructuredDocumentation",
"src": "5595:60:55",
"text": " @dev deprecated, backward compatibility"
},
"functionSelector": "21f8a721",
"id": 21513,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "getAddress",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 21504,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 21503,
"mutability": "mutable",
"name": "_contractName",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 21513,
"src": "5681:21:55",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 21502,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "5681:7:55",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "5680:23:55"
},
"returnParameters": {
"id": 21507,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 21506,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 21513,
"src": "5725:7:55",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 21505,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "5725:7:55",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "5724:9:55"
},
"scope": 21514,
"src": "5661:123:55",
"stateMutability": "view",
"virtual": false,
"visibility": "public"
}
],
"scope": 21515,
"src": "633:5154:55"
}
],
"src": "52:5737:55"
},
"legacyAST": {
"absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/utility/ContractRegistry.sol",
"exportedSymbols": {
"ContractRegistry": [
21514
]
},
"id": 21515,
"license": "SEE LICENSE IN LICENSE",
"nodeType": "SourceUnit",
"nodes": [
{
"id": 21214,
"literals": [
"solidity",
"0.6",
".12"
],
"nodeType": "PragmaDirective",
"src": "52:23:55"
},
{
"absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/utility/Owned.sol",
"file": "./Owned.sol",
"id": 21215,
"nodeType": "ImportDirective",
"scope": 21515,
"sourceUnit": 21819,
"src": "77:21:55",
"symbolAliases": [],
"unitAlias": ""
},
{
"absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/utility/Utils.sol",
"file": "./Utils.sol",
"id": 21216,
"nodeType": "ImportDirective",
"scope": 21515,
"sourceUnit": 22662,
"src": "100:21:55",
"symbolAliases": [],
"unitAlias": ""
},
{
"absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/utility/interfaces/IContractRegistry.sol",
"file": "./interfaces/IContractRegistry.sol",
"id": 21217,
"nodeType": "ImportDirective",
"scope": 21515,
"sourceUnit": 22832,
"src": "123:44:55",
"symbolAliases": [],
"unitAlias": ""
},
{
"abstract": false,
"baseContracts": [
{
"arguments": null,
"baseName": {
"contractScope": null,
"id": 21219,
"name": "IContractRegistry",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 22831,
"src": "662:17:55",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IContractRegistry_$22831",
"typeString": "contract IContractRegistry"
}
},
"id": 21220,
"nodeType": "InheritanceSpecifier",
"src": "662:17:55"
},
{
"arguments": null,
"baseName": {
"contractScope": null,
"id": 21221,
"name": "Owned",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 21818,
"src": "681:5:55",
"typeDescriptions": {
"typeIdentifier": "t_contract$_Owned_$21818",
"typeString": "contract Owned"
}
},
"id": 21222,
"nodeType": "InheritanceSpecifier",
"src": "681:5:55"
},
{
"arguments": null,
"baseName": {
"contractScope": null,
"id": 21223,
"name": "Utils",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 22661,
"src": "688:5:55",
"typeDescriptions": {
"typeIdentifier": "t_contract$_Utils_$22661",
"typeString": "contract Utils"
}
},
"id": 21224,
"nodeType": "InheritanceSpecifier",
"src": "688:5:55"
}
],
"contractDependencies": [
21818,
22661,
22831,
22847
],
"contractKind": "contract",
"documentation": {
"id": 21218,
"nodeType": "StructuredDocumentation",
"src": "171:460:55",
"text": " @dev Contract Registry\n The contract registry keeps contract addresses by name.\n The owner can update contract addresses so that a contract name always points to the latest version\n of the given contract.\n Other contracts can query the registry to get updated addresses instead of depending on specific\n addresses.\n Note that contract names are limited to 32 bytes UTF8 encoded ASCII strings to optimize gas costs"
},
"fullyImplemented": true,
"id": 21514,
"linearizedBaseContracts": [
21514,
22661,
21818,
22847,
22831
],
"name": "ContractRegistry",
"nodeType": "ContractDefinition",
"nodes": [
{
"canonicalName": "ContractRegistry.RegistryItem",
"id": 21229,
"members": [
{
"constant": false,
"id": 21226,
"mutability": "mutable",
"name": "contractAddress",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 21229,
"src": "732:23:55",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 21225,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "732:7:55",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 21228,
"mutability": "mutable",
"name": "nameIndex",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 21229,
"src": "789:17:55",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 21227,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "789:7:55",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"name": "RegistryItem",
"nodeType": "StructDefinition",
"scope": 21514,
"src": "701:173:55",
"visibility": "public"
},
{
"constant": false,
"id": 21233,
"mutability": "mutable",
"name": "items",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 21514,
"src": "882:47:55",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_RegistryItem_$21229_storage_$",
"typeString": "mapping(bytes32 => struct ContractRegistry.RegistryItem)"
},
"typeName": {
"id": 21232,
"keyType": {
"id": 21230,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "891:7:55",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"nodeType": "Mapping",
"src": "882:33:55",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_RegistryItem_$21229_storage_$",
"typeString": "mapping(bytes32 => struct ContractRegistry.RegistryItem)"
},
"valueType": {
"contractScope": null,
"id": 21231,
"name": "RegistryItem",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 21229,
"src": "902:12:55",
"typeDescriptions": {
"typeIdentifier": "t_struct$_RegistryItem_$21229_storage_ptr",
"typeString": "struct ContractRegistry.RegistryItem"
}
}
},
"value": null,
"visibility": "private"
},
{
"constant": false,
"functionSelector": "3ca6bb92",
"id": 21236,
"mutability": "mutable",
"name": "contractNames",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 21514,
"src": "971:29:55",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_string_storage_$dyn_storage",
"typeString": "string[]"
},
"typeName": {
"baseType": {
"id": 21234,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "971:6:55",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string"
}
},
"id": 21235,
"length": null,
"nodeType": "ArrayTypeName",
"src": "971:8:55",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr",
"typeString": "string[]"
}
},
"value": null,
"visibility": "public"
},
{
"anonymous": false,
"documentation": {
"id": 21237,
"nodeType": "StructuredDocumentation",
"src": "1071:203:55",
"text": " @dev triggered when an address pointed to by a contract name is modified\n @param _contractName contract name\n @param _contractAddress new contract address"
},
"id": 21243,
"name": "AddressUpdate",
"nodeType": "EventDefinition",
"parameters": {
"id": 21242,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 21239,
"indexed": true,
"mutability": "mutable",
"name": "_contractName",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 21243,
"src": "1300:29:55",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 21238,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "1300:7:55",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 21241,
"indexed": false,
"mutability": "mutable",
"name": "_contractAddress",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 21243,
"src": "1331:24:55",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 21240,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1331:7:55",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "1299:57:55"
},
"src": "1280:77:55"
},
{
"body": {
"id": 21252,
"nodeType": "Block",
"src": "1533:46:55",
"statements": [
{
"expression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 21249,
"name": "contractNames",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21236,
"src": "1551:13:55",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_string_storage_$dyn_storage",
"typeString": "string storage ref[] storage ref"
}
},
"id": 21250,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "1551:20:55",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"functionReturnParameters": 21248,
"id": 21251,
"nodeType": "Return",
"src": "1544:27:55"
}
]
},
"documentation": {
"id": 21244,
"nodeType": "StructuredDocumentation",
"src": "1365:111:55",
"text": " @dev returns the number of items in the registry\n @return number of items"
},
"functionSelector": "6bfb0d01",
"id": 21253,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "itemCount",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 21245,
"nodeType": "ParameterList",
"parameters": [],
"src": "1500:2:55"
},
"returnParameters": {
"id": 21248,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 21247,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 21253,
"src": "1524:7:55",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 21246,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "1524:7:55",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "1523:9:55"
},
"scope": 21514,
"src": "1482:97:55",
"stateMutability": "view",
"virtual": false,
"visibility": "public"
},
{
"baseFunctions": [
22830
],
"body": {
"id": 21267,
"nodeType": "Block",
"src": "1858:62:55",
"statements": [
{
"expression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 21262,
"name": "items",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21233,
"src": "1876:5:55",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_RegistryItem_$21229_storage_$",
"typeString": "mapping(bytes32 => struct ContractRegistry.RegistryItem storage ref)"
}
},
"id": 21264,
"indexExpression": {
"argumentTypes": null,
"id": 21263,
"name": "_contractName",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21256,
"src": "1882:13:55",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "1876:20:55",
"typeDescriptions": {
"typeIdentifier": "t_struct$_RegistryItem_$21229_storage",
"typeString": "struct ContractRegistry.RegistryItem storage ref"
}
},
"id": 21265,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "contractAddress",
"nodeType": "MemberAccess",
"referencedDeclaration": 21226,
"src": "1876:36:55",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"functionReturnParameters": 21261,
"id": 21266,
"nodeType": "Return",
"src": "1869:43:55"
}
]
},
"documentation": {
"id": 21254,
"nodeType": "StructuredDocumentation",
"src": "1587:184:55",
"text": " @dev returns the address associated with the given contract name\n @param _contractName contract name\n @return contract address"
},
"functionSelector": "bb34534c",
"id": 21268,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "addressOf",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 21258,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "1831:8:55"
},
"parameters": {
"id": 21257,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 21256,
"mutability": "mutable",
"name": "_contractName",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 21268,
"src": "1796:21:55",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 21255,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "1796:7:55",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "1795:23:55"
},
"returnParameters": {
"id": 21261,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 21260,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 21268,
"src": "1849:7:55",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 21259,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1849:7:55",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "1848:9:55"
},
"scope": 21514,
"src": "1777:143:55",
"stateMutability": "view",
"virtual": false,
"visibility": "public"
},
{
"body": {
"id": 21337,
"nodeType": "Block",
"src": "2283:810:55",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"id": 21285,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 21282,
"name": "_contractName",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21271,
"src": "2329:13:55",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"id": 21283,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "2329:20:55",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "BinaryOperation",
"operator": ">",
"rightExpression": {
"argumentTypes": null,
"hexValue": "30",
"id": 21284,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2352:1:55",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "2329:24:55",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"argumentTypes": null,
"hexValue": "4552525f494e56414c49445f4e414d45",
"id": 21286,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2355:18:55",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_8c31b897cf1b4c41d9a3a2c9019700f5d8d0c36c906997985403c8f4610f8246",
"typeString": "literal_string \"ERR_INVALID_NAME\""
},
"value": "ERR_INVALID_NAME"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_8c31b897cf1b4c41d9a3a2c9019700f5d8d0c36c906997985403c8f4610f8246",
"typeString": "literal_string \"ERR_INVALID_NAME\""
}
],
"id": 21281,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "2321:7:55",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 21287,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2321:53:55",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 21288,
"nodeType": "ExpressionStatement",
"src": "2321:53:55"
},
{
"assignments": [
21290
],
"declarations": [
{
"constant": false,
"id": 21290,
"mutability": "mutable",
"name": "currentAddress",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 21337,
"src": "2429:22:55",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 21289,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "2429:7:55",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 21295,
"initialValue": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 21291,
"name": "items",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21233,
"src": "2454:5:55",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_RegistryItem_$21229_storage_$",
"typeString": "mapping(bytes32 => struct ContractRegistry.RegistryItem storage ref)"
}
},
"id": 21293,
"indexExpression": {
"argumentTypes": null,
"id": 21292,
"name": "_contractName",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21271,
"src": "2460:13:55",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "2454:20:55",
"typeDescriptions": {
"typeIdentifier": "t_struct$_RegistryItem_$21229_storage",
"typeString": "struct ContractRegistry.RegistryItem storage ref"
}
},
"id": 21294,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "contractAddress",
"nodeType": "MemberAccess",
"referencedDeclaration": 21226,
"src": "2454:36:55",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "2429:61:55"
},
{
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 21298,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 21296,
"name": "_contractAddress",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21273,
"src": "2505:16:55",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"id": 21297,
"name": "currentAddress",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21290,
"src": "2525:14:55",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "2505:34:55",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": null,
"id": 21300,
"nodeType": "IfStatement",
"src": "2501:60:55",
"trueBody": {
"expression": null,
"functionReturnParameters": 21280,
"id": 21299,
"nodeType": "Return",
"src": "2554:7:55"
}
},
{
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 21306,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 21301,
"name": "currentAddress",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21290,
"src": "2577:14:55",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "30",
"id": 21304,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2603:1:55",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
}
],
"id": 21303,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "2595:7:55",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 21302,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "2595:7:55",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 21305,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2595:10:55",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
},
"src": "2577:28:55",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": null,
"id": 21324,
"nodeType": "IfStatement",
"src": "2573:288:55",
"trueBody": {
"id": 21323,
"nodeType": "Block",
"src": "2607:254:55",
"statements": [
{
"expression": {
"argumentTypes": null,
"id": 21313,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 21307,
"name": "items",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21233,
"src": "2674:5:55",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_RegistryItem_$21229_storage_$",
"typeString": "mapping(bytes32 => struct ContractRegistry.RegistryItem storage ref)"
}
},
"id": 21309,
"indexExpression": {
"argumentTypes": null,
"id": 21308,
"name": "_contractName",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21271,
"src": "2680:13:55",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "2674:20:55",
"typeDescriptions": {
"typeIdentifier": "t_struct$_RegistryItem_$21229_storage",
"typeString": "struct ContractRegistry.RegistryItem storage ref"
}
},
"id": 21310,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"memberName": "nameIndex",
"nodeType": "MemberAccess",
"referencedDeclaration": 21228,
"src": "2674:30:55",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 21311,
"name": "contractNames",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21236,
"src": "2707:13:55",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_string_storage_$dyn_storage",
"typeString": "string storage ref[] storage ref"
}
},
"id": 21312,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "2707:20:55",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "2674:53:55",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 21314,
"nodeType": "ExpressionStatement",
"src": "2674:53:55"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 21319,
"name": "_contractName",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21271,
"src": "2834:13:55",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
],
"id": 21318,
"name": "bytes32ToString",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21485,
"src": "2818:15:55",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_string_memory_ptr_$",
"typeString": "function (bytes32) pure returns (string memory)"
}
},
"id": 21320,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2818:30:55",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
],
"expression": {
"argumentTypes": null,
"id": 21315,
"name": "contractNames",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21236,
"src": "2799:13:55",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_string_storage_$dyn_storage",
"typeString": "string storage ref[] storage ref"
}
},
"id": 21317,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "push",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "2799:18:55",
"typeDescriptions": {
"typeIdentifier": "t_function_arraypush_nonpayable$_t_string_storage_$returns$__$",
"typeString": "function (string storage ref)"
}
},
"id": 21321,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2799:50:55",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 21322,
"nodeType": "ExpressionStatement",
"src": "2799:50:55"
}
]
}
},
{
"expression": {
"argumentTypes": null,
"id": 21330,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 21325,
"name": "items",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21233,
"src": "2920:5:55",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_RegistryItem_$21229_storage_$",
"typeString": "mapping(bytes32 => struct ContractRegistry.RegistryItem storage ref)"
}
},
"id": 21327,
"indexExpression": {
"argumentTypes": null,
"id": 21326,
"name": "_contractName",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21271,
"src": "2926:13:55",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "2920:20:55",
"typeDescriptions": {
"typeIdentifier": "t_struct$_RegistryItem_$21229_storage",
"typeString": "struct ContractRegistry.RegistryItem storage ref"
}
},
"id": 21328,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"memberName": "contractAddress",
"nodeType": "MemberAccess",
"referencedDeclaration": 21226,
"src": "2920:36:55",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 21329,
"name": "_contractAddress",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21273,
"src": "2959:16:55",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "2920:55:55",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 21331,
"nodeType": "ExpressionStatement",
"src": "2920:55:55"
},
{
"eventCall": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 21333,
"name": "_contractName",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21271,
"src": "3053:13:55",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
{
"argumentTypes": null,
"id": 21334,
"name": "_contractAddress",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21273,
"src": "3068:16:55",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 21332,
"name": "AddressUpdate",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21243,
"src": "3039:13:55",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$returns$__$",
"typeString": "function (bytes32,address)"
}
},
"id": 21335,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3039:46:55",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 21336,
"nodeType": "EmitStatement",
"src": "3034:51:55"
}
]
},
"documentation": {
"id": 21269,
"nodeType": "StructuredDocumentation",
"src": "1928:195:55",
"text": " @dev registers a new address for the contract name in the registry\n @param _contractName contract name\n @param _contractAddress contract address"
},
"functionSelector": "662de379",
"id": 21338,
"implemented": true,
"kind": "function",
"modifiers": [
{
"arguments": null,
"id": 21276,
"modifierName": {
"argumentTypes": null,
"id": 21275,
"name": "ownerOnly",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21754,
"src": "2228:9:55",
"typeDescriptions": {
"typeIdentifier": "t_modifier$__$",
"typeString": "modifier ()"
}
},
"nodeType": "ModifierInvocation",
"src": "2228:9:55"
},
{
"arguments": [
{
"argumentTypes": null,
"id": 21278,
"name": "_contractAddress",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21273,
"src": "2260:16:55",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"id": 21279,
"modifierName": {
"argumentTypes": null,
"id": 21277,
"name": "validAddress",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 22618,
"src": "2247:12:55",
"typeDescriptions": {
"typeIdentifier": "t_modifier$_t_address_$",
"typeString": "modifier (address)"
}
},
"nodeType": "ModifierInvocation",
"src": "2247:30:55"
}
],
"name": "registerAddress",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 21274,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 21271,
"mutability": "mutable",
"name": "_contractName",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 21338,
"src": "2154:21:55",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 21270,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "2154:7:55",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 21273,
"mutability": "mutable",
"name": "_contractAddress",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 21338,
"src": "2177:24:55",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 21272,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "2177:7:55",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "2153:49:55"
},
"returnParameters": {
"id": 21280,
"nodeType": "ParameterList",
"parameters": [],
"src": "2283:0:55"
},
"scope": 21514,
"src": "2129:964:55",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "public"
},
{
"body": {
"id": 21443,
"nodeType": "Block",
"src": "3307:1327:55",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"id": 21350,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 21347,
"name": "_contractName",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21341,
"src": "3353:13:55",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"id": 21348,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "3353:20:55",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "BinaryOperation",
"operator": ">",
"rightExpression": {
"argumentTypes": null,
"hexValue": "30",
"id": 21349,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3376:1:55",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "3353:24:55",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"argumentTypes": null,
"hexValue": "4552525f494e56414c49445f4e414d45",
"id": 21351,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3379:18:55",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_8c31b897cf1b4c41d9a3a2c9019700f5d8d0c36c906997985403c8f4610f8246",
"typeString": "literal_string \"ERR_INVALID_NAME\""
},
"value": "ERR_INVALID_NAME"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_8c31b897cf1b4c41d9a3a2c9019700f5d8d0c36c906997985403c8f4610f8246",
"typeString": "literal_string \"ERR_INVALID_NAME\""
}
],
"id": 21346,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "3345:7:55",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 21352,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3345:53:55",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 21353,
"nodeType": "ExpressionStatement",
"src": "3345:53:55"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 21363,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 21355,
"name": "items",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21233,
"src": "3417:5:55",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_RegistryItem_$21229_storage_$",
"typeString": "mapping(bytes32 => struct ContractRegistry.RegistryItem storage ref)"
}
},
"id": 21357,
"indexExpression": {
"argumentTypes": null,
"id": 21356,
"name": "_contractName",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21341,
"src": "3423:13:55",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "3417:20:55",
"typeDescriptions": {
"typeIdentifier": "t_struct$_RegistryItem_$21229_storage",
"typeString": "struct ContractRegistry.RegistryItem storage ref"
}
},
"id": 21358,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "contractAddress",
"nodeType": "MemberAccess",
"referencedDeclaration": 21226,
"src": "3417:36:55",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "30",
"id": 21361,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3465:1:55",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
}
],
"id": 21360,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "3457:7:55",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 21359,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "3457:7:55",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 21362,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3457:10:55",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
},
"src": "3417:50:55",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"argumentTypes": null,
"hexValue": "4552525f494e56414c49445f4e414d45",
"id": 21364,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3469:18:55",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_8c31b897cf1b4c41d9a3a2c9019700f5d8d0c36c906997985403c8f4610f8246",
"typeString": "literal_string \"ERR_INVALID_NAME\""
},
"value": "ERR_INVALID_NAME"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_8c31b897cf1b4c41d9a3a2c9019700f5d8d0c36c906997985403c8f4610f8246",
"typeString": "literal_string \"ERR_INVALID_NAME\""
}
],
"id": 21354,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "3409:7:55",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 21365,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3409:79:55",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 21366,
"nodeType": "ExpressionStatement",
"src": "3409:79:55"
},
{
"expression": {
"argumentTypes": null,
"id": 21375,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 21367,
"name": "items",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21233,
"src": "3550:5:55",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_RegistryItem_$21229_storage_$",
"typeString": "mapping(bytes32 => struct ContractRegistry.RegistryItem storage ref)"
}
},
"id": 21369,
"indexExpression": {
"argumentTypes": null,
"id": 21368,
"name": "_contractName",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21341,
"src": "3556:13:55",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "3550:20:55",
"typeDescriptions": {
"typeIdentifier": "t_struct$_RegistryItem_$21229_storage",
"typeString": "struct ContractRegistry.RegistryItem storage ref"
}
},
"id": 21370,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"memberName": "contractAddress",
"nodeType": "MemberAccess",
"referencedDeclaration": 21226,
"src": "3550:36:55",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "30",
"id": 21373,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3597:1:55",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
}
],
"id": 21372,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "3589:7:55",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 21371,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "3589:7:55",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 21374,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3589:10:55",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
},
"src": "3550:49:55",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 21376,
"nodeType": "ExpressionStatement",
"src": "3550:49:55"
},
{
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 21380,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 21377,
"name": "contractNames",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21236,
"src": "3862:13:55",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_string_storage_$dyn_storage",
"typeString": "string storage ref[] storage ref"
}
},
"id": 21378,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "3862:20:55",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": ">",
"rightExpression": {
"argumentTypes": null,
"hexValue": "31",
"id": 21379,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3885:1:55",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_1_by_1",
"typeString": "int_const 1"
},
"value": "1"
},
"src": "3862:24:55",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": null,
"id": 21422,
"nodeType": "IfStatement",
"src": "3858:488:55",
"trueBody": {
"id": 21421,
"nodeType": "Block",
"src": "3888:458:55",
"statements": [
{
"assignments": [
21382
],
"declarations": [
{
"constant": false,
"id": 21382,
"mutability": "mutable",
"name": "lastContractNameString",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 21421,
"src": "3903:36:55",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string"
},
"typeName": {
"id": 21381,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "3903:6:55",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 21389,
"initialValue": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 21383,
"name": "contractNames",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21236,
"src": "3942:13:55",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_string_storage_$dyn_storage",
"typeString": "string storage ref[] storage ref"
}
},
"id": 21388,
"indexExpression": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 21387,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 21384,
"name": "contractNames",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21236,
"src": "3956:13:55",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_string_storage_$dyn_storage",
"typeString": "string storage ref[] storage ref"
}
},
"id": 21385,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "3956:20:55",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "-",
"rightExpression": {
"argumentTypes": null,
"hexValue": "31",
"id": 21386,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3979:1:55",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_1_by_1",
"typeString": "int_const 1"
},
"value": "1"
},
"src": "3956:24:55",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "3942:39:55",
"typeDescriptions": {
"typeIdentifier": "t_string_storage",
"typeString": "string storage ref"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "3903:78:55"
},
{
"assignments": [
21391
],
"declarations": [
{
"constant": false,
"id": 21391,
"mutability": "mutable",
"name": "unregisterIndex",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 21421,
"src": "3996:23:55",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 21390,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "3996:7:55",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 21396,
"initialValue": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 21392,
"name": "items",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21233,
"src": "4022:5:55",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_RegistryItem_$21229_storage_$",
"typeString": "mapping(bytes32 => struct ContractRegistry.RegistryItem storage ref)"
}
},
"id": 21394,
"indexExpression": {
"argumentTypes": null,
"id": 21393,
"name": "_contractName",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21341,
"src": "4028:13:55",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "4022:20:55",
"typeDescriptions": {
"typeIdentifier": "t_struct$_RegistryItem_$21229_storage",
"typeString": "struct ContractRegistry.RegistryItem storage ref"
}
},
"id": 21395,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "nameIndex",
"nodeType": "MemberAccess",
"referencedDeclaration": 21228,
"src": "4022:30:55",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "3996:56:55"
},
{
"expression": {
"argumentTypes": null,
"id": 21401,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 21397,
"name": "contractNames",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21236,
"src": "4069:13:55",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_string_storage_$dyn_storage",
"typeString": "string storage ref[] storage ref"
}
},
"id": 21399,
"indexExpression": {
"argumentTypes": null,
"id": 21398,
"name": "unregisterIndex",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21391,
"src": "4083:15:55",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "4069:30:55",
"typeDescriptions": {
"typeIdentifier": "t_string_storage",
"typeString": "string storage ref"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 21400,
"name": "lastContractNameString",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21382,
"src": "4102:22:55",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
},
"src": "4069:55:55",
"typeDescriptions": {
"typeIdentifier": "t_string_storage",
"typeString": "string storage ref"
}
},
"id": 21402,
"nodeType": "ExpressionStatement",
"src": "4069:55:55"
},
{
"assignments": [
21404
],
"declarations": [
{
"constant": false,
"id": 21404,
"mutability": "mutable",
"name": "lastContractName",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 21421,
"src": "4139:24:55",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 21403,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "4139:7:55",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 21408,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 21406,
"name": "lastContractNameString",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21382,
"src": "4182:22:55",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
],
"id": 21405,
"name": "stringToBytes32",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21500,
"src": "4166:15:55",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_bytes32_$",
"typeString": "function (string memory) pure returns (bytes32)"
}
},
"id": 21407,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "4166:39:55",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "4139:66:55"
},
{
"assignments": [
21410
],
"declarations": [
{
"constant": false,
"id": 21410,
"mutability": "mutable",
"name": "registryItem",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 21421,
"src": "4220:33:55",
"stateVariable": false,
"storageLocation": "storage",
"typeDescriptions": {
"typeIdentifier": "t_struct$_RegistryItem_$21229_storage_ptr",
"typeString": "struct ContractRegistry.RegistryItem"
},
"typeName": {
"contractScope": null,
"id": 21409,
"name": "RegistryItem",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 21229,
"src": "4220:12:55",
"typeDescriptions": {
"typeIdentifier": "t_struct$_RegistryItem_$21229_storage_ptr",
"typeString": "struct ContractRegistry.RegistryItem"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 21414,
"initialValue": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 21411,
"name": "items",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21233,
"src": "4256:5:55",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_RegistryItem_$21229_storage_$",
"typeString": "mapping(bytes32 => struct ContractRegistry.RegistryItem storage ref)"
}
},
"id": 21413,
"indexExpression": {
"argumentTypes": null,
"id": 21412,
"name": "lastContractName",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21404,
"src": "4262:16:55",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "4256:23:55",
"typeDescriptions": {
"typeIdentifier": "t_struct$_RegistryItem_$21229_storage",
"typeString": "struct ContractRegistry.RegistryItem storage ref"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "4220:59:55"
},
{
"expression": {
"argumentTypes": null,
"id": 21419,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 21415,
"name": "registryItem",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21410,
"src": "4294:12:55",
"typeDescriptions": {
"typeIdentifier": "t_struct$_RegistryItem_$21229_storage_ptr",
"typeString": "struct ContractRegistry.RegistryItem storage pointer"
}
},
"id": 21417,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"memberName": "nameIndex",
"nodeType": "MemberAccess",
"referencedDeclaration": 21228,
"src": "4294:22:55",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 21418,
"name": "unregisterIndex",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21391,
"src": "4319:15:55",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "4294:40:55",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 21420,
"nodeType": "ExpressionStatement",
"src": "4294:40:55"
}
]
}
},
{
"expression": {
"argumentTypes": null,
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"argumentTypes": null,
"id": 21423,
"name": "contractNames",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21236,
"src": "4413:13:55",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_string_storage_$dyn_storage",
"typeString": "string storage ref[] storage ref"
}
},
"id": 21425,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "pop",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "4413:17:55",
"typeDescriptions": {
"typeIdentifier": "t_function_arraypop_nonpayable$__$returns$__$",
"typeString": "function ()"
}
},
"id": 21426,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "4413:19:55",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 21427,
"nodeType": "ExpressionStatement",
"src": "4413:19:55"
},
{
"expression": {
"argumentTypes": null,
"id": 21433,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 21428,
"name": "items",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21233,
"src": "4488:5:55",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_RegistryItem_$21229_storage_$",
"typeString": "mapping(bytes32 => struct ContractRegistry.RegistryItem storage ref)"
}
},
"id": 21430,
"indexExpression": {
"argumentTypes": null,
"id": 21429,
"name": "_contractName",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21341,
"src": "4494:13:55",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "4488:20:55",
"typeDescriptions": {
"typeIdentifier": "t_struct$_RegistryItem_$21229_storage",
"typeString": "struct ContractRegistry.RegistryItem storage ref"
}
},
"id": 21431,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"memberName": "nameIndex",
"nodeType": "MemberAccess",
"referencedDeclaration": 21228,
"src": "4488:30:55",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"hexValue": "30",
"id": 21432,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "4521:1:55",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "4488:34:55",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 21434,
"nodeType": "ExpressionStatement",
"src": "4488:34:55"
},
{
"eventCall": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 21436,
"name": "_contractName",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21341,
"src": "4600:13:55",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "30",
"id": 21439,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "4623:1:55",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
}
],
"id": 21438,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "4615:7:55",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 21437,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "4615:7:55",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 21440,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "4615:10:55",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
{
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
],
"id": 21435,
"name": "AddressUpdate",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21243,
"src": "4586:13:55",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$returns$__$",
"typeString": "function (bytes32,address)"
}
},
"id": 21441,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "4586:40:55",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 21442,
"nodeType": "EmitStatement",
"src": "4581:45:55"
}
]
},
"documentation": {
"id": 21339,
"nodeType": "StructuredDocumentation",
"src": "3101:133:55",
"text": " @dev removes an existing contract address from the registry\n @param _contractName contract name"
},
"functionSelector": "2bbd9530",
"id": 21444,
"implemented": true,
"kind": "function",
"modifiers": [
{
"arguments": null,
"id": 21344,
"modifierName": {
"argumentTypes": null,
"id": 21343,
"name": "ownerOnly",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21754,
"src": "3297:9:55",
"typeDescriptions": {
"typeIdentifier": "t_modifier$__$",
"typeString": "modifier ()"
}
},
"nodeType": "ModifierInvocation",
"src": "3297:9:55"
}
],
"name": "unregisterAddress",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 21342,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 21341,
"mutability": "mutable",
"name": "_contractName",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 21444,
"src": "3267:21:55",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 21340,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "3267:7:55",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "3266:23:55"
},
"returnParameters": {
"id": 21345,
"nodeType": "ParameterList",
"parameters": [],
"src": "3307:0:55"
},
"scope": 21514,
"src": "3240:1394:55",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "public"
},
{
"body": {
"id": 21484,
"nodeType": "Block",
"src": "4950:188:55",
"statements": [
{
"assignments": [
21453
],
"declarations": [
{
"constant": false,
"id": 21453,
"mutability": "mutable",
"name": "byteArray",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 21484,
"src": "4961:22:55",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 21452,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "4961:5:55",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 21458,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "3332",
"id": 21456,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "4996:2:55",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_32_by_1",
"typeString": "int_const 32"
},
"value": "32"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_rational_32_by_1",
"typeString": "int_const 32"
}
],
"id": 21455,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "NewExpression",
"src": "4986:9:55",
"typeDescriptions": {
"typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$",
"typeString": "function (uint256) pure returns (bytes memory)"
},
"typeName": {
"id": 21454,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "4990:5:55",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
}
},
"id": 21457,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "4986:13:55",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "4961:38:55"
},
{
"body": {
"id": 21477,
"nodeType": "Block",
"src": "5043:51:55",
"statements": [
{
"expression": {
"argumentTypes": null,
"id": 21475,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 21469,
"name": "byteArray",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21453,
"src": "5058:9:55",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
"id": 21471,
"indexExpression": {
"argumentTypes": null,
"id": 21470,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21460,
"src": "5068:1:55",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "5058:12:55",
"typeDescriptions": {
"typeIdentifier": "t_bytes1",
"typeString": "bytes1"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 21472,
"name": "_bytes",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21447,
"src": "5073:6:55",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"id": 21474,
"indexExpression": {
"argumentTypes": null,
"id": 21473,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21460,
"src": "5080:1:55",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "5073:9:55",
"typeDescriptions": {
"typeIdentifier": "t_bytes1",
"typeString": "bytes1"
}
},
"src": "5058:24:55",
"typeDescriptions": {
"typeIdentifier": "t_bytes1",
"typeString": "bytes1"
}
},
"id": 21476,
"nodeType": "ExpressionStatement",
"src": "5058:24:55"
}
]
},
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 21465,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 21463,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21460,
"src": "5030:1:55",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "<",
"rightExpression": {
"argumentTypes": null,
"hexValue": "3332",
"id": 21464,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "5034:2:55",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_32_by_1",
"typeString": "int_const 32"
},
"value": "32"
},
"src": "5030:6:55",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 21478,
"initializationExpression": {
"assignments": [
21460
],
"declarations": [
{
"constant": false,
"id": 21460,
"mutability": "mutable",
"name": "i",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 21478,
"src": "5015:9:55",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 21459,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "5015:7:55",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 21462,
"initialValue": {
"argumentTypes": null,
"hexValue": "30",
"id": 21461,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "5027:1:55",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"nodeType": "VariableDeclarationStatement",
"src": "5015:13:55"
},
"loopExpression": {
"expression": {
"argumentTypes": null,
"id": 21467,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "++",
"prefix": false,
"src": "5038:3:55",
"subExpression": {
"argumentTypes": null,
"id": 21466,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21460,
"src": "5038:1:55",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 21468,
"nodeType": "ExpressionStatement",
"src": "5038:3:55"
},
"nodeType": "ForStatement",
"src": "5010:84:55"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 21481,
"name": "byteArray",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21453,
"src": "5120:9:55",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
],
"id": 21480,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "5113:6:55",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_string_storage_ptr_$",
"typeString": "type(string storage pointer)"
},
"typeName": {
"id": 21479,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "5113:6:55",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 21482,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "5113:17:55",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
},
"functionReturnParameters": 21451,
"id": 21483,
"nodeType": "Return",
"src": "5106:24:55"
}
]
},
"documentation": {
"id": 21445,
"nodeType": "StructuredDocumentation",
"src": "4642:224:55",
"text": " @dev utility, converts bytes32 to a string\n note that the bytes32 argument is assumed to be UTF8 encoded ASCII string\n @return string representation of the given bytes32 argument"
},
"id": 21485,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "bytes32ToString",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 21448,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 21447,
"mutability": "mutable",
"name": "_bytes",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 21485,
"src": "4897:14:55",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 21446,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "4897:7:55",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "4896:16:55"
},
"returnParameters": {
"id": 21451,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 21450,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 21485,
"src": "4935:13:55",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string"
},
"typeName": {
"id": 21449,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "4935:6:55",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "4934:15:55"
},
"scope": 21514,
"src": "4872:266:55",
"stateMutability": "pure",
"virtual": false,
"visibility": "private"
},
{
"body": {
"id": 21499,
"nodeType": "Block",
"src": "5453:134:55",
"statements": [
{
"assignments": [
21494
],
"declarations": [
{
"constant": false,
"id": 21494,
"mutability": "mutable",
"name": "result",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 21499,
"src": "5464:14:55",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 21493,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "5464:7:55",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 21495,
"initialValue": null,
"nodeType": "VariableDeclarationStatement",
"src": "5464:14:55"
},
{
"AST": {
"nodeType": "YulBlock",
"src": "5498:58:55",
"statements": [
{
"nodeType": "YulAssignment",
"src": "5513:32:55",
"value": {
"arguments": [
{
"arguments": [
{
"name": "_string",
"nodeType": "YulIdentifier",
"src": "5533:7:55"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5541:2:55",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "5529:3:55"
},
"nodeType": "YulFunctionCall",
"src": "5529:15:55"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "5523:5:55"
},
"nodeType": "YulFunctionCall",
"src": "5523:22:55"
},
"variableNames": [
{
"name": "result",
"nodeType": "YulIdentifier",
"src": "5513:6:55"
}
]
}
]
},
"evmVersion": "istanbul",
"externalReferences": [
{
"declaration": 21488,
"isOffset": false,
"isSlot": false,
"src": "5533:7:55",
"valueSize": 1
},
{
"declaration": 21494,
"isOffset": false,
"isSlot": false,
"src": "5513:6:55",
"valueSize": 1
}
],
"id": 21496,
"nodeType": "InlineAssembly",
"src": "5489:67:55"
},
{
"expression": {
"argumentTypes": null,
"id": 21497,
"name": "result",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21494,
"src": "5573:6:55",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"functionReturnParameters": 21492,
"id": 21498,
"nodeType": "Return",
"src": "5566:13:55"
}
]
},
"documentation": {
"id": 21486,
"nodeType": "StructuredDocumentation",
"src": "5146:222:55",
"text": " @dev utility, converts string to bytes32\n note that the bytes32 argument is assumed to be UTF8 encoded ASCII string\n @return string representation of the given bytes32 argument"
},
"id": 21500,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "stringToBytes32",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 21489,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 21488,
"mutability": "mutable",
"name": "_string",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 21500,
"src": "5399:21:55",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string"
},
"typeName": {
"id": 21487,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "5399:6:55",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "5398:23:55"
},
"returnParameters": {
"id": 21492,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 21491,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 21500,
"src": "5444:7:55",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 21490,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "5444:7:55",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "5443:9:55"
},
"scope": 21514,
"src": "5374:213:55",
"stateMutability": "pure",
"virtual": false,
"visibility": "private"
},
{
"body": {
"id": 21512,
"nodeType": "Block",
"src": "5734:50:55",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 21509,
"name": "_contractName",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21503,
"src": "5762:13:55",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
],
"id": 21508,
"name": "addressOf",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21268,
"src": "5752:9:55",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$",
"typeString": "function (bytes32) view returns (address)"
}
},
"id": 21510,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "5752:24:55",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"functionReturnParameters": 21507,
"id": 21511,
"nodeType": "Return",
"src": "5745:31:55"
}
]
},
"documentation": {
"id": 21501,
"nodeType": "StructuredDocumentation",
"src": "5595:60:55",
"text": " @dev deprecated, backward compatibility"
},
"functionSelector": "21f8a721",
"id": 21513,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "getAddress",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 21504,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 21503,
"mutability": "mutable",
"name": "_contractName",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 21513,
"src": "5681:21:55",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 21502,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "5681:7:55",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "5680:23:55"
},
"returnParameters": {
"id": 21507,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 21506,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 21513,
"src": "5725:7:55",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 21505,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "5725:7:55",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "5724:9:55"
},
"scope": 21514,
"src": "5661:123:55",
"stateMutability": "view",
"virtual": false,
"visibility": "public"
}
],
"scope": 21515,
"src": "633:5154:55"
}
],
"src": "52:5737:55"
},
"compiler": {
"name": "solc",
"version": "0.6.12+commit.27d51765.Emscripten.clang"
},
"networks": {
"42": {
"events": {
"0xfc08d1253c81bcd5444fc7056ef1f5a5df4c9220b6fd70d7449267f1f0f29918": {
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "_contractName",
"type": "bytes32"
},
{
"indexed": false,
"internalType": "address",
"name": "_contractAddress",
"type": "address"
}
],
"name": "AddressUpdate",
"type": "event"
},
"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": "0xb708175e3f6Cd850643aAF7B32212AFad50e2549",
"transactionHash": "0x7bfc81b1fc45e33d018be4e91281ebc6bc7a4ac8a9b497afcc752f5630e2261c"
},
"8995": {
"events": {
"0xfc08d1253c81bcd5444fc7056ef1f5a5df4c9220b6fd70d7449267f1f0f29918": {
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "_contractName",
"type": "bytes32"
},
{
"indexed": false,
"internalType": "address",
"name": "_contractAddress",
"type": "address"
}
],
"name": "AddressUpdate",
"type": "event"
},
"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": "0xb708175e3f6Cd850643aAF7B32212AFad50e2549",
"transactionHash": "0x7bfc81b1fc45e33d018be4e91281ebc6bc7a4ac8a9b497afcc752f5630e2261c"
},
"1604964387852": {
"events": {
"0xfc08d1253c81bcd5444fc7056ef1f5a5df4c9220b6fd70d7449267f1f0f29918": {
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "_contractName",
"type": "bytes32"
},
{
"indexed": false,
"internalType": "address",
"name": "_contractAddress",
"type": "address"
}
],
"name": "AddressUpdate",
"type": "event"
},
"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": "0xc02Bb59ae88eb23a23BadC0B9E5206Dcdc88C02f",
"transactionHash": "0xdbff2a9f16cb2962b0c8c078daa2bcad8b67e4995d1fc9dd5f09648a0dabfd4b"
},
"1604964469407": {
"events": {
"0xfc08d1253c81bcd5444fc7056ef1f5a5df4c9220b6fd70d7449267f1f0f29918": {
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "_contractName",
"type": "bytes32"
},
{
"indexed": false,
"internalType": "address",
"name": "_contractAddress",
"type": "address"
}
],
"name": "AddressUpdate",
"type": "event"
},
"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": "0x4d0C2eA383F8dDbfAFea0FB92c3fE49BdE5d9725",
"transactionHash": "0x86bd2cd8b9b3d3cc5c3766e9e7724d3b6adf84d8e0e48a85c22fb9e8181c9cd4"
},
"1604965528035": {
"events": {
"0xfc08d1253c81bcd5444fc7056ef1f5a5df4c9220b6fd70d7449267f1f0f29918": {
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "_contractName",
"type": "bytes32"
},
{
"indexed": false,
"internalType": "address",
"name": "_contractAddress",
"type": "address"
}
],
"name": "AddressUpdate",
"type": "event"
},
"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": "0xba5D674F1bF01d7125a840220B0A86a5D7556705",
"transactionHash": "0xdcd69e9e046456adeb407f3dedfb8bcfe1961703f4fa3c020a492ffb3c2647a9"
},
"1604965645554": {
"events": {
"0xfc08d1253c81bcd5444fc7056ef1f5a5df4c9220b6fd70d7449267f1f0f29918": {
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "_contractName",
"type": "bytes32"
},
{
"indexed": false,
"internalType": "address",
"name": "_contractAddress",
"type": "address"
}
],
"name": "AddressUpdate",
"type": "event"
},
"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": "0x2DE84749B53AA2237994AF994f22efaE23Bf59d9",
"transactionHash": "0x4573c86c34cd809a0128f51e100e3691d1f28e0f8be050cca73536ed65b4fb79"
},
"1604965679541": {
"events": {
"0xfc08d1253c81bcd5444fc7056ef1f5a5df4c9220b6fd70d7449267f1f0f29918": {
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "_contractName",
"type": "bytes32"
},
{
"indexed": false,
"internalType": "address",
"name": "_contractAddress",
"type": "address"
}
],
"name": "AddressUpdate",
"type": "event"
},
"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": "0xbb43041Ae115e5f0362E807Cb42C44a4ce61F5d3",
"transactionHash": "0x1f993195a776168143b5cb56e533e3305f2b918487a279c77aa4514f9202c46d"
},
"1604965719492": {
"events": {
"0xfc08d1253c81bcd5444fc7056ef1f5a5df4c9220b6fd70d7449267f1f0f29918": {
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "_contractName",
"type": "bytes32"
},
{
"indexed": false,
"internalType": "address",
"name": "_contractAddress",
"type": "address"
}
],
"name": "AddressUpdate",
"type": "event"
},
"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": "0xd52Fb83Cf4f03b8D844F29E1C6F795ca0AA58fEC",
"transactionHash": "0xc317e282d0029b1d40b173ac4649df78ad4a520665808d23e490f3ee5f0d7c1c"
},
"1604965760834": {
"events": {
"0xfc08d1253c81bcd5444fc7056ef1f5a5df4c9220b6fd70d7449267f1f0f29918": {
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "_contractName",
"type": "bytes32"
},
{
"indexed": false,
"internalType": "address",
"name": "_contractAddress",
"type": "address"
}
],
"name": "AddressUpdate",
"type": "event"
},
"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": "0xd316Dd5DA5F7C63D2173a392caB18973813daF13",
"transactionHash": "0x20d414c1f386f14abd52d0e8d495cc65b4469b31bd7b10b0f64b0e0cda0b389b"
}
},
"schemaVersion": "3.2.3",
"updatedAt": "2020-11-10T14:20:44.715Z",
"networkType": "ethereum",
"devdoc": {
"details": "Contract Registry The contract registry keeps contract addresses by name. The owner can update contract addresses so that a contract name always points to the latest version of the given contract. Other contracts can query the registry to get updated addresses instead of depending on specific addresses. Note that contract names are limited to 32 bytes UTF8 encoded ASCII strings to optimize gas costs",
"events": {
"AddressUpdate(bytes32,address)": {
"details": "triggered when an address pointed to by a contract name is modified",
"params": {
"_contractAddress": "new contract address",
"_contractName": "contract name"
}
}
},
"kind": "dev",
"methods": {
"acceptOwnership()": {
"details": "used by a new owner to accept an ownership transfer"
},
"addressOf(bytes32)": {
"details": "returns the address associated with the given contract name",
"params": {
"_contractName": "contract name"
},
"returns": {
"_0": "contract address"
}
},
"getAddress(bytes32)": {
"details": "deprecated, backward compatibility"
},
"itemCount()": {
"details": "returns the number of items in the registry",
"returns": {
"_0": "number of items"
}
},
"registerAddress(bytes32,address)": {
"details": "registers a new address for the contract name in the registry",
"params": {
"_contractAddress": "contract address",
"_contractName": "contract name"
}
},
"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"
}
},
"unregisterAddress(bytes32)": {
"details": "removes an existing contract address from the registry",
"params": {
"_contractName": "contract name"
}
}
},
"version": 1
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
}