From aff46e2f5aac4877a900299b13bcd632b1eed197 Mon Sep 17 00:00:00 2001 From: emochka2007 Date: Sun, 5 May 2024 02:11:22 +0300 Subject: [PATCH] multisig init --- .idea/prettier.xml | 7 + README.md | 7 + .../22662767f8b1a09e64d324318d70c2ac.json | 1 - artifacts/contracts/Lock.sol/Lock.dbg.json | 4 - artifacts/contracts/Lock.sol/Lock.json | 74 --------- cache/solidity-files-cache.json | 41 ----- contract/contracts/MultiSigWallet.sol | 109 ++++++++++++++ login-flow.png | Bin 0 -> 37210 bytes typechain-types/Lock.ts | 140 ------------------ typechain-types/common.ts | 131 ---------------- typechain-types/factories/Lock__factory.ts | 133 ----------------- typechain-types/factories/index.ts | 4 - typechain-types/hardhat.d.ts | 63 -------- typechain-types/index.ts | 6 - 14 files changed, 123 insertions(+), 597 deletions(-) create mode 100644 .idea/prettier.xml delete mode 100644 artifacts/build-info/22662767f8b1a09e64d324318d70c2ac.json delete mode 100644 artifacts/contracts/Lock.sol/Lock.dbg.json delete mode 100644 artifacts/contracts/Lock.sol/Lock.json delete mode 100644 cache/solidity-files-cache.json create mode 100644 contract/contracts/MultiSigWallet.sol create mode 100644 login-flow.png delete mode 100644 typechain-types/Lock.ts delete mode 100644 typechain-types/common.ts delete mode 100644 typechain-types/factories/Lock__factory.ts delete mode 100644 typechain-types/factories/index.ts delete mode 100644 typechain-types/hardhat.d.ts delete mode 100644 typechain-types/index.ts diff --git a/.idea/prettier.xml b/.idea/prettier.xml new file mode 100644 index 0000000..0c83ac4 --- /dev/null +++ b/.idea/prettier.xml @@ -0,0 +1,7 @@ + + + + + \ No newline at end of file diff --git a/README.md b/README.md index 924db9e..9b1ff75 100644 --- a/README.md +++ b/README.md @@ -1 +1,8 @@ +![LOGIN FLOW](./login-flow.png "Login") ![Example architecture](./arch.png "Arch") + + +# Registration Flow +- On First Login - Owner inputs his SEED_KEY (mnemonic), creates an organization, we save its seed hash for future login and signing internal txs. +- When inviting an employee to organization- we generate an invitation link, then after clicking on this link - the user is asked for seed, if he's already registered or able to generate a seed for new account. +- \ No newline at end of file diff --git a/artifacts/build-info/22662767f8b1a09e64d324318d70c2ac.json b/artifacts/build-info/22662767f8b1a09e64d324318d70c2ac.json deleted file mode 100644 index 4c3ce8a..0000000 --- a/artifacts/build-info/22662767f8b1a09e64d324318d70c2ac.json +++ /dev/null @@ -1 +0,0 @@ -{"id":"22662767f8b1a09e64d324318d70c2ac","_format":"hh-sol-build-info-1","solcVersion":"0.8.24","solcLongVersion":"0.8.24+commit.e11b9ed9","input":{"language":"Solidity","sources":{"contracts/Lock.sol":{"content":"// SPDX-License-Identifier: UNLICENSED\npragma solidity ^0.8.24;\n\n// Uncomment this line to use console.log\n// import \"hardhat/console.sol\";\n\ncontract Lock {\n uint public unlockTime;\n address payable public owner;\n\n event Withdrawal(uint amount, uint when);\n\n constructor(uint _unlockTime) payable {\n require(\n block.timestamp < _unlockTime,\n \"Unlock time should be in the future\"\n );\n\n unlockTime = _unlockTime;\n owner = payable(msg.sender);\n }\n\n function withdraw() public {\n // Uncomment this line, and the import of \"hardhat/console.sol\", to print a log in your terminal\n // console.log(\"Unlock time is %o and block timestamp is %o\", unlockTime, block.timestamp);\n\n require(block.timestamp >= unlockTime, \"You can't withdraw yet\");\n require(msg.sender == owner, \"You aren't the owner\");\n\n emit Withdrawal(address(this).balance, block.timestamp);\n\n owner.transfer(address(this).balance);\n }\n}\n"}},"settings":{"evmVersion":"paris","optimizer":{"enabled":false,"runs":200},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"],"":["ast"]}}}},"output":{"sources":{"contracts/Lock.sol":{"ast":{"absolutePath":"contracts/Lock.sol","exportedSymbols":{"Lock":[78]},"id":79,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":1,"literals":["solidity","^","0.8",".24"],"nodeType":"PragmaDirective","src":"39:24:0"},{"abstract":false,"baseContracts":[],"canonicalName":"Lock","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":78,"linearizedBaseContracts":[78],"name":"Lock","nameLocation":"150:4:0","nodeType":"ContractDefinition","nodes":[{"constant":false,"functionSelector":"251c1aa3","id":3,"mutability":"mutable","name":"unlockTime","nameLocation":"173:10:0","nodeType":"VariableDeclaration","scope":78,"src":"161:22:0","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2,"name":"uint","nodeType":"ElementaryTypeName","src":"161:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"constant":false,"functionSelector":"8da5cb5b","id":5,"mutability":"mutable","name":"owner","nameLocation":"212:5:0","nodeType":"VariableDeclaration","scope":78,"src":"189:28:0","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"typeName":{"id":4,"name":"address","nodeType":"ElementaryTypeName","src":"189:15:0","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"visibility":"public"},{"anonymous":false,"eventSelector":"bf2ed60bd5b5965d685680c01195c9514e4382e28e3a5a2d2d5244bf59411b93","id":11,"name":"Withdrawal","nameLocation":"230:10:0","nodeType":"EventDefinition","parameters":{"id":10,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7,"indexed":false,"mutability":"mutable","name":"amount","nameLocation":"246:6:0","nodeType":"VariableDeclaration","scope":11,"src":"241:11:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6,"name":"uint","nodeType":"ElementaryTypeName","src":"241:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9,"indexed":false,"mutability":"mutable","name":"when","nameLocation":"259:4:0","nodeType":"VariableDeclaration","scope":11,"src":"254:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8,"name":"uint","nodeType":"ElementaryTypeName","src":"254:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"240:24:0"},"src":"224:41:0"},{"body":{"id":36,"nodeType":"Block","src":"309:200:0","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":17,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"340:5:0","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":18,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"346:9:0","memberName":"timestamp","nodeType":"MemberAccess","src":"340:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":19,"name":"_unlockTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13,"src":"358:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"340:29:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"556e6c6f636b2074696d652073686f756c6420626520696e2074686520667574757265","id":21,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"383:37:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_f6fa9918d4578fba07be58c41841a4c6937c19725f7f4601884cd186799a8413","typeString":"literal_string \"Unlock time should be in the future\""},"value":"Unlock time should be in the future"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_f6fa9918d4578fba07be58c41841a4c6937c19725f7f4601884cd186799a8413","typeString":"literal_string \"Unlock time should be in the future\""}],"id":16,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"319:7:0","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":22,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"319:111:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":23,"nodeType":"ExpressionStatement","src":"319:111:0"},{"expression":{"id":26,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":24,"name":"unlockTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3,"src":"441:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":25,"name":"_unlockTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13,"src":"454:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"441:24:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":27,"nodeType":"ExpressionStatement","src":"441:24:0"},{"expression":{"id":34,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":28,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5,"src":"475:5:0","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":31,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"491:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":32,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"495:6:0","memberName":"sender","nodeType":"MemberAccess","src":"491:10:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":30,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"483:8:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_payable_$","typeString":"type(address payable)"},"typeName":{"id":29,"name":"address","nodeType":"ElementaryTypeName","src":"483:8:0","stateMutability":"payable","typeDescriptions":{}}},"id":33,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"483:19:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"475:27:0","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"id":35,"nodeType":"ExpressionStatement","src":"475:27:0"}]},"id":37,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":14,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13,"mutability":"mutable","name":"_unlockTime","nameLocation":"288:11:0","nodeType":"VariableDeclaration","scope":37,"src":"283:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12,"name":"uint","nodeType":"ElementaryTypeName","src":"283:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"282:18:0"},"returnParameters":{"id":15,"nodeType":"ParameterList","parameters":[],"src":"309:0:0"},"scope":78,"src":"271:238:0","stateMutability":"payable","virtual":false,"visibility":"public"},{"body":{"id":76,"nodeType":"Block","src":"542:463:0","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":44,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":41,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"766:5:0","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":42,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"772:9:0","memberName":"timestamp","nodeType":"MemberAccess","src":"766:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":43,"name":"unlockTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3,"src":"785:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"766:29:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"596f752063616e277420776974686472617720796574","id":45,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"797:24:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_09be2a1d7c98765b8c1bd9ab3700b54ab19d501eebe572af39b71382f17d12e8","typeString":"literal_string \"You can't withdraw yet\""},"value":"You can't withdraw yet"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_09be2a1d7c98765b8c1bd9ab3700b54ab19d501eebe572af39b71382f17d12e8","typeString":"literal_string \"You can't withdraw yet\""}],"id":40,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"758:7:0","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":46,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"758:64:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":47,"nodeType":"ExpressionStatement","src":"758:64:0"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":52,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":49,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"840:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":50,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"844:6:0","memberName":"sender","nodeType":"MemberAccess","src":"840:10:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":51,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5,"src":"854:5:0","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"840:19:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"596f75206172656e277420746865206f776e6572","id":53,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"861:22:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_345d93c1110e55177ee5f687f392a2e775da2aa3d491c8308e925f0505e3530a","typeString":"literal_string \"You aren't the owner\""},"value":"You aren't the owner"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_345d93c1110e55177ee5f687f392a2e775da2aa3d491c8308e925f0505e3530a","typeString":"literal_string \"You aren't the owner\""}],"id":48,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"832:7:0","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":54,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"832:52:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":55,"nodeType":"ExpressionStatement","src":"832:52:0"},{"eventCall":{"arguments":[{"expression":{"arguments":[{"id":59,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"919:4:0","typeDescriptions":{"typeIdentifier":"t_contract$_Lock_$78","typeString":"contract Lock"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Lock_$78","typeString":"contract Lock"}],"id":58,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"911:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":57,"name":"address","nodeType":"ElementaryTypeName","src":"911:7:0","typeDescriptions":{}}},"id":60,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"911:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":61,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"925:7:0","memberName":"balance","nodeType":"MemberAccess","src":"911:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":62,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"934:5:0","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":63,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"940:9:0","memberName":"timestamp","nodeType":"MemberAccess","src":"934:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":56,"name":"Withdrawal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11,"src":"900:10:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":64,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"900:50:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":65,"nodeType":"EmitStatement","src":"895:55:0"},{"expression":{"arguments":[{"expression":{"arguments":[{"id":71,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"984:4:0","typeDescriptions":{"typeIdentifier":"t_contract$_Lock_$78","typeString":"contract Lock"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Lock_$78","typeString":"contract Lock"}],"id":70,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"976:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":69,"name":"address","nodeType":"ElementaryTypeName","src":"976:7:0","typeDescriptions":{}}},"id":72,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"976:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":73,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"990:7:0","memberName":"balance","nodeType":"MemberAccess","src":"976:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":66,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5,"src":"961:5:0","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"id":68,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"967:8:0","memberName":"transfer","nodeType":"MemberAccess","src":"961:14:0","typeDescriptions":{"typeIdentifier":"t_function_transfer_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":74,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"961:37:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75,"nodeType":"ExpressionStatement","src":"961:37:0"}]},"functionSelector":"3ccfd60b","id":77,"implemented":true,"kind":"function","modifiers":[],"name":"withdraw","nameLocation":"524:8:0","nodeType":"FunctionDefinition","parameters":{"id":38,"nodeType":"ParameterList","parameters":[],"src":"532:2:0"},"returnParameters":{"id":39,"nodeType":"ParameterList","parameters":[],"src":"542:0:0"},"scope":78,"src":"515:490:0","stateMutability":"nonpayable","virtual":false,"visibility":"public"}],"scope":79,"src":"141:866:0","usedErrors":[],"usedEvents":[11]}],"src":"39:969:0"},"id":0}},"contracts":{"contracts/Lock.sol":{"Lock":{"abi":[{"inputs":[{"internalType":"uint256","name":"_unlockTime","type":"uint256"}],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"when","type":"uint256"}],"name":"Withdrawal","type":"event"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"unlockTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{"@_37":{"entryPoint":null,"id":37,"parameterSlots":1,"returnSlots":0},"abi_decode_t_uint256_fromMemory":{"entryPoint":219,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint256_fromMemory":{"entryPoint":240,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_t_stringliteral_f6fa9918d4578fba07be58c41841a4c6937c19725f7f4601884cd186799a8413_to_t_string_memory_ptr_fromStack":{"entryPoint":381,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_f6fa9918d4578fba07be58c41841a4c6937c19725f7f4601884cd186799a8413__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":416,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_unbounded":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":1},"array_storeLengthForEncoding_t_string_memory_ptr_fromStack":{"entryPoint":285,"id":null,"parameterSlots":2,"returnSlots":1},"cleanup_t_uint256":{"entryPoint":186,"id":null,"parameterSlots":1,"returnSlots":1},"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b":{"entryPoint":181,"id":null,"parameterSlots":0,"returnSlots":0},"store_literal_in_memory_f6fa9918d4578fba07be58c41841a4c6937c19725f7f4601884cd186799a8413":{"entryPoint":302,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_uint256":{"entryPoint":196,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nativeSrc":"0:2248:1","nodeType":"YulBlock","src":"0:2248:1","statements":[{"body":{"nativeSrc":"47:35:1","nodeType":"YulBlock","src":"47:35:1","statements":[{"nativeSrc":"57:19:1","nodeType":"YulAssignment","src":"57:19:1","value":{"arguments":[{"kind":"number","nativeSrc":"73:2:1","nodeType":"YulLiteral","src":"73:2:1","type":"","value":"64"}],"functionName":{"name":"mload","nativeSrc":"67:5:1","nodeType":"YulIdentifier","src":"67:5:1"},"nativeSrc":"67:9:1","nodeType":"YulFunctionCall","src":"67:9:1"},"variableNames":[{"name":"memPtr","nativeSrc":"57:6:1","nodeType":"YulIdentifier","src":"57:6:1"}]}]},"name":"allocate_unbounded","nativeSrc":"7:75:1","nodeType":"YulFunctionDefinition","returnVariables":[{"name":"memPtr","nativeSrc":"40:6:1","nodeType":"YulTypedName","src":"40:6:1","type":""}],"src":"7:75:1"},{"body":{"nativeSrc":"177:28:1","nodeType":"YulBlock","src":"177:28:1","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"194:1:1","nodeType":"YulLiteral","src":"194:1:1","type":"","value":"0"},{"kind":"number","nativeSrc":"197:1:1","nodeType":"YulLiteral","src":"197:1:1","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"187:6:1","nodeType":"YulIdentifier","src":"187:6:1"},"nativeSrc":"187:12:1","nodeType":"YulFunctionCall","src":"187:12:1"},"nativeSrc":"187:12:1","nodeType":"YulExpressionStatement","src":"187:12:1"}]},"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nativeSrc":"88:117:1","nodeType":"YulFunctionDefinition","src":"88:117:1"},{"body":{"nativeSrc":"300:28:1","nodeType":"YulBlock","src":"300:28:1","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"317:1:1","nodeType":"YulLiteral","src":"317:1:1","type":"","value":"0"},{"kind":"number","nativeSrc":"320:1:1","nodeType":"YulLiteral","src":"320:1:1","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"310:6:1","nodeType":"YulIdentifier","src":"310:6:1"},"nativeSrc":"310:12:1","nodeType":"YulFunctionCall","src":"310:12:1"},"nativeSrc":"310:12:1","nodeType":"YulExpressionStatement","src":"310:12:1"}]},"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nativeSrc":"211:117:1","nodeType":"YulFunctionDefinition","src":"211:117:1"},{"body":{"nativeSrc":"379:32:1","nodeType":"YulBlock","src":"379:32:1","statements":[{"nativeSrc":"389:16:1","nodeType":"YulAssignment","src":"389:16:1","value":{"name":"value","nativeSrc":"400:5:1","nodeType":"YulIdentifier","src":"400:5:1"},"variableNames":[{"name":"cleaned","nativeSrc":"389:7:1","nodeType":"YulIdentifier","src":"389:7:1"}]}]},"name":"cleanup_t_uint256","nativeSrc":"334:77:1","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"361:5:1","nodeType":"YulTypedName","src":"361:5:1","type":""}],"returnVariables":[{"name":"cleaned","nativeSrc":"371:7:1","nodeType":"YulTypedName","src":"371:7:1","type":""}],"src":"334:77:1"},{"body":{"nativeSrc":"460:79:1","nodeType":"YulBlock","src":"460:79:1","statements":[{"body":{"nativeSrc":"517:16:1","nodeType":"YulBlock","src":"517:16:1","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"526:1:1","nodeType":"YulLiteral","src":"526:1:1","type":"","value":"0"},{"kind":"number","nativeSrc":"529:1:1","nodeType":"YulLiteral","src":"529:1:1","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"519:6:1","nodeType":"YulIdentifier","src":"519:6:1"},"nativeSrc":"519:12:1","nodeType":"YulFunctionCall","src":"519:12:1"},"nativeSrc":"519:12:1","nodeType":"YulExpressionStatement","src":"519:12:1"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"483:5:1","nodeType":"YulIdentifier","src":"483:5:1"},{"arguments":[{"name":"value","nativeSrc":"508:5:1","nodeType":"YulIdentifier","src":"508:5:1"}],"functionName":{"name":"cleanup_t_uint256","nativeSrc":"490:17:1","nodeType":"YulIdentifier","src":"490:17:1"},"nativeSrc":"490:24:1","nodeType":"YulFunctionCall","src":"490:24:1"}],"functionName":{"name":"eq","nativeSrc":"480:2:1","nodeType":"YulIdentifier","src":"480:2:1"},"nativeSrc":"480:35:1","nodeType":"YulFunctionCall","src":"480:35:1"}],"functionName":{"name":"iszero","nativeSrc":"473:6:1","nodeType":"YulIdentifier","src":"473:6:1"},"nativeSrc":"473:43:1","nodeType":"YulFunctionCall","src":"473:43:1"},"nativeSrc":"470:63:1","nodeType":"YulIf","src":"470:63:1"}]},"name":"validator_revert_t_uint256","nativeSrc":"417:122:1","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"453:5:1","nodeType":"YulTypedName","src":"453:5:1","type":""}],"src":"417:122:1"},{"body":{"nativeSrc":"608:80:1","nodeType":"YulBlock","src":"608:80:1","statements":[{"nativeSrc":"618:22:1","nodeType":"YulAssignment","src":"618:22:1","value":{"arguments":[{"name":"offset","nativeSrc":"633:6:1","nodeType":"YulIdentifier","src":"633:6:1"}],"functionName":{"name":"mload","nativeSrc":"627:5:1","nodeType":"YulIdentifier","src":"627:5:1"},"nativeSrc":"627:13:1","nodeType":"YulFunctionCall","src":"627:13:1"},"variableNames":[{"name":"value","nativeSrc":"618:5:1","nodeType":"YulIdentifier","src":"618:5:1"}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"676:5:1","nodeType":"YulIdentifier","src":"676:5:1"}],"functionName":{"name":"validator_revert_t_uint256","nativeSrc":"649:26:1","nodeType":"YulIdentifier","src":"649:26:1"},"nativeSrc":"649:33:1","nodeType":"YulFunctionCall","src":"649:33:1"},"nativeSrc":"649:33:1","nodeType":"YulExpressionStatement","src":"649:33:1"}]},"name":"abi_decode_t_uint256_fromMemory","nativeSrc":"545:143:1","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"586:6:1","nodeType":"YulTypedName","src":"586:6:1","type":""},{"name":"end","nativeSrc":"594:3:1","nodeType":"YulTypedName","src":"594:3:1","type":""}],"returnVariables":[{"name":"value","nativeSrc":"602:5:1","nodeType":"YulTypedName","src":"602:5:1","type":""}],"src":"545:143:1"},{"body":{"nativeSrc":"771:274:1","nodeType":"YulBlock","src":"771:274:1","statements":[{"body":{"nativeSrc":"817:83:1","nodeType":"YulBlock","src":"817:83:1","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nativeSrc":"819:77:1","nodeType":"YulIdentifier","src":"819:77:1"},"nativeSrc":"819:79:1","nodeType":"YulFunctionCall","src":"819:79:1"},"nativeSrc":"819:79:1","nodeType":"YulExpressionStatement","src":"819:79:1"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"792:7:1","nodeType":"YulIdentifier","src":"792:7:1"},{"name":"headStart","nativeSrc":"801:9:1","nodeType":"YulIdentifier","src":"801:9:1"}],"functionName":{"name":"sub","nativeSrc":"788:3:1","nodeType":"YulIdentifier","src":"788:3:1"},"nativeSrc":"788:23:1","nodeType":"YulFunctionCall","src":"788:23:1"},{"kind":"number","nativeSrc":"813:2:1","nodeType":"YulLiteral","src":"813:2:1","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"784:3:1","nodeType":"YulIdentifier","src":"784:3:1"},"nativeSrc":"784:32:1","nodeType":"YulFunctionCall","src":"784:32:1"},"nativeSrc":"781:119:1","nodeType":"YulIf","src":"781:119:1"},{"nativeSrc":"910:128:1","nodeType":"YulBlock","src":"910:128:1","statements":[{"nativeSrc":"925:15:1","nodeType":"YulVariableDeclaration","src":"925:15:1","value":{"kind":"number","nativeSrc":"939:1:1","nodeType":"YulLiteral","src":"939:1:1","type":"","value":"0"},"variables":[{"name":"offset","nativeSrc":"929:6:1","nodeType":"YulTypedName","src":"929:6:1","type":""}]},{"nativeSrc":"954:74:1","nodeType":"YulAssignment","src":"954:74:1","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1000:9:1","nodeType":"YulIdentifier","src":"1000:9:1"},{"name":"offset","nativeSrc":"1011:6:1","nodeType":"YulIdentifier","src":"1011:6:1"}],"functionName":{"name":"add","nativeSrc":"996:3:1","nodeType":"YulIdentifier","src":"996:3:1"},"nativeSrc":"996:22:1","nodeType":"YulFunctionCall","src":"996:22:1"},{"name":"dataEnd","nativeSrc":"1020:7:1","nodeType":"YulIdentifier","src":"1020:7:1"}],"functionName":{"name":"abi_decode_t_uint256_fromMemory","nativeSrc":"964:31:1","nodeType":"YulIdentifier","src":"964:31:1"},"nativeSrc":"964:64:1","nodeType":"YulFunctionCall","src":"964:64:1"},"variableNames":[{"name":"value0","nativeSrc":"954:6:1","nodeType":"YulIdentifier","src":"954:6:1"}]}]}]},"name":"abi_decode_tuple_t_uint256_fromMemory","nativeSrc":"694:351:1","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"741:9:1","nodeType":"YulTypedName","src":"741:9:1","type":""},{"name":"dataEnd","nativeSrc":"752:7:1","nodeType":"YulTypedName","src":"752:7:1","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"764:6:1","nodeType":"YulTypedName","src":"764:6:1","type":""}],"src":"694:351:1"},{"body":{"nativeSrc":"1147:73:1","nodeType":"YulBlock","src":"1147:73:1","statements":[{"expression":{"arguments":[{"name":"pos","nativeSrc":"1164:3:1","nodeType":"YulIdentifier","src":"1164:3:1"},{"name":"length","nativeSrc":"1169:6:1","nodeType":"YulIdentifier","src":"1169:6:1"}],"functionName":{"name":"mstore","nativeSrc":"1157:6:1","nodeType":"YulIdentifier","src":"1157:6:1"},"nativeSrc":"1157:19:1","nodeType":"YulFunctionCall","src":"1157:19:1"},"nativeSrc":"1157:19:1","nodeType":"YulExpressionStatement","src":"1157:19:1"},{"nativeSrc":"1185:29:1","nodeType":"YulAssignment","src":"1185:29:1","value":{"arguments":[{"name":"pos","nativeSrc":"1204:3:1","nodeType":"YulIdentifier","src":"1204:3:1"},{"kind":"number","nativeSrc":"1209:4:1","nodeType":"YulLiteral","src":"1209:4:1","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"1200:3:1","nodeType":"YulIdentifier","src":"1200:3:1"},"nativeSrc":"1200:14:1","nodeType":"YulFunctionCall","src":"1200:14:1"},"variableNames":[{"name":"updated_pos","nativeSrc":"1185:11:1","nodeType":"YulIdentifier","src":"1185:11:1"}]}]},"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nativeSrc":"1051:169:1","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"1119:3:1","nodeType":"YulTypedName","src":"1119:3:1","type":""},{"name":"length","nativeSrc":"1124:6:1","nodeType":"YulTypedName","src":"1124:6:1","type":""}],"returnVariables":[{"name":"updated_pos","nativeSrc":"1135:11:1","nodeType":"YulTypedName","src":"1135:11:1","type":""}],"src":"1051:169:1"},{"body":{"nativeSrc":"1332:116:1","nodeType":"YulBlock","src":"1332:116:1","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"1354:6:1","nodeType":"YulIdentifier","src":"1354:6:1"},{"kind":"number","nativeSrc":"1362:1:1","nodeType":"YulLiteral","src":"1362:1:1","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"1350:3:1","nodeType":"YulIdentifier","src":"1350:3:1"},"nativeSrc":"1350:14:1","nodeType":"YulFunctionCall","src":"1350:14:1"},{"hexValue":"556e6c6f636b2074696d652073686f756c6420626520696e2074686520667574","kind":"string","nativeSrc":"1366:34:1","nodeType":"YulLiteral","src":"1366:34:1","type":"","value":"Unlock time should be in the fut"}],"functionName":{"name":"mstore","nativeSrc":"1343:6:1","nodeType":"YulIdentifier","src":"1343:6:1"},"nativeSrc":"1343:58:1","nodeType":"YulFunctionCall","src":"1343:58:1"},"nativeSrc":"1343:58:1","nodeType":"YulExpressionStatement","src":"1343:58:1"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"1422:6:1","nodeType":"YulIdentifier","src":"1422:6:1"},{"kind":"number","nativeSrc":"1430:2:1","nodeType":"YulLiteral","src":"1430:2:1","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1418:3:1","nodeType":"YulIdentifier","src":"1418:3:1"},"nativeSrc":"1418:15:1","nodeType":"YulFunctionCall","src":"1418:15:1"},{"hexValue":"757265","kind":"string","nativeSrc":"1435:5:1","nodeType":"YulLiteral","src":"1435:5:1","type":"","value":"ure"}],"functionName":{"name":"mstore","nativeSrc":"1411:6:1","nodeType":"YulIdentifier","src":"1411:6:1"},"nativeSrc":"1411:30:1","nodeType":"YulFunctionCall","src":"1411:30:1"},"nativeSrc":"1411:30:1","nodeType":"YulExpressionStatement","src":"1411:30:1"}]},"name":"store_literal_in_memory_f6fa9918d4578fba07be58c41841a4c6937c19725f7f4601884cd186799a8413","nativeSrc":"1226:222:1","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nativeSrc":"1324:6:1","nodeType":"YulTypedName","src":"1324:6:1","type":""}],"src":"1226:222:1"},{"body":{"nativeSrc":"1600:220:1","nodeType":"YulBlock","src":"1600:220:1","statements":[{"nativeSrc":"1610:74:1","nodeType":"YulAssignment","src":"1610:74:1","value":{"arguments":[{"name":"pos","nativeSrc":"1676:3:1","nodeType":"YulIdentifier","src":"1676:3:1"},{"kind":"number","nativeSrc":"1681:2:1","nodeType":"YulLiteral","src":"1681:2:1","type":"","value":"35"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nativeSrc":"1617:58:1","nodeType":"YulIdentifier","src":"1617:58:1"},"nativeSrc":"1617:67:1","nodeType":"YulFunctionCall","src":"1617:67:1"},"variableNames":[{"name":"pos","nativeSrc":"1610:3:1","nodeType":"YulIdentifier","src":"1610:3:1"}]},{"expression":{"arguments":[{"name":"pos","nativeSrc":"1782:3:1","nodeType":"YulIdentifier","src":"1782:3:1"}],"functionName":{"name":"store_literal_in_memory_f6fa9918d4578fba07be58c41841a4c6937c19725f7f4601884cd186799a8413","nativeSrc":"1693:88:1","nodeType":"YulIdentifier","src":"1693:88:1"},"nativeSrc":"1693:93:1","nodeType":"YulFunctionCall","src":"1693:93:1"},"nativeSrc":"1693:93:1","nodeType":"YulExpressionStatement","src":"1693:93:1"},{"nativeSrc":"1795:19:1","nodeType":"YulAssignment","src":"1795:19:1","value":{"arguments":[{"name":"pos","nativeSrc":"1806:3:1","nodeType":"YulIdentifier","src":"1806:3:1"},{"kind":"number","nativeSrc":"1811:2:1","nodeType":"YulLiteral","src":"1811:2:1","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"1802:3:1","nodeType":"YulIdentifier","src":"1802:3:1"},"nativeSrc":"1802:12:1","nodeType":"YulFunctionCall","src":"1802:12:1"},"variableNames":[{"name":"end","nativeSrc":"1795:3:1","nodeType":"YulIdentifier","src":"1795:3:1"}]}]},"name":"abi_encode_t_stringliteral_f6fa9918d4578fba07be58c41841a4c6937c19725f7f4601884cd186799a8413_to_t_string_memory_ptr_fromStack","nativeSrc":"1454:366:1","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"1588:3:1","nodeType":"YulTypedName","src":"1588:3:1","type":""}],"returnVariables":[{"name":"end","nativeSrc":"1596:3:1","nodeType":"YulTypedName","src":"1596:3:1","type":""}],"src":"1454:366:1"},{"body":{"nativeSrc":"1997:248:1","nodeType":"YulBlock","src":"1997:248:1","statements":[{"nativeSrc":"2007:26:1","nodeType":"YulAssignment","src":"2007:26:1","value":{"arguments":[{"name":"headStart","nativeSrc":"2019:9:1","nodeType":"YulIdentifier","src":"2019:9:1"},{"kind":"number","nativeSrc":"2030:2:1","nodeType":"YulLiteral","src":"2030:2:1","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"2015:3:1","nodeType":"YulIdentifier","src":"2015:3:1"},"nativeSrc":"2015:18:1","nodeType":"YulFunctionCall","src":"2015:18:1"},"variableNames":[{"name":"tail","nativeSrc":"2007:4:1","nodeType":"YulIdentifier","src":"2007:4:1"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"2054:9:1","nodeType":"YulIdentifier","src":"2054:9:1"},{"kind":"number","nativeSrc":"2065:1:1","nodeType":"YulLiteral","src":"2065:1:1","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"2050:3:1","nodeType":"YulIdentifier","src":"2050:3:1"},"nativeSrc":"2050:17:1","nodeType":"YulFunctionCall","src":"2050:17:1"},{"arguments":[{"name":"tail","nativeSrc":"2073:4:1","nodeType":"YulIdentifier","src":"2073:4:1"},{"name":"headStart","nativeSrc":"2079:9:1","nodeType":"YulIdentifier","src":"2079:9:1"}],"functionName":{"name":"sub","nativeSrc":"2069:3:1","nodeType":"YulIdentifier","src":"2069:3:1"},"nativeSrc":"2069:20:1","nodeType":"YulFunctionCall","src":"2069:20:1"}],"functionName":{"name":"mstore","nativeSrc":"2043:6:1","nodeType":"YulIdentifier","src":"2043:6:1"},"nativeSrc":"2043:47:1","nodeType":"YulFunctionCall","src":"2043:47:1"},"nativeSrc":"2043:47:1","nodeType":"YulExpressionStatement","src":"2043:47:1"},{"nativeSrc":"2099:139:1","nodeType":"YulAssignment","src":"2099:139:1","value":{"arguments":[{"name":"tail","nativeSrc":"2233:4:1","nodeType":"YulIdentifier","src":"2233:4:1"}],"functionName":{"name":"abi_encode_t_stringliteral_f6fa9918d4578fba07be58c41841a4c6937c19725f7f4601884cd186799a8413_to_t_string_memory_ptr_fromStack","nativeSrc":"2107:124:1","nodeType":"YulIdentifier","src":"2107:124:1"},"nativeSrc":"2107:131:1","nodeType":"YulFunctionCall","src":"2107:131:1"},"variableNames":[{"name":"tail","nativeSrc":"2099:4:1","nodeType":"YulIdentifier","src":"2099:4:1"}]}]},"name":"abi_encode_tuple_t_stringliteral_f6fa9918d4578fba07be58c41841a4c6937c19725f7f4601884cd186799a8413__to_t_string_memory_ptr__fromStack_reversed","nativeSrc":"1826:419:1","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1977:9:1","nodeType":"YulTypedName","src":"1977:9:1","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"1992:4:1","nodeType":"YulTypedName","src":"1992:4:1","type":""}],"src":"1826:419:1"}]},"contents":"{\n\n function allocate_unbounded() -> memPtr {\n memPtr := mload(64)\n }\n\n function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {\n revert(0, 0)\n }\n\n function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {\n revert(0, 0)\n }\n\n function cleanup_t_uint256(value) -> cleaned {\n cleaned := value\n }\n\n function validator_revert_t_uint256(value) {\n if iszero(eq(value, cleanup_t_uint256(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_uint256_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_uint256(value)\n }\n\n function abi_decode_tuple_t_uint256_fromMemory(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_uint256_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n function array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function store_literal_in_memory_f6fa9918d4578fba07be58c41841a4c6937c19725f7f4601884cd186799a8413(memPtr) {\n\n mstore(add(memPtr, 0), \"Unlock time should be in the fut\")\n\n mstore(add(memPtr, 32), \"ure\")\n\n }\n\n function abi_encode_t_stringliteral_f6fa9918d4578fba07be58c41841a4c6937c19725f7f4601884cd186799a8413_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 35)\n store_literal_in_memory_f6fa9918d4578fba07be58c41841a4c6937c19725f7f4601884cd186799a8413(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_f6fa9918d4578fba07be58c41841a4c6937c19725f7f4601884cd186799a8413__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_f6fa9918d4578fba07be58c41841a4c6937c19725f7f4601884cd186799a8413_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n}\n","id":1,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"60806040526040516105d83803806105d8833981810160405281019061002591906100f0565b804210610067576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161005e906101a0565b60405180910390fd5b8060008190555033600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506101c0565b600080fd5b6000819050919050565b6100cd816100ba565b81146100d857600080fd5b50565b6000815190506100ea816100c4565b92915050565b600060208284031215610106576101056100b5565b5b6000610114848285016100db565b91505092915050565b600082825260208201905092915050565b7f556e6c6f636b2074696d652073686f756c6420626520696e207468652066757460008201527f7572650000000000000000000000000000000000000000000000000000000000602082015250565b600061018a60238361011d565b91506101958261012e565b604082019050919050565b600060208201905081810360008301526101b98161017d565b9050919050565b610409806101cf6000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c8063251c1aa3146100465780633ccfd60b146100645780638da5cb5b1461006e575b600080fd5b61004e61008c565b60405161005b919061024a565b60405180910390f35b61006c610092565b005b61007661020b565b60405161008391906102a6565b60405180910390f35b60005481565b6000544210156100d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100ce9061031e565b60405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610167576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161015e9061038a565b60405180910390fd5b7fbf2ed60bd5b5965d685680c01195c9514e4382e28e3a5a2d2d5244bf59411b9347426040516101989291906103aa565b60405180910390a1600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015610208573d6000803e3d6000fd5b50565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000819050919050565b61024481610231565b82525050565b600060208201905061025f600083018461023b565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061029082610265565b9050919050565b6102a081610285565b82525050565b60006020820190506102bb6000830184610297565b92915050565b600082825260208201905092915050565b7f596f752063616e27742077697468647261772079657400000000000000000000600082015250565b60006103086016836102c1565b9150610313826102d2565b602082019050919050565b60006020820190508181036000830152610337816102fb565b9050919050565b7f596f75206172656e277420746865206f776e6572000000000000000000000000600082015250565b60006103746014836102c1565b915061037f8261033e565b602082019050919050565b600060208201905081810360008301526103a381610367565b9050919050565b60006040820190506103bf600083018561023b565b6103cc602083018461023b565b939250505056fea264697066735822122022a2b65355af697b0725f7bcddf1c94be908ee67893e84bd3442d61fdc82585064736f6c63430008180033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD PUSH2 0x5D8 CODESIZE SUB DUP1 PUSH2 0x5D8 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE DUP2 ADD SWAP1 PUSH2 0x25 SWAP2 SWAP1 PUSH2 0xF0 JUMP JUMPDEST DUP1 TIMESTAMP LT PUSH2 0x67 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5E SWAP1 PUSH2 0x1A0 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x0 DUP2 SWAP1 SSTORE POP CALLER PUSH1 0x1 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP POP PUSH2 0x1C0 JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xCD DUP2 PUSH2 0xBA JUMP JUMPDEST DUP2 EQ PUSH2 0xD8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0xEA DUP2 PUSH2 0xC4 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x106 JUMPI PUSH2 0x105 PUSH2 0xB5 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x114 DUP5 DUP3 DUP6 ADD PUSH2 0xDB JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x556E6C6F636B2074696D652073686F756C6420626520696E2074686520667574 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x7572650000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x18A PUSH1 0x23 DUP4 PUSH2 0x11D JUMP JUMPDEST SWAP2 POP PUSH2 0x195 DUP3 PUSH2 0x12E JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1B9 DUP2 PUSH2 0x17D JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x409 DUP1 PUSH2 0x1CF PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x41 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x251C1AA3 EQ PUSH2 0x46 JUMPI DUP1 PUSH4 0x3CCFD60B EQ PUSH2 0x64 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x6E JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4E PUSH2 0x8C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x5B SWAP2 SWAP1 PUSH2 0x24A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x6C PUSH2 0x92 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x76 PUSH2 0x20B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x83 SWAP2 SWAP1 PUSH2 0x2A6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD TIMESTAMP LT ISZERO PUSH2 0xD7 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCE SWAP1 PUSH2 0x31E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x167 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x15E SWAP1 PUSH2 0x38A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0xBF2ED60BD5B5965D685680C01195C9514E4382E28E3A5A2D2D5244BF59411B93 SELFBALANCE TIMESTAMP PUSH1 0x40 MLOAD PUSH2 0x198 SWAP3 SWAP2 SWAP1 PUSH2 0x3AA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x8FC SELFBALANCE SWAP1 DUP2 ISZERO MUL SWAP1 PUSH1 0x40 MLOAD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0x208 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x244 DUP2 PUSH2 0x231 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x25F PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x23B JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x290 DUP3 PUSH2 0x265 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x2A0 DUP2 PUSH2 0x285 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x2BB PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x297 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x596F752063616E27742077697468647261772079657400000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x308 PUSH1 0x16 DUP4 PUSH2 0x2C1 JUMP JUMPDEST SWAP2 POP PUSH2 0x313 DUP3 PUSH2 0x2D2 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x337 DUP2 PUSH2 0x2FB JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x596F75206172656E277420746865206F776E6572000000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x374 PUSH1 0x14 DUP4 PUSH2 0x2C1 JUMP JUMPDEST SWAP2 POP PUSH2 0x37F DUP3 PUSH2 0x33E JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x3A3 DUP2 PUSH2 0x367 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x3BF PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0x23B JUMP JUMPDEST PUSH2 0x3CC PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x23B JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x22 LOG2 0xB6 MSTORE8 SSTORE 0xAF PUSH10 0x7B0725F7BCDDF1C94BE9 ADDMOD 0xEE PUSH8 0x893E84BD3442D61F 0xDC DUP3 PC POP PUSH5 0x736F6C6343 STOP ADDMOD XOR STOP CALLER ","sourceMap":"141:866:0:-:0;;;271:238;;;;;;;;;;;;;;;;;;;;;:::i;:::-;358:11;340:15;:29;319:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;454:11;441:10;:24;;;;491:10;475:5;;:27;;;;;;;;;;;;;;;;;;271:238;141:866;;88:117:1;197:1;194;187:12;334:77;371:7;400:5;389:16;;334:77;;;:::o;417:122::-;490:24;508:5;490:24;:::i;:::-;483:5;480:35;470:63;;529:1;526;519:12;470:63;417:122;:::o;545:143::-;602:5;633:6;627:13;618:22;;649:33;676:5;649:33;:::i;:::-;545:143;;;;:::o;694:351::-;764:6;813:2;801:9;792:7;788:23;784:32;781:119;;;819:79;;:::i;:::-;781:119;939:1;964:64;1020:7;1011:6;1000:9;996:22;964:64;:::i;:::-;954:74;;910:128;694:351;;;;:::o;1051:169::-;1135:11;1169:6;1164:3;1157:19;1209:4;1204:3;1200:14;1185:29;;1051:169;;;;:::o;1226:222::-;1366:34;1362:1;1354:6;1350:14;1343:58;1435:5;1430:2;1422:6;1418:15;1411:30;1226:222;:::o;1454:366::-;1596:3;1617:67;1681:2;1676:3;1617:67;:::i;:::-;1610:74;;1693:93;1782:3;1693:93;:::i;:::-;1811:2;1806:3;1802:12;1795:19;;1454:366;;;:::o;1826:419::-;1992:4;2030:2;2019:9;2015:18;2007:26;;2079:9;2073:4;2069:20;2065:1;2054:9;2050:17;2043:47;2107:131;2233:4;2107:131;:::i;:::-;2099:139;;1826:419;;;:::o;141:866:0:-;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@owner_5":{"entryPoint":523,"id":5,"parameterSlots":0,"returnSlots":0},"@unlockTime_3":{"entryPoint":140,"id":3,"parameterSlots":0,"returnSlots":0},"@withdraw_77":{"entryPoint":146,"id":77,"parameterSlots":0,"returnSlots":0},"abi_encode_t_address_payable_to_t_address_payable_fromStack":{"entryPoint":663,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_stringliteral_09be2a1d7c98765b8c1bd9ab3700b54ab19d501eebe572af39b71382f17d12e8_to_t_string_memory_ptr_fromStack":{"entryPoint":763,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_345d93c1110e55177ee5f687f392a2e775da2aa3d491c8308e925f0505e3530a_to_t_string_memory_ptr_fromStack":{"entryPoint":871,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_uint256_to_t_uint256_fromStack":{"entryPoint":571,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_tuple_t_address_payable__to_t_address_payable__fromStack_reversed":{"entryPoint":678,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_stringliteral_09be2a1d7c98765b8c1bd9ab3700b54ab19d501eebe572af39b71382f17d12e8__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":798,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_345d93c1110e55177ee5f687f392a2e775da2aa3d491c8308e925f0505e3530a__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":906,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed":{"entryPoint":586,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed":{"entryPoint":938,"id":null,"parameterSlots":3,"returnSlots":1},"array_storeLengthForEncoding_t_string_memory_ptr_fromStack":{"entryPoint":705,"id":null,"parameterSlots":2,"returnSlots":1},"cleanup_t_address_payable":{"entryPoint":645,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_uint160":{"entryPoint":613,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_uint256":{"entryPoint":561,"id":null,"parameterSlots":1,"returnSlots":1},"store_literal_in_memory_09be2a1d7c98765b8c1bd9ab3700b54ab19d501eebe572af39b71382f17d12e8":{"entryPoint":722,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_345d93c1110e55177ee5f687f392a2e775da2aa3d491c8308e925f0505e3530a":{"entryPoint":830,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nativeSrc":"0:3550:1","nodeType":"YulBlock","src":"0:3550:1","statements":[{"body":{"nativeSrc":"52:32:1","nodeType":"YulBlock","src":"52:32:1","statements":[{"nativeSrc":"62:16:1","nodeType":"YulAssignment","src":"62:16:1","value":{"name":"value","nativeSrc":"73:5:1","nodeType":"YulIdentifier","src":"73:5:1"},"variableNames":[{"name":"cleaned","nativeSrc":"62:7:1","nodeType":"YulIdentifier","src":"62:7:1"}]}]},"name":"cleanup_t_uint256","nativeSrc":"7:77:1","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"34:5:1","nodeType":"YulTypedName","src":"34:5:1","type":""}],"returnVariables":[{"name":"cleaned","nativeSrc":"44:7:1","nodeType":"YulTypedName","src":"44:7:1","type":""}],"src":"7:77:1"},{"body":{"nativeSrc":"155:53:1","nodeType":"YulBlock","src":"155:53:1","statements":[{"expression":{"arguments":[{"name":"pos","nativeSrc":"172:3:1","nodeType":"YulIdentifier","src":"172:3:1"},{"arguments":[{"name":"value","nativeSrc":"195:5:1","nodeType":"YulIdentifier","src":"195:5:1"}],"functionName":{"name":"cleanup_t_uint256","nativeSrc":"177:17:1","nodeType":"YulIdentifier","src":"177:17:1"},"nativeSrc":"177:24:1","nodeType":"YulFunctionCall","src":"177:24:1"}],"functionName":{"name":"mstore","nativeSrc":"165:6:1","nodeType":"YulIdentifier","src":"165:6:1"},"nativeSrc":"165:37:1","nodeType":"YulFunctionCall","src":"165:37:1"},"nativeSrc":"165:37:1","nodeType":"YulExpressionStatement","src":"165:37:1"}]},"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nativeSrc":"90:118:1","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"143:5:1","nodeType":"YulTypedName","src":"143:5:1","type":""},{"name":"pos","nativeSrc":"150:3:1","nodeType":"YulTypedName","src":"150:3:1","type":""}],"src":"90:118:1"},{"body":{"nativeSrc":"312:124:1","nodeType":"YulBlock","src":"312:124:1","statements":[{"nativeSrc":"322:26:1","nodeType":"YulAssignment","src":"322:26:1","value":{"arguments":[{"name":"headStart","nativeSrc":"334:9:1","nodeType":"YulIdentifier","src":"334:9:1"},{"kind":"number","nativeSrc":"345:2:1","nodeType":"YulLiteral","src":"345:2:1","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"330:3:1","nodeType":"YulIdentifier","src":"330:3:1"},"nativeSrc":"330:18:1","nodeType":"YulFunctionCall","src":"330:18:1"},"variableNames":[{"name":"tail","nativeSrc":"322:4:1","nodeType":"YulIdentifier","src":"322:4:1"}]},{"expression":{"arguments":[{"name":"value0","nativeSrc":"402:6:1","nodeType":"YulIdentifier","src":"402:6:1"},{"arguments":[{"name":"headStart","nativeSrc":"415:9:1","nodeType":"YulIdentifier","src":"415:9:1"},{"kind":"number","nativeSrc":"426:1:1","nodeType":"YulLiteral","src":"426:1:1","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"411:3:1","nodeType":"YulIdentifier","src":"411:3:1"},"nativeSrc":"411:17:1","nodeType":"YulFunctionCall","src":"411:17:1"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nativeSrc":"358:43:1","nodeType":"YulIdentifier","src":"358:43:1"},"nativeSrc":"358:71:1","nodeType":"YulFunctionCall","src":"358:71:1"},"nativeSrc":"358:71:1","nodeType":"YulExpressionStatement","src":"358:71:1"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nativeSrc":"214:222:1","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"284:9:1","nodeType":"YulTypedName","src":"284:9:1","type":""},{"name":"value0","nativeSrc":"296:6:1","nodeType":"YulTypedName","src":"296:6:1","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"307:4:1","nodeType":"YulTypedName","src":"307:4:1","type":""}],"src":"214:222:1"},{"body":{"nativeSrc":"487:81:1","nodeType":"YulBlock","src":"487:81:1","statements":[{"nativeSrc":"497:65:1","nodeType":"YulAssignment","src":"497:65:1","value":{"arguments":[{"name":"value","nativeSrc":"512:5:1","nodeType":"YulIdentifier","src":"512:5:1"},{"kind":"number","nativeSrc":"519:42:1","nodeType":"YulLiteral","src":"519:42:1","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nativeSrc":"508:3:1","nodeType":"YulIdentifier","src":"508:3:1"},"nativeSrc":"508:54:1","nodeType":"YulFunctionCall","src":"508:54:1"},"variableNames":[{"name":"cleaned","nativeSrc":"497:7:1","nodeType":"YulIdentifier","src":"497:7:1"}]}]},"name":"cleanup_t_uint160","nativeSrc":"442:126:1","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"469:5:1","nodeType":"YulTypedName","src":"469:5:1","type":""}],"returnVariables":[{"name":"cleaned","nativeSrc":"479:7:1","nodeType":"YulTypedName","src":"479:7:1","type":""}],"src":"442:126:1"},{"body":{"nativeSrc":"627:51:1","nodeType":"YulBlock","src":"627:51:1","statements":[{"nativeSrc":"637:35:1","nodeType":"YulAssignment","src":"637:35:1","value":{"arguments":[{"name":"value","nativeSrc":"666:5:1","nodeType":"YulIdentifier","src":"666:5:1"}],"functionName":{"name":"cleanup_t_uint160","nativeSrc":"648:17:1","nodeType":"YulIdentifier","src":"648:17:1"},"nativeSrc":"648:24:1","nodeType":"YulFunctionCall","src":"648:24:1"},"variableNames":[{"name":"cleaned","nativeSrc":"637:7:1","nodeType":"YulIdentifier","src":"637:7:1"}]}]},"name":"cleanup_t_address_payable","nativeSrc":"574:104:1","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"609:5:1","nodeType":"YulTypedName","src":"609:5:1","type":""}],"returnVariables":[{"name":"cleaned","nativeSrc":"619:7:1","nodeType":"YulTypedName","src":"619:7:1","type":""}],"src":"574:104:1"},{"body":{"nativeSrc":"765:61:1","nodeType":"YulBlock","src":"765:61:1","statements":[{"expression":{"arguments":[{"name":"pos","nativeSrc":"782:3:1","nodeType":"YulIdentifier","src":"782:3:1"},{"arguments":[{"name":"value","nativeSrc":"813:5:1","nodeType":"YulIdentifier","src":"813:5:1"}],"functionName":{"name":"cleanup_t_address_payable","nativeSrc":"787:25:1","nodeType":"YulIdentifier","src":"787:25:1"},"nativeSrc":"787:32:1","nodeType":"YulFunctionCall","src":"787:32:1"}],"functionName":{"name":"mstore","nativeSrc":"775:6:1","nodeType":"YulIdentifier","src":"775:6:1"},"nativeSrc":"775:45:1","nodeType":"YulFunctionCall","src":"775:45:1"},"nativeSrc":"775:45:1","nodeType":"YulExpressionStatement","src":"775:45:1"}]},"name":"abi_encode_t_address_payable_to_t_address_payable_fromStack","nativeSrc":"684:142:1","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"753:5:1","nodeType":"YulTypedName","src":"753:5:1","type":""},{"name":"pos","nativeSrc":"760:3:1","nodeType":"YulTypedName","src":"760:3:1","type":""}],"src":"684:142:1"},{"body":{"nativeSrc":"946:140:1","nodeType":"YulBlock","src":"946:140:1","statements":[{"nativeSrc":"956:26:1","nodeType":"YulAssignment","src":"956:26:1","value":{"arguments":[{"name":"headStart","nativeSrc":"968:9:1","nodeType":"YulIdentifier","src":"968:9:1"},{"kind":"number","nativeSrc":"979:2:1","nodeType":"YulLiteral","src":"979:2:1","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"964:3:1","nodeType":"YulIdentifier","src":"964:3:1"},"nativeSrc":"964:18:1","nodeType":"YulFunctionCall","src":"964:18:1"},"variableNames":[{"name":"tail","nativeSrc":"956:4:1","nodeType":"YulIdentifier","src":"956:4:1"}]},{"expression":{"arguments":[{"name":"value0","nativeSrc":"1052:6:1","nodeType":"YulIdentifier","src":"1052:6:1"},{"arguments":[{"name":"headStart","nativeSrc":"1065:9:1","nodeType":"YulIdentifier","src":"1065:9:1"},{"kind":"number","nativeSrc":"1076:1:1","nodeType":"YulLiteral","src":"1076:1:1","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"1061:3:1","nodeType":"YulIdentifier","src":"1061:3:1"},"nativeSrc":"1061:17:1","nodeType":"YulFunctionCall","src":"1061:17:1"}],"functionName":{"name":"abi_encode_t_address_payable_to_t_address_payable_fromStack","nativeSrc":"992:59:1","nodeType":"YulIdentifier","src":"992:59:1"},"nativeSrc":"992:87:1","nodeType":"YulFunctionCall","src":"992:87:1"},"nativeSrc":"992:87:1","nodeType":"YulExpressionStatement","src":"992:87:1"}]},"name":"abi_encode_tuple_t_address_payable__to_t_address_payable__fromStack_reversed","nativeSrc":"832:254:1","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"918:9:1","nodeType":"YulTypedName","src":"918:9:1","type":""},{"name":"value0","nativeSrc":"930:6:1","nodeType":"YulTypedName","src":"930:6:1","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"941:4:1","nodeType":"YulTypedName","src":"941:4:1","type":""}],"src":"832:254:1"},{"body":{"nativeSrc":"1188:73:1","nodeType":"YulBlock","src":"1188:73:1","statements":[{"expression":{"arguments":[{"name":"pos","nativeSrc":"1205:3:1","nodeType":"YulIdentifier","src":"1205:3:1"},{"name":"length","nativeSrc":"1210:6:1","nodeType":"YulIdentifier","src":"1210:6:1"}],"functionName":{"name":"mstore","nativeSrc":"1198:6:1","nodeType":"YulIdentifier","src":"1198:6:1"},"nativeSrc":"1198:19:1","nodeType":"YulFunctionCall","src":"1198:19:1"},"nativeSrc":"1198:19:1","nodeType":"YulExpressionStatement","src":"1198:19:1"},{"nativeSrc":"1226:29:1","nodeType":"YulAssignment","src":"1226:29:1","value":{"arguments":[{"name":"pos","nativeSrc":"1245:3:1","nodeType":"YulIdentifier","src":"1245:3:1"},{"kind":"number","nativeSrc":"1250:4:1","nodeType":"YulLiteral","src":"1250:4:1","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"1241:3:1","nodeType":"YulIdentifier","src":"1241:3:1"},"nativeSrc":"1241:14:1","nodeType":"YulFunctionCall","src":"1241:14:1"},"variableNames":[{"name":"updated_pos","nativeSrc":"1226:11:1","nodeType":"YulIdentifier","src":"1226:11:1"}]}]},"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nativeSrc":"1092:169:1","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"1160:3:1","nodeType":"YulTypedName","src":"1160:3:1","type":""},{"name":"length","nativeSrc":"1165:6:1","nodeType":"YulTypedName","src":"1165:6:1","type":""}],"returnVariables":[{"name":"updated_pos","nativeSrc":"1176:11:1","nodeType":"YulTypedName","src":"1176:11:1","type":""}],"src":"1092:169:1"},{"body":{"nativeSrc":"1373:66:1","nodeType":"YulBlock","src":"1373:66:1","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"1395:6:1","nodeType":"YulIdentifier","src":"1395:6:1"},{"kind":"number","nativeSrc":"1403:1:1","nodeType":"YulLiteral","src":"1403:1:1","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"1391:3:1","nodeType":"YulIdentifier","src":"1391:3:1"},"nativeSrc":"1391:14:1","nodeType":"YulFunctionCall","src":"1391:14:1"},{"hexValue":"596f752063616e277420776974686472617720796574","kind":"string","nativeSrc":"1407:24:1","nodeType":"YulLiteral","src":"1407:24:1","type":"","value":"You can't withdraw yet"}],"functionName":{"name":"mstore","nativeSrc":"1384:6:1","nodeType":"YulIdentifier","src":"1384:6:1"},"nativeSrc":"1384:48:1","nodeType":"YulFunctionCall","src":"1384:48:1"},"nativeSrc":"1384:48:1","nodeType":"YulExpressionStatement","src":"1384:48:1"}]},"name":"store_literal_in_memory_09be2a1d7c98765b8c1bd9ab3700b54ab19d501eebe572af39b71382f17d12e8","nativeSrc":"1267:172:1","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nativeSrc":"1365:6:1","nodeType":"YulTypedName","src":"1365:6:1","type":""}],"src":"1267:172:1"},{"body":{"nativeSrc":"1591:220:1","nodeType":"YulBlock","src":"1591:220:1","statements":[{"nativeSrc":"1601:74:1","nodeType":"YulAssignment","src":"1601:74:1","value":{"arguments":[{"name":"pos","nativeSrc":"1667:3:1","nodeType":"YulIdentifier","src":"1667:3:1"},{"kind":"number","nativeSrc":"1672:2:1","nodeType":"YulLiteral","src":"1672:2:1","type":"","value":"22"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nativeSrc":"1608:58:1","nodeType":"YulIdentifier","src":"1608:58:1"},"nativeSrc":"1608:67:1","nodeType":"YulFunctionCall","src":"1608:67:1"},"variableNames":[{"name":"pos","nativeSrc":"1601:3:1","nodeType":"YulIdentifier","src":"1601:3:1"}]},{"expression":{"arguments":[{"name":"pos","nativeSrc":"1773:3:1","nodeType":"YulIdentifier","src":"1773:3:1"}],"functionName":{"name":"store_literal_in_memory_09be2a1d7c98765b8c1bd9ab3700b54ab19d501eebe572af39b71382f17d12e8","nativeSrc":"1684:88:1","nodeType":"YulIdentifier","src":"1684:88:1"},"nativeSrc":"1684:93:1","nodeType":"YulFunctionCall","src":"1684:93:1"},"nativeSrc":"1684:93:1","nodeType":"YulExpressionStatement","src":"1684:93:1"},{"nativeSrc":"1786:19:1","nodeType":"YulAssignment","src":"1786:19:1","value":{"arguments":[{"name":"pos","nativeSrc":"1797:3:1","nodeType":"YulIdentifier","src":"1797:3:1"},{"kind":"number","nativeSrc":"1802:2:1","nodeType":"YulLiteral","src":"1802:2:1","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1793:3:1","nodeType":"YulIdentifier","src":"1793:3:1"},"nativeSrc":"1793:12:1","nodeType":"YulFunctionCall","src":"1793:12:1"},"variableNames":[{"name":"end","nativeSrc":"1786:3:1","nodeType":"YulIdentifier","src":"1786:3:1"}]}]},"name":"abi_encode_t_stringliteral_09be2a1d7c98765b8c1bd9ab3700b54ab19d501eebe572af39b71382f17d12e8_to_t_string_memory_ptr_fromStack","nativeSrc":"1445:366:1","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"1579:3:1","nodeType":"YulTypedName","src":"1579:3:1","type":""}],"returnVariables":[{"name":"end","nativeSrc":"1587:3:1","nodeType":"YulTypedName","src":"1587:3:1","type":""}],"src":"1445:366:1"},{"body":{"nativeSrc":"1988:248:1","nodeType":"YulBlock","src":"1988:248:1","statements":[{"nativeSrc":"1998:26:1","nodeType":"YulAssignment","src":"1998:26:1","value":{"arguments":[{"name":"headStart","nativeSrc":"2010:9:1","nodeType":"YulIdentifier","src":"2010:9:1"},{"kind":"number","nativeSrc":"2021:2:1","nodeType":"YulLiteral","src":"2021:2:1","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"2006:3:1","nodeType":"YulIdentifier","src":"2006:3:1"},"nativeSrc":"2006:18:1","nodeType":"YulFunctionCall","src":"2006:18:1"},"variableNames":[{"name":"tail","nativeSrc":"1998:4:1","nodeType":"YulIdentifier","src":"1998:4:1"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"2045:9:1","nodeType":"YulIdentifier","src":"2045:9:1"},{"kind":"number","nativeSrc":"2056:1:1","nodeType":"YulLiteral","src":"2056:1:1","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"2041:3:1","nodeType":"YulIdentifier","src":"2041:3:1"},"nativeSrc":"2041:17:1","nodeType":"YulFunctionCall","src":"2041:17:1"},{"arguments":[{"name":"tail","nativeSrc":"2064:4:1","nodeType":"YulIdentifier","src":"2064:4:1"},{"name":"headStart","nativeSrc":"2070:9:1","nodeType":"YulIdentifier","src":"2070:9:1"}],"functionName":{"name":"sub","nativeSrc":"2060:3:1","nodeType":"YulIdentifier","src":"2060:3:1"},"nativeSrc":"2060:20:1","nodeType":"YulFunctionCall","src":"2060:20:1"}],"functionName":{"name":"mstore","nativeSrc":"2034:6:1","nodeType":"YulIdentifier","src":"2034:6:1"},"nativeSrc":"2034:47:1","nodeType":"YulFunctionCall","src":"2034:47:1"},"nativeSrc":"2034:47:1","nodeType":"YulExpressionStatement","src":"2034:47:1"},{"nativeSrc":"2090:139:1","nodeType":"YulAssignment","src":"2090:139:1","value":{"arguments":[{"name":"tail","nativeSrc":"2224:4:1","nodeType":"YulIdentifier","src":"2224:4:1"}],"functionName":{"name":"abi_encode_t_stringliteral_09be2a1d7c98765b8c1bd9ab3700b54ab19d501eebe572af39b71382f17d12e8_to_t_string_memory_ptr_fromStack","nativeSrc":"2098:124:1","nodeType":"YulIdentifier","src":"2098:124:1"},"nativeSrc":"2098:131:1","nodeType":"YulFunctionCall","src":"2098:131:1"},"variableNames":[{"name":"tail","nativeSrc":"2090:4:1","nodeType":"YulIdentifier","src":"2090:4:1"}]}]},"name":"abi_encode_tuple_t_stringliteral_09be2a1d7c98765b8c1bd9ab3700b54ab19d501eebe572af39b71382f17d12e8__to_t_string_memory_ptr__fromStack_reversed","nativeSrc":"1817:419:1","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1968:9:1","nodeType":"YulTypedName","src":"1968:9:1","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"1983:4:1","nodeType":"YulTypedName","src":"1983:4:1","type":""}],"src":"1817:419:1"},{"body":{"nativeSrc":"2348:64:1","nodeType":"YulBlock","src":"2348:64:1","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"2370:6:1","nodeType":"YulIdentifier","src":"2370:6:1"},{"kind":"number","nativeSrc":"2378:1:1","nodeType":"YulLiteral","src":"2378:1:1","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"2366:3:1","nodeType":"YulIdentifier","src":"2366:3:1"},"nativeSrc":"2366:14:1","nodeType":"YulFunctionCall","src":"2366:14:1"},{"hexValue":"596f75206172656e277420746865206f776e6572","kind":"string","nativeSrc":"2382:22:1","nodeType":"YulLiteral","src":"2382:22:1","type":"","value":"You aren't the owner"}],"functionName":{"name":"mstore","nativeSrc":"2359:6:1","nodeType":"YulIdentifier","src":"2359:6:1"},"nativeSrc":"2359:46:1","nodeType":"YulFunctionCall","src":"2359:46:1"},"nativeSrc":"2359:46:1","nodeType":"YulExpressionStatement","src":"2359:46:1"}]},"name":"store_literal_in_memory_345d93c1110e55177ee5f687f392a2e775da2aa3d491c8308e925f0505e3530a","nativeSrc":"2242:170:1","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nativeSrc":"2340:6:1","nodeType":"YulTypedName","src":"2340:6:1","type":""}],"src":"2242:170:1"},{"body":{"nativeSrc":"2564:220:1","nodeType":"YulBlock","src":"2564:220:1","statements":[{"nativeSrc":"2574:74:1","nodeType":"YulAssignment","src":"2574:74:1","value":{"arguments":[{"name":"pos","nativeSrc":"2640:3:1","nodeType":"YulIdentifier","src":"2640:3:1"},{"kind":"number","nativeSrc":"2645:2:1","nodeType":"YulLiteral","src":"2645:2:1","type":"","value":"20"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nativeSrc":"2581:58:1","nodeType":"YulIdentifier","src":"2581:58:1"},"nativeSrc":"2581:67:1","nodeType":"YulFunctionCall","src":"2581:67:1"},"variableNames":[{"name":"pos","nativeSrc":"2574:3:1","nodeType":"YulIdentifier","src":"2574:3:1"}]},{"expression":{"arguments":[{"name":"pos","nativeSrc":"2746:3:1","nodeType":"YulIdentifier","src":"2746:3:1"}],"functionName":{"name":"store_literal_in_memory_345d93c1110e55177ee5f687f392a2e775da2aa3d491c8308e925f0505e3530a","nativeSrc":"2657:88:1","nodeType":"YulIdentifier","src":"2657:88:1"},"nativeSrc":"2657:93:1","nodeType":"YulFunctionCall","src":"2657:93:1"},"nativeSrc":"2657:93:1","nodeType":"YulExpressionStatement","src":"2657:93:1"},{"nativeSrc":"2759:19:1","nodeType":"YulAssignment","src":"2759:19:1","value":{"arguments":[{"name":"pos","nativeSrc":"2770:3:1","nodeType":"YulIdentifier","src":"2770:3:1"},{"kind":"number","nativeSrc":"2775:2:1","nodeType":"YulLiteral","src":"2775:2:1","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"2766:3:1","nodeType":"YulIdentifier","src":"2766:3:1"},"nativeSrc":"2766:12:1","nodeType":"YulFunctionCall","src":"2766:12:1"},"variableNames":[{"name":"end","nativeSrc":"2759:3:1","nodeType":"YulIdentifier","src":"2759:3:1"}]}]},"name":"abi_encode_t_stringliteral_345d93c1110e55177ee5f687f392a2e775da2aa3d491c8308e925f0505e3530a_to_t_string_memory_ptr_fromStack","nativeSrc":"2418:366:1","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"2552:3:1","nodeType":"YulTypedName","src":"2552:3:1","type":""}],"returnVariables":[{"name":"end","nativeSrc":"2560:3:1","nodeType":"YulTypedName","src":"2560:3:1","type":""}],"src":"2418:366:1"},{"body":{"nativeSrc":"2961:248:1","nodeType":"YulBlock","src":"2961:248:1","statements":[{"nativeSrc":"2971:26:1","nodeType":"YulAssignment","src":"2971:26:1","value":{"arguments":[{"name":"headStart","nativeSrc":"2983:9:1","nodeType":"YulIdentifier","src":"2983:9:1"},{"kind":"number","nativeSrc":"2994:2:1","nodeType":"YulLiteral","src":"2994:2:1","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"2979:3:1","nodeType":"YulIdentifier","src":"2979:3:1"},"nativeSrc":"2979:18:1","nodeType":"YulFunctionCall","src":"2979:18:1"},"variableNames":[{"name":"tail","nativeSrc":"2971:4:1","nodeType":"YulIdentifier","src":"2971:4:1"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"3018:9:1","nodeType":"YulIdentifier","src":"3018:9:1"},{"kind":"number","nativeSrc":"3029:1:1","nodeType":"YulLiteral","src":"3029:1:1","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"3014:3:1","nodeType":"YulIdentifier","src":"3014:3:1"},"nativeSrc":"3014:17:1","nodeType":"YulFunctionCall","src":"3014:17:1"},{"arguments":[{"name":"tail","nativeSrc":"3037:4:1","nodeType":"YulIdentifier","src":"3037:4:1"},{"name":"headStart","nativeSrc":"3043:9:1","nodeType":"YulIdentifier","src":"3043:9:1"}],"functionName":{"name":"sub","nativeSrc":"3033:3:1","nodeType":"YulIdentifier","src":"3033:3:1"},"nativeSrc":"3033:20:1","nodeType":"YulFunctionCall","src":"3033:20:1"}],"functionName":{"name":"mstore","nativeSrc":"3007:6:1","nodeType":"YulIdentifier","src":"3007:6:1"},"nativeSrc":"3007:47:1","nodeType":"YulFunctionCall","src":"3007:47:1"},"nativeSrc":"3007:47:1","nodeType":"YulExpressionStatement","src":"3007:47:1"},{"nativeSrc":"3063:139:1","nodeType":"YulAssignment","src":"3063:139:1","value":{"arguments":[{"name":"tail","nativeSrc":"3197:4:1","nodeType":"YulIdentifier","src":"3197:4:1"}],"functionName":{"name":"abi_encode_t_stringliteral_345d93c1110e55177ee5f687f392a2e775da2aa3d491c8308e925f0505e3530a_to_t_string_memory_ptr_fromStack","nativeSrc":"3071:124:1","nodeType":"YulIdentifier","src":"3071:124:1"},"nativeSrc":"3071:131:1","nodeType":"YulFunctionCall","src":"3071:131:1"},"variableNames":[{"name":"tail","nativeSrc":"3063:4:1","nodeType":"YulIdentifier","src":"3063:4:1"}]}]},"name":"abi_encode_tuple_t_stringliteral_345d93c1110e55177ee5f687f392a2e775da2aa3d491c8308e925f0505e3530a__to_t_string_memory_ptr__fromStack_reversed","nativeSrc":"2790:419:1","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2941:9:1","nodeType":"YulTypedName","src":"2941:9:1","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"2956:4:1","nodeType":"YulTypedName","src":"2956:4:1","type":""}],"src":"2790:419:1"},{"body":{"nativeSrc":"3341:206:1","nodeType":"YulBlock","src":"3341:206:1","statements":[{"nativeSrc":"3351:26:1","nodeType":"YulAssignment","src":"3351:26:1","value":{"arguments":[{"name":"headStart","nativeSrc":"3363:9:1","nodeType":"YulIdentifier","src":"3363:9:1"},{"kind":"number","nativeSrc":"3374:2:1","nodeType":"YulLiteral","src":"3374:2:1","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"3359:3:1","nodeType":"YulIdentifier","src":"3359:3:1"},"nativeSrc":"3359:18:1","nodeType":"YulFunctionCall","src":"3359:18:1"},"variableNames":[{"name":"tail","nativeSrc":"3351:4:1","nodeType":"YulIdentifier","src":"3351:4:1"}]},{"expression":{"arguments":[{"name":"value0","nativeSrc":"3431:6:1","nodeType":"YulIdentifier","src":"3431:6:1"},{"arguments":[{"name":"headStart","nativeSrc":"3444:9:1","nodeType":"YulIdentifier","src":"3444:9:1"},{"kind":"number","nativeSrc":"3455:1:1","nodeType":"YulLiteral","src":"3455:1:1","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"3440:3:1","nodeType":"YulIdentifier","src":"3440:3:1"},"nativeSrc":"3440:17:1","nodeType":"YulFunctionCall","src":"3440:17:1"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nativeSrc":"3387:43:1","nodeType":"YulIdentifier","src":"3387:43:1"},"nativeSrc":"3387:71:1","nodeType":"YulFunctionCall","src":"3387:71:1"},"nativeSrc":"3387:71:1","nodeType":"YulExpressionStatement","src":"3387:71:1"},{"expression":{"arguments":[{"name":"value1","nativeSrc":"3512:6:1","nodeType":"YulIdentifier","src":"3512:6:1"},{"arguments":[{"name":"headStart","nativeSrc":"3525:9:1","nodeType":"YulIdentifier","src":"3525:9:1"},{"kind":"number","nativeSrc":"3536:2:1","nodeType":"YulLiteral","src":"3536:2:1","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"3521:3:1","nodeType":"YulIdentifier","src":"3521:3:1"},"nativeSrc":"3521:18:1","nodeType":"YulFunctionCall","src":"3521:18:1"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nativeSrc":"3468:43:1","nodeType":"YulIdentifier","src":"3468:43:1"},"nativeSrc":"3468:72:1","nodeType":"YulFunctionCall","src":"3468:72:1"},"nativeSrc":"3468:72:1","nodeType":"YulExpressionStatement","src":"3468:72:1"}]},"name":"abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed","nativeSrc":"3215:332:1","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"3305:9:1","nodeType":"YulTypedName","src":"3305:9:1","type":""},{"name":"value1","nativeSrc":"3317:6:1","nodeType":"YulTypedName","src":"3317:6:1","type":""},{"name":"value0","nativeSrc":"3325:6:1","nodeType":"YulTypedName","src":"3325:6:1","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"3336:4:1","nodeType":"YulTypedName","src":"3336:4:1","type":""}],"src":"3215:332:1"}]},"contents":"{\n\n function cleanup_t_uint256(value) -> cleaned {\n cleaned := value\n }\n\n function abi_encode_t_uint256_to_t_uint256_fromStack(value, pos) {\n mstore(pos, cleanup_t_uint256(value))\n }\n\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value0, add(headStart, 0))\n\n }\n\n function cleanup_t_uint160(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffffffffffffffffffff)\n }\n\n function cleanup_t_address_payable(value) -> cleaned {\n cleaned := cleanup_t_uint160(value)\n }\n\n function abi_encode_t_address_payable_to_t_address_payable_fromStack(value, pos) {\n mstore(pos, cleanup_t_address_payable(value))\n }\n\n function abi_encode_tuple_t_address_payable__to_t_address_payable__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_address_payable_to_t_address_payable_fromStack(value0, add(headStart, 0))\n\n }\n\n function array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function store_literal_in_memory_09be2a1d7c98765b8c1bd9ab3700b54ab19d501eebe572af39b71382f17d12e8(memPtr) {\n\n mstore(add(memPtr, 0), \"You can't withdraw yet\")\n\n }\n\n function abi_encode_t_stringliteral_09be2a1d7c98765b8c1bd9ab3700b54ab19d501eebe572af39b71382f17d12e8_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 22)\n store_literal_in_memory_09be2a1d7c98765b8c1bd9ab3700b54ab19d501eebe572af39b71382f17d12e8(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_09be2a1d7c98765b8c1bd9ab3700b54ab19d501eebe572af39b71382f17d12e8__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_09be2a1d7c98765b8c1bd9ab3700b54ab19d501eebe572af39b71382f17d12e8_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_345d93c1110e55177ee5f687f392a2e775da2aa3d491c8308e925f0505e3530a(memPtr) {\n\n mstore(add(memPtr, 0), \"You aren't the owner\")\n\n }\n\n function abi_encode_t_stringliteral_345d93c1110e55177ee5f687f392a2e775da2aa3d491c8308e925f0505e3530a_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 20)\n store_literal_in_memory_345d93c1110e55177ee5f687f392a2e775da2aa3d491c8308e925f0505e3530a(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_345d93c1110e55177ee5f687f392a2e775da2aa3d491c8308e925f0505e3530a__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_345d93c1110e55177ee5f687f392a2e775da2aa3d491c8308e925f0505e3530a_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed(headStart , value1, value0) -> tail {\n tail := add(headStart, 64)\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value1, add(headStart, 32))\n\n }\n\n}\n","id":1,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100415760003560e01c8063251c1aa3146100465780633ccfd60b146100645780638da5cb5b1461006e575b600080fd5b61004e61008c565b60405161005b919061024a565b60405180910390f35b61006c610092565b005b61007661020b565b60405161008391906102a6565b60405180910390f35b60005481565b6000544210156100d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100ce9061031e565b60405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610167576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161015e9061038a565b60405180910390fd5b7fbf2ed60bd5b5965d685680c01195c9514e4382e28e3a5a2d2d5244bf59411b9347426040516101989291906103aa565b60405180910390a1600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015610208573d6000803e3d6000fd5b50565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000819050919050565b61024481610231565b82525050565b600060208201905061025f600083018461023b565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061029082610265565b9050919050565b6102a081610285565b82525050565b60006020820190506102bb6000830184610297565b92915050565b600082825260208201905092915050565b7f596f752063616e27742077697468647261772079657400000000000000000000600082015250565b60006103086016836102c1565b9150610313826102d2565b602082019050919050565b60006020820190508181036000830152610337816102fb565b9050919050565b7f596f75206172656e277420746865206f776e6572000000000000000000000000600082015250565b60006103746014836102c1565b915061037f8261033e565b602082019050919050565b600060208201905081810360008301526103a381610367565b9050919050565b60006040820190506103bf600083018561023b565b6103cc602083018461023b565b939250505056fea264697066735822122022a2b65355af697b0725f7bcddf1c94be908ee67893e84bd3442d61fdc82585064736f6c63430008180033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x41 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x251C1AA3 EQ PUSH2 0x46 JUMPI DUP1 PUSH4 0x3CCFD60B EQ PUSH2 0x64 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x6E JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4E PUSH2 0x8C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x5B SWAP2 SWAP1 PUSH2 0x24A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x6C PUSH2 0x92 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x76 PUSH2 0x20B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x83 SWAP2 SWAP1 PUSH2 0x2A6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD TIMESTAMP LT ISZERO PUSH2 0xD7 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCE SWAP1 PUSH2 0x31E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x167 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x15E SWAP1 PUSH2 0x38A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0xBF2ED60BD5B5965D685680C01195C9514E4382E28E3A5A2D2D5244BF59411B93 SELFBALANCE TIMESTAMP PUSH1 0x40 MLOAD PUSH2 0x198 SWAP3 SWAP2 SWAP1 PUSH2 0x3AA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x8FC SELFBALANCE SWAP1 DUP2 ISZERO MUL SWAP1 PUSH1 0x40 MLOAD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0x208 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x244 DUP2 PUSH2 0x231 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x25F PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x23B JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x290 DUP3 PUSH2 0x265 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x2A0 DUP2 PUSH2 0x285 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x2BB PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x297 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x596F752063616E27742077697468647261772079657400000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x308 PUSH1 0x16 DUP4 PUSH2 0x2C1 JUMP JUMPDEST SWAP2 POP PUSH2 0x313 DUP3 PUSH2 0x2D2 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x337 DUP2 PUSH2 0x2FB JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x596F75206172656E277420746865206F776E6572000000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x374 PUSH1 0x14 DUP4 PUSH2 0x2C1 JUMP JUMPDEST SWAP2 POP PUSH2 0x37F DUP3 PUSH2 0x33E JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x3A3 DUP2 PUSH2 0x367 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x3BF PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0x23B JUMP JUMPDEST PUSH2 0x3CC PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x23B JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x22 LOG2 0xB6 MSTORE8 SSTORE 0xAF PUSH10 0x7B0725F7BCDDF1C94BE9 ADDMOD 0xEE PUSH8 0x893E84BD3442D61F 0xDC DUP3 PC POP PUSH5 0x736F6C6343 STOP ADDMOD XOR STOP CALLER ","sourceMap":"141:866:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;161:22;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;515:490;;;:::i;:::-;;189:28;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;161:22;;;;:::o;515:490::-;785:10;;766:15;:29;;758:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;854:5;;;;;;;;;;;840:19;;:10;:19;;;832:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;900:50;911:21;934:15;900:50;;;;;;;:::i;:::-;;;;;;;;961:5;;;;;;;;;;;:14;;:37;976:21;961:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;515:490::o;189:28::-;;;;;;;;;;;;;:::o;7:77:1:-;44:7;73:5;62:16;;7:77;;;:::o;90:118::-;177:24;195:5;177:24;:::i;:::-;172:3;165:37;90:118;;:::o;214:222::-;307:4;345:2;334:9;330:18;322:26;;358:71;426:1;415:9;411:17;402:6;358:71;:::i;:::-;214:222;;;;:::o;442:126::-;479:7;519:42;512:5;508:54;497:65;;442:126;;;:::o;574:104::-;619:7;648:24;666:5;648:24;:::i;:::-;637:35;;574:104;;;:::o;684:142::-;787:32;813:5;787:32;:::i;:::-;782:3;775:45;684:142;;:::o;832:254::-;941:4;979:2;968:9;964:18;956:26;;992:87;1076:1;1065:9;1061:17;1052:6;992:87;:::i;:::-;832:254;;;;:::o;1092:169::-;1176:11;1210:6;1205:3;1198:19;1250:4;1245:3;1241:14;1226:29;;1092:169;;;;:::o;1267:172::-;1407:24;1403:1;1395:6;1391:14;1384:48;1267:172;:::o;1445:366::-;1587:3;1608:67;1672:2;1667:3;1608:67;:::i;:::-;1601:74;;1684:93;1773:3;1684:93;:::i;:::-;1802:2;1797:3;1793:12;1786:19;;1445:366;;;:::o;1817:419::-;1983:4;2021:2;2010:9;2006:18;1998:26;;2070:9;2064:4;2060:20;2056:1;2045:9;2041:17;2034:47;2098:131;2224:4;2098:131;:::i;:::-;2090:139;;1817:419;;;:::o;2242:170::-;2382:22;2378:1;2370:6;2366:14;2359:46;2242:170;:::o;2418:366::-;2560:3;2581:67;2645:2;2640:3;2581:67;:::i;:::-;2574:74;;2657:93;2746:3;2657:93;:::i;:::-;2775:2;2770:3;2766:12;2759:19;;2418:366;;;:::o;2790:419::-;2956:4;2994:2;2983:9;2979:18;2971:26;;3043:9;3037:4;3033:20;3029:1;3018:9;3014:17;3007:47;3071:131;3197:4;3071:131;:::i;:::-;3063:139;;2790:419;;;:::o;3215:332::-;3336:4;3374:2;3363:9;3359:18;3351:26;;3387:71;3455:1;3444:9;3440:17;3431:6;3387:71;:::i;:::-;3468:72;3536:2;3525:9;3521:18;3512:6;3468:72;:::i;:::-;3215:332;;;;;:::o"},"methodIdentifiers":{"owner()":"8da5cb5b","unlockTime()":"251c1aa3","withdraw()":"3ccfd60b"}},"metadata":"{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_unlockTime\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"when\",\"type\":\"uint256\"}],\"name\":\"Withdrawal\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address payable\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unlockTime\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/Lock.sol\":\"Lock\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/Lock.sol\":{\"keccak256\":\"0xc458ef1602df81d573ca4759f27c351b6d7b0f7a2cf577fee984c166dda23fb5\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://3791b0b020cda6a03a53481c0702e1126b6ec8dcbc59821b557cc0c91f8048d1\",\"dweb:/ipfs/QmNSDX5uV49DpuBWKq1gW6Uq5nKLyHS542HevwTay3n9vH\"]}},\"version\":1}"}}}}} \ No newline at end of file diff --git a/artifacts/contracts/Lock.sol/Lock.dbg.json b/artifacts/contracts/Lock.sol/Lock.dbg.json deleted file mode 100644 index 5b332d8..0000000 --- a/artifacts/contracts/Lock.sol/Lock.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../build-info/22662767f8b1a09e64d324318d70c2ac.json" -} diff --git a/artifacts/contracts/Lock.sol/Lock.json b/artifacts/contracts/Lock.sol/Lock.json deleted file mode 100644 index 36afc98..0000000 --- a/artifacts/contracts/Lock.sol/Lock.json +++ /dev/null @@ -1,74 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "Lock", - "sourceName": "contracts/Lock.sol", - "abi": [ - { - "inputs": [ - { - "internalType": "uint256", - "name": "_unlockTime", - "type": "uint256" - } - ], - "stateMutability": "payable", - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint256", - "name": "amount", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "when", - "type": "uint256" - } - ], - "name": "Withdrawal", - "type": "event" - }, - { - "inputs": [], - "name": "owner", - "outputs": [ - { - "internalType": "address payable", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "unlockTime", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "withdraw", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - } - ], - "bytecode": "0x60806040526040516105d83803806105d8833981810160405281019061002591906100f0565b804210610067576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161005e906101a0565b60405180910390fd5b8060008190555033600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506101c0565b600080fd5b6000819050919050565b6100cd816100ba565b81146100d857600080fd5b50565b6000815190506100ea816100c4565b92915050565b600060208284031215610106576101056100b5565b5b6000610114848285016100db565b91505092915050565b600082825260208201905092915050565b7f556e6c6f636b2074696d652073686f756c6420626520696e207468652066757460008201527f7572650000000000000000000000000000000000000000000000000000000000602082015250565b600061018a60238361011d565b91506101958261012e565b604082019050919050565b600060208201905081810360008301526101b98161017d565b9050919050565b610409806101cf6000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c8063251c1aa3146100465780633ccfd60b146100645780638da5cb5b1461006e575b600080fd5b61004e61008c565b60405161005b919061024a565b60405180910390f35b61006c610092565b005b61007661020b565b60405161008391906102a6565b60405180910390f35b60005481565b6000544210156100d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100ce9061031e565b60405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610167576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161015e9061038a565b60405180910390fd5b7fbf2ed60bd5b5965d685680c01195c9514e4382e28e3a5a2d2d5244bf59411b9347426040516101989291906103aa565b60405180910390a1600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015610208573d6000803e3d6000fd5b50565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000819050919050565b61024481610231565b82525050565b600060208201905061025f600083018461023b565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061029082610265565b9050919050565b6102a081610285565b82525050565b60006020820190506102bb6000830184610297565b92915050565b600082825260208201905092915050565b7f596f752063616e27742077697468647261772079657400000000000000000000600082015250565b60006103086016836102c1565b9150610313826102d2565b602082019050919050565b60006020820190508181036000830152610337816102fb565b9050919050565b7f596f75206172656e277420746865206f776e6572000000000000000000000000600082015250565b60006103746014836102c1565b915061037f8261033e565b602082019050919050565b600060208201905081810360008301526103a381610367565b9050919050565b60006040820190506103bf600083018561023b565b6103cc602083018461023b565b939250505056fea264697066735822122022a2b65355af697b0725f7bcddf1c94be908ee67893e84bd3442d61fdc82585064736f6c63430008180033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100415760003560e01c8063251c1aa3146100465780633ccfd60b146100645780638da5cb5b1461006e575b600080fd5b61004e61008c565b60405161005b919061024a565b60405180910390f35b61006c610092565b005b61007661020b565b60405161008391906102a6565b60405180910390f35b60005481565b6000544210156100d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100ce9061031e565b60405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610167576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161015e9061038a565b60405180910390fd5b7fbf2ed60bd5b5965d685680c01195c9514e4382e28e3a5a2d2d5244bf59411b9347426040516101989291906103aa565b60405180910390a1600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015610208573d6000803e3d6000fd5b50565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000819050919050565b61024481610231565b82525050565b600060208201905061025f600083018461023b565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061029082610265565b9050919050565b6102a081610285565b82525050565b60006020820190506102bb6000830184610297565b92915050565b600082825260208201905092915050565b7f596f752063616e27742077697468647261772079657400000000000000000000600082015250565b60006103086016836102c1565b9150610313826102d2565b602082019050919050565b60006020820190508181036000830152610337816102fb565b9050919050565b7f596f75206172656e277420746865206f776e6572000000000000000000000000600082015250565b60006103746014836102c1565b915061037f8261033e565b602082019050919050565b600060208201905081810360008301526103a381610367565b9050919050565b60006040820190506103bf600083018561023b565b6103cc602083018461023b565b939250505056fea264697066735822122022a2b65355af697b0725f7bcddf1c94be908ee67893e84bd3442d61fdc82585064736f6c63430008180033", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/cache/solidity-files-cache.json b/cache/solidity-files-cache.json deleted file mode 100644 index a5b0d2d..0000000 --- a/cache/solidity-files-cache.json +++ /dev/null @@ -1,41 +0,0 @@ -{ - "_format": "hh-sol-cache-2", - "files": { - "/Users/nikitapoznyakov/Desktop/work/block-accounting/contracts/Lock.sol": { - "lastModificationDate": 1714595956954, - "contentHash": "dacf0d5cb5b45dc83086de5bc1c26c2c", - "sourceName": "contracts/Lock.sol", - "solcConfig": { - "version": "0.8.24", - "settings": { - "evmVersion": "paris", - "optimizer": { - "enabled": false, - "runs": 200 - }, - "outputSelection": { - "*": { - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ], - "": [ - "ast" - ] - } - } - } - }, - "imports": [], - "versionPragmas": [ - "^0.8.24" - ], - "artifacts": [ - "Lock" - ] - } - } -} diff --git a/contract/contracts/MultiSigWallet.sol b/contract/contracts/MultiSigWallet.sol new file mode 100644 index 0000000..f5a8806 --- /dev/null +++ b/contract/contracts/MultiSigWallet.sol @@ -0,0 +1,109 @@ +// SPDX-License-Identifier: MIT + +pragma solidity ^0.8.20; + +contract MultiSigWallet { + event Deposit (address indexed sender, uint amount, uint balance); + event SubmitTransaction ( + address indexed owener, + uint indexed txIndex, + address indexed to, + uint value, + bytes data + ); + + event ConfirmTransaction(address indexed owner, uint indexed txIndex); + event RevokeConfirmation(address indexed owner, uint indexed txIndex); + event ExecuteTransaction(address indexed owner, uint indexed txIndex); + + address[] public owners; + + mapping(address => bool) public isOwner; + + uint public numConfirmationsRequired; + + struct Transaction { + address to; + uint value; + bytes data; + bool executed; + uint numConfirmations; + } + + mapping(uint => mapping(address => bool)) public isConfirmed; + + Transaction[] public transactions; + + modifier txExists(uint _txIndex){ + require(_txIndex < transactions.length, "tx does not exist"); + _; + } + + modifier notConfirmed(uint _txIndex) { + require(!isConfirmed[_txIndex][msg.sender], "tx already confirmed"); + _; + } + + modifier notExecuted(uint _txIndex){ + require(!transactions[_txIndex].executed, "tx already confirmed"); + _; + } + + constructor(address[] memory _owners, uint _numConfirmationsRequired){ + require(_owners.length > 0, "owners required"); + require(_numConfirmationsRequired > 0 && _numConfirmationsRequired <= owners.length, + "invalid number of required confirmations"); + for (uint i = 0; i < _owners.length; i++) { + address owner = _owners[i]; + require(owner != address(0), "invalid owner"); + require(!isOwner[owner], "owner not unique"); + isOwner[owner] = true; + owners.push(owner); + } + numConfirmationsRequired = _numConfirmationsRequired; + } + + receive() external payable { + emit Deposit(msg.sender, msg.value, address(this).balance); + } + + function submitTransaction(address _to, uint _value, bytes memory _data) public onlyOwner { + uint txIndex = transactions.length; + transactions.push( + Transaction({ + to: _to, + value: _value, + data: _data, + executed: false, + numConfirmations: 0 + }) + ); + emit SubmitTransaction(msg.sender, txIndex, _to, _value, _data); + } + + function confirmTransaction( + uint _txIndex + ) public onlyOwner txExists(_txIndex) notExecuted(_txIndex) notConfirmed(_txIndex) { + Transaction storage transaction = transactions[_txIndex]; + transaction.numConfirmations +=1; + isConfirmed[_txIndex][msg.sender] = true; + emit ConfirmTransaction(msg.sender, _txIndex); + } + +function executeTransaction(uint _txIndex) public onlyOwner txExists(_txIndex) notExecuted(_txIndex){ + Transaction storage transaction = transactions[_txIndex]; + require( + transaction.numConfirmations >=numConfirmationsRequired, "cannot execute tx" + ); + transaction.executed = true; + (bool, success, ) = transaction.to.call{value: transaction.value}(transaction.data); + require(success, "tx failed"); + emit ExecuteTransaction(msg.sender, _txIndex); +} + + function revokeConfirmation(uint _txIndex) public onlyOwner txExists(_txIndex) notExecuted(_txIndex) { + + } + + +} \ No newline at end of file diff --git a/login-flow.png b/login-flow.png new file mode 100644 index 0000000000000000000000000000000000000000..114f1076e24734c262e03085c8c8c0e01ad4b139 GIT binary patch literal 37210 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 z�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%0D(^=Wx#JTP0^(?iMa&XPo^?3EX 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 literal 0 HcmV?d00001 diff --git a/typechain-types/Lock.ts b/typechain-types/Lock.ts deleted file mode 100644 index 10557cc..0000000 --- a/typechain-types/Lock.ts +++ /dev/null @@ -1,140 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import type { - BaseContract, - BigNumberish, - BytesLike, - FunctionFragment, - Result, - Interface, - EventFragment, - ContractRunner, - ContractMethod, - Listener, -} from "ethers"; -import type { - TypedContractEvent, - TypedDeferredTopicFilter, - TypedEventLog, - TypedLogDescription, - TypedListener, - TypedContractMethod, -} from "./common"; - -export interface LockInterface extends Interface { - getFunction( - nameOrSignature: "owner" | "unlockTime" | "withdraw" - ): FunctionFragment; - - getEvent(nameOrSignatureOrTopic: "Withdrawal"): EventFragment; - - encodeFunctionData(functionFragment: "owner", values?: undefined): string; - encodeFunctionData( - functionFragment: "unlockTime", - values?: undefined - ): string; - encodeFunctionData(functionFragment: "withdraw", values?: undefined): string; - - decodeFunctionResult(functionFragment: "owner", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "unlockTime", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "withdraw", data: BytesLike): Result; -} - -export namespace WithdrawalEvent { - export type InputTuple = [amount: BigNumberish, when: BigNumberish]; - export type OutputTuple = [amount: bigint, when: bigint]; - export interface OutputObject { - amount: bigint; - when: bigint; - } - export type Event = TypedContractEvent; - export type Filter = TypedDeferredTopicFilter; - export type Log = TypedEventLog; - export type LogDescription = TypedLogDescription; -} - -export interface Lock extends BaseContract { - connect(runner?: ContractRunner | null): Lock; - waitForDeployment(): Promise; - - interface: LockInterface; - - queryFilter( - event: TCEvent, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>>; - queryFilter( - filter: TypedDeferredTopicFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>>; - - on( - event: TCEvent, - listener: TypedListener - ): Promise; - on( - filter: TypedDeferredTopicFilter, - listener: TypedListener - ): Promise; - - once( - event: TCEvent, - listener: TypedListener - ): Promise; - once( - filter: TypedDeferredTopicFilter, - listener: TypedListener - ): Promise; - - listeners( - event: TCEvent - ): Promise>>; - listeners(eventName?: string): Promise>; - removeAllListeners( - event?: TCEvent - ): Promise; - - owner: TypedContractMethod<[], [string], "view">; - - unlockTime: TypedContractMethod<[], [bigint], "view">; - - withdraw: TypedContractMethod<[], [void], "nonpayable">; - - getFunction( - key: string | FunctionFragment - ): T; - - getFunction( - nameOrSignature: "owner" - ): TypedContractMethod<[], [string], "view">; - getFunction( - nameOrSignature: "unlockTime" - ): TypedContractMethod<[], [bigint], "view">; - getFunction( - nameOrSignature: "withdraw" - ): TypedContractMethod<[], [void], "nonpayable">; - - getEvent( - key: "Withdrawal" - ): TypedContractEvent< - WithdrawalEvent.InputTuple, - WithdrawalEvent.OutputTuple, - WithdrawalEvent.OutputObject - >; - - filters: { - "Withdrawal(uint256,uint256)": TypedContractEvent< - WithdrawalEvent.InputTuple, - WithdrawalEvent.OutputTuple, - WithdrawalEvent.OutputObject - >; - Withdrawal: TypedContractEvent< - WithdrawalEvent.InputTuple, - WithdrawalEvent.OutputTuple, - WithdrawalEvent.OutputObject - >; - }; -} diff --git a/typechain-types/common.ts b/typechain-types/common.ts deleted file mode 100644 index 56b5f21..0000000 --- a/typechain-types/common.ts +++ /dev/null @@ -1,131 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import type { - FunctionFragment, - Typed, - EventFragment, - ContractTransaction, - ContractTransactionResponse, - DeferredTopicFilter, - EventLog, - TransactionRequest, - LogDescription, -} from "ethers"; - -export interface TypedDeferredTopicFilter<_TCEvent extends TypedContractEvent> - extends DeferredTopicFilter {} - -export interface TypedContractEvent< - InputTuple extends Array = any, - OutputTuple extends Array = any, - OutputObject = any -> { - (...args: Partial): TypedDeferredTopicFilter< - TypedContractEvent - >; - name: string; - fragment: EventFragment; - getFragment(...args: Partial): EventFragment; -} - -type __TypechainAOutputTuple = T extends TypedContractEvent< - infer _U, - infer W -> - ? W - : never; -type __TypechainOutputObject = T extends TypedContractEvent< - infer _U, - infer _W, - infer V -> - ? V - : never; - -export interface TypedEventLog - extends Omit { - args: __TypechainAOutputTuple & __TypechainOutputObject; -} - -export interface TypedLogDescription - extends Omit { - args: __TypechainAOutputTuple & __TypechainOutputObject; -} - -export type TypedListener = ( - ...listenerArg: [ - ...__TypechainAOutputTuple, - TypedEventLog, - ...undefined[] - ] -) => void; - -export type MinEthersFactory = { - deploy(...a: ARGS[]): Promise; -}; - -export type GetContractTypeFromFactory = F extends MinEthersFactory< - infer C, - any -> - ? C - : never; -export type GetARGsTypeFromFactory = F extends MinEthersFactory - ? Parameters - : never; - -export type StateMutability = "nonpayable" | "payable" | "view"; - -export type BaseOverrides = Omit; -export type NonPayableOverrides = Omit< - BaseOverrides, - "value" | "blockTag" | "enableCcipRead" ->; -export type PayableOverrides = Omit< - BaseOverrides, - "blockTag" | "enableCcipRead" ->; -export type ViewOverrides = Omit; -export type Overrides = S extends "nonpayable" - ? NonPayableOverrides - : S extends "payable" - ? PayableOverrides - : ViewOverrides; - -export type PostfixOverrides, S extends StateMutability> = - | A - | [...A, Overrides]; -export type ContractMethodArgs< - A extends Array, - S extends StateMutability -> = PostfixOverrides<{ [I in keyof A]-?: A[I] | Typed }, S>; - -export type DefaultReturnType = R extends Array ? R[0] : R; - -// export interface ContractMethod = Array, R = any, D extends R | ContractTransactionResponse = R | ContractTransactionResponse> { -export interface TypedContractMethod< - A extends Array = Array, - R = any, - S extends StateMutability = "payable" -> { - (...args: ContractMethodArgs): S extends "view" - ? Promise> - : Promise; - - name: string; - - fragment: FunctionFragment; - - getFragment(...args: ContractMethodArgs): FunctionFragment; - - populateTransaction( - ...args: ContractMethodArgs - ): Promise; - staticCall( - ...args: ContractMethodArgs - ): Promise>; - send(...args: ContractMethodArgs): Promise; - estimateGas(...args: ContractMethodArgs): Promise; - staticCallResult(...args: ContractMethodArgs): Promise; -} diff --git a/typechain-types/factories/Lock__factory.ts b/typechain-types/factories/Lock__factory.ts deleted file mode 100644 index 4b6926d..0000000 --- a/typechain-types/factories/Lock__factory.ts +++ /dev/null @@ -1,133 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { - Contract, - ContractFactory, - ContractTransactionResponse, - Interface, -} from "ethers"; -import type { - Signer, - BigNumberish, - ContractDeployTransaction, - ContractRunner, -} from "ethers"; -import type { PayableOverrides } from "../common"; -import type { Lock, LockInterface } from "../Lock"; - -const _abi = [ - { - inputs: [ - { - internalType: "uint256", - name: "_unlockTime", - type: "uint256", - }, - ], - stateMutability: "payable", - type: "constructor", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - indexed: false, - internalType: "uint256", - name: "when", - type: "uint256", - }, - ], - name: "Withdrawal", - type: "event", - }, - { - inputs: [], - name: "owner", - outputs: [ - { - internalType: "address payable", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "unlockTime", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "withdraw", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, -] as const; - -const _bytecode = - "0x60806040526040516105d83803806105d8833981810160405281019061002591906100f0565b804210610067576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161005e906101a0565b60405180910390fd5b8060008190555033600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506101c0565b600080fd5b6000819050919050565b6100cd816100ba565b81146100d857600080fd5b50565b6000815190506100ea816100c4565b92915050565b600060208284031215610106576101056100b5565b5b6000610114848285016100db565b91505092915050565b600082825260208201905092915050565b7f556e6c6f636b2074696d652073686f756c6420626520696e207468652066757460008201527f7572650000000000000000000000000000000000000000000000000000000000602082015250565b600061018a60238361011d565b91506101958261012e565b604082019050919050565b600060208201905081810360008301526101b98161017d565b9050919050565b610409806101cf6000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c8063251c1aa3146100465780633ccfd60b146100645780638da5cb5b1461006e575b600080fd5b61004e61008c565b60405161005b919061024a565b60405180910390f35b61006c610092565b005b61007661020b565b60405161008391906102a6565b60405180910390f35b60005481565b6000544210156100d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100ce9061031e565b60405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610167576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161015e9061038a565b60405180910390fd5b7fbf2ed60bd5b5965d685680c01195c9514e4382e28e3a5a2d2d5244bf59411b9347426040516101989291906103aa565b60405180910390a1600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015610208573d6000803e3d6000fd5b50565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000819050919050565b61024481610231565b82525050565b600060208201905061025f600083018461023b565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061029082610265565b9050919050565b6102a081610285565b82525050565b60006020820190506102bb6000830184610297565b92915050565b600082825260208201905092915050565b7f596f752063616e27742077697468647261772079657400000000000000000000600082015250565b60006103086016836102c1565b9150610313826102d2565b602082019050919050565b60006020820190508181036000830152610337816102fb565b9050919050565b7f596f75206172656e277420746865206f776e6572000000000000000000000000600082015250565b60006103746014836102c1565b915061037f8261033e565b602082019050919050565b600060208201905081810360008301526103a381610367565b9050919050565b60006040820190506103bf600083018561023b565b6103cc602083018461023b565b939250505056fea264697066735822122022a2b65355af697b0725f7bcddf1c94be908ee67893e84bd3442d61fdc82585064736f6c63430008180033"; - -type LockConstructorParams = - | [signer?: Signer] - | ConstructorParameters; - -const isSuperArgs = ( - xs: LockConstructorParams -): xs is ConstructorParameters => xs.length > 1; - -export class Lock__factory extends ContractFactory { - constructor(...args: LockConstructorParams) { - if (isSuperArgs(args)) { - super(...args); - } else { - super(_abi, _bytecode, args[0]); - } - } - - override getDeployTransaction( - _unlockTime: BigNumberish, - overrides?: PayableOverrides & { from?: string } - ): Promise { - return super.getDeployTransaction(_unlockTime, overrides || {}); - } - override deploy( - _unlockTime: BigNumberish, - overrides?: PayableOverrides & { from?: string } - ) { - return super.deploy(_unlockTime, overrides || {}) as Promise< - Lock & { - deploymentTransaction(): ContractTransactionResponse; - } - >; - } - override connect(runner: ContractRunner | null): Lock__factory { - return super.connect(runner) as Lock__factory; - } - - static readonly bytecode = _bytecode; - static readonly abi = _abi; - static createInterface(): LockInterface { - return new Interface(_abi) as LockInterface; - } - static connect(address: string, runner?: ContractRunner | null): Lock { - return new Contract(address, _abi, runner) as unknown as Lock; - } -} diff --git a/typechain-types/factories/index.ts b/typechain-types/factories/index.ts deleted file mode 100644 index 884e7b0..0000000 --- a/typechain-types/factories/index.ts +++ /dev/null @@ -1,4 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -export { Lock__factory } from "./Lock__factory"; diff --git a/typechain-types/hardhat.d.ts b/typechain-types/hardhat.d.ts deleted file mode 100644 index 9af9956..0000000 --- a/typechain-types/hardhat.d.ts +++ /dev/null @@ -1,63 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ - -import { ethers } from "ethers"; -import { - DeployContractOptions, - FactoryOptions, - HardhatEthersHelpers as HardhatEthersHelpersBase, -} from "@nomicfoundation/hardhat-ethers/types"; - -import * as Contracts from "."; - -declare module "hardhat/types/runtime" { - interface HardhatEthersHelpers extends HardhatEthersHelpersBase { - getContractFactory( - name: "Lock", - signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; - - getContractAt( - name: "Lock", - address: string | ethers.Addressable, - signer?: ethers.Signer - ): Promise; - - deployContract( - name: "Lock", - signerOrOptions?: ethers.Signer | DeployContractOptions - ): Promise; - - deployContract( - name: "Lock", - args: any[], - signerOrOptions?: ethers.Signer | DeployContractOptions - ): Promise; - - // default types - getContractFactory( - name: string, - signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; - getContractFactory( - abi: any[], - bytecode: ethers.BytesLike, - signer?: ethers.Signer - ): Promise; - getContractAt( - nameOrAbi: string | any[], - address: string | ethers.Addressable, - signer?: ethers.Signer - ): Promise; - deployContract( - name: string, - signerOrOptions?: ethers.Signer | DeployContractOptions - ): Promise; - deployContract( - name: string, - args: any[], - signerOrOptions?: ethers.Signer | DeployContractOptions - ): Promise; - } -} diff --git a/typechain-types/index.ts b/typechain-types/index.ts deleted file mode 100644 index 9ce83e1..0000000 --- a/typechain-types/index.ts +++ /dev/null @@ -1,6 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -export type { Lock } from "./Lock"; -export * as factories from "./factories"; -export { Lock__factory } from "./factories/Lock__factory";