{"abi":[{"type":"function","name":"DOMAIN_SEPARATOR","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"TYPEHASH_CLAIM","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"TYPEHASH_COMMIT","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"TYPEHASH_REFUND","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"VERSION","inputs":[],"outputs":[{"name":"","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"type":"function","name":"checkCommitmentSignature","inputs":[{"name":"preimageHash","type":"bytes32","internalType":"bytes32"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"tokenAddress","type":"address","internalType":"address"},{"name":"claimAddress","type":"address","internalType":"address"},{"name":"refundAddress","type":"address","internalType":"address"},{"name":"timelock","type":"uint256","internalType":"uint256"},{"name":"v","type":"uint8","internalType":"uint8"},{"name":"r","type":"bytes32","internalType":"bytes32"},{"name":"s","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"claim","inputs":[{"name":"preimage","type":"bytes32","internalType":"bytes32"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"tokenAddress","type":"address","internalType":"address"},{"name":"claimAddress","type":"address","internalType":"address"},{"name":"refundAddress","type":"address","internalType":"address"},{"name":"timelock","type":"uint256","internalType":"uint256"},{"name":"v","type":"uint8","internalType":"uint8"},{"name":"r","type":"bytes32","internalType":"bytes32"},{"name":"s","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"claim","inputs":[{"name":"preimage","type":"bytes32","internalType":"bytes32"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"tokenAddress","type":"address","internalType":"address"},{"name":"refundAddress","type":"address","internalType":"address"},{"name":"timelock","type":"uint256","internalType":"uint256"},{"name":"v","type":"uint8","internalType":"uint8"},{"name":"r","type":"bytes32","internalType":"bytes32"},{"name":"s","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"claim","inputs":[{"name":"preimage","type":"bytes32","internalType":"bytes32"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"tokenAddress","type":"address","internalType":"address"},{"name":"claimAddress","type":"address","internalType":"address"},{"name":"refundAddress","type":"address","internalType":"address"},{"name":"timelock","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"claim","inputs":[{"name":"preimage","type":"bytes32","internalType":"bytes32"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"tokenAddress","type":"address","internalType":"address"},{"name":"refundAddress","type":"address","internalType":"address"},{"name":"timelock","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"claimBatch","inputs":[{"name":"tokenAddress","type":"address","internalType":"address"},{"name":"entries","type":"tuple[]","internalType":"struct ERC20Swap.BatchClaimEntry[]","components":[{"name":"preimage","type":"bytes32","internalType":"bytes32"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"refundAddress","type":"address","internalType":"address"},{"name":"timelock","type":"uint256","internalType":"uint256"},{"name":"v","type":"uint8","internalType":"uint8"},{"name":"r","type":"bytes32","internalType":"bytes32"},{"name":"s","type":"bytes32","internalType":"bytes32"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"claimBatch","inputs":[{"name":"tokenAddress","type":"address","internalType":"address"},{"name":"preimages","type":"bytes32[]","internalType":"bytes32[]"},{"name":"amounts","type":"uint256[]","internalType":"uint256[]"},{"name":"refundAddresses","type":"address[]","internalType":"address[]"},{"name":"timelocks","type":"uint256[]","internalType":"uint256[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"hashValues","inputs":[{"name":"preimageHash","type":"bytes32","internalType":"bytes32"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"tokenAddress","type":"address","internalType":"address"},{"name":"claimAddress","type":"address","internalType":"address"},{"name":"refundAddress","type":"address","internalType":"address"},{"name":"timelock","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"result","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"type":"function","name":"lock","inputs":[{"name":"preimageHash","type":"bytes32","internalType":"bytes32"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"tokenAddress","type":"address","internalType":"address"},{"name":"claimAddress","type":"address","internalType":"address"},{"name":"timelock","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"lock","inputs":[{"name":"preimageHash","type":"bytes32","internalType":"bytes32"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"tokenAddress","type":"address","internalType":"address"},{"name":"claimAddress","type":"address","internalType":"address"},{"name":"refundAddress","type":"address","internalType":"address"},{"name":"timelock","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"lockPrepayMinerfee","inputs":[{"name":"preimageHash","type":"bytes32","internalType":"bytes32"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"tokenAddress","type":"address","internalType":"address"},{"name":"claimAddress","type":"address","internalType":"address payable"},{"name":"timelock","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"refund","inputs":[{"name":"preimageHash","type":"bytes32","internalType":"bytes32"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"tokenAddress","type":"address","internalType":"address"},{"name":"claimAddress","type":"address","internalType":"address"},{"name":"refundAddress","type":"address","internalType":"address"},{"name":"timelock","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"refund","inputs":[{"name":"preimageHash","type":"bytes32","internalType":"bytes32"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"tokenAddress","type":"address","internalType":"address"},{"name":"claimAddress","type":"address","internalType":"address"},{"name":"timelock","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"refundCooperative","inputs":[{"name":"preimageHash","type":"bytes32","internalType":"bytes32"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"tokenAddress","type":"address","internalType":"address"},{"name":"claimAddress","type":"address","internalType":"address"},{"name":"refundAddress","type":"address","internalType":"address"},{"name":"timelock","type":"uint256","internalType":"uint256"},{"name":"v","type":"uint8","internalType":"uint8"},{"name":"r","type":"bytes32","internalType":"bytes32"},{"name":"s","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"refundCooperative","inputs":[{"name":"preimageHash","type":"bytes32","internalType":"bytes32"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"tokenAddress","type":"address","internalType":"address"},{"name":"claimAddress","type":"address","internalType":"address"},{"name":"timelock","type":"uint256","internalType":"uint256"},{"name":"v","type":"uint8","internalType":"uint8"},{"name":"r","type":"bytes32","internalType":"bytes32"},{"name":"s","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"swaps","inputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"version","inputs":[],"outputs":[{"name":"","type":"uint8","internalType":"uint8"}],"stateMutability":"pure"},{"type":"event","name":"Claim","inputs":[{"name":"preimageHash","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"preimage","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"Lockup","inputs":[{"name":"preimageHash","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"tokenAddress","type":"address","indexed":false,"internalType":"address"},{"name":"claimAddress","type":"address","indexed":true,"internalType":"address"},{"name":"refundAddress","type":"address","indexed":true,"internalType":"address"},{"name":"timelock","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Refund","inputs":[{"name":"preimageHash","type":"bytes32","indexed":true,"internalType":"bytes32"}],"anonymous":false},{"type":"error","name":"CommitmentCannotBeClaimedAsSwap","inputs":[]},{"type":"error","name":"EtherTransferFailed","inputs":[]},{"type":"error","name":"InvalidSignature","inputs":[]},{"type":"error","name":"SwapAlreadyExists","inputs":[]},{"type":"error","name":"SwapNotFound","inputs":[]},{"type":"error","name":"SwapNotTimedOut","inputs":[]},{"type":"error","name":"TokenTransferFailed","inputs":[]},{"type":"error","name":"TokenTransferFromFailed","inputs":[]},{"type":"error","name":"ZeroAmount","inputs":[]}],"bytecode":{"object":"0x7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60c09081527f53904d715aff4cbf81a576b4cc3901f2c5f3e7c245cad96f11bec6c197b05ea260e0527fe455bf8ea6e7463a1046a0b52804526e119b4bf5136279614e0b1e8e296a4e2d610100524661012052306101405260a08080526101606040529020608052348015610093575f5ffd5b50608051611a596100c15f395f81816101c2015281816107bb01528181610a1a0152610c110152611a595ff3fe60806040526004361061016d575f3560e01c806391644b2b116100c6578063cd413efa1161007c578063ebb7af9211610057578063ebb7af9214610470578063fb35dd96146104a3578063ffa1ad74146104c2575f5ffd5b8063cd413efa14610404578063e64fafcc14610423578063eb84e7f214610442575f5ffd5b8063b2b78df8116100ac578063b2b78df81461038e578063b8080ab8146103d2578063bc586b28146103e5575f5ffd5b806391644b2b1461033c578063a9ab4d5b1461035b575f5ffd5b80635073c277116101265780637beb9d6d116101015780637beb9d6d146102b85780638579dc5f146102fe5780638b4f3c231461031d575f5ffd5b80635073c2771461023557806354fd4d5014610268578063627b8bb714610289575f5ffd5b80633644e515116101565780633644e515146101b157806336504721146101f757806341bc637014610216575f5ffd5b80630e5bbd5914610171578063107e1bb314610192575b5f5ffd5b34801561017c575f5ffd5b5061019061018b3660046115ea565b6104d6565b005b34801561019d575f5ffd5b506101906101ac366004611662565b610526565b3480156101bc575f5ffd5b506101e47f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020015b60405180910390f35b348015610202575f5ffd5b506101906102113660046116ea565b61054d565b348015610221575f5ffd5b50610190610230366004611738565b610562565b348015610240575f5ffd5b506101e47fb13bddd37ac9193ef6fd7865d7fcfd2255978b29aaf7317aac327fcb9c53951b81565b348015610273575f5ffd5b5060065b60405160ff90911681526020016101ee565b348015610294575f5ffd5b506102a86102a3366004611662565b610709565b60405190151581526020016101ee565b3480156102c3575f5ffd5b506101e46102d23660046115ea565b604080519687526020870195909552938501929092526060840152608083015260a082015260c0902090565b348015610309575f5ffd5b50610190610318366004611803565b6108bf565b348015610328575f5ffd5b50610190610337366004611662565b610971565b348015610347575f5ffd5b506101906103563660046116ea565b610b92565b348015610366575f5ffd5b506101e47ff06c1ed74d5a145979b4b0602a00298e700feb0c04a27a49be9b6f0e7a4349dd81565b348015610399575f5ffd5b506103ad6103a83660046118e5565b610ba0565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101ee565b6101906103e03660046116ea565b610d38565b3480156103f0575f5ffd5b506101906103ff3660046115ea565b610d50565b34801561040f575f5ffd5b5061019061041e3660046116ea565b610d69565b34801561042e575f5ffd5b5061019061043d3660046115ea565b610d77565b34801561044d575f5ffd5b506102a861045c366004611958565b5f6020819052908152604090205460ff1681565b34801561047b575f5ffd5b506101e47f88d2eb81eeaf48c24a8e0c241c49b9f515812cf57db155ee3bba213131a67cf181565b3480156104ae575f5ffd5b506101906104bd3660046118e5565b610ed3565b3480156104cd575f5ffd5b50610277600681565b43811115610510576040517f2782367700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61051e868686868686610eee565b505050505050565b610537898989898989898989610f89565b61054287878a611108565b505050505050505050565b61055b8585858533866104d6565b5050505050565b5f8082815b818110156106fc578585828181106105815761058161196f565b905060e002016020013592505f5f1b8686838181106105a2576105a261196f565b905060e0020160a00135146106845761067f8686838181106105c6576105c661196f565b905060e002015f01358489338a8a878181106105e4576105e461196f565b905060e0020160400160208101906105fc919061199c565b8b8b8881811061060e5761060e61196f565b905060e00201606001358c8c8981811061062a5761062a61196f565b905060e00201608001602081019061064291906119be565b8d8d8a8181106106545761065461196f565b905060e0020160a001358e8e8b8181106106705761067061196f565b905060e0020160c00135610f89565b6106f0565b6106f08686838181106106995761069961196f565b905060e002015f01358489338a8a878181106106b7576106b761196f565b905060e0020160400160208101906106cf919061199c565b8b8b888181106106e1576106e161196f565b905060e002016060013561123c565b92820192600101610567565b505061055b853384611108565b604080517fb13bddd37ac9193ef6fd7865d7fcfd2255978b29aaf7317aac327fcb9c53951b6020808301919091528183018c9052606082018b905273ffffffffffffffffffffffffffffffffffffffff8a8116608084015289811660a0840152881660c083015260e080830188905283518084039091018152610100830190935282519201919091207f19010000000000000000000000000000000000000000000000000000000000006101208301527f00000000000000000000000000000000000000000000000000000000000000006101228301526101428201525f90819060019061016201604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282825280516020918201205f84529083018083525260ff881690820152606081018690526080810185905260a0016020604051602081039080840390855afa15801561086a573d5f5f3e3d5ffd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015173ffffffffffffffffffffffffffffffffffffffff90811690891614925050509998505050505050505050565b5f8088815b81811015610957578989828181106108de576108de61196f565b90506020020135925061094b8c8c838181106108fc576108fc61196f565b90506020020135848f338c8c878181106109185761091861196f565b905060200201602081019061092d919061199c565b8b8b8881811061093f5761093f61196f565b9050602002013561123c565b928201926001016108c4565b50506109648b3384611108565b5050505050505050505050565b604080517ff06c1ed74d5a145979b4b0602a00298e700feb0c04a27a49be9b6f0e7a4349dd6020808301919091528183018c9052606082018b905273ffffffffffffffffffffffffffffffffffffffff8a81166080840152891660a083015260c08083018890528351808403909101815260e0830190935282519201919091207f19010000000000000000000000000000000000000000000000000000000000006101008301527f00000000000000000000000000000000000000000000000000000000000000006101028301526101228201525f9060019061014201604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282825280516020918201205f84529083018083525260ff871690820152606081018590526080810184905260a0016020604051602081039080840390855afa158015610ac7573d5f5f3e3d5ffd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811615801590610b4257508673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b610b78576040517f8baa579f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b868a8a8a8a8a8a610eee565b50505050505050505050565b61055b858585853386610d77565b604080517f88d2eb81eeaf48c24a8e0c241c49b9f515812cf57db155ee3bba213131a67cf160208201529081018990526060810188905273ffffffffffffffffffffffffffffffffffffffff8088166080830152861660a082015260c081018590523360e08201525f9081906001907f0000000000000000000000000000000000000000000000000000000000000000906101000160405160208183030381529060405280519060200120604051602001610c8d9291907f190100000000000000000000000000000000000000000000000000000000000081526002810192909252602282015260420190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282825280516020918201205f84529083018083525260ff881690820152606081018690526080810185905260a0016020604051602081039080840390855afa158015610d06573d5f5f3e3d5ffd5b505050602060405103519050610d208a8a8a848b8b61123c565b610d2b88338b611108565b9998505050505050505050565b610d46858585853386610d77565b61055b82346113a8565b610d5e86868686868661123c565b61051e848487611108565b61055b858585338686610d50565b5f8511610db0576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604080518781526020808201889052818301879052606082018690526080820185905260a0820184905260c09091205f818152918290529190205460ff1615610e25576040517f734530ce00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f818152602081815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055815188815273ffffffffffffffffffffffffffffffffffffffff88811692820192909252918201849052848116919086169089907fa98eaa2bd8230d87a1a4c356f5c1d41cb85ff88131122ec8b1931cb9d31ae1459060600160405180910390a4610eca85333089611443565b50505050505050565b610ee4888888883389898989610971565b5050505050505050565b6040805187815260208101879052908101859052606081018490526080810183905260a0810182905260c09020610f248161157f565b5f8181526020819052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690555188917f3fbd469ec3a5ce074f975f76ce27e727ba21c99176917b97ae2e713695582a1291a2610eca858488611108565b604080515f8152602081018a9052908101889052606081018790526080810186905260a0810185905260c09020610fbf8161157f565b5f60028b604051602001610fd591815260200190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905261100d916119d7565b602060405180830381855afa158015611028573d5f5f3e3d5ffd5b5050506040513d601f19601f8201168201806040525081019061104b91906119ed565b905061105e818b8b8b8b8b8b8b8b610709565b611094576040517f8baa579f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f828152602081815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905590518c815282917f5664142af3dcfc3dc3de45a43f75c746bd1d8c11170a5037fdf98bdb35775137910160405180910390a25050505050505050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff8481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905291515f9283929087169161119e91906119d7565b5f604051808303815f865af19150503d805f81146111d7576040519150601f19603f3d011682016040523d82523d5f602084013e6111dc565b606091505b50915091508180156112065750805115806112065750808060200190518101906112069190611a04565b61055b576040517f045c4b0200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60028760405160200161125291815260200190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905261128a916119d7565b602060405180830381855afa1580156112a5573d5f5f3e3d5ffd5b5050506040513d601f19601f820116820180604052508101906112c891906119ed565b905080611301576040517f8b8dc8b000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805182815260208101889052908101869052606081018590526080810184905260a0810183905260c090206113378161157f565b5f818152602081815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055905189815283917f5664142af3dcfc3dc3de45a43f75c746bd1d8c11170a5037fdf98bdb35775137910160405180910390a25050505050505050565b5f8273ffffffffffffffffffffffffffffffffffffffff16826040515f6040518083038185875af1925050503d805f81146113fe576040519150601f19603f3d011682016040523d82523d5f602084013e611403565b606091505b505090508061143e576040517f6747a28800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017905291515f928392908816916114e191906119d7565b5f604051808303815f865af19150503d805f811461151a576040519150601f19603f3d011682016040523d82523d5f602084013e61151f565b606091505b50915091508180156115495750805115806115495750808060200190518101906115499190611a04565b61051e576040517fbe24f3c500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8181526020819052604090205460ff166115c6576040517f5ec69df000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b73ffffffffffffffffffffffffffffffffffffffff811681146115c6575f5ffd5b5f5f5f5f5f5f60c087890312156115ff575f5ffd5b86359550602087013594506040870135611618816115c9565b93506060870135611628816115c9565b92506080870135611638816115c9565b9598949750929591949360a090920135925050565b803560ff8116811461165d575f5ffd5b919050565b5f5f5f5f5f5f5f5f5f6101208a8c03121561167b575f5ffd5b8935985060208a0135975060408a0135611694816115c9565b965060608a01356116a4816115c9565b955060808a01356116b4816115c9565b945060a08a013593506116c960c08b0161164d565b989b979a50959894979396929550929360e081013593506101000135919050565b5f5f5f5f5f60a086880312156116fe575f5ffd5b85359450602086013593506040860135611717816115c9565b92506060860135611727816115c9565b949793965091946080013592915050565b5f5f5f6040848603121561174a575f5ffd5b8335611755816115c9565b9250602084013567ffffffffffffffff811115611770575f5ffd5b8401601f81018613611780575f5ffd5b803567ffffffffffffffff811115611796575f5ffd5b86602060e0830284010111156117aa575f5ffd5b939660209190910195509293505050565b5f5f83601f8401126117cb575f5ffd5b50813567ffffffffffffffff8111156117e2575f5ffd5b6020830191508360208260051b85010111156117fc575f5ffd5b9250929050565b5f5f5f5f5f5f5f5f5f60a08a8c03121561181b575f5ffd5b8935611826816115c9565b985060208a013567ffffffffffffffff811115611841575f5ffd5b61184d8c828d016117bb565b90995097505060408a013567ffffffffffffffff81111561186c575f5ffd5b6118788c828d016117bb565b90975095505060608a013567ffffffffffffffff811115611897575f5ffd5b6118a38c828d016117bb565b90955093505060808a013567ffffffffffffffff8111156118c2575f5ffd5b6118ce8c828d016117bb565b915080935050809150509295985092959850929598565b5f5f5f5f5f5f5f5f610100898b0312156118fd575f5ffd5b88359750602089013596506040890135611916816115c9565b95506060890135611926816115c9565b94506080890135935061193b60a08a0161164d565b979a969950949793969295929450505060c08201359160e0013590565b5f60208284031215611968575f5ffd5b5035919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f602082840312156119ac575f5ffd5b81356119b7816115c9565b9392505050565b5f602082840312156119ce575f5ffd5b6119b78261164d565b5f82518060208501845e5f920191825250919050565b5f602082840312156119fd575f5ffd5b5051919050565b5f60208284031215611a14575f5ffd5b815180151581146119b7575f5ffdfea2646970667358221220cd7954c819f64bbb287a3716dd22dc4d25ed98c2cfd2566c1b7e7b74c42a215364736f6c63430008210033","sourceMap":"1183:95:1:-:0;1159:247;273:25:57;;;1292:22:1;314:18:57;307:34;1328:14:1;357:18:57;350:34;1356:13:1;400:18:57;393:34;1391:4:1;443:19:57;436:61;163:27678:1;1159:247;;;245:19:57;163:27678:1;1159:247;1140:272;;-1:-1:-1;1096:316:1;163:27678;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361061016d575f3560e01c806391644b2b116100c6578063cd413efa1161007c578063ebb7af9211610057578063ebb7af9214610470578063fb35dd96146104a3578063ffa1ad74146104c2575f5ffd5b8063cd413efa14610404578063e64fafcc14610423578063eb84e7f214610442575f5ffd5b8063b2b78df8116100ac578063b2b78df81461038e578063b8080ab8146103d2578063bc586b28146103e5575f5ffd5b806391644b2b1461033c578063a9ab4d5b1461035b575f5ffd5b80635073c277116101265780637beb9d6d116101015780637beb9d6d146102b85780638579dc5f146102fe5780638b4f3c231461031d575f5ffd5b80635073c2771461023557806354fd4d5014610268578063627b8bb714610289575f5ffd5b80633644e515116101565780633644e515146101b157806336504721146101f757806341bc637014610216575f5ffd5b80630e5bbd5914610171578063107e1bb314610192575b5f5ffd5b34801561017c575f5ffd5b5061019061018b3660046115ea565b6104d6565b005b34801561019d575f5ffd5b506101906101ac366004611662565b610526565b3480156101bc575f5ffd5b506101e47f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020015b60405180910390f35b348015610202575f5ffd5b506101906102113660046116ea565b61054d565b348015610221575f5ffd5b50610190610230366004611738565b610562565b348015610240575f5ffd5b506101e47fb13bddd37ac9193ef6fd7865d7fcfd2255978b29aaf7317aac327fcb9c53951b81565b348015610273575f5ffd5b5060065b60405160ff90911681526020016101ee565b348015610294575f5ffd5b506102a86102a3366004611662565b610709565b60405190151581526020016101ee565b3480156102c3575f5ffd5b506101e46102d23660046115ea565b604080519687526020870195909552938501929092526060840152608083015260a082015260c0902090565b348015610309575f5ffd5b50610190610318366004611803565b6108bf565b348015610328575f5ffd5b50610190610337366004611662565b610971565b348015610347575f5ffd5b506101906103563660046116ea565b610b92565b348015610366575f5ffd5b506101e47ff06c1ed74d5a145979b4b0602a00298e700feb0c04a27a49be9b6f0e7a4349dd81565b348015610399575f5ffd5b506103ad6103a83660046118e5565b610ba0565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101ee565b6101906103e03660046116ea565b610d38565b3480156103f0575f5ffd5b506101906103ff3660046115ea565b610d50565b34801561040f575f5ffd5b5061019061041e3660046116ea565b610d69565b34801561042e575f5ffd5b5061019061043d3660046115ea565b610d77565b34801561044d575f5ffd5b506102a861045c366004611958565b5f6020819052908152604090205460ff1681565b34801561047b575f5ffd5b506101e47f88d2eb81eeaf48c24a8e0c241c49b9f515812cf57db155ee3bba213131a67cf181565b3480156104ae575f5ffd5b506101906104bd3660046118e5565b610ed3565b3480156104cd575f5ffd5b50610277600681565b43811115610510576040517f2782367700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61051e868686868686610eee565b505050505050565b610537898989898989898989610f89565b61054287878a611108565b505050505050505050565b61055b8585858533866104d6565b5050505050565b5f8082815b818110156106fc578585828181106105815761058161196f565b905060e002016020013592505f5f1b8686838181106105a2576105a261196f565b905060e0020160a00135146106845761067f8686838181106105c6576105c661196f565b905060e002015f01358489338a8a878181106105e4576105e461196f565b905060e0020160400160208101906105fc919061199c565b8b8b8881811061060e5761060e61196f565b905060e00201606001358c8c8981811061062a5761062a61196f565b905060e00201608001602081019061064291906119be565b8d8d8a8181106106545761065461196f565b905060e0020160a001358e8e8b8181106106705761067061196f565b905060e0020160c00135610f89565b6106f0565b6106f08686838181106106995761069961196f565b905060e002015f01358489338a8a878181106106b7576106b761196f565b905060e0020160400160208101906106cf919061199c565b8b8b888181106106e1576106e161196f565b905060e002016060013561123c565b92820192600101610567565b505061055b853384611108565b604080517fb13bddd37ac9193ef6fd7865d7fcfd2255978b29aaf7317aac327fcb9c53951b6020808301919091528183018c9052606082018b905273ffffffffffffffffffffffffffffffffffffffff8a8116608084015289811660a0840152881660c083015260e080830188905283518084039091018152610100830190935282519201919091207f19010000000000000000000000000000000000000000000000000000000000006101208301527f00000000000000000000000000000000000000000000000000000000000000006101228301526101428201525f90819060019061016201604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282825280516020918201205f84529083018083525260ff881690820152606081018690526080810185905260a0016020604051602081039080840390855afa15801561086a573d5f5f3e3d5ffd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015173ffffffffffffffffffffffffffffffffffffffff90811690891614925050509998505050505050505050565b5f8088815b81811015610957578989828181106108de576108de61196f565b90506020020135925061094b8c8c838181106108fc576108fc61196f565b90506020020135848f338c8c878181106109185761091861196f565b905060200201602081019061092d919061199c565b8b8b8881811061093f5761093f61196f565b9050602002013561123c565b928201926001016108c4565b50506109648b3384611108565b5050505050505050505050565b604080517ff06c1ed74d5a145979b4b0602a00298e700feb0c04a27a49be9b6f0e7a4349dd6020808301919091528183018c9052606082018b905273ffffffffffffffffffffffffffffffffffffffff8a81166080840152891660a083015260c08083018890528351808403909101815260e0830190935282519201919091207f19010000000000000000000000000000000000000000000000000000000000006101008301527f00000000000000000000000000000000000000000000000000000000000000006101028301526101228201525f9060019061014201604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282825280516020918201205f84529083018083525260ff871690820152606081018590526080810184905260a0016020604051602081039080840390855afa158015610ac7573d5f5f3e3d5ffd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811615801590610b4257508673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b610b78576040517f8baa579f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b868a8a8a8a8a8a610eee565b50505050505050505050565b61055b858585853386610d77565b604080517f88d2eb81eeaf48c24a8e0c241c49b9f515812cf57db155ee3bba213131a67cf160208201529081018990526060810188905273ffffffffffffffffffffffffffffffffffffffff8088166080830152861660a082015260c081018590523360e08201525f9081906001907f0000000000000000000000000000000000000000000000000000000000000000906101000160405160208183030381529060405280519060200120604051602001610c8d9291907f190100000000000000000000000000000000000000000000000000000000000081526002810192909252602282015260420190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282825280516020918201205f84529083018083525260ff881690820152606081018690526080810185905260a0016020604051602081039080840390855afa158015610d06573d5f5f3e3d5ffd5b505050602060405103519050610d208a8a8a848b8b61123c565b610d2b88338b611108565b9998505050505050505050565b610d46858585853386610d77565b61055b82346113a8565b610d5e86868686868661123c565b61051e848487611108565b61055b858585338686610d50565b5f8511610db0576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604080518781526020808201889052818301879052606082018690526080820185905260a0820184905260c09091205f818152918290529190205460ff1615610e25576040517f734530ce00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f818152602081815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055815188815273ffffffffffffffffffffffffffffffffffffffff88811692820192909252918201849052848116919086169089907fa98eaa2bd8230d87a1a4c356f5c1d41cb85ff88131122ec8b1931cb9d31ae1459060600160405180910390a4610eca85333089611443565b50505050505050565b610ee4888888883389898989610971565b5050505050505050565b6040805187815260208101879052908101859052606081018490526080810183905260a0810182905260c09020610f248161157f565b5f8181526020819052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690555188917f3fbd469ec3a5ce074f975f76ce27e727ba21c99176917b97ae2e713695582a1291a2610eca858488611108565b604080515f8152602081018a9052908101889052606081018790526080810186905260a0810185905260c09020610fbf8161157f565b5f60028b604051602001610fd591815260200190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905261100d916119d7565b602060405180830381855afa158015611028573d5f5f3e3d5ffd5b5050506040513d601f19601f8201168201806040525081019061104b91906119ed565b905061105e818b8b8b8b8b8b8b8b610709565b611094576040517f8baa579f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f828152602081815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905590518c815282917f5664142af3dcfc3dc3de45a43f75c746bd1d8c11170a5037fdf98bdb35775137910160405180910390a25050505050505050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff8481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905291515f9283929087169161119e91906119d7565b5f604051808303815f865af19150503d805f81146111d7576040519150601f19603f3d011682016040523d82523d5f602084013e6111dc565b606091505b50915091508180156112065750805115806112065750808060200190518101906112069190611a04565b61055b576040517f045c4b0200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60028760405160200161125291815260200190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905261128a916119d7565b602060405180830381855afa1580156112a5573d5f5f3e3d5ffd5b5050506040513d601f19601f820116820180604052508101906112c891906119ed565b905080611301576040517f8b8dc8b000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805182815260208101889052908101869052606081018590526080810184905260a0810183905260c090206113378161157f565b5f818152602081815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055905189815283917f5664142af3dcfc3dc3de45a43f75c746bd1d8c11170a5037fdf98bdb35775137910160405180910390a25050505050505050565b5f8273ffffffffffffffffffffffffffffffffffffffff16826040515f6040518083038185875af1925050503d805f81146113fe576040519150601f19603f3d011682016040523d82523d5f602084013e611403565b606091505b505090508061143e576040517f6747a28800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017905291515f928392908816916114e191906119d7565b5f604051808303815f865af19150503d805f811461151a576040519150601f19603f3d011682016040523d82523d5f602084013e61151f565b606091505b50915091508180156115495750805115806115495750808060200190518101906115499190611a04565b61051e576040517fbe24f3c500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8181526020819052604090205460ff166115c6576040517f5ec69df000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b73ffffffffffffffffffffffffffffffffffffffff811681146115c6575f5ffd5b5f5f5f5f5f5f60c087890312156115ff575f5ffd5b86359550602087013594506040870135611618816115c9565b93506060870135611628816115c9565b92506080870135611638816115c9565b9598949750929591949360a090920135925050565b803560ff8116811461165d575f5ffd5b919050565b5f5f5f5f5f5f5f5f5f6101208a8c03121561167b575f5ffd5b8935985060208a0135975060408a0135611694816115c9565b965060608a01356116a4816115c9565b955060808a01356116b4816115c9565b945060a08a013593506116c960c08b0161164d565b989b979a50959894979396929550929360e081013593506101000135919050565b5f5f5f5f5f60a086880312156116fe575f5ffd5b85359450602086013593506040860135611717816115c9565b92506060860135611727816115c9565b949793965091946080013592915050565b5f5f5f6040848603121561174a575f5ffd5b8335611755816115c9565b9250602084013567ffffffffffffffff811115611770575f5ffd5b8401601f81018613611780575f5ffd5b803567ffffffffffffffff811115611796575f5ffd5b86602060e0830284010111156117aa575f5ffd5b939660209190910195509293505050565b5f5f83601f8401126117cb575f5ffd5b50813567ffffffffffffffff8111156117e2575f5ffd5b6020830191508360208260051b85010111156117fc575f5ffd5b9250929050565b5f5f5f5f5f5f5f5f5f60a08a8c03121561181b575f5ffd5b8935611826816115c9565b985060208a013567ffffffffffffffff811115611841575f5ffd5b61184d8c828d016117bb565b90995097505060408a013567ffffffffffffffff81111561186c575f5ffd5b6118788c828d016117bb565b90975095505060608a013567ffffffffffffffff811115611897575f5ffd5b6118a38c828d016117bb565b90955093505060808a013567ffffffffffffffff8111156118c2575f5ffd5b6118ce8c828d016117bb565b915080935050809150509295985092959850929598565b5f5f5f5f5f5f5f5f610100898b0312156118fd575f5ffd5b88359750602089013596506040890135611916816115c9565b95506060890135611926816115c9565b94506080890135935061193b60a08a0161164d565b979a969950949793969295929450505060c08201359160e0013590565b5f60208284031215611968575f5ffd5b5035919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f602082840312156119ac575f5ffd5b81356119b7816115c9565b9392505050565b5f602082840312156119ce575f5ffd5b6119b78261164d565b5f82518060208501845e5f920191825250919050565b5f602082840312156119fd575f5ffd5b5051919050565b5f60208284031215611a14575f5ffd5b815180151581146119b7575f5ffdfea2646970667358221220cd7954c819f64bbb287a3716dd22dc4d25ed98c2cfd2566c1b7e7b74c42a215364736f6c63430008210033","sourceMap":"163:27678:1:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19747:535;;;;;;;;;;-1:-1:-1;19747:535:1;;;;;:::i;:::-;;:::i;:::-;;18422:500;;;;;;;;;;-1:-1:-1;18422:500:1;;;;;:::i;:::-;;:::i;1096:316::-;;;;;;;;;;;;;;;;;;2587:25:57;;;2575:2;2560:18;1096:316:1;;;;;;;;11772:232;;;;;;;;;;-1:-1:-1;11772:232:1;;;;;:::i;:::-;;:::i;9469:1580::-;;;;;;;;;;-1:-1:-1;9469:1580:1;;;;;:::i;:::-;;:::i;896:193::-;;;;;;;;;;;;938:151;896:193;;2648:80;;;;;;;;;;-1:-1:-1;519:1:1;2648:80;;;4337:4:57;4325:17;;;4307:36;;4295:2;4280:18;2648:80:1;4165:184:57;20950:845:1;;;;;;;;;;-1:-1:-1;20950:845:1;;;;;:::i;:::-;;:::i;:::-;;;4519:14:57;;4512:22;4494:41;;4482:2;4467:18;20950:845:1;4354:187:57;22334:638:1;;;;;;;;;;-1:-1:-1;22334:638:1;;;;;:::i;:::-;22634:4;22628:11;;22652:25;;;22706:4;22697:14;;22690:30;;;;22740:14;;;22733:36;;;;22798:4;22789:14;;22782:36;22847:4;22838:14;;22831:37;22897:4;22888:14;;22881:32;22951:4;22936:20;;;22334:638;8360:899;;;;;;;;;;-1:-1:-1;8360:899:1;;;;;:::i;:::-;;:::i;14067:858::-;;;;;;;;;;-1:-1:-1;14067:858:1;;;;;:::i;:::-;;:::i;4540:228::-;;;;;;;;;;-1:-1:-1;4540:228:1;;;;;:::i;:::-;;:::i;719:171::-;;;;;;;;;;;;761:129;719:171;;6967:889;;;;;;;;;;-1:-1:-1;6967:889:1;;;;;:::i;:::-;;:::i;:::-;;;7734:42:57;7722:55;;;7704:74;;7692:2;7677:18;6967:889:1;7558:226:57;3557:440:1;;;;;;:::i;:::-;;:::i;17336:426::-;;;;;;;;;;-1:-1:-1;17336:426:1;;;;;:::i;:::-;;:::i;5317:455::-;;;;;;;;;;-1:-1:-1;5317:455:1;;;;;:::i;:::-;;:::i;15684:997::-;;;;;;;;;;-1:-1:-1;15684:997:1;;;;;:::i;:::-;;:::i;1546:37::-;;;;;;;;;;-1:-1:-1;1546:37:1;;;;;:::i;:::-;;;;;;;;;;;;;;;;;527:186;;;;;;;;;;;;568:145;527:186;;12899:352;;;;;;;;;;-1:-1:-1;12899:352:1;;;;;:::i;:::-;;:::i;487:33::-;;;;;;;;;;;;519:1;487:33;;19747:535;27820:12;20131:8;:25;;20123:53;;;;;;;;;;;;;;;;;20186:89;20201:12;20215:6;20223:12;20237;20251:13;20266:8;20186:14;:89::i;:::-;19747:535;;;;;;:::o;18422:500::-;18682:102;18705:8;18715:6;18723:12;18737;18751:13;18766:8;18776:1;18779;18782;18682:22;:102::i;:::-;18847:68;18880:12;18894;18908:6;18847:32;:68::i;:::-;18422:500;;;;;;;;;:::o;11772:232::-;11919:78;11926:12;11940:6;11948:12;11962;11976:10;11988:8;11919:6;:78::i;:::-;11772:232;;;;;:::o;9469:1580::-;9566:14;;9665:7;9566:14;9693:1263;9717:3;9713:1;:7;9693:1263;;;9758:7;;9766:1;9758:10;;;;;;;:::i;:::-;;;;;;:17;;;9745:30;;9918:1;9910:10;;9894:7;;9902:1;9894:10;;;;;;;:::i;:::-;;;;;;:12;;;:26;9890:812;;9944:408;9992:7;;10000:1;9992:10;;;;;;;:::i;:::-;;;;;;:19;;;10037:10;10073:12;10111:10;10147:7;;10155:1;10147:10;;;;;;;:::i;:::-;;;;;;:24;;;;;;;;;;:::i;:::-;10197:7;;10205:1;10197:10;;;;;;;:::i;:::-;;;;;;:19;;;10242:7;;10250:1;10242:10;;;;;;;:::i;:::-;;;;;;:12;;;;;;;;;;:::i;:::-;10280:7;;10288:1;10280:10;;;;;;;:::i;:::-;;;;;;:12;;;10318:7;;10326:1;10318:10;;;;;;;:::i;:::-;;;;;;:12;;;9944:22;:408::i;:::-;9890:812;;;10399:284;10437:7;;10445:1;10437:10;;;;;;;:::i;:::-;;;;;;:19;;;10482:10;10518:12;10556:10;10592:7;;10600:1;10592:10;;;;;;;:::i;:::-;;;;;;:24;;;;;;;;;;:::i;:::-;10642:7;;10650:1;10642:10;;;;;;;:::i;:::-;;;;;;:19;;;10399:12;:284::i;:::-;10921:20;;;;9722:3;;9693:1263;;;;9627:1339;10976:66;11009:12;11023:10;11035:6;10976:32;:66::i;20950:845::-;21473:156;;;938:151;21473:156;;;;9726:25:57;;;;9767:18;;;9760:34;;;9810:18;;;9803:34;;;9885:42;9873:55;;;9853:18;;;9846:83;9966:55;;;9945:19;;;9938:84;10059:55;;10038:19;;;10031:84;10131:19;;;;10124:35;;;21473:156:1;;;;;;;;;;9698:19:57;;;21473:156:1;;;21438:213;;;;;;;;10440:66:57;21330:339:1;;;10428:79:57;21400:16:1;10523:11:57;;;10516:27;10559:12;;;10552:28;-1:-1:-1;;;;21280:458:1;;10596:12:57;;21330:339:1;;;;;;;;;;;;;21303:380;;21330:339;21303:380;;;;21280:458;;;;;;;;;10846:25:57;10919:4;10907:17;;10887:18;;;10880:45;10941:18;;;10934:34;;;10984:18;;;10977:34;;;10818:19;;21280:458:1;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;21280:458:1;;;;;21755:33;;;;;;;;;-1:-1:-1;;;20950:845:1;;;;;;;;;;;:::o;8360:899::-;8591:14;;8690:9;8591:14;8720:446;8744:3;8740:1;:7;8720:446;;;8785:7;;8793:1;8785:10;;;;;;;:::i;:::-;;;;;;;8772:23;;8813:98;8826:9;;8836:1;8826:12;;;;;;;:::i;:::-;;;;;;;8840:10;8852:12;8866:10;8878:15;;8894:1;8878:18;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;8898:9;;8908:1;8898:12;;;;;;;:::i;:::-;;;;;;;8813;:98::i;:::-;9131:20;;;;8749:3;;8720:446;;;;8652:524;9186:66;9219:12;9233:10;9245:6;9186:32;:66::i;:::-;8581:678;;8360:899;;;;;;;;;:::o;14067:858::-;14538:87;;;761:129;14538:87;;;;11309:25:57;;;;11350:18;;;11343:34;;;11393:18;;;11386:34;;;11468:42;11456:55;;;11436:18;;;11429:83;11549:55;;11528:19;;;11521:84;11621:19;;;;11614:35;;;14538:87:1;;;;;;;;;;11281:19:57;;;14538:87:1;;;14528:98;;;;;;;;10440:66:57;14420:224:1;;;10428:79:57;14490:16:1;10523:11:57;;;10516:27;10559:12;;;10552:28;-1:-1:-1;;14370:343:1;;10596:12:57;;14420:224:1;;;;;;;;;;;;;14393:265;;14420:224;14393:265;;;;14370:343;;;;;;;;;10846:25:57;10919:4;10907:17;;10887:18;;;10880:45;10941:18;;;10934:34;;;10984:18;;;10977:34;;;10818:19;;14370:343:1;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;14370:343:1;;;;;;-1:-1:-1;;14731:30:1;;;;;;;:66;;;14785:12;14765:32;;:16;:32;;;14731:66;14723:95;;;;;;;;;;;;;;;;;14829:89;14844:12;14858:6;14866:12;14880;14894:13;14909:8;14829:14;:89::i;:::-;14333:592;14067:858;;;;;;;;;:::o;4540:228::-;4685:76;4690:12;4704:6;4712:12;4726;4740:10;4752:8;4685:4;:76::i;6967:889::-;7437:95;;;568:145;7437:95;;;11975:25:57;12016:18;;;12009:34;;;12059:18;;;12052:34;;;12134:42;12122:55;;;12102:18;;;12095:83;12215:55;;12194:19;;;12187:84;12287:19;;;12280:35;;;7521:10:1;12331:19:57;;;12324:84;7198:7:1;;;;7244:397;;7364:16;;11947:19:57;;7437:95:1;;;;;;;;;;;;7402:152;;;;;;7294:278;;;;;;;;10440:66:57;10428:79;;10532:1;10523:11;;10516:27;;;;10568:2;10559:12;;10552:28;10605:2;10596:12;;10170:444;7294:278:1;;;;;;;;;;;;;;7267:319;;7294:278;7267:319;;;;7244:397;;;;;;;;;10846:25:57;10919:4;10907:17;;10887:18;;;10880:45;10941:18;;;10934:34;;;10984:18;;;10977:34;;;10818:19;;7244:397:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7217:424;;7652:87;7665:8;7675:6;7683:12;7697:16;7715:13;7730:8;7652:12;:87::i;:::-;7749:66;7782:12;7796:10;7808:6;7749:32;:66::i;:::-;7833:16;6967:889;-1:-1:-1;;;;;;;;;6967:889:1:o;3557:440::-;3766:76;3771:12;3785:6;3793:12;3807;3821:10;3833:8;3766:4;:76::i;:::-;3937:53;3966:12;3980:9;3937:28;:53::i;17336:426::-;17541:83;17554:8;17564:6;17572:12;17586;17600:13;17615:8;17541:12;:83::i;:::-;17687:68;17720:12;17734;17748:6;17687:32;:68::i;5317:455::-;5691:74;5697:8;5707:6;5715:12;5729:10;5741:13;5756:8;5691:5;:74::i;15684:997::-;15969:1;15960:6;:10;15952:33;;;;;;;;;;;;;;;;;22634:4;22628:11;;22652:25;;;22706:4;22697:14;;;22690:30;;;22740:14;;;22733:36;;;22798:4;22789:14;;22782:36;;;22847:4;22838:14;;22831:37;;;22897:4;22888:14;;22881:32;;;22951:4;22936:20;;;-1:-1:-1;16216:11:1;;;;;;;;;;;;;16215:12;16207:42;;;;;;;;;;;;;;;;;16326:5;:11;;;;;;;;;;;;:18;;;;16340:4;16326:18;;;16395:81;;12621:25:57;;;16395:81:1;12682:55:57;;;12662:18;;;12655:83;;;;12754:18;;;12747:34;;;16395:81:1;;;;;;;;16402:12;;16395:81;;12609:2:57;12594:18;16395:81:1;;;;;;;16589:85;16626:12;16640:10;16660:4;16667:6;16589:36;:85::i;:::-;15882:799;15684:997;;;;;;:::o;12899:352::-;13146:98;13164:12;13178:6;13186:12;13200;13214:10;13226:8;13236:1;13239;13242;13146:17;:98::i;:::-;12899:352;;;;;;;;:::o;26926:504::-;22634:4;22628:11;;22652:25;;;22706:4;22697:14;;22690:30;;;22740:14;;;22733:36;;;22798:4;22789:14;;22782:36;;;22847:4;22838:14;;22831:37;;;22897:4;22888:14;;22881:32;;;22951:4;22936:20;;27256:23;27274:4;27256:17;:23::i;:::-;27296:5;:11;;;;;;;;;;;27289:18;;;;;;27323:20;27330:12;;27323:20;;;27354:69;27387:12;27401:13;27416:6;27354:32;:69::i;23921:1199::-;22634:4;22628:11;;24240:12;22652:25;;22706:4;22697:14;;22690:30;;;22740:14;;;22733:36;;;22798:4;22789:14;;22782:36;;;22847:4;22838:14;;22831:37;;;22897:4;22888:14;;22881:32;;;22951:4;22936:20;;24422:23;22936:20;24422:17;:23::i;:::-;24551:20;24574:34;24598:8;24581:26;;;;;;12921:19:57;;12965:2;12956:12;;12792:182;24581:26:1;;;;;;;;;;;;;;;24574:34;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24551:57;;24639:138;24681:12;24695:6;24703:12;24717;24731:13;24746:8;24756:1;24759;24762;24639:24;:138::i;:::-;24618:201;;;;;;;;;;;;;;;;;25025:5;:11;;;;;;;;;;;;25018:18;;;;;;25084:29;;2587:25:57;;;25090:12:1;;25084:29;;2560:18:57;25084:29:1;;;;;;;24189:931;;23921:1199;;;;;;;;;:::o;1382:353:7:-;1583:45;;;1572:10;13666:55:57;;;1583:45:7;;;13648:74:57;13738:18;;;;13731:34;;;1583:45:7;;;;;;;;;;13621:18:57;;;;1583:45:7;;;;;;;;;;;;;1572:57;;-1:-1:-1;;;;1572:10:7;;;;:57;;1583:45;1572:57;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1536:93;;;;1647:7;:57;;;;-1:-1:-1;1659:11:7;;:16;;:44;;;1690:4;1679:24;;;;;;;;;;;;:::i;:::-;1639:89;;;;;;;;;;;;;;;;25728:1192:1;26062:20;26085:34;26109:8;26092:26;;;;;;12921:19:57;;12965:2;12956:12;;12792:182;26092:26:1;;;;;;;;;;;;;;;26085:34;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26062:57;-1:-1:-1;26062:57:1;26209:70;;;;;;;;;;;;;;;;;22634:4;22628:11;;22652:25;;;22706:4;22697:14;;22690:30;;;22740:14;;;22733:36;;;22798:4;22789:14;;22782:36;;;22847:4;22838:14;;22831:37;;;22897:4;22888:14;;22881:32;;;22951:4;22936:20;;26468:23;26486:4;26468:17;:23::i;:::-;26823:5;:11;;;;;;;;;;;;26816:18;;;;;;26884:29;;2587:25:57;;;26890:12:1;;26884:29;;2560:18:57;26884:29:1;;;;;;;25931:989;;25728:1192;;;;;;:::o;753:178:7:-;832:12;849:2;:7;;864:6;849:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;831:44;;;893:7;885:39;;;;;;;;;;;;;;;;;821:110;753:178;;:::o;2423:393::-;2654:51;;;2643:10;14488:55:57;;;2654:51:7;;;14470:74:57;14580:55;;;14560:18;;;14553:83;14652:18;;;;14645:34;;;2654:51:7;;;;;;;;;;14443:18:57;;;;2654:51:7;;;;;;;;;;;;;2643:63;;-1:-1:-1;;;;2643:10:7;;;;:63;;2654:51;2643:63;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2607:99;;;;2724:7;:57;;;;-1:-1:-1;2736:11:7;;:16;;:44;;;2767:4;2756:24;;;;;;;;;;;;:::i;:::-;2716:93;;;;;;;;;;;;;;;;27627:107:1;27699:5;:11;;;;;;;;;;;;;27691:36;;;;;;;;;;;;;;;;;27627:107;:::o;14:154:57:-;100:42;93:5;89:54;82:5;79:65;69:93;;158:1;155;148:12;173:892;277:6;285;293;301;309;317;370:3;358:9;349:7;345:23;341:33;338:53;;;387:1;384;377:12;338:53;432:23;;;-1:-1:-1;552:2:57;537:18;;524:32;;-1:-1:-1;634:2:57;619:18;;606:32;647:33;606:32;647:33;:::i;:::-;699:7;-1:-1:-1;758:2:57;743:18;;730:32;771:33;730:32;771:33;:::i;:::-;823:7;-1:-1:-1;882:3:57;867:19;;854:33;896;854;896;:::i;:::-;173:892;;;;-1:-1:-1;173:892:57;;;;;1028:3;1013:19;;;1000:33;;-1:-1:-1;;173:892:57:o;1070:156::-;1136:20;;1196:4;1185:16;;1175:27;;1165:55;;1216:1;1213;1206:12;1165:55;1070:156;;;:::o;1231:1205::-;1360:6;1368;1376;1384;1392;1400;1408;1416;1424;1477:3;1465:9;1456:7;1452:23;1448:33;1445:53;;;1494:1;1491;1484:12;1445:53;1539:23;;;-1:-1:-1;1659:2:57;1644:18;;1631:32;;-1:-1:-1;1741:2:57;1726:18;;1713:32;1754:33;1713:32;1754:33;:::i;:::-;1806:7;-1:-1:-1;1865:2:57;1850:18;;1837:32;1878:33;1837:32;1878:33;:::i;:::-;1930:7;-1:-1:-1;1989:3:57;1974:19;;1961:33;2003;1961;2003;:::i;:::-;2055:7;-1:-1:-1;2135:3:57;2120:19;;2107:33;;-1:-1:-1;2185:37:57;2217:3;2202:19;;2185:37;:::i;:::-;1231:1205;;;;-1:-1:-1;1231:1205:57;;;;;;;;-1:-1:-1;2175:47:57;;2295:3;2280:19;;2267:33;;-1:-1:-1;2399:3:57;2384:19;2371:33;;1231:1205;-1:-1:-1;1231:1205:57:o;2623:750::-;2718:6;2726;2734;2742;2750;2803:3;2791:9;2782:7;2778:23;2774:33;2771:53;;;2820:1;2817;2810:12;2771:53;2865:23;;;-1:-1:-1;2985:2:57;2970:18;;2957:32;;-1:-1:-1;3067:2:57;3052:18;;3039:32;3080:33;3039:32;3080:33;:::i;:::-;3132:7;-1:-1:-1;3191:2:57;3176:18;;3163:32;3204:33;3163:32;3204:33;:::i;:::-;2623:750;;;;-1:-1:-1;2623:750:57;;3336:3;3321:19;3308:33;;2623:750;-1:-1:-1;;2623:750:57:o;3378:782::-;3507:6;3515;3523;3576:2;3564:9;3555:7;3551:23;3547:32;3544:52;;;3592:1;3589;3582:12;3544:52;3631:9;3618:23;3650:31;3675:5;3650:31;:::i;:::-;3700:5;-1:-1:-1;3756:2:57;3741:18;;3728:32;3783:18;3772:30;;3769:50;;;3815:1;3812;3805:12;3769:50;3838:22;;3891:4;3883:13;;3879:27;-1:-1:-1;3869:55:57;;3920:1;3917;3910:12;3869:55;3960:2;3947:16;3986:18;3978:6;3975:30;3972:50;;;4018:1;4015;4008:12;3972:50;4074:7;4069:2;4061:4;4053:6;4049:17;4045:2;4041:26;4037:35;4034:48;4031:68;;;4095:1;4092;4085:12;4031:68;3378:782;;4126:2;4118:11;;;;;-1:-1:-1;4148:6:57;;-1:-1:-1;;;3378:782:57:o;4546:367::-;4609:8;4619:6;4673:3;4666:4;4658:6;4654:17;4650:27;4640:55;;4691:1;4688;4681:12;4640:55;-1:-1:-1;4714:20:57;;4757:18;4746:30;;4743:50;;;4789:1;4786;4779:12;4743:50;4826:4;4818:6;4814:17;4802:29;;4886:3;4879:4;4869:6;4866:1;4862:14;4854:6;4850:27;4846:38;4843:47;4840:67;;;4903:1;4900;4893:12;4840:67;4546:367;;;;;:::o;4918:1567::-;5121:6;5129;5137;5145;5153;5161;5169;5177;5185;5238:3;5226:9;5217:7;5213:23;5209:33;5206:53;;;5255:1;5252;5245:12;5206:53;5294:9;5281:23;5313:31;5338:5;5313:31;:::i;:::-;5363:5;-1:-1:-1;5419:2:57;5404:18;;5391:32;5446:18;5435:30;;5432:50;;;5478:1;5475;5468:12;5432:50;5517:70;5579:7;5570:6;5559:9;5555:22;5517:70;:::i;:::-;5606:8;;-1:-1:-1;5491:96:57;-1:-1:-1;;5694:2:57;5679:18;;5666:32;5723:18;5710:32;;5707:52;;;5755:1;5752;5745:12;5707:52;5794:72;5858:7;5847:8;5836:9;5832:24;5794:72;:::i;:::-;5885:8;;-1:-1:-1;5768:98:57;-1:-1:-1;;5973:2:57;5958:18;;5945:32;6002:18;5989:32;;5986:52;;;6034:1;6031;6024:12;5986:52;6073:72;6137:7;6126:8;6115:9;6111:24;6073:72;:::i;:::-;6164:8;;-1:-1:-1;6047:98:57;-1:-1:-1;;6252:3:57;6237:19;;6224:33;6282:18;6269:32;;6266:52;;;6314:1;6311;6304:12;6266:52;6353:72;6417:7;6406:8;6395:9;6391:24;6353:72;:::i;:::-;6327:98;;6444:8;6434:18;;;6471:8;6461:18;;;4918:1567;;;;;;;;;;;:::o;6490:1063::-;6610:6;6618;6626;6634;6642;6650;6658;6666;6719:3;6707:9;6698:7;6694:23;6690:33;6687:53;;;6736:1;6733;6726:12;6687:53;6781:23;;;-1:-1:-1;6901:2:57;6886:18;;6873:32;;-1:-1:-1;6983:2:57;6968:18;;6955:32;6996:33;6955:32;6996:33;:::i;:::-;7048:7;-1:-1:-1;7107:2:57;7092:18;;7079:32;7120:33;7079:32;7120:33;:::i;:::-;7172:7;-1:-1:-1;7252:3:57;7237:19;;7224:33;;-1:-1:-1;7302:37:57;7334:3;7319:19;;7302:37;:::i;:::-;6490:1063;;;;-1:-1:-1;6490:1063:57;;;;;;7292:47;;-1:-1:-1;;;7412:3:57;7397:19;;7384:33;;7516:3;7501:19;7488:33;;6490:1063::o;8552:226::-;8611:6;8664:2;8652:9;8643:7;8639:23;8635:32;8632:52;;;8680:1;8677;8670:12;8632:52;-1:-1:-1;8725:23:57;;8552:226;-1:-1:-1;8552:226:57:o;8783:184::-;8835:77;8832:1;8825:88;8932:4;8929:1;8922:15;8956:4;8953:1;8946:15;8972:247;9031:6;9084:2;9072:9;9063:7;9059:23;9055:32;9052:52;;;9100:1;9097;9090:12;9052:52;9139:9;9126:23;9158:31;9183:5;9158:31;:::i;:::-;9208:5;8972:247;-1:-1:-1;;;8972:247:57:o;9224:182::-;9281:6;9334:2;9322:9;9313:7;9309:23;9305:32;9302:52;;;9350:1;9347;9340:12;9302:52;9373:27;9390:9;9373:27;:::i;12979:301::-;13108:3;13146:6;13140:13;13192:6;13185:4;13177:6;13173:17;13168:3;13162:37;13254:1;13218:16;;13243:13;;;-1:-1:-1;13218:16:57;12979:301;-1:-1:-1;12979:301:57:o;13285:184::-;13355:6;13408:2;13396:9;13387:7;13383:23;13379:32;13376:52;;;13424:1;13421;13414:12;13376:52;-1:-1:-1;13447:16:57;;13285:184;-1:-1:-1;13285:184:57:o;13776:277::-;13843:6;13896:2;13884:9;13875:7;13871:23;13867:32;13864:52;;;13912:1;13909;13902:12;13864:52;13944:9;13938:16;13997:5;13990:13;13983:21;13976:5;13973:32;13963:60;;14019:1;14016;14009:12","linkReferences":{},"immutableReferences":{"411":[{"start":450,"length":32},{"start":1979,"length":32},{"start":2586,"length":32},{"start":3089,"length":32}]}},"methodIdentifiers":{"DOMAIN_SEPARATOR()":"3644e515","TYPEHASH_CLAIM()":"ebb7af92","TYPEHASH_COMMIT()":"5073c277","TYPEHASH_REFUND()":"a9ab4d5b","VERSION()":"ffa1ad74","checkCommitmentSignature(bytes32,uint256,address,address,address,uint256,uint8,bytes32,bytes32)":"627b8bb7","claim(bytes32,uint256,address,address,address,uint256)":"bc586b28","claim(bytes32,uint256,address,address,address,uint256,uint8,bytes32,bytes32)":"107e1bb3","claim(bytes32,uint256,address,address,uint256)":"cd413efa","claim(bytes32,uint256,address,address,uint256,uint8,bytes32,bytes32)":"b2b78df8","claimBatch(address,(bytes32,uint256,address,uint256,uint8,bytes32,bytes32)[])":"41bc6370","claimBatch(address,bytes32[],uint256[],address[],uint256[])":"8579dc5f","hashValues(bytes32,uint256,address,address,address,uint256)":"7beb9d6d","lock(bytes32,uint256,address,address,address,uint256)":"e64fafcc","lock(bytes32,uint256,address,address,uint256)":"91644b2b","lockPrepayMinerfee(bytes32,uint256,address,address,uint256)":"b8080ab8","refund(bytes32,uint256,address,address,address,uint256)":"0e5bbd59","refund(bytes32,uint256,address,address,uint256)":"36504721","refundCooperative(bytes32,uint256,address,address,address,uint256,uint8,bytes32,bytes32)":"8b4f3c23","refundCooperative(bytes32,uint256,address,address,uint256,uint8,bytes32,bytes32)":"fb35dd96","swaps(bytes32)":"eb84e7f2","version()":"54fd4d50"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.33+commit.64118f21\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"CommitmentCannotBeClaimedAsSwap\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EtherTransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSignature\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SwapAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SwapNotFound\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SwapNotTimedOut\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TokenTransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TokenTransferFromFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAmount\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"preimageHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"preimage\",\"type\":\"bytes32\"}],\"name\":\"Claim\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"preimageHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"claimAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"refundAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timelock\",\"type\":\"uint256\"}],\"name\":\"Lockup\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"preimageHash\",\"type\":\"bytes32\"}],\"name\":\"Refund\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"TYPEHASH_CLAIM\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"TYPEHASH_COMMIT\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"TYPEHASH_REFUND\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VERSION\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"preimageHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"claimAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"refundAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"timelock\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"checkCommitmentSignature\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"preimage\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"claimAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"refundAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"timelock\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"claim\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"preimage\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"refundAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"timelock\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"claim\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"preimage\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"claimAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"refundAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"timelock\",\"type\":\"uint256\"}],\"name\":\"claim\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"preimage\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"refundAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"timelock\",\"type\":\"uint256\"}],\"name\":\"claim\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"preimage\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"refundAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"timelock\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"internalType\":\"struct ERC20Swap.BatchClaimEntry[]\",\"name\":\"entries\",\"type\":\"tuple[]\"}],\"name\":\"claimBatch\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32[]\",\"name\":\"preimages\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"address[]\",\"name\":\"refundAddresses\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"timelocks\",\"type\":\"uint256[]\"}],\"name\":\"claimBatch\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"preimageHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"claimAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"refundAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"timelock\",\"type\":\"uint256\"}],\"name\":\"hashValues\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"result\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"preimageHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"claimAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"timelock\",\"type\":\"uint256\"}],\"name\":\"lock\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"preimageHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"claimAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"refundAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"timelock\",\"type\":\"uint256\"}],\"name\":\"lock\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"preimageHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"},{\"internalType\":\"address payable\",\"name\":\"claimAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"timelock\",\"type\":\"uint256\"}],\"name\":\"lockPrepayMinerfee\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"preimageHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"claimAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"refundAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"timelock\",\"type\":\"uint256\"}],\"name\":\"refund\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"preimageHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"claimAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"timelock\",\"type\":\"uint256\"}],\"name\":\"refund\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"preimageHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"claimAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"refundAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"timelock\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"refundCooperative\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"preimageHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"claimAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"timelock\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"refundCooperative\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"swaps\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"CommitmentCannotBeClaimedAsSwap()\":[{\"details\":\"Thrown when trying to claim a commitment as a regular swap\"}],\"InvalidSignature()\":[{\"details\":\"Thrown when the recovered address from a signature is invalid\"}],\"SwapAlreadyExists()\":[{\"details\":\"Thrown when a swap with the same hash already exists\"}],\"SwapNotFound()\":[{\"details\":\"Thrown when no swap is found for the given hash\"}],\"SwapNotTimedOut()\":[{\"details\":\"Thrown when the swap timelock has not expired yet\"}],\"ZeroAmount()\":[{\"details\":\"Thrown when the locked amount is zero\"}]},\"kind\":\"dev\",\"methods\":{\"checkCommitmentSignature(bytes32,uint256,address,address,address,uint256,uint8,bytes32,bytes32)\":{\"params\":{\"amount\":\"Amount the swap has locked\",\"claimAddress\":\"Address that can claim the locked tokens\",\"preimageHash\":\"Preimage hash of the swap\",\"r\":\"Second 32 bytes of the signature\",\"refundAddress\":\"Address that locked the tokens and can refund them\",\"s\":\"First 32 bytes of the signature\",\"timelock\":\"Block height after which the locked tokens can be refunded\",\"tokenAddress\":\"Address of the token locked for the swap\",\"v\":\"Final byte of the signature\"},\"returns\":{\"_0\":\"True if the signature is valid, false otherwise\"}},\"claim(bytes32,uint256,address,address,address,uint256)\":{\"details\":\"To query the arguments of this function, get the \\\"Lockup\\\" event logs for the SHA256 hash of the preimage\",\"params\":{\"amount\":\"Amount locked in the contract for the swap in the smallest denomination of the token\",\"claimAddress\":\"Address to which the claimed funds will be sent\",\"preimage\":\"Preimage of the swap\",\"refundAddress\":\"Address that locked the tokens in the contract\",\"timelock\":\"Block height after which the locked tokens can be refunded\",\"tokenAddress\":\"Address of the token locked for the swap\"}},\"claim(bytes32,uint256,address,address,address,uint256,uint8,bytes32,bytes32)\":{\"params\":{\"amount\":\"Amount locked in the contract for the swap in WEI\",\"claimAddress\":\"Address to which the claimed funds will be sent\",\"preimage\":\"Preimage of the swap\",\"r\":\"Second 32 bytes of the signature\",\"refundAddress\":\"Address that locked the tokens in the contract\",\"s\":\"First 32 bytes of the signature\",\"timelock\":\"Block height after which the locked tokens can be refunded\",\"tokenAddress\":\"Address of the token locked for the swap\",\"v\":\"Final byte of the signature\"}},\"claim(bytes32,uint256,address,address,uint256)\":{\"details\":\"To query the arguments of this function, get the \\\"Lockup\\\" event logs for the SHA256 hash of the preimage\",\"params\":{\"amount\":\"Amount locked in the contract for the swap in the smallest denomination of the token\",\"preimage\":\"Preimage of the swap\",\"refundAddress\":\"Address that locked the tokens in the contract\",\"timelock\":\"Block height after which the locked tokens can be refunded\",\"tokenAddress\":\"Address of the token locked for the swap\"}},\"claim(bytes32,uint256,address,address,uint256,uint8,bytes32,bytes32)\":{\"details\":\"The signature must be created by the claim address over the claim data using EIP-712 standardThe recovered claim address from the signature must match the intended claim address for the swapThe claimed funds are sent to msg.sender (the transaction executor), not the claim address that signed\",\"params\":{\"amount\":\"Amount locked in the contract for the swap in the smallest denomination of the token\",\"preimage\":\"Preimage of the swap\",\"r\":\"Second 32 bytes of the signature\",\"refundAddress\":\"Address that locked the tokens in the contract\",\"s\":\"First 32 bytes of the signature\",\"timelock\":\"Block height after which the locked tokens can be refunded\",\"tokenAddress\":\"Address of the token locked for the swap\",\"v\":\"Final byte of the signature\"},\"returns\":{\"_0\":\"recoveredAddress The address that signed the claim message (recovered from signature)\"}},\"claimBatch(address,(bytes32,uint256,address,uint256,uint8,bytes32,bytes32)[])\":{\"details\":\"All swaps that are claimed have to have \\\"msg.sender\\\" as \\\"claimAddress\\\"\",\"params\":{\"entries\":\"Entries to claim\"}},\"claimBatch(address,bytes32[],uint256[],address[],uint256[])\":{\"details\":\"All swaps that are claimed have to have \\\"msg.sender\\\" as \\\"claimAddress\\\" and the same token address\",\"params\":{\"amounts\":\"Amounts that are locked in the contract for the swap in WEI\",\"preimages\":\"Preimages of the swaps\",\"refundAddresses\":\"Addresses that locked the tokens in the contract\",\"timelocks\":\"Block heights after which the locked tokens can be refunded\",\"tokenAddress\":\"Address of the token of the swap\"}},\"hashValues(bytes32,uint256,address,address,address,uint256)\":{\"params\":{\"amount\":\"Amount the swap has locked in the smallest denomination of the token\",\"claimAddress\":\"Address that can claim the locked tokens\",\"preimageHash\":\"Preimage hash of the swap\",\"refundAddress\":\"Address that locked the tokens and can refund them\",\"timelock\":\"Block height after which the locked tokens can be refunded\",\"tokenAddress\":\"Address of the token of the swap\"},\"returns\":{\"result\":\"hash of the swap\"}},\"lock(bytes32,uint256,address,address,address,uint256)\":{\"details\":\"This function is \\\"public\\\" so that it can be called from the outside and \\\"lockPrepayMinerfee\\\" function\",\"params\":{\"amount\":\"Amount to be locked in the contract\",\"claimAddress\":\"Address that can claim the locked tokens\",\"preimageHash\":\"Preimage hash of the swap\",\"refundAddress\":\"Address that locked the tokens in the contract\",\"timelock\":\"Block height after which the locked tokens can be refunded\",\"tokenAddress\":\"Address of the token to be locked\"}},\"lock(bytes32,uint256,address,address,uint256)\":{\"params\":{\"amount\":\"Amount to be locked in the contract\",\"claimAddress\":\"Address that can claim the locked tokens\",\"preimageHash\":\"Preimage hash of the swap\",\"timelock\":\"Block height after which the locked tokens can be refunded\",\"tokenAddress\":\"Address of the token to be locked\"}},\"lockPrepayMinerfee(bytes32,uint256,address,address,uint256)\":{\"details\":\"Make sure to set a reasonable gas limit for calling this function, else a malicious contract at the claim address could drain your Ether\",\"params\":{\"amount\":\"Amount that should be locked in the contract in the smallest denomination of the token\",\"claimAddress\":\"Address that can claim the locked tokens\",\"preimageHash\":\"Preimage hash of the swap\",\"timelock\":\"Block height after which the locked tokens can be refunded\",\"tokenAddress\":\"Address of the token that should be locked in the contract\"}},\"refund(bytes32,uint256,address,address,address,uint256)\":{\"details\":\"To query the arguments of this function, get the \\\"Lockup\\\" event logs for your refund address and the preimage hash if you have itFor further explanations and reasoning behind the statements in this function, check the \\\"claim\\\" function\",\"params\":{\"amount\":\"Amount locked in the contract for the swap in the smallest denomination of the token\",\"claimAddress\":\"Address that was destined to claim the funds\",\"preimageHash\":\"Preimage hash of the swap\",\"refundAddress\":\"Address that locked the tokens in the contract\",\"timelock\":\"Block height after which the locked tokens can be refunded\",\"tokenAddress\":\"Address of the token locked for the swap\"}},\"refund(bytes32,uint256,address,address,uint256)\":{\"details\":\"To query the arguments of this function, get the \\\"Lockup\\\" event logs for your refund address and the preimage hash if you have itFor further explanations and reasoning behind the statements in this function, check the \\\"claim\\\" function\",\"params\":{\"amount\":\"Amount locked in the contract for the swap in the smallest denomination of the token\",\"claimAddress\":\"Address that that was destined to claim the funds\",\"preimageHash\":\"Preimage hash of the swap\",\"timelock\":\"Block height after which the locked tokens can be refunded\",\"tokenAddress\":\"Address of the token locked for the swap\"}},\"refundCooperative(bytes32,uint256,address,address,address,uint256,uint8,bytes32,bytes32)\":{\"details\":\"This function allows cooperative refunds to be executed on someone else's behalf by a sponsor\",\"params\":{\"amount\":\"Amount locked in the contract for the swap in the smallest denomination of the token\",\"claimAddress\":\"Address that that was destined to claim the funds\",\"preimageHash\":\"Preimage hash of the swap\",\"r\":\"Second 32 bytes of the signature\",\"refundAddress\":\"Address that locked the tokens in the contract\",\"s\":\"First 32 bytes of the signature\",\"timelock\":\"Block height after which the locked tokens can be refunded\",\"tokenAddress\":\"Address of the token locked for the swap\",\"v\":\"Final byte of the signature\"}},\"refundCooperative(bytes32,uint256,address,address,uint256,uint8,bytes32,bytes32)\":{\"details\":\"To query the arguments of this function, get the \\\"Lockup\\\" event logs for your refund address and the preimage hash if you have itFor further explanations and reasoning behind the statements in this function, check the \\\"claim\\\" function\",\"params\":{\"amount\":\"Amount locked in the contract for the swap in the smallest denomination of the token\",\"claimAddress\":\"Address that that was destined to claim the funds\",\"preimageHash\":\"Preimage hash of the swap\",\"r\":\"Second 32 bytes of the signature\",\"s\":\"First 32 bytes of the signature\",\"timelock\":\"Block height after which the locked tokens can be refunded\",\"tokenAddress\":\"Address of the token locked for the swap\",\"v\":\"Final byte of the signature\"}},\"version()\":{\"details\":\"Returns the version of the contract\"}},\"stateVariables\":{\"VERSION\":{\"details\":\"Version of the contract used for compatibility checks\"},\"swaps\":{\"details\":\"Mapping between value hashes of swaps and whether they have tokens locked in the contract\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"checkCommitmentSignature(bytes32,uint256,address,address,address,uint256,uint8,bytes32,bytes32)\":{\"notice\":\"Checks if a commitment signature is valid\"},\"claim(bytes32,uint256,address,address,address,uint256)\":{\"notice\":\"Claims tokens locked in the contract for a specified claim address\"},\"claim(bytes32,uint256,address,address,address,uint256,uint8,bytes32,bytes32)\":{\"notice\":\"Claims tokens locked in the contract as commitment for a specified claim address\"},\"claim(bytes32,uint256,address,address,uint256)\":{\"notice\":\"Claims tokens locked in the contract\"},\"claim(bytes32,uint256,address,address,uint256,uint8,bytes32,bytes32)\":{\"notice\":\"Claims tokens locked in the contract using an EIP-712 signature from the claim addressThis function allows anyone to execute a claim on behalf of the intended claim address by providing a valid signature\"},\"claimBatch(address,(bytes32,uint256,address,uint256,uint8,bytes32,bytes32)[])\":{\"notice\":\"Claims multiple swaps Supports both commitment and normal swaps\"},\"claimBatch(address,bytes32[],uint256[],address[],uint256[])\":{\"notice\":\"Claims multiple swaps\"},\"hashValues(bytes32,uint256,address,address,address,uint256)\":{\"notice\":\"Hashes all the values of a swap with Keccak256\"},\"lock(bytes32,uint256,address,address,address,uint256)\":{\"notice\":\"Locks tokens in the contractThe refund address is the sender of the transactionUse bytes32(0) as preimageHash only for commitment-based swaps to avoid accidental misuse\"},\"lock(bytes32,uint256,address,address,uint256)\":{\"notice\":\"Locks tokens in the contractThe refund address is the sender of the transactionUse bytes32(0) as preimageHash only for commitment-based swaps to avoid accidental misuse\"},\"lockPrepayMinerfee(bytes32,uint256,address,address,uint256)\":{\"notice\":\"Locks tokens for a swap in the contract and forwards a specified amount of Ether to the claim addressThe amount of Ether forwarded to the claim address is the amount sent in the transaction and the refund address is the sender of the transaction\"},\"refund(bytes32,uint256,address,address,address,uint256)\":{\"notice\":\"Refunds tokens locked in the contract after the timeout for a specified refund address\"},\"refund(bytes32,uint256,address,address,uint256)\":{\"notice\":\"Refunds tokens locked in the contract after the timeout\"},\"refundCooperative(bytes32,uint256,address,address,address,uint256,uint8,bytes32,bytes32)\":{\"notice\":\"Refunds tokens locked in the contract with an EIP-712 signature of the claimAddress\"},\"refundCooperative(bytes32,uint256,address,address,uint256,uint8,bytes32,bytes32)\":{\"notice\":\"Refunds tokens locked in the contract with an EIP-712 signature of the claimAddress\"},\"version()\":{\"notice\":\"For backwards compatibility\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/ERC20Swap.sol\":\"ERC20Swap\"},\"evmVersion\":\"osaka\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":10000000},\"remappings\":[\":@openzeppelin/contracts/=solidity-lib/openzeppelin-contracts/contracts/\",\":ds-test/=solidity-lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=solidity-lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-gas-snapshot/=solidity-lib/permit2/lib/forge-gas-snapshot/src/\",\":forge-std/=solidity-lib/forge-std/src/\",\":halmos-cheatcodes/=solidity-lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=solidity-lib/openzeppelin-contracts/\",\":permit2/=solidity-lib/permit2/src/\",\":solmate/=solidity-lib/permit2/lib/solmate/\"]},\"sources\":{\"contracts/ERC20Swap.sol\":{\"keccak256\":\"0x4c89458aa8967b85f27a19b4df1954860c7a975324ba8d149eafe0f470156ae1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://182a66a2e5652143dea42a459b572cbc80e3ec7087a871448f3b3d59adea0dfa\",\"dweb:/ipfs/QmQ1tviXEyynbQfiMJrUgvmtQnyE1GLadpqKb1xU6mVLD5\"]},\"contracts/TransferHelper.sol\":{\"keccak256\":\"0x904b11574cbdeb14418232b69209aee913f21efedfb5a73c7485d5908f7f3cc0\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://986e85839e2268d7584a4b294fa8a0313f75d4c720343a1d7f0b1f2453bbef42\",\"dweb:/ipfs/QmWRvDVtrxvBppdyL6UbnziEB8WFJx8THExTXXEnUa7Gvq\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.33+commit.64118f21"},"language":"Solidity","output":{"abi":[{"inputs":[],"type":"error","name":"CommitmentCannotBeClaimedAsSwap"},{"inputs":[],"type":"error","name":"EtherTransferFailed"},{"inputs":[],"type":"error","name":"InvalidSignature"},{"inputs":[],"type":"error","name":"SwapAlreadyExists"},{"inputs":[],"type":"error","name":"SwapNotFound"},{"inputs":[],"type":"error","name":"SwapNotTimedOut"},{"inputs":[],"type":"error","name":"TokenTransferFailed"},{"inputs":[],"type":"error","name":"TokenTransferFromFailed"},{"inputs":[],"type":"error","name":"ZeroAmount"},{"inputs":[{"internalType":"bytes32","name":"preimageHash","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"preimage","type":"bytes32","indexed":false}],"type":"event","name":"Claim","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"preimageHash","type":"bytes32","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"address","name":"tokenAddress","type":"address","indexed":false},{"internalType":"address","name":"claimAddress","type":"address","indexed":true},{"internalType":"address","name":"refundAddress","type":"address","indexed":true},{"internalType":"uint256","name":"timelock","type":"uint256","indexed":false}],"type":"event","name":"Lockup","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"preimageHash","type":"bytes32","indexed":true}],"type":"event","name":"Refund","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"TYPEHASH_CLAIM","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"TYPEHASH_COMMIT","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"TYPEHASH_REFUND","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"VERSION","outputs":[{"internalType":"uint8","name":"","type":"uint8"}]},{"inputs":[{"internalType":"bytes32","name":"preimageHash","type":"bytes32"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"address","name":"claimAddress","type":"address"},{"internalType":"address","name":"refundAddress","type":"address"},{"internalType":"uint256","name":"timelock","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"stateMutability":"view","type":"function","name":"checkCommitmentSignature","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"bytes32","name":"preimage","type":"bytes32"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"address","name":"claimAddress","type":"address"},{"internalType":"address","name":"refundAddress","type":"address"},{"internalType":"uint256","name":"timelock","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"claim"},{"inputs":[{"internalType":"bytes32","name":"preimage","type":"bytes32"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"address","name":"refundAddress","type":"address"},{"internalType":"uint256","name":"timelock","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"claim","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"bytes32","name":"preimage","type":"bytes32"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"address","name":"claimAddress","type":"address"},{"internalType":"address","name":"refundAddress","type":"address"},{"internalType":"uint256","name":"timelock","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"claim"},{"inputs":[{"internalType":"bytes32","name":"preimage","type":"bytes32"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"address","name":"refundAddress","type":"address"},{"internalType":"uint256","name":"timelock","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"claim"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"struct ERC20Swap.BatchClaimEntry[]","name":"entries","type":"tuple[]","components":[{"internalType":"bytes32","name":"preimage","type":"bytes32"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"refundAddress","type":"address"},{"internalType":"uint256","name":"timelock","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}]}],"stateMutability":"nonpayable","type":"function","name":"claimBatch"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"bytes32[]","name":"preimages","type":"bytes32[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"address[]","name":"refundAddresses","type":"address[]"},{"internalType":"uint256[]","name":"timelocks","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"claimBatch"},{"inputs":[{"internalType":"bytes32","name":"preimageHash","type":"bytes32"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"address","name":"claimAddress","type":"address"},{"internalType":"address","name":"refundAddress","type":"address"},{"internalType":"uint256","name":"timelock","type":"uint256"}],"stateMutability":"pure","type":"function","name":"hashValues","outputs":[{"internalType":"bytes32","name":"result","type":"bytes32"}]},{"inputs":[{"internalType":"bytes32","name":"preimageHash","type":"bytes32"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"address","name":"claimAddress","type":"address"},{"internalType":"uint256","name":"timelock","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"lock"},{"inputs":[{"internalType":"bytes32","name":"preimageHash","type":"bytes32"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"address","name":"claimAddress","type":"address"},{"internalType":"address","name":"refundAddress","type":"address"},{"internalType":"uint256","name":"timelock","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"lock"},{"inputs":[{"internalType":"bytes32","name":"preimageHash","type":"bytes32"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"address payable","name":"claimAddress","type":"address"},{"internalType":"uint256","name":"timelock","type":"uint256"}],"stateMutability":"payable","type":"function","name":"lockPrepayMinerfee"},{"inputs":[{"internalType":"bytes32","name":"preimageHash","type":"bytes32"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"address","name":"claimAddress","type":"address"},{"internalType":"address","name":"refundAddress","type":"address"},{"internalType":"uint256","name":"timelock","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"refund"},{"inputs":[{"internalType":"bytes32","name":"preimageHash","type":"bytes32"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"address","name":"claimAddress","type":"address"},{"internalType":"uint256","name":"timelock","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"refund"},{"inputs":[{"internalType":"bytes32","name":"preimageHash","type":"bytes32"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"address","name":"claimAddress","type":"address"},{"internalType":"address","name":"refundAddress","type":"address"},{"internalType":"uint256","name":"timelock","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"refundCooperative"},{"inputs":[{"internalType":"bytes32","name":"preimageHash","type":"bytes32"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"address","name":"claimAddress","type":"address"},{"internalType":"uint256","name":"timelock","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"refundCooperative"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function","name":"swaps","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"pure","type":"function","name":"version","outputs":[{"internalType":"uint8","name":"","type":"uint8"}]}],"devdoc":{"kind":"dev","methods":{"checkCommitmentSignature(bytes32,uint256,address,address,address,uint256,uint8,bytes32,bytes32)":{"params":{"amount":"Amount the swap has locked","claimAddress":"Address that can claim the locked tokens","preimageHash":"Preimage hash of the swap","r":"Second 32 bytes of the signature","refundAddress":"Address that locked the tokens and can refund them","s":"First 32 bytes of the signature","timelock":"Block height after which the locked tokens can be refunded","tokenAddress":"Address of the token locked for the swap","v":"Final byte of the signature"},"returns":{"_0":"True if the signature is valid, false otherwise"}},"claim(bytes32,uint256,address,address,address,uint256)":{"details":"To query the arguments of this function, get the \"Lockup\" event logs for the SHA256 hash of the preimage","params":{"amount":"Amount locked in the contract for the swap in the smallest denomination of the token","claimAddress":"Address to which the claimed funds will be sent","preimage":"Preimage of the swap","refundAddress":"Address that locked the tokens in the contract","timelock":"Block height after which the locked tokens can be refunded","tokenAddress":"Address of the token locked for the swap"}},"claim(bytes32,uint256,address,address,address,uint256,uint8,bytes32,bytes32)":{"params":{"amount":"Amount locked in the contract for the swap in WEI","claimAddress":"Address to which the claimed funds will be sent","preimage":"Preimage of the swap","r":"Second 32 bytes of the signature","refundAddress":"Address that locked the tokens in the contract","s":"First 32 bytes of the signature","timelock":"Block height after which the locked tokens can be refunded","tokenAddress":"Address of the token locked for the swap","v":"Final byte of the signature"}},"claim(bytes32,uint256,address,address,uint256)":{"details":"To query the arguments of this function, get the \"Lockup\" event logs for the SHA256 hash of the preimage","params":{"amount":"Amount locked in the contract for the swap in the smallest denomination of the token","preimage":"Preimage of the swap","refundAddress":"Address that locked the tokens in the contract","timelock":"Block height after which the locked tokens can be refunded","tokenAddress":"Address of the token locked for the swap"}},"claim(bytes32,uint256,address,address,uint256,uint8,bytes32,bytes32)":{"details":"The signature must be created by the claim address over the claim data using EIP-712 standardThe recovered claim address from the signature must match the intended claim address for the swapThe claimed funds are sent to msg.sender (the transaction executor), not the claim address that signed","params":{"amount":"Amount locked in the contract for the swap in the smallest denomination of the token","preimage":"Preimage of the swap","r":"Second 32 bytes of the signature","refundAddress":"Address that locked the tokens in the contract","s":"First 32 bytes of the signature","timelock":"Block height after which the locked tokens can be refunded","tokenAddress":"Address of the token locked for the swap","v":"Final byte of the signature"},"returns":{"_0":"recoveredAddress The address that signed the claim message (recovered from signature)"}},"claimBatch(address,(bytes32,uint256,address,uint256,uint8,bytes32,bytes32)[])":{"details":"All swaps that are claimed have to have \"msg.sender\" as \"claimAddress\"","params":{"entries":"Entries to claim"}},"claimBatch(address,bytes32[],uint256[],address[],uint256[])":{"details":"All swaps that are claimed have to have \"msg.sender\" as \"claimAddress\" and the same token address","params":{"amounts":"Amounts that are locked in the contract for the swap in WEI","preimages":"Preimages of the swaps","refundAddresses":"Addresses that locked the tokens in the contract","timelocks":"Block heights after which the locked tokens can be refunded","tokenAddress":"Address of the token of the swap"}},"hashValues(bytes32,uint256,address,address,address,uint256)":{"params":{"amount":"Amount the swap has locked in the smallest denomination of the token","claimAddress":"Address that can claim the locked tokens","preimageHash":"Preimage hash of the swap","refundAddress":"Address that locked the tokens and can refund them","timelock":"Block height after which the locked tokens can be refunded","tokenAddress":"Address of the token of the swap"},"returns":{"result":"hash of the swap"}},"lock(bytes32,uint256,address,address,address,uint256)":{"details":"This function is \"public\" so that it can be called from the outside and \"lockPrepayMinerfee\" function","params":{"amount":"Amount to be locked in the contract","claimAddress":"Address that can claim the locked tokens","preimageHash":"Preimage hash of the swap","refundAddress":"Address that locked the tokens in the contract","timelock":"Block height after which the locked tokens can be refunded","tokenAddress":"Address of the token to be locked"}},"lock(bytes32,uint256,address,address,uint256)":{"params":{"amount":"Amount to be locked in the contract","claimAddress":"Address that can claim the locked tokens","preimageHash":"Preimage hash of the swap","timelock":"Block height after which the locked tokens can be refunded","tokenAddress":"Address of the token to be locked"}},"lockPrepayMinerfee(bytes32,uint256,address,address,uint256)":{"details":"Make sure to set a reasonable gas limit for calling this function, else a malicious contract at the claim address could drain your Ether","params":{"amount":"Amount that should be locked in the contract in the smallest denomination of the token","claimAddress":"Address that can claim the locked tokens","preimageHash":"Preimage hash of the swap","timelock":"Block height after which the locked tokens can be refunded","tokenAddress":"Address of the token that should be locked in the contract"}},"refund(bytes32,uint256,address,address,address,uint256)":{"details":"To query the arguments of this function, get the \"Lockup\" event logs for your refund address and the preimage hash if you have itFor further explanations and reasoning behind the statements in this function, check the \"claim\" function","params":{"amount":"Amount locked in the contract for the swap in the smallest denomination of the token","claimAddress":"Address that was destined to claim the funds","preimageHash":"Preimage hash of the swap","refundAddress":"Address that locked the tokens in the contract","timelock":"Block height after which the locked tokens can be refunded","tokenAddress":"Address of the token locked for the swap"}},"refund(bytes32,uint256,address,address,uint256)":{"details":"To query the arguments of this function, get the \"Lockup\" event logs for your refund address and the preimage hash if you have itFor further explanations and reasoning behind the statements in this function, check the \"claim\" function","params":{"amount":"Amount locked in the contract for the swap in the smallest denomination of the token","claimAddress":"Address that that was destined to claim the funds","preimageHash":"Preimage hash of the swap","timelock":"Block height after which the locked tokens can be refunded","tokenAddress":"Address of the token locked for the swap"}},"refundCooperative(bytes32,uint256,address,address,address,uint256,uint8,bytes32,bytes32)":{"details":"This function allows cooperative refunds to be executed on someone else's behalf by a sponsor","params":{"amount":"Amount locked in the contract for the swap in the smallest denomination of the token","claimAddress":"Address that that was destined to claim the funds","preimageHash":"Preimage hash of the swap","r":"Second 32 bytes of the signature","refundAddress":"Address that locked the tokens in the contract","s":"First 32 bytes of the signature","timelock":"Block height after which the locked tokens can be refunded","tokenAddress":"Address of the token locked for the swap","v":"Final byte of the signature"}},"refundCooperative(bytes32,uint256,address,address,uint256,uint8,bytes32,bytes32)":{"details":"To query the arguments of this function, get the \"Lockup\" event logs for your refund address and the preimage hash if you have itFor further explanations and reasoning behind the statements in this function, check the \"claim\" function","params":{"amount":"Amount locked in the contract for the swap in the smallest denomination of the token","claimAddress":"Address that that was destined to claim the funds","preimageHash":"Preimage hash of the swap","r":"Second 32 bytes of the signature","s":"First 32 bytes of the signature","timelock":"Block height after which the locked tokens can be refunded","tokenAddress":"Address of the token locked for the swap","v":"Final byte of the signature"}},"version()":{"details":"Returns the version of the contract"}},"version":1},"userdoc":{"kind":"user","methods":{"checkCommitmentSignature(bytes32,uint256,address,address,address,uint256,uint8,bytes32,bytes32)":{"notice":"Checks if a commitment signature is valid"},"claim(bytes32,uint256,address,address,address,uint256)":{"notice":"Claims tokens locked in the contract for a specified claim address"},"claim(bytes32,uint256,address,address,address,uint256,uint8,bytes32,bytes32)":{"notice":"Claims tokens locked in the contract as commitment for a specified claim address"},"claim(bytes32,uint256,address,address,uint256)":{"notice":"Claims tokens locked in the contract"},"claim(bytes32,uint256,address,address,uint256,uint8,bytes32,bytes32)":{"notice":"Claims tokens locked in the contract using an EIP-712 signature from the claim addressThis function allows anyone to execute a claim on behalf of the intended claim address by providing a valid signature"},"claimBatch(address,(bytes32,uint256,address,uint256,uint8,bytes32,bytes32)[])":{"notice":"Claims multiple swaps Supports both commitment and normal swaps"},"claimBatch(address,bytes32[],uint256[],address[],uint256[])":{"notice":"Claims multiple swaps"},"hashValues(bytes32,uint256,address,address,address,uint256)":{"notice":"Hashes all the values of a swap with Keccak256"},"lock(bytes32,uint256,address,address,address,uint256)":{"notice":"Locks tokens in the contractThe refund address is the sender of the transactionUse bytes32(0) as preimageHash only for commitment-based swaps to avoid accidental misuse"},"lock(bytes32,uint256,address,address,uint256)":{"notice":"Locks tokens in the contractThe refund address is the sender of the transactionUse bytes32(0) as preimageHash only for commitment-based swaps to avoid accidental misuse"},"lockPrepayMinerfee(bytes32,uint256,address,address,uint256)":{"notice":"Locks tokens for a swap in the contract and forwards a specified amount of Ether to the claim addressThe amount of Ether forwarded to the claim address is the amount sent in the transaction and the refund address is the sender of the transaction"},"refund(bytes32,uint256,address,address,address,uint256)":{"notice":"Refunds tokens locked in the contract after the timeout for a specified refund address"},"refund(bytes32,uint256,address,address,uint256)":{"notice":"Refunds tokens locked in the contract after the timeout"},"refundCooperative(bytes32,uint256,address,address,address,uint256,uint8,bytes32,bytes32)":{"notice":"Refunds tokens locked in the contract with an EIP-712 signature of the claimAddress"},"refundCooperative(bytes32,uint256,address,address,uint256,uint8,bytes32,bytes32)":{"notice":"Refunds tokens locked in the contract with an EIP-712 signature of the claimAddress"},"version()":{"notice":"For backwards compatibility"}},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=solidity-lib/openzeppelin-contracts/contracts/","ds-test/=solidity-lib/forge-std/lib/ds-test/src/","erc4626-tests/=solidity-lib/openzeppelin-contracts/lib/erc4626-tests/","forge-gas-snapshot/=solidity-lib/permit2/lib/forge-gas-snapshot/src/","forge-std/=solidity-lib/forge-std/src/","halmos-cheatcodes/=solidity-lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/","openzeppelin-contracts/=solidity-lib/openzeppelin-contracts/","permit2/=solidity-lib/permit2/src/","solmate/=solidity-lib/permit2/lib/solmate/"],"optimizer":{"enabled":true,"runs":10000000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"contracts/ERC20Swap.sol":"ERC20Swap"},"evmVersion":"osaka","libraries":{}},"sources":{"contracts/ERC20Swap.sol":{"keccak256":"0x4c89458aa8967b85f27a19b4df1954860c7a975324ba8d149eafe0f470156ae1","urls":["bzz-raw://182a66a2e5652143dea42a459b572cbc80e3ec7087a871448f3b3d59adea0dfa","dweb:/ipfs/QmQ1tviXEyynbQfiMJrUgvmtQnyE1GLadpqKb1xU6mVLD5"],"license":"MIT"},"contracts/TransferHelper.sol":{"keccak256":"0x904b11574cbdeb14418232b69209aee913f21efedfb5a73c7485d5908f7f3cc0","urls":["bzz-raw://986e85839e2268d7584a4b294fa8a0313f75d4c720343a1d7f0b1f2453bbef42","dweb:/ipfs/QmWRvDVtrxvBppdyL6UbnziEB8WFJx8THExTXXEnUa7Gvq"],"license":"GPL-3.0-or-later"}},"version":1},"id":1}