diff --git a/python/erc20_pool/data/SwapPool.bin b/python/erc20_pool/data/SwapPool.bin index dbb9270..e3fe74b 100644 --- a/python/erc20_pool/data/SwapPool.bin +++ b/python/erc20_pool/data/SwapPool.bin @@ -1 +1 @@ -60a060405234801561001057600080fd5b506040516139f63803806139f683398181016040528101906100329190610335565b84600690816100419190610609565b5083600790816100519190610609565b508260ff166080818152505081600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050506106db565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61019082610147565b810181811067ffffffffffffffff821117156101af576101ae610158565b5b80604052505050565b60006101c2610129565b90506101ce8282610187565b919050565b600067ffffffffffffffff8211156101ee576101ed610158565b5b6101f782610147565b9050602081019050919050565b60005b83811015610222578082015181840152602081019050610207565b60008484015250505050565b600061024161023c846101d3565b6101b8565b90508281526020810184848401111561025d5761025c610142565b5b610268848285610204565b509392505050565b600082601f8301126102855761028461013d565b5b815161029584826020860161022e565b91505092915050565b600060ff82169050919050565b6102b48161029e565b81146102bf57600080fd5b50565b6000815190506102d1816102ab565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610302826102d7565b9050919050565b610312816102f7565b811461031d57600080fd5b50565b60008151905061032f81610309565b92915050565b600080600080600060a0868803121561035157610350610133565b5b600086015167ffffffffffffffff81111561036f5761036e610138565b5b61037b88828901610270565b955050602086015167ffffffffffffffff81111561039c5761039b610138565b5b6103a888828901610270565b94505060406103b9888289016102c2565b93505060606103ca88828901610320565b92505060806103db88828901610320565b9150509295509295909350565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061043a57607f821691505b60208210810361044d5761044c6103f3565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026104b57fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82610478565b6104bf8683610478565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b60006105066105016104fc846104d7565b6104e1565b6104d7565b9050919050565b6000819050919050565b610520836104eb565b61053461052c8261050d565b848454610485565b825550505050565b600090565b61054961053c565b610554818484610517565b505050565b5b818110156105785761056d600082610541565b60018101905061055a565b5050565b601f8211156105bd5761058e81610453565b61059784610468565b810160208510156105a6578190505b6105ba6105b285610468565b830182610559565b50505b505050565b600082821c905092915050565b60006105e0600019846008026105c2565b1980831691505092915050565b60006105f983836105cf565b9150826002028217905092915050565b610612826103e8565b67ffffffffffffffff81111561062b5761062a610158565b5b6106358254610422565b61064082828561057c565b600060209050601f8311600181146106735760008415610661578287015190505b61066b85826105ed565b8655506106d3565b601f19841661068186610453565b60005b828110156106a957848901518255600182019150602085019450602081019050610684565b868310156106c657848901516106c2601f8916826105cf565b8355505b6001600288020188555050505b505050505050565b6080516133006106f660003960006106d601526133006000f3fe608060405234801561001057600080fd5b50600436106101a95760003560e01c806386fe212d116100f9578063c515ee2311610097578063f2fde38b11610071578063f2fde38b146104ae578063f3fef3a3146104de578063f912c64b1461050e578063faaebd211461052a576101a9565b8063c515ee2314610444578063c6bbd5a714610474578063d9caed1214610492576101a9565b8063934785b7116100d3578063934785b7146103ce57806395d89b41146103ea5780639d23c4c714610408578063a534150c14610426576101a9565b806386fe212d146103645780638705fcd4146103945780638da5cb5b146103b0576101a9565b806331a5995d1161016657806351cff8d91161014057806351cff8d9146102de57806353799c571461030e57806369fe0e2d1461032c57806375e3bb4314610348576101a9565b806331a5995d1461028657806341275358146102a457806347e7ef24146102c2576101a9565b806301ffc9a7146101ae57806306fdde03146101de57806318160ddd146101fc57806318cbbcfc1461021a5780632c1758c114610238578063313ce56714610268575b600080fd5b6101c860048036038101906101c3919061256b565b61055a565b6040516101d591906125b3565b60405180910390f35b6101e6610608565b6040516101f3919061265e565b60405180910390f35b610204610696565b6040516102119190612699565b60405180910390f35b61022261069c565b60405161022f9190612699565b60405180910390f35b610252600480360381019061024d91906126e0565b6106a1565b60405161025f91906125b3565b60405180910390f35b6102706106d4565b60405161027d9190612699565b60405180910390f35b61028e6106f8565b60405161029b9190612699565b60405180910390f35b6102ac6106fe565b6040516102b9919061274e565b60405180910390f35b6102dc60048036038101906102d79190612795565b610724565b005b6102f860048036038101906102f391906127d5565b610797565b6040516103059190612699565b60405180910390f35b610316610833565b604051610323919061274e565b60405180910390f35b610346600480360381019061034191906126e0565b610859565b005b610362600480360381019061035d9190612802565b610983565b005b61037e600480360381019061037991906126e0565b610e09565b60405161038b9190612699565b60405180910390f35b6103ae60048036038101906103a991906127d5565b610ef1565b005b6103b8611010565b6040516103c5919061274e565b60405180910390f35b6103e860048036038101906103e39190612881565b611034565b005b6103f261105c565b6040516103ff919061265e565b60405180910390f35b6104106110ea565b60405161041d919061274e565b60405180910390f35b61042e611110565b60405161043b9190612699565b60405180910390f35b61045e60048036038101906104599190612802565b611116565b60405161046b9190612699565b60405180910390f35b61047c611304565b604051610489919061274e565b60405180910390f35b6104ac60048036038101906104a79190612802565b61132a565b005b6104c860048036038101906104c391906127d5565b6117c0565b6040516104d591906125b3565b60405180910390f35b6104f860048036038101906104f39190612795565b611902565b6040516105059190612699565b60405180910390f35b610528600480360381019061052391906127d5565b611c5a565b005b610544600480360381019061053f91906127d5565b611d79565b6040516105519190612699565b60405180910390f35b60006301ffc9a760e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916036105925760019050610603565b639493f8b260e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916036105c85760019050610603565b630d7491f860e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916036105fe5760019050610603565b600090505b919050565b6006805461061590612917565b80601f016020809104026020016040519081016040528092919081815260200182805461064190612917565b801561068e5780601f106106635761010080835404028352916020019161068e565b820191906000526020600020905b81548152906001019060200180831161067157829003601f168201915b505050505081565b60085481565b600781565b6000600782106106b057600080fd5b600082036106c5576007600a541490506106cf565b81600a5483161490505b919050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600a5481565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61072e8282611d91565b8173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f5548c837ab068cf56a2c2479df0882a4922fd203edb7517321831d95078c5f628360405161078b9190612699565b60405180910390a35050565b600080600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061082b8382611902565b915050919050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610866600160ff166106a1565b156108a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089d90612994565b60405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610934576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161092b90612a00565b60405180910390fd5b620f42408110610979576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161097090612a6c565b60405180910390fd5b8060048190555050565b600060606000806000610997888888611116565b90508773ffffffffffffffffffffffffffffffffffffffff16306040516024016109c19190612aeb565b6040516020818303038152906040527f70a08231000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051610a4b9190612b4d565b6000604051808303816000865af19150503d8060008114610a88576040519150601f19603f3d011682016040523d82523d6000602084013e610a8d565b606091505b50809550819650505084610ad6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610acd90612bb0565b60405180910390fd5b83806020019051810190610aea9190612be5565b9250610af581611f81565b91508181610b039190612c41565b905080831015610b48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3f90612cc1565b60405180910390fd5b610b528787611d91565b8773ffffffffffffffffffffffffffffffffffffffff163382604051602401610b7c929190612ce1565b6040516020818303038152906040527fa9059cbb000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051610c069190612b4d565b6000604051808303816000865af19150503d8060008114610c43576040519150601f19603f3d011682016040523d82523d6000602084013e610c48565b606091505b50809550819650505084610c91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8890612bb0565b60405180910390fd5b83806020019051810190610ca59190612d1f565b945084610ce7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cde90612d98565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d945781600960008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610d8c9190612db8565b925050819055505b8673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fd6d34547c69c5ee3d2667625c188acf1006abb93e0ee7cf03925c67cf77604138a898587604051610df79493929190612dec565b60405180910390a35050505050505050565b60006007821115610e4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4690612e7d565b60405180910390fd5b6000600a54831614610e96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8d90612ee9565b60405180910390fd5b81600a600082825417925050819055506007600a541415157f6b7e2e653f93b645d4ed7292d6429f96637084363e477c8aaea1a43ed13c284e600a54604051610edf9190612699565b60405180910390a2600a549050919050565b610efe600260ff166106a1565b15610f3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3590612994565b60405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610fcc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc390612a00565b60405180910390fd5b80600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b801561104a57611045848484610983565b611056565b61105584848461132a565b5b50505050565b6007805461106990612917565b80601f016020809104026020016040519081016040528092919081815260200182805461109590612917565b80156110e25780601f106110b7576101008083540402835291602001916110e2565b820191906000526020600020905b8154815290600101906020018083116110c557829003601f168201915b505050505081565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60045481565b600080606060008073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff160361117d578493505050506112fd565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168787876040516024016111cb93929190612f09565b6040516020818303038152906040527fdbb21d40000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516112559190612b4d565b6000604051808303816000865af19150503d8060008114611292576040519150601f19603f3d011682016040523d82523d6000602084013e611297565b606091505b508093508194505050826112e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d790612f8c565b60405180910390fd5b818060200190518101906112f49190612be5565b90508093505050505b9392505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000606060008060008061133d87611f81565b9050808761134b9190612c41565b9350611358898986611116565b93508873ffffffffffffffffffffffffffffffffffffffff16306040516024016113829190612aeb565b6040516020818303038152906040527f70a08231000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505060405161140c9190612b4d565b6000604051808303816000865af19150503d8060008114611449576040519150601f19603f3d011682016040523d82523d6000602084013e61144e565b606091505b50809650819750505085611497576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161148e90612bb0565b60405180910390fd5b848060200190518101906114ab9190612be5565b915080846114b99190612db8565b9250828210156114fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114f590612cc1565b60405180910390fd5b6115088888610724565b8873ffffffffffffffffffffffffffffffffffffffff163385604051602401611532929190612ce1565b6040516020818303038152906040527fa9059cbb000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516115bc9190612b4d565b6000604051808303816000865af19150503d80600081146115f9576040519150601f19603f3d011682016040523d82523d6000602084013e6115fe565b606091505b50809650819750505085611647576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163e90612bb0565b60405180910390fd5b8480602001905181019061165b9190612d1f565b95508561169d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169490612d98565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461174a5780600960008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546117429190612db8565b925050819055505b8773ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fd6d34547c69c5ee3d2667625c188acf1006abb93e0ee7cf03925c67cf77604138b8a87866040516117ad9493929190612dec565b60405180910390a3505050505050505050565b60008060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461181b57600080fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050826000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36001915050919050565b600080606060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611995576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198c90612ff8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603611a26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1d90612a00565b60405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1685604051602401611a72929190612ce1565b6040516020818303038152906040527fa9059cbb000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051611afc9190612b4d565b6000604051808303816000865af19150503d8060008114611b39576040519150601f19603f3d011682016040523d82523d6000602084013e611b3e565b606091505b50809250819350505081611b87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b7e90612bb0565b60405180910390fd5b80806020019051810190611b9b9190612d1f565b915081611bdd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bd490612d98565b60405180910390fd5b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f1314fd112a381beea61539dbd21ec04afcff2662ac7d1b83273aade1f53d1b978686604051611c47929190612ce1565b60405180910390a2839250505092915050565b611c67600460ff166106a1565b15611ca7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c9e90612994565b60405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611d35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2c90612a00565b60405180910390fd5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60096020528060005260406000206000915090505481565b60006060611dc184600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611fae565b611dcb8484612187565b8373ffffffffffffffffffffffffffffffffffffffff16333085604051602401611df793929190613018565b6040516020818303038152906040527f23b872dd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051611e819190612b4d565b6000604051808303816000865af19150503d8060008114611ebe576040519150601f19603f3d011682016040523d82523d6000602084013e611ec3565b606091505b50809250819350505081611f0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f0390612bb0565b60405180910390fd5b80806020019051810190611f209190612d1f565b915081611f62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5990612d98565b60405180910390fd5b8260086000828254611f749190612db8565b9250508190555050505050565b60008060045483611f92919061304f565b9050620f424081611fa391906130c0565b905080915050919050565b60006060600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611fed575050612183565b8273ffffffffffffffffffffffffffffffffffffffff1684604051602401612015919061274e565b6040516020818303038152906040527f3ef25013000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505060405161209f9190612b4d565b6000604051808303816000865af19150503d80600081146120dc576040519150601f19603f3d011682016040523d82523d6000602084013e6120e1565b606091505b5080925081935050508161212a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121219061313d565b60405180910390fd5b8080602001905181019061213e9190612d1f565b915081612180576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612177906131a9565b60405180910390fd5b50505b5050565b60006060600080600073ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036121ed575050505061250a565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1686306040516024016122399291906131c9565b6040516020818303038152906040527f23778613000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516122c39190612b4d565b6000604051808303816000865af19150503d8060008114612300576040519150601f19603f3d011682016040523d82523d6000602084013e612305565b606091505b5080945081955050508361234e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123459061323e565b60405180910390fd5b828060200190518101906123629190612be5565b91508573ffffffffffffffffffffffffffffffffffffffff163060405160240161238c9190612aeb565b6040516020818303038152906040527f70a08231000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516124169190612b4d565b6000604051808303816000865af19150503d8060008114612453576040519150601f19603f3d011682016040523d82523d6000602084013e612458565b606091505b508094508195505050836124a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161249890612bb0565b60405180910390fd5b828060200190518101906124b59190612be5565b90508185826124c49190612db8565b1115612505576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124fc906132aa565b60405180910390fd5b505050505b5050565b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61254881612513565b811461255357600080fd5b50565b6000813590506125658161253f565b92915050565b6000602082840312156125815761258061250e565b5b600061258f84828501612556565b91505092915050565b60008115159050919050565b6125ad81612598565b82525050565b60006020820190506125c860008301846125a4565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156126085780820151818401526020810190506125ed565b60008484015250505050565b6000601f19601f8301169050919050565b6000612630826125ce565b61263a81856125d9565b935061264a8185602086016125ea565b61265381612614565b840191505092915050565b600060208201905081810360008301526126788184612625565b905092915050565b6000819050919050565b61269381612680565b82525050565b60006020820190506126ae600083018461268a565b92915050565b6126bd81612680565b81146126c857600080fd5b50565b6000813590506126da816126b4565b92915050565b6000602082840312156126f6576126f561250e565b5b6000612704848285016126cb565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006127388261270d565b9050919050565b6127488161272d565b82525050565b6000602082019050612763600083018461273f565b92915050565b6127728161272d565b811461277d57600080fd5b50565b60008135905061278f81612769565b92915050565b600080604083850312156127ac576127ab61250e565b5b60006127ba85828601612780565b92505060206127cb858286016126cb565b9150509250929050565b6000602082840312156127eb576127ea61250e565b5b60006127f984828501612780565b91505092915050565b60008060006060848603121561281b5761281a61250e565b5b600061282986828701612780565b935050602061283a86828701612780565b925050604061284b868287016126cb565b9150509250925092565b61285e81612598565b811461286957600080fd5b50565b60008135905061287b81612855565b92915050565b6000806000806080858703121561289b5761289a61250e565b5b60006128a987828801612780565b94505060206128ba87828801612780565b93505060406128cb878288016126cb565b92505060606128dc8782880161286c565b91505092959194509250565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061292f57607f821691505b602082108103612942576129416128e8565b5b50919050565b7f4552525f5345414c000000000000000000000000000000000000000000000000600082015250565b600061297e6008836125d9565b915061298982612948565b602082019050919050565b600060208201905081810360008301526129ad81612971565b9050919050565b7f4552525f41585800000000000000000000000000000000000000000000000000600082015250565b60006129ea6007836125d9565b91506129f5826129b4565b602082019050919050565b60006020820190508181036000830152612a19816129dd565b9050919050565b7f4552525f4645455f544f4f5f4849474800000000000000000000000000000000600082015250565b6000612a566010836125d9565b9150612a6182612a20565b602082019050919050565b60006020820190508181036000830152612a8581612a49565b9050919050565b6000819050919050565b6000612ab1612aac612aa78461270d565b612a8c565b61270d565b9050919050565b6000612ac382612a96565b9050919050565b6000612ad582612ab8565b9050919050565b612ae581612aca565b82525050565b6000602082019050612b006000830184612adc565b92915050565b600081519050919050565b600081905092915050565b6000612b2782612b06565b612b318185612b11565b9350612b418185602086016125ea565b80840191505092915050565b6000612b598284612b1c565b915081905092915050565b7f4552525f544f4b454e0000000000000000000000000000000000000000000000600082015250565b6000612b9a6009836125d9565b9150612ba582612b64565b602082019050919050565b60006020820190508181036000830152612bc981612b8d565b9050919050565b600081519050612bdf816126b4565b92915050565b600060208284031215612bfb57612bfa61250e565b5b6000612c0984828501612bd0565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612c4c82612680565b9150612c5783612680565b9250828203905081811115612c6f57612c6e612c12565b5b92915050565b7f4552525f42414c414e4345000000000000000000000000000000000000000000600082015250565b6000612cab600b836125d9565b9150612cb682612c75565b602082019050919050565b60006020820190508181036000830152612cda81612c9e565b9050919050565b6000604082019050612cf6600083018561273f565b612d03602083018461268a565b9392505050565b600081519050612d1981612855565b92915050565b600060208284031215612d3557612d3461250e565b5b6000612d4384828501612d0a565b91505092915050565b7f4552525f5452414e534645520000000000000000000000000000000000000000600082015250565b6000612d82600c836125d9565b9150612d8d82612d4c565b602082019050919050565b60006020820190508181036000830152612db181612d75565b9050919050565b6000612dc382612680565b9150612dce83612680565b9250828201905080821115612de657612de5612c12565b5b92915050565b6000608082019050612e01600083018761273f565b612e0e602083018661268a565b612e1b604083018561268a565b612e28606083018461268a565b95945050505050565b7f4552525f494e56414c49445f5354415445000000000000000000000000000000600082015250565b6000612e676011836125d9565b9150612e7282612e31565b602082019050919050565b60006020820190508181036000830152612e9681612e5a565b9050919050565b7f4552525f414c52454144595f4c4f434b45440000000000000000000000000000600082015250565b6000612ed36012836125d9565b9150612ede82612e9d565b602082019050919050565b60006020820190508181036000830152612f0281612ec6565b9050919050565b6000606082019050612f1e600083018661273f565b612f2b602083018561273f565b612f38604083018461268a565b949350505050565b7f4552525f51554f54455200000000000000000000000000000000000000000000600082015250565b6000612f76600a836125d9565b9150612f8182612f40565b602082019050919050565b60006020820190508181036000830152612fa581612f69565b9050919050565b7f4552525f4f574e45520000000000000000000000000000000000000000000000600082015250565b6000612fe26009836125d9565b9150612fed82612fac565b602082019050919050565b6000602082019050818103600083015261301181612fd5565b9050919050565b600060608201905061302d600083018661273f565b61303a6020830185612adc565b613047604083018461268a565b949350505050565b600061305a82612680565b915061306583612680565b925082820261307381612680565b9150828204841483151761308a57613089612c12565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006130cb82612680565b91506130d683612680565b9250826130e6576130e5613091565b5b828204905092915050565b7f4552525f52454749535452590000000000000000000000000000000000000000600082015250565b6000613127600c836125d9565b9150613132826130f1565b602082019050919050565b600060208201905081810360008301526131568161311a565b9050919050565b7f4552525f554e415554485f544f4b454e00000000000000000000000000000000600082015250565b60006131936010836125d9565b915061319e8261315d565b602082019050919050565b600060208201905081810360008301526131c281613186565b9050919050565b60006040820190506131de600083018561273f565b6131eb6020830184612adc565b9392505050565b7f4552525f4c494d49544552000000000000000000000000000000000000000000600082015250565b6000613228600b836125d9565b9150613233826131f2565b602082019050919050565b600060208201905081810360008301526132578161321b565b9050919050565b7f4552525f4c494d49540000000000000000000000000000000000000000000000600082015250565b60006132946009836125d9565b915061329f8261325e565b602082019050919050565b600060208201905081810360008301526132c381613287565b905091905056fea2646970667358221220624b1f3d9060ae4533fb4e923706075e4af2ad6bacd44e38559e150a37ad46f064736f6c63430008190033 \ No newline at end of file +60a060405234801561001057600080fd5b50604051613a78380380613a7883398181016040528101906100329190610335565b84600690816100419190610609565b5083600790816100519190610609565b508260ff166080818152505081600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050506106db565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61019082610147565b810181811067ffffffffffffffff821117156101af576101ae610158565b5b80604052505050565b60006101c2610129565b90506101ce8282610187565b919050565b600067ffffffffffffffff8211156101ee576101ed610158565b5b6101f782610147565b9050602081019050919050565b60005b83811015610222578082015181840152602081019050610207565b60008484015250505050565b600061024161023c846101d3565b6101b8565b90508281526020810184848401111561025d5761025c610142565b5b610268848285610204565b509392505050565b600082601f8301126102855761028461013d565b5b815161029584826020860161022e565b91505092915050565b600060ff82169050919050565b6102b48161029e565b81146102bf57600080fd5b50565b6000815190506102d1816102ab565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610302826102d7565b9050919050565b610312816102f7565b811461031d57600080fd5b50565b60008151905061032f81610309565b92915050565b600080600080600060a0868803121561035157610350610133565b5b600086015167ffffffffffffffff81111561036f5761036e610138565b5b61037b88828901610270565b955050602086015167ffffffffffffffff81111561039c5761039b610138565b5b6103a888828901610270565b94505060406103b9888289016102c2565b93505060606103ca88828901610320565b92505060806103db88828901610320565b9150509295509295909350565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061043a57607f821691505b60208210810361044d5761044c6103f3565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026104b57fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82610478565b6104bf8683610478565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b60006105066105016104fc846104d7565b6104e1565b6104d7565b9050919050565b6000819050919050565b610520836104eb565b61053461052c8261050d565b848454610485565b825550505050565b600090565b61054961053c565b610554818484610517565b505050565b5b818110156105785761056d600082610541565b60018101905061055a565b5050565b601f8211156105bd5761058e81610453565b61059784610468565b810160208510156105a6578190505b6105ba6105b285610468565b830182610559565b50505b505050565b600082821c905092915050565b60006105e0600019846008026105c2565b1980831691505092915050565b60006105f983836105cf565b9150826002028217905092915050565b610612826103e8565b67ffffffffffffffff81111561062b5761062a610158565b5b6106358254610422565b61064082828561057c565b600060209050601f8311600181146106735760008415610661578287015190505b61066b85826105ed565b8655506106d3565b601f19841661068186610453565b60005b828110156106a957848901518255600182019150602085019450602081019050610684565b868310156106c657848901516106c2601f8916826105cf565b8355505b6001600288020188555050505b505050505050565b6080516133826106f660003960006106d601526133826000f3fe608060405234801561001057600080fd5b50600436106101a95760003560e01c806386fe212d116100f9578063c515ee2311610097578063f2fde38b11610071578063f2fde38b146104ae578063f3fef3a3146104de578063f912c64b1461050e578063faaebd211461052a576101a9565b8063c515ee2314610444578063c6bbd5a714610474578063d9caed1214610492576101a9565b8063934785b7116100d3578063934785b7146103ce57806395d89b41146103ea5780639d23c4c714610408578063a534150c14610426576101a9565b806386fe212d146103645780638705fcd4146103945780638da5cb5b146103b0576101a9565b806331a5995d1161016657806351cff8d91161014057806351cff8d9146102de57806353799c571461030e57806369fe0e2d1461032c57806375e3bb4314610348576101a9565b806331a5995d1461028657806341275358146102a457806347e7ef24146102c2576101a9565b806301ffc9a7146101ae57806306fdde03146101de57806318160ddd146101fc57806318cbbcfc1461021a5780632c1758c114610238578063313ce56714610268575b600080fd5b6101c860048036038101906101c391906125ed565b61055a565b6040516101d59190612635565b60405180910390f35b6101e6610608565b6040516101f391906126e0565b60405180910390f35b610204610696565b604051610211919061271b565b60405180910390f35b61022261069c565b60405161022f919061271b565b60405180910390f35b610252600480360381019061024d9190612762565b6106a1565b60405161025f9190612635565b60405180910390f35b6102706106d4565b60405161027d919061271b565b60405180910390f35b61028e6106f8565b60405161029b919061271b565b60405180910390f35b6102ac6106fe565b6040516102b991906127d0565b60405180910390f35b6102dc60048036038101906102d79190612817565b610724565b005b6102f860048036038101906102f39190612857565b610797565b604051610305919061271b565b60405180910390f35b610316610833565b60405161032391906127d0565b60405180910390f35b61034660048036038101906103419190612762565b610859565b005b610362600480360381019061035d9190612884565b610983565b005b61037e60048036038101906103799190612762565b610e09565b60405161038b919061271b565b60405180910390f35b6103ae60048036038101906103a99190612857565b610ef1565b005b6103b8611010565b6040516103c591906127d0565b60405180910390f35b6103e860048036038101906103e39190612903565b611034565b005b6103f261105c565b6040516103ff91906126e0565b60405180910390f35b6104106110ea565b60405161041d91906127d0565b60405180910390f35b61042e611110565b60405161043b919061271b565b60405180910390f35b61045e60048036038101906104599190612884565b611116565b60405161046b919061271b565b60405180910390f35b61047c611304565b60405161048991906127d0565b60405180910390f35b6104ac60048036038101906104a79190612884565b61132a565b005b6104c860048036038101906104c39190612857565b6117c0565b6040516104d59190612635565b60405180910390f35b6104f860048036038101906104f39190612817565b611902565b604051610505919061271b565b60405180910390f35b61052860048036038101906105239190612857565b611cdc565b005b610544600480360381019061053f9190612857565b611dfb565b604051610551919061271b565b60405180910390f35b60006301ffc9a760e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916036105925760019050610603565b639493f8b260e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916036105c85760019050610603565b630d7491f860e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916036105fe5760019050610603565b600090505b919050565b6006805461061590612999565b80601f016020809104026020016040519081016040528092919081815260200182805461064190612999565b801561068e5780601f106106635761010080835404028352916020019161068e565b820191906000526020600020905b81548152906001019060200180831161067157829003601f168201915b505050505081565b60085481565b600781565b6000600782106106b057600080fd5b600082036106c5576007600a541490506106cf565b81600a5483161490505b919050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600a5481565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61072e8282611e13565b8173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f5548c837ab068cf56a2c2479df0882a4922fd203edb7517321831d95078c5f628360405161078b919061271b565b60405180910390a35050565b600080600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061082b8382611902565b915050919050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610866600160ff166106a1565b156108a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089d90612a16565b60405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610934576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161092b90612a82565b60405180910390fd5b620f42408110610979576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161097090612aee565b60405180910390fd5b8060048190555050565b600060606000806000610997888888611116565b90508773ffffffffffffffffffffffffffffffffffffffff16306040516024016109c19190612b6d565b6040516020818303038152906040527f70a08231000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051610a4b9190612bcf565b6000604051808303816000865af19150503d8060008114610a88576040519150601f19603f3d011682016040523d82523d6000602084013e610a8d565b606091505b50809550819650505084610ad6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610acd90612c32565b60405180910390fd5b83806020019051810190610aea9190612c67565b9250610af581612003565b91508181610b039190612cc3565b905080831015610b48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3f90612d43565b60405180910390fd5b610b528787611e13565b8773ffffffffffffffffffffffffffffffffffffffff163382604051602401610b7c929190612d63565b6040516020818303038152906040527fa9059cbb000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051610c069190612bcf565b6000604051808303816000865af19150503d8060008114610c43576040519150601f19603f3d011682016040523d82523d6000602084013e610c48565b606091505b50809550819650505084610c91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8890612c32565b60405180910390fd5b83806020019051810190610ca59190612da1565b945084610ce7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cde90612e1a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d945781600960008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610d8c9190612e3a565b925050819055505b8673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fd6d34547c69c5ee3d2667625c188acf1006abb93e0ee7cf03925c67cf77604138a898587604051610df79493929190612e6e565b60405180910390a35050505050505050565b60006007821115610e4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4690612eff565b60405180910390fd5b6000600a54831614610e96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8d90612f6b565b60405180910390fd5b81600a600082825417925050819055506007600a541415157f6b7e2e653f93b645d4ed7292d6429f96637084363e477c8aaea1a43ed13c284e600a54604051610edf919061271b565b60405180910390a2600a549050919050565b610efe600260ff166106a1565b15610f3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3590612a16565b60405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610fcc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc390612a82565b60405180910390fd5b80600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b801561104a57611045848484610983565b611056565b61105584848461132a565b5b50505050565b6007805461106990612999565b80601f016020809104026020016040519081016040528092919081815260200182805461109590612999565b80156110e25780601f106110b7576101008083540402835291602001916110e2565b820191906000526020600020905b8154815290600101906020018083116110c557829003601f168201915b505050505081565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60045481565b600080606060008073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff160361117d578493505050506112fd565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168787876040516024016111cb93929190612f8b565b6040516020818303038152906040527fdbb21d40000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516112559190612bcf565b6000604051808303816000865af19150503d8060008114611292576040519150601f19603f3d011682016040523d82523d6000602084013e611297565b606091505b508093508194505050826112e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d79061300e565b60405180910390fd5b818060200190518101906112f49190612c67565b90508093505050505b9392505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000606060008060008061133d87612003565b9050808761134b9190612cc3565b9350611358898986611116565b93508873ffffffffffffffffffffffffffffffffffffffff16306040516024016113829190612b6d565b6040516020818303038152906040527f70a08231000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505060405161140c9190612bcf565b6000604051808303816000865af19150503d8060008114611449576040519150601f19603f3d011682016040523d82523d6000602084013e61144e565b606091505b50809650819750505085611497576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161148e90612c32565b60405180910390fd5b848060200190518101906114ab9190612c67565b915080846114b99190612e3a565b9250828210156114fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114f590612d43565b60405180910390fd5b6115088888610724565b8873ffffffffffffffffffffffffffffffffffffffff163385604051602401611532929190612d63565b6040516020818303038152906040527fa9059cbb000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516115bc9190612bcf565b6000604051808303816000865af19150503d80600081146115f9576040519150601f19603f3d011682016040523d82523d6000602084013e6115fe565b606091505b50809650819750505085611647576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163e90612c32565b60405180910390fd5b8480602001905181019061165b9190612da1565b95508561169d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169490612e1a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461174a5780600960008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546117429190612e3a565b925050819055505b8773ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fd6d34547c69c5ee3d2667625c188acf1006abb93e0ee7cf03925c67cf77604138b8a87866040516117ad9493929190612e6e565b60405180910390a3505050505050505050565b60008060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461181b57600080fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050826000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36001915050919050565b600080606060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611995576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198c9061307a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603611a26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1d90612a82565b60405180910390fd5b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054841115611aa8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9f90612d43565b60405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1685604051602401611af4929190612d63565b6040516020818303038152906040527fa9059cbb000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051611b7e9190612bcf565b6000604051808303816000865af19150503d8060008114611bbb576040519150601f19603f3d011682016040523d82523d6000602084013e611bc0565b606091505b50809250819350505081611c09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c0090612c32565b60405180910390fd5b80806020019051810190611c1d9190612da1565b915081611c5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c5690612e1a565b60405180910390fd5b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f1314fd112a381beea61539dbd21ec04afcff2662ac7d1b83273aade1f53d1b978686604051611cc9929190612d63565b60405180910390a2839250505092915050565b611ce9600460ff166106a1565b15611d29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2090612a16565b60405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611db7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dae90612a82565b60405180910390fd5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60096020528060005260406000206000915090505481565b60006060611e4384600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16612030565b611e4d8484612209565b8373ffffffffffffffffffffffffffffffffffffffff16333085604051602401611e799392919061309a565b6040516020818303038152906040527f23b872dd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051611f039190612bcf565b6000604051808303816000865af19150503d8060008114611f40576040519150601f19603f3d011682016040523d82523d6000602084013e611f45565b606091505b50809250819350505081611f8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f8590612c32565b60405180910390fd5b80806020019051810190611fa29190612da1565b915081611fe4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fdb90612e1a565b60405180910390fd5b8260086000828254611ff69190612e3a565b9250508190555050505050565b6000806004548361201491906130d1565b9050620f4240816120259190613142565b905080915050919050565b60006060600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361206f575050612205565b8273ffffffffffffffffffffffffffffffffffffffff168460405160240161209791906127d0565b6040516020818303038152906040527f3ef25013000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516121219190612bcf565b6000604051808303816000865af19150503d806000811461215e576040519150601f19603f3d011682016040523d82523d6000602084013e612163565b606091505b508092508193505050816121ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121a3906131bf565b60405180910390fd5b808060200190518101906121c09190612da1565b915081612202576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121f99061322b565b60405180910390fd5b50505b5050565b60006060600080600073ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff160361226f575050505061258c565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1686306040516024016122bb92919061324b565b6040516020818303038152906040527f23778613000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516123459190612bcf565b6000604051808303816000865af19150503d8060008114612382576040519150601f19603f3d011682016040523d82523d6000602084013e612387565b606091505b508094508195505050836123d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123c7906132c0565b60405180910390fd5b828060200190518101906123e49190612c67565b91508573ffffffffffffffffffffffffffffffffffffffff163060405160240161240e9190612b6d565b6040516020818303038152906040527f70a08231000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516124989190612bcf565b6000604051808303816000865af19150503d80600081146124d5576040519150601f19603f3d011682016040523d82523d6000602084013e6124da565b606091505b50809450819550505083612523576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161251a90612c32565b60405180910390fd5b828060200190518101906125379190612c67565b90508185826125469190612e3a565b1115612587576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161257e9061332c565b60405180910390fd5b505050505b5050565b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6125ca81612595565b81146125d557600080fd5b50565b6000813590506125e7816125c1565b92915050565b60006020828403121561260357612602612590565b5b6000612611848285016125d8565b91505092915050565b60008115159050919050565b61262f8161261a565b82525050565b600060208201905061264a6000830184612626565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561268a57808201518184015260208101905061266f565b60008484015250505050565b6000601f19601f8301169050919050565b60006126b282612650565b6126bc818561265b565b93506126cc81856020860161266c565b6126d581612696565b840191505092915050565b600060208201905081810360008301526126fa81846126a7565b905092915050565b6000819050919050565b61271581612702565b82525050565b6000602082019050612730600083018461270c565b92915050565b61273f81612702565b811461274a57600080fd5b50565b60008135905061275c81612736565b92915050565b60006020828403121561277857612777612590565b5b60006127868482850161274d565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006127ba8261278f565b9050919050565b6127ca816127af565b82525050565b60006020820190506127e560008301846127c1565b92915050565b6127f4816127af565b81146127ff57600080fd5b50565b600081359050612811816127eb565b92915050565b6000806040838503121561282e5761282d612590565b5b600061283c85828601612802565b925050602061284d8582860161274d565b9150509250929050565b60006020828403121561286d5761286c612590565b5b600061287b84828501612802565b91505092915050565b60008060006060848603121561289d5761289c612590565b5b60006128ab86828701612802565b93505060206128bc86828701612802565b92505060406128cd8682870161274d565b9150509250925092565b6128e08161261a565b81146128eb57600080fd5b50565b6000813590506128fd816128d7565b92915050565b6000806000806080858703121561291d5761291c612590565b5b600061292b87828801612802565b945050602061293c87828801612802565b935050604061294d8782880161274d565b925050606061295e878288016128ee565b91505092959194509250565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806129b157607f821691505b6020821081036129c4576129c361296a565b5b50919050565b7f4552525f5345414c000000000000000000000000000000000000000000000000600082015250565b6000612a0060088361265b565b9150612a0b826129ca565b602082019050919050565b60006020820190508181036000830152612a2f816129f3565b9050919050565b7f4552525f41585800000000000000000000000000000000000000000000000000600082015250565b6000612a6c60078361265b565b9150612a7782612a36565b602082019050919050565b60006020820190508181036000830152612a9b81612a5f565b9050919050565b7f4552525f4645455f544f4f5f4849474800000000000000000000000000000000600082015250565b6000612ad860108361265b565b9150612ae382612aa2565b602082019050919050565b60006020820190508181036000830152612b0781612acb565b9050919050565b6000819050919050565b6000612b33612b2e612b298461278f565b612b0e565b61278f565b9050919050565b6000612b4582612b18565b9050919050565b6000612b5782612b3a565b9050919050565b612b6781612b4c565b82525050565b6000602082019050612b826000830184612b5e565b92915050565b600081519050919050565b600081905092915050565b6000612ba982612b88565b612bb38185612b93565b9350612bc381856020860161266c565b80840191505092915050565b6000612bdb8284612b9e565b915081905092915050565b7f4552525f544f4b454e0000000000000000000000000000000000000000000000600082015250565b6000612c1c60098361265b565b9150612c2782612be6565b602082019050919050565b60006020820190508181036000830152612c4b81612c0f565b9050919050565b600081519050612c6181612736565b92915050565b600060208284031215612c7d57612c7c612590565b5b6000612c8b84828501612c52565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612cce82612702565b9150612cd983612702565b9250828203905081811115612cf157612cf0612c94565b5b92915050565b7f4552525f42414c414e4345000000000000000000000000000000000000000000600082015250565b6000612d2d600b8361265b565b9150612d3882612cf7565b602082019050919050565b60006020820190508181036000830152612d5c81612d20565b9050919050565b6000604082019050612d7860008301856127c1565b612d85602083018461270c565b9392505050565b600081519050612d9b816128d7565b92915050565b600060208284031215612db757612db6612590565b5b6000612dc584828501612d8c565b91505092915050565b7f4552525f5452414e534645520000000000000000000000000000000000000000600082015250565b6000612e04600c8361265b565b9150612e0f82612dce565b602082019050919050565b60006020820190508181036000830152612e3381612df7565b9050919050565b6000612e4582612702565b9150612e5083612702565b9250828201905080821115612e6857612e67612c94565b5b92915050565b6000608082019050612e8360008301876127c1565b612e90602083018661270c565b612e9d604083018561270c565b612eaa606083018461270c565b95945050505050565b7f4552525f494e56414c49445f5354415445000000000000000000000000000000600082015250565b6000612ee960118361265b565b9150612ef482612eb3565b602082019050919050565b60006020820190508181036000830152612f1881612edc565b9050919050565b7f4552525f414c52454144595f4c4f434b45440000000000000000000000000000600082015250565b6000612f5560128361265b565b9150612f6082612f1f565b602082019050919050565b60006020820190508181036000830152612f8481612f48565b9050919050565b6000606082019050612fa060008301866127c1565b612fad60208301856127c1565b612fba604083018461270c565b949350505050565b7f4552525f51554f54455200000000000000000000000000000000000000000000600082015250565b6000612ff8600a8361265b565b915061300382612fc2565b602082019050919050565b6000602082019050818103600083015261302781612feb565b9050919050565b7f4552525f4f574e45520000000000000000000000000000000000000000000000600082015250565b600061306460098361265b565b915061306f8261302e565b602082019050919050565b6000602082019050818103600083015261309381613057565b9050919050565b60006060820190506130af60008301866127c1565b6130bc6020830185612b5e565b6130c9604083018461270c565b949350505050565b60006130dc82612702565b91506130e783612702565b92508282026130f581612702565b9150828204841483151761310c5761310b612c94565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061314d82612702565b915061315883612702565b92508261316857613167613113565b5b828204905092915050565b7f4552525f52454749535452590000000000000000000000000000000000000000600082015250565b60006131a9600c8361265b565b91506131b482613173565b602082019050919050565b600060208201905081810360008301526131d88161319c565b9050919050565b7f4552525f554e415554485f544f4b454e00000000000000000000000000000000600082015250565b600061321560108361265b565b9150613220826131df565b602082019050919050565b6000602082019050818103600083015261324481613208565b9050919050565b600060408201905061326060008301856127c1565b61326d6020830184612b5e565b9392505050565b7f4552525f4c494d49544552000000000000000000000000000000000000000000600082015250565b60006132aa600b8361265b565b91506132b582613274565b602082019050919050565b600060208201905081810360008301526132d98161329d565b9050919050565b7f4552525f4c494d49540000000000000000000000000000000000000000000000600082015250565b600061331660098361265b565b9150613321826132e0565b602082019050919050565b6000602082019050818103600083015261334581613309565b905091905056fea2646970667358221220c219db091e4c59f7af003b43ba1a3bca9078af13acaa898516c21a4f608b525864736f6c63430008190033 \ No newline at end of file diff --git a/python/erc20_pool/data/SwapPool.metadata.json b/python/erc20_pool/data/SwapPool.metadata.json index 807fc04..e95e6cb 100644 --- a/python/erc20_pool/data/SwapPool.metadata.json +++ b/python/erc20_pool/data/SwapPool.metadata.json @@ -1 +1 @@ -{"compiler":{"version":"0.8.25+commit.b61c2a91"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"uint8","name":"_decimals","type":"uint8"},{"internalType":"address","name":"_tokenRegistry","type":"address"},{"internalType":"address","name":"_tokenLimiter","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"feeAddress","type":"address"},{"indexed":false,"internalType":"address","name":"tokenOut","type":"address"},{"indexed":false,"internalType":"uint256","name":"amountOut","type":"uint256"}],"name":"Collect","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"initiator","type":"address"},{"indexed":true,"internalType":"address","name":"tokenIn","type":"address"},{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bool","name":"_final","type":"bool"},{"indexed":false,"internalType":"uint256","name":"_sealState","type":"uint256"}],"name":"SealStateChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"initiator","type":"address"},{"indexed":true,"internalType":"address","name":"tokenIn","type":"address"},{"indexed":false,"internalType":"address","name":"tokenOut","type":"address"},{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountOut","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"fee","type":"uint256"}],"name":"Swap","type":"event"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"deposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feePpm","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"fees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_outToken","type":"address"},{"internalType":"address","name":"_inToken","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"getQuote","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_state","type":"uint256"}],"name":"isSealed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSealState","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"quoter","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_state","type":"uint256"}],"name":"seal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sealState","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_fee","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_feeAddress","type":"address"}],"name":"setFeeAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_quoter","type":"address"}],"name":"setQuoter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_sum","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenLimiter","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenRegistry","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_outToken","type":"address"}],"name":"withdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_outToken","type":"address"},{"internalType":"address","name":"_inToken","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"},{"internalType":"bool","name":"_deduct_fee","type":"bool"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_outToken","type":"address"},{"internalType":"address","name":"_inToken","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_outToken","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"withdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_outToken","type":"address"},{"internalType":"address","name":"_inToken","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"withdraw_less_fee","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"compilationTarget":{"SwapPool.sol":"SwapPool"},"evmVersion":"istanbul","libraries":{},"metadata":{"bytecodeHash":"ipfs"},"optimizer":{"enabled":false,"runs":200},"remappings":[]},"sources":{"SwapPool.sol":{"keccak256":"0x2754346f8597439ea78849de0f800dd21355f548e5f71487b7ba199703a44ac4","license":"AGPL-3.0-or-later","urls":["bzz-raw://e6c16f09dad445a06db1128809bea98b0d03360145c6a83d31c6c704c78d963e","dweb:/ipfs/QmePDiRrTRg381HTzQ4MPHUtcJtFyjEiDB27NeULxEJgWH"]}},"version":1} +{"compiler":{"version":"0.8.25+commit.b61c2a91"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"uint8","name":"_decimals","type":"uint8"},{"internalType":"address","name":"_tokenRegistry","type":"address"},{"internalType":"address","name":"_tokenLimiter","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"feeAddress","type":"address"},{"indexed":false,"internalType":"address","name":"tokenOut","type":"address"},{"indexed":false,"internalType":"uint256","name":"amountOut","type":"uint256"}],"name":"Collect","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"initiator","type":"address"},{"indexed":true,"internalType":"address","name":"tokenIn","type":"address"},{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bool","name":"_final","type":"bool"},{"indexed":false,"internalType":"uint256","name":"_sealState","type":"uint256"}],"name":"SealStateChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"initiator","type":"address"},{"indexed":true,"internalType":"address","name":"tokenIn","type":"address"},{"indexed":false,"internalType":"address","name":"tokenOut","type":"address"},{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountOut","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"fee","type":"uint256"}],"name":"Swap","type":"event"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"deposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feePpm","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"fees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_outToken","type":"address"},{"internalType":"address","name":"_inToken","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"getQuote","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_state","type":"uint256"}],"name":"isSealed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSealState","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"quoter","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_state","type":"uint256"}],"name":"seal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sealState","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_fee","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_feeAddress","type":"address"}],"name":"setFeeAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_quoter","type":"address"}],"name":"setQuoter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_sum","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenLimiter","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenRegistry","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_outToken","type":"address"}],"name":"withdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_outToken","type":"address"},{"internalType":"address","name":"_inToken","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"},{"internalType":"bool","name":"_deduct_fee","type":"bool"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_outToken","type":"address"},{"internalType":"address","name":"_inToken","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_outToken","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"withdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_outToken","type":"address"},{"internalType":"address","name":"_inToken","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"withdraw_less_fee","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"compilationTarget":{"SwapPool.sol":"SwapPool"},"evmVersion":"istanbul","libraries":{},"metadata":{"bytecodeHash":"ipfs"},"optimizer":{"enabled":false,"runs":200},"remappings":[]},"sources":{"SwapPool.sol":{"keccak256":"0xf0bebf80aa611e7cb4f2ab31f718aa5792560cc6b574e478dd05df31c8b2f154","license":"AGPL-3.0-or-later","urls":["bzz-raw://84f85296b006727aaeac189a7364d3ef8527d1877144cab384525204a483c076","dweb:/ipfs/QmR5nSFibHBtuGFeLrtMNAYgnetERPxzqfZBJYJ1qLVcgL"]}},"version":1} diff --git a/solidity/Makefile b/solidity/Makefile index 73b1bcf..31ef3a8 100644 --- a/solidity/Makefile +++ b/solidity/Makefile @@ -1,5 +1,5 @@ -SOLC = /usr/local/bin/solc -EVM_VERSION = byzantium +SOLC = solc +EVM_VERSION = istanbul all: $(SOLC) --bin SwapPool.sol --evm-version $(EVM_VERSION)| awk 'NR>3' > SwapPool.bin diff --git a/solidity/SwapPool.sol b/solidity/SwapPool.sol index a6f5dac..7cb001e 100644 --- a/solidity/SwapPool.sol +++ b/solidity/SwapPool.sol @@ -251,8 +251,10 @@ contract SwapPool { bool r; bytes memory v; + // This is a GE specific feature. However, it can be removed to allow anyone to push fees into a common feeAddress (profit-sharing) require(msg.sender == owner, "ERR_OWNER"); require(feeAddress != address(0), "ERR_AXX"); + require(_value <= fees[_outToken], "ERR_BALANCE"); (r, v) = _outToken.call(abi.encodeWithSignature('transfer(address,uint256)', feeAddress, _value)); require(r, "ERR_TOKEN");