diff --git a/build/contracts/ERC20Interface.json b/build/contracts/ERC20Interface.json index 5604d1c..430edf2 100644 --- a/build/contracts/ERC20Interface.json +++ b/build/contracts/ERC20Interface.json @@ -4526,5 +4526,5 @@ }, "networks": {}, "schemaVersion": "1.0.1", - "updatedAt": "2017-11-14T17:12:01.951Z" + "updatedAt": "2017-11-15T15:21:22.268Z" } \ No newline at end of file diff --git a/build/contracts/Forwarder.json b/build/contracts/Forwarder.json index 20dbb9d..f537087 100644 --- a/build/contracts/Forwarder.json +++ b/build/contracts/Forwarder.json @@ -89,18 +89,18 @@ "type": "event" } ], - "bytecode": "0x6060604052341561000f57600080fd5b336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506105568061005e6000396000f300606060405260043610610056576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168062821de3146101555780633ef13367146101aa5780636b9f96ea146101e3575b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16346000366040518083838082843782019150509250505060006040518083038185876187965a03f19250505015156100c557600080fd5b7f69b31548dea9b3b707b4dff357d326e3e9348b24e7a6080a218a6edeeec48f9b3334600036604051808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200180602001828103825284848281815260200192508082843782019150509550505050505060405180910390a1005b341561016057600080fd5b6101686101f8565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156101b557600080fd5b6101e1600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061021d565b005b34156101ee57600080fd5b6101f66104b5565b005b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561027d57600080fd5b8392503091508273ffffffffffffffffffffffffffffffffffffffff166370a08231836000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b151561032657600080fd5b6102c65a03f1151561033757600080fd5b5050506040518051905090506000811415610351576104af565b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b151561041d57600080fd5b6102c65a03f1151561042e57600080fd5b50505060405180519050151561044357600080fd5b7f9401e4e79c19cbe2bd774cb70a94ba660e6718be1bac1298ab3b07f454a608218482604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a15b50505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff163160405160006040518083038185876187965a03f192505050151561052857600080fd5b5600a165627a7a72305820286a01961aba45ea3b39df4f0f3f22986702c2ae1b9a5ab5b0b167df15bd95560029", - "deployedBytecode": "0x606060405260043610610056576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168062821de3146101555780633ef13367146101aa5780636b9f96ea146101e3575b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16346000366040518083838082843782019150509250505060006040518083038185876187965a03f19250505015156100c557600080fd5b7f69b31548dea9b3b707b4dff357d326e3e9348b24e7a6080a218a6edeeec48f9b3334600036604051808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200180602001828103825284848281815260200192508082843782019150509550505050505060405180910390a1005b341561016057600080fd5b6101686101f8565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156101b557600080fd5b6101e1600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061021d565b005b34156101ee57600080fd5b6101f66104b5565b005b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561027d57600080fd5b8392503091508273ffffffffffffffffffffffffffffffffffffffff166370a08231836000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b151561032657600080fd5b6102c65a03f1151561033757600080fd5b5050506040518051905090506000811415610351576104af565b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b151561041d57600080fd5b6102c65a03f1151561042e57600080fd5b50505060405180519050151561044357600080fd5b7f9401e4e79c19cbe2bd774cb70a94ba660e6718be1bac1298ab3b07f454a608218482604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a15b50505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff163160405160006040518083038185876187965a03f192505050151561052857600080fd5b5600a165627a7a72305820286a01961aba45ea3b39df4f0f3f22986702c2ae1b9a5ab5b0b167df15bd95560029", - "sourceMap": "128:1908:3:-;;;554:58;;;;;;;;597:10;581:13;;:26;;;;;;;;;;;;;;;;;;128:1908;;;;;;", - "deployedSourceMap": "128:1908:3:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;976:13;;;;;;;;;;;:18;;1001:9;1012:8;;976:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;975:46;971:63;;;1029:5;;;971:63;1099:51;1118:10;1130:9;1141:8;;1099:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;128:1908;223:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1347:436;;;;;;;;;;;;;;;;;;;;;;;;;;;;1948:86;;;;;;;;;;;;;;223:28;;;;;;;;;;;;;:::o;1347:436::-;1415:23;1483:20;1525;781:13;;;;;;;;;;;767:27;;:10;:27;;;;763:53;;;804:5;;;763:53;1456:20;1415:62;;1514:4;1483:36;;1548:8;:18;;;1567:16;1548:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1525:59;;1614:1;1594:16;:21;1590:48;;;1625:7;;1590:48;1648:8;:17;;;1666:13;;;;;;;;;;;1681:16;1648:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1647:51;1643:77;;;1708:5;;;1643:77;1725:53;1739:20;1761:16;1725:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;821:1;1347:436;;;;:::o;1948:86::-;1976:13;;;;;;;;;;;:18;;2001:4;:12;;;1976:40;;;;;;;;;;;;;;;;;;;1975:41;1971:58;;;2024:5;;;1971:58;1948:86::o", - "source": "pragma solidity ^0.4.11;\nimport \"./ERC20Interface.sol\";\n/**\n * Contract that will forward any incoming Ether to its creator\n */\ncontract Forwarder {\n // Address to which any funds sent to this contract will be forwarded\n address public parentAddress;\n event ForwarderDeposited(address from, uint value, bytes data);\n\n event TokensFlushed(\n address tokenContractAddress, // The contract address of the token\n uint value // Amount of token sent\n );\n\n /**\n * Create the contract, and set the destination address to that of the creator\n */\n function Forwarder() {\n parentAddress = msg.sender;\n }\n\n /**\n * Modifier that will execute internal code block only if the sender is a parent of the forwarder contract\n */\n modifier onlyParent {\n if (msg.sender != parentAddress) {\n throw;\n }\n _;\n }\n\n /**\n * Default function; Gets called when Ether is deposited, and forwards it to the destination address\n */\n function() payable {\n if (!parentAddress.call.value(msg.value)(msg.data))\n throw;\n // Fire off the deposited event if we can forward it \n ForwarderDeposited(msg.sender, msg.value, msg.data);\n }\n\n /**\n * Execute a token transfer of the full balance from the forwarder token to the main wallet contract\n * @param tokenContractAddress the address of the erc20 token contract\n */\n function flushTokens(address tokenContractAddress) onlyParent {\n ERC20Interface instance = ERC20Interface(tokenContractAddress);\n var forwarderAddress = address(this);\n var forwarderBalance = instance.balanceOf(forwarderAddress);\n if (forwarderBalance == 0) {\n return;\n }\n if (!instance.transfer(parentAddress, forwarderBalance)) {\n throw;\n }\n TokensFlushed(tokenContractAddress, forwarderBalance);\n }\n\n /**\n * It is possible that funds were sent to this address before the contract was deployed.\n * We can flush those funds to the destination address.\n */\n function flush() {\n if (!parentAddress.call.value(this.balance)())\n throw;\n }\n}\n", + "bytecode": "0x6060604052341561000f57600080fd5b336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506105568061005e6000396000f300606060405260043610610056576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168062821de3146101555780633ef13367146101aa5780636b9f96ea146101e3575b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16346000366040518083838082843782019150509250505060006040518083038185876187965a03f19250505015156100c557600080fd5b7f69b31548dea9b3b707b4dff357d326e3e9348b24e7a6080a218a6edeeec48f9b3334600036604051808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200180602001828103825284848281815260200192508082843782019150509550505050505060405180910390a1005b341561016057600080fd5b6101686101f8565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156101b557600080fd5b6101e1600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061021d565b005b34156101ee57600080fd5b6101f66104b5565b005b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561027d57600080fd5b8392503091508273ffffffffffffffffffffffffffffffffffffffff166370a08231836000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b151561032657600080fd5b6102c65a03f1151561033757600080fd5b5050506040518051905090506000811415610351576104af565b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b151561041d57600080fd5b6102c65a03f1151561042e57600080fd5b50505060405180519050151561044357600080fd5b7f9401e4e79c19cbe2bd774cb70a94ba660e6718be1bac1298ab3b07f454a608218482604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a15b50505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff163160405160006040518083038185876187965a03f192505050151561052857600080fd5b5600a165627a7a72305820481f5b3456cf3fd8a7d5ad98e246bc195410a0cdad55b12c0e96e72b5220399c0029", + "deployedBytecode": "0x606060405260043610610056576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168062821de3146101555780633ef13367146101aa5780636b9f96ea146101e3575b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16346000366040518083838082843782019150509250505060006040518083038185876187965a03f19250505015156100c557600080fd5b7f69b31548dea9b3b707b4dff357d326e3e9348b24e7a6080a218a6edeeec48f9b3334600036604051808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200180602001828103825284848281815260200192508082843782019150509550505050505060405180910390a1005b341561016057600080fd5b6101686101f8565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156101b557600080fd5b6101e1600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061021d565b005b34156101ee57600080fd5b6101f66104b5565b005b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561027d57600080fd5b8392503091508273ffffffffffffffffffffffffffffffffffffffff166370a08231836000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b151561032657600080fd5b6102c65a03f1151561033757600080fd5b5050506040518051905090506000811415610351576104af565b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b151561041d57600080fd5b6102c65a03f1151561042e57600080fd5b50505060405180519050151561044357600080fd5b7f9401e4e79c19cbe2bd774cb70a94ba660e6718be1bac1298ab3b07f454a608218482604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a15b50505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff163160405160006040518083038185876187965a03f192505050151561052857600080fd5b5600a165627a7a72305820481f5b3456cf3fd8a7d5ad98e246bc195410a0cdad55b12c0e96e72b5220399c0029", + "sourceMap": "128:1908:1:-;;;554:58;;;;;;;;597:10;581:13;;:26;;;;;;;;;;;;;;;;;;128:1908;;;;;;", + "deployedSourceMap": "128:1908:1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;976:13;;;;;;;;;;;:18;;1001:9;1012:8;;976:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;975:46;971:63;;;1029:5;;;971:63;1099:51;1118:10;1130:9;1141:8;;1099:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;128:1908;223:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1347:436;;;;;;;;;;;;;;;;;;;;;;;;;;;;1948:86;;;;;;;;;;;;;;223:28;;;;;;;;;;;;;:::o;1347:436::-;1415:23;1483:20;1525;781:13;;;;;;;;;;;767:27;;:10;:27;;;;763:53;;;804:5;;;763:53;1456:20;1415:62;;1514:4;1483:36;;1548:8;:18;;;1567:16;1548:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1525:59;;1614:1;1594:16;:21;1590:48;;;1625:7;;1590:48;1648:8;:17;;;1666:13;;;;;;;;;;;1681:16;1648:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1647:51;1643:77;;;1708:5;;;1643:77;1725:53;1739:20;1761:16;1725:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;821:1;1347:436;;;;:::o;1948:86::-;1976:13;;;;;;;;;;;:18;;2001:4;:12;;;1976:40;;;;;;;;;;;;;;;;;;;1975:41;1971:58;;;2024:5;;;1971:58;1948:86::o", + "source": "pragma solidity ^0.4.18;\nimport \"./ERC20Interface.sol\";\n/**\n * Contract that will forward any incoming Ether to its creator\n */\ncontract Forwarder {\n // Address to which any funds sent to this contract will be forwarded\n address public parentAddress;\n event ForwarderDeposited(address from, uint value, bytes data);\n\n event TokensFlushed(\n address tokenContractAddress, // The contract address of the token\n uint value // Amount of token sent\n );\n\n /**\n * Create the contract, and set the destination address to that of the creator\n */\n function Forwarder() {\n parentAddress = msg.sender;\n }\n\n /**\n * Modifier that will execute internal code block only if the sender is a parent of the forwarder contract\n */\n modifier onlyParent {\n if (msg.sender != parentAddress) {\n throw;\n }\n _;\n }\n\n /**\n * Default function; Gets called when Ether is deposited, and forwards it to the destination address\n */\n function() payable {\n if (!parentAddress.call.value(msg.value)(msg.data))\n throw;\n // Fire off the deposited event if we can forward it \n ForwarderDeposited(msg.sender, msg.value, msg.data);\n }\n\n /**\n * Execute a token transfer of the full balance from the forwarder token to the main wallet contract\n * @param tokenContractAddress the address of the erc20 token contract\n */\n function flushTokens(address tokenContractAddress) onlyParent {\n ERC20Interface instance = ERC20Interface(tokenContractAddress);\n var forwarderAddress = address(this);\n var forwarderBalance = instance.balanceOf(forwarderAddress);\n if (forwarderBalance == 0) {\n return;\n }\n if (!instance.transfer(parentAddress, forwarderBalance)) {\n throw;\n }\n TokensFlushed(tokenContractAddress, forwarderBalance);\n }\n\n /**\n * It is possible that funds were sent to this address before the contract was deployed.\n * We can flush those funds to the destination address.\n */\n function flush() {\n if (!parentAddress.call.value(this.balance)())\n throw;\n }\n}\n", "sourcePath": "/home/bitgotto/src/BitGo/eth-multisig-v2/contracts/Forwarder.sol", "ast": { "attributes": { "absolutePath": "/home/bitgotto/src/BitGo/eth-multisig-v2/contracts/Forwarder.sol", "exportedSymbols": { "Forwarder": [ - 507 + 142 ] } }, @@ -111,27 +111,27 @@ "solidity", "^", "0.4", - ".11" + ".18" ] }, - "id": 385, + "id": 20, "name": "PragmaDirective", - "src": "0:24:3" + "src": "0:24:1" }, { "attributes": { "SourceUnit": 19, "absolutePath": "/home/bitgotto/src/BitGo/eth-multisig-v2/contracts/ERC20Interface.sol", "file": "./ERC20Interface.sol", - "scope": 508, + "scope": 143, "symbolAliases": [ null ], "unitAlias": "" }, - "id": 386, + "id": 21, "name": "ImportDirective", - "src": "25:30:3" + "src": "25:30:1" }, { "attributes": { @@ -145,17 +145,17 @@ "documentation": "Contract that will forward any incoming Ether to its creator", "fullyImplemented": true, "linearizedBaseContracts": [ - 507 + 142 ], "name": "Forwarder", - "scope": 508 + "scope": 143 }, "children": [ { "attributes": { "constant": false, "name": "parentAddress", - "scope": 507, + "scope": 142, "stateVariable": true, "storageLocation": "default", "type": "address", @@ -168,14 +168,14 @@ "name": "address", "type": "address" }, - "id": 387, + "id": 22, "name": "ElementaryTypeName", - "src": "223:7:3" + "src": "223:7:1" } ], - "id": 388, + "id": 23, "name": "VariableDeclaration", - "src": "223:28:3" + "src": "223:28:1" }, { "attributes": { @@ -190,7 +190,7 @@ "constant": false, "indexed": false, "name": "from", - "scope": 396, + "scope": 31, "stateVariable": false, "storageLocation": "default", "type": "address", @@ -203,21 +203,21 @@ "name": "address", "type": "address" }, - "id": 389, + "id": 24, "name": "ElementaryTypeName", - "src": "280:7:3" + "src": "280:7:1" } ], - "id": 390, + "id": 25, "name": "VariableDeclaration", - "src": "280:12:3" + "src": "280:12:1" }, { "attributes": { "constant": false, "indexed": false, "name": "value", - "scope": 396, + "scope": 31, "stateVariable": false, "storageLocation": "default", "type": "uint256", @@ -230,21 +230,21 @@ "name": "uint", "type": "uint256" }, - "id": 391, + "id": 26, "name": "ElementaryTypeName", - "src": "294:4:3" + "src": "294:4:1" } ], - "id": 392, + "id": 27, "name": "VariableDeclaration", - "src": "294:10:3" + "src": "294:10:1" }, { "attributes": { "constant": false, "indexed": false, "name": "data", - "scope": 396, + "scope": 31, "stateVariable": false, "storageLocation": "default", "type": "bytes memory", @@ -257,24 +257,24 @@ "name": "bytes", "type": "bytes storage pointer" }, - "id": 393, + "id": 28, "name": "ElementaryTypeName", - "src": "306:5:3" + "src": "306:5:1" } ], - "id": 394, + "id": 29, "name": "VariableDeclaration", - "src": "306:10:3" + "src": "306:10:1" } ], - "id": 395, + "id": 30, "name": "ParameterList", - "src": "279:38:3" + "src": "279:38:1" } ], - "id": 396, + "id": 31, "name": "EventDefinition", - "src": "255:63:3" + "src": "255:63:1" }, { "attributes": { @@ -289,7 +289,7 @@ "constant": false, "indexed": false, "name": "tokenContractAddress", - "scope": 402, + "scope": 37, "stateVariable": false, "storageLocation": "default", "type": "address", @@ -302,21 +302,21 @@ "name": "address", "type": "address" }, - "id": 397, + "id": 32, "name": "ElementaryTypeName", - "src": "347:7:3" + "src": "347:7:1" } ], - "id": 398, + "id": 33, "name": "VariableDeclaration", - "src": "347:28:3" + "src": "347:28:1" }, { "attributes": { "constant": false, "indexed": false, "name": "value", - "scope": 402, + "scope": 37, "stateVariable": false, "storageLocation": "default", "type": "uint256", @@ -329,24 +329,24 @@ "name": "uint", "type": "uint256" }, - "id": 399, + "id": 34, "name": "ElementaryTypeName", - "src": "418:4:3" + "src": "418:4:1" } ], - "id": 400, + "id": 35, "name": "VariableDeclaration", - "src": "418:10:3" + "src": "418:10:1" } ], - "id": 401, + "id": 36, "name": "ParameterList", - "src": "341:115:3" + "src": "341:115:1" } ], - "id": 402, + "id": 37, "name": "EventDefinition", - "src": "322:135:3" + "src": "322:135:1" }, { "attributes": { @@ -358,7 +358,7 @@ ], "name": "Forwarder", "payable": false, - "scope": 507, + "scope": 142, "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" @@ -371,9 +371,9 @@ ] }, "children": [], - "id": 403, + "id": 38, "name": "ParameterList", - "src": "572:2:3" + "src": "572:2:1" }, { "attributes": { @@ -382,9 +382,9 @@ ] }, "children": [], - "id": 404, + "id": 39, "name": "ParameterList", - "src": "575:0:3" + "src": "575:0:1" }, { "children": [ @@ -407,13 +407,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 388, + "referencedDeclaration": 23, "type": "address", "value": "parentAddress" }, - "id": 405, + "id": 40, "name": "Identifier", - "src": "581:13:3" + "src": "581:13:1" }, { "attributes": { @@ -433,38 +433,38 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1038, + "referencedDeclaration": 673, "type": "msg", "value": "msg" }, - "id": 406, + "id": 41, "name": "Identifier", - "src": "597:3:3" + "src": "597:3:1" } ], - "id": 407, + "id": 42, "name": "MemberAccess", - "src": "597:10:3" + "src": "597:10:1" } ], - "id": 408, + "id": 43, "name": "Assignment", - "src": "581:26:3" + "src": "581:26:1" } ], - "id": 409, + "id": 44, "name": "ExpressionStatement", - "src": "581:26:3" + "src": "581:26:1" } ], - "id": 410, + "id": 45, "name": "Block", - "src": "575:37:3" + "src": "575:37:1" } ], - "id": 411, + "id": 46, "name": "FunctionDefinition", - "src": "554:58:3" + "src": "554:58:1" }, { "attributes": { @@ -479,9 +479,9 @@ ] }, "children": [], - "id": 412, + "id": 47, "name": "ParameterList", - "src": "757:0:3" + "src": "757:0:1" }, { "children": [ @@ -523,18 +523,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1038, + "referencedDeclaration": 673, "type": "msg", "value": "msg" }, - "id": 413, + "id": 48, "name": "Identifier", - "src": "767:3:3" + "src": "767:3:1" } ], - "id": 414, + "id": 49, "name": "MemberAccess", - "src": "767:10:3" + "src": "767:10:1" }, { "attributes": { @@ -542,51 +542,51 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 388, + "referencedDeclaration": 23, "type": "address", "value": "parentAddress" }, - "id": 415, + "id": 50, "name": "Identifier", - "src": "781:13:3" + "src": "781:13:1" } ], - "id": 416, + "id": 51, "name": "BinaryOperation", - "src": "767:27:3" + "src": "767:27:1" }, { "children": [ { "children": [], - "id": 417, + "id": 52, "name": "Throw", - "src": "804:5:3" + "src": "804:5:1" } ], - "id": 418, + "id": 53, "name": "Block", - "src": "796:20:3" + "src": "796:20:1" } ], - "id": 419, + "id": 54, "name": "IfStatement", - "src": "763:53:3" + "src": "763:53:1" }, { - "id": 420, + "id": 55, "name": "PlaceholderStatement", - "src": "821:1:3" + "src": "821:1:1" } ], - "id": 421, + "id": 56, "name": "Block", - "src": "757:70:3" + "src": "757:70:1" } ], - "id": 422, + "id": 57, "name": "ModifierDefinition", - "src": "737:90:3" + "src": "737:90:1" }, { "attributes": { @@ -598,7 +598,7 @@ ], "name": "", "payable": true, - "scope": 507, + "scope": 142, "stateMutability": "payable", "superFunction": null, "visibility": "public" @@ -611,9 +611,9 @@ ] }, "children": [], - "id": 423, + "id": 58, "name": "ParameterList", - "src": "954:2:3" + "src": "954:2:1" }, { "attributes": { @@ -622,9 +622,9 @@ ] }, "children": [], - "id": 424, + "id": 59, "name": "ParameterList", - "src": "965:0:3" + "src": "965:0:1" }, { "children": [ @@ -715,23 +715,23 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 388, + "referencedDeclaration": 23, "type": "address", "value": "parentAddress" }, - "id": 425, + "id": 60, "name": "Identifier", - "src": "976:13:3" + "src": "976:13:1" } ], - "id": 426, + "id": 61, "name": "MemberAccess", - "src": "976:18:3" + "src": "976:18:1" } ], - "id": 427, + "id": 62, "name": "MemberAccess", - "src": "976:24:3" + "src": "976:24:1" }, { "attributes": { @@ -751,23 +751,23 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1038, + "referencedDeclaration": 673, "type": "msg", "value": "msg" }, - "id": 428, + "id": 63, "name": "Identifier", - "src": "1001:3:3" + "src": "1001:3:1" } ], - "id": 429, + "id": 64, "name": "MemberAccess", - "src": "1001:9:3" + "src": "1001:9:1" } ], - "id": 430, + "id": 65, "name": "FunctionCall", - "src": "976:35:3" + "src": "976:35:1" }, { "attributes": { @@ -787,39 +787,39 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1038, + "referencedDeclaration": 673, "type": "msg", "value": "msg" }, - "id": 431, + "id": 66, "name": "Identifier", - "src": "1012:3:3" + "src": "1012:3:1" } ], - "id": 432, + "id": 67, "name": "MemberAccess", - "src": "1012:8:3" + "src": "1012:8:1" } ], - "id": 433, + "id": 68, "name": "FunctionCall", - "src": "976:45:3" + "src": "976:45:1" } ], - "id": 434, + "id": 69, "name": "UnaryOperation", - "src": "975:46:3" + "src": "975:46:1" }, { "children": [], - "id": 435, + "id": 70, "name": "Throw", - "src": "1029:5:3" + "src": "1029:5:1" } ], - "id": 436, + "id": 71, "name": "IfStatement", - "src": "971:63:3" + "src": "971:63:1" }, { "children": [ @@ -857,13 +857,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 396, + "referencedDeclaration": 31, "type": "function (address,uint256,bytes memory)", "value": "ForwarderDeposited" }, - "id": 437, + "id": 72, "name": "Identifier", - "src": "1099:18:3" + "src": "1099:18:1" }, { "attributes": { @@ -883,18 +883,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1038, + "referencedDeclaration": 673, "type": "msg", "value": "msg" }, - "id": 438, + "id": 73, "name": "Identifier", - "src": "1118:3:3" + "src": "1118:3:1" } ], - "id": 439, + "id": 74, "name": "MemberAccess", - "src": "1118:10:3" + "src": "1118:10:1" }, { "attributes": { @@ -914,18 +914,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1038, + "referencedDeclaration": 673, "type": "msg", "value": "msg" }, - "id": 440, + "id": 75, "name": "Identifier", - "src": "1130:3:3" + "src": "1130:3:1" } ], - "id": 441, + "id": 76, "name": "MemberAccess", - "src": "1130:9:3" + "src": "1130:9:1" }, { "attributes": { @@ -945,38 +945,38 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1038, + "referencedDeclaration": 673, "type": "msg", "value": "msg" }, - "id": 442, + "id": 77, "name": "Identifier", - "src": "1141:3:3" + "src": "1141:3:1" } ], - "id": 443, + "id": 78, "name": "MemberAccess", - "src": "1141:8:3" + "src": "1141:8:1" } ], - "id": 444, + "id": 79, "name": "FunctionCall", - "src": "1099:51:3" + "src": "1099:51:1" } ], - "id": 445, + "id": 80, "name": "ExpressionStatement", - "src": "1099:51:3" + "src": "1099:51:1" } ], - "id": 446, + "id": 81, "name": "Block", - "src": "965:190:3" + "src": "965:190:1" } ], - "id": 447, + "id": 82, "name": "FunctionDefinition", - "src": "946:209:3" + "src": "946:209:1" }, { "attributes": { @@ -985,7 +985,7 @@ "isConstructor": false, "name": "flushTokens", "payable": false, - "scope": 507, + "scope": 142, "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" @@ -997,7 +997,7 @@ "attributes": { "constant": false, "name": "tokenContractAddress", - "scope": 492, + "scope": 127, "stateVariable": false, "storageLocation": "default", "type": "address", @@ -1010,19 +1010,19 @@ "name": "address", "type": "address" }, - "id": 448, + "id": 83, "name": "ElementaryTypeName", - "src": "1368:7:3" + "src": "1368:7:1" } ], - "id": 449, + "id": 84, "name": "VariableDeclaration", - "src": "1368:28:3" + "src": "1368:28:1" } ], - "id": 450, + "id": 85, "name": "ParameterList", - "src": "1367:30:3" + "src": "1367:30:1" }, { "attributes": { @@ -1031,9 +1031,9 @@ ] }, "children": [], - "id": 453, + "id": 88, "name": "ParameterList", - "src": "1409:0:3" + "src": "1409:0:1" }, { "attributes": { @@ -1048,25 +1048,25 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 422, + "referencedDeclaration": 57, "type": "modifier ()", "value": "onlyParent" }, - "id": 451, + "id": 86, "name": "Identifier", - "src": "1398:10:3" + "src": "1398:10:1" } ], - "id": 452, + "id": 87, "name": "ModifierInvocation", - "src": "1398:10:3" + "src": "1398:10:1" }, { "children": [ { "attributes": { "assignments": [ - 455 + 90 ] }, "children": [ @@ -1074,7 +1074,7 @@ "attributes": { "constant": false, "name": "instance", - "scope": 492, + "scope": 127, "stateVariable": false, "storageLocation": "default", "type": "contract ERC20Interface", @@ -1089,14 +1089,14 @@ "referencedDeclaration": 18, "type": "contract ERC20Interface" }, - "id": 454, + "id": 89, "name": "UserDefinedTypeName", - "src": "1415:14:3" + "src": "1415:14:1" } ], - "id": 455, + "id": 90, "name": "VariableDeclaration", - "src": "1415:23:3" + "src": "1415:23:1" }, { "attributes": { @@ -1128,9 +1128,9 @@ "type": "type(contract ERC20Interface)", "value": "ERC20Interface" }, - "id": 456, + "id": 91, "name": "Identifier", - "src": "1441:14:3" + "src": "1441:14:1" }, { "attributes": { @@ -1138,28 +1138,28 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 449, + "referencedDeclaration": 84, "type": "address", "value": "tokenContractAddress" }, - "id": 457, + "id": 92, "name": "Identifier", - "src": "1456:20:3" + "src": "1456:20:1" } ], - "id": 458, + "id": 93, "name": "FunctionCall", - "src": "1441:36:3" + "src": "1441:36:1" } ], - "id": 459, + "id": 94, "name": "VariableDeclarationStatement", - "src": "1415:62:3" + "src": "1415:62:1" }, { "attributes": { "assignments": [ - 460 + 95 ] }, "children": [ @@ -1167,7 +1167,7 @@ "attributes": { "constant": false, "name": "forwarderAddress", - "scope": 492, + "scope": 127, "stateVariable": false, "storageLocation": "default", "type": "address", @@ -1176,9 +1176,9 @@ "visibility": "internal" }, "children": [], - "id": 460, + "id": 95, "name": "VariableDeclaration", - "src": "1483:20:3" + "src": "1483:20:1" }, { "attributes": { @@ -1199,7 +1199,7 @@ "attributes": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_Forwarder_$507", + "typeIdentifier": "t_contract$_Forwarder_$142", "typeString": "contract Forwarder" } ], @@ -1210,9 +1210,9 @@ "type": "type(address)", "value": "address" }, - "id": 461, + "id": 96, "name": "ElementaryTypeNameExpression", - "src": "1506:7:3" + "src": "1506:7:1" }, { "attributes": { @@ -1220,28 +1220,28 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1057, + "referencedDeclaration": 686, "type": "contract Forwarder", "value": "this" }, - "id": 462, + "id": 97, "name": "Identifier", - "src": "1514:4:3" + "src": "1514:4:1" } ], - "id": 463, + "id": 98, "name": "FunctionCall", - "src": "1506:13:3" + "src": "1506:13:1" } ], - "id": 464, + "id": 99, "name": "VariableDeclarationStatement", - "src": "1483:36:3" + "src": "1483:36:1" }, { "attributes": { "assignments": [ - 465 + 100 ] }, "children": [ @@ -1249,7 +1249,7 @@ "attributes": { "constant": false, "name": "forwarderBalance", - "scope": 492, + "scope": 127, "stateVariable": false, "storageLocation": "default", "type": "uint256", @@ -1258,9 +1258,9 @@ "visibility": "internal" }, "children": [], - "id": 465, + "id": 100, "name": "VariableDeclaration", - "src": "1525:20:3" + "src": "1525:20:1" }, { "attributes": { @@ -1300,18 +1300,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 455, + "referencedDeclaration": 90, "type": "contract ERC20Interface", "value": "instance" }, - "id": 466, + "id": 101, "name": "Identifier", - "src": "1548:8:3" + "src": "1548:8:1" } ], - "id": 467, + "id": 102, "name": "MemberAccess", - "src": "1548:18:3" + "src": "1548:18:1" }, { "attributes": { @@ -1319,23 +1319,23 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 460, + "referencedDeclaration": 95, "type": "address", "value": "forwarderAddress" }, - "id": 468, + "id": 103, "name": "Identifier", - "src": "1567:16:3" + "src": "1567:16:1" } ], - "id": 469, + "id": 104, "name": "FunctionCall", - "src": "1548:36:3" + "src": "1548:36:1" } ], - "id": 470, + "id": 105, "name": "VariableDeclarationStatement", - "src": "1525:59:3" + "src": "1525:59:1" }, { "attributes": { @@ -1363,13 +1363,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 465, + "referencedDeclaration": 100, "type": "uint256", "value": "forwarderBalance" }, - "id": 471, + "id": 106, "name": "Identifier", - "src": "1594:16:3" + "src": "1594:16:1" }, { "attributes": { @@ -1384,35 +1384,35 @@ "type": "int_const 0", "value": "0" }, - "id": 472, + "id": 107, "name": "Literal", - "src": "1614:1:3" + "src": "1614:1:1" } ], - "id": 473, + "id": 108, "name": "BinaryOperation", - "src": "1594:21:3" + "src": "1594:21:1" }, { "children": [ { "attributes": { "expression": null, - "functionReturnParameters": 453 + "functionReturnParameters": 88 }, - "id": 474, + "id": 109, "name": "Return", - "src": "1625:7:3" + "src": "1625:7:1" } ], - "id": 475, + "id": 110, "name": "Block", - "src": "1617:21:3" + "src": "1617:21:1" } ], - "id": 476, + "id": 111, "name": "IfStatement", - "src": "1590:48:3" + "src": "1590:48:1" }, { "attributes": { @@ -1473,18 +1473,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 455, + "referencedDeclaration": 90, "type": "contract ERC20Interface", "value": "instance" }, - "id": 477, + "id": 112, "name": "Identifier", - "src": "1648:8:3" + "src": "1648:8:1" } ], - "id": 478, + "id": 113, "name": "MemberAccess", - "src": "1648:17:3" + "src": "1648:17:1" }, { "attributes": { @@ -1492,13 +1492,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 388, + "referencedDeclaration": 23, "type": "address", "value": "parentAddress" }, - "id": 479, + "id": 114, "name": "Identifier", - "src": "1666:13:3" + "src": "1666:13:1" }, { "attributes": { @@ -1506,41 +1506,41 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 465, + "referencedDeclaration": 100, "type": "uint256", "value": "forwarderBalance" }, - "id": 480, + "id": 115, "name": "Identifier", - "src": "1681:16:3" + "src": "1681:16:1" } ], - "id": 481, + "id": 116, "name": "FunctionCall", - "src": "1648:50:3" + "src": "1648:50:1" } ], - "id": 482, + "id": 117, "name": "UnaryOperation", - "src": "1647:51:3" + "src": "1647:51:1" }, { "children": [ { "children": [], - "id": 483, + "id": 118, "name": "Throw", - "src": "1708:5:3" + "src": "1708:5:1" } ], - "id": 484, + "id": 119, "name": "Block", - "src": "1700:20:3" + "src": "1700:20:1" } ], - "id": 485, + "id": 120, "name": "IfStatement", - "src": "1643:77:3" + "src": "1643:77:1" }, { "children": [ @@ -1574,13 +1574,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 402, + "referencedDeclaration": 37, "type": "function (address,uint256)", "value": "TokensFlushed" }, - "id": 486, + "id": 121, "name": "Identifier", - "src": "1725:13:3" + "src": "1725:13:1" }, { "attributes": { @@ -1588,13 +1588,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 449, + "referencedDeclaration": 84, "type": "address", "value": "tokenContractAddress" }, - "id": 487, + "id": 122, "name": "Identifier", - "src": "1739:20:3" + "src": "1739:20:1" }, { "attributes": { @@ -1602,33 +1602,33 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 465, + "referencedDeclaration": 100, "type": "uint256", "value": "forwarderBalance" }, - "id": 488, + "id": 123, "name": "Identifier", - "src": "1761:16:3" + "src": "1761:16:1" } ], - "id": 489, + "id": 124, "name": "FunctionCall", - "src": "1725:53:3" + "src": "1725:53:1" } ], - "id": 490, + "id": 125, "name": "ExpressionStatement", - "src": "1725:53:3" + "src": "1725:53:1" } ], - "id": 491, + "id": 126, "name": "Block", - "src": "1409:374:3" + "src": "1409:374:1" } ], - "id": 492, + "id": 127, "name": "FunctionDefinition", - "src": "1347:436:3" + "src": "1347:436:1" }, { "attributes": { @@ -1640,7 +1640,7 @@ ], "name": "flush", "payable": false, - "scope": 507, + "scope": 142, "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" @@ -1653,9 +1653,9 @@ ] }, "children": [], - "id": 493, + "id": 128, "name": "ParameterList", - "src": "1962:2:3" + "src": "1962:2:1" }, { "attributes": { @@ -1664,9 +1664,9 @@ ] }, "children": [], - "id": 494, + "id": 129, "name": "ParameterList", - "src": "1965:0:3" + "src": "1965:0:1" }, { "children": [ @@ -1757,23 +1757,23 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 388, + "referencedDeclaration": 23, "type": "address", "value": "parentAddress" }, - "id": 495, + "id": 130, "name": "Identifier", - "src": "1976:13:3" + "src": "1976:13:1" } ], - "id": 496, + "id": 131, "name": "MemberAccess", - "src": "1976:18:3" + "src": "1976:18:1" } ], - "id": 497, + "id": 132, "name": "MemberAccess", - "src": "1976:24:3" + "src": "1976:24:1" }, { "attributes": { @@ -1793,64 +1793,64 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1057, + "referencedDeclaration": 686, "type": "contract Forwarder", "value": "this" }, - "id": 498, + "id": 133, "name": "Identifier", - "src": "2001:4:3" + "src": "2001:4:1" } ], - "id": 499, + "id": 134, "name": "MemberAccess", - "src": "2001:12:3" + "src": "2001:12:1" } ], - "id": 500, + "id": 135, "name": "FunctionCall", - "src": "1976:38:3" + "src": "1976:38:1" } ], - "id": 501, + "id": 136, "name": "FunctionCall", - "src": "1976:40:3" + "src": "1976:40:1" } ], - "id": 502, + "id": 137, "name": "UnaryOperation", - "src": "1975:41:3" + "src": "1975:41:1" }, { "children": [], - "id": 503, + "id": 138, "name": "Throw", - "src": "2024:5:3" + "src": "2024:5:1" } ], - "id": 504, + "id": 139, "name": "IfStatement", - "src": "1971:58:3" + "src": "1971:58:1" } ], - "id": 505, + "id": 140, "name": "Block", - "src": "1965:69:3" + "src": "1965:69:1" } ], - "id": 506, + "id": 141, "name": "FunctionDefinition", - "src": "1948:86:3" + "src": "1948:86:1" } ], - "id": 507, + "id": 142, "name": "ContractDefinition", - "src": "128:1908:3" + "src": "128:1908:1" } ], - "id": 508, + "id": 143, "name": "SourceUnit", - "src": "0:2037:3" + "src": "0:2037:1" }, "compiler": { "name": "solc", @@ -1858,5 +1858,5 @@ }, "networks": {}, "schemaVersion": "1.0.1", - "updatedAt": "2017-11-14T17:11:41.235Z" + "updatedAt": "2017-11-15T15:21:22.266Z" } \ No newline at end of file diff --git a/build/contracts/WalletSimple.json b/build/contracts/WalletSimple.json index d119112..543331c 100644 --- a/build/contracts/WalletSimple.json +++ b/build/contracts/WalletSimple.json @@ -110,19 +110,19 @@ "constant": false, "inputs": [ { - "name": "operationHash", - "type": "bytes32" + "name": "signer", + "type": "address" }, { "name": "signature", "type": "bytes" } ], - "name": "recoverAddressFromSignature", + "name": "isSigner", "outputs": [ { "name": "", - "type": "address" + "type": "bool" } ], "payable": false, @@ -137,11 +137,11 @@ "type": "address" } ], - "name": "isSigner", + "name": "getNextSequenceId", "outputs": [ { "name": "", - "type": "bool" + "type": "uint256" } ], "payable": false, @@ -156,14 +156,19 @@ "type": "uint256" } ], - "name": "tryInsertSequenceId", - "outputs": [], + "name": "createForwarder", + "outputs": [ + { + "name": "", + "type": "address" + } + ], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { - "constant": false, + "constant": true, "inputs": [ { "name": "toAddress", @@ -186,21 +191,21 @@ "type": "uint256" } ], - "name": "verifyMultiSig", + "name": "safeMode", "outputs": [ { "name": "", - "type": "address" + "type": "bool" } ], "payable": false, - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function" }, { "constant": false, "inputs": [], - "name": "getNextSequenceId", + "name": "activateSafeMode", "outputs": [ { "name": "", @@ -213,7 +218,12 @@ }, { "constant": false, - "inputs": [], + "inputs": [ + { + "name": "allowedSigners", + "type": "address[]" + } + ], "name": "createForwarder", "outputs": [ { @@ -223,7 +233,7 @@ ], "payable": false, "stateMutability": "nonpayable", - "type": "function" + "type": "constructor" }, { "constant": true, @@ -235,41 +245,74 @@ "type": "bool" } ], - "payable": false, - "stateMutability": "view", - "type": "function" + "payable": true, + "stateMutability": "payable", + "type": "fallback" }, { "constant": false, - "inputs": [], - "name": "activateSafeMode", + "inputs": [ + { + "indexed": false, + "name": "from", + "type": "address" + }, + { + "indexed": false, + "name": "value", + "type": "uint256" + }, + { + "indexed": false, + "name": "data", + "type": "bytes" + } + ], + "name": "Deposited", "outputs": [], "payable": false, "stateMutability": "nonpayable", - "type": "function" + "type": "event", + "anonymous": false }, { "inputs": [ { - "name": "allowedSigners", - "type": "address[]" + "name": "msgSender", + "type": "address", + "indexed": false } ], "payable": false, "stateMutability": "nonpayable", - "type": "constructor" + "type": "event", + "anonymous": false, + "name": "SafeModeActivated" }, { "payable": true, "stateMutability": "payable", - "type": "fallback" - }, - { + "type": "event", "anonymous": false, "inputs": [ { "indexed": false, - "name": "from", + "name": "msgSender", + "type": "address" + }, + { + "indexed": false, + "name": "otherSigner", + "type": "address" + }, + { + "indexed": false, + "name": "operation", + "type": "bytes32" + }, + { + "indexed": false, + "name": "toAddress", "type": "address" }, { @@ -283,7 +326,43 @@ "type": "bytes" } ], - "name": "Deposited", + "name": "Transacted" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "name": "msgSender", + "type": "address" + }, + { + "indexed": false, + "name": "otherSigner", + "type": "address" + }, + { + "indexed": false, + "name": "operation", + "type": "bytes32" + }, + { + "indexed": false, + "name": "toAddress", + "type": "address" + }, + { + "indexed": false, + "name": "value", + "type": "uint256" + }, + { + "indexed": false, + "name": "tokenContractAddress", + "type": "address" + } + ], + "name": "TokenTransacted", "type": "event" }, { @@ -373,18 +452,18 @@ "type": "event" } ], - "bytecode": "0x60606040526000600160006101000a81548160ff021916908315150217905550341561002a57600080fd5b604051620018ca380380620018ca833981016040528080518201919050506003815114151561005857600080fd5b806000908051906020019061006e929190610075565b5050610142565b8280548282559060005260206000209081019282156100ee579160200282015b828111156100ed5782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555091602001919060010190610095565b5b5090506100fb91906100ff565b5090565b61013f91905b8082111561013b57600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905550600101610105565b5090565b90565b61177880620001526000396000f3006060604052600436106100ba576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680630dcd7a6c146101545780632079fb9a1461020a5780632da034091461026d57806339125215146102c557806345550a511461039f5780637df73e2714610449578063979f19761461049a5780639bf7ef63146104bd578063a0b7967b14610598578063a68a76cc146105c1578063abe3219c14610616578063fc0f392d14610643575b6000341115610152577f6e89d517057028190560dd200cf6bf792842861353d1173761dfa362e1c133f03334600036604051808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200180602001828103825284848281815260200192508082843782019150509550505050505060405180910390a15b005b341561015f57600080fd5b610208600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001909190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050610658565b005b341561021557600080fd5b61022b600480803590602001909190505061094c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561027857600080fd5b6102c3600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061098b565b005b34156102d057600080fd5b61039d600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001909190803590602001909190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050610a57565b005b34156103aa57600080fd5b61040760048080356000191690602001909190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050610d56565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561045457600080fd5b610480600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610e29565b604051808215151515815260200191505060405180910390f35b34156104a557600080fd5b6104bb6004808035906020019091905050610ecd565b005b34156104c857600080fd5b610556600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356000191690602001909190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091908035906020019091908035906020019091905050610fa4565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156105a357600080fd5b6105ab61104f565b6040518082815260200191505060405180910390f35b34156105cc57600080fd5b6105d46110a9565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561062157600080fd5b6106296110e2565b604051808215151515815260200191505060405180910390f35b341561064e57600080fd5b6106566110f5565b005b600080600061066633610e29565b151561067157600080fd5b888888888860405180807f45524332300000000000000000000000000000000000000000000000000000008152506005018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140183815260200182815260200195505050505050604051809103902092506107548984868989610fa4565b91508690508073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8a8a6000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b151561080457600080fd5b6102c65a03f1151561081557600080fd5b50505060405180519050151561082a57600080fd5b7ff3574a20a6defd7fc26917e8013cdd578db5eaa4d9a3eb54f2bb0983ad8ab40d3383858c8c8c604051808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200185600019166000191681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001965050505050505060405180910390a1505050505050505050565b60008181548110151561095b57fe5b90600052602060002090016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061099633610e29565b15156109a157600080fd5b8290508073ffffffffffffffffffffffffffffffffffffffff16633ef13367836040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b1515610a3e57600080fd5b6102c65a03f11515610a4f57600080fd5b505050505050565b600080610a6333610e29565b1515610a6e57600080fd5b878787878760405180807f45544845520000000000000000000000000000000000000000000000000000008152506005018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140185815260200184805190602001908083835b602083101515610b175780518252602082019150602081019050602083039250610af2565b6001836020036101000a0380198251168184511680821785525050505050509050018381526020018281526020019550505050505060405180910390209150610b638883858888610fa4565b90508773ffffffffffffffffffffffffffffffffffffffff16878760405180828051906020019080838360005b83811015610bab578082015181840152602081019050610b90565b50505050905090810190601f168015610bd85780820380516001836020036101000a031916815260200191505b5091505060006040518083038185876187965a03f1925050501515610bfc57600080fd5b7f59bed9ab5d78073465dd642a9e3e76dfdb7d53bcae9d09df7d0b8f5234d5a8063382848b8b8b604051808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200185600019166000191681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610d0d578082015181840152602081019050610cf2565b50505050905090810190601f168015610d3a5780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a15050505050505050565b60008060008060418551141515610d6c57600080fd5b602085015192506040850151915060ff6041860151169050601b8160ff161015610d9757601b810190505b600186828585604051600081526020016040526000604051602001526040518085600019166000191681526020018460ff1660ff16815260200183600019166000191681526020018260001916600019168152602001945050505050602060405160208103908084039060008661646e5a03f11515610e1557600080fd5b505060206040510351935050505092915050565b600080600090505b600080549050811015610ec2578273ffffffffffffffffffffffffffffffffffffffff16600082815481101515610e6457fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610eb55760019150610ec7565b8080600101915050610e31565b600091505b50919050565b600080610ed933610e29565b1515610ee457600080fd5b60009150600090505b600a811015610f4c5782600282600a81101515610f0657fe5b01541415610f1357600080fd5b600282600a81101515610f2257fe5b0154600282600a81101515610f3357fe5b01541015610f3f578091505b8080600101915050610eed565b600282600a81101515610f5b57fe5b0154831015610f6957600080fd5b612710600283600a81101515610f7b57fe5b015401831115610f8a57600080fd5b82600283600a81101515610f9a57fe5b0181905550505050565b600080610fb18686610d56565b9050600160009054906101000a900460ff168015610fd55750610fd387610e29565b155b15610fdf57600080fd5b42841015610fec57600080fd5b610ff583610ecd565b610ffe81610e29565b151561100957600080fd5b3373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561104257600080fd5b8091505095945050505050565b6000806000809150600090505b600a81101561109e5781600282600a8110151561107557fe5b0154111561109157600281600a8110151561108c57fe5b015491505b808060010191505061105c565b600182019250505090565b60006110b433610e29565b15156110bf57600080fd5b6110c7611188565b604051809103906000f08015156110dd57600080fd5b905090565b600160009054906101000a900460ff1681565b6110fe33610e29565b151561110957600080fd5b60018060006101000a81548160ff0219169083151502179055507f0909e8f76a4fd3e970f2eaef56c0ee6dfaf8b87c5b8d3f56ffce78e825a9115733604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b6040516105b4806111998339019056006060604052341561000f57600080fd5b336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506105568061005e6000396000f300606060405260043610610056576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168062821de3146101555780633ef13367146101aa5780636b9f96ea146101e3575b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16346000366040518083838082843782019150509250505060006040518083038185876187965a03f19250505015156100c557600080fd5b7f69b31548dea9b3b707b4dff357d326e3e9348b24e7a6080a218a6edeeec48f9b3334600036604051808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200180602001828103825284848281815260200192508082843782019150509550505050505060405180910390a1005b341561016057600080fd5b6101686101f8565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156101b557600080fd5b6101e1600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061021d565b005b34156101ee57600080fd5b6101f66104b5565b005b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561027d57600080fd5b8392503091508273ffffffffffffffffffffffffffffffffffffffff166370a08231836000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b151561032657600080fd5b6102c65a03f1151561033757600080fd5b5050506040518051905090506000811415610351576104af565b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b151561041d57600080fd5b6102c65a03f1151561042e57600080fd5b50505060405180519050151561044357600080fd5b7f9401e4e79c19cbe2bd774cb70a94ba660e6718be1bac1298ab3b07f454a608218482604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a15b50505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff163160405160006040518083038185876187965a03f192505050151561052857600080fd5b5600a165627a7a72305820286a01961aba45ea3b39df4f0f3f22986702c2ae1b9a5ab5b0b167df15bd95560029a165627a7a723058206fc9b1c4cd5a620e2e5dab04eba95b1cc956dc2b35b34ac9d95251a6444461a00029", - "deployedBytecode": "0x6060604052600436106100ba576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680630dcd7a6c146101545780632079fb9a1461020a5780632da034091461026d57806339125215146102c557806345550a511461039f5780637df73e2714610449578063979f19761461049a5780639bf7ef63146104bd578063a0b7967b14610598578063a68a76cc146105c1578063abe3219c14610616578063fc0f392d14610643575b6000341115610152577f6e89d517057028190560dd200cf6bf792842861353d1173761dfa362e1c133f03334600036604051808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200180602001828103825284848281815260200192508082843782019150509550505050505060405180910390a15b005b341561015f57600080fd5b610208600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001909190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050610658565b005b341561021557600080fd5b61022b600480803590602001909190505061094c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561027857600080fd5b6102c3600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061098b565b005b34156102d057600080fd5b61039d600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001909190803590602001909190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050610a57565b005b34156103aa57600080fd5b61040760048080356000191690602001909190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050610d56565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561045457600080fd5b610480600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610e29565b604051808215151515815260200191505060405180910390f35b34156104a557600080fd5b6104bb6004808035906020019091905050610ecd565b005b34156104c857600080fd5b610556600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356000191690602001909190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091908035906020019091908035906020019091905050610fa4565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156105a357600080fd5b6105ab61104f565b6040518082815260200191505060405180910390f35b34156105cc57600080fd5b6105d46110a9565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561062157600080fd5b6106296110e2565b604051808215151515815260200191505060405180910390f35b341561064e57600080fd5b6106566110f5565b005b600080600061066633610e29565b151561067157600080fd5b888888888860405180807f45524332300000000000000000000000000000000000000000000000000000008152506005018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140183815260200182815260200195505050505050604051809103902092506107548984868989610fa4565b91508690508073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8a8a6000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b151561080457600080fd5b6102c65a03f1151561081557600080fd5b50505060405180519050151561082a57600080fd5b7ff3574a20a6defd7fc26917e8013cdd578db5eaa4d9a3eb54f2bb0983ad8ab40d3383858c8c8c604051808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200185600019166000191681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001965050505050505060405180910390a1505050505050505050565b60008181548110151561095b57fe5b90600052602060002090016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061099633610e29565b15156109a157600080fd5b8290508073ffffffffffffffffffffffffffffffffffffffff16633ef13367836040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b1515610a3e57600080fd5b6102c65a03f11515610a4f57600080fd5b505050505050565b600080610a6333610e29565b1515610a6e57600080fd5b878787878760405180807f45544845520000000000000000000000000000000000000000000000000000008152506005018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140185815260200184805190602001908083835b602083101515610b175780518252602082019150602081019050602083039250610af2565b6001836020036101000a0380198251168184511680821785525050505050509050018381526020018281526020019550505050505060405180910390209150610b638883858888610fa4565b90508773ffffffffffffffffffffffffffffffffffffffff16878760405180828051906020019080838360005b83811015610bab578082015181840152602081019050610b90565b50505050905090810190601f168015610bd85780820380516001836020036101000a031916815260200191505b5091505060006040518083038185876187965a03f1925050501515610bfc57600080fd5b7f59bed9ab5d78073465dd642a9e3e76dfdb7d53bcae9d09df7d0b8f5234d5a8063382848b8b8b604051808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200185600019166000191681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610d0d578082015181840152602081019050610cf2565b50505050905090810190601f168015610d3a5780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a15050505050505050565b60008060008060418551141515610d6c57600080fd5b602085015192506040850151915060ff6041860151169050601b8160ff161015610d9757601b810190505b600186828585604051600081526020016040526000604051602001526040518085600019166000191681526020018460ff1660ff16815260200183600019166000191681526020018260001916600019168152602001945050505050602060405160208103908084039060008661646e5a03f11515610e1557600080fd5b505060206040510351935050505092915050565b600080600090505b600080549050811015610ec2578273ffffffffffffffffffffffffffffffffffffffff16600082815481101515610e6457fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610eb55760019150610ec7565b8080600101915050610e31565b600091505b50919050565b600080610ed933610e29565b1515610ee457600080fd5b60009150600090505b600a811015610f4c5782600282600a81101515610f0657fe5b01541415610f1357600080fd5b600282600a81101515610f2257fe5b0154600282600a81101515610f3357fe5b01541015610f3f578091505b8080600101915050610eed565b600282600a81101515610f5b57fe5b0154831015610f6957600080fd5b612710600283600a81101515610f7b57fe5b015401831115610f8a57600080fd5b82600283600a81101515610f9a57fe5b0181905550505050565b600080610fb18686610d56565b9050600160009054906101000a900460ff168015610fd55750610fd387610e29565b155b15610fdf57600080fd5b42841015610fec57600080fd5b610ff583610ecd565b610ffe81610e29565b151561100957600080fd5b3373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561104257600080fd5b8091505095945050505050565b6000806000809150600090505b600a81101561109e5781600282600a8110151561107557fe5b0154111561109157600281600a8110151561108c57fe5b015491505b808060010191505061105c565b600182019250505090565b60006110b433610e29565b15156110bf57600080fd5b6110c7611188565b604051809103906000f08015156110dd57600080fd5b905090565b600160009054906101000a900460ff1681565b6110fe33610e29565b151561110957600080fd5b60018060006101000a81548160ff0219169083151502179055507f0909e8f76a4fd3e970f2eaef56c0ee6dfaf8b87c5b8d3f56ffce78e825a9115733604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b6040516105b4806111998339019056006060604052341561000f57600080fd5b336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506105568061005e6000396000f300606060405260043610610056576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168062821de3146101555780633ef13367146101aa5780636b9f96ea146101e3575b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16346000366040518083838082843782019150509250505060006040518083038185876187965a03f19250505015156100c557600080fd5b7f69b31548dea9b3b707b4dff357d326e3e9348b24e7a6080a218a6edeeec48f9b3334600036604051808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200180602001828103825284848281815260200192508082843782019150509550505050505060405180910390a1005b341561016057600080fd5b6101686101f8565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156101b557600080fd5b6101e1600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061021d565b005b34156101ee57600080fd5b6101f66104b5565b005b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561027d57600080fd5b8392503091508273ffffffffffffffffffffffffffffffffffffffff166370a08231836000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b151561032657600080fd5b6102c65a03f1151561033757600080fd5b5050506040518051905090506000811415610351576104af565b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b151561041d57600080fd5b6102c65a03f1151561042e57600080fd5b50505060405180519050151561044357600080fd5b7f9401e4e79c19cbe2bd774cb70a94ba660e6718be1bac1298ab3b07f454a608218482604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a15b50505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff163160405160006040518083038185876187965a03f192505050151561052857600080fd5b5600a165627a7a72305820286a01961aba45ea3b39df4f0f3f22986702c2ae1b9a5ab5b0b167df15bd95560029a165627a7a723058206fc9b1c4cd5a620e2e5dab04eba95b1cc956dc2b35b34ac9d95251a6444461a00029", - "sourceMap": "330:11223:4:-;;;1607:5;1584:28;;;;;;;;;;;;;;;;;;;;2353:175;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2436:1;2411:14;:21;:26;;2407:87;;;2482:5;;;2407:87;2509:14;2499:7;:24;;;;;;;;;;;;:::i;:::-;;2353:175;330:11223;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;", - "deployedSourceMap": "330:11223:4:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2658:1;2646:9;:13;2642:132;;;2725:42;2735:10;2747:9;2758:8;;2725:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2642:132;330:11223;5387:636;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1495:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6346:210;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3900:577;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9125:613;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8549:242;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10097:993;;;;;;;;;;;;;;;;;;;;;;;;;;7187:955;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11261:290;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2933:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1584:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8276:100;;;;;;;;;;;;;;5387:636;5574:17;5682:15;5786:23;1925:20;1934:10;1925:8;:20::i;:::-;1924:21;1920:47;;;1955:5;;;1920:47;5608:9;5619:5;5626:20;5648:10;5660;5594:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5574:97;;5700:75;5715:9;5726:13;5741:9;5752:10;5764;5700:14;:75::i;:::-;5682:93;;5827:20;5786:62;;5859:8;:17;;;5877:9;5888:5;5859:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5858:36;5854:64;;;5906:5;;;5854:64;5923:95;5939:10;5951:11;5964:13;5979:9;5990:5;5997:20;5923:95;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5387:636;;;;;;;;;:::o;1495:24::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;6346:210::-;6453:19;1925:20;1934:10;1925:8;:20::i;:::-;1924:21;1920:47;;;1955:5;;;1920:47;6485:16;6453:49;;6508:9;:21;;;6530:20;6508:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6346:210;;;:::o;3900:577::-;4064:17;4156:15;1925:20;1934:10;1925:8;:20::i;:::-;1924:21;1920:47;;;1955:5;;;1920:47;4098:9;4109:5;4116:4;4122:10;4134;4084:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:2;51:6;36:153;;;182:3;176:5;171:3;164:6;98:2;93:3;89;82:19;;123:2;118:3;114;107:19;;148:2;143:3;139;132:19;;36:153;;;274:1;267:3;263:2;259:3;254;250;246;315:4;311:3;305;299:5;295:3;356:4;350:3;344:5;340:3;389:7;380;377:2;372:3;365:6;3:399;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4064:81:4;;4174:75;4189:9;4200:13;4215:9;4226:10;4238;4174:14;:75::i;:::-;4156:93;;4299:9;:14;;4320:5;4327:4;4299:33;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4297:36:4;4293:100;;;4381:5;;;4293:100;4398:74;4409:10;4421:11;4434:13;4449:9;4460:5;4467:4;4398:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3900:577:4;;;;;;;;:::o;9125:613::-;9211:7;9374:9;9389;9404:7;9250:2;9230:9;:16;:22;;9226:48;;;9262:5;;;9226:48;9460:2;9449:9;9445:3;9439:5;9434:30;;9497:2;9486:9;9482:3;9476:5;9471:30;;9544:3;9538:2;9527:9;9523:3;9517:5;9513:3;9508:40;;9567:2;9563:1;:6;;;9559:129;;;9584:2;9579:7;;;;9559:129;9700:33;9710:13;9725:1;9728;9731;9700:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9693:40;;9125:613;;;;;;;:::o;8549:242::-;8592:4;8662:6;8671:1;8662:10;;8657:112;8678:7;:14;;;;8674:1;:18;8657:112;;;8725:6;8711:20;;:7;8719:1;8711:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;:20;;;8707:56;;;8750:4;8743:11;;;;8707:56;8694:3;;;;;;;8657:112;;;8781:5;8774:12;;8549:242;;;;;:::o;10097:993::-;10224:21;10260:6;1925:20;1934:10;1925:8;:20::i;:::-;1924:21;1920:47;;;1955:5;;;1920:47;10248:1;10224:25;;10269:1;10260:10;;10255:299;1735:2;10272:1;:27;10255:299;;;10342:10;10318:17;10336:1;10318:20;;;;;;;;;;;:34;10314:124;;;10424:5;;;10314:124;10472:17;10490:16;10472:35;;;;;;;;;;;10449:17;10467:1;10449:20;;;;;;;;;;;:58;10445:103;;;10538:1;10519:20;;10445:103;10301:3;;;;;;;10255:299;;;10576:17;10594:16;10576:35;;;;;;;;;;;10563:10;:48;10559:219;;;10766:5;;;10559:219;10839:5;10801:17;10819:16;10801:35;;;;;;;;;;;:43;10787:10;:58;10783:249;;;11020:5;;;10783:249;11075:10;11037:17;11055:16;11037:35;;;;;;;;;;:48;;;;10097:993;;;:::o;7187:955::-;7313:7;7329:15;7347:53;7375:13;7390:9;7347:27;:53::i;:::-;7329:71;;7499:8;;;;;;;;;;;:32;;;;;7512:19;7521:9;7512:8;:19::i;:::-;7511:20;7499:32;7495:132;;;7615:5;;;7495:132;7700:15;7687:10;:28;7683:83;;;7754:5;;;7683:83;7852:31;7872:10;7852:19;:31::i;:::-;7895:21;7904:11;7895:8;:21::i;:::-;7894:22;7890:127;;;8005:5;;;7890:127;8041:10;8026:25;;:11;:25;;;8022:91;;;8101:5;;;8022:91;8126:11;8119:18;;7187:955;;;;;;;;:::o;11261:290::-;11299:4;11311:22;11348:6;11336:1;11311:26;;11357:1;11348:10;;11343:170;1735:2;11360:1;:27;11343:170;;;11429:17;11406;11424:1;11406:20;;;;;;;;;;;:40;11402:105;;;11478:17;11496:1;11478:20;;;;;;;;;;;11458:40;;11402:105;11389:3;;;;;;;11343:170;;;11545:1;11525:17;:21;11518:28;;11261:290;;;:::o;2933:89::-;2980:7;1925:20;1934:10;1925:8;:20::i;:::-;1924:21;1920:47;;;1955:5;;;1920:47;3002:15;;:::i;:::-;;;;;;;;;;;;;;;;;;2995:22;;2933:89;:::o;1584:28::-;;;;;;;;;;;;;:::o;8276:100::-;1925:20;1934:10;1925:8;:20::i;:::-;1924:21;1920:47;;;1955:5;;;1920:47;8332:4;8321:8;;:15;;;;;;;;;;;;;;;;;;8342:29;8360:10;8342:29;;;;;;;;;;;;;;;;;;;;;;8276:100::o;330:11223::-;;;;;;;;;;:::o", - "source": "pragma solidity ^0.4.11;\nimport \"./Forwarder.sol\";\nimport \"./ERC20Interface.sol\";\n/**\n * Basic multi-signer wallet designed for use in a co-signing environment where 2 signatures are required to move funds.\n * Typically used in a 2-of-3 signing configuration. Uses ecrecover to allow for 2 signatures in a single transaction.\n */\ncontract WalletSimple {\n // Events\n event Deposited(address from, uint value, bytes data);\n event SafeModeActivated(address msgSender);\n event Transacted(\n address msgSender, // Address of the sender of the message initiating the transaction\n address otherSigner, // Address of the signer (second signature) used to initiate the transaction\n bytes32 operation, // Operation hash (sha3 of toAddress, value, data, expireTime, sequenceId)\n address toAddress, // The address the transaction was sent to\n uint value, // Amount of Wei sent to the address\n bytes data // Data sent when invoking the transaction\n );\n event TokenTransacted(\n address msgSender, // Address of the sender of the message initiating the transaction\n address otherSigner, // Address of the signer (second signature) used to initiate the transaction\n bytes32 operation, // Operation hash (sha3 of toAddress, value, tokenContractAddress, expireTime, sequenceId)\n address toAddress, // The address the transaction was sent to\n uint value, // Amount of token sent\n address tokenContractAddress // The contract address of the token\n );\n\n // Public fields\n address[] public signers; // The addresses that can co-sign transactions on the wallet\n bool public safeMode = false; // When active, wallet may only send to signer addresses\n\n // Internal fields\n uint constant SEQUENCE_ID_WINDOW_SIZE = 10;\n uint[10] recentSequenceIds;\n\n /**\n * Modifier that will execute internal code block only if the sender is an authorized signer on this wallet\n */\n modifier onlysigner {\n if (!isSigner(msg.sender)) {\n throw;\n }\n _;\n }\n\n /**\n * Set up a simple multi-sig wallet by specifying the signers allowed to be used on this wallet.\n * 2 signers will be required to send a transaction from this wallet.\n * Note: The sender is NOT automatically added to the list of signers.\n * Signers CANNOT be changed once they are set\n *\n * @param allowedSigners An array of signers on the wallet\n */\n function WalletSimple(address[] allowedSigners) {\n if (allowedSigners.length != 3) {\n // Invalid number of signers\n throw;\n }\n signers = allowedSigners;\n }\n\n /**\n * Gets called when a transaction is received without calling a method\n */\n function() payable {\n if (msg.value > 0) {\n // Fire deposited event if we are receiving funds\n Deposited(msg.sender, msg.value, msg.data);\n }\n }\n\n /**\n * Create a new contract (and also address) that forwards funds to this contract\n * returns address of newly created forwarder address\n */\n function createForwarder() onlysigner returns (address) {\n return new Forwarder();\n }\n\n /**\n * Execute a multi-signature transaction from this wallet using 2 signers: one from msg.sender and the other from ecrecover.\n * The signature is a signed form (using eth.sign) of tightly packed toAddress, value, data, expireTime and sequenceId\n * Sequence IDs are numbers starting from 1. They are used to prevent replay attacks and may not be repeated.\n *\n * @param toAddress the destination address to send an outgoing transaction\n * @param value the amount in Wei to be sent\n * @param data the data to send to the toAddress when invoking the transaction\n * @param expireTime the number of seconds since 1970 for which this transaction is valid\n * @param sequenceId the unique sequence id obtainable from getNextSequenceId\n * @param signature the result of eth.sign on the operationHash sha3(toAddress, value, data, expireTime, sequenceId)\n */\n function sendMultiSig(address toAddress, uint value, bytes data, uint expireTime, uint sequenceId, bytes signature) onlysigner {\n // Verify the other signer\n var operationHash = sha3(\"ETHER\", toAddress, value, data, expireTime, sequenceId);\n \n var otherSigner = verifyMultiSig(toAddress, operationHash, signature, expireTime, sequenceId);\n\n // Success, send the transaction\n if (!(toAddress.call.value(value)(data))) {\n // Failed executing transaction\n throw;\n }\n Transacted(msg.sender, otherSigner, operationHash, toAddress, value, data);\n }\n \n /**\n * Execute a multi-signature token transfer from this wallet using 2 signers: one from msg.sender and the other from ecrecover.\n * The signature is a signed form (using eth.sign) of tightly packed toAddress, value, tokenContractAddress, expireTime and sequenceId\n * Sequence IDs are numbers starting from 1. They are used to prevent replay attacks and may not be repeated.\n *\n * @param toAddress the destination address to send an outgoing transaction\n * @param value the amount in tokens to be sent\n * @param tokenContractAddress the address of the erc20 token contract\n * @param expireTime the number of seconds since 1970 for which this transaction is valid\n * @param sequenceId the unique sequence id obtainable from getNextSequenceId\n * @param signature the result of eth.sign on the operationHash sha3(toAddress, value, tokenContractAddress, expireTime, sequenceId)\n */\n function sendMultiSigToken(address toAddress, uint value, address tokenContractAddress, uint expireTime, uint sequenceId, bytes signature) onlysigner {\n // Verify the other signer\n var operationHash = sha3(\"ERC20\", toAddress, value, tokenContractAddress, expireTime, sequenceId);\n \n var otherSigner = verifyMultiSig(toAddress, operationHash, signature, expireTime, sequenceId);\n \n ERC20Interface instance = ERC20Interface(tokenContractAddress);\n if (!instance.transfer(toAddress, value)) {\n throw;\n }\n TokenTransacted(msg.sender, otherSigner, operationHash, toAddress, value, tokenContractAddress);\n }\n\n /**\n * Execute a token flush from one of the forwarder addresses. This transfer needs only a single signature and can be done by any signer\n *\n * @param forwarderAddress the address of the forwarder address to flush the tokens from\n * @param tokenContractAddress the address of the erc20 token contract\n */\n function flushForwarderTokens(address forwarderAddress, address tokenContractAddress) onlysigner { \n Forwarder forwarder = Forwarder(forwarderAddress);\n forwarder.flushTokens(tokenContractAddress);\n } \n \n /**\n * Do common multisig verification for both eth sends and erc20token transfers\n *\n * @param toAddress the destination address to send an outgoing transaction\n * @param operationHash the sha3 of the toAddress, value, data/tokenContractAddress and expireTime\n * @param signature the tightly packed signature of r, s, and v as an array of 65 bytes (returned by eth.sign)\n * @param expireTime the number of seconds since 1970 for which this transaction is valid\n * @param sequenceId the unique sequence id obtainable from getNextSequenceId\n * returns address of the address to send tokens or eth to\n */\n function verifyMultiSig(address toAddress, bytes32 operationHash, bytes signature, uint expireTime, uint sequenceId) returns (address) {\n\n var otherSigner = recoverAddressFromSignature(operationHash, signature);\n\n // Verify if we are in safe mode. In safe mode, the wallet can only send to signers\n if (safeMode && !isSigner(toAddress)) {\n // We are in safe mode and the toAddress is not a signer. Disallow!\n throw;\n }\n // Verify that the transaction has not expired\n if (expireTime < block.timestamp) {\n // Transaction expired\n throw;\n }\n\n // Try to insert the sequence ID. Will throw if the sequence id was invalid\n tryInsertSequenceId(sequenceId);\n\n if (!isSigner(otherSigner)) {\n // Other signer not on this wallet or operation does not match arguments\n throw;\n }\n if (otherSigner == msg.sender) {\n // Cannot approve own transaction\n throw;\n }\n\n return otherSigner;\n }\n\n /**\n * Irrevocably puts contract into safe mode. When in this mode, transactions may only be sent to signing addresses.\n */\n function activateSafeMode() onlysigner {\n safeMode = true;\n SafeModeActivated(msg.sender);\n }\n\n /**\n * Determine if an address is a signer on this wallet\n * @param signer address to check\n * returns boolean indicating whether address is signer or not\n */\n function isSigner(address signer) returns (bool) {\n // Iterate through all signers on the wallet and\n for (uint i = 0; i < signers.length; i++) {\n if (signers[i] == signer) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * Gets the second signer's address using ecrecover\n * @param operationHash the sha3 of the toAddress, value, data/tokenContractAddress and expireTime\n * @param signature the tightly packed signature of r, s, and v as an array of 65 bytes (returned by eth.sign)\n * returns address recovered from the signature\n */\n function recoverAddressFromSignature(bytes32 operationHash, bytes signature) returns (address) {\n if (signature.length != 65) {\n throw;\n }\n // We need to unpack the signature, which is given as an array of 65 bytes (from eth.sign)\n bytes32 r;\n bytes32 s;\n uint8 v;\n assembly {\n r := mload(add(signature, 32))\n s := mload(add(signature, 64))\n v := and(mload(add(signature, 65)), 255)\n }\n if (v < 27) {\n v += 27; // Ethereum versions are 27 or 28 as opposed to 0 or 1 which is submitted by some signing libs\n }\n return ecrecover(operationHash, v, r, s);\n }\n\n /**\n * Verify that the sequence id has not been used before and inserts it. Throws if the sequence ID was not accepted.\n * We collect a window of up to 10 recent sequence ids, and allow any sequence id that is not in the window and\n * greater than the minimum element in the window.\n * @param sequenceId to insert into array of stored ids\n */\n function tryInsertSequenceId(uint sequenceId) onlysigner {\n // Keep a pointer to the lowest value element in the window\n uint lowestValueIndex = 0;\n for (uint i = 0; i < SEQUENCE_ID_WINDOW_SIZE; i++) {\n if (recentSequenceIds[i] == sequenceId) {\n // This sequence ID has been used before. Disallow!\n throw;\n }\n if (recentSequenceIds[i] < recentSequenceIds[lowestValueIndex]) {\n lowestValueIndex = i;\n }\n }\n if (sequenceId < recentSequenceIds[lowestValueIndex]) {\n // The sequence ID being used is lower than the lowest value in the window\n // so we cannot accept it as it may have been used before\n throw;\n }\n if (sequenceId > (recentSequenceIds[lowestValueIndex] + 10000)) {\n // Block sequence IDs which are much higher than the lowest value\n // This prevents people blocking the contract by using very large sequence IDs quickly\n throw;\n }\n recentSequenceIds[lowestValueIndex] = sequenceId;\n }\n\n /**\n * Gets the next available sequence ID for signing when using executeAndConfirm\n * returns the sequenceId one higher than the highest currently stored\n */\n function getNextSequenceId() returns (uint) {\n uint highestSequenceId = 0;\n for (uint i = 0; i < SEQUENCE_ID_WINDOW_SIZE; i++) {\n if (recentSequenceIds[i] > highestSequenceId) {\n highestSequenceId = recentSequenceIds[i];\n }\n }\n return highestSequenceId + 1;\n }\n}\n", + "bytecode": "0x60606040526000600160006101000a81548160ff021916908315150217905550341561002a57600080fd5b6040516116fe3803806116fe833981016040528080518201919050506003815114151561005657600080fd5b806000908051906020019061006c929190610073565b5050610140565b8280548282559060005260206000209081019282156100ec579160200282015b828111156100eb5782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555091602001919060010190610093565b5b5090506100f991906100fd565b5090565b61013d91905b8082111561013957600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905550600101610103565b5090565b90565b6115af8061014f6000396000f300606060405260043610610099576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680630dcd7a6c146101335780632079fb9a146101e95780632da034091461024c57806339125215146102a45780637df73e271461037e578063a0b7967b146103cf578063a68a76cc146103f8578063abe3219c1461044d578063fc0f392d1461047a575b6000341115610131577f6e89d517057028190560dd200cf6bf792842861353d1173761dfa362e1c133f03334600036604051808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200180602001828103825284848281815260200192508082843782019150509550505050505060405180910390a15b005b341561013e57600080fd5b6101e7600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190505061048f565b005b34156101f457600080fd5b61020a6004808035906020019091905050610783565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561025757600080fd5b6102a2600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506107c2565b005b34156102af57600080fd5b61037c600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001909190803590602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190505061088e565b005b341561038957600080fd5b6103b5600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610b8d565b604051808215151515815260200191505060405180910390f35b34156103da57600080fd5b6103e2610c31565b6040518082815260200191505060405180910390f35b341561040357600080fd5b61040b610c8b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561045857600080fd5b610460610cc4565b604051808215151515815260200191505060405180910390f35b341561048557600080fd5b61048d610cd7565b005b600080600061049d33610b8d565b15156104a857600080fd5b888888888860405180807f45524332300000000000000000000000000000000000000000000000000000008152506005018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401838152602001828152602001955050505050506040518091039020925061058b8984868989610d6a565b91508690508073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8a8a6000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b151561063b57600080fd5b6102c65a03f1151561064c57600080fd5b50505060405180519050151561066157600080fd5b7ff3574a20a6defd7fc26917e8013cdd578db5eaa4d9a3eb54f2bb0983ad8ab40d3383858c8c8c604051808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200185600019166000191681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001965050505050505060405180910390a1505050505050505050565b60008181548110151561079257fe5b90600052602060002090016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006107cd33610b8d565b15156107d857600080fd5b8290508073ffffffffffffffffffffffffffffffffffffffff16633ef13367836040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b151561087557600080fd5b6102c65a03f1151561088657600080fd5b505050505050565b60008061089a33610b8d565b15156108a557600080fd5b878787878760405180807f45544845520000000000000000000000000000000000000000000000000000008152506005018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140185815260200184805190602001908083835b60208310151561094e5780518252602082019150602081019050602083039250610929565b6001836020036101000a038019825116818451168082178552505050505050905001838152602001828152602001955050505050506040518091039020915061099a8883858888610d6a565b90508773ffffffffffffffffffffffffffffffffffffffff16878760405180828051906020019080838360005b838110156109e25780820151818401526020810190506109c7565b50505050905090810190601f168015610a0f5780820380516001836020036101000a031916815260200191505b5091505060006040518083038185876187965a03f1925050501515610a3357600080fd5b7f59bed9ab5d78073465dd642a9e3e76dfdb7d53bcae9d09df7d0b8f5234d5a8063382848b8b8b604051808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200185600019166000191681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610b44578082015181840152602081019050610b29565b50505050905090810190601f168015610b715780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a15050505050505050565b600080600090505b600080549050811015610c26578273ffffffffffffffffffffffffffffffffffffffff16600082815481101515610bc857fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610c195760019150610c2b565b8080600101915050610b95565b600091505b50919050565b6000806000809150600090505b600a811015610c805781600282600a81101515610c5757fe5b01541115610c7357600281600a81101515610c6e57fe5b015491505b8080600101915050610c3e565b600182019250505090565b6000610c9633610b8d565b1515610ca157600080fd5b610ca9610fbf565b604051809103906000f0801515610cbf57600080fd5b905090565b600160009054906101000a900460ff1681565b610ce033610b8d565b1515610ceb57600080fd5b60018060006101000a81548160ff0219169083151502179055507f0909e8f76a4fd3e970f2eaef56c0ee6dfaf8b87c5b8d3f56ffce78e825a9115733604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b600080610d778686610e15565b9050600160009054906101000a900460ff168015610d9b5750610d9987610b8d565b155b15610da557600080fd5b42841015610db257600080fd5b610dbb83610ee8565b610dc481610b8d565b1515610dcf57600080fd5b3373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610e0857600080fd5b8091505095945050505050565b60008060008060418551141515610e2b57600080fd5b602085015192506040850151915060ff6041860151169050601b8160ff161015610e5657601b810190505b600186828585604051600081526020016040526000604051602001526040518085600019166000191681526020018460ff1660ff16815260200183600019166000191681526020018260001916600019168152602001945050505050602060405160208103908084039060008661646e5a03f11515610ed457600080fd5b505060206040510351935050505092915050565b600080610ef433610b8d565b1515610eff57600080fd5b60009150600090505b600a811015610f675782600282600a81101515610f2157fe5b01541415610f2e57600080fd5b600282600a81101515610f3d57fe5b0154600282600a81101515610f4e57fe5b01541015610f5a578091505b8080600101915050610f08565b600282600a81101515610f7657fe5b0154831015610f8457600080fd5b612710600283600a81101515610f9657fe5b015401831115610fa557600080fd5b82600283600a81101515610fb557fe5b0181905550505050565b6040516105b480610fd08339019056006060604052341561000f57600080fd5b336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506105568061005e6000396000f300606060405260043610610056576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168062821de3146101555780633ef13367146101aa5780636b9f96ea146101e3575b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16346000366040518083838082843782019150509250505060006040518083038185876187965a03f19250505015156100c557600080fd5b7f69b31548dea9b3b707b4dff357d326e3e9348b24e7a6080a218a6edeeec48f9b3334600036604051808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200180602001828103825284848281815260200192508082843782019150509550505050505060405180910390a1005b341561016057600080fd5b6101686101f8565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156101b557600080fd5b6101e1600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061021d565b005b34156101ee57600080fd5b6101f66104b5565b005b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561027d57600080fd5b8392503091508273ffffffffffffffffffffffffffffffffffffffff166370a08231836000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b151561032657600080fd5b6102c65a03f1151561033757600080fd5b5050506040518051905090506000811415610351576104af565b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b151561041d57600080fd5b6102c65a03f1151561042e57600080fd5b50505060405180519050151561044357600080fd5b7f9401e4e79c19cbe2bd774cb70a94ba660e6718be1bac1298ab3b07f454a608218482604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a15b50505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff163160405160006040518083038185876187965a03f192505050151561052857600080fd5b5600a165627a7a72305820481f5b3456cf3fd8a7d5ad98e246bc195410a0cdad55b12c0e96e72b5220399c0029a165627a7a723058204b555ef8dfc4c9567c8c5e82b27d2d0c4c3dca3174fb5bf6fa352075daee74520029", + "deployedBytecode": "0x606060405260043610610099576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680630dcd7a6c146101335780632079fb9a146101e95780632da034091461024c57806339125215146102a45780637df73e271461037e578063a0b7967b146103cf578063a68a76cc146103f8578063abe3219c1461044d578063fc0f392d1461047a575b6000341115610131577f6e89d517057028190560dd200cf6bf792842861353d1173761dfa362e1c133f03334600036604051808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200180602001828103825284848281815260200192508082843782019150509550505050505060405180910390a15b005b341561013e57600080fd5b6101e7600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190505061048f565b005b34156101f457600080fd5b61020a6004808035906020019091905050610783565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561025757600080fd5b6102a2600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506107c2565b005b34156102af57600080fd5b61037c600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001909190803590602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190505061088e565b005b341561038957600080fd5b6103b5600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610b8d565b604051808215151515815260200191505060405180910390f35b34156103da57600080fd5b6103e2610c31565b6040518082815260200191505060405180910390f35b341561040357600080fd5b61040b610c8b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561045857600080fd5b610460610cc4565b604051808215151515815260200191505060405180910390f35b341561048557600080fd5b61048d610cd7565b005b600080600061049d33610b8d565b15156104a857600080fd5b888888888860405180807f45524332300000000000000000000000000000000000000000000000000000008152506005018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401838152602001828152602001955050505050506040518091039020925061058b8984868989610d6a565b91508690508073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8a8a6000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b151561063b57600080fd5b6102c65a03f1151561064c57600080fd5b50505060405180519050151561066157600080fd5b7ff3574a20a6defd7fc26917e8013cdd578db5eaa4d9a3eb54f2bb0983ad8ab40d3383858c8c8c604051808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200185600019166000191681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001965050505050505060405180910390a1505050505050505050565b60008181548110151561079257fe5b90600052602060002090016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006107cd33610b8d565b15156107d857600080fd5b8290508073ffffffffffffffffffffffffffffffffffffffff16633ef13367836040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b151561087557600080fd5b6102c65a03f1151561088657600080fd5b505050505050565b60008061089a33610b8d565b15156108a557600080fd5b878787878760405180807f45544845520000000000000000000000000000000000000000000000000000008152506005018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140185815260200184805190602001908083835b60208310151561094e5780518252602082019150602081019050602083039250610929565b6001836020036101000a038019825116818451168082178552505050505050905001838152602001828152602001955050505050506040518091039020915061099a8883858888610d6a565b90508773ffffffffffffffffffffffffffffffffffffffff16878760405180828051906020019080838360005b838110156109e25780820151818401526020810190506109c7565b50505050905090810190601f168015610a0f5780820380516001836020036101000a031916815260200191505b5091505060006040518083038185876187965a03f1925050501515610a3357600080fd5b7f59bed9ab5d78073465dd642a9e3e76dfdb7d53bcae9d09df7d0b8f5234d5a8063382848b8b8b604051808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200185600019166000191681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610b44578082015181840152602081019050610b29565b50505050905090810190601f168015610b715780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a15050505050505050565b600080600090505b600080549050811015610c26578273ffffffffffffffffffffffffffffffffffffffff16600082815481101515610bc857fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610c195760019150610c2b565b8080600101915050610b95565b600091505b50919050565b6000806000809150600090505b600a811015610c805781600282600a81101515610c5757fe5b01541115610c7357600281600a81101515610c6e57fe5b015491505b8080600101915050610c3e565b600182019250505090565b6000610c9633610b8d565b1515610ca157600080fd5b610ca9610fbf565b604051809103906000f0801515610cbf57600080fd5b905090565b600160009054906101000a900460ff1681565b610ce033610b8d565b1515610ceb57600080fd5b60018060006101000a81548160ff0219169083151502179055507f0909e8f76a4fd3e970f2eaef56c0ee6dfaf8b87c5b8d3f56ffce78e825a9115733604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b600080610d778686610e15565b9050600160009054906101000a900460ff168015610d9b5750610d9987610b8d565b155b15610da557600080fd5b42841015610db257600080fd5b610dbb83610ee8565b610dc481610b8d565b1515610dcf57600080fd5b3373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610e0857600080fd5b8091505095945050505050565b60008060008060418551141515610e2b57600080fd5b602085015192506040850151915060ff6041860151169050601b8160ff161015610e5657601b810190505b600186828585604051600081526020016040526000604051602001526040518085600019166000191681526020018460ff1660ff16815260200183600019166000191681526020018260001916600019168152602001945050505050602060405160208103908084039060008661646e5a03f11515610ed457600080fd5b505060206040510351935050505092915050565b600080610ef433610b8d565b1515610eff57600080fd5b60009150600090505b600a811015610f675782600282600a81101515610f2157fe5b01541415610f2e57600080fd5b600282600a81101515610f3d57fe5b0154600282600a81101515610f4e57fe5b01541015610f5a578091505b8080600101915050610f08565b600282600a81101515610f7657fe5b0154831015610f8457600080fd5b612710600283600a81101515610f9657fe5b015401831115610fa557600080fd5b82600283600a81101515610fb557fe5b0181905550505050565b6040516105b480610fd08339019056006060604052341561000f57600080fd5b336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506105568061005e6000396000f300606060405260043610610056576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168062821de3146101555780633ef13367146101aa5780636b9f96ea146101e3575b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16346000366040518083838082843782019150509250505060006040518083038185876187965a03f19250505015156100c557600080fd5b7f69b31548dea9b3b707b4dff357d326e3e9348b24e7a6080a218a6edeeec48f9b3334600036604051808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200180602001828103825284848281815260200192508082843782019150509550505050505060405180910390a1005b341561016057600080fd5b6101686101f8565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156101b557600080fd5b6101e1600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061021d565b005b34156101ee57600080fd5b6101f66104b5565b005b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561027d57600080fd5b8392503091508273ffffffffffffffffffffffffffffffffffffffff166370a08231836000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b151561032657600080fd5b6102c65a03f1151561033757600080fd5b5050506040518051905090506000811415610351576104af565b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b151561041d57600080fd5b6102c65a03f1151561042e57600080fd5b50505060405180519050151561044357600080fd5b7f9401e4e79c19cbe2bd774cb70a94ba660e6718be1bac1298ab3b07f454a608218482604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a15b50505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff163160405160006040518083038185876187965a03f192505050151561052857600080fd5b5600a165627a7a72305820481f5b3456cf3fd8a7d5ad98e246bc195410a0cdad55b12c0e96e72b5220399c0029a165627a7a723058204b555ef8dfc4c9567c8c5e82b27d2d0c4c3dca3174fb5bf6fa352075daee74520029", + "sourceMap": "330:11247:2:-;;;1607:5;1584:28;;;;;;;;;;;;;;;;;;;;2353:175;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2436:1;2411:14;:21;:26;;2407:87;;;2482:5;;;2407:87;2509:14;2499:7;:24;;;;;;;;;;;;:::i;:::-;;2353:175;330:11247;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;", + "deployedSourceMap": "330:11247:2:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2658:1;2646:9;:13;2642:132;;;2725:42;2735:10;2747:9;2758:8;;2725:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2642:132;330:11247;5387:636;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1495:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6346:210;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3900:577;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8557:242;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11285:290;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2933:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1584:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8284:100;;;;;;;;;;;;;;5387:636;5574:17;5682:15;5786:23;1925:20;1934:10;1925:8;:20::i;:::-;1924:21;1920:47;;;1955:5;;;1920:47;5608:9;5619:5;5626:20;5648:10;5660;5594:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5574:97;;5700:75;5715:9;5726:13;5741:9;5752:10;5764;5700:14;:75::i;:::-;5682:93;;5827:20;5786:62;;5859:8;:17;;;5877:9;5888:5;5859:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5858:36;5854:64;;;5906:5;;;5854:64;5923:95;5939:10;5951:11;5964:13;5979:9;5990:5;5997:20;5923:95;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5387:636;;;;;;;;;:::o;1495:24::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;6346:210::-;6453:19;1925:20;1934:10;1925:8;:20::i;:::-;1924:21;1920:47;;;1955:5;;;1920:47;6485:16;6453:49;;6508:9;:21;;;6530:20;6508:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6346:210;;;:::o;3900:577::-;4064:17;4156:15;1925:20;1934:10;1925:8;:20::i;:::-;1924:21;1920:47;;;1955:5;;;1920:47;4098:9;4109:5;4116:4;4122:10;4134;4084:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:2;51:6;36:153;;;182:3;176:5;171:3;164:6;98:2;93:3;89;82:19;;123:2;118:3;114;107:19;;148:2;143:3;139;132:19;;36:153;;;274:1;267:3;263:2;259:3;254;250;246;315:4;311:3;305;299:5;295:3;356:4;350:3;344:5;340:3;389:7;380;377:2;372:3;365:6;3:399;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4064:81:2;;4174:75;4189:9;4200:13;4215:9;4226:10;4238;4174:14;:75::i;:::-;4156:93;;4299:9;:14;;4320:5;4327:4;4299:33;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4297:36:2;4293:100;;;4381:5;;;4293:100;4398:74;4409:10;4421:11;4434:13;4449:9;4460:5;4467:4;4398:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3900:577:2;;;;;;;;:::o;8557:242::-;8600:4;8670:6;8679:1;8670:10;;8665:112;8686:7;:14;;;;8682:1;:18;8665:112;;;8733:6;8719:20;;:7;8727:1;8719:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;:20;;;8715:56;;;8758:4;8751:11;;;;8715:56;8702:3;;;;;;;8665:112;;;8789:5;8782:12;;8557:242;;;;;:::o;11285:290::-;11323:4;11335:22;11372:6;11360:1;11335:26;;11381:1;11372:10;;11367:170;1735:2;11384:1;:27;11367:170;;;11453:17;11430;11448:1;11430:20;;;;;;;;;;;:40;11426:105;;;11502:17;11520:1;11502:20;;;;;;;;;;;11482:40;;11426:105;11413:3;;;;;;;11367:170;;;11569:1;11549:17;:21;11542:28;;11285:290;;;:::o;2933:89::-;2980:7;1925:20;1934:10;1925:8;:20::i;:::-;1924:21;1920:47;;;1955:5;;;1920:47;3002:15;;:::i;:::-;;;;;;;;;;;;;;;;;;2995:22;;2933:89;:::o;1584:28::-;;;;;;;;;;;;;:::o;8284:100::-;1925:20;1934:10;1925:8;:20::i;:::-;1924:21;1920:47;;;1955:5;;;1920:47;8340:4;8329:8;;:15;;;;;;;;;;;;;;;;;;8350:29;8368:10;8350:29;;;;;;;;;;;;;;;;;;;;;;8284:100::o;7187:963::-;7321:7;7337:15;7355:53;7383:13;7398:9;7355:27;:53::i;:::-;7337:71;;7507:8;;;;;;;;;;;:32;;;;;7520:19;7529:9;7520:8;:19::i;:::-;7519:20;7507:32;7503:132;;;7623:5;;;7503:132;7708:15;7695:10;:28;7691:83;;;7762:5;;;7691:83;7860:31;7880:10;7860:19;:31::i;:::-;7903:21;7912:11;7903:8;:21::i;:::-;7902:22;7898:127;;;8013:5;;;7898:127;8049:10;8034:25;;:11;:25;;;8030:91;;;8109:5;;;8030:91;8134:11;8127:18;;7187:963;;;;;;;;:::o;9133:621::-;9227:7;9390:9;9405;9420:7;9266:2;9246:9;:16;:22;;9242:48;;;9278:5;;;9242:48;9476:2;9465:9;9461:3;9455:5;9450:30;;9513:2;9502:9;9498:3;9492:5;9487:30;;9560:3;9554:2;9543:9;9539:3;9533:5;9529:3;9524:40;;9583:2;9579:1;:6;;;9575:129;;;9600:2;9595:7;;;;9575:129;9716:33;9726:13;9741:1;9744;9747;9716:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9709:40;;9133:621;;;;;;;:::o;10113:1001::-;10248:21;10284:6;1925:20;1934:10;1925:8;:20::i;:::-;1924:21;1920:47;;;1955:5;;;1920:47;10272:1;10248:25;;10293:1;10284:10;;10279:299;1735:2;10296:1;:27;10279:299;;;10366:10;10342:17;10360:1;10342:20;;;;;;;;;;;:34;10338:124;;;10448:5;;;10338:124;10496:17;10514:16;10496:35;;;;;;;;;;;10473:17;10491:1;10473:20;;;;;;;;;;;:58;10469:103;;;10562:1;10543:20;;10469:103;10325:3;;;;;;;10279:299;;;10600:17;10618:16;10600:35;;;;;;;;;;;10587:10;:48;10583:219;;;10790:5;;;10583:219;10863:5;10825:17;10843:16;10825:35;;;;;;;;;;;:43;10811:10;:58;10807:249;;;11044:5;;;10807:249;11099:10;11061:17;11079:16;11061:35;;;;;;;;;;:48;;;;10113:1001;;;:::o;330:11247::-;;;;;;;;;;:::o", + "source": "pragma solidity ^0.4.18;\nimport \"./Forwarder.sol\";\nimport \"./ERC20Interface.sol\";\n/**\n * Basic multi-signer wallet designed for use in a co-signing environment where 2 signatures are required to move funds.\n * Typically used in a 2-of-3 signing configuration. Uses ecrecover to allow for 2 signatures in a single transaction.\n */\ncontract WalletSimple {\n // Events\n event Deposited(address from, uint value, bytes data);\n event SafeModeActivated(address msgSender);\n event Transacted(\n address msgSender, // Address of the sender of the message initiating the transaction\n address otherSigner, // Address of the signer (second signature) used to initiate the transaction\n bytes32 operation, // Operation hash (sha3 of toAddress, value, data, expireTime, sequenceId)\n address toAddress, // The address the transaction was sent to\n uint value, // Amount of Wei sent to the address\n bytes data // Data sent when invoking the transaction\n );\n event TokenTransacted(\n address msgSender, // Address of the sender of the message initiating the transaction\n address otherSigner, // Address of the signer (second signature) used to initiate the transaction\n bytes32 operation, // Operation hash (sha3 of toAddress, value, tokenContractAddress, expireTime, sequenceId)\n address toAddress, // The address the transaction was sent to\n uint value, // Amount of token sent\n address tokenContractAddress // The contract address of the token\n );\n\n // Public fields\n address[] public signers; // The addresses that can co-sign transactions on the wallet\n bool public safeMode = false; // When active, wallet may only send to signer addresses\n\n // Internal fields\n uint constant SEQUENCE_ID_WINDOW_SIZE = 10;\n uint[10] recentSequenceIds;\n\n /**\n * Modifier that will execute internal code block only if the sender is an authorized signer on this wallet\n */\n modifier onlysigner {\n if (!isSigner(msg.sender)) {\n throw;\n }\n _;\n }\n\n /**\n * Set up a simple multi-sig wallet by specifying the signers allowed to be used on this wallet.\n * 2 signers will be required to send a transaction from this wallet.\n * Note: The sender is NOT automatically added to the list of signers.\n * Signers CANNOT be changed once they are set\n *\n * @param allowedSigners An array of signers on the wallet\n */\n function WalletSimple(address[] allowedSigners) {\n if (allowedSigners.length != 3) {\n // Invalid number of signers\n throw;\n }\n signers = allowedSigners;\n }\n\n /**\n * Gets called when a transaction is received without calling a method\n */\n function() payable {\n if (msg.value > 0) {\n // Fire deposited event if we are receiving funds\n Deposited(msg.sender, msg.value, msg.data);\n }\n }\n\n /**\n * Create a new contract (and also address) that forwards funds to this contract\n * returns address of newly created forwarder address\n */\n function createForwarder() onlysigner returns (address) {\n return new Forwarder();\n }\n\n /**\n * Execute a multi-signature transaction from this wallet using 2 signers: one from msg.sender and the other from ecrecover.\n * The signature is a signed form (using eth.sign) of tightly packed toAddress, value, data, expireTime and sequenceId\n * Sequence IDs are numbers starting from 1. They are used to prevent replay attacks and may not be repeated.\n *\n * @param toAddress the destination address to send an outgoing transaction\n * @param value the amount in Wei to be sent\n * @param data the data to send to the toAddress when invoking the transaction\n * @param expireTime the number of seconds since 1970 for which this transaction is valid\n * @param sequenceId the unique sequence id obtainable from getNextSequenceId\n * @param signature the result of eth.sign on the operationHash sha3(toAddress, value, data, expireTime, sequenceId)\n */\n function sendMultiSig(address toAddress, uint value, bytes data, uint expireTime, uint sequenceId, bytes signature) onlysigner {\n // Verify the other signer\n var operationHash = sha3(\"ETHER\", toAddress, value, data, expireTime, sequenceId);\n \n var otherSigner = verifyMultiSig(toAddress, operationHash, signature, expireTime, sequenceId);\n\n // Success, send the transaction\n if (!(toAddress.call.value(value)(data))) {\n // Failed executing transaction\n throw;\n }\n Transacted(msg.sender, otherSigner, operationHash, toAddress, value, data);\n }\n \n /**\n * Execute a multi-signature token transfer from this wallet using 2 signers: one from msg.sender and the other from ecrecover.\n * The signature is a signed form (using eth.sign) of tightly packed toAddress, value, tokenContractAddress, expireTime and sequenceId\n * Sequence IDs are numbers starting from 1. They are used to prevent replay attacks and may not be repeated.\n *\n * @param toAddress the destination address to send an outgoing transaction\n * @param value the amount in tokens to be sent\n * @param tokenContractAddress the address of the erc20 token contract\n * @param expireTime the number of seconds since 1970 for which this transaction is valid\n * @param sequenceId the unique sequence id obtainable from getNextSequenceId\n * @param signature the result of eth.sign on the operationHash sha3(toAddress, value, tokenContractAddress, expireTime, sequenceId)\n */\n function sendMultiSigToken(address toAddress, uint value, address tokenContractAddress, uint expireTime, uint sequenceId, bytes signature) onlysigner {\n // Verify the other signer\n var operationHash = sha3(\"ERC20\", toAddress, value, tokenContractAddress, expireTime, sequenceId);\n \n var otherSigner = verifyMultiSig(toAddress, operationHash, signature, expireTime, sequenceId);\n \n ERC20Interface instance = ERC20Interface(tokenContractAddress);\n if (!instance.transfer(toAddress, value)) {\n throw;\n }\n TokenTransacted(msg.sender, otherSigner, operationHash, toAddress, value, tokenContractAddress);\n }\n\n /**\n * Execute a token flush from one of the forwarder addresses. This transfer needs only a single signature and can be done by any signer\n *\n * @param forwarderAddress the address of the forwarder address to flush the tokens from\n * @param tokenContractAddress the address of the erc20 token contract\n */\n function flushForwarderTokens(address forwarderAddress, address tokenContractAddress) onlysigner { \n Forwarder forwarder = Forwarder(forwarderAddress);\n forwarder.flushTokens(tokenContractAddress);\n } \n \n /**\n * Do common multisig verification for both eth sends and erc20token transfers\n *\n * @param toAddress the destination address to send an outgoing transaction\n * @param operationHash the sha3 of the toAddress, value, data/tokenContractAddress and expireTime\n * @param signature the tightly packed signature of r, s, and v as an array of 65 bytes (returned by eth.sign)\n * @param expireTime the number of seconds since 1970 for which this transaction is valid\n * @param sequenceId the unique sequence id obtainable from getNextSequenceId\n * returns address of the address to send tokens or eth to\n */\n function verifyMultiSig(address toAddress, bytes32 operationHash, bytes signature, uint expireTime, uint sequenceId) private returns (address) {\n\n var otherSigner = recoverAddressFromSignature(operationHash, signature);\n\n // Verify if we are in safe mode. In safe mode, the wallet can only send to signers\n if (safeMode && !isSigner(toAddress)) {\n // We are in safe mode and the toAddress is not a signer. Disallow!\n throw;\n }\n // Verify that the transaction has not expired\n if (expireTime < block.timestamp) {\n // Transaction expired\n throw;\n }\n\n // Try to insert the sequence ID. Will throw if the sequence id was invalid\n tryInsertSequenceId(sequenceId);\n\n if (!isSigner(otherSigner)) {\n // Other signer not on this wallet or operation does not match arguments\n throw;\n }\n if (otherSigner == msg.sender) {\n // Cannot approve own transaction\n throw;\n }\n\n return otherSigner;\n }\n\n /**\n * Irrevocably puts contract into safe mode. When in this mode, transactions may only be sent to signing addresses.\n */\n function activateSafeMode() onlysigner {\n safeMode = true;\n SafeModeActivated(msg.sender);\n }\n\n /**\n * Determine if an address is a signer on this wallet\n * @param signer address to check\n * returns boolean indicating whether address is signer or not\n */\n function isSigner(address signer) returns (bool) {\n // Iterate through all signers on the wallet and\n for (uint i = 0; i < signers.length; i++) {\n if (signers[i] == signer) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * Gets the second signer's address using ecrecover\n * @param operationHash the sha3 of the toAddress, value, data/tokenContractAddress and expireTime\n * @param signature the tightly packed signature of r, s, and v as an array of 65 bytes (returned by eth.sign)\n * returns address recovered from the signature\n */\n function recoverAddressFromSignature(bytes32 operationHash, bytes signature) private returns (address) {\n if (signature.length != 65) {\n throw;\n }\n // We need to unpack the signature, which is given as an array of 65 bytes (from eth.sign)\n bytes32 r;\n bytes32 s;\n uint8 v;\n assembly {\n r := mload(add(signature, 32))\n s := mload(add(signature, 64))\n v := and(mload(add(signature, 65)), 255)\n }\n if (v < 27) {\n v += 27; // Ethereum versions are 27 or 28 as opposed to 0 or 1 which is submitted by some signing libs\n }\n return ecrecover(operationHash, v, r, s);\n }\n\n /**\n * Verify that the sequence id has not been used before and inserts it. Throws if the sequence ID was not accepted.\n * We collect a window of up to 10 recent sequence ids, and allow any sequence id that is not in the window and\n * greater than the minimum element in the window.\n * @param sequenceId to insert into array of stored ids\n */\n function tryInsertSequenceId(uint sequenceId) onlysigner private {\n // Keep a pointer to the lowest value element in the window\n uint lowestValueIndex = 0;\n for (uint i = 0; i < SEQUENCE_ID_WINDOW_SIZE; i++) {\n if (recentSequenceIds[i] == sequenceId) {\n // This sequence ID has been used before. Disallow!\n throw;\n }\n if (recentSequenceIds[i] < recentSequenceIds[lowestValueIndex]) {\n lowestValueIndex = i;\n }\n }\n if (sequenceId < recentSequenceIds[lowestValueIndex]) {\n // The sequence ID being used is lower than the lowest value in the window\n // so we cannot accept it as it may have been used before\n throw;\n }\n if (sequenceId > (recentSequenceIds[lowestValueIndex] + 10000)) {\n // Block sequence IDs which are much higher than the lowest value\n // This prevents people blocking the contract by using very large sequence IDs quickly\n throw;\n }\n recentSequenceIds[lowestValueIndex] = sequenceId;\n }\n\n /**\n * Gets the next available sequence ID for signing when using executeAndConfirm\n * returns the sequenceId one higher than the highest currently stored\n */\n function getNextSequenceId() returns (uint) {\n uint highestSequenceId = 0;\n for (uint i = 0; i < SEQUENCE_ID_WINDOW_SIZE; i++) {\n if (recentSequenceIds[i] > highestSequenceId) {\n highestSequenceId = recentSequenceIds[i];\n }\n }\n return highestSequenceId + 1;\n }\n}\n", "sourcePath": "/home/bitgotto/src/BitGo/eth-multisig-v2/contracts/WalletSimple.sol", "ast": { "attributes": { "absolutePath": "/home/bitgotto/src/BitGo/eth-multisig-v2/contracts/WalletSimple.sol", "exportedSymbols": { "WalletSimple": [ - 1026 + 661 ] } }, @@ -395,42 +474,42 @@ "solidity", "^", "0.4", - ".11" + ".18" ] }, - "id": 509, + "id": 144, "name": "PragmaDirective", - "src": "0:24:4" + "src": "0:24:2" }, { "attributes": { - "SourceUnit": 508, + "SourceUnit": 143, "absolutePath": "/home/bitgotto/src/BitGo/eth-multisig-v2/contracts/Forwarder.sol", "file": "./Forwarder.sol", - "scope": 1027, + "scope": 662, "symbolAliases": [ null ], "unitAlias": "" }, - "id": 510, + "id": 145, "name": "ImportDirective", - "src": "25:25:4" + "src": "25:25:2" }, { "attributes": { "SourceUnit": 19, "absolutePath": "/home/bitgotto/src/BitGo/eth-multisig-v2/contracts/ERC20Interface.sol", "file": "./ERC20Interface.sol", - "scope": 1027, + "scope": 662, "symbolAliases": [ null ], "unitAlias": "" }, - "id": 511, + "id": 146, "name": "ImportDirective", - "src": "51:30:4" + "src": "51:30:2" }, { "attributes": { @@ -438,16 +517,16 @@ null ], "contractDependencies": [ - 507 + 142 ], "contractKind": "contract", "documentation": "Basic multi-signer wallet designed for use in a co-signing environment where 2 signatures are required to move funds.\nTypically used in a 2-of-3 signing configuration. Uses ecrecover to allow for 2 signatures in a single transaction.", "fullyImplemented": true, "linearizedBaseContracts": [ - 1026 + 661 ], "name": "WalletSimple", - "scope": 1027 + "scope": 662 }, "children": [ { @@ -463,7 +542,7 @@ "constant": false, "indexed": false, "name": "from", - "scope": 519, + "scope": 154, "stateVariable": false, "storageLocation": "default", "type": "address", @@ -476,21 +555,21 @@ "name": "address", "type": "address" }, - "id": 512, + "id": 147, "name": "ElementaryTypeName", - "src": "384:7:4" + "src": "384:7:2" } ], - "id": 513, + "id": 148, "name": "VariableDeclaration", - "src": "384:12:4" + "src": "384:12:2" }, { "attributes": { "constant": false, "indexed": false, "name": "value", - "scope": 519, + "scope": 154, "stateVariable": false, "storageLocation": "default", "type": "uint256", @@ -503,21 +582,21 @@ "name": "uint", "type": "uint256" }, - "id": 514, + "id": 149, "name": "ElementaryTypeName", - "src": "398:4:4" + "src": "398:4:2" } ], - "id": 515, + "id": 150, "name": "VariableDeclaration", - "src": "398:10:4" + "src": "398:10:2" }, { "attributes": { "constant": false, "indexed": false, "name": "data", - "scope": 519, + "scope": 154, "stateVariable": false, "storageLocation": "default", "type": "bytes memory", @@ -530,24 +609,24 @@ "name": "bytes", "type": "bytes storage pointer" }, - "id": 516, + "id": 151, "name": "ElementaryTypeName", - "src": "410:5:4" + "src": "410:5:2" } ], - "id": 517, + "id": 152, "name": "VariableDeclaration", - "src": "410:10:4" + "src": "410:10:2" } ], - "id": 518, + "id": 153, "name": "ParameterList", - "src": "383:38:4" + "src": "383:38:2" } ], - "id": 519, + "id": 154, "name": "EventDefinition", - "src": "368:54:4" + "src": "368:54:2" }, { "attributes": { @@ -562,7 +641,7 @@ "constant": false, "indexed": false, "name": "msgSender", - "scope": 523, + "scope": 158, "stateVariable": false, "storageLocation": "default", "type": "address", @@ -575,24 +654,24 @@ "name": "address", "type": "address" }, - "id": 520, + "id": 155, "name": "ElementaryTypeName", - "src": "449:7:4" + "src": "449:7:2" } ], - "id": 521, + "id": 156, "name": "VariableDeclaration", - "src": "449:17:4" + "src": "449:17:2" } ], - "id": 522, + "id": 157, "name": "ParameterList", - "src": "448:19:4" + "src": "448:19:2" } ], - "id": 523, + "id": 158, "name": "EventDefinition", - "src": "425:43:4" + "src": "425:43:2" }, { "attributes": { @@ -607,7 +686,7 @@ "constant": false, "indexed": false, "name": "msgSender", - "scope": 537, + "scope": 172, "stateVariable": false, "storageLocation": "default", "type": "address", @@ -620,21 +699,21 @@ "name": "address", "type": "address" }, - "id": 524, + "id": 159, "name": "ElementaryTypeName", - "src": "493:7:4" + "src": "493:7:2" } ], - "id": 525, + "id": 160, "name": "VariableDeclaration", - "src": "493:17:4" + "src": "493:17:2" }, { "attributes": { "constant": false, "indexed": false, "name": "otherSigner", - "scope": 537, + "scope": 172, "stateVariable": false, "storageLocation": "default", "type": "address", @@ -647,21 +726,21 @@ "name": "address", "type": "address" }, - "id": 526, + "id": 161, "name": "ElementaryTypeName", - "src": "583:7:4" + "src": "583:7:2" } ], - "id": 527, + "id": 162, "name": "VariableDeclaration", - "src": "583:19:4" + "src": "583:19:2" }, { "attributes": { "constant": false, "indexed": false, "name": "operation", - "scope": 537, + "scope": 172, "stateVariable": false, "storageLocation": "default", "type": "bytes32", @@ -674,21 +753,21 @@ "name": "bytes32", "type": "bytes32" }, - "id": 528, + "id": 163, "name": "ElementaryTypeName", - "src": "685:7:4" + "src": "685:7:2" } ], - "id": 529, + "id": 164, "name": "VariableDeclaration", - "src": "685:17:4" + "src": "685:17:2" }, { "attributes": { "constant": false, "indexed": false, "name": "toAddress", - "scope": 537, + "scope": 172, "stateVariable": false, "storageLocation": "default", "type": "address", @@ -701,21 +780,21 @@ "name": "address", "type": "address" }, - "id": 530, + "id": 165, "name": "ElementaryTypeName", - "src": "783:7:4" + "src": "783:7:2" } ], - "id": 531, + "id": 166, "name": "VariableDeclaration", - "src": "783:17:4" + "src": "783:17:2" }, { "attributes": { "constant": false, "indexed": false, "name": "value", - "scope": 537, + "scope": 172, "stateVariable": false, "storageLocation": "default", "type": "uint256", @@ -728,21 +807,21 @@ "name": "uint", "type": "uint256" }, - "id": 532, + "id": 167, "name": "ElementaryTypeName", - "src": "849:4:4" + "src": "849:4:2" } ], - "id": 533, + "id": 168, "name": "VariableDeclaration", - "src": "849:10:4" + "src": "849:10:2" }, { "attributes": { "constant": false, "indexed": false, "name": "data", - "scope": 537, + "scope": 172, "stateVariable": false, "storageLocation": "default", "type": "bytes memory", @@ -755,24 +834,24 @@ "name": "bytes", "type": "bytes storage pointer" }, - "id": 534, + "id": 169, "name": "ElementaryTypeName", - "src": "902:5:4" + "src": "902:5:2" } ], - "id": 535, + "id": 170, "name": "VariableDeclaration", - "src": "902:10:4" + "src": "902:10:2" } ], - "id": 536, + "id": 171, "name": "ParameterList", - "src": "487:472:4" + "src": "487:472:2" } ], - "id": 537, + "id": 172, "name": "EventDefinition", - "src": "471:489:4" + "src": "471:489:2" }, { "attributes": { @@ -787,7 +866,7 @@ "constant": false, "indexed": false, "name": "msgSender", - "scope": 551, + "scope": 186, "stateVariable": false, "storageLocation": "default", "type": "address", @@ -800,21 +879,21 @@ "name": "address", "type": "address" }, - "id": 538, + "id": 173, "name": "ElementaryTypeName", - "src": "990:7:4" + "src": "990:7:2" } ], - "id": 539, + "id": 174, "name": "VariableDeclaration", - "src": "990:17:4" + "src": "990:17:2" }, { "attributes": { "constant": false, "indexed": false, "name": "otherSigner", - "scope": 551, + "scope": 186, "stateVariable": false, "storageLocation": "default", "type": "address", @@ -827,21 +906,21 @@ "name": "address", "type": "address" }, - "id": 540, + "id": 175, "name": "ElementaryTypeName", - "src": "1080:7:4" + "src": "1080:7:2" } ], - "id": 541, + "id": 176, "name": "VariableDeclaration", - "src": "1080:19:4" + "src": "1080:19:2" }, { "attributes": { "constant": false, "indexed": false, "name": "operation", - "scope": 551, + "scope": 186, "stateVariable": false, "storageLocation": "default", "type": "bytes32", @@ -854,21 +933,21 @@ "name": "bytes32", "type": "bytes32" }, - "id": 542, + "id": 177, "name": "ElementaryTypeName", - "src": "1182:7:4" + "src": "1182:7:2" } ], - "id": 543, + "id": 178, "name": "VariableDeclaration", - "src": "1182:17:4" + "src": "1182:17:2" }, { "attributes": { "constant": false, "indexed": false, "name": "toAddress", - "scope": 551, + "scope": 186, "stateVariable": false, "storageLocation": "default", "type": "address", @@ -881,21 +960,21 @@ "name": "address", "type": "address" }, - "id": 544, + "id": 179, "name": "ElementaryTypeName", - "src": "1296:7:4" + "src": "1296:7:2" } ], - "id": 545, + "id": 180, "name": "VariableDeclaration", - "src": "1296:17:4" + "src": "1296:17:2" }, { "attributes": { "constant": false, "indexed": false, "name": "value", - "scope": 551, + "scope": 186, "stateVariable": false, "storageLocation": "default", "type": "uint256", @@ -908,21 +987,21 @@ "name": "uint", "type": "uint256" }, - "id": 546, + "id": 181, "name": "ElementaryTypeName", - "src": "1362:4:4" + "src": "1362:4:2" } ], - "id": 547, + "id": 182, "name": "VariableDeclaration", - "src": "1362:10:4" + "src": "1362:10:2" }, { "attributes": { "constant": false, "indexed": false, "name": "tokenContractAddress", - "scope": 551, + "scope": 186, "stateVariable": false, "storageLocation": "default", "type": "address", @@ -935,30 +1014,30 @@ "name": "address", "type": "address" }, - "id": 548, + "id": 183, "name": "ElementaryTypeName", - "src": "1402:7:4" + "src": "1402:7:2" } ], - "id": 549, + "id": 184, "name": "VariableDeclaration", - "src": "1402:28:4" + "src": "1402:28:2" } ], - "id": 550, + "id": 185, "name": "ParameterList", - "src": "984:487:4" + "src": "984:487:2" } ], - "id": 551, + "id": 186, "name": "EventDefinition", - "src": "963:509:4" + "src": "963:509:2" }, { "attributes": { "constant": false, "name": "signers", - "scope": 1026, + "scope": 661, "stateVariable": true, "storageLocation": "default", "type": "address[] storage ref", @@ -977,25 +1056,25 @@ "name": "address", "type": "address" }, - "id": 552, + "id": 187, "name": "ElementaryTypeName", - "src": "1495:7:4" + "src": "1495:7:2" } ], - "id": 553, + "id": 188, "name": "ArrayTypeName", - "src": "1495:9:4" + "src": "1495:9:2" } ], - "id": 554, + "id": 189, "name": "VariableDeclaration", - "src": "1495:24:4" + "src": "1495:24:2" }, { "attributes": { "constant": false, "name": "safeMode", - "scope": 1026, + "scope": 661, "stateVariable": true, "storageLocation": "default", "type": "bool", @@ -1007,9 +1086,9 @@ "name": "bool", "type": "bool" }, - "id": 555, + "id": 190, "name": "ElementaryTypeName", - "src": "1584:4:4" + "src": "1584:4:2" }, { "attributes": { @@ -1024,20 +1103,20 @@ "type": "bool", "value": "false" }, - "id": 556, + "id": 191, "name": "Literal", - "src": "1607:5:4" + "src": "1607:5:2" } ], - "id": 557, + "id": 192, "name": "VariableDeclaration", - "src": "1584:28:4" + "src": "1584:28:2" }, { "attributes": { "constant": true, "name": "SEQUENCE_ID_WINDOW_SIZE", - "scope": 1026, + "scope": 661, "stateVariable": true, "storageLocation": "default", "type": "uint256", @@ -1049,9 +1128,9 @@ "name": "uint", "type": "uint256" }, - "id": 558, + "id": 193, "name": "ElementaryTypeName", - "src": "1695:4:4" + "src": "1695:4:2" }, { "attributes": { @@ -1066,20 +1145,20 @@ "type": "int_const 10", "value": "10" }, - "id": 559, + "id": 194, "name": "Literal", - "src": "1735:2:4" + "src": "1735:2:2" } ], - "id": 560, + "id": 195, "name": "VariableDeclaration", - "src": "1695:42:4" + "src": "1695:42:2" }, { "attributes": { "constant": false, "name": "recentSequenceIds", - "scope": 1026, + "scope": 661, "stateVariable": true, "storageLocation": "default", "type": "uint256[10] storage ref", @@ -1097,9 +1176,9 @@ "name": "uint", "type": "uint256" }, - "id": 561, + "id": 196, "name": "ElementaryTypeName", - "src": "1741:4:4" + "src": "1741:4:2" }, { "attributes": { @@ -1114,19 +1193,19 @@ "type": "int_const 10", "value": "10" }, - "id": 562, + "id": 197, "name": "Literal", - "src": "1746:2:4" + "src": "1746:2:2" } ], - "id": 563, + "id": 198, "name": "ArrayTypeName", - "src": "1741:8:4" + "src": "1741:8:2" } ], - "id": 564, + "id": 199, "name": "VariableDeclaration", - "src": "1741:26:4" + "src": "1741:26:2" }, { "attributes": { @@ -1141,9 +1220,9 @@ ] }, "children": [], - "id": 565, + "id": 200, "name": "ParameterList", - "src": "1914:0:4" + "src": "1914:0:2" }, { "children": [ @@ -1190,13 +1269,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 873, + "referencedDeclaration": 508, "type": "function (address) returns (bool)", "value": "isSigner" }, - "id": 566, + "id": 201, "name": "Identifier", - "src": "1925:8:4" + "src": "1925:8:2" }, { "attributes": { @@ -1216,61 +1295,61 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1038, + "referencedDeclaration": 673, "type": "msg", "value": "msg" }, - "id": 567, + "id": 202, "name": "Identifier", - "src": "1934:3:4" + "src": "1934:3:2" } ], - "id": 568, + "id": 203, "name": "MemberAccess", - "src": "1934:10:4" + "src": "1934:10:2" } ], - "id": 569, + "id": 204, "name": "FunctionCall", - "src": "1925:20:4" + "src": "1925:20:2" } ], - "id": 570, + "id": 205, "name": "UnaryOperation", - "src": "1924:21:4" + "src": "1924:21:2" }, { "children": [ { "children": [], - "id": 571, + "id": 206, "name": "Throw", - "src": "1955:5:4" + "src": "1955:5:2" } ], - "id": 572, + "id": 207, "name": "Block", - "src": "1947:20:4" + "src": "1947:20:2" } ], - "id": 573, + "id": 208, "name": "IfStatement", - "src": "1920:47:4" + "src": "1920:47:2" }, { - "id": 574, + "id": 209, "name": "PlaceholderStatement", - "src": "1972:1:4" + "src": "1972:1:2" } ], - "id": 575, + "id": 210, "name": "Block", - "src": "1914:64:4" + "src": "1914:64:2" } ], - "id": 576, + "id": 211, "name": "ModifierDefinition", - "src": "1894:84:4" + "src": "1894:84:2" }, { "attributes": { @@ -1282,7 +1361,7 @@ ], "name": "WalletSimple", "payable": false, - "scope": 1026, + "scope": 661, "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" @@ -1294,7 +1373,7 @@ "attributes": { "constant": false, "name": "allowedSigners", - "scope": 594, + "scope": 229, "stateVariable": false, "storageLocation": "default", "type": "address[] memory", @@ -1313,24 +1392,24 @@ "name": "address", "type": "address" }, - "id": 577, + "id": 212, "name": "ElementaryTypeName", - "src": "2375:7:4" + "src": "2375:7:2" } ], - "id": 578, + "id": 213, "name": "ArrayTypeName", - "src": "2375:9:4" + "src": "2375:9:2" } ], - "id": 579, + "id": 214, "name": "VariableDeclaration", - "src": "2375:24:4" + "src": "2375:24:2" } ], - "id": 580, + "id": 215, "name": "ParameterList", - "src": "2374:26:4" + "src": "2374:26:2" }, { "attributes": { @@ -1339,9 +1418,9 @@ ] }, "children": [], - "id": 581, + "id": 216, "name": "ParameterList", - "src": "2401:0:4" + "src": "2401:0:2" }, { "children": [ @@ -1383,18 +1462,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 579, + "referencedDeclaration": 214, "type": "address[] memory", "value": "allowedSigners" }, - "id": 582, + "id": 217, "name": "Identifier", - "src": "2411:14:4" + "src": "2411:14:2" } ], - "id": 583, + "id": 218, "name": "MemberAccess", - "src": "2411:21:4" + "src": "2411:21:2" }, { "attributes": { @@ -1409,32 +1488,32 @@ "type": "int_const 3", "value": "3" }, - "id": 584, + "id": 219, "name": "Literal", - "src": "2436:1:4" + "src": "2436:1:2" } ], - "id": 585, + "id": 220, "name": "BinaryOperation", - "src": "2411:26:4" + "src": "2411:26:2" }, { "children": [ { "children": [], - "id": 586, + "id": 221, "name": "Throw", - "src": "2482:5:4" + "src": "2482:5:2" } ], - "id": 587, + "id": 222, "name": "Block", - "src": "2439:55:4" + "src": "2439:55:2" } ], - "id": 588, + "id": 223, "name": "IfStatement", - "src": "2407:87:4" + "src": "2407:87:2" }, { "children": [ @@ -1455,13 +1534,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 554, + "referencedDeclaration": 189, "type": "address[] storage ref", "value": "signers" }, - "id": 589, + "id": 224, "name": "Identifier", - "src": "2499:7:4" + "src": "2499:7:2" }, { "attributes": { @@ -1469,33 +1548,33 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 579, + "referencedDeclaration": 214, "type": "address[] memory", "value": "allowedSigners" }, - "id": 590, + "id": 225, "name": "Identifier", - "src": "2509:14:4" + "src": "2509:14:2" } ], - "id": 591, + "id": 226, "name": "Assignment", - "src": "2499:24:4" + "src": "2499:24:2" } ], - "id": 592, + "id": 227, "name": "ExpressionStatement", - "src": "2499:24:4" + "src": "2499:24:2" } ], - "id": 593, + "id": 228, "name": "Block", - "src": "2401:127:4" + "src": "2401:127:2" } ], - "id": 594, + "id": 229, "name": "FunctionDefinition", - "src": "2353:175:4" + "src": "2353:175:2" }, { "attributes": { @@ -1507,7 +1586,7 @@ ], "name": "", "payable": true, - "scope": 1026, + "scope": 661, "stateMutability": "payable", "superFunction": null, "visibility": "public" @@ -1520,9 +1599,9 @@ ] }, "children": [], - "id": 595, + "id": 230, "name": "ParameterList", - "src": "2625:2:4" + "src": "2625:2:2" }, { "attributes": { @@ -1531,9 +1610,9 @@ ] }, "children": [], - "id": 596, + "id": 231, "name": "ParameterList", - "src": "2636:0:4" + "src": "2636:0:2" }, { "children": [ @@ -1575,18 +1654,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1038, + "referencedDeclaration": 673, "type": "msg", "value": "msg" }, - "id": 597, + "id": 232, "name": "Identifier", - "src": "2646:3:4" + "src": "2646:3:2" } ], - "id": 598, + "id": 233, "name": "MemberAccess", - "src": "2646:9:4" + "src": "2646:9:2" }, { "attributes": { @@ -1601,14 +1680,14 @@ "type": "int_const 0", "value": "0" }, - "id": 599, + "id": 234, "name": "Literal", - "src": "2658:1:4" + "src": "2658:1:2" } ], - "id": 600, + "id": 235, "name": "BinaryOperation", - "src": "2646:13:4" + "src": "2646:13:2" }, { "children": [ @@ -1648,13 +1727,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 519, + "referencedDeclaration": 154, "type": "function (address,uint256,bytes memory)", "value": "Deposited" }, - "id": 601, + "id": 236, "name": "Identifier", - "src": "2725:9:4" + "src": "2725:9:2" }, { "attributes": { @@ -1674,18 +1753,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1038, + "referencedDeclaration": 673, "type": "msg", "value": "msg" }, - "id": 602, + "id": 237, "name": "Identifier", - "src": "2735:3:4" + "src": "2735:3:2" } ], - "id": 603, + "id": 238, "name": "MemberAccess", - "src": "2735:10:4" + "src": "2735:10:2" }, { "attributes": { @@ -1705,18 +1784,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1038, + "referencedDeclaration": 673, "type": "msg", "value": "msg" }, - "id": 604, + "id": 239, "name": "Identifier", - "src": "2747:3:4" + "src": "2747:3:2" } ], - "id": 605, + "id": 240, "name": "MemberAccess", - "src": "2747:9:4" + "src": "2747:9:2" }, { "attributes": { @@ -1736,48 +1815,48 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1038, + "referencedDeclaration": 673, "type": "msg", "value": "msg" }, - "id": 606, + "id": 241, "name": "Identifier", - "src": "2758:3:4" + "src": "2758:3:2" } ], - "id": 607, + "id": 242, "name": "MemberAccess", - "src": "2758:8:4" + "src": "2758:8:2" } ], - "id": 608, + "id": 243, "name": "FunctionCall", - "src": "2725:42:4" + "src": "2725:42:2" } ], - "id": 609, + "id": 244, "name": "ExpressionStatement", - "src": "2725:42:4" + "src": "2725:42:2" } ], - "id": 610, + "id": 245, "name": "Block", - "src": "2661:113:4" + "src": "2661:113:2" } ], - "id": 611, + "id": 246, "name": "IfStatement", - "src": "2642:132:4" + "src": "2642:132:2" } ], - "id": 612, + "id": 247, "name": "Block", - "src": "2636:142:4" + "src": "2636:142:2" } ], - "id": 613, + "id": 248, "name": "FunctionDefinition", - "src": "2617:161:4" + "src": "2617:161:2" }, { "attributes": { @@ -1786,7 +1865,7 @@ "isConstructor": false, "name": "createForwarder", "payable": false, - "scope": 1026, + "scope": 661, "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" @@ -1799,9 +1878,9 @@ ] }, "children": [], - "id": 614, + "id": 249, "name": "ParameterList", - "src": "2957:2:4" + "src": "2957:2:2" }, { "children": [ @@ -1809,7 +1888,7 @@ "attributes": { "constant": false, "name": "", - "scope": 625, + "scope": 260, "stateVariable": false, "storageLocation": "default", "type": "address", @@ -1822,19 +1901,19 @@ "name": "address", "type": "address" }, - "id": 617, + "id": 252, "name": "ElementaryTypeName", - "src": "2980:7:4" + "src": "2980:7:2" } ], - "id": 618, + "id": 253, "name": "VariableDeclaration", - "src": "2980:7:4" + "src": "2980:7:2" } ], - "id": 619, + "id": 254, "name": "ParameterList", - "src": "2979:9:4" + "src": "2979:9:2" }, { "attributes": { @@ -1849,24 +1928,24 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 576, + "referencedDeclaration": 211, "type": "modifier ()", "value": "onlysigner" }, - "id": 615, + "id": 250, "name": "Identifier", - "src": "2960:10:4" + "src": "2960:10:2" } ], - "id": 616, + "id": 251, "name": "ModifierInvocation", - "src": "2960:10:4" + "src": "2960:10:2" }, { "children": [ { "attributes": { - "functionReturnParameters": 619 + "functionReturnParameters": 254 }, "children": [ { @@ -1903,37 +1982,37 @@ "attributes": { "contractScope": null, "name": "Forwarder", - "referencedDeclaration": 507, + "referencedDeclaration": 142, "type": "contract Forwarder" }, - "id": 620, + "id": 255, "name": "UserDefinedTypeName", - "src": "3006:9:4" + "src": "3006:9:2" } ], - "id": 621, + "id": 256, "name": "NewExpression", - "src": "3002:13:4" + "src": "3002:13:2" } ], - "id": 622, + "id": 257, "name": "FunctionCall", - "src": "3002:15:4" + "src": "3002:15:2" } ], - "id": 623, + "id": 258, "name": "Return", - "src": "2995:22:4" + "src": "2995:22:2" } ], - "id": 624, + "id": 259, "name": "Block", - "src": "2989:33:4" + "src": "2989:33:2" } ], - "id": 625, + "id": 260, "name": "FunctionDefinition", - "src": "2933:89:4" + "src": "2933:89:2" }, { "attributes": { @@ -1942,7 +2021,7 @@ "isConstructor": false, "name": "sendMultiSig", "payable": false, - "scope": 1026, + "scope": 661, "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" @@ -1954,7 +2033,7 @@ "attributes": { "constant": false, "name": "toAddress", - "scope": 684, + "scope": 319, "stateVariable": false, "storageLocation": "default", "type": "address", @@ -1967,20 +2046,20 @@ "name": "address", "type": "address" }, - "id": 626, + "id": 261, "name": "ElementaryTypeName", - "src": "3922:7:4" + "src": "3922:7:2" } ], - "id": 627, + "id": 262, "name": "VariableDeclaration", - "src": "3922:17:4" + "src": "3922:17:2" }, { "attributes": { "constant": false, "name": "value", - "scope": 684, + "scope": 319, "stateVariable": false, "storageLocation": "default", "type": "uint256", @@ -1993,20 +2072,20 @@ "name": "uint", "type": "uint256" }, - "id": 628, + "id": 263, "name": "ElementaryTypeName", - "src": "3941:4:4" + "src": "3941:4:2" } ], - "id": 629, + "id": 264, "name": "VariableDeclaration", - "src": "3941:10:4" + "src": "3941:10:2" }, { "attributes": { "constant": false, "name": "data", - "scope": 684, + "scope": 319, "stateVariable": false, "storageLocation": "default", "type": "bytes memory", @@ -2019,20 +2098,20 @@ "name": "bytes", "type": "bytes storage pointer" }, - "id": 630, + "id": 265, "name": "ElementaryTypeName", - "src": "3953:5:4" + "src": "3953:5:2" } ], - "id": 631, + "id": 266, "name": "VariableDeclaration", - "src": "3953:10:4" + "src": "3953:10:2" }, { "attributes": { "constant": false, "name": "expireTime", - "scope": 684, + "scope": 319, "stateVariable": false, "storageLocation": "default", "type": "uint256", @@ -2045,20 +2124,20 @@ "name": "uint", "type": "uint256" }, - "id": 632, + "id": 267, "name": "ElementaryTypeName", - "src": "3965:4:4" + "src": "3965:4:2" } ], - "id": 633, + "id": 268, "name": "VariableDeclaration", - "src": "3965:15:4" + "src": "3965:15:2" }, { "attributes": { "constant": false, "name": "sequenceId", - "scope": 684, + "scope": 319, "stateVariable": false, "storageLocation": "default", "type": "uint256", @@ -2071,20 +2150,20 @@ "name": "uint", "type": "uint256" }, - "id": 634, + "id": 269, "name": "ElementaryTypeName", - "src": "3982:4:4" + "src": "3982:4:2" } ], - "id": 635, + "id": 270, "name": "VariableDeclaration", - "src": "3982:15:4" + "src": "3982:15:2" }, { "attributes": { "constant": false, "name": "signature", - "scope": 684, + "scope": 319, "stateVariable": false, "storageLocation": "default", "type": "bytes memory", @@ -2097,19 +2176,19 @@ "name": "bytes", "type": "bytes storage pointer" }, - "id": 636, + "id": 271, "name": "ElementaryTypeName", - "src": "3999:5:4" + "src": "3999:5:2" } ], - "id": 637, + "id": 272, "name": "VariableDeclaration", - "src": "3999:15:4" + "src": "3999:15:2" } ], - "id": 638, + "id": 273, "name": "ParameterList", - "src": "3921:94:4" + "src": "3921:94:2" }, { "attributes": { @@ -2118,9 +2197,9 @@ ] }, "children": [], - "id": 641, + "id": 276, "name": "ParameterList", - "src": "4027:0:4" + "src": "4027:0:2" }, { "attributes": { @@ -2135,25 +2214,25 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 576, + "referencedDeclaration": 211, "type": "modifier ()", "value": "onlysigner" }, - "id": 639, + "id": 274, "name": "Identifier", - "src": "4016:10:4" + "src": "4016:10:2" } ], - "id": 640, + "id": 275, "name": "ModifierInvocation", - "src": "4016:10:4" + "src": "4016:10:2" }, { "children": [ { "attributes": { "assignments": [ - 642 + 277 ] }, "children": [ @@ -2161,7 +2240,7 @@ "attributes": { "constant": false, "name": "operationHash", - "scope": 684, + "scope": 319, "stateVariable": false, "storageLocation": "default", "type": "bytes32", @@ -2170,9 +2249,9 @@ "visibility": "internal" }, "children": [], - "id": 642, + "id": 277, "name": "VariableDeclaration", - "src": "4064:17:4" + "src": "4064:17:2" }, { "attributes": { @@ -2220,13 +2299,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1046, + "referencedDeclaration": 681, "type": "function () pure returns (bytes32)", "value": "sha3" }, - "id": 643, + "id": 278, "name": "Identifier", - "src": "4084:4:4" + "src": "4084:4:2" }, { "attributes": { @@ -2241,9 +2320,9 @@ "type": "literal_string \"ETHER\"", "value": "ETHER" }, - "id": 644, + "id": 279, "name": "Literal", - "src": "4089:7:4" + "src": "4089:7:2" }, { "attributes": { @@ -2251,13 +2330,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 627, + "referencedDeclaration": 262, "type": "address", "value": "toAddress" }, - "id": 645, + "id": 280, "name": "Identifier", - "src": "4098:9:4" + "src": "4098:9:2" }, { "attributes": { @@ -2265,13 +2344,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 629, + "referencedDeclaration": 264, "type": "uint256", "value": "value" }, - "id": 646, + "id": 281, "name": "Identifier", - "src": "4109:5:4" + "src": "4109:5:2" }, { "attributes": { @@ -2279,13 +2358,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 631, + "referencedDeclaration": 266, "type": "bytes memory", "value": "data" }, - "id": 647, + "id": 282, "name": "Identifier", - "src": "4116:4:4" + "src": "4116:4:2" }, { "attributes": { @@ -2293,13 +2372,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 633, + "referencedDeclaration": 268, "type": "uint256", "value": "expireTime" }, - "id": 648, + "id": 283, "name": "Identifier", - "src": "4122:10:4" + "src": "4122:10:2" }, { "attributes": { @@ -2307,28 +2386,28 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 635, + "referencedDeclaration": 270, "type": "uint256", "value": "sequenceId" }, - "id": 649, + "id": 284, "name": "Identifier", - "src": "4134:10:4" + "src": "4134:10:2" } ], - "id": 650, + "id": 285, "name": "FunctionCall", - "src": "4084:61:4" + "src": "4084:61:2" } ], - "id": 651, + "id": 286, "name": "VariableDeclarationStatement", - "src": "4064:81:4" + "src": "4064:81:2" }, { "attributes": { "assignments": [ - 652 + 287 ] }, "children": [ @@ -2336,7 +2415,7 @@ "attributes": { "constant": false, "name": "otherSigner", - "scope": 684, + "scope": 319, "stateVariable": false, "storageLocation": "default", "type": "address", @@ -2345,9 +2424,9 @@ "visibility": "internal" }, "children": [], - "id": 652, + "id": 287, "name": "VariableDeclaration", - "src": "4156:15:4" + "src": "4156:15:2" }, { "attributes": { @@ -2391,13 +2470,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 826, + "referencedDeclaration": 461, "type": "function (address,bytes32,bytes memory,uint256,uint256) returns (address)", "value": "verifyMultiSig" }, - "id": 653, + "id": 288, "name": "Identifier", - "src": "4174:14:4" + "src": "4174:14:2" }, { "attributes": { @@ -2405,13 +2484,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 627, + "referencedDeclaration": 262, "type": "address", "value": "toAddress" }, - "id": 654, + "id": 289, "name": "Identifier", - "src": "4189:9:4" + "src": "4189:9:2" }, { "attributes": { @@ -2419,13 +2498,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 642, + "referencedDeclaration": 277, "type": "bytes32", "value": "operationHash" }, - "id": 655, + "id": 290, "name": "Identifier", - "src": "4200:13:4" + "src": "4200:13:2" }, { "attributes": { @@ -2433,13 +2512,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 637, + "referencedDeclaration": 272, "type": "bytes memory", "value": "signature" }, - "id": 656, + "id": 291, "name": "Identifier", - "src": "4215:9:4" + "src": "4215:9:2" }, { "attributes": { @@ -2447,13 +2526,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 633, + "referencedDeclaration": 268, "type": "uint256", "value": "expireTime" }, - "id": 657, + "id": 292, "name": "Identifier", - "src": "4226:10:4" + "src": "4226:10:2" }, { "attributes": { @@ -2461,23 +2540,23 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 635, + "referencedDeclaration": 270, "type": "uint256", "value": "sequenceId" }, - "id": 658, + "id": 293, "name": "Identifier", - "src": "4238:10:4" + "src": "4238:10:2" } ], - "id": 659, + "id": 294, "name": "FunctionCall", - "src": "4174:75:4" + "src": "4174:75:2" } ], - "id": 660, + "id": 295, "name": "VariableDeclarationStatement", - "src": "4156:93:4" + "src": "4156:93:2" }, { "attributes": { @@ -2577,23 +2656,23 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 627, + "referencedDeclaration": 262, "type": "address", "value": "toAddress" }, - "id": 661, + "id": 296, "name": "Identifier", - "src": "4299:9:4" + "src": "4299:9:2" } ], - "id": 662, + "id": 297, "name": "MemberAccess", - "src": "4299:14:4" + "src": "4299:14:2" } ], - "id": 663, + "id": 298, "name": "MemberAccess", - "src": "4299:20:4" + "src": "4299:20:2" }, { "attributes": { @@ -2601,18 +2680,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 629, + "referencedDeclaration": 264, "type": "uint256", "value": "value" }, - "id": 664, + "id": 299, "name": "Identifier", - "src": "4320:5:4" + "src": "4320:5:2" } ], - "id": 665, + "id": 300, "name": "FunctionCall", - "src": "4299:27:4" + "src": "4299:27:2" }, { "attributes": { @@ -2620,46 +2699,46 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 631, + "referencedDeclaration": 266, "type": "bytes memory", "value": "data" }, - "id": 666, + "id": 301, "name": "Identifier", - "src": "4327:4:4" + "src": "4327:4:2" } ], - "id": 667, + "id": 302, "name": "FunctionCall", - "src": "4299:33:4" + "src": "4299:33:2" } ], - "id": 668, + "id": 303, "name": "TupleExpression", - "src": "4298:35:4" + "src": "4298:35:2" } ], - "id": 669, + "id": 304, "name": "UnaryOperation", - "src": "4297:36:4" + "src": "4297:36:2" }, { "children": [ { "children": [], - "id": 670, + "id": 305, "name": "Throw", - "src": "4381:5:4" + "src": "4381:5:2" } ], - "id": 671, + "id": 306, "name": "Block", - "src": "4335:58:4" + "src": "4335:58:2" } ], - "id": 672, + "id": 307, "name": "IfStatement", - "src": "4293:100:4" + "src": "4293:100:2" }, { "children": [ @@ -2709,13 +2788,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 537, + "referencedDeclaration": 172, "type": "function (address,address,bytes32,address,uint256,bytes memory)", "value": "Transacted" }, - "id": 673, + "id": 308, "name": "Identifier", - "src": "4398:10:4" + "src": "4398:10:2" }, { "attributes": { @@ -2735,18 +2814,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1038, + "referencedDeclaration": 673, "type": "msg", "value": "msg" }, - "id": 674, + "id": 309, "name": "Identifier", - "src": "4409:3:4" + "src": "4409:3:2" } ], - "id": 675, + "id": 310, "name": "MemberAccess", - "src": "4409:10:4" + "src": "4409:10:2" }, { "attributes": { @@ -2754,13 +2833,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 652, + "referencedDeclaration": 287, "type": "address", "value": "otherSigner" }, - "id": 676, + "id": 311, "name": "Identifier", - "src": "4421:11:4" + "src": "4421:11:2" }, { "attributes": { @@ -2768,13 +2847,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 642, + "referencedDeclaration": 277, "type": "bytes32", "value": "operationHash" }, - "id": 677, + "id": 312, "name": "Identifier", - "src": "4434:13:4" + "src": "4434:13:2" }, { "attributes": { @@ -2782,13 +2861,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 627, + "referencedDeclaration": 262, "type": "address", "value": "toAddress" }, - "id": 678, + "id": 313, "name": "Identifier", - "src": "4449:9:4" + "src": "4449:9:2" }, { "attributes": { @@ -2796,13 +2875,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 629, + "referencedDeclaration": 264, "type": "uint256", "value": "value" }, - "id": 679, + "id": 314, "name": "Identifier", - "src": "4460:5:4" + "src": "4460:5:2" }, { "attributes": { @@ -2810,33 +2889,33 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 631, + "referencedDeclaration": 266, "type": "bytes memory", "value": "data" }, - "id": 680, + "id": 315, "name": "Identifier", - "src": "4467:4:4" + "src": "4467:4:2" } ], - "id": 681, + "id": 316, "name": "FunctionCall", - "src": "4398:74:4" + "src": "4398:74:2" } ], - "id": 682, + "id": 317, "name": "ExpressionStatement", - "src": "4398:74:4" + "src": "4398:74:2" } ], - "id": 683, + "id": 318, "name": "Block", - "src": "4027:450:4" + "src": "4027:450:2" } ], - "id": 684, + "id": 319, "name": "FunctionDefinition", - "src": "3900:577:4" + "src": "3900:577:2" }, { "attributes": { @@ -2845,7 +2924,7 @@ "isConstructor": false, "name": "sendMultiSigToken", "payable": false, - "scope": 1026, + "scope": 661, "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" @@ -2857,7 +2936,7 @@ "attributes": { "constant": false, "name": "toAddress", - "scope": 746, + "scope": 381, "stateVariable": false, "storageLocation": "default", "type": "address", @@ -2870,20 +2949,20 @@ "name": "address", "type": "address" }, - "id": 685, + "id": 320, "name": "ElementaryTypeName", - "src": "5414:7:4" + "src": "5414:7:2" } ], - "id": 686, + "id": 321, "name": "VariableDeclaration", - "src": "5414:17:4" + "src": "5414:17:2" }, { "attributes": { "constant": false, "name": "value", - "scope": 746, + "scope": 381, "stateVariable": false, "storageLocation": "default", "type": "uint256", @@ -2896,20 +2975,20 @@ "name": "uint", "type": "uint256" }, - "id": 687, + "id": 322, "name": "ElementaryTypeName", - "src": "5433:4:4" + "src": "5433:4:2" } ], - "id": 688, + "id": 323, "name": "VariableDeclaration", - "src": "5433:10:4" + "src": "5433:10:2" }, { "attributes": { "constant": false, "name": "tokenContractAddress", - "scope": 746, + "scope": 381, "stateVariable": false, "storageLocation": "default", "type": "address", @@ -2922,20 +3001,20 @@ "name": "address", "type": "address" }, - "id": 689, + "id": 324, "name": "ElementaryTypeName", - "src": "5445:7:4" + "src": "5445:7:2" } ], - "id": 690, + "id": 325, "name": "VariableDeclaration", - "src": "5445:28:4" + "src": "5445:28:2" }, { "attributes": { "constant": false, "name": "expireTime", - "scope": 746, + "scope": 381, "stateVariable": false, "storageLocation": "default", "type": "uint256", @@ -2948,20 +3027,20 @@ "name": "uint", "type": "uint256" }, - "id": 691, + "id": 326, "name": "ElementaryTypeName", - "src": "5475:4:4" + "src": "5475:4:2" } ], - "id": 692, + "id": 327, "name": "VariableDeclaration", - "src": "5475:15:4" + "src": "5475:15:2" }, { "attributes": { "constant": false, "name": "sequenceId", - "scope": 746, + "scope": 381, "stateVariable": false, "storageLocation": "default", "type": "uint256", @@ -2974,20 +3053,20 @@ "name": "uint", "type": "uint256" }, - "id": 693, + "id": 328, "name": "ElementaryTypeName", - "src": "5492:4:4" + "src": "5492:4:2" } ], - "id": 694, + "id": 329, "name": "VariableDeclaration", - "src": "5492:15:4" + "src": "5492:15:2" }, { "attributes": { "constant": false, "name": "signature", - "scope": 746, + "scope": 381, "stateVariable": false, "storageLocation": "default", "type": "bytes memory", @@ -3000,19 +3079,19 @@ "name": "bytes", "type": "bytes storage pointer" }, - "id": 695, + "id": 330, "name": "ElementaryTypeName", - "src": "5509:5:4" + "src": "5509:5:2" } ], - "id": 696, + "id": 331, "name": "VariableDeclaration", - "src": "5509:15:4" + "src": "5509:15:2" } ], - "id": 697, + "id": 332, "name": "ParameterList", - "src": "5413:112:4" + "src": "5413:112:2" }, { "attributes": { @@ -3021,9 +3100,9 @@ ] }, "children": [], - "id": 700, + "id": 335, "name": "ParameterList", - "src": "5537:0:4" + "src": "5537:0:2" }, { "attributes": { @@ -3038,25 +3117,25 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 576, + "referencedDeclaration": 211, "type": "modifier ()", "value": "onlysigner" }, - "id": 698, + "id": 333, "name": "Identifier", - "src": "5526:10:4" + "src": "5526:10:2" } ], - "id": 699, + "id": 334, "name": "ModifierInvocation", - "src": "5526:10:4" + "src": "5526:10:2" }, { "children": [ { "attributes": { "assignments": [ - 701 + 336 ] }, "children": [ @@ -3064,7 +3143,7 @@ "attributes": { "constant": false, "name": "operationHash", - "scope": 746, + "scope": 381, "stateVariable": false, "storageLocation": "default", "type": "bytes32", @@ -3073,9 +3152,9 @@ "visibility": "internal" }, "children": [], - "id": 701, + "id": 336, "name": "VariableDeclaration", - "src": "5574:17:4" + "src": "5574:17:2" }, { "attributes": { @@ -3123,13 +3202,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1046, + "referencedDeclaration": 681, "type": "function () pure returns (bytes32)", "value": "sha3" }, - "id": 702, + "id": 337, "name": "Identifier", - "src": "5594:4:4" + "src": "5594:4:2" }, { "attributes": { @@ -3144,9 +3223,9 @@ "type": "literal_string \"ERC20\"", "value": "ERC20" }, - "id": 703, + "id": 338, "name": "Literal", - "src": "5599:7:4" + "src": "5599:7:2" }, { "attributes": { @@ -3154,13 +3233,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 686, + "referencedDeclaration": 321, "type": "address", "value": "toAddress" }, - "id": 704, + "id": 339, "name": "Identifier", - "src": "5608:9:4" + "src": "5608:9:2" }, { "attributes": { @@ -3168,13 +3247,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 688, + "referencedDeclaration": 323, "type": "uint256", "value": "value" }, - "id": 705, + "id": 340, "name": "Identifier", - "src": "5619:5:4" + "src": "5619:5:2" }, { "attributes": { @@ -3182,13 +3261,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 690, + "referencedDeclaration": 325, "type": "address", "value": "tokenContractAddress" }, - "id": 706, + "id": 341, "name": "Identifier", - "src": "5626:20:4" + "src": "5626:20:2" }, { "attributes": { @@ -3196,13 +3275,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 692, + "referencedDeclaration": 327, "type": "uint256", "value": "expireTime" }, - "id": 707, + "id": 342, "name": "Identifier", - "src": "5648:10:4" + "src": "5648:10:2" }, { "attributes": { @@ -3210,28 +3289,28 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 694, + "referencedDeclaration": 329, "type": "uint256", "value": "sequenceId" }, - "id": 708, + "id": 343, "name": "Identifier", - "src": "5660:10:4" + "src": "5660:10:2" } ], - "id": 709, + "id": 344, "name": "FunctionCall", - "src": "5594:77:4" + "src": "5594:77:2" } ], - "id": 710, + "id": 345, "name": "VariableDeclarationStatement", - "src": "5574:97:4" + "src": "5574:97:2" }, { "attributes": { "assignments": [ - 711 + 346 ] }, "children": [ @@ -3239,7 +3318,7 @@ "attributes": { "constant": false, "name": "otherSigner", - "scope": 746, + "scope": 381, "stateVariable": false, "storageLocation": "default", "type": "address", @@ -3248,9 +3327,9 @@ "visibility": "internal" }, "children": [], - "id": 711, + "id": 346, "name": "VariableDeclaration", - "src": "5682:15:4" + "src": "5682:15:2" }, { "attributes": { @@ -3294,13 +3373,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 826, + "referencedDeclaration": 461, "type": "function (address,bytes32,bytes memory,uint256,uint256) returns (address)", "value": "verifyMultiSig" }, - "id": 712, + "id": 347, "name": "Identifier", - "src": "5700:14:4" + "src": "5700:14:2" }, { "attributes": { @@ -3308,13 +3387,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 686, + "referencedDeclaration": 321, "type": "address", "value": "toAddress" }, - "id": 713, + "id": 348, "name": "Identifier", - "src": "5715:9:4" + "src": "5715:9:2" }, { "attributes": { @@ -3322,13 +3401,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 701, + "referencedDeclaration": 336, "type": "bytes32", "value": "operationHash" }, - "id": 714, + "id": 349, "name": "Identifier", - "src": "5726:13:4" + "src": "5726:13:2" }, { "attributes": { @@ -3336,13 +3415,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 696, + "referencedDeclaration": 331, "type": "bytes memory", "value": "signature" }, - "id": 715, + "id": 350, "name": "Identifier", - "src": "5741:9:4" + "src": "5741:9:2" }, { "attributes": { @@ -3350,13 +3429,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 692, + "referencedDeclaration": 327, "type": "uint256", "value": "expireTime" }, - "id": 716, + "id": 351, "name": "Identifier", - "src": "5752:10:4" + "src": "5752:10:2" }, { "attributes": { @@ -3364,28 +3443,28 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 694, + "referencedDeclaration": 329, "type": "uint256", "value": "sequenceId" }, - "id": 717, + "id": 352, "name": "Identifier", - "src": "5764:10:4" + "src": "5764:10:2" } ], - "id": 718, + "id": 353, "name": "FunctionCall", - "src": "5700:75:4" + "src": "5700:75:2" } ], - "id": 719, + "id": 354, "name": "VariableDeclarationStatement", - "src": "5682:93:4" + "src": "5682:93:2" }, { "attributes": { "assignments": [ - 721 + 356 ] }, "children": [ @@ -3393,7 +3472,7 @@ "attributes": { "constant": false, "name": "instance", - "scope": 746, + "scope": 381, "stateVariable": false, "storageLocation": "default", "type": "contract ERC20Interface", @@ -3408,14 +3487,14 @@ "referencedDeclaration": 18, "type": "contract ERC20Interface" }, - "id": 720, + "id": 355, "name": "UserDefinedTypeName", - "src": "5786:14:4" + "src": "5786:14:2" } ], - "id": 721, + "id": 356, "name": "VariableDeclaration", - "src": "5786:23:4" + "src": "5786:23:2" }, { "attributes": { @@ -3447,9 +3526,9 @@ "type": "type(contract ERC20Interface)", "value": "ERC20Interface" }, - "id": 722, + "id": 357, "name": "Identifier", - "src": "5812:14:4" + "src": "5812:14:2" }, { "attributes": { @@ -3457,23 +3536,23 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 690, + "referencedDeclaration": 325, "type": "address", "value": "tokenContractAddress" }, - "id": 723, + "id": 358, "name": "Identifier", - "src": "5827:20:4" + "src": "5827:20:2" } ], - "id": 724, + "id": 359, "name": "FunctionCall", - "src": "5812:36:4" + "src": "5812:36:2" } ], - "id": 725, + "id": 360, "name": "VariableDeclarationStatement", - "src": "5786:62:4" + "src": "5786:62:2" }, { "attributes": { @@ -3534,18 +3613,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 721, + "referencedDeclaration": 356, "type": "contract ERC20Interface", "value": "instance" }, - "id": 726, + "id": 361, "name": "Identifier", - "src": "5859:8:4" + "src": "5859:8:2" } ], - "id": 727, + "id": 362, "name": "MemberAccess", - "src": "5859:17:4" + "src": "5859:17:2" }, { "attributes": { @@ -3553,13 +3632,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 686, + "referencedDeclaration": 321, "type": "address", "value": "toAddress" }, - "id": 728, + "id": 363, "name": "Identifier", - "src": "5877:9:4" + "src": "5877:9:2" }, { "attributes": { @@ -3567,41 +3646,41 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 688, + "referencedDeclaration": 323, "type": "uint256", "value": "value" }, - "id": 729, + "id": 364, "name": "Identifier", - "src": "5888:5:4" + "src": "5888:5:2" } ], - "id": 730, + "id": 365, "name": "FunctionCall", - "src": "5859:35:4" + "src": "5859:35:2" } ], - "id": 731, + "id": 366, "name": "UnaryOperation", - "src": "5858:36:4" + "src": "5858:36:2" }, { "children": [ { "children": [], - "id": 732, + "id": 367, "name": "Throw", - "src": "5906:5:4" + "src": "5906:5:2" } ], - "id": 733, + "id": 368, "name": "Block", - "src": "5896:22:4" + "src": "5896:22:2" } ], - "id": 734, + "id": 369, "name": "IfStatement", - "src": "5854:64:4" + "src": "5854:64:2" }, { "children": [ @@ -3651,13 +3730,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 551, + "referencedDeclaration": 186, "type": "function (address,address,bytes32,address,uint256,address)", "value": "TokenTransacted" }, - "id": 735, + "id": 370, "name": "Identifier", - "src": "5923:15:4" + "src": "5923:15:2" }, { "attributes": { @@ -3677,18 +3756,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1038, + "referencedDeclaration": 673, "type": "msg", "value": "msg" }, - "id": 736, + "id": 371, "name": "Identifier", - "src": "5939:3:4" + "src": "5939:3:2" } ], - "id": 737, + "id": 372, "name": "MemberAccess", - "src": "5939:10:4" + "src": "5939:10:2" }, { "attributes": { @@ -3696,13 +3775,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 711, + "referencedDeclaration": 346, "type": "address", "value": "otherSigner" }, - "id": 738, + "id": 373, "name": "Identifier", - "src": "5951:11:4" + "src": "5951:11:2" }, { "attributes": { @@ -3710,13 +3789,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 701, + "referencedDeclaration": 336, "type": "bytes32", "value": "operationHash" }, - "id": 739, + "id": 374, "name": "Identifier", - "src": "5964:13:4" + "src": "5964:13:2" }, { "attributes": { @@ -3724,13 +3803,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 686, + "referencedDeclaration": 321, "type": "address", "value": "toAddress" }, - "id": 740, + "id": 375, "name": "Identifier", - "src": "5979:9:4" + "src": "5979:9:2" }, { "attributes": { @@ -3738,13 +3817,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 688, + "referencedDeclaration": 323, "type": "uint256", "value": "value" }, - "id": 741, + "id": 376, "name": "Identifier", - "src": "5990:5:4" + "src": "5990:5:2" }, { "attributes": { @@ -3752,33 +3831,33 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 690, + "referencedDeclaration": 325, "type": "address", "value": "tokenContractAddress" }, - "id": 742, + "id": 377, "name": "Identifier", - "src": "5997:20:4" + "src": "5997:20:2" } ], - "id": 743, + "id": 378, "name": "FunctionCall", - "src": "5923:95:4" + "src": "5923:95:2" } ], - "id": 744, + "id": 379, "name": "ExpressionStatement", - "src": "5923:95:4" + "src": "5923:95:2" } ], - "id": 745, + "id": 380, "name": "Block", - "src": "5537:486:4" + "src": "5537:486:2" } ], - "id": 746, + "id": 381, "name": "FunctionDefinition", - "src": "5387:636:4" + "src": "5387:636:2" }, { "attributes": { @@ -3787,7 +3866,7 @@ "isConstructor": false, "name": "flushForwarderTokens", "payable": false, - "scope": 1026, + "scope": 661, "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" @@ -3799,7 +3878,7 @@ "attributes": { "constant": false, "name": "forwarderAddress", - "scope": 768, + "scope": 403, "stateVariable": false, "storageLocation": "default", "type": "address", @@ -3812,20 +3891,20 @@ "name": "address", "type": "address" }, - "id": 747, + "id": 382, "name": "ElementaryTypeName", - "src": "6376:7:4" + "src": "6376:7:2" } ], - "id": 748, + "id": 383, "name": "VariableDeclaration", - "src": "6376:24:4" + "src": "6376:24:2" }, { "attributes": { "constant": false, "name": "tokenContractAddress", - "scope": 768, + "scope": 403, "stateVariable": false, "storageLocation": "default", "type": "address", @@ -3838,19 +3917,19 @@ "name": "address", "type": "address" }, - "id": 749, + "id": 384, "name": "ElementaryTypeName", - "src": "6402:7:4" + "src": "6402:7:2" } ], - "id": 750, + "id": 385, "name": "VariableDeclaration", - "src": "6402:28:4" + "src": "6402:28:2" } ], - "id": 751, + "id": 386, "name": "ParameterList", - "src": "6375:56:4" + "src": "6375:56:2" }, { "attributes": { @@ -3859,9 +3938,9 @@ ] }, "children": [], - "id": 754, + "id": 389, "name": "ParameterList", - "src": "6443:0:4" + "src": "6443:0:2" }, { "attributes": { @@ -3876,25 +3955,25 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 576, + "referencedDeclaration": 211, "type": "modifier ()", "value": "onlysigner" }, - "id": 752, + "id": 387, "name": "Identifier", - "src": "6432:10:4" + "src": "6432:10:2" } ], - "id": 753, + "id": 388, "name": "ModifierInvocation", - "src": "6432:10:4" + "src": "6432:10:2" }, { "children": [ { "attributes": { "assignments": [ - 756 + 391 ] }, "children": [ @@ -3902,7 +3981,7 @@ "attributes": { "constant": false, "name": "forwarder", - "scope": 768, + "scope": 403, "stateVariable": false, "storageLocation": "default", "type": "contract Forwarder", @@ -3914,17 +3993,17 @@ "attributes": { "contractScope": null, "name": "Forwarder", - "referencedDeclaration": 507, + "referencedDeclaration": 142, "type": "contract Forwarder" }, - "id": 755, + "id": 390, "name": "UserDefinedTypeName", - "src": "6453:9:4" + "src": "6453:9:2" } ], - "id": 756, + "id": 391, "name": "VariableDeclaration", - "src": "6453:19:4" + "src": "6453:19:2" }, { "attributes": { @@ -3952,13 +4031,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 507, + "referencedDeclaration": 142, "type": "type(contract Forwarder)", "value": "Forwarder" }, - "id": 757, + "id": 392, "name": "Identifier", - "src": "6475:9:4" + "src": "6475:9:2" }, { "attributes": { @@ -3966,23 +4045,23 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 748, + "referencedDeclaration": 383, "type": "address", "value": "forwarderAddress" }, - "id": 758, + "id": 393, "name": "Identifier", - "src": "6485:16:4" + "src": "6485:16:2" } ], - "id": 759, + "id": 394, "name": "FunctionCall", - "src": "6475:27:4" + "src": "6475:27:2" } ], - "id": 760, + "id": 395, "name": "VariableDeclarationStatement", - "src": "6453:49:4" + "src": "6453:49:2" }, { "children": [ @@ -4014,7 +4093,7 @@ "isPure": false, "lValueRequested": false, "member_name": "flushTokens", - "referencedDeclaration": 492, + "referencedDeclaration": 127, "type": "function (address) external" }, "children": [ @@ -4024,18 +4103,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 756, + "referencedDeclaration": 391, "type": "contract Forwarder", "value": "forwarder" }, - "id": 761, + "id": 396, "name": "Identifier", - "src": "6508:9:4" + "src": "6508:9:2" } ], - "id": 763, + "id": 398, "name": "MemberAccess", - "src": "6508:21:4" + "src": "6508:21:2" }, { "attributes": { @@ -4043,33 +4122,33 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 750, + "referencedDeclaration": 385, "type": "address", "value": "tokenContractAddress" }, - "id": 764, + "id": 399, "name": "Identifier", - "src": "6530:20:4" + "src": "6530:20:2" } ], - "id": 765, + "id": 400, "name": "FunctionCall", - "src": "6508:43:4" + "src": "6508:43:2" } ], - "id": 766, + "id": 401, "name": "ExpressionStatement", - "src": "6508:43:4" + "src": "6508:43:2" } ], - "id": 767, + "id": 402, "name": "Block", - "src": "6443:113:4" + "src": "6443:113:2" } ], - "id": 768, + "id": 403, "name": "FunctionDefinition", - "src": "6346:210:4" + "src": "6346:210:2" }, { "attributes": { @@ -4081,10 +4160,10 @@ ], "name": "verifyMultiSig", "payable": false, - "scope": 1026, + "scope": 661, "stateMutability": "nonpayable", "superFunction": null, - "visibility": "public" + "visibility": "private" }, "children": [ { @@ -4093,7 +4172,7 @@ "attributes": { "constant": false, "name": "toAddress", - "scope": 826, + "scope": 461, "stateVariable": false, "storageLocation": "default", "type": "address", @@ -4106,20 +4185,20 @@ "name": "address", "type": "address" }, - "id": 769, + "id": 404, "name": "ElementaryTypeName", - "src": "7211:7:4" + "src": "7211:7:2" } ], - "id": 770, + "id": 405, "name": "VariableDeclaration", - "src": "7211:17:4" + "src": "7211:17:2" }, { "attributes": { "constant": false, "name": "operationHash", - "scope": 826, + "scope": 461, "stateVariable": false, "storageLocation": "default", "type": "bytes32", @@ -4132,20 +4211,20 @@ "name": "bytes32", "type": "bytes32" }, - "id": 771, + "id": 406, "name": "ElementaryTypeName", - "src": "7230:7:4" + "src": "7230:7:2" } ], - "id": 772, + "id": 407, "name": "VariableDeclaration", - "src": "7230:21:4" + "src": "7230:21:2" }, { "attributes": { "constant": false, "name": "signature", - "scope": 826, + "scope": 461, "stateVariable": false, "storageLocation": "default", "type": "bytes memory", @@ -4158,20 +4237,20 @@ "name": "bytes", "type": "bytes storage pointer" }, - "id": 773, + "id": 408, "name": "ElementaryTypeName", - "src": "7253:5:4" + "src": "7253:5:2" } ], - "id": 774, + "id": 409, "name": "VariableDeclaration", - "src": "7253:15:4" + "src": "7253:15:2" }, { "attributes": { "constant": false, "name": "expireTime", - "scope": 826, + "scope": 461, "stateVariable": false, "storageLocation": "default", "type": "uint256", @@ -4184,20 +4263,20 @@ "name": "uint", "type": "uint256" }, - "id": 775, + "id": 410, "name": "ElementaryTypeName", - "src": "7270:4:4" + "src": "7270:4:2" } ], - "id": 776, + "id": 411, "name": "VariableDeclaration", - "src": "7270:15:4" + "src": "7270:15:2" }, { "attributes": { "constant": false, "name": "sequenceId", - "scope": 826, + "scope": 461, "stateVariable": false, "storageLocation": "default", "type": "uint256", @@ -4210,19 +4289,19 @@ "name": "uint", "type": "uint256" }, - "id": 777, + "id": 412, "name": "ElementaryTypeName", - "src": "7287:4:4" + "src": "7287:4:2" } ], - "id": 778, + "id": 413, "name": "VariableDeclaration", - "src": "7287:15:4" + "src": "7287:15:2" } ], - "id": 779, + "id": 414, "name": "ParameterList", - "src": "7210:93:4" + "src": "7210:93:2" }, { "children": [ @@ -4230,7 +4309,7 @@ "attributes": { "constant": false, "name": "", - "scope": 826, + "scope": 461, "stateVariable": false, "storageLocation": "default", "type": "address", @@ -4243,26 +4322,26 @@ "name": "address", "type": "address" }, - "id": 780, + "id": 415, "name": "ElementaryTypeName", - "src": "7313:7:4" + "src": "7321:7:2" } ], - "id": 781, + "id": 416, "name": "VariableDeclaration", - "src": "7313:7:4" + "src": "7321:7:2" } ], - "id": 782, + "id": 417, "name": "ParameterList", - "src": "7312:9:4" + "src": "7320:9:2" }, { "children": [ { "attributes": { "assignments": [ - 783 + 418 ] }, "children": [ @@ -4270,7 +4349,7 @@ "attributes": { "constant": false, "name": "otherSigner", - "scope": 826, + "scope": 461, "stateVariable": false, "storageLocation": "default", "type": "address", @@ -4279,9 +4358,9 @@ "visibility": "internal" }, "children": [], - "id": 783, + "id": 418, "name": "VariableDeclaration", - "src": "7329:15:4" + "src": "7337:15:2" }, { "attributes": { @@ -4313,13 +4392,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 916, + "referencedDeclaration": 551, "type": "function (bytes32,bytes memory) returns (address)", "value": "recoverAddressFromSignature" }, - "id": 784, + "id": 419, "name": "Identifier", - "src": "7347:27:4" + "src": "7355:27:2" }, { "attributes": { @@ -4327,13 +4406,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 772, + "referencedDeclaration": 407, "type": "bytes32", "value": "operationHash" }, - "id": 785, + "id": 420, "name": "Identifier", - "src": "7375:13:4" + "src": "7383:13:2" }, { "attributes": { @@ -4341,23 +4420,23 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 774, + "referencedDeclaration": 409, "type": "bytes memory", "value": "signature" }, - "id": 786, + "id": 421, "name": "Identifier", - "src": "7390:9:4" + "src": "7398:9:2" } ], - "id": 787, + "id": 422, "name": "FunctionCall", - "src": "7347:53:4" + "src": "7355:53:2" } ], - "id": 788, + "id": 423, "name": "VariableDeclarationStatement", - "src": "7329:71:4" + "src": "7337:71:2" }, { "attributes": { @@ -4385,13 +4464,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 557, + "referencedDeclaration": 192, "type": "bool", "value": "safeMode" }, - "id": 789, + "id": 424, "name": "Identifier", - "src": "7499:8:4" + "src": "7507:8:2" }, { "attributes": { @@ -4431,13 +4510,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 873, + "referencedDeclaration": 508, "type": "function (address) returns (bool)", "value": "isSigner" }, - "id": 790, + "id": 425, "name": "Identifier", - "src": "7512:8:4" + "src": "7520:8:2" }, { "attributes": { @@ -4445,46 +4524,46 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 770, + "referencedDeclaration": 405, "type": "address", "value": "toAddress" }, - "id": 791, + "id": 426, "name": "Identifier", - "src": "7521:9:4" + "src": "7529:9:2" } ], - "id": 792, + "id": 427, "name": "FunctionCall", - "src": "7512:19:4" + "src": "7520:19:2" } ], - "id": 793, + "id": 428, "name": "UnaryOperation", - "src": "7511:20:4" + "src": "7519:20:2" } ], - "id": 794, + "id": 429, "name": "BinaryOperation", - "src": "7499:32:4" + "src": "7507:32:2" }, { "children": [ { "children": [], - "id": 795, + "id": 430, "name": "Throw", - "src": "7615:5:4" + "src": "7623:5:2" } ], - "id": 796, + "id": 431, "name": "Block", - "src": "7533:94:4" + "src": "7541:94:2" } ], - "id": 797, + "id": 432, "name": "IfStatement", - "src": "7495:132:4" + "src": "7503:132:2" }, { "attributes": { @@ -4512,13 +4591,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 776, + "referencedDeclaration": 411, "type": "uint256", "value": "expireTime" }, - "id": 798, + "id": 433, "name": "Identifier", - "src": "7687:10:4" + "src": "7695:10:2" }, { "attributes": { @@ -4538,41 +4617,41 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1030, + "referencedDeclaration": 665, "type": "block", "value": "block" }, - "id": 799, + "id": 434, "name": "Identifier", - "src": "7700:5:4" + "src": "7708:5:2" } ], - "id": 800, + "id": 435, "name": "MemberAccess", - "src": "7700:15:4" + "src": "7708:15:2" } ], - "id": 801, + "id": 436, "name": "BinaryOperation", - "src": "7687:28:4" + "src": "7695:28:2" }, { "children": [ { "children": [], - "id": 802, + "id": 437, "name": "Throw", - "src": "7754:5:4" + "src": "7762:5:2" } ], - "id": 803, + "id": 438, "name": "Block", - "src": "7717:49:4" + "src": "7725:49:2" } ], - "id": 804, + "id": 439, "name": "IfStatement", - "src": "7683:83:4" + "src": "7691:83:2" }, { "children": [ @@ -4602,13 +4681,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 986, + "referencedDeclaration": 621, "type": "function (uint256)", "value": "tryInsertSequenceId" }, - "id": 805, + "id": 440, "name": "Identifier", - "src": "7852:19:4" + "src": "7860:19:2" }, { "attributes": { @@ -4616,23 +4695,23 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 778, + "referencedDeclaration": 413, "type": "uint256", "value": "sequenceId" }, - "id": 806, + "id": 441, "name": "Identifier", - "src": "7872:10:4" + "src": "7880:10:2" } ], - "id": 807, + "id": 442, "name": "FunctionCall", - "src": "7852:31:4" + "src": "7860:31:2" } ], - "id": 808, + "id": 443, "name": "ExpressionStatement", - "src": "7852:31:4" + "src": "7860:31:2" }, { "attributes": { @@ -4677,13 +4756,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 873, + "referencedDeclaration": 508, "type": "function (address) returns (bool)", "value": "isSigner" }, - "id": 809, + "id": 444, "name": "Identifier", - "src": "7895:8:4" + "src": "7903:8:2" }, { "attributes": { @@ -4691,41 +4770,41 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 783, + "referencedDeclaration": 418, "type": "address", "value": "otherSigner" }, - "id": 810, + "id": 445, "name": "Identifier", - "src": "7904:11:4" + "src": "7912:11:2" } ], - "id": 811, + "id": 446, "name": "FunctionCall", - "src": "7895:21:4" + "src": "7903:21:2" } ], - "id": 812, + "id": 447, "name": "UnaryOperation", - "src": "7894:22:4" + "src": "7902:22:2" }, { "children": [ { "children": [], - "id": 813, + "id": 448, "name": "Throw", - "src": "8005:5:4" + "src": "8013:5:2" } ], - "id": 814, + "id": 449, "name": "Block", - "src": "7918:99:4" + "src": "7926:99:2" } ], - "id": 815, + "id": 450, "name": "IfStatement", - "src": "7890:127:4" + "src": "7898:127:2" }, { "attributes": { @@ -4753,13 +4832,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 783, + "referencedDeclaration": 418, "type": "address", "value": "otherSigner" }, - "id": 816, + "id": 451, "name": "Identifier", - "src": "8026:11:4" + "src": "8034:11:2" }, { "attributes": { @@ -4779,45 +4858,45 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1038, + "referencedDeclaration": 673, "type": "msg", "value": "msg" }, - "id": 817, + "id": 452, "name": "Identifier", - "src": "8041:3:4" + "src": "8049:3:2" } ], - "id": 818, + "id": 453, "name": "MemberAccess", - "src": "8041:10:4" + "src": "8049:10:2" } ], - "id": 819, + "id": 454, "name": "BinaryOperation", - "src": "8026:25:4" + "src": "8034:25:2" }, { "children": [ { "children": [], - "id": 820, + "id": 455, "name": "Throw", - "src": "8101:5:4" + "src": "8109:5:2" } ], - "id": 821, + "id": 456, "name": "Block", - "src": "8053:60:4" + "src": "8061:60:2" } ], - "id": 822, + "id": 457, "name": "IfStatement", - "src": "8022:91:4" + "src": "8030:91:2" }, { "attributes": { - "functionReturnParameters": 782 + "functionReturnParameters": 417 }, "children": [ { @@ -4826,28 +4905,28 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 783, + "referencedDeclaration": 418, "type": "address", "value": "otherSigner" }, - "id": 823, + "id": 458, "name": "Identifier", - "src": "8126:11:4" + "src": "8134:11:2" } ], - "id": 824, + "id": 459, "name": "Return", - "src": "8119:18:4" + "src": "8127:18:2" } ], - "id": 825, + "id": 460, "name": "Block", - "src": "7322:820:4" + "src": "7330:820:2" } ], - "id": 826, + "id": 461, "name": "FunctionDefinition", - "src": "7187:955:4" + "src": "7187:963:2" }, { "attributes": { @@ -4856,7 +4935,7 @@ "isConstructor": false, "name": "activateSafeMode", "payable": false, - "scope": 1026, + "scope": 661, "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" @@ -4869,9 +4948,9 @@ ] }, "children": [], - "id": 827, + "id": 462, "name": "ParameterList", - "src": "8301:2:4" + "src": "8309:2:2" }, { "attributes": { @@ -4880,9 +4959,9 @@ ] }, "children": [], - "id": 830, + "id": 465, "name": "ParameterList", - "src": "8315:0:4" + "src": "8323:0:2" }, { "attributes": { @@ -4897,18 +4976,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 576, + "referencedDeclaration": 211, "type": "modifier ()", "value": "onlysigner" }, - "id": 828, + "id": 463, "name": "Identifier", - "src": "8304:10:4" + "src": "8312:10:2" } ], - "id": 829, + "id": 464, "name": "ModifierInvocation", - "src": "8304:10:4" + "src": "8312:10:2" }, { "children": [ @@ -4931,13 +5010,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 557, + "referencedDeclaration": 192, "type": "bool", "value": "safeMode" }, - "id": 831, + "id": 466, "name": "Identifier", - "src": "8321:8:4" + "src": "8329:8:2" }, { "attributes": { @@ -4952,19 +5031,19 @@ "type": "bool", "value": "true" }, - "id": 832, + "id": 467, "name": "Literal", - "src": "8332:4:4" + "src": "8340:4:2" } ], - "id": 833, + "id": 468, "name": "Assignment", - "src": "8321:15:4" + "src": "8329:15:2" } ], - "id": 834, + "id": 469, "name": "ExpressionStatement", - "src": "8321:15:4" + "src": "8329:15:2" }, { "children": [ @@ -4994,13 +5073,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 523, + "referencedDeclaration": 158, "type": "function (address)", "value": "SafeModeActivated" }, - "id": 835, + "id": 470, "name": "Identifier", - "src": "8342:17:4" + "src": "8350:17:2" }, { "attributes": { @@ -5020,38 +5099,38 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1038, + "referencedDeclaration": 673, "type": "msg", "value": "msg" }, - "id": 836, + "id": 471, "name": "Identifier", - "src": "8360:3:4" + "src": "8368:3:2" } ], - "id": 837, + "id": 472, "name": "MemberAccess", - "src": "8360:10:4" + "src": "8368:10:2" } ], - "id": 838, + "id": 473, "name": "FunctionCall", - "src": "8342:29:4" + "src": "8350:29:2" } ], - "id": 839, + "id": 474, "name": "ExpressionStatement", - "src": "8342:29:4" + "src": "8350:29:2" } ], - "id": 840, + "id": 475, "name": "Block", - "src": "8315:61:4" + "src": "8323:61:2" } ], - "id": 841, + "id": 476, "name": "FunctionDefinition", - "src": "8276:100:4" + "src": "8284:100:2" }, { "attributes": { @@ -5063,7 +5142,7 @@ ], "name": "isSigner", "payable": false, - "scope": 1026, + "scope": 661, "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" @@ -5075,7 +5154,7 @@ "attributes": { "constant": false, "name": "signer", - "scope": 873, + "scope": 508, "stateVariable": false, "storageLocation": "default", "type": "address", @@ -5088,19 +5167,19 @@ "name": "address", "type": "address" }, - "id": 842, + "id": 477, "name": "ElementaryTypeName", - "src": "8567:7:4" + "src": "8575:7:2" } ], - "id": 843, + "id": 478, "name": "VariableDeclaration", - "src": "8567:14:4" + "src": "8575:14:2" } ], - "id": 844, + "id": 479, "name": "ParameterList", - "src": "8566:16:4" + "src": "8574:16:2" }, { "children": [ @@ -5108,7 +5187,7 @@ "attributes": { "constant": false, "name": "", - "scope": 873, + "scope": 508, "stateVariable": false, "storageLocation": "default", "type": "bool", @@ -5121,19 +5200,19 @@ "name": "bool", "type": "bool" }, - "id": 845, + "id": 480, "name": "ElementaryTypeName", - "src": "8592:4:4" + "src": "8600:4:2" } ], - "id": 846, + "id": 481, "name": "VariableDeclaration", - "src": "8592:4:4" + "src": "8600:4:2" } ], - "id": 847, + "id": 482, "name": "ParameterList", - "src": "8591:6:4" + "src": "8599:6:2" }, { "children": [ @@ -5142,7 +5221,7 @@ { "attributes": { "assignments": [ - 849 + 484 ] }, "children": [ @@ -5150,7 +5229,7 @@ "attributes": { "constant": false, "name": "i", - "scope": 873, + "scope": 508, "stateVariable": false, "storageLocation": "default", "type": "uint256", @@ -5163,14 +5242,14 @@ "name": "uint", "type": "uint256" }, - "id": 848, + "id": 483, "name": "ElementaryTypeName", - "src": "8662:4:4" + "src": "8670:4:2" } ], - "id": 849, + "id": 484, "name": "VariableDeclaration", - "src": "8662:6:4" + "src": "8670:6:2" }, { "attributes": { @@ -5185,14 +5264,14 @@ "type": "int_const 0", "value": "0" }, - "id": 850, + "id": 485, "name": "Literal", - "src": "8671:1:4" + "src": "8679:1:2" } ], - "id": 851, + "id": 486, "name": "VariableDeclarationStatement", - "src": "8662:10:4" + "src": "8670:10:2" }, { "attributes": { @@ -5215,13 +5294,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 849, + "referencedDeclaration": 484, "type": "uint256", "value": "i" }, - "id": 852, + "id": 487, "name": "Identifier", - "src": "8674:1:4" + "src": "8682:1:2" }, { "attributes": { @@ -5241,23 +5320,23 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 554, + "referencedDeclaration": 189, "type": "address[] storage ref", "value": "signers" }, - "id": 853, + "id": 488, "name": "Identifier", - "src": "8678:7:4" + "src": "8686:7:2" } ], - "id": 854, + "id": 489, "name": "MemberAccess", - "src": "8678:14:4" + "src": "8686:14:2" } ], - "id": 855, + "id": 490, "name": "BinaryOperation", - "src": "8674:18:4" + "src": "8682:18:2" }, { "children": [ @@ -5279,23 +5358,23 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 849, + "referencedDeclaration": 484, "type": "uint256", "value": "i" }, - "id": 856, + "id": 491, "name": "Identifier", - "src": "8694:1:4" + "src": "8702:1:2" } ], - "id": 857, + "id": 492, "name": "UnaryOperation", - "src": "8694:3:4" + "src": "8702:3:2" } ], - "id": 858, + "id": 493, "name": "ExpressionStatement", - "src": "8694:3:4" + "src": "8702:3:2" }, { "children": [ @@ -5335,13 +5414,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 554, + "referencedDeclaration": 189, "type": "address[] storage ref", "value": "signers" }, - "id": 859, + "id": 494, "name": "Identifier", - "src": "8711:7:4" + "src": "8719:7:2" }, { "attributes": { @@ -5349,18 +5428,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 849, + "referencedDeclaration": 484, "type": "uint256", "value": "i" }, - "id": 860, + "id": 495, "name": "Identifier", - "src": "8719:1:4" + "src": "8727:1:2" } ], - "id": 861, + "id": 496, "name": "IndexAccess", - "src": "8711:10:4" + "src": "8719:10:2" }, { "attributes": { @@ -5368,24 +5447,24 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 843, + "referencedDeclaration": 478, "type": "address", "value": "signer" }, - "id": 862, + "id": 497, "name": "Identifier", - "src": "8725:6:4" + "src": "8733:6:2" } ], - "id": 863, + "id": 498, "name": "BinaryOperation", - "src": "8711:20:4" + "src": "8719:20:2" }, { "children": [ { "attributes": { - "functionReturnParameters": 847 + "functionReturnParameters": 482 }, "children": [ { @@ -5401,38 +5480,38 @@ "type": "bool", "value": "true" }, - "id": 864, + "id": 499, "name": "Literal", - "src": "8750:4:4" + "src": "8758:4:2" } ], - "id": 865, + "id": 500, "name": "Return", - "src": "8743:11:4" + "src": "8751:11:2" } ], - "id": 866, + "id": 501, "name": "Block", - "src": "8733:30:4" + "src": "8741:30:2" } ], - "id": 867, + "id": 502, "name": "IfStatement", - "src": "8707:56:4" + "src": "8715:56:2" } ], - "id": 868, + "id": 503, "name": "Block", - "src": "8699:70:4" + "src": "8707:70:2" } ], - "id": 869, + "id": 504, "name": "ForStatement", - "src": "8657:112:4" + "src": "8665:112:2" }, { "attributes": { - "functionReturnParameters": 847 + "functionReturnParameters": 482 }, "children": [ { @@ -5448,24 +5527,24 @@ "type": "bool", "value": "false" }, - "id": 870, + "id": 505, "name": "Literal", - "src": "8781:5:4" + "src": "8789:5:2" } ], - "id": 871, + "id": 506, "name": "Return", - "src": "8774:12:4" + "src": "8782:12:2" } ], - "id": 872, + "id": 507, "name": "Block", - "src": "8598:193:4" + "src": "8606:193:2" } ], - "id": 873, + "id": 508, "name": "FunctionDefinition", - "src": "8549:242:4" + "src": "8557:242:2" }, { "attributes": { @@ -5477,10 +5556,10 @@ ], "name": "recoverAddressFromSignature", "payable": false, - "scope": 1026, + "scope": 661, "stateMutability": "nonpayable", "superFunction": null, - "visibility": "public" + "visibility": "private" }, "children": [ { @@ -5489,7 +5568,7 @@ "attributes": { "constant": false, "name": "operationHash", - "scope": 916, + "scope": 551, "stateVariable": false, "storageLocation": "default", "type": "bytes32", @@ -5502,20 +5581,20 @@ "name": "bytes32", "type": "bytes32" }, - "id": 874, + "id": 509, "name": "ElementaryTypeName", - "src": "9162:7:4" + "src": "9170:7:2" } ], - "id": 875, + "id": 510, "name": "VariableDeclaration", - "src": "9162:21:4" + "src": "9170:21:2" }, { "attributes": { "constant": false, "name": "signature", - "scope": 916, + "scope": 551, "stateVariable": false, "storageLocation": "default", "type": "bytes memory", @@ -5528,19 +5607,19 @@ "name": "bytes", "type": "bytes storage pointer" }, - "id": 876, + "id": 511, "name": "ElementaryTypeName", - "src": "9185:5:4" + "src": "9193:5:2" } ], - "id": 877, + "id": 512, "name": "VariableDeclaration", - "src": "9185:15:4" + "src": "9193:15:2" } ], - "id": 878, + "id": 513, "name": "ParameterList", - "src": "9161:40:4" + "src": "9169:40:2" }, { "children": [ @@ -5548,7 +5627,7 @@ "attributes": { "constant": false, "name": "", - "scope": 916, + "scope": 551, "stateVariable": false, "storageLocation": "default", "type": "address", @@ -5561,19 +5640,19 @@ "name": "address", "type": "address" }, - "id": 879, + "id": 514, "name": "ElementaryTypeName", - "src": "9211:7:4" + "src": "9227:7:2" } ], - "id": 880, + "id": 515, "name": "VariableDeclaration", - "src": "9211:7:4" + "src": "9227:7:2" } ], - "id": 881, + "id": 516, "name": "ParameterList", - "src": "9210:9:4" + "src": "9226:9:2" }, { "children": [ @@ -5615,18 +5694,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 877, + "referencedDeclaration": 512, "type": "bytes memory", "value": "signature" }, - "id": 882, + "id": 517, "name": "Identifier", - "src": "9230:9:4" + "src": "9246:9:2" } ], - "id": 883, + "id": 518, "name": "MemberAccess", - "src": "9230:16:4" + "src": "9246:16:2" }, { "attributes": { @@ -5641,32 +5720,32 @@ "type": "int_const 65", "value": "65" }, - "id": 884, + "id": 519, "name": "Literal", - "src": "9250:2:4" + "src": "9266:2:2" } ], - "id": 885, + "id": 520, "name": "BinaryOperation", - "src": "9230:22:4" + "src": "9246:22:2" }, { "children": [ { "children": [], - "id": 886, + "id": 521, "name": "Throw", - "src": "9262:5:4" + "src": "9278:5:2" } ], - "id": 887, + "id": 522, "name": "Block", - "src": "9254:20:4" + "src": "9270:20:2" } ], - "id": 888, + "id": 523, "name": "IfStatement", - "src": "9226:48:4" + "src": "9242:48:2" }, { "attributes": { @@ -5680,7 +5759,7 @@ "attributes": { "constant": false, "name": "r", - "scope": 916, + "scope": 551, "stateVariable": false, "storageLocation": "default", "type": "bytes32", @@ -5693,19 +5772,19 @@ "name": "bytes32", "type": "bytes32" }, - "id": 889, + "id": 524, "name": "ElementaryTypeName", - "src": "9374:7:4" + "src": "9390:7:2" } ], - "id": 890, + "id": 525, "name": "VariableDeclaration", - "src": "9374:9:4" + "src": "9390:9:2" } ], - "id": 891, + "id": 526, "name": "VariableDeclarationStatement", - "src": "9374:9:4" + "src": "9390:9:2" }, { "attributes": { @@ -5719,7 +5798,7 @@ "attributes": { "constant": false, "name": "s", - "scope": 916, + "scope": 551, "stateVariable": false, "storageLocation": "default", "type": "bytes32", @@ -5732,19 +5811,19 @@ "name": "bytes32", "type": "bytes32" }, - "id": 892, + "id": 527, "name": "ElementaryTypeName", - "src": "9389:7:4" + "src": "9405:7:2" } ], - "id": 893, + "id": 528, "name": "VariableDeclaration", - "src": "9389:9:4" + "src": "9405:9:2" } ], - "id": 894, + "id": 529, "name": "VariableDeclarationStatement", - "src": "9389:9:4" + "src": "9405:9:2" }, { "attributes": { @@ -5758,7 +5837,7 @@ "attributes": { "constant": false, "name": "v", - "scope": 916, + "scope": 551, "stateVariable": false, "storageLocation": "default", "type": "uint8", @@ -5771,74 +5850,74 @@ "name": "uint8", "type": "uint8" }, - "id": 895, + "id": 530, "name": "ElementaryTypeName", - "src": "9404:5:4" + "src": "9420:5:2" } ], - "id": 896, + "id": 531, "name": "VariableDeclaration", - "src": "9404:7:4" + "src": "9420:7:2" } ], - "id": 897, + "id": 532, "name": "VariableDeclarationStatement", - "src": "9404:7:4" + "src": "9420:7:2" }, { "attributes": { "externalReferences": [ { "r": { - "declaration": 890, + "declaration": 525, "isOffset": false, "isSlot": false, - "src": "9434:1:4", + "src": "9450:1:2", "valueSize": 1 } }, { "signature": { - "declaration": 877, + "declaration": 512, "isOffset": false, "isSlot": false, - "src": "9449:9:4", + "src": "9465:9:2", "valueSize": 1 } }, { "s": { - "declaration": 893, + "declaration": 528, "isOffset": false, "isSlot": false, - "src": "9471:1:4", + "src": "9487:1:2", "valueSize": 1 } }, { "v": { - "declaration": 896, + "declaration": 531, "isOffset": false, "isSlot": false, - "src": "9508:1:4", + "src": "9524:1:2", "valueSize": 1 } }, { "signature": { - "declaration": 877, + "declaration": 512, "isOffset": false, "isSlot": false, - "src": "9486:9:4", + "src": "9502:9:2", "valueSize": 1 } }, { "signature": { - "declaration": 877, + "declaration": 512, "isOffset": false, "isSlot": false, - "src": "9527:9:4", + "src": "9543:9:2", "valueSize": 1 } } @@ -5846,9 +5925,9 @@ "operations": "{\n r := mload(add(signature, 32))\n s := mload(add(signature, 64))\n v := and(mload(add(signature, 65)), 255)\n}" }, "children": [], - "id": 898, + "id": 533, "name": "InlineAssembly", - "src": "9417:144:4" + "src": "9433:144:2" }, { "attributes": { @@ -5876,13 +5955,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 896, + "referencedDeclaration": 531, "type": "uint8", "value": "v" }, - "id": 899, + "id": 534, "name": "Identifier", - "src": "9563:1:4" + "src": "9579:1:2" }, { "attributes": { @@ -5897,14 +5976,14 @@ "type": "int_const 27", "value": "27" }, - "id": 900, + "id": 535, "name": "Literal", - "src": "9567:2:4" + "src": "9583:2:2" } ], - "id": 901, + "id": 536, "name": "BinaryOperation", - "src": "9563:6:4" + "src": "9579:6:2" }, { "children": [ @@ -5927,13 +6006,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 896, + "referencedDeclaration": 531, "type": "uint8", "value": "v" }, - "id": 902, + "id": 537, "name": "Identifier", - "src": "9579:1:4" + "src": "9595:1:2" }, { "attributes": { @@ -5948,33 +6027,33 @@ "type": "int_const 27", "value": "27" }, - "id": 903, + "id": 538, "name": "Literal", - "src": "9584:2:4" + "src": "9600:2:2" } ], - "id": 904, + "id": 539, "name": "Assignment", - "src": "9579:7:4" + "src": "9595:7:2" } ], - "id": 905, + "id": 540, "name": "ExpressionStatement", - "src": "9579:7:4" + "src": "9595:7:2" } ], - "id": 906, + "id": 541, "name": "Block", - "src": "9571:117:4" + "src": "9587:117:2" } ], - "id": 907, + "id": 542, "name": "IfStatement", - "src": "9559:129:4" + "src": "9575:129:2" }, { "attributes": { - "functionReturnParameters": 881 + "functionReturnParameters": 516 }, "children": [ { @@ -6015,13 +6094,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1031, + "referencedDeclaration": 666, "type": "function (bytes32,uint8,bytes32,bytes32) pure returns (address)", "value": "ecrecover" }, - "id": 908, + "id": 543, "name": "Identifier", - "src": "9700:9:4" + "src": "9716:9:2" }, { "attributes": { @@ -6029,13 +6108,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 875, + "referencedDeclaration": 510, "type": "bytes32", "value": "operationHash" }, - "id": 909, + "id": 544, "name": "Identifier", - "src": "9710:13:4" + "src": "9726:13:2" }, { "attributes": { @@ -6043,13 +6122,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 896, + "referencedDeclaration": 531, "type": "uint8", "value": "v" }, - "id": 910, + "id": 545, "name": "Identifier", - "src": "9725:1:4" + "src": "9741:1:2" }, { "attributes": { @@ -6057,13 +6136,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 890, + "referencedDeclaration": 525, "type": "bytes32", "value": "r" }, - "id": 911, + "id": 546, "name": "Identifier", - "src": "9728:1:4" + "src": "9744:1:2" }, { "attributes": { @@ -6071,33 +6150,33 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 893, + "referencedDeclaration": 528, "type": "bytes32", "value": "s" }, - "id": 912, + "id": 547, "name": "Identifier", - "src": "9731:1:4" + "src": "9747:1:2" } ], - "id": 913, + "id": 548, "name": "FunctionCall", - "src": "9700:33:4" + "src": "9716:33:2" } ], - "id": 914, + "id": 549, "name": "Return", - "src": "9693:40:4" + "src": "9709:40:2" } ], - "id": 915, + "id": 550, "name": "Block", - "src": "9220:518:4" + "src": "9236:518:2" } ], - "id": 916, + "id": 551, "name": "FunctionDefinition", - "src": "9125:613:4" + "src": "9133:621:2" }, { "attributes": { @@ -6106,10 +6185,10 @@ "isConstructor": false, "name": "tryInsertSequenceId", "payable": false, - "scope": 1026, + "scope": 661, "stateMutability": "nonpayable", "superFunction": null, - "visibility": "public" + "visibility": "private" }, "children": [ { @@ -6118,7 +6197,7 @@ "attributes": { "constant": false, "name": "sequenceId", - "scope": 986, + "scope": 621, "stateVariable": false, "storageLocation": "default", "type": "uint256", @@ -6131,19 +6210,19 @@ "name": "uint", "type": "uint256" }, - "id": 917, + "id": 552, "name": "ElementaryTypeName", - "src": "10126:4:4" + "src": "10142:4:2" } ], - "id": 918, + "id": 553, "name": "VariableDeclaration", - "src": "10126:15:4" + "src": "10142:15:2" } ], - "id": 919, + "id": 554, "name": "ParameterList", - "src": "10125:17:4" + "src": "10141:17:2" }, { "attributes": { @@ -6152,9 +6231,9 @@ ] }, "children": [], - "id": 922, + "id": 557, "name": "ParameterList", - "src": "10154:0:4" + "src": "10178:0:2" }, { "attributes": { @@ -6169,25 +6248,25 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 576, + "referencedDeclaration": 211, "type": "modifier ()", "value": "onlysigner" }, - "id": 920, + "id": 555, "name": "Identifier", - "src": "10143:10:4" + "src": "10159:10:2" } ], - "id": 921, + "id": 556, "name": "ModifierInvocation", - "src": "10143:10:4" + "src": "10159:10:2" }, { "children": [ { "attributes": { "assignments": [ - 924 + 559 ] }, "children": [ @@ -6195,7 +6274,7 @@ "attributes": { "constant": false, "name": "lowestValueIndex", - "scope": 986, + "scope": 621, "stateVariable": false, "storageLocation": "default", "type": "uint256", @@ -6208,14 +6287,14 @@ "name": "uint", "type": "uint256" }, - "id": 923, + "id": 558, "name": "ElementaryTypeName", - "src": "10224:4:4" + "src": "10248:4:2" } ], - "id": 924, + "id": 559, "name": "VariableDeclaration", - "src": "10224:21:4" + "src": "10248:21:2" }, { "attributes": { @@ -6230,21 +6309,21 @@ "type": "int_const 0", "value": "0" }, - "id": 925, + "id": 560, "name": "Literal", - "src": "10248:1:4" + "src": "10272:1:2" } ], - "id": 926, + "id": 561, "name": "VariableDeclarationStatement", - "src": "10224:25:4" + "src": "10248:25:2" }, { "children": [ { "attributes": { "assignments": [ - 928 + 563 ] }, "children": [ @@ -6252,7 +6331,7 @@ "attributes": { "constant": false, "name": "i", - "scope": 986, + "scope": 621, "stateVariable": false, "storageLocation": "default", "type": "uint256", @@ -6265,14 +6344,14 @@ "name": "uint", "type": "uint256" }, - "id": 927, + "id": 562, "name": "ElementaryTypeName", - "src": "10260:4:4" + "src": "10284:4:2" } ], - "id": 928, + "id": 563, "name": "VariableDeclaration", - "src": "10260:6:4" + "src": "10284:6:2" }, { "attributes": { @@ -6287,14 +6366,14 @@ "type": "int_const 0", "value": "0" }, - "id": 929, + "id": 564, "name": "Literal", - "src": "10269:1:4" + "src": "10293:1:2" } ], - "id": 930, + "id": 565, "name": "VariableDeclarationStatement", - "src": "10260:10:4" + "src": "10284:10:2" }, { "attributes": { @@ -6317,13 +6396,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 928, + "referencedDeclaration": 563, "type": "uint256", "value": "i" }, - "id": 931, + "id": 566, "name": "Identifier", - "src": "10272:1:4" + "src": "10296:1:2" }, { "attributes": { @@ -6331,18 +6410,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 560, + "referencedDeclaration": 195, "type": "uint256", "value": "SEQUENCE_ID_WINDOW_SIZE" }, - "id": 932, + "id": 567, "name": "Identifier", - "src": "10276:23:4" + "src": "10300:23:2" } ], - "id": 933, + "id": 568, "name": "BinaryOperation", - "src": "10272:27:4" + "src": "10296:27:2" }, { "children": [ @@ -6364,23 +6443,23 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 928, + "referencedDeclaration": 563, "type": "uint256", "value": "i" }, - "id": 934, + "id": 569, "name": "Identifier", - "src": "10301:1:4" + "src": "10325:1:2" } ], - "id": 935, + "id": 570, "name": "UnaryOperation", - "src": "10301:3:4" + "src": "10325:3:2" } ], - "id": 936, + "id": 571, "name": "ExpressionStatement", - "src": "10301:3:4" + "src": "10325:3:2" }, { "children": [ @@ -6420,13 +6499,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 564, + "referencedDeclaration": 199, "type": "uint256[10] storage ref", "value": "recentSequenceIds" }, - "id": 937, + "id": 572, "name": "Identifier", - "src": "10318:17:4" + "src": "10342:17:2" }, { "attributes": { @@ -6434,18 +6513,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 928, + "referencedDeclaration": 563, "type": "uint256", "value": "i" }, - "id": 938, + "id": 573, "name": "Identifier", - "src": "10336:1:4" + "src": "10360:1:2" } ], - "id": 939, + "id": 574, "name": "IndexAccess", - "src": "10318:20:4" + "src": "10342:20:2" }, { "attributes": { @@ -6453,36 +6532,36 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 918, + "referencedDeclaration": 553, "type": "uint256", "value": "sequenceId" }, - "id": 940, + "id": 575, "name": "Identifier", - "src": "10342:10:4" + "src": "10366:10:2" } ], - "id": 941, + "id": 576, "name": "BinaryOperation", - "src": "10318:34:4" + "src": "10342:34:2" }, { "children": [ { "children": [], - "id": 942, + "id": 577, "name": "Throw", - "src": "10424:5:4" + "src": "10448:5:2" } ], - "id": 943, + "id": 578, "name": "Block", - "src": "10354:84:4" + "src": "10378:84:2" } ], - "id": 944, + "id": 579, "name": "IfStatement", - "src": "10314:124:4" + "src": "10338:124:2" }, { "attributes": { @@ -6520,13 +6599,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 564, + "referencedDeclaration": 199, "type": "uint256[10] storage ref", "value": "recentSequenceIds" }, - "id": 945, + "id": 580, "name": "Identifier", - "src": "10449:17:4" + "src": "10473:17:2" }, { "attributes": { @@ -6534,18 +6613,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 928, + "referencedDeclaration": 563, "type": "uint256", "value": "i" }, - "id": 946, + "id": 581, "name": "Identifier", - "src": "10467:1:4" + "src": "10491:1:2" } ], - "id": 947, + "id": 582, "name": "IndexAccess", - "src": "10449:20:4" + "src": "10473:20:2" }, { "attributes": { @@ -6563,13 +6642,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 564, + "referencedDeclaration": 199, "type": "uint256[10] storage ref", "value": "recentSequenceIds" }, - "id": 948, + "id": 583, "name": "Identifier", - "src": "10472:17:4" + "src": "10496:17:2" }, { "attributes": { @@ -6577,23 +6656,23 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 924, + "referencedDeclaration": 559, "type": "uint256", "value": "lowestValueIndex" }, - "id": 949, + "id": 584, "name": "Identifier", - "src": "10490:16:4" + "src": "10514:16:2" } ], - "id": 950, + "id": 585, "name": "IndexAccess", - "src": "10472:35:4" + "src": "10496:35:2" } ], - "id": 951, + "id": 586, "name": "BinaryOperation", - "src": "10449:58:4" + "src": "10473:58:2" }, { "children": [ @@ -6616,13 +6695,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 924, + "referencedDeclaration": 559, "type": "uint256", "value": "lowestValueIndex" }, - "id": 952, + "id": 587, "name": "Identifier", - "src": "10519:16:4" + "src": "10543:16:2" }, { "attributes": { @@ -6630,43 +6709,43 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 928, + "referencedDeclaration": 563, "type": "uint256", "value": "i" }, - "id": 953, + "id": 588, "name": "Identifier", - "src": "10538:1:4" + "src": "10562:1:2" } ], - "id": 954, + "id": 589, "name": "Assignment", - "src": "10519:20:4" + "src": "10543:20:2" } ], - "id": 955, + "id": 590, "name": "ExpressionStatement", - "src": "10519:20:4" + "src": "10543:20:2" } ], - "id": 956, + "id": 591, "name": "Block", - "src": "10509:39:4" + "src": "10533:39:2" } ], - "id": 957, + "id": 592, "name": "IfStatement", - "src": "10445:103:4" + "src": "10469:103:2" } ], - "id": 958, + "id": 593, "name": "Block", - "src": "10306:248:4" + "src": "10330:248:2" } ], - "id": 959, + "id": 594, "name": "ForStatement", - "src": "10255:299:4" + "src": "10279:299:2" }, { "attributes": { @@ -6694,13 +6773,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 918, + "referencedDeclaration": 553, "type": "uint256", "value": "sequenceId" }, - "id": 960, + "id": 595, "name": "Identifier", - "src": "10563:10:4" + "src": "10587:10:2" }, { "attributes": { @@ -6718,13 +6797,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 564, + "referencedDeclaration": 199, "type": "uint256[10] storage ref", "value": "recentSequenceIds" }, - "id": 961, + "id": 596, "name": "Identifier", - "src": "10576:17:4" + "src": "10600:17:2" }, { "attributes": { @@ -6732,41 +6811,41 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 924, + "referencedDeclaration": 559, "type": "uint256", "value": "lowestValueIndex" }, - "id": 962, + "id": 597, "name": "Identifier", - "src": "10594:16:4" + "src": "10618:16:2" } ], - "id": 963, + "id": 598, "name": "IndexAccess", - "src": "10576:35:4" + "src": "10600:35:2" } ], - "id": 964, + "id": 599, "name": "BinaryOperation", - "src": "10563:48:4" + "src": "10587:48:2" }, { "children": [ { "children": [], - "id": 965, + "id": 600, "name": "Throw", - "src": "10766:5:4" + "src": "10790:5:2" } ], - "id": 966, + "id": 601, "name": "Block", - "src": "10613:165:4" + "src": "10637:165:2" } ], - "id": 967, + "id": 602, "name": "IfStatement", - "src": "10559:219:4" + "src": "10583:219:2" }, { "attributes": { @@ -6794,13 +6873,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 918, + "referencedDeclaration": 553, "type": "uint256", "value": "sequenceId" }, - "id": 968, + "id": 603, "name": "Identifier", - "src": "10787:10:4" + "src": "10811:10:2" }, { "attributes": { @@ -6844,13 +6923,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 564, + "referencedDeclaration": 199, "type": "uint256[10] storage ref", "value": "recentSequenceIds" }, - "id": 969, + "id": 604, "name": "Identifier", - "src": "10801:17:4" + "src": "10825:17:2" }, { "attributes": { @@ -6858,18 +6937,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 924, + "referencedDeclaration": 559, "type": "uint256", "value": "lowestValueIndex" }, - "id": 970, + "id": 605, "name": "Identifier", - "src": "10819:16:4" + "src": "10843:16:2" } ], - "id": 971, + "id": 606, "name": "IndexAccess", - "src": "10801:35:4" + "src": "10825:35:2" }, { "attributes": { @@ -6884,42 +6963,42 @@ "type": "int_const 10000", "value": "10000" }, - "id": 972, + "id": 607, "name": "Literal", - "src": "10839:5:4" + "src": "10863:5:2" } ], - "id": 973, + "id": 608, "name": "BinaryOperation", - "src": "10801:43:4" + "src": "10825:43:2" } ], - "id": 974, + "id": 609, "name": "TupleExpression", - "src": "10800:45:4" + "src": "10824:45:2" } ], - "id": 975, + "id": 610, "name": "BinaryOperation", - "src": "10787:58:4" + "src": "10811:58:2" }, { "children": [ { "children": [], - "id": 976, + "id": 611, "name": "Throw", - "src": "11020:5:4" + "src": "11044:5:2" } ], - "id": 977, + "id": 612, "name": "Block", - "src": "10847:185:4" + "src": "10871:185:2" } ], - "id": 978, + "id": 613, "name": "IfStatement", - "src": "10783:249:4" + "src": "10807:249:2" }, { "children": [ @@ -6950,13 +7029,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 564, + "referencedDeclaration": 199, "type": "uint256[10] storage ref", "value": "recentSequenceIds" }, - "id": 979, + "id": 614, "name": "Identifier", - "src": "11037:17:4" + "src": "11061:17:2" }, { "attributes": { @@ -6964,18 +7043,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 924, + "referencedDeclaration": 559, "type": "uint256", "value": "lowestValueIndex" }, - "id": 980, + "id": 615, "name": "Identifier", - "src": "11055:16:4" + "src": "11079:16:2" } ], - "id": 981, + "id": 616, "name": "IndexAccess", - "src": "11037:35:4" + "src": "11061:35:2" }, { "attributes": { @@ -6983,33 +7062,33 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 918, + "referencedDeclaration": 553, "type": "uint256", "value": "sequenceId" }, - "id": 982, + "id": 617, "name": "Identifier", - "src": "11075:10:4" + "src": "11099:10:2" } ], - "id": 983, + "id": 618, "name": "Assignment", - "src": "11037:48:4" + "src": "11061:48:2" } ], - "id": 984, + "id": 619, "name": "ExpressionStatement", - "src": "11037:48:4" + "src": "11061:48:2" } ], - "id": 985, + "id": 620, "name": "Block", - "src": "10154:936:4" + "src": "10178:936:2" } ], - "id": 986, + "id": 621, "name": "FunctionDefinition", - "src": "10097:993:4" + "src": "10113:1001:2" }, { "attributes": { @@ -7021,7 +7100,7 @@ ], "name": "getNextSequenceId", "payable": false, - "scope": 1026, + "scope": 661, "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" @@ -7034,9 +7113,9 @@ ] }, "children": [], - "id": 987, + "id": 622, "name": "ParameterList", - "src": "11287:2:4" + "src": "11311:2:2" }, { "children": [ @@ -7044,7 +7123,7 @@ "attributes": { "constant": false, "name": "", - "scope": 1025, + "scope": 660, "stateVariable": false, "storageLocation": "default", "type": "uint256", @@ -7057,26 +7136,26 @@ "name": "uint", "type": "uint256" }, - "id": 988, + "id": 623, "name": "ElementaryTypeName", - "src": "11299:4:4" + "src": "11323:4:2" } ], - "id": 989, + "id": 624, "name": "VariableDeclaration", - "src": "11299:4:4" + "src": "11323:4:2" } ], - "id": 990, + "id": 625, "name": "ParameterList", - "src": "11298:6:4" + "src": "11322:6:2" }, { "children": [ { "attributes": { "assignments": [ - 992 + 627 ] }, "children": [ @@ -7084,7 +7163,7 @@ "attributes": { "constant": false, "name": "highestSequenceId", - "scope": 1025, + "scope": 660, "stateVariable": false, "storageLocation": "default", "type": "uint256", @@ -7097,14 +7176,14 @@ "name": "uint", "type": "uint256" }, - "id": 991, + "id": 626, "name": "ElementaryTypeName", - "src": "11311:4:4" + "src": "11335:4:2" } ], - "id": 992, + "id": 627, "name": "VariableDeclaration", - "src": "11311:22:4" + "src": "11335:22:2" }, { "attributes": { @@ -7119,21 +7198,21 @@ "type": "int_const 0", "value": "0" }, - "id": 993, + "id": 628, "name": "Literal", - "src": "11336:1:4" + "src": "11360:1:2" } ], - "id": 994, + "id": 629, "name": "VariableDeclarationStatement", - "src": "11311:26:4" + "src": "11335:26:2" }, { "children": [ { "attributes": { "assignments": [ - 996 + 631 ] }, "children": [ @@ -7141,7 +7220,7 @@ "attributes": { "constant": false, "name": "i", - "scope": 1025, + "scope": 660, "stateVariable": false, "storageLocation": "default", "type": "uint256", @@ -7154,14 +7233,14 @@ "name": "uint", "type": "uint256" }, - "id": 995, + "id": 630, "name": "ElementaryTypeName", - "src": "11348:4:4" + "src": "11372:4:2" } ], - "id": 996, + "id": 631, "name": "VariableDeclaration", - "src": "11348:6:4" + "src": "11372:6:2" }, { "attributes": { @@ -7176,14 +7255,14 @@ "type": "int_const 0", "value": "0" }, - "id": 997, + "id": 632, "name": "Literal", - "src": "11357:1:4" + "src": "11381:1:2" } ], - "id": 998, + "id": 633, "name": "VariableDeclarationStatement", - "src": "11348:10:4" + "src": "11372:10:2" }, { "attributes": { @@ -7206,13 +7285,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 996, + "referencedDeclaration": 631, "type": "uint256", "value": "i" }, - "id": 999, + "id": 634, "name": "Identifier", - "src": "11360:1:4" + "src": "11384:1:2" }, { "attributes": { @@ -7220,18 +7299,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 560, + "referencedDeclaration": 195, "type": "uint256", "value": "SEQUENCE_ID_WINDOW_SIZE" }, - "id": 1000, + "id": 635, "name": "Identifier", - "src": "11364:23:4" + "src": "11388:23:2" } ], - "id": 1001, + "id": 636, "name": "BinaryOperation", - "src": "11360:27:4" + "src": "11384:27:2" }, { "children": [ @@ -7253,23 +7332,23 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 996, + "referencedDeclaration": 631, "type": "uint256", "value": "i" }, - "id": 1002, + "id": 637, "name": "Identifier", - "src": "11389:1:4" + "src": "11413:1:2" } ], - "id": 1003, + "id": 638, "name": "UnaryOperation", - "src": "11389:3:4" + "src": "11413:3:2" } ], - "id": 1004, + "id": 639, "name": "ExpressionStatement", - "src": "11389:3:4" + "src": "11413:3:2" }, { "children": [ @@ -7309,13 +7388,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 564, + "referencedDeclaration": 199, "type": "uint256[10] storage ref", "value": "recentSequenceIds" }, - "id": 1005, + "id": 640, "name": "Identifier", - "src": "11406:17:4" + "src": "11430:17:2" }, { "attributes": { @@ -7323,18 +7402,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 996, + "referencedDeclaration": 631, "type": "uint256", "value": "i" }, - "id": 1006, + "id": 641, "name": "Identifier", - "src": "11424:1:4" + "src": "11448:1:2" } ], - "id": 1007, + "id": 642, "name": "IndexAccess", - "src": "11406:20:4" + "src": "11430:20:2" }, { "attributes": { @@ -7342,18 +7421,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 992, + "referencedDeclaration": 627, "type": "uint256", "value": "highestSequenceId" }, - "id": 1008, + "id": 643, "name": "Identifier", - "src": "11429:17:4" + "src": "11453:17:2" } ], - "id": 1009, + "id": 644, "name": "BinaryOperation", - "src": "11406:40:4" + "src": "11430:40:2" }, { "children": [ @@ -7376,13 +7455,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 992, + "referencedDeclaration": 627, "type": "uint256", "value": "highestSequenceId" }, - "id": 1010, + "id": 645, "name": "Identifier", - "src": "11458:17:4" + "src": "11482:17:2" }, { "attributes": { @@ -7400,13 +7479,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 564, + "referencedDeclaration": 199, "type": "uint256[10] storage ref", "value": "recentSequenceIds" }, - "id": 1011, + "id": 646, "name": "Identifier", - "src": "11478:17:4" + "src": "11502:17:2" }, { "attributes": { @@ -7414,52 +7493,52 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 996, + "referencedDeclaration": 631, "type": "uint256", "value": "i" }, - "id": 1012, + "id": 647, "name": "Identifier", - "src": "11496:1:4" + "src": "11520:1:2" } ], - "id": 1013, + "id": 648, "name": "IndexAccess", - "src": "11478:20:4" + "src": "11502:20:2" } ], - "id": 1014, + "id": 649, "name": "Assignment", - "src": "11458:40:4" + "src": "11482:40:2" } ], - "id": 1015, + "id": 650, "name": "ExpressionStatement", - "src": "11458:40:4" + "src": "11482:40:2" } ], - "id": 1016, + "id": 651, "name": "Block", - "src": "11448:59:4" + "src": "11472:59:2" } ], - "id": 1017, + "id": 652, "name": "IfStatement", - "src": "11402:105:4" + "src": "11426:105:2" } ], - "id": 1018, + "id": 653, "name": "Block", - "src": "11394:119:4" + "src": "11418:119:2" } ], - "id": 1019, + "id": 654, "name": "ForStatement", - "src": "11343:170:4" + "src": "11367:170:2" }, { "attributes": { - "functionReturnParameters": 990 + "functionReturnParameters": 625 }, "children": [ { @@ -7483,13 +7562,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 992, + "referencedDeclaration": 627, "type": "uint256", "value": "highestSequenceId" }, - "id": 1020, + "id": 655, "name": "Identifier", - "src": "11525:17:4" + "src": "11549:17:2" }, { "attributes": { @@ -7504,39 +7583,39 @@ "type": "int_const 1", "value": "1" }, - "id": 1021, + "id": 656, "name": "Literal", - "src": "11545:1:4" + "src": "11569:1:2" } ], - "id": 1022, + "id": 657, "name": "BinaryOperation", - "src": "11525:21:4" + "src": "11549:21:2" } ], - "id": 1023, + "id": 658, "name": "Return", - "src": "11518:28:4" + "src": "11542:28:2" } ], - "id": 1024, + "id": 659, "name": "Block", - "src": "11305:246:4" + "src": "11329:246:2" } ], - "id": 1025, + "id": 660, "name": "FunctionDefinition", - "src": "11261:290:4" + "src": "11285:290:2" } ], - "id": 1026, + "id": 661, "name": "ContractDefinition", - "src": "330:11223:4" + "src": "330:11247:2" } ], - "id": 1027, + "id": 662, "name": "SourceUnit", - "src": "0:11554:4" + "src": "0:11578:2" }, "compiler": { "name": "solc", @@ -7544,5 +7623,5 @@ }, "networks": {}, "schemaVersion": "1.0.1", - "updatedAt": "2017-11-14T17:11:41.235Z" + "updatedAt": "2017-11-15T15:21:22.275Z" } \ No newline at end of file diff --git a/contracts/Forwarder.sol b/contracts/Forwarder.sol index ed20137..1be1647 100644 --- a/contracts/Forwarder.sol +++ b/contracts/Forwarder.sol @@ -1,4 +1,4 @@ -pragma solidity ^0.4.11; +pragma solidity ^0.4.18; import "./ERC20Interface.sol"; /** * Contract that will forward any incoming Ether to its creator diff --git a/contracts/WalletSimple.sol b/contracts/WalletSimple.sol index 300e629..833dc5d 100644 --- a/contracts/WalletSimple.sol +++ b/contracts/WalletSimple.sol @@ -1,4 +1,4 @@ -pragma solidity ^0.4.11; +pragma solidity ^0.4.18; import "./Forwarder.sol"; import "./ERC20Interface.sol"; /**