{ "contractName": "OwnerManager", "abi": [ { "constant": true, "inputs": [ { "name": "", "type": "uint256" } ], "name": "owners", "outputs": [ { "name": "", "type": "address" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": false, "inputs": [ { "name": "owner", "type": "address" }, { "name": "_threshold", "type": "uint8" } ], "name": "addOwner", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "name": "ownerIndex", "type": "uint256" }, { "name": "owner", "type": "address" }, { "name": "_threshold", "type": "uint8" } ], "name": "removeOwner", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "name": "oldOwnerIndex", "type": "uint256" }, { "name": "oldOwner", "type": "address" }, { "name": "newOwner", "type": "address" } ], "name": "replaceOwner", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "name": "_threshold", "type": "uint8" } ], "name": "changeThreshold", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": true, "inputs": [], "name": "threshold", "outputs": [ { "name": "", "type": "uint8" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [ { "name": "owner", "type": "address" } ], "name": "isOwner", "outputs": [ { "name": "", "type": "bool" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "getOwners", "outputs": [ { "name": "", "type": "address[]" } ], "payable": false, "stateMutability": "view", "type": "function" } ], "bytecode": "0x608060405234801561001057600080fd5b50610b4e806100206000396000f30060806040526004361061008e576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063025e7c27146100935780630e5229b0146101005780632f54bf6e1461015057806342cde4e8146101ab57806354e99c6e146101dc578063842b954e14610249578063a0e67e2b146102a3578063b7f3358d1461030f575b600080fd5b34801561009f57600080fd5b506100be6004803603810190808035906020019092919050505061033f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561010c57600080fd5b5061014e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff16906020019092919050505061037d565b005b34801561015c57600080fd5b50610191600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610520565b604051808215151515815260200191505060405180910390f35b3480156101b757600080fd5b506101c0610576565b604051808260ff1660ff16815260200191505060405180910390f35b3480156101e857600080fd5b5061024760048036038101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061058d565b005b34801561025557600080fd5b506102a160048036038101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff1690602001909291905050506107c6565b005b3480156102af57600080fd5b506102b86109c1565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156102fb5780820151818401526020810190506102e0565b505050509050019250505060405180910390f35b34801561031b57600080fd5b5061033d600480360381019080803560ff169060200190929190505050610a4f565b005b60008181548110151561034e57fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156103b757600080fd5b60008273ffffffffffffffffffffffffffffffffffffffff16141515156103dd57600080fd5b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151561043657600080fd5b60008290806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506001600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508060ff16600160009054906101000a900460ff1660ff1614151561051c5761051b81610a4f565b5b5050565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600160009054906101000a900460ff16905090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156105c757600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141515156105ed57600080fd5b600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151561064657600080fd5b8173ffffffffffffffffffffffffffffffffffffffff1660008481548110151561066c57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156106b957600080fd5b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508060008481548110151561077957fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561080057600080fd5b8060ff166001600080549050031015151561081a57600080fd5b8173ffffffffffffffffffffffffffffffffffffffff1660008481548110151561084057fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561088d57600080fd5b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060006001600080549050038154811015156108fc57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660008481548110151561093657fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008054809190600190036109939190610ad1565b508060ff16600160009054906101000a900460ff1660ff161415156109bc576109bb81610a4f565b5b505050565b60606000805480602002602001604051908101604052809291908181526020018280548015610a4557602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190600101908083116109fb575b5050505050905090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610a8957600080fd5b6000805490508160ff1611151515610aa057600080fd5b60018160ff1610151515610ab357600080fd5b80600160006101000a81548160ff021916908360ff16021790555050565b815481835581811115610af857818360005260206000209182019101610af79190610afd565b5b505050565b610b1f91905b80821115610b1b576000816000905550600101610b03565b5090565b905600a165627a7a72305820e78155e74b906f83eb64e436f45d07ae88b2195944595ca816ddbec6abb1ecb90029", "deployedBytecode": "0x60806040526004361061008e576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063025e7c27146100935780630e5229b0146101005780632f54bf6e1461015057806342cde4e8146101ab57806354e99c6e146101dc578063842b954e14610249578063a0e67e2b146102a3578063b7f3358d1461030f575b600080fd5b34801561009f57600080fd5b506100be6004803603810190808035906020019092919050505061033f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561010c57600080fd5b5061014e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff16906020019092919050505061037d565b005b34801561015c57600080fd5b50610191600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610520565b604051808215151515815260200191505060405180910390f35b3480156101b757600080fd5b506101c0610576565b604051808260ff1660ff16815260200191505060405180910390f35b3480156101e857600080fd5b5061024760048036038101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061058d565b005b34801561025557600080fd5b506102a160048036038101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff1690602001909291905050506107c6565b005b3480156102af57600080fd5b506102b86109c1565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156102fb5780820151818401526020810190506102e0565b505050509050019250505060405180910390f35b34801561031b57600080fd5b5061033d600480360381019080803560ff169060200190929190505050610a4f565b005b60008181548110151561034e57fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156103b757600080fd5b60008273ffffffffffffffffffffffffffffffffffffffff16141515156103dd57600080fd5b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151561043657600080fd5b60008290806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506001600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508060ff16600160009054906101000a900460ff1660ff1614151561051c5761051b81610a4f565b5b5050565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600160009054906101000a900460ff16905090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156105c757600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141515156105ed57600080fd5b600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151561064657600080fd5b8173ffffffffffffffffffffffffffffffffffffffff1660008481548110151561066c57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156106b957600080fd5b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508060008481548110151561077957fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561080057600080fd5b8060ff166001600080549050031015151561081a57600080fd5b8173ffffffffffffffffffffffffffffffffffffffff1660008481548110151561084057fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561088d57600080fd5b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060006001600080549050038154811015156108fc57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660008481548110151561093657fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008054809190600190036109939190610ad1565b508060ff16600160009054906101000a900460ff1660ff161415156109bc576109bb81610a4f565b5b505050565b60606000805480602002602001604051908101604052809291908181526020018280548015610a4557602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190600101908083116109fb575b5050505050905090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610a8957600080fd5b6000805490508160ff1611151515610aa057600080fd5b60018160ff1610151515610ab357600080fd5b80600160006101000a81548160ff021916908360ff16021790555050565b815481835581811115610af857818360005260206000209182019101610af79190610afd565b5b505050565b610b1f91905b80821115610b1b576000816000905550600101610b03565b5090565b905600a165627a7a72305820e78155e74b906f83eb64e436f45d07ae88b2195944595ca816ddbec6abb1ecb90029", "sourceMap": "240:4632:10:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;240:4632:10;;;;;;;", "deployedSourceMap": "240:4632:10:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;287:23;;8:9:-1;5:2;;;30:1;27;20:12;5:2;287:23:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1737:431;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1737:431:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4552:125;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4552:125:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4436:110;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4436:110:10;;;;;;;;;;;;;;;;;;;;;;;;;;;3419:501;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3419:501:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2499:599;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2499:599:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4759:111;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4759:111:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;4759:111:10;;;;;;;;;;;;;;;;;4109:321;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4109:321:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;287:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1737:431::-;244:4:14;222:27;;:10;:27;;;214:36;;;;;;;;1894:1:10;1885:5;:10;;;;1877:19;;;;;;;;1955:7;:14;1963:5;1955:14;;;;;;;;;;;;;;;;;;;;;;;;;1954:15;1946:24;;;;;;;;1980:6;1992:5;1980:18;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;1980:18:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2025:4;2008:7;:14;2016:5;2008:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;2110:10;2097:23;;:9;;;;;;;;;;;:23;;;;2093:68;;;2134:27;2150:10;2134:15;:27::i;:::-;2093:68;1737:431;;:::o;4552:125::-;4629:4;4656:7;:14;4664:5;4656:14;;;;;;;;;;;;;;;;;;;;;;;;;4649:21;;4552:125;;;:::o;4436:110::-;4502:5;4530:9;;;;;;;;;;;4523:16;;4436:110;:::o;3419:501::-;244:4:14;222:27;;:10;:27;;;214:36;;;;;;;;3609:1:10;3597:8;:13;;;;3589:22;;;;;;;;3670:7;:17;3678:8;3670:17;;;;;;;;;;;;;;;;;;;;;;;;;3669:18;3661:27;;;;;;;;3793:8;3768:33;;:6;3775:13;3768:21;;;;;;;;;;;;;;;;;;;;;;;;;;;:33;;;3760:42;;;;;;;;3832:5;3812:7;:17;3820:8;3812:17;;;;;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;3867:4;3847:7;:17;3855:8;3847:17;;;;;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;3905:8;3881:6;3888:13;3881:21;;;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;3419:501;;;:::o;2499:599::-;244:4:14;222:27;;:10;:27;;;214:36;;;;;;;;2727:10:10;2706:31;;2722:1;2706:6;:13;;;;:17;:31;;2698:40;;;;;;;;2840:5;2818:27;;:6;2825:10;2818:18;;;;;;;;;;;;;;;;;;;;;;;;;;;:27;;;2810:36;;;;;;;;2873:5;2856:7;:14;2864:5;2856:14;;;;;;;;;;;;;;;;:22;;;;;;;;;;;;;;;;;;2909:6;2932:1;2916:6;:13;;;;:17;2909:25;;;;;;;;;;;;;;;;;;;;;;;;;;;2888:6;2895:10;2888:18;;;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;2944:6;:15;;;;;;;;;;;;:::i;:::-;;3040:10;3027:23;;:9;;;;;;;;;;;:23;;;;3023:68;;;3064:27;3080:10;3064:15;:27::i;:::-;3023:68;2499:599;;;:::o;4759:111::-;4825:9;4857:6;4850:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4759:111;:::o;4109:321::-;244:4:14;222:27;;:10;:27;;;214:36;;;;;;;;4291:6:10;:13;;;;4277:10;:27;;;;4269:36;;;;;;;;4389:1;4375:10;:15;;;;4367:24;;;;;;;;4413:10;4401:9;;:22;;;;;;;;;;;;;;;;;;4109:321;:::o;240:4632::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o", "source": "pragma solidity 0.4.23;\nimport \"./SelfAuthorized.sol\";\n\n/// @title OwnerManager - Manages a set of owners and a threshold to perform actions.\n/// @author Stefan George - \n/// @author Richard Meissner - \ncontract OwnerManager is SelfAuthorized {\n\n address[] public owners;\n uint8 public threshold;\n\n // isOwner mapping allows to check if an address is a Safe owner.\n mapping (address => bool) public isOwner;\n\n /// @dev Setup function sets initial storage of contract.\n /// @param _owners List of Safe owners.\n /// @param _threshold Number of required confirmations for a Safe transaction.\n function setupOwners(address[] _owners, uint8 _threshold)\n internal\n {\n // Threshold can only be 0 at initialization.\n // Check ensures that setup function can only be called once.\n require(threshold == 0);\n // Validate that threshold is smaller than number of added owners.\n require(_threshold <= _owners.length);\n // There has to be at least one Safe owner.\n require(_threshold >= 1);\n // Initializing Safe owners.\n for (uint256 i = 0; i < _owners.length; i++) {\n // Owner address cannot be null.\n address owner = _owners[i];\n require(owner != 0);\n // No duplicate owners allowed.\n require(!isOwner[owner]);\n isOwner[owner] = true;\n }\n owners = _owners;\n threshold = _threshold;\n }\n\n /// @dev Allows to add a new owner to the Safe and update the threshold at the same time.\n /// This can only be done via a Safe transaction.\n /// @param owner New owner address.\n /// @param _threshold New threshold.\n function addOwner(address owner, uint8 _threshold)\n public\n authorized\n {\n // Owner address cannot be null.\n require(owner != 0);\n // No duplicate owners allowed.\n require(!isOwner[owner]);\n owners.push(owner);\n isOwner[owner] = true;\n // Change threshold if threshold was changed.\n if (threshold != _threshold)\n changeThreshold(_threshold);\n }\n\n /// @dev Allows to remove an owner from the Safe and update the threshold at the same time.\n /// This can only be done via a Safe transaction.\n /// @param ownerIndex Array index position of owner address to be removed.\n /// @param owner Owner address to be removed.\n /// @param _threshold New threshold.\n function removeOwner(uint256 ownerIndex, address owner, uint8 _threshold)\n public\n authorized\n {\n // Only allow to remove an owner, if threshold can still be reached.\n require(owners.length - 1 >= _threshold);\n // Validate owner address corresponds to owner index.\n require(owners[ownerIndex] == owner);\n isOwner[owner] = false;\n owners[ownerIndex] = owners[owners.length - 1];\n owners.length--;\n // Change threshold if threshold was changed.\n if (threshold != _threshold)\n changeThreshold(_threshold);\n }\n\n /// @dev Allows to replace an owner from the Safe with another address.\n /// This can only be done via a Safe transaction.\n /// @param oldOwnerIndex Array index position of owner address to be replaced.\n /// @param oldOwner Owner address to be replaced.\n /// @param newOwner New owner address.\n function replaceOwner(uint256 oldOwnerIndex, address oldOwner, address newOwner)\n public\n authorized\n {\n // Owner address cannot be null.\n require(newOwner != 0);\n // No duplicate owners allowed.\n require(!isOwner[newOwner]);\n // Validate owner address corresponds to owner index.\n require(owners[oldOwnerIndex] == oldOwner);\n isOwner[oldOwner] = false;\n isOwner[newOwner] = true;\n owners[oldOwnerIndex] = newOwner;\n }\n\n /// @dev Allows to update the number of required confirmations by Safe owners.\n /// This can only be done via a Safe transaction.\n /// @param _threshold New threshold.\n function changeThreshold(uint8 _threshold)\n public\n authorized\n {\n // Validate that threshold is smaller than number of owners.\n require(_threshold <= owners.length);\n // There has to be at least one Safe owner.\n require(_threshold >= 1);\n threshold = _threshold;\n }\n\n function threshold()\n public\n view\n returns (uint8)\n {\n return threshold;\n }\n\n function isOwner(address owner)\n public\n view\n returns (bool)\n {\n return isOwner[owner];\n }\n\n /// @dev Returns array of owners.\n /// @return Array of Safe owners.\n function getOwners()\n public\n view\n returns (address[])\n {\n return owners;\n }\n}\n", "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/OwnerManager.sol", "ast": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/OwnerManager.sol", "exportedSymbols": { "OwnerManager": [ 1438 ] }, "id": 1439, "nodeType": "SourceUnit", "nodes": [ { "id": 1144, "literals": [ "solidity", "0.4", ".23" ], "nodeType": "PragmaDirective", "src": "0:23:10" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/SelfAuthorized.sol", "file": "./SelfAuthorized.sol", "id": 1145, "nodeType": "ImportDirective", "scope": 1439, "sourceUnit": 1560, "src": "24:30:10", "symbolAliases": [], "unitAlias": "" }, { "baseContracts": [ { "arguments": null, "baseName": { "contractScope": null, "id": 1146, "name": "SelfAuthorized", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 1559, "src": "265:14:10", "typeDescriptions": { "typeIdentifier": "t_contract$_SelfAuthorized_$1559", "typeString": "contract SelfAuthorized" } }, "id": 1147, "nodeType": "InheritanceSpecifier", "src": "265:14:10" } ], "contractDependencies": [ 1559 ], "contractKind": "contract", "documentation": "@title OwnerManager - Manages a set of owners and a threshold to perform actions.\n @author Stefan George - \n @author Richard Meissner - ", "fullyImplemented": true, "id": 1438, "linearizedBaseContracts": [ 1438, 1559 ], "name": "OwnerManager", "nodeType": "ContractDefinition", "nodes": [ { "constant": false, "id": 1150, "name": "owners", "nodeType": "VariableDeclaration", "scope": 1438, "src": "287:23:10", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[]" }, "typeName": { "baseType": { "id": 1148, "name": "address", "nodeType": "ElementaryTypeName", "src": "287:7:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 1149, "length": null, "nodeType": "ArrayTypeName", "src": "287:9:10", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" } }, "value": null, "visibility": "public" }, { "constant": false, "id": 1152, "name": "threshold", "nodeType": "VariableDeclaration", "scope": 1438, "src": "316:22:10", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "typeName": { "id": 1151, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "316:5:10", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "value": null, "visibility": "public" }, { "constant": false, "id": 1156, "name": "isOwner", "nodeType": "VariableDeclaration", "scope": 1438, "src": "415:40:10", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" }, "typeName": { "id": 1155, "keyType": { "id": 1153, "name": "address", "nodeType": "ElementaryTypeName", "src": "424:7:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Mapping", "src": "415:25:10", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" }, "valueType": { "id": 1154, "name": "bool", "nodeType": "ElementaryTypeName", "src": "435:4:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } }, "value": null, "visibility": "public" }, { "body": { "id": 1229, "nodeType": "Block", "src": "730:767:10", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "id": 1167, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1165, "name": "threshold", "nodeType": "Identifier", "overloadedDeclarations": [ 1152 ], "referencedDeclaration": 1152, "src": "872:9:10", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "hexValue": "30", "id": 1166, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "885:1:10", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "872:14:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 1164, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 2468, 2469 ], "referencedDeclaration": 2468, "src": "864:7:10", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 1168, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "864:23:10", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1169, "nodeType": "ExpressionStatement", "src": "864:23:10" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1174, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1171, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1161, "src": "980:10:10", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "BinaryOperation", "operator": "<=", "rightExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 1172, "name": "_owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1159, "src": "994:7:10", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, "id": 1173, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "994:14:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "980:28:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 1170, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 2468, 2469 ], "referencedDeclaration": 2468, "src": "972:7:10", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 1175, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "972:37:10", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1176, "nodeType": "ExpressionStatement", "src": "972:37:10" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "id": 1180, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1178, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1161, "src": "1079:10:10", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "BinaryOperation", "operator": ">=", "rightExpression": { "argumentTypes": null, "hexValue": "31", "id": 1179, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1093:1:10", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" }, "value": "1" }, "src": "1079:15:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 1177, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 2468, 2469 ], "referencedDeclaration": 2468, "src": "1071:7:10", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 1181, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1071:24:10", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1182, "nodeType": "ExpressionStatement", "src": "1071:24:10" }, { "body": { "id": 1219, "nodeType": "Block", "src": "1187:246:10", "statements": [ { "assignments": [ 1195 ], "declarations": [ { "constant": false, "id": 1195, "name": "owner", "nodeType": "VariableDeclaration", "scope": 1230, "src": "1246:13:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1194, "name": "address", "nodeType": "ElementaryTypeName", "src": "1246:7:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "id": 1199, "initialValue": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1196, "name": "_owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1159, "src": "1262:7:10", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, "id": 1198, "indexExpression": { "argumentTypes": null, "id": 1197, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1184, "src": "1270:1:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "1262:10:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", "src": "1246:26:10" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 1203, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1201, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1195, "src": "1294:5:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, "hexValue": "30", "id": 1202, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1303:1:10", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "1294:10:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 1200, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 2468, 2469 ], "referencedDeclaration": 2468, "src": "1286:7:10", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 1204, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1286:19:10", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1205, "nodeType": "ExpressionStatement", "src": "1286:19:10" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1210, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "1371:15:10", "subExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1207, "name": "isOwner", "nodeType": "Identifier", "overloadedDeclarations": [ 1156 ], "referencedDeclaration": 1156, "src": "1372:7:10", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, "id": 1209, "indexExpression": { "argumentTypes": null, "id": 1208, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1195, "src": "1380:5:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "1372:14:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 1206, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 2468, 2469 ], "referencedDeclaration": 2468, "src": "1363:7:10", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 1211, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1363:24:10", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1212, "nodeType": "ExpressionStatement", "src": "1363:24:10" }, { "expression": { "argumentTypes": null, "id": 1217, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1213, "name": "isOwner", "nodeType": "Identifier", "overloadedDeclarations": [ 1156 ], "referencedDeclaration": 1156, "src": "1401:7:10", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, "id": 1215, "indexExpression": { "argumentTypes": null, "id": 1214, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1195, "src": "1409:5:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "1401:14:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", "id": 1216, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "1418:4:10", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "value": "true" }, "src": "1401:21:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 1218, "nodeType": "ExpressionStatement", "src": "1401:21:10" } ] }, "condition": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1190, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1187, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1184, "src": "1162:1:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 1188, "name": "_owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1159, "src": "1166:7:10", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, "id": 1189, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "1166:14:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "1162:18:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 1220, "initializationExpression": { "assignments": [ 1184 ], "declarations": [ { "constant": false, "id": 1184, "name": "i", "nodeType": "VariableDeclaration", "scope": 1230, "src": "1147:9:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1183, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1147:7:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "id": 1186, "initialValue": { "argumentTypes": null, "hexValue": "30", "id": 1185, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1159:1:10", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "nodeType": "VariableDeclarationStatement", "src": "1147:13:10" }, "loopExpression": { "expression": { "argumentTypes": null, "id": 1192, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": false, "src": "1182:3:10", "subExpression": { "argumentTypes": null, "id": 1191, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1184, "src": "1182:1:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 1193, "nodeType": "ExpressionStatement", "src": "1182:3:10" }, "nodeType": "ForStatement", "src": "1142:291:10" }, { "expression": { "argumentTypes": null, "id": 1223, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 1221, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1150, "src": "1442:6:10", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "id": 1222, "name": "_owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1159, "src": "1451:7:10", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, "src": "1442:16:10", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, "id": 1224, "nodeType": "ExpressionStatement", "src": "1442:16:10" }, { "expression": { "argumentTypes": null, "id": 1227, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 1225, "name": "threshold", "nodeType": "Identifier", "overloadedDeclarations": [ 1152 ], "referencedDeclaration": 1152, "src": "1468:9:10", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "id": 1226, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1161, "src": "1480:10:10", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "src": "1468:22:10", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "id": 1228, "nodeType": "ExpressionStatement", "src": "1468:22:10" } ] }, "documentation": "@dev Setup function sets initial storage of contract.\n @param _owners List of Safe owners.\n @param _threshold Number of required confirmations for a Safe transaction.", "id": 1230, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [], "name": "setupOwners", "nodeType": "FunctionDefinition", "parameters": { "id": 1162, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1159, "name": "_owners", "nodeType": "VariableDeclaration", "scope": 1230, "src": "672:17:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[]" }, "typeName": { "baseType": { "id": 1157, "name": "address", "nodeType": "ElementaryTypeName", "src": "672:7:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 1158, "length": null, "nodeType": "ArrayTypeName", "src": "672:9:10", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1161, "name": "_threshold", "nodeType": "VariableDeclaration", "scope": 1230, "src": "691:16:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "typeName": { "id": 1160, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "691:5:10", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "value": null, "visibility": "internal" } ], "src": "671:37:10" }, "payable": false, "returnParameters": { "id": 1163, "nodeType": "ParameterList", "parameters": [], "src": "730:0:10" }, "scope": 1438, "src": "651:846:10", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { "id": 1272, "nodeType": "Block", "src": "1826:342:10", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 1242, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1240, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1232, "src": "1885:5:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, "hexValue": "30", "id": 1241, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1894:1:10", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "1885:10:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 1239, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 2468, 2469 ], "referencedDeclaration": 2468, "src": "1877:7:10", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 1243, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1877:19:10", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1244, "nodeType": "ExpressionStatement", "src": "1877:19:10" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1249, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "1954:15:10", "subExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1246, "name": "isOwner", "nodeType": "Identifier", "overloadedDeclarations": [ 1156 ], "referencedDeclaration": 1156, "src": "1955:7:10", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, "id": 1248, "indexExpression": { "argumentTypes": null, "id": 1247, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1232, "src": "1963:5:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "1955:14:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 1245, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 2468, 2469 ], "referencedDeclaration": 2468, "src": "1946:7:10", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 1250, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1946:24:10", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1251, "nodeType": "ExpressionStatement", "src": "1946:24:10" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1255, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1232, "src": "1992:5:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "expression": { "argumentTypes": null, "id": 1252, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1150, "src": "1980:6:10", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, "id": 1254, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "push", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "1980:11:10", "typeDescriptions": { "typeIdentifier": "t_function_arraypush_nonpayable$_t_address_$returns$_t_uint256_$", "typeString": "function (address) returns (uint256)" } }, "id": 1256, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1980:18:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 1257, "nodeType": "ExpressionStatement", "src": "1980:18:10" }, { "expression": { "argumentTypes": null, "id": 1262, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1258, "name": "isOwner", "nodeType": "Identifier", "overloadedDeclarations": [ 1156 ], "referencedDeclaration": 1156, "src": "2008:7:10", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, "id": 1260, "indexExpression": { "argumentTypes": null, "id": 1259, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1232, "src": "2016:5:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "2008:14:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", "id": 1261, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "2025:4:10", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "value": "true" }, "src": "2008:21:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 1263, "nodeType": "ExpressionStatement", "src": "2008:21:10" }, { "condition": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "id": 1266, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1264, "name": "threshold", "nodeType": "Identifier", "overloadedDeclarations": [ 1152 ], "referencedDeclaration": 1152, "src": "2097:9:10", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, "id": 1265, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1234, "src": "2110:10:10", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "src": "2097:23:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, "id": 1271, "nodeType": "IfStatement", "src": "2093:68:10", "trueBody": { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1268, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1234, "src": "2150:10:10", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint8", "typeString": "uint8" } ], "id": 1267, "name": "changeThreshold", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1408, "src": "2134:15:10", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_uint8_$returns$__$", "typeString": "function (uint8)" } }, "id": 1269, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2134:27:10", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1270, "nodeType": "ExpressionStatement", "src": "2134:27:10" } } ] }, "documentation": "@dev Allows to add a new owner to the Safe and update the threshold at the same time.\n This can only be done via a Safe transaction.\n @param owner New owner address.\n @param _threshold New threshold.", "id": 1273, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, "id": 1237, "modifierName": { "argumentTypes": null, "id": 1236, "name": "authorized", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1558, "src": "1811:10:10", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", "src": "1811:10:10" } ], "name": "addOwner", "nodeType": "FunctionDefinition", "parameters": { "id": 1235, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1232, "name": "owner", "nodeType": "VariableDeclaration", "scope": 1273, "src": "1755:13:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1231, "name": "address", "nodeType": "ElementaryTypeName", "src": "1755:7:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1234, "name": "_threshold", "nodeType": "VariableDeclaration", "scope": 1273, "src": "1770:16:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "typeName": { "id": 1233, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "1770:5:10", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "value": null, "visibility": "internal" } ], "src": "1754:33:10" }, "payable": false, "returnParameters": { "id": 1238, "nodeType": "ParameterList", "parameters": [], "src": "1826:0:10" }, "scope": 1438, "src": "1737:431:10", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { "id": 1331, "nodeType": "Block", "src": "2611:487:10", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1290, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1288, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 1285, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1150, "src": "2706:6:10", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, "id": 1286, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "2706:13:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": { "argumentTypes": null, "hexValue": "31", "id": 1287, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2722:1:10", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" }, "value": "1" }, "src": "2706:17:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": ">=", "rightExpression": { "argumentTypes": null, "id": 1289, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1279, "src": "2727:10:10", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "src": "2706:31:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 1284, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 2468, 2469 ], "referencedDeclaration": 2468, "src": "2698:7:10", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 1291, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2698:40:10", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1292, "nodeType": "ExpressionStatement", "src": "2698:40:10" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 1298, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1294, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1150, "src": "2818:6:10", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, "id": 1296, "indexExpression": { "argumentTypes": null, "id": 1295, "name": "ownerIndex", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1275, "src": "2825:10:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "2818:18:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "id": 1297, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1277, "src": "2840:5:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "2818:27:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 1293, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 2468, 2469 ], "referencedDeclaration": 2468, "src": "2810:7:10", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 1299, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2810:36:10", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1300, "nodeType": "ExpressionStatement", "src": "2810:36:10" }, { "expression": { "argumentTypes": null, "id": 1305, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1301, "name": "isOwner", "nodeType": "Identifier", "overloadedDeclarations": [ 1156 ], "referencedDeclaration": 1156, "src": "2856:7:10", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, "id": 1303, "indexExpression": { "argumentTypes": null, "id": 1302, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1277, "src": "2864:5:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "2856:14:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "hexValue": "66616c7365", "id": 1304, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "2873:5:10", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "value": "false" }, "src": "2856:22:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 1306, "nodeType": "ExpressionStatement", "src": "2856:22:10" }, { "expression": { "argumentTypes": null, "id": 1316, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1307, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1150, "src": "2888:6:10", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, "id": 1309, "indexExpression": { "argumentTypes": null, "id": 1308, "name": "ownerIndex", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1275, "src": "2895:10:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "2888:18:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1310, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1150, "src": "2909:6:10", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, "id": 1315, "indexExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1314, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 1311, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1150, "src": "2916:6:10", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, "id": 1312, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "2916:13:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": { "argumentTypes": null, "hexValue": "31", "id": 1313, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2932:1:10", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" }, "value": "1" }, "src": "2916:17:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "2909:25:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "2888:46:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 1317, "nodeType": "ExpressionStatement", "src": "2888:46:10" }, { "expression": { "argumentTypes": null, "id": 1321, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "--", "prefix": false, "src": "2944:15:10", "subExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 1318, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1150, "src": "2944:6:10", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, "id": 1320, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "2944:13:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 1322, "nodeType": "ExpressionStatement", "src": "2944:15:10" }, { "condition": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "id": 1325, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1323, "name": "threshold", "nodeType": "Identifier", "overloadedDeclarations": [ 1152 ], "referencedDeclaration": 1152, "src": "3027:9:10", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, "id": 1324, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1279, "src": "3040:10:10", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "src": "3027:23:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, "id": 1330, "nodeType": "IfStatement", "src": "3023:68:10", "trueBody": { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1327, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1279, "src": "3080:10:10", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint8", "typeString": "uint8" } ], "id": 1326, "name": "changeThreshold", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1408, "src": "3064:15:10", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_uint8_$returns$__$", "typeString": "function (uint8)" } }, "id": 1328, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3064:27:10", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1329, "nodeType": "ExpressionStatement", "src": "3064:27:10" } } ] }, "documentation": "@dev Allows to remove an owner from the Safe and update the threshold at the same time.\n This can only be done via a Safe transaction.\n @param ownerIndex Array index position of owner address to be removed.\n @param owner Owner address to be removed.\n @param _threshold New threshold.", "id": 1332, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, "id": 1282, "modifierName": { "argumentTypes": null, "id": 1281, "name": "authorized", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1558, "src": "2596:10:10", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", "src": "2596:10:10" } ], "name": "removeOwner", "nodeType": "FunctionDefinition", "parameters": { "id": 1280, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1275, "name": "ownerIndex", "nodeType": "VariableDeclaration", "scope": 1332, "src": "2520:18:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1274, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2520:7:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1277, "name": "owner", "nodeType": "VariableDeclaration", "scope": 1332, "src": "2540:13:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1276, "name": "address", "nodeType": "ElementaryTypeName", "src": "2540:7:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1279, "name": "_threshold", "nodeType": "VariableDeclaration", "scope": 1332, "src": "2555:16:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "typeName": { "id": 1278, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "2555:5:10", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "value": null, "visibility": "internal" } ], "src": "2519:53:10" }, "payable": false, "returnParameters": { "id": 1283, "nodeType": "ParameterList", "parameters": [], "src": "2611:0:10" }, "scope": 1438, "src": "2499:599:10", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { "id": 1382, "nodeType": "Block", "src": "3538:382:10", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 1346, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1344, "name": "newOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1338, "src": "3597:8:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, "hexValue": "30", "id": 1345, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3609:1:10", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "3597:13:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 1343, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 2468, 2469 ], "referencedDeclaration": 2468, "src": "3589:7:10", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 1347, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3589:22:10", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1348, "nodeType": "ExpressionStatement", "src": "3589:22:10" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1353, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "3669:18:10", "subExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1350, "name": "isOwner", "nodeType": "Identifier", "overloadedDeclarations": [ 1156 ], "referencedDeclaration": 1156, "src": "3670:7:10", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, "id": 1352, "indexExpression": { "argumentTypes": null, "id": 1351, "name": "newOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1338, "src": "3678:8:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "3670:17:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 1349, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 2468, 2469 ], "referencedDeclaration": 2468, "src": "3661:7:10", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 1354, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3661:27:10", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1355, "nodeType": "ExpressionStatement", "src": "3661:27:10" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 1361, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1357, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1150, "src": "3768:6:10", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, "id": 1359, "indexExpression": { "argumentTypes": null, "id": 1358, "name": "oldOwnerIndex", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1334, "src": "3775:13:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "3768:21:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "id": 1360, "name": "oldOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1336, "src": "3793:8:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "3768:33:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 1356, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 2468, 2469 ], "referencedDeclaration": 2468, "src": "3760:7:10", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 1362, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3760:42:10", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1363, "nodeType": "ExpressionStatement", "src": "3760:42:10" }, { "expression": { "argumentTypes": null, "id": 1368, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1364, "name": "isOwner", "nodeType": "Identifier", "overloadedDeclarations": [ 1156 ], "referencedDeclaration": 1156, "src": "3812:7:10", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, "id": 1366, "indexExpression": { "argumentTypes": null, "id": 1365, "name": "oldOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1336, "src": "3820:8:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "3812:17:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "hexValue": "66616c7365", "id": 1367, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "3832:5:10", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "value": "false" }, "src": "3812:25:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 1369, "nodeType": "ExpressionStatement", "src": "3812:25:10" }, { "expression": { "argumentTypes": null, "id": 1374, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1370, "name": "isOwner", "nodeType": "Identifier", "overloadedDeclarations": [ 1156 ], "referencedDeclaration": 1156, "src": "3847:7:10", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, "id": 1372, "indexExpression": { "argumentTypes": null, "id": 1371, "name": "newOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1338, "src": "3855:8:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "3847:17:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", "id": 1373, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "3867:4:10", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "value": "true" }, "src": "3847:24:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 1375, "nodeType": "ExpressionStatement", "src": "3847:24:10" }, { "expression": { "argumentTypes": null, "id": 1380, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1376, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1150, "src": "3881:6:10", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, "id": 1378, "indexExpression": { "argumentTypes": null, "id": 1377, "name": "oldOwnerIndex", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1334, "src": "3888:13:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "3881:21:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "id": 1379, "name": "newOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1338, "src": "3905:8:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "3881:32:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 1381, "nodeType": "ExpressionStatement", "src": "3881:32:10" } ] }, "documentation": "@dev Allows to replace an owner from the Safe with another address.\n This can only be done via a Safe transaction.\n @param oldOwnerIndex Array index position of owner address to be replaced.\n @param oldOwner Owner address to be replaced.\n @param newOwner New owner address.", "id": 1383, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, "id": 1341, "modifierName": { "argumentTypes": null, "id": 1340, "name": "authorized", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1558, "src": "3523:10:10", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", "src": "3523:10:10" } ], "name": "replaceOwner", "nodeType": "FunctionDefinition", "parameters": { "id": 1339, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1334, "name": "oldOwnerIndex", "nodeType": "VariableDeclaration", "scope": 1383, "src": "3441:21:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1333, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3441:7:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1336, "name": "oldOwner", "nodeType": "VariableDeclaration", "scope": 1383, "src": "3464:16:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1335, "name": "address", "nodeType": "ElementaryTypeName", "src": "3464:7:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1338, "name": "newOwner", "nodeType": "VariableDeclaration", "scope": 1383, "src": "3482:16:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1337, "name": "address", "nodeType": "ElementaryTypeName", "src": "3482:7:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "src": "3440:59:10" }, "payable": false, "returnParameters": { "id": 1342, "nodeType": "ParameterList", "parameters": [], "src": "3538:0:10" }, "scope": 1438, "src": "3419:501:10", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { "id": 1407, "nodeType": "Block", "src": "4190:240:10", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1394, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1391, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1385, "src": "4277:10:10", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "BinaryOperation", "operator": "<=", "rightExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 1392, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1150, "src": "4291:6:10", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, "id": 1393, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "4291:13:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "4277:27:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 1390, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 2468, 2469 ], "referencedDeclaration": 2468, "src": "4269:7:10", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 1395, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4269:36:10", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1396, "nodeType": "ExpressionStatement", "src": "4269:36:10" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "id": 1400, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1398, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1385, "src": "4375:10:10", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "BinaryOperation", "operator": ">=", "rightExpression": { "argumentTypes": null, "hexValue": "31", "id": 1399, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4389:1:10", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" }, "value": "1" }, "src": "4375:15:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 1397, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 2468, 2469 ], "referencedDeclaration": 2468, "src": "4367:7:10", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 1401, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4367:24:10", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1402, "nodeType": "ExpressionStatement", "src": "4367:24:10" }, { "expression": { "argumentTypes": null, "id": 1405, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 1403, "name": "threshold", "nodeType": "Identifier", "overloadedDeclarations": [ 1152 ], "referencedDeclaration": 1152, "src": "4401:9:10", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "id": 1404, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1385, "src": "4413:10:10", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "src": "4401:22:10", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "id": 1406, "nodeType": "ExpressionStatement", "src": "4401:22:10" } ] }, "documentation": "@dev Allows to update the number of required confirmations by Safe owners.\n This can only be done via a Safe transaction.\n @param _threshold New threshold.", "id": 1408, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, "id": 1388, "modifierName": { "argumentTypes": null, "id": 1387, "name": "authorized", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1558, "src": "4175:10:10", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", "src": "4175:10:10" } ], "name": "changeThreshold", "nodeType": "FunctionDefinition", "parameters": { "id": 1386, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1385, "name": "_threshold", "nodeType": "VariableDeclaration", "scope": 1408, "src": "4134:16:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "typeName": { "id": 1384, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "4134:5:10", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "value": null, "visibility": "internal" } ], "src": "4133:18:10" }, "payable": false, "returnParameters": { "id": 1389, "nodeType": "ParameterList", "parameters": [], "src": "4190:0:10" }, "scope": 1438, "src": "4109:321:10", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { "id": 1415, "nodeType": "Block", "src": "4513:33:10", "statements": [ { "expression": { "argumentTypes": null, "id": 1413, "name": "threshold", "nodeType": "Identifier", "overloadedDeclarations": [ 1152 ], "referencedDeclaration": 1152, "src": "4530:9:10", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "functionReturnParameters": 1412, "id": 1414, "nodeType": "Return", "src": "4523:16:10" } ] }, "documentation": null, "id": 1416, "implemented": true, "isConstructor": false, "isDeclaredConst": true, "modifiers": [], "name": "threshold", "nodeType": "FunctionDefinition", "parameters": { "id": 1409, "nodeType": "ParameterList", "parameters": [], "src": "4454:2:10" }, "payable": false, "returnParameters": { "id": 1412, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1411, "name": "", "nodeType": "VariableDeclaration", "scope": 1416, "src": "4502:5:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "typeName": { "id": 1410, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "4502:5:10", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "value": null, "visibility": "internal" } ], "src": "4501:7:10" }, "scope": 1438, "src": "4436:110:10", "stateMutability": "view", "superFunction": null, "visibility": "public" }, { "body": { "id": 1427, "nodeType": "Block", "src": "4639:38:10", "statements": [ { "expression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1423, "name": "isOwner", "nodeType": "Identifier", "overloadedDeclarations": [ 1156 ], "referencedDeclaration": 1156, "src": "4656:7:10", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, "id": 1425, "indexExpression": { "argumentTypes": null, "id": 1424, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1418, "src": "4664:5:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "4656:14:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "functionReturnParameters": 1422, "id": 1426, "nodeType": "Return", "src": "4649:21:10" } ] }, "documentation": null, "id": 1428, "implemented": true, "isConstructor": false, "isDeclaredConst": true, "modifiers": [], "name": "isOwner", "nodeType": "FunctionDefinition", "parameters": { "id": 1419, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1418, "name": "owner", "nodeType": "VariableDeclaration", "scope": 1428, "src": "4569:13:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1417, "name": "address", "nodeType": "ElementaryTypeName", "src": "4569:7:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "src": "4568:15:10" }, "payable": false, "returnParameters": { "id": 1422, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1421, "name": "", "nodeType": "VariableDeclaration", "scope": 1428, "src": "4629:4:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "typeName": { "id": 1420, "name": "bool", "nodeType": "ElementaryTypeName", "src": "4629:4:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "value": null, "visibility": "internal" } ], "src": "4628:6:10" }, "scope": 1438, "src": "4552:125:10", "stateMutability": "view", "superFunction": null, "visibility": "public" }, { "body": { "id": 1436, "nodeType": "Block", "src": "4840:30:10", "statements": [ { "expression": { "argumentTypes": null, "id": 1434, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1150, "src": "4857:6:10", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, "functionReturnParameters": 1433, "id": 1435, "nodeType": "Return", "src": "4850:13:10" } ] }, "documentation": "@dev Returns array of owners.\n @return Array of Safe owners.", "id": 1437, "implemented": true, "isConstructor": false, "isDeclaredConst": true, "modifiers": [], "name": "getOwners", "nodeType": "FunctionDefinition", "parameters": { "id": 1429, "nodeType": "ParameterList", "parameters": [], "src": "4777:2:10" }, "payable": false, "returnParameters": { "id": 1433, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1432, "name": "", "nodeType": "VariableDeclaration", "scope": 1437, "src": "4825:9:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[]" }, "typeName": { "baseType": { "id": 1430, "name": "address", "nodeType": "ElementaryTypeName", "src": "4825:7:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 1431, "length": null, "nodeType": "ArrayTypeName", "src": "4825:9:10", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" } }, "value": null, "visibility": "internal" } ], "src": "4824:11:10" }, "scope": 1438, "src": "4759:111:10", "stateMutability": "view", "superFunction": null, "visibility": "public" } ], "scope": 1439, "src": "240:4632:10" } ], "src": "0:4873:10" }, "legacyAST": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/OwnerManager.sol", "exportedSymbols": { "OwnerManager": [ 1438 ] }, "id": 1439, "nodeType": "SourceUnit", "nodes": [ { "id": 1144, "literals": [ "solidity", "0.4", ".23" ], "nodeType": "PragmaDirective", "src": "0:23:10" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/SelfAuthorized.sol", "file": "./SelfAuthorized.sol", "id": 1145, "nodeType": "ImportDirective", "scope": 1439, "sourceUnit": 1560, "src": "24:30:10", "symbolAliases": [], "unitAlias": "" }, { "baseContracts": [ { "arguments": null, "baseName": { "contractScope": null, "id": 1146, "name": "SelfAuthorized", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 1559, "src": "265:14:10", "typeDescriptions": { "typeIdentifier": "t_contract$_SelfAuthorized_$1559", "typeString": "contract SelfAuthorized" } }, "id": 1147, "nodeType": "InheritanceSpecifier", "src": "265:14:10" } ], "contractDependencies": [ 1559 ], "contractKind": "contract", "documentation": "@title OwnerManager - Manages a set of owners and a threshold to perform actions.\n @author Stefan George - \n @author Richard Meissner - ", "fullyImplemented": true, "id": 1438, "linearizedBaseContracts": [ 1438, 1559 ], "name": "OwnerManager", "nodeType": "ContractDefinition", "nodes": [ { "constant": false, "id": 1150, "name": "owners", "nodeType": "VariableDeclaration", "scope": 1438, "src": "287:23:10", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[]" }, "typeName": { "baseType": { "id": 1148, "name": "address", "nodeType": "ElementaryTypeName", "src": "287:7:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 1149, "length": null, "nodeType": "ArrayTypeName", "src": "287:9:10", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" } }, "value": null, "visibility": "public" }, { "constant": false, "id": 1152, "name": "threshold", "nodeType": "VariableDeclaration", "scope": 1438, "src": "316:22:10", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "typeName": { "id": 1151, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "316:5:10", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "value": null, "visibility": "public" }, { "constant": false, "id": 1156, "name": "isOwner", "nodeType": "VariableDeclaration", "scope": 1438, "src": "415:40:10", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" }, "typeName": { "id": 1155, "keyType": { "id": 1153, "name": "address", "nodeType": "ElementaryTypeName", "src": "424:7:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Mapping", "src": "415:25:10", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" }, "valueType": { "id": 1154, "name": "bool", "nodeType": "ElementaryTypeName", "src": "435:4:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } }, "value": null, "visibility": "public" }, { "body": { "id": 1229, "nodeType": "Block", "src": "730:767:10", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "id": 1167, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1165, "name": "threshold", "nodeType": "Identifier", "overloadedDeclarations": [ 1152 ], "referencedDeclaration": 1152, "src": "872:9:10", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "hexValue": "30", "id": 1166, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "885:1:10", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "872:14:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 1164, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 2468, 2469 ], "referencedDeclaration": 2468, "src": "864:7:10", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 1168, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "864:23:10", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1169, "nodeType": "ExpressionStatement", "src": "864:23:10" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1174, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1171, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1161, "src": "980:10:10", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "BinaryOperation", "operator": "<=", "rightExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 1172, "name": "_owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1159, "src": "994:7:10", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, "id": 1173, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "994:14:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "980:28:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 1170, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 2468, 2469 ], "referencedDeclaration": 2468, "src": "972:7:10", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 1175, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "972:37:10", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1176, "nodeType": "ExpressionStatement", "src": "972:37:10" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "id": 1180, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1178, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1161, "src": "1079:10:10", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "BinaryOperation", "operator": ">=", "rightExpression": { "argumentTypes": null, "hexValue": "31", "id": 1179, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1093:1:10", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" }, "value": "1" }, "src": "1079:15:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 1177, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 2468, 2469 ], "referencedDeclaration": 2468, "src": "1071:7:10", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 1181, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1071:24:10", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1182, "nodeType": "ExpressionStatement", "src": "1071:24:10" }, { "body": { "id": 1219, "nodeType": "Block", "src": "1187:246:10", "statements": [ { "assignments": [ 1195 ], "declarations": [ { "constant": false, "id": 1195, "name": "owner", "nodeType": "VariableDeclaration", "scope": 1230, "src": "1246:13:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1194, "name": "address", "nodeType": "ElementaryTypeName", "src": "1246:7:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "id": 1199, "initialValue": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1196, "name": "_owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1159, "src": "1262:7:10", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, "id": 1198, "indexExpression": { "argumentTypes": null, "id": 1197, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1184, "src": "1270:1:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "1262:10:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", "src": "1246:26:10" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 1203, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1201, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1195, "src": "1294:5:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, "hexValue": "30", "id": 1202, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1303:1:10", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "1294:10:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 1200, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 2468, 2469 ], "referencedDeclaration": 2468, "src": "1286:7:10", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 1204, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1286:19:10", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1205, "nodeType": "ExpressionStatement", "src": "1286:19:10" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1210, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "1371:15:10", "subExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1207, "name": "isOwner", "nodeType": "Identifier", "overloadedDeclarations": [ 1156 ], "referencedDeclaration": 1156, "src": "1372:7:10", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, "id": 1209, "indexExpression": { "argumentTypes": null, "id": 1208, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1195, "src": "1380:5:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "1372:14:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 1206, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 2468, 2469 ], "referencedDeclaration": 2468, "src": "1363:7:10", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 1211, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1363:24:10", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1212, "nodeType": "ExpressionStatement", "src": "1363:24:10" }, { "expression": { "argumentTypes": null, "id": 1217, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1213, "name": "isOwner", "nodeType": "Identifier", "overloadedDeclarations": [ 1156 ], "referencedDeclaration": 1156, "src": "1401:7:10", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, "id": 1215, "indexExpression": { "argumentTypes": null, "id": 1214, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1195, "src": "1409:5:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "1401:14:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", "id": 1216, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "1418:4:10", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "value": "true" }, "src": "1401:21:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 1218, "nodeType": "ExpressionStatement", "src": "1401:21:10" } ] }, "condition": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1190, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1187, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1184, "src": "1162:1:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 1188, "name": "_owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1159, "src": "1166:7:10", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, "id": 1189, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "1166:14:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "1162:18:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 1220, "initializationExpression": { "assignments": [ 1184 ], "declarations": [ { "constant": false, "id": 1184, "name": "i", "nodeType": "VariableDeclaration", "scope": 1230, "src": "1147:9:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1183, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1147:7:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "id": 1186, "initialValue": { "argumentTypes": null, "hexValue": "30", "id": 1185, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1159:1:10", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "nodeType": "VariableDeclarationStatement", "src": "1147:13:10" }, "loopExpression": { "expression": { "argumentTypes": null, "id": 1192, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": false, "src": "1182:3:10", "subExpression": { "argumentTypes": null, "id": 1191, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1184, "src": "1182:1:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 1193, "nodeType": "ExpressionStatement", "src": "1182:3:10" }, "nodeType": "ForStatement", "src": "1142:291:10" }, { "expression": { "argumentTypes": null, "id": 1223, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 1221, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1150, "src": "1442:6:10", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "id": 1222, "name": "_owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1159, "src": "1451:7:10", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, "src": "1442:16:10", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, "id": 1224, "nodeType": "ExpressionStatement", "src": "1442:16:10" }, { "expression": { "argumentTypes": null, "id": 1227, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 1225, "name": "threshold", "nodeType": "Identifier", "overloadedDeclarations": [ 1152 ], "referencedDeclaration": 1152, "src": "1468:9:10", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "id": 1226, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1161, "src": "1480:10:10", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "src": "1468:22:10", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "id": 1228, "nodeType": "ExpressionStatement", "src": "1468:22:10" } ] }, "documentation": "@dev Setup function sets initial storage of contract.\n @param _owners List of Safe owners.\n @param _threshold Number of required confirmations for a Safe transaction.", "id": 1230, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [], "name": "setupOwners", "nodeType": "FunctionDefinition", "parameters": { "id": 1162, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1159, "name": "_owners", "nodeType": "VariableDeclaration", "scope": 1230, "src": "672:17:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[]" }, "typeName": { "baseType": { "id": 1157, "name": "address", "nodeType": "ElementaryTypeName", "src": "672:7:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 1158, "length": null, "nodeType": "ArrayTypeName", "src": "672:9:10", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1161, "name": "_threshold", "nodeType": "VariableDeclaration", "scope": 1230, "src": "691:16:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "typeName": { "id": 1160, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "691:5:10", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "value": null, "visibility": "internal" } ], "src": "671:37:10" }, "payable": false, "returnParameters": { "id": 1163, "nodeType": "ParameterList", "parameters": [], "src": "730:0:10" }, "scope": 1438, "src": "651:846:10", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { "id": 1272, "nodeType": "Block", "src": "1826:342:10", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 1242, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1240, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1232, "src": "1885:5:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, "hexValue": "30", "id": 1241, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1894:1:10", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "1885:10:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 1239, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 2468, 2469 ], "referencedDeclaration": 2468, "src": "1877:7:10", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 1243, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1877:19:10", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1244, "nodeType": "ExpressionStatement", "src": "1877:19:10" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1249, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "1954:15:10", "subExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1246, "name": "isOwner", "nodeType": "Identifier", "overloadedDeclarations": [ 1156 ], "referencedDeclaration": 1156, "src": "1955:7:10", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, "id": 1248, "indexExpression": { "argumentTypes": null, "id": 1247, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1232, "src": "1963:5:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "1955:14:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 1245, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 2468, 2469 ], "referencedDeclaration": 2468, "src": "1946:7:10", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 1250, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1946:24:10", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1251, "nodeType": "ExpressionStatement", "src": "1946:24:10" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1255, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1232, "src": "1992:5:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "expression": { "argumentTypes": null, "id": 1252, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1150, "src": "1980:6:10", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, "id": 1254, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "push", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "1980:11:10", "typeDescriptions": { "typeIdentifier": "t_function_arraypush_nonpayable$_t_address_$returns$_t_uint256_$", "typeString": "function (address) returns (uint256)" } }, "id": 1256, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1980:18:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 1257, "nodeType": "ExpressionStatement", "src": "1980:18:10" }, { "expression": { "argumentTypes": null, "id": 1262, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1258, "name": "isOwner", "nodeType": "Identifier", "overloadedDeclarations": [ 1156 ], "referencedDeclaration": 1156, "src": "2008:7:10", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, "id": 1260, "indexExpression": { "argumentTypes": null, "id": 1259, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1232, "src": "2016:5:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "2008:14:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", "id": 1261, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "2025:4:10", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "value": "true" }, "src": "2008:21:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 1263, "nodeType": "ExpressionStatement", "src": "2008:21:10" }, { "condition": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "id": 1266, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1264, "name": "threshold", "nodeType": "Identifier", "overloadedDeclarations": [ 1152 ], "referencedDeclaration": 1152, "src": "2097:9:10", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, "id": 1265, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1234, "src": "2110:10:10", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "src": "2097:23:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, "id": 1271, "nodeType": "IfStatement", "src": "2093:68:10", "trueBody": { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1268, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1234, "src": "2150:10:10", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint8", "typeString": "uint8" } ], "id": 1267, "name": "changeThreshold", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1408, "src": "2134:15:10", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_uint8_$returns$__$", "typeString": "function (uint8)" } }, "id": 1269, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2134:27:10", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1270, "nodeType": "ExpressionStatement", "src": "2134:27:10" } } ] }, "documentation": "@dev Allows to add a new owner to the Safe and update the threshold at the same time.\n This can only be done via a Safe transaction.\n @param owner New owner address.\n @param _threshold New threshold.", "id": 1273, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, "id": 1237, "modifierName": { "argumentTypes": null, "id": 1236, "name": "authorized", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1558, "src": "1811:10:10", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", "src": "1811:10:10" } ], "name": "addOwner", "nodeType": "FunctionDefinition", "parameters": { "id": 1235, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1232, "name": "owner", "nodeType": "VariableDeclaration", "scope": 1273, "src": "1755:13:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1231, "name": "address", "nodeType": "ElementaryTypeName", "src": "1755:7:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1234, "name": "_threshold", "nodeType": "VariableDeclaration", "scope": 1273, "src": "1770:16:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "typeName": { "id": 1233, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "1770:5:10", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "value": null, "visibility": "internal" } ], "src": "1754:33:10" }, "payable": false, "returnParameters": { "id": 1238, "nodeType": "ParameterList", "parameters": [], "src": "1826:0:10" }, "scope": 1438, "src": "1737:431:10", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { "id": 1331, "nodeType": "Block", "src": "2611:487:10", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1290, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1288, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 1285, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1150, "src": "2706:6:10", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, "id": 1286, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "2706:13:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": { "argumentTypes": null, "hexValue": "31", "id": 1287, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2722:1:10", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" }, "value": "1" }, "src": "2706:17:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": ">=", "rightExpression": { "argumentTypes": null, "id": 1289, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1279, "src": "2727:10:10", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "src": "2706:31:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 1284, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 2468, 2469 ], "referencedDeclaration": 2468, "src": "2698:7:10", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 1291, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2698:40:10", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1292, "nodeType": "ExpressionStatement", "src": "2698:40:10" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 1298, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1294, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1150, "src": "2818:6:10", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, "id": 1296, "indexExpression": { "argumentTypes": null, "id": 1295, "name": "ownerIndex", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1275, "src": "2825:10:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "2818:18:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "id": 1297, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1277, "src": "2840:5:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "2818:27:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 1293, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 2468, 2469 ], "referencedDeclaration": 2468, "src": "2810:7:10", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 1299, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2810:36:10", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1300, "nodeType": "ExpressionStatement", "src": "2810:36:10" }, { "expression": { "argumentTypes": null, "id": 1305, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1301, "name": "isOwner", "nodeType": "Identifier", "overloadedDeclarations": [ 1156 ], "referencedDeclaration": 1156, "src": "2856:7:10", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, "id": 1303, "indexExpression": { "argumentTypes": null, "id": 1302, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1277, "src": "2864:5:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "2856:14:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "hexValue": "66616c7365", "id": 1304, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "2873:5:10", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "value": "false" }, "src": "2856:22:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 1306, "nodeType": "ExpressionStatement", "src": "2856:22:10" }, { "expression": { "argumentTypes": null, "id": 1316, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1307, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1150, "src": "2888:6:10", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, "id": 1309, "indexExpression": { "argumentTypes": null, "id": 1308, "name": "ownerIndex", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1275, "src": "2895:10:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "2888:18:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1310, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1150, "src": "2909:6:10", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, "id": 1315, "indexExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1314, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 1311, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1150, "src": "2916:6:10", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, "id": 1312, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "2916:13:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": { "argumentTypes": null, "hexValue": "31", "id": 1313, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2932:1:10", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" }, "value": "1" }, "src": "2916:17:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "2909:25:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "2888:46:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 1317, "nodeType": "ExpressionStatement", "src": "2888:46:10" }, { "expression": { "argumentTypes": null, "id": 1321, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "--", "prefix": false, "src": "2944:15:10", "subExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 1318, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1150, "src": "2944:6:10", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, "id": 1320, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "2944:13:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 1322, "nodeType": "ExpressionStatement", "src": "2944:15:10" }, { "condition": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "id": 1325, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1323, "name": "threshold", "nodeType": "Identifier", "overloadedDeclarations": [ 1152 ], "referencedDeclaration": 1152, "src": "3027:9:10", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, "id": 1324, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1279, "src": "3040:10:10", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "src": "3027:23:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, "id": 1330, "nodeType": "IfStatement", "src": "3023:68:10", "trueBody": { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1327, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1279, "src": "3080:10:10", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint8", "typeString": "uint8" } ], "id": 1326, "name": "changeThreshold", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1408, "src": "3064:15:10", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_uint8_$returns$__$", "typeString": "function (uint8)" } }, "id": 1328, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3064:27:10", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1329, "nodeType": "ExpressionStatement", "src": "3064:27:10" } } ] }, "documentation": "@dev Allows to remove an owner from the Safe and update the threshold at the same time.\n This can only be done via a Safe transaction.\n @param ownerIndex Array index position of owner address to be removed.\n @param owner Owner address to be removed.\n @param _threshold New threshold.", "id": 1332, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, "id": 1282, "modifierName": { "argumentTypes": null, "id": 1281, "name": "authorized", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1558, "src": "2596:10:10", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", "src": "2596:10:10" } ], "name": "removeOwner", "nodeType": "FunctionDefinition", "parameters": { "id": 1280, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1275, "name": "ownerIndex", "nodeType": "VariableDeclaration", "scope": 1332, "src": "2520:18:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1274, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2520:7:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1277, "name": "owner", "nodeType": "VariableDeclaration", "scope": 1332, "src": "2540:13:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1276, "name": "address", "nodeType": "ElementaryTypeName", "src": "2540:7:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1279, "name": "_threshold", "nodeType": "VariableDeclaration", "scope": 1332, "src": "2555:16:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "typeName": { "id": 1278, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "2555:5:10", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "value": null, "visibility": "internal" } ], "src": "2519:53:10" }, "payable": false, "returnParameters": { "id": 1283, "nodeType": "ParameterList", "parameters": [], "src": "2611:0:10" }, "scope": 1438, "src": "2499:599:10", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { "id": 1382, "nodeType": "Block", "src": "3538:382:10", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 1346, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1344, "name": "newOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1338, "src": "3597:8:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, "hexValue": "30", "id": 1345, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3609:1:10", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "3597:13:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 1343, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 2468, 2469 ], "referencedDeclaration": 2468, "src": "3589:7:10", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 1347, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3589:22:10", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1348, "nodeType": "ExpressionStatement", "src": "3589:22:10" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1353, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "3669:18:10", "subExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1350, "name": "isOwner", "nodeType": "Identifier", "overloadedDeclarations": [ 1156 ], "referencedDeclaration": 1156, "src": "3670:7:10", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, "id": 1352, "indexExpression": { "argumentTypes": null, "id": 1351, "name": "newOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1338, "src": "3678:8:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "3670:17:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 1349, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 2468, 2469 ], "referencedDeclaration": 2468, "src": "3661:7:10", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 1354, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3661:27:10", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1355, "nodeType": "ExpressionStatement", "src": "3661:27:10" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 1361, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1357, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1150, "src": "3768:6:10", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, "id": 1359, "indexExpression": { "argumentTypes": null, "id": 1358, "name": "oldOwnerIndex", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1334, "src": "3775:13:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "3768:21:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "id": 1360, "name": "oldOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1336, "src": "3793:8:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "3768:33:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 1356, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 2468, 2469 ], "referencedDeclaration": 2468, "src": "3760:7:10", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 1362, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3760:42:10", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1363, "nodeType": "ExpressionStatement", "src": "3760:42:10" }, { "expression": { "argumentTypes": null, "id": 1368, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1364, "name": "isOwner", "nodeType": "Identifier", "overloadedDeclarations": [ 1156 ], "referencedDeclaration": 1156, "src": "3812:7:10", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, "id": 1366, "indexExpression": { "argumentTypes": null, "id": 1365, "name": "oldOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1336, "src": "3820:8:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "3812:17:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "hexValue": "66616c7365", "id": 1367, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "3832:5:10", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "value": "false" }, "src": "3812:25:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 1369, "nodeType": "ExpressionStatement", "src": "3812:25:10" }, { "expression": { "argumentTypes": null, "id": 1374, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1370, "name": "isOwner", "nodeType": "Identifier", "overloadedDeclarations": [ 1156 ], "referencedDeclaration": 1156, "src": "3847:7:10", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, "id": 1372, "indexExpression": { "argumentTypes": null, "id": 1371, "name": "newOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1338, "src": "3855:8:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "3847:17:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", "id": 1373, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "3867:4:10", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "value": "true" }, "src": "3847:24:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 1375, "nodeType": "ExpressionStatement", "src": "3847:24:10" }, { "expression": { "argumentTypes": null, "id": 1380, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1376, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1150, "src": "3881:6:10", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, "id": 1378, "indexExpression": { "argumentTypes": null, "id": 1377, "name": "oldOwnerIndex", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1334, "src": "3888:13:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "3881:21:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "id": 1379, "name": "newOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1338, "src": "3905:8:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "3881:32:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 1381, "nodeType": "ExpressionStatement", "src": "3881:32:10" } ] }, "documentation": "@dev Allows to replace an owner from the Safe with another address.\n This can only be done via a Safe transaction.\n @param oldOwnerIndex Array index position of owner address to be replaced.\n @param oldOwner Owner address to be replaced.\n @param newOwner New owner address.", "id": 1383, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, "id": 1341, "modifierName": { "argumentTypes": null, "id": 1340, "name": "authorized", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1558, "src": "3523:10:10", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", "src": "3523:10:10" } ], "name": "replaceOwner", "nodeType": "FunctionDefinition", "parameters": { "id": 1339, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1334, "name": "oldOwnerIndex", "nodeType": "VariableDeclaration", "scope": 1383, "src": "3441:21:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1333, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3441:7:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1336, "name": "oldOwner", "nodeType": "VariableDeclaration", "scope": 1383, "src": "3464:16:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1335, "name": "address", "nodeType": "ElementaryTypeName", "src": "3464:7:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1338, "name": "newOwner", "nodeType": "VariableDeclaration", "scope": 1383, "src": "3482:16:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1337, "name": "address", "nodeType": "ElementaryTypeName", "src": "3482:7:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "src": "3440:59:10" }, "payable": false, "returnParameters": { "id": 1342, "nodeType": "ParameterList", "parameters": [], "src": "3538:0:10" }, "scope": 1438, "src": "3419:501:10", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { "id": 1407, "nodeType": "Block", "src": "4190:240:10", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1394, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1391, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1385, "src": "4277:10:10", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "BinaryOperation", "operator": "<=", "rightExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 1392, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1150, "src": "4291:6:10", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, "id": 1393, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "4291:13:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "4277:27:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 1390, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 2468, 2469 ], "referencedDeclaration": 2468, "src": "4269:7:10", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 1395, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4269:36:10", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1396, "nodeType": "ExpressionStatement", "src": "4269:36:10" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "id": 1400, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1398, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1385, "src": "4375:10:10", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "BinaryOperation", "operator": ">=", "rightExpression": { "argumentTypes": null, "hexValue": "31", "id": 1399, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4389:1:10", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" }, "value": "1" }, "src": "4375:15:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 1397, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 2468, 2469 ], "referencedDeclaration": 2468, "src": "4367:7:10", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 1401, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4367:24:10", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1402, "nodeType": "ExpressionStatement", "src": "4367:24:10" }, { "expression": { "argumentTypes": null, "id": 1405, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 1403, "name": "threshold", "nodeType": "Identifier", "overloadedDeclarations": [ 1152 ], "referencedDeclaration": 1152, "src": "4401:9:10", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "id": 1404, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1385, "src": "4413:10:10", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "src": "4401:22:10", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "id": 1406, "nodeType": "ExpressionStatement", "src": "4401:22:10" } ] }, "documentation": "@dev Allows to update the number of required confirmations by Safe owners.\n This can only be done via a Safe transaction.\n @param _threshold New threshold.", "id": 1408, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, "id": 1388, "modifierName": { "argumentTypes": null, "id": 1387, "name": "authorized", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1558, "src": "4175:10:10", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", "src": "4175:10:10" } ], "name": "changeThreshold", "nodeType": "FunctionDefinition", "parameters": { "id": 1386, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1385, "name": "_threshold", "nodeType": "VariableDeclaration", "scope": 1408, "src": "4134:16:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "typeName": { "id": 1384, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "4134:5:10", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "value": null, "visibility": "internal" } ], "src": "4133:18:10" }, "payable": false, "returnParameters": { "id": 1389, "nodeType": "ParameterList", "parameters": [], "src": "4190:0:10" }, "scope": 1438, "src": "4109:321:10", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { "id": 1415, "nodeType": "Block", "src": "4513:33:10", "statements": [ { "expression": { "argumentTypes": null, "id": 1413, "name": "threshold", "nodeType": "Identifier", "overloadedDeclarations": [ 1152 ], "referencedDeclaration": 1152, "src": "4530:9:10", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "functionReturnParameters": 1412, "id": 1414, "nodeType": "Return", "src": "4523:16:10" } ] }, "documentation": null, "id": 1416, "implemented": true, "isConstructor": false, "isDeclaredConst": true, "modifiers": [], "name": "threshold", "nodeType": "FunctionDefinition", "parameters": { "id": 1409, "nodeType": "ParameterList", "parameters": [], "src": "4454:2:10" }, "payable": false, "returnParameters": { "id": 1412, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1411, "name": "", "nodeType": "VariableDeclaration", "scope": 1416, "src": "4502:5:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "typeName": { "id": 1410, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "4502:5:10", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "value": null, "visibility": "internal" } ], "src": "4501:7:10" }, "scope": 1438, "src": "4436:110:10", "stateMutability": "view", "superFunction": null, "visibility": "public" }, { "body": { "id": 1427, "nodeType": "Block", "src": "4639:38:10", "statements": [ { "expression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1423, "name": "isOwner", "nodeType": "Identifier", "overloadedDeclarations": [ 1156 ], "referencedDeclaration": 1156, "src": "4656:7:10", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, "id": 1425, "indexExpression": { "argumentTypes": null, "id": 1424, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1418, "src": "4664:5:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "4656:14:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "functionReturnParameters": 1422, "id": 1426, "nodeType": "Return", "src": "4649:21:10" } ] }, "documentation": null, "id": 1428, "implemented": true, "isConstructor": false, "isDeclaredConst": true, "modifiers": [], "name": "isOwner", "nodeType": "FunctionDefinition", "parameters": { "id": 1419, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1418, "name": "owner", "nodeType": "VariableDeclaration", "scope": 1428, "src": "4569:13:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1417, "name": "address", "nodeType": "ElementaryTypeName", "src": "4569:7:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "src": "4568:15:10" }, "payable": false, "returnParameters": { "id": 1422, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1421, "name": "", "nodeType": "VariableDeclaration", "scope": 1428, "src": "4629:4:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "typeName": { "id": 1420, "name": "bool", "nodeType": "ElementaryTypeName", "src": "4629:4:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "value": null, "visibility": "internal" } ], "src": "4628:6:10" }, "scope": 1438, "src": "4552:125:10", "stateMutability": "view", "superFunction": null, "visibility": "public" }, { "body": { "id": 1436, "nodeType": "Block", "src": "4840:30:10", "statements": [ { "expression": { "argumentTypes": null, "id": 1434, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1150, "src": "4857:6:10", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, "functionReturnParameters": 1433, "id": 1435, "nodeType": "Return", "src": "4850:13:10" } ] }, "documentation": "@dev Returns array of owners.\n @return Array of Safe owners.", "id": 1437, "implemented": true, "isConstructor": false, "isDeclaredConst": true, "modifiers": [], "name": "getOwners", "nodeType": "FunctionDefinition", "parameters": { "id": 1429, "nodeType": "ParameterList", "parameters": [], "src": "4777:2:10" }, "payable": false, "returnParameters": { "id": 1433, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1432, "name": "", "nodeType": "VariableDeclaration", "scope": 1437, "src": "4825:9:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[]" }, "typeName": { "baseType": { "id": 1430, "name": "address", "nodeType": "ElementaryTypeName", "src": "4825:7:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 1431, "length": null, "nodeType": "ArrayTypeName", "src": "4825:9:10", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" } }, "value": null, "visibility": "internal" } ], "src": "4824:11:10" }, "scope": 1438, "src": "4759:111:10", "stateMutability": "view", "superFunction": null, "visibility": "public" } ], "scope": 1439, "src": "240:4632:10" } ], "src": "0:4873:10" }, "compiler": { "name": "solc", "version": "0.4.23+commit.124ca40d.Emscripten.clang" }, "networks": {}, "schemaVersion": "2.0.0", "updatedAt": "2018-05-10T10:43:07.899Z" }