UNPKG

@reality.eth/contracts

Version:

Collection of smart contracts for the Realitio fact verification platform

540 lines 1.08 MB
{ "contractName": "MultiSigWallet", "abi": [ { "constant": true, "inputs": [ { "name": "", "type": "uint256" } ], "name": "owners", "outputs": [ { "name": "", "type": "address" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [ { "name": "", "type": "address" } ], "name": "isOwner", "outputs": [ { "name": "", "type": "bool" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [ { "name": "", "type": "uint256" }, { "name": "", "type": "address" } ], "name": "confirmations", "outputs": [ { "name": "", "type": "bool" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [ { "name": "", "type": "uint256" } ], "name": "transactions", "outputs": [ { "name": "destination", "type": "address" }, { "name": "value", "type": "uint256" }, { "name": "data", "type": "bytes" }, { "name": "executed", "type": "bool" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "transactionCount", "outputs": [ { "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "MAX_OWNER_COUNT", "outputs": [ { "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "required", "outputs": [ { "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "inputs": [ { "name": "_owners", "type": "address[]" }, { "name": "_required", "type": "uint256" } ], "payable": false, "stateMutability": "nonpayable", "type": "constructor" }, { "payable": true, "stateMutability": "payable", "type": "fallback" }, { "anonymous": false, "inputs": [ { "indexed": true, "name": "sender", "type": "address" }, { "indexed": true, "name": "transactionId", "type": "uint256" } ], "name": "Confirmation", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "name": "sender", "type": "address" }, { "indexed": true, "name": "transactionId", "type": "uint256" } ], "name": "Revocation", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "name": "transactionId", "type": "uint256" } ], "name": "Submission", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "name": "transactionId", "type": "uint256" } ], "name": "Execution", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "name": "transactionId", "type": "uint256" } ], "name": "ExecutionFailure", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "name": "sender", "type": "address" }, { "indexed": false, "name": "value", "type": "uint256" } ], "name": "Deposit", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "name": "owner", "type": "address" } ], "name": "OwnerAddition", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "name": "owner", "type": "address" } ], "name": "OwnerRemoval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "name": "required", "type": "uint256" } ], "name": "RequirementChange", "type": "event" }, { "constant": false, "inputs": [ { "name": "owner", "type": "address" } ], "name": "addOwner", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "name": "owner", "type": "address" } ], "name": "removeOwner", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "name": "owner", "type": "address" }, { "name": "newOwner", "type": "address" } ], "name": "replaceOwner", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "name": "_required", "type": "uint256" } ], "name": "changeRequirement", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "name": "destination", "type": "address" }, { "name": "value", "type": "uint256" }, { "name": "data", "type": "bytes" } ], "name": "submitTransaction", "outputs": [ { "name": "transactionId", "type": "uint256" } ], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "name": "transactionId", "type": "uint256" } ], "name": "confirmTransaction", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "name": "transactionId", "type": "uint256" } ], "name": "revokeConfirmation", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "name": "transactionId", "type": "uint256" } ], "name": "executeTransaction", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": true, "inputs": [ { "name": "transactionId", "type": "uint256" } ], "name": "isConfirmed", "outputs": [ { "name": "", "type": "bool" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [ { "name": "transactionId", "type": "uint256" } ], "name": "getConfirmationCount", "outputs": [ { "name": "count", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [ { "name": "pending", "type": "bool" }, { "name": "executed", "type": "bool" } ], "name": "getTransactionCount", "outputs": [ { "name": "count", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "getOwners", "outputs": [ { "name": "", "type": "address[]" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [ { "name": "transactionId", "type": "uint256" } ], "name": "getConfirmations", "outputs": [ { "name": "_confirmations", "type": "address[]" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [ { "name": "from", "type": "uint256" }, { "name": "to", "type": "uint256" }, { "name": "pending", "type": "bool" }, { "name": "executed", "type": "bool" } ], "name": "getTransactionIds", "outputs": [ { "name": "_transactionIds", "type": "uint256[]" } ], "payable": false, "stateMutability": "view", "type": "function" } ], "bytecode": "0x60806040523480156200001157600080fd5b50604051620016ae380380620016ae83398101604052805160208201519101805190919060009082603282118015906200004b5750818111155b80156200005757508015155b80156200006357508115155b15156200006f57600080fd5b600092505b845183101562000147576002600086858151811015156200009157fe5b6020908102909101810151600160a060020a031682528101919091526040016000205460ff16158015620000e757508483815181101515620000cf57fe5b90602001906020020151600160a060020a0316600014155b1515620000f357600080fd5b60016002600087868151811015156200010857fe5b602090810291909101810151600160a060020a03168252810191909152604001600020805460ff19169115159190911790556001929092019162000074565b84516200015c9060039060208801906200016e565b50505060049190915550620002029050565b828054828255906000526020600020908101928215620001c6579160200282015b82811115620001c65782518254600160a060020a031916600160a060020a039091161782556020909201916001909101906200018f565b50620001d4929150620001d8565b5090565b620001ff91905b80821115620001d4578054600160a060020a0319168155600101620001df565b90565b61149c80620002126000396000f30060806040526004361061011c5763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663025e7c27811461015e578063173825d91461019257806320ea8d86146101b35780632f54bf6e146101cb5780633411c81c1461020057806354741525146102245780637065cb4814610255578063784547a7146102765780638b51d13f1461028e5780639ace38c2146102a6578063a0e67e2b14610361578063a8abe69a146103c6578063b5dc40c3146103eb578063b77bf60014610403578063ba51a6df14610418578063c01a8c8414610430578063c642747414610448578063d74f8edd146104b1578063dc8452cd146104c6578063e20056e6146104db578063ee22610b14610502575b600034111561015c5760408051348152905133917fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c919081900360200190a25b005b34801561016a57600080fd5b5061017660043561051a565b60408051600160a060020a039092168252519081900360200190f35b34801561019e57600080fd5b5061015c600160a060020a0360043516610542565b3480156101bf57600080fd5b5061015c6004356106b9565b3480156101d757600080fd5b506101ec600160a060020a0360043516610773565b604080519115158252519081900360200190f35b34801561020c57600080fd5b506101ec600435600160a060020a0360243516610788565b34801561023057600080fd5b50610243600435151560243515156107a8565b60408051918252519081900360200190f35b34801561026157600080fd5b5061015c600160a060020a0360043516610814565b34801561028257600080fd5b506101ec600435610939565b34801561029a57600080fd5b506102436004356109bd565b3480156102b257600080fd5b506102be600435610a2c565b6040518085600160a060020a0316600160a060020a031681526020018481526020018060200183151515158152602001828103825284818151815260200191508051906020019080838360005b8381101561032357818101518382015260200161030b565b50505050905090810190601f1680156103505780820380516001836020036101000a031916815260200191505b509550505050505060405180910390f35b34801561036d57600080fd5b50610376610aea565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156103b257818101518382015260200161039a565b505050509050019250505060405180910390f35b3480156103d257600080fd5b5061037660043560243560443515156064351515610b4d565b3480156103f757600080fd5b50610376600435610c86565b34801561040f57600080fd5b50610243610dff565b34801561042457600080fd5b5061015c600435610e05565b34801561043c57600080fd5b5061015c600435610e84565b34801561045457600080fd5b50604080516020600460443581810135601f8101849004840285018401909552848452610243948235600160a060020a0316946024803595369594606494920191908190840183828082843750949750610f4f9650505050505050565b3480156104bd57600080fd5b50610243610f64565b3480156104d257600080fd5b50610243610f69565b3480156104e757600080fd5b5061015c600160a060020a0360043581169060243516610f6f565b34801561050e57600080fd5b5061015c6004356110f9565b600380548290811061052857fe5b600091825260209091200154600160a060020a0316905081565b600033301461055057600080fd5b600160a060020a038216600090815260026020526040902054829060ff16151561057957600080fd5b600160a060020a0383166000908152600260205260408120805460ff1916905591505b600354600019018210156106545782600160a060020a03166003838154811015156105c357fe5b600091825260209091200154600160a060020a03161415610649576003805460001981019081106105f057fe5b60009182526020909120015460038054600160a060020a03909216918490811061061657fe5b9060005260206000200160006101000a815481600160a060020a030219169083600160a060020a03160217905550610654565b60019091019061059c565b60038054600019019061066790826113af565b5060035460045411156106805760035461068090610e05565b604051600160a060020a038416907f8001553a916ef2f495d26a907cc54d96ed840d7bda71e73194bf5a9df7a76b9090600090a2505050565b3360008181526002602052604090205460ff1615156106d757600080fd5b60008281526001602090815260408083203380855292529091205483919060ff16151561070357600080fd5b600084815260208190526040902060030154849060ff161561072457600080fd5b6000858152600160209081526040808320338085529252808320805460ff191690555187927ff6a317157440607f36269043eb55f1287a5a19ba2216afeab88cd46cbcfb88e991a35050505050565b60026020526000908152604090205460ff1681565b600160209081526000928352604080842090915290825290205460ff1681565b6000805b60055481101561080d578380156107d5575060008181526020819052604090206003015460ff16155b806107f957508280156107f9575060008181526020819052604090206003015460ff165b15610805576001820191505b6001016107ac565b5092915050565b33301461082057600080fd5b600160a060020a038116600090815260026020526040902054819060ff161561084857600080fd5b81600160a060020a038116151561085e57600080fd5b6003805490506001016004546032821115801561087b5750818111155b801561088657508015155b801561089157508115155b151561089c57600080fd5b600160a060020a038516600081815260026020526040808220805460ff1916600190811790915560038054918201815583527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b01805473ffffffffffffffffffffffffffffffffffffffff191684179055517ff39e6e1eb0edcf53c221607b54b00cd28f3196fed0a24994dc308b8f611b682d9190a25050505050565b600080805b6003548110156109b6576000848152600160205260408120600380549192918490811061096757fe5b6000918252602080832090910154600160a060020a0316835282019290925260400190205460ff161561099b576001820191505b6004548214156109ae57600192506109b6565b60010161093e565b5050919050565b6000805b600354811015610a2657600083815260016020526040812060038054919291849081106109ea57fe5b6000918252602080832090910154600160a060020a0316835282019290925260400190205460ff1615610a1e576001820191505b6001016109c1565b50919050565b6000602081815291815260409081902080546001808301546002808501805487516101009582161595909502600019011691909104601f8101889004880284018801909652858352600160a060020a0390931695909491929190830182828015610ad75780601f10610aac57610100808354040283529160200191610ad7565b820191906000526020600020905b815481529060010190602001808311610aba57829003601f168201915b5050506003909301549192505060ff1684565b60606003805480602002602001604051908101604052809291908181526020018280548015610b4257602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311610b24575b505050505090505b90565b606080600080600554604051908082528060200260200182016040528015610b7f578160200160208202803883390190505b50925060009150600090505b600554811015610c0657858015610bb4575060008181526020819052604090206003015460ff16155b80610bd85750848015610bd8575060008181526020819052604090206003015460ff165b15610bfe57808383815181101515610bec57fe5b60209081029091010152600191909101905b600101610b8b565b878703604051908082528060200260200182016040528015610c32578160200160208202803883390190505b5093508790505b86811015610c7b578281815181101515610c4f57fe5b9060200190602002015184898303815181101515610c6957fe5b60209081029091010152600101610c39565b505050949350505050565b606080600080600380549050604051908082528060200260200182016040528015610cbb578160200160208202803883390190505b50925060009150600090505b600354811015610d785760008581526001602052604081206003805491929184908110610cf057fe5b6000918252602080832090910154600160a060020a0316835282019290925260400190205460ff1615610d70576003805482908110610d2b57fe5b6000918252602090912001548351600160a060020a0390911690849084908110610d5157fe5b600160a060020a03909216602092830290910190910152600191909101905b600101610cc7565b81604051908082528060200260200182016040528015610da2578160200160208202803883390190505b509350600090505b81811015610df7578281815181101515610dc057fe5b906020019060200201518482815181101515610dd857fe5b600160a060020a03909216602092830290910190910152600101610daa565b505050919050565b60055481565b333014610e1157600080fd5b6003548160328211801590610e265750818111155b8015610e3157508015155b8015610e3c57508115155b1515610e4757600080fd5b60048390556040805184815290517fa3f1ee9126a074d9326c682f561767f710e927faa811f7a99829d49dc421797a9181900360200190a1505050565b3360008181526002602052604090205460ff161515610ea257600080fd5b6000828152602081905260409020548290600160a060020a03161515610ec757600080fd5b60008381526001602090815260408083203380855292529091205484919060ff1615610ef257600080fd5b6000858152600160208181526040808420338086529252808420805460ff1916909317909255905187927f4a504a94899432a9846e1aa406dceb1bcfd538bb839071d49d1e5e23f5be30ef91a3610f48856110f9565b5050505050565b6000610f5c8484846112b9565b949350505050565b603281565b60045481565b6000333014610f7d57600080fd5b600160a060020a038316600090815260026020526040902054839060ff161515610fa657600080fd5b600160a060020a038316600090815260026020526040902054839060ff1615610fce57600080fd5b600092505b60035483101561105f5784600160a060020a0316600384815481101515610ff657fe5b600091825260209091200154600160a060020a03161415611054578360038481548110151561102157fe5b9060005260206000200160006101000a815481600160a060020a030219169083600160a060020a0316021790555061105f565b600190920191610fd3565b600160a060020a03808616600081815260026020526040808220805460ff1990811690915593881682528082208054909416600117909355915190917f8001553a916ef2f495d26a907cc54d96ed840d7bda71e73194bf5a9df7a76b9091a2604051600160a060020a038516907ff39e6e1eb0edcf53c221607b54b00cd28f3196fed0a24994dc308b8f611b682d90600090a25050505050565b3360008181526002602052604081205490919060ff16151561111a57600080fd5b60008381526001602090815260408083203380855292529091205484919060ff16151561114657600080fd5b600085815260208190526040902060030154859060ff161561116757600080fd5b61117086610939565b156112b1576000868152602081815260409182902060038101805460ff19166001908117909155815481830154600280850180548851601f60001997831615610100029790970190911692909204948501879004870282018701909752838152939a5061124495600160a060020a039092169490939190839083018282801561123a5780601f1061120f5761010080835404028352916020019161123a565b820191906000526020600020905b81548152906001019060200180831161121d57829003601f168201915b505050505061138c565b156112795760405186907f33e13ecb54c3076d8e8bb8c2881800a4d972b792045ffae98fdf46df365fed7590600090a26112b1565b60405186907f526441bb6c1aba3c9a4a6ca1d6545da9c2333c8c48343ef398eb858d72b7923690600090a260038501805460ff191690555b505050505050565b60055460408051608081018252600160a060020a0386811682526020808301878152838501878152600060608601819052878152808452959095208451815473ffffffffffffffffffffffffffffffffffffffff19169416939093178355516001830155925180519293919261133592600285019201906113d8565b50606091909101516003909101805460ff191691151591909117905560058054600101905560405181907fc0ba8fe4b176c1714197d43b9cc6bcf797a4a7461c5fe8d0ef6e184ae7601e5190600090a29392505050565b6000806040516020840160008287838a8c6187965a03f198975050505050505050565b8154818355818111156113d3576000838152602090206113d3918101908301611456565b505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061141957805160ff1916838001178555611446565b82800160010185558215611446579182015b8281111561144657825182559160200191906001019061142b565b50611452929150611456565b5090565b610b4a91905b80821115611452576000815560010161145c5600a165627a7a723058202c5ae15c554f0e43df81ede409ce5142c1bcf9bca83d05da8cf1a7b1c73f9b310029", "deployedBytecode": "0x60806040526004361061011c5763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663025e7c27811461015e578063173825d91461019257806320ea8d86146101b35780632f54bf6e146101cb5780633411c81c1461020057806354741525146102245780637065cb4814610255578063784547a7146102765780638b51d13f1461028e5780639ace38c2146102a6578063a0e67e2b14610361578063a8abe69a146103c6578063b5dc40c3146103eb578063b77bf60014610403578063ba51a6df14610418578063c01a8c8414610430578063c642747414610448578063d74f8edd146104b1578063dc8452cd146104c6578063e20056e6146104db578063ee22610b14610502575b600034111561015c5760408051348152905133917fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c919081900360200190a25b005b34801561016a57600080fd5b5061017660043561051a565b60408051600160a060020a039092168252519081900360200190f35b34801561019e57600080fd5b5061015c600160a060020a0360043516610542565b3480156101bf57600080fd5b5061015c6004356106b9565b3480156101d757600080fd5b506101ec600160a060020a0360043516610773565b604080519115158252519081900360200190f35b34801561020c57600080fd5b506101ec600435600160a060020a0360243516610788565b34801561023057600080fd5b50610243600435151560243515156107a8565b60408051918252519081900360200190f35b34801561026157600080fd5b5061015c600160a060020a0360043516610814565b34801561028257600080fd5b506101ec600435610939565b34801561029a57600080fd5b506102436004356109bd565b3480156102b257600080fd5b506102be600435610a2c565b6040518085600160a060020a0316600160a060020a031681526020018481526020018060200183151515158152602001828103825284818151815260200191508051906020019080838360005b8381101561032357818101518382015260200161030b565b50505050905090810190601f1680156103505780820380516001836020036101000a031916815260200191505b509550505050505060405180910390f35b34801561036d57600080fd5b50610376610aea565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156103b257818101518382015260200161039a565b505050509050019250505060405180910390f35b3480156103d257600080fd5b5061037660043560243560443515156064351515610b4d565b3480156103f757600080fd5b50610376600435610c86565b34801561040f57600080fd5b50610243610dff565b34801561042457600080fd5b5061015c600435610e05565b34801561043c57600080fd5b5061015c600435610e84565b34801561045457600080fd5b50604080516020600460443581810135601f8101849004840285018401909552848452610243948235600160a060020a0316946024803595369594606494920191908190840183828082843750949750610f4f9650505050505050565b3480156104bd57600080fd5b50610243610f64565b3480156104d257600080fd5b50610243610f69565b3480156104e757600080fd5b5061015c600160a060020a0360043581169060243516610f6f565b34801561050e57600080fd5b5061015c6004356110f9565b600380548290811061052857fe5b600091825260209091200154600160a060020a0316905081565b600033301461055057600080fd5b600160a060020a038216600090815260026020526040902054829060ff16151561057957600080fd5b600160a060020a0383166000908152600260205260408120805460ff1916905591505b600354600019018210156106545782600160a060020a03166003838154811015156105c357fe5b600091825260209091200154600160a060020a03161415610649576003805460001981019081106105f057fe5b60009182526020909120015460038054600160a060020a03909216918490811061061657fe5b9060005260206000200160006101000a815481600160a060020a030219169083600160a060020a03160217905550610654565b60019091019061059c565b60038054600019019061066790826113af565b5060035460045411156106805760035461068090610e05565b604051600160a060020a038416907f8001553a916ef2f495d26a907cc54d96ed840d7bda71e73194bf5a9df7a76b9090600090a2505050565b3360008181526002602052604090205460ff1615156106d757600080fd5b60008281526001602090815260408083203380855292529091205483919060ff16151561070357600080fd5b600084815260208190526040902060030154849060ff161561072457600080fd5b6000858152600160209081526040808320338085529252808320805460ff191690555187927ff6a317157440607f36269043eb55f1287a5a19ba2216afeab88cd46cbcfb88e991a35050505050565b60026020526000908152604090205460ff1681565b600160209081526000928352604080842090915290825290205460ff1681565b6000805b60055481101561080d578380156107d5575060008181526020819052604090206003015460ff16155b806107f957508280156107f9575060008181526020819052604090206003015460ff165b15610805576001820191505b6001016107ac565b5092915050565b33301461082057600080fd5b600160a060020a038116600090815260026020526040902054819060ff161561084857600080fd5b81600160a060020a038116151561085e57600080fd5b6003805490506001016004546032821115801561087b5750818111155b801561088657508015155b801561089157508115155b151561089c57600080fd5b600160a060020a038516600081815260026020526040808220805460ff1916600190811790915560038054918201815583527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b01805473ffffffffffffffffffffffffffffffffffffffff191684179055517ff39e6e1eb0edcf53c221607b54b00cd28f3196fed0a24994dc308b8f611b682d9190a25050505050565b600080805b6003548110156109b6576000848152600160205260408120600380549192918490811061096757fe5b6000918252602080832090910154600160a060020a0316835282019290925260400190205460ff161561099b576001820191505b6004548214156109ae57600192506109b6565b60010161093e565b5050919050565b6000805b600354811015610a2657600083815260016020526040812060038054919291849081106109ea57fe5b6000918252602080832090910154600160a060020a0316835282019290925260400190205460ff1615610a1e576001820191505b6001016109c1565b50919050565b6000602081815291815260409081902080546001808301546002808501805487516101009582161595909502600019011691909104601f8101889004880284018801909652858352600160a060020a0390931695909491929190830182828015610ad75780601f10610aac57610100808354040283529160200191610ad7565b820191906000526020600020905b815481529060010190602001808311610aba57829003601f168201915b5050506003909301549192505060ff1684565b60606003805480602002602001604051908101604052809291908181526020018280548015610b4257602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311610b24575b505050505090505b90565b606080600080600554604051908082528060200260200182016040528015610b7f578160200160208202803883390190505b50925060009150600090505b600554811015610c0657858015610bb4575060008181526020819052604090206003015460ff16155b80610bd85750848015610bd8575060008181526020819052604090206003015460ff165b15610bfe57808383815181101515610bec57fe5b60209081029091010152600191909101905b600101610b8b565b878703604051908082528060200260200182016040528015610c32578160200160208202803883390190505b5093508790505b86811015610c7b578281815181101515610c4f57fe5b9060200190602002015184898303815181101515610c6957fe5b60209081029091010152600101610c39565b505050949350505050565b606080600080600380549050604051908082528060200260200182016040528015610cbb578160200160208202803883390190505b50925060009150600090505b600354811015610d785760008581526001602052604081206003805491929184908110610cf057fe5b6000918252602080832090910154600160a060020a0316835282019290925260400190205460ff1615610d70576003805482908110610d2b57fe5b6000918252602090912001548351600160a060020a0390911690849084908110610d5157fe5b600160a060020a03909216602092830290910190910152600191909101905b600101610cc7565b81604051908082528060200260200182016040528015610da2578160200160208202803883390190505b509350600090505b81811015610df7578281815181101515610dc057fe5b906020019060200201518482815181101515610dd857fe5b600160a060020a03909216602092830290910190910152600101610daa565b505050919050565b60055481565b333014610e1157600080fd5b6003548160328211801590610e265750818111155b8015610e3157508015155b8015610e3c57508115155b1515610e4757600080fd5b60048390556040805184815290517fa3f1ee9126a074d9326c682f561767f710e927faa811f7a99829d49dc421797a9181900360200190a1505050565b3360008181526002602052604090205460ff161515610ea257600080fd5b6000828152602081905260409020548290600160a060020a03161515610ec757600080fd5b60008381526001602090815260408083203380855292529091205484919060ff1615610ef257600080fd5b6000858152600160208181526040808420338086529252808420805460ff1916909317909255905187927f4a504a94899432a9846e1aa406dceb1bcfd538bb839071d49d1e5e23f5be30ef91a3610f48856110f9565b5050505050565b6000610f5c8484846112b9565b949350505050565b603281565b60045481565b6000333014610f7d57600080fd5b600160a060020a038316600090815260026020526040902054839060ff161515610fa657600080fd5b600160a060020a038316600090815260026020526040902054839060ff1615610fce57600080fd5b600092505b60035483101561105f5784600160a060020a0316600384815481101515610ff657fe5b600091825260209091200154600160a060020a03161415611054578360038481548110151561102157fe5b9060005260206000200160006101000a815481600160a060020a030219169083600160a060020a0316021790555061105f565b600190920191610fd3565b600160a060020a03808616600081815260026020526040808220805460ff1990811690915593881682528082208054909416600117909355915190917f8001553a916ef2f495d26a907cc54d96ed840d7bda71e73194bf5a9df7a76b9091a2604051600160a060020a038516907ff39e6e1eb0edcf53c221607b54b00cd28f3196fed0a24994dc308b8f611b682d90600090a25050505050565b3360008181526002602052604081205490919060ff16151561111a57600080fd5b60008381526001602090815260408083203380855292529091205484919060ff16151561114657600080fd5b600085815260208190526040902060030154859060ff161561116757600080fd5b61117086610939565b156112b1576000868152602081815260409182902060038101805460ff19166001908117909155815481830154600280850180548851601f60001997831615610100029790970190911692909204948501879004870282018701909752838152939a5061124495600160a060020a039092169490939190839083018282801561123a5780601f1061120f5761010080835404028352916020019161123a565b820191906000526020600020905b81548152906001019060200180831161121d57829003601f168201915b505050505061138c565b156112795760405186907f33e13ecb54c3076d8e8bb8c2881800a4d972b792045ffae98fdf46df365fed7590600090a26112b1565b60405186907f526441bb6c1aba3c9a4a6ca1d6545da9c2333c8c48343ef398eb858d72b7923690600090a260038501805460ff191690555b505050505050565b60055460408051608081018252600160a060020a0386811682526020808301878152838501878152600060608601819052878152808452959095208451815473ffffffffffffffffffffffffffffffffffffffff19169416939093178355516001830155925180519293919261133592600285019201906113d8565b50606091909101516003909101805460ff191691151591909117905560058054600101905560405181907fc0ba8fe4b176c1714197d43b9cc6bcf797a4a7461c5fe8d0ef6e184ae7601e5190600090a29392505050565b6000806040516020840160008287838a8c6187965a03f198975050505050505050565b8154818355818111156113d3576000838152602090206113d3918101908301611456565b505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061141957805160ff1916838001178555611446565b82800160010185558215611446579182015b8281111561144657825182559160200191906001019061142b565b50611452929150611456565b5090565b610b4a91905b80821115611452576000815560010161145c5600a165627a7a723058202c5ae15c554f0e43df81ede409ce5142c1bcf9bca83d05da8cf1a7b1c73f9b310029", "sourceMap": "187:12600:7:-;;;2816:353;8:9:-1;5:2;;;30:1;27;20:12;5:2;2816:353:7;;;;;;;;;;;;;;;;;;;;;;2915:14;;2816:353;;;2961:6;;2816:353;820:2;2254:29;;;;;:68;;;2312:10;2299:9;:23;;2254:68;:98;;;;-1:-1:-1;2338:14:7;;;2254:98;:129;;;;-1:-1:-1;2368:15:7;;;2254:129;2246:138;;;;;;;;2968:1;2961:8;;2956:151;2973:7;:14;2971:1;:16;2956:151;;;3017:7;:19;3025:7;3033:1;3025:10;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3017:19:7;;;;;;;;;;;-1:-1:-1;3017:19:7;;;;3016:20;:39;;;;;3040:7;3048:1;3040:10;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3040:15:7;3054:1;3040:15;;3016:39;3008:48;;;;;;;;3092:4;3070:7;:19;3078:7;3086:1;3078:10;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3070:19:7;;;;;;;;;;;-1:-1:-1;3070:19:7;:26;;-1:-1:-1;;3070:26:7;;;;;;;;;;-1:-1:-1;2989:3:7;;;;;2956:151;;;3116:16;;;;:6;;:16;;;;;:::i;:::-;-1:-1:-1;;;3142:8:7;:20;;;;-1:-1:-1;187:12600:7;;-1:-1:-1;187:12600:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;187:12600:7;-1:-1:-1;;;;;187:12600:7;;;;;;;;;;;-1:-1:-1;187:12600:7;;;;;;;-1:-1:-1;187:12600:7;;;-1:-1:-1;187:12600:7;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;;187:12600:7;;;;;;;;;:::o;:::-;;;;;;;", "deployedSourceMap": "187:12600:7:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2521:1;2509:9;:13;2505:61;;;2536:30;;;2556:9;2536:30;;;;2544:10;;2536:30;;;;;;;;;;2505:61;187:12600;1031:23;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1031:23:7;;;;;;;;;-1:-1:-1;;;;;1031:23:7;;;;;;;;;;;;;;3696:460;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;3696:460:7;-1:-1:-1;;;;;3696:460:7;;;;;6264:291;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;6264:291:7;;;;;985:40;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;985:40:7;-1:-1:-1;;;;;985:40:7;;;;;;;;;;;;;;;;;;;;;;;915:64;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;915:64:7;;;-1:-1:-1;;;;;915:64:7;;;;;10488:319;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;10488:319:7;;;;;;;;;;;;;;;;;;;;;;;;;;;3296:277;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;3296:277:7;-1:-1:-1;;;;;3296:277:7;;;;;8685:337;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;8685:337:7;;;;;9974:252;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;9974:252:7;;;;;860:49;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;860:49:7;;;;;;;;;;-1:-1:-1;;;;;860:49:7;-1:-1:-1;;;;;860:49:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;860:49:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10891:115;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10891:115:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;10891:115:7;;;;;;;;;;;;;;;;;12109:676;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;12109:676:7;;;;;;;;;;;;;;;11185:575;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;11185:575:7;;;;;1086:28;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1086:28:7;;;;4978:207;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;4978:207:7;;;;;5796:344;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;5796:344:7;;;;;5444:246;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;5444:246:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5444:246:7;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5444:246:7;;-1:-1:-1;5444:246:7;;-1:-1:-1;;;;;;;5444:246:7;781:41;;8:9:-1;5:2;;;30:1;27;20:12;5:2;781:41:7;;;;1060:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1060:20:7;;;;4358:449;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;4358:449:7;-1:-1:-1;;;;;4358:449:7;;;;;;;;;;6669:586;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;6669:586:7;;;;;1031:23;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1031:23:7;;-1:-1:-1;1031:23:7;:::o;3696:460::-;3844:6;1318:10;1340:4;1318:27;1310:36;;;;;;-1:-1:-1;;;;;1524:14:7;;;;;;:7;:14;;;;;;3786:5;;1524:14;;1516:23;;;;;;;;-1:-1:-1;;;;;3807:14:7;;3824:5;3807:14;;;:7;:14;;;;;:22;;-1:-1:-1;;3807:22:7;;;3824:5;-1:-1:-1;3839:170:7;3856:6;:13;-1:-1:-1;;3856:17:7;3854:19;;3839:170;;;3909:5;-1:-1:-1;;;;;3896:18:7;:6;3903:1;3896:9;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3896:9:7;:18;3892:117;;;3946:6;3953:13;;-1:-1:-1;;3953:17:7;;;3946:25;;;;;;;;;;;;;;;;3934:6;:9;;-1:-1:-1;;;;;3946:25:7;;;;3941:1;;3934:9;;;;;;;;;;;;;;:37;;;;;-1:-1:-1;;;;;3934:37:7;;;;;-1:-1:-1;;;;;3934:37:7;;;;;;3989:5;;3892:117;3875:3;;;;;3839:170;;;4018:6;:18;;-1:-1:-1;;4018:18:7;;;;;;:::i;:::-;-1:-1:-1;4061:6:7;:13;4050:8;;:24;4046:74;;;4106:6;:13;4088:32;;:17;:32::i;:::-;4130:19;;-1:-1:-1;;;;;4130:19:7;;;;;;;;1356:1;3696:460;;:::o;6264:291::-;6347:10;1524:14;;;;:7;:14;;;;;;;;1516:23;;;;;;;;1769:28;;;;:13;:28;;;;;;;;6392:10;1769:35;;;;;;;;;6377:13;;6392:10;1769:35;;1761:44;;;;;;;;2025:12;:27;;;;;;;;;;:36;;;6424:13;;2025:36;;2024:37;2016:46;;;;;;6496:5;6453:28;;;:13;:28;;;;;;;;6482:10;6453:40;;;;;;;;:48;;-1:-1:-1;;6453:48:7;;;6511:37;6467:13;;6511:37;;;1815:1;1549;;6264:291;;:::o;985:40::-;;;;;;;;;;;;;;;:::o;915:64::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;10488:319::-;10595:10;;10621:179;10638:16;;10636:1;:18;10621:179;;;10680:7;:36;;;;-1:-1:-1;10692:12:7;:15;;;;;;;;;;:24;;;;;10691:25;10680:36;:92;;;;10736:8;:36;;;;-1:-1:-1;10748:12:7;:15;;;;;;;;;;:24;;;;;10736:36;10673:127;;;10799:1;10790:10;;;;10673:127;10656:3;;10621:179;;;10488:319;;;;;:::o;3296:277::-;1318:10;1340:4;1318:27;1310:36;;;;;;-1:-1:-1;;;;;1431:14:7;;;;;;:7;:14;;;;;;3389:5;;1431:14;;1430:15;1422:24;;;;;;3412:5;-1:-1:-1;;;;;2139:13:7;;;;2131:22;;;;;;3444:6;:13;;;;3460:1;3444:17;3463:8;;820:2;2254:10;:29;;:68;;;;;2312:10;2299:9;:23;;2254:68;:98;;;;-1:-1:-1;2338:14:7;;;2254:98;:129;;;;-1:-1:-1;2368:15:7;;;2254:129;2246:138;;;;;;;;-1:-1:-1;;;;;3487:14:7;;;;;;:7;:14;;;;;;:21;;-1:-1:-1;;3487:21:7;3504:4;3487:21;;;;;;3518:6;27:10:-1;;23:18;;;45:23;;3518:18:7;;;;;;-1:-1:-1;;3518:18:7;;;;;3546:20;;;3487:14;3546:20;2163:1;;1456;1356;3296:277;:::o;8685:337::-;8775:4;;;8819:197;8836:6;:13;8834:15;;8819:197;;;8874:28;;;;:13;:28;;;;;8903:6;:9;;8874:28;;;8910:1;;8903:9;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8903:9:7;8874:39;;;;;;;;;;;;;;;8870:71;;;8940:1;8931:10;;;;8870:71;8968:8;;8959:5;:17;8955:50;;;9001:4;8994:11;;;;8955:50;8851:3;;8819:197;;;8685:337;;;;;:::o;9974:252::-;10073:10;;10099:120;10116:6;:13;10114:15;;10099:120;;;10152:28;;;;:13;:28;;;;;10181:6;:9;;10152:28;;;10188:1;;10181:9;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10181:9:7;10152:39;;;;;;;;;;;;;;;10148:71;;;10218:1;10209:10;;;;10148:71;10131:3;;10099:120;;;9974:252;;;;:::o;860:49::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;860:49:7;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;860:49:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;860:49:7;;;;;;;-1:-1:-1;;860:49:7;;;:::o;10891:115::-;10961:9;10993:6;10986:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10986:13:7;;;;;;;;;;;;;;;;;;;;;;;10891:115;;:::o;12109:676::-;12234:22;12272:32;12345:10;12369:6;12318:16;;12307:28;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;136:17;;-1:-1;12307:28:7;;12272:63;;12358:1;12345:14;;12392:1;12390:3;;12385:250;12397:16;;12395:1;:18;12385:250;;;12439:7;:36;;;;-1:-1:-1;12451:12:7;:15;;;;;;;;;;:24;;;;;12450:25;12439:36;:92;;;;12495:8;:36;;;;-1:-1:-1;12507:12:7;:15;;;;;;;;;;:24;;;;;12495:36;12432:203;;;12591:1;12563:18;12582:5;12563:25;;;;;;;;;;;;;;;;;;:29;12619:1;12610:10;;;;;12432:203;12415:3;;12385:250;;;12678:4;12673:2;:9;12662:21;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;136:17;;-1:-1;12662:21:7;;12644:39;;12700:4;12698:6;;12693:85;12708:2;12706:1;:4;12693:85;;;12757:18;12776:1;12757:21;;;;;;;;;;;;;;;;;;12729:15;12749:4;12745:1;:8;12729:25;;;;;;;;;;;;;;;;;;:49;12712:3;;12693:85;;;12109:676;;;;;;;;;:::o;11185:575::-;11280:24;11320:34;11395:10;11419:6;11371;:13;;;;11357:28;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;136:17;;-1:-1;11357:28:7;;11320:65;;11408:1;11395:14;;11442:1;11440:3;;11435:186;11447:6;:13;11445:15;;11435:186;;;11483:28;;;;:13;:28;;;;;11512:6;:9;;11483:28;;;11519:1;;11512:9;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11512:9:7;11483:39;;;;;;;;;;;;;;;11479:142;;;11569:6;:9;;11576:1;;11569:9;;;;;;;;;;;;;;;;11542:24;;-1:-1:-1;;;;;11569:9:7;;;;11542:17;;11560:5;;11542:24;;;;;;-1:-1:-1;;;;;11542:36:7;;;:24;;;;;;;;;;:36;11605:1;11596:10;;;;;11479:142;11462:3;;11435:186;;;11661:5;11647:20;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;136:17;;-1:-1;11647:20:7;;11630:37;;11684:1;11682:3;;11677:76;11689:5;11687:1;:7;11677:76;;;11733:17;11751:1;11733:20;;;;;;;;;;;;;;;;;;11713:14;11728:1;11713:17;;;;;;;;;;-1:-1:-1;;;;;11713:40:7;;;:17;;;;;;;;;;:40;11696:3;;11677:76;;;11185:575;;;;;;:::o;1086:28::-;;;;:::o;4978:207::-;1318:10;1340:4;1318:27;1310:36;;;;;;5080:6;:13;5095:9;820:2;2254:29;;;;;:68;;;2312:10;2299:9;:23;;2254:68;:98;;;;-1:-1:-1;2338:14:7;;;2254:98;:129;;;;-1:-1:-1;2368:15:7;;;2254:129;2246:138;;;;;;;;5120:8;:20;;;5150:28;;;;;;;;;;;;;;;;;1356:1;;4978:207;:::o;5796:344::-;5879:10;1524:14;;;;:7;:14;;;;;;;;1516:23;;;;;;;;1628:12;:27;;;;;;;;;;:39;5917:13;;-1:-1:-1;;;;;1628:39:7;:44;;1620:53;;;;;;1905:28;;;;:13;:28;;;;;;;;5968:10;1905:35;;;;;;;;;5953:13;;5968:10;1905:35;;1904:36;1896:45;;;;;;5994:28;;;;6037:4;5994:28;;;;;;;;6023:10;5994:40;;;;;;;;:47;;-1:-1:-1;;5994:47:7;;;;;;;6051:39;;6008:13;;6051:39;;;6100:33;6119:13;6100:18;:33::i;:::-;1683:1;;1549;5796:344;;:::o;5444:246::-;5548:18;5598:40;5613:11;5626:5;5633:4;5598:14;:40::i;:::-;5582:56;5444:246;-1:-1:-1;;;;5444:246:7:o;781:41::-;820:2;781:41;:::o;1060:20::-;;;;:::o;4358:449::-;4529:6;1318:10;1340:4;1318:27;1310:36;;;;;;-1:-1:-1;;;;;1524:14:7;;;;;;:7;:14;;;;;;4467:5;;1524:14;;1516:23;;;;;;;;-1:-1:-1;;;;;1431:14:7;;;;;;:7;:14;;;;;;4500:8;;1431:14;;1430:15;1422:24;;;;;;4536:1;4529:8;;4524:149;4541:6;:13;4539:15;;4524:149;;;4590:5;-1:-1:-1;;;;;4577:18:7;:6;4584:1;4577:9;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4577:9:7;:18;4573:100;;;4627:8;4615:6;4622:1;4615:9;;;;;;;;;;;;;;;;;;:20;;;;;-1:-1:-1;;;;;4615:20:7;;;;;-1:-1:-1;;;;;4615:20:7;;;;;;4653:5;;4573:100;4556:3;;;;;4524:149;;;-1:-1:-1;;;;;4682:14:7;;;4699:5;4682:14;;;:7;:14;;;;;;:22;;-1:-1:-1;;4682:22:7;;;;;;4714:17;;;;;;;;:24;;;;;4682:22;4714:24;;;;4748:19;;4682:14;;4748:19;;;4777:23;;-1:-1:-1;;;;;4777:23:7;;;;;;;;1549:1;1356;4358:449;;;:::o;6669:586::-;6752:10;6904:23;1524:14;;;:7;:14;;;;;;6904:23;;6752:10;1524:14;;1516:23;;;;;;;;1769:28;;;;:13;:28;;;;;;;;6797:10;1769:35;;;;;;;;;6782:13;;6797:10;1769:35;;1761:44;;;;;;;;2025:12;:27;;;;;;;;;;:36;;;6829:13;;2025:36;;2024:37;2016:46;;;;;;6862:26;6874:13;6862:11;:26::i;:::-;6858:391;;;6930:12;:27;;;;;;;;;;;;6971:12;;;:19;;-1:-1:-1;;6971:19:7;6986:4;6971:19;;;;;;7022:15;;7039:9;;;;7050:8;;;;:15;;7008:68;;;-1:-1:-1;;7050:15:7;;;;6971:19;7050:15;;;;;;;;;;;;7008:68;;;;;;;;;;;;;;;;;;6930:27;;-1:-1:-1;7008:68:7;;-1:-1:-1;;;;;7022:15:7;;;;7039:9;;7008:68;7050:8;:15;;7008:68;;7050:8;:15;7008:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:13;:68::i;:::-;7004:235;;;7094:24;;7104:13;;7094:24;;;;;7004:235;;;7155:31;;7172:13;;7155:31;;;;;7204:12;;;:20;;-1:-1:-1;;7204:20:7;;;7004:235;1815:1;1549;;6669:586;;;:::o;9355:422::-;9508:16;;9564:140;;;;;;;;-1:-1:-1;;;;;9564:140:7;;;;;;;;;;;;;;;;;;-1:-1:-1;9564:140:7;;;;;;9534:27;;;;;;;;;;:170;;;;-1:-1:-1;;9534:170:7;;;;;;;;;;-1:-1:-1;9534:170:7;;;;;;;9564:140;;9534:27;;:170;;;;;;;;;:::i;:::-;-1:-1:-1;9534:170:7;;;;;;;;;;;;-1:-1:-1;;9534:170:7;;;;;;;;;;9714:16;:21;;-1:-1:-1;9714:21:7;;;9745:25;;9756:13;;9745:25;;-1:-1:-1;;9745:25:7;9355:422;;;;;:::o;7432:1102::-;7534:4;7550:11;7609:4;7603:11;7742:2;7736:4;7732:13;8407:1;8388;8280:10;8261:1;8238:5;8209:11;7864:5;7859:3;7855:15;7833:662;7823:672;7432:1102;-1:-1:-1;;;;;;;;7432:1102:7:o;187:12600::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;187:12600:7;;;-1:-1:-1;187:12600:7;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;", "source": "pragma solidity ^0.4.15;\n\n\n/// @title Multisignature wallet - Allows multiple parties to agree on transactions before execution.\n/// @author Stefan George - <stefan.george@consensys.net>\ncontract MultiSigWallet {\n\n /*\n * Events\n */\n event Confirmation(address indexed sender, uint indexed transactionId);\n event Revocation(address indexed sender, uint indexed transactionId);\n event Submission(uint indexed transactionId);\n event Execution(uint indexed transactionId);\n event ExecutionFailure(uint indexed transactionId);\n event Deposit(address indexed sender, uint value);\n event OwnerAddition(address indexed owner);\n event OwnerRemoval(address indexed owner);\n event RequirementChange(uint required);\n\n /*\n * Constants\n */\n uint constant public MAX_OWNER_COUNT = 50;\n\n /*\n * Storage\n */\n mapping (uint => Transaction) public transactions;\n mapping (uint => mapping (address => bool)) public confirmations;\n mapping (address => bool) public isOwner;\n address[] public owners;\n uint public required;\n uint public transactionCount;\n\n struct Transaction {\n address destination;\n uint value;\n bytes data;\n bool executed;\n }\n\n /*\n * Modifiers\n */\n modifier onlyWallet() {\n require(msg.sender == address(this));\n _;\n }\n\n modifier ownerDoesNotExist(address owner) {\n require(!isOwner[owner]);\n _;\n }\n\n modifier ownerExists(address owner) {\n require(isOwner[owner]);\n _;\n }\n\n modifier transactionExists(uint transactionId) {\n require(transactions[transactionId].destination != 0);\n _;\n }\n\n modifier confirmed(uint transactionId, address owner) {\n require(confirmations[transactionId][owner]);\n _;\n }\n\n modifier notConfirmed(uint transactionId, address owner) {\n require(!confirmations[transactionId][owner]);\n _;\n }\n\n modifier notExecuted(uint transactionId) {\n require(!transactions[transactionId].executed);\n _;\n }\n\n modifier notNull(address _address) {\n require(_address != 0);\n _;\n }\n\n modifier validRequirement(uint ownerCount, uint _required) {\n require(ownerCount <= MAX_OWNER_COUNT\n && _required <= ownerCount\n && _required != 0\n && ownerCount != 0);\n _;\n }\n\n /// @dev Fallback function allows to deposit ether.\n function()\n payable\n {\n if (msg.value > 0)\n Deposit(msg.sender, msg.value);\n }\n\n /*\n * Public functions\n */\n /// @dev Contract constructor sets initial owners and required number of confirmations.\n /// @param _owners List of initial owners.\n /// @param _required Number of required confirmations.\n function MultiSigWallet(address[] _owners, uint _required)\n public\n validRequirement(_owners.length, _required)\n {\n for (uint i=0; i<_owners.length; i++) {\n require(!isOwner[_owners[i]] && _owners[i] != 0);\n isOwner[_owners[i]] = true;\n }\n owners = _owners;\n required = _required;\n }\n\n /// @dev Allows to add a new owner. Transaction has to be sent by wallet.\n /// @param owner Address of new owner.\n function addOwner(address owner)\n public\n onlyWallet\n ownerDoesNotExist(owner)\n notNull(owner)\n validRequirement(owners.length + 1, required)\n {\n isOwner[owner] = true;\n owners.push(owner);\n OwnerAddition(owner);\n }\n\n /// @dev Allows to remove an owner. Transaction has to be sent by wallet.\n /// @param owner Address of owner.\n function removeOwner(address owner)\n public\n onlyWallet\n ownerExists(owner)\n {\n isOwner[owner] = false;\n for (uint i=0; i<owners.length - 1; i++)\n if (owners[i] == owner) {\n owners[i] = owners[owners.length - 1];\n break;\n }\n owners.length -= 1;\n if (required > owners.length)\n changeRequirement(owners.length);\n OwnerRemoval(owner);\n }\n\n /// @dev Allows to replace an owner with a new owner. Transaction has to be sent by wallet.\n /// @param owner Address of owner to be replaced.\n /// @param newOwner Address of new owner.\n function replaceOwner(address owner, address newOwner)\n public\n onlyWallet\n ownerExists(owner)\n ownerDoesNotExist(newOwner)\n {\n for (uint i=0; i<owners.length; i++)\n if (owners[i] == owner) {\n owners[i] = newOwner;\n break;\n }\n isOwner[owner] = false;\n isOwner[newOwner] = true;\n OwnerRemoval(owner);\n OwnerAddition(newOwner);\n }\n\n /// @dev Allows to change the number of required confirmations. Transaction has to be sent by wallet.\n /// @param _required Number of required confirmations.\n function changeRequirement(uint _required)\n public\n onlyWallet\n validRequirement(owners.length, _required)\n {\n required = _required;\n RequirementChange(_required);\n }\n\n /// @dev Allows an owner to submit and confirm a transaction.\n /// @param destination Transaction target address.\n /// @param value Transaction ether value.\n /// @param data Transaction data payload.\n /// @return Returns transaction ID.\n function submitTransaction(address destination, uint value, bytes data)\n public\n returns (uint transactionId)\n {\n transactionId = addTransaction(destination, value, data);\n //confirmTransaction(transactionId);\n }\n\n /// @dev Allows an owner to confirm a transaction.\n /// @param transactionId Transaction ID.\n function confirmTransaction(uint transac