From 0e2c4b1aca31d2fc02f59efab142aa1dcc079da3 Mon Sep 17 00:00:00 2001 From: Federico Giacon <58218759+fedgiac@users.noreply.github.com> Date: Tue, 25 Jun 2024 12:02:43 +0000 Subject: [PATCH 1/2] feat: add deployments of test factory (#85) The new factory has been deployed on the supported networks. Old deployments have been removed to avoid confusion. `networks.json` was automatically generated with the corresponding script. ## Test plan Verify contract code on each chain's block explorer. Closes #75. --- .../1/run-1719310324.json | 48 +++++ .../100/run-1719309655.json | 48 +++++ .../11155111/run-1719308170.json | 48 +++++ .../1/run-1715613714.json | 157 ----------------- .../100/run-1715348175.json | 164 ------------------ .../11155111/run-1715347993.json | 164 ------------------ networks.json | 54 +----- 7 files changed, 150 insertions(+), 533 deletions(-) create mode 100644 broadcast/ConstantProductFactory.s.sol/1/run-1719310324.json create mode 100644 broadcast/ConstantProductFactory.s.sol/100/run-1719309655.json create mode 100644 broadcast/ConstantProductFactory.s.sol/11155111/run-1719308170.json delete mode 100644 broadcast/DeployAllContracts.s.sol/1/run-1715613714.json delete mode 100644 broadcast/DeployAllContracts.s.sol/100/run-1715348175.json delete mode 100644 broadcast/DeployAllContracts.s.sol/11155111/run-1715347993.json diff --git a/broadcast/ConstantProductFactory.s.sol/1/run-1719310324.json b/broadcast/ConstantProductFactory.s.sol/1/run-1719310324.json new file mode 100644 index 0000000..04c91ed --- /dev/null +++ b/broadcast/ConstantProductFactory.s.sol/1/run-1719310324.json @@ -0,0 +1,48 @@ +{ + "transactions": [ + { + "hash": "0x4aa028aab545f88957d94f7d2a13924ade97f709c11dce12aac5f0609cd53b92", + "transactionType": "CREATE", + "contractName": "ConstantProductFactory", + "contractAddress": "0x8deed8ed7c5fcb55884f13f121654bb4bb7c8437", + "function": null, + "arguments": [ + "0x9008D19f58AAbD9eD0D60971565AA8510560ab41" + ], + "transaction": { + "from": "0x254e0b8ce09b571dbcc6e6e1f55a0c057f26e710", + "gas": "0x2919a5", + "value": "0x0", + "input": "0x60a0604052348015600e575f80fd5b5060405161254a38038061254a833981016040819052602b91603b565b6001600160a01b03166080526066565b5f60208284031215604a575f80fd5b81516001600160a01b0381168114605f575f80fd5b9392505050565b6080516124be61008c5f395f818161011c0152818161037b01526105ec01526124be5ff3fe608060405234801561000f575f80fd5b506004361061007a575f3560e01c8063666e1b3911610058578063666e1b39146100e2578063ab221a7614610117578063b5c5f6721461013e578063ce8a7da414610151575f80fd5b80630efe6a8b1461007e578063279105651461009357806337ebdf50146100a6575b5f80fd5b61009161008c366004610c8f565b610164565b005b6100916100a1366004610cc1565b610249565b6100b96100b4366004610ce3565b6102e6565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100b96100f0366004610cc1565b5f6020819052908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6100b97f000000000000000000000000000000000000000000000000000000000000000081565b61009161014c366004610c8f565b6104b8565b6100b961015f366004610d2b565b6105e7565b6101f53384848673ffffffffffffffffffffffffffffffffffffffff16630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101b3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101d79190610d70565b73ffffffffffffffffffffffffffffffffffffffff16929190610777565b6102443384838673ffffffffffffffffffffffffffffffffffffffff1663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101b3573d5f803e3d5ffd5b505050565b73ffffffffffffffffffffffffffffffffffffffff8082165f9081526020819052604090205482911633146102d95773ffffffffffffffffffffffffffffffffffffffff8181165f90815260208190526040908190205490517f68bafff8000000000000000000000000000000000000000000000000000000008152911660048201526024015b60405180910390fd5b6102e28261080c565b5050565b5f807fff000000000000000000000000000000000000000000000000000000000000003073ffffffffffffffffffffffffffffffffffffffff871660405161033060208201610c5e565b8181037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09081018352601f90910116604081815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000081166020840152808b169183019190915288166060820152608001604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526103f19291602001610da2565b6040516020818303038152906040528051906020012060405160200161047994939291907fff0000000000000000000000000000000000000000000000000000000000000094909416845260609290921b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660018401526015830152603582015260550190565b604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0018152919052805160209091012095945050505050565b73ffffffffffffffffffffffffffffffffffffffff8084165f9081526020819052604090205484911633146105435773ffffffffffffffffffffffffffffffffffffffff8181165f90815260208190526040908190205490517f68bafff8000000000000000000000000000000000000000000000000000000008152911660048201526024016102d0565b6105928433858773ffffffffffffffffffffffffffffffffffffffff16630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101b3573d5f803e3d5ffd5b6105e18433848773ffffffffffffffffffffffffffffffffffffffff1663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101b3573d5f803e3d5ffd5b50505050565b5f33807f0000000000000000000000000000000000000000000000000000000000000000878660405161061990610c5e565b73ffffffffffffffffffffffffffffffffffffffff9384168152918316602083015290911660408201526060018190604051809103905ff5905080158015610663573d5f803e3d5ffd5b506040805173ffffffffffffffffffffffffffffffffffffffff89811682528781166020830152929450828416928516917f6707255b2c5ca81220b2f3e408a269cb83baa6aa7e5e37aa1756883a6cdf06f1910160405180910390a360405173ffffffffffffffffffffffffffffffffffffffff831681527f0d03834d0d86c7f57e877af40e26f176dc31bd637535d4ba153d1ac9de88a7ea9060200160405180910390a173ffffffffffffffffffffffffffffffffffffffff8281165f90815260208190526040902080547fffffffffffffffffffffffff000000000000000000000000000000000000000016918316919091179055610765828685610164565b61076e826108aa565b50949350505050565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd000000000000000000000000000000000000000000000000000000001790526105e1908590610948565b8073ffffffffffffffffffffffffffffffffffffffff166317700f016040518163ffffffff1660e01b81526004015f604051808303815f87803b158015610851575f80fd5b505af1158015610863573d5f803e3d5ffd5b505060405173ffffffffffffffffffffffffffffffffffffffff841692507fc75bf4f03c02fab9414a7d7a54048c0486722bc72f33ad924709a0593608ad2791505f90a250565b8073ffffffffffffffffffffffffffffffffffffffff16638a8c523c6040518163ffffffff1660e01b81526004015f604051808303815f87803b1580156108ef575f80fd5b505af1158015610901573d5f803e3d5ffd5b505060405173ffffffffffffffffffffffffffffffffffffffff841692507f32acebb207383f6d09c833a8b6ff8e83246f4cf11637e76f9b94ef945c704a3091505f90a250565b5f6109a9826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16610a559092919063ffffffff16565b905080515f14806109c95750808060200190518101906109c99190610db6565b610244576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016102d0565b6060610a6384845f85610a6b565b949350505050565b606082471015610afd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016102d0565b5f808673ffffffffffffffffffffffffffffffffffffffff168587604051610b259190610dd5565b5f6040518083038185875af1925050503d805f8114610b5f576040519150601f19603f3d011682016040523d82523d5f602084013e610b64565b606091505b5091509150610b7587838387610b80565b979650505050505050565b60608315610c155782515f03610c0e5773ffffffffffffffffffffffffffffffffffffffff85163b610c0e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016102d0565b5081610a63565b610a638383815115610c2a5781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102d09190610de0565b61165580610e3483390190565b73ffffffffffffffffffffffffffffffffffffffff81168114610c8c575f80fd5b50565b5f805f60608486031215610ca1575f80fd5b8335610cac81610c6b565b95602085013595506040909401359392505050565b5f60208284031215610cd1575f80fd5b8135610cdc81610c6b565b9392505050565b5f805f60608486031215610cf5575f80fd5b8335610d0081610c6b565b92506020840135610d1081610c6b565b91506040840135610d2081610c6b565b809150509250925092565b5f805f8060808587031215610d3e575f80fd5b8435610d4981610c6b565b9350602085013592506040850135610d6081610c6b565b9396929550929360600135925050565b5f60208284031215610d80575f80fd5b8151610cdc81610c6b565b5f81518060208401855e5f93019283525090919050565b5f610a63610db08386610d8b565b84610d8b565b5f60208284031215610dc6575f80fd5b81518015158114610cdc575f80fd5b5f610cdc8284610d8b565b602081525f82518060208401528060208501604085015e5f6040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168401019150509291505056fe6101206040525f805460ff19169055348015610019575f80fd5b5060405161165538038061165583398101604081905261003891610536565b6001600160a01b03831660808190526040805163f698da2560e01b8152905163f698da25916004808201926020929091908290030181865afa158015610080573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100a49190610580565b610100526100b28233610166565b6100bc8133610166565b336001600160a01b031660e0816001600160a01b0316815250505f836001600160a01b0316639b552cc26040518163ffffffff1660e01b8152600401602060405180830381865afa158015610113573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101379190610597565b90506101438382610166565b61014d8282610166565b506001600160a01b0391821660a0521660c05250610623565b61017b6001600160a01b038316825f1961017f565b5050565b8015806101f75750604051636eb1769f60e11b81523060048201526001600160a01b03838116602483015284169063dd62ed3e90604401602060405180830381865afa1580156101d1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101f59190610580565b155b61026e5760405162461bcd60e51b815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527f20746f206e6f6e2d7a65726f20616c6c6f77616e63650000000000000000000060648201526084015b60405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b0390811663095ea7b360e01b179091526102c49185916102c916565b505050565b6040805180820190915260208082527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564908201525f90610315906001600160a01b038516908490610394565b905080515f148061033557508080602001905181019061033591906105b9565b6102c45760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610265565b60606103a284845f856103aa565b949350505050565b60608247101561040b5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610265565b5f80866001600160a01b0316858760405161042691906105d8565b5f6040518083038185875af1925050503d805f8114610460576040519150601f19603f3d011682016040523d82523d5f602084013e610465565b606091505b50909250905061047787838387610482565b979650505050505050565b606083156104f05782515f036104e9576001600160a01b0385163b6104e95760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610265565b50816103a2565b6103a283838151156105055781518083602001fd5b8060405162461bcd60e51b815260040161026591906105ee565b6001600160a01b0381168114610533575f80fd5b50565b5f805f60608486031215610548575f80fd5b83516105538161051f565b60208501519093506105648161051f565b60408501519092506105758161051f565b809150509250925092565b5f60208284031215610590575f80fd5b5051919050565b5f602082840312156105a7575f80fd5b81516105b28161051f565b9392505050565b5f602082840312156105c9575f80fd5b815180151581146105b2575f80fd5b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b60805160a05160c05160e05161010051610fcb61068a5f395f81816102c501526103ad01525f818161020e015281816104a90152610bd801525f818161029e015261058c01525f8181610104015261056a01525f81816102ec0152610cb00152610fcb5ff3fe608060405234801561000f575f80fd5b50600436106100fb575f3560e01c80636dbc881311610093578063d25e0cb611610063578063d25e0cb6146102c0578063e516715b146102e7578063f14fcbc81461030e578063ff2dbc9814610321575f80fd5b80636dbc88131461024c5780638a8c523c14610273578063981a160b1461027b578063d21220a714610299575f80fd5b806328bd6443116100ce57806328bd6443146101cf5780633e706e32146101e2578063481c6a75146102095780634ada218b14610230575f80fd5b80630dfe1681146100ff5780631303a484146101505780631626ba7e1461018157806317700f01146101c5575b5f80fd5b6101267f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b7f6c3c90245457060f6517787b2c4b8cf500ca889d2304af02043bd5b513e3b5935c5b604051908152602001610147565b61019461018f366004610d2d565b610328565b6040517fffffffff000000000000000000000000000000000000000000000000000000009091168152602001610147565b6101cd6104a7565b005b6101cd6101dd366004610e3b565b610566565b6101737f6c3c90245457060f6517787b2c4b8cf500ca889d2304af02043bd5b513e3b59381565b6101267f000000000000000000000000000000000000000000000000000000000000000081565b5f5461023c9060ff1681565b6040519015158152602001610147565b6101737f555ea39564bc0bdb86c923141da12754e14676ae1fd8fcf6b26ae04abdfa029881565b6101cd610bd6565b61028461012c81565b60405163ffffffff9091168152602001610147565b6101267f000000000000000000000000000000000000000000000000000000000000000081565b6101737f000000000000000000000000000000000000000000000000000000000000000081565b6101267f000000000000000000000000000000000000000000000000000000000000000081565b6101cd61031c366004610ef7565b610c98565b6101735f81565b5f8061033683850185610e3b565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fd5a25ba2e97094ad7d83dc28a6572da797d6b3e7fc6663bd93efb789fc17e48982526101a0822091526040517f190100000000000000000000000000000000000000000000000000000000000081527f00000000000000000000000000000000000000000000000000000000000000006002820152602281019190915260429020909150858114610419576040517f593fcacd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f6c3c90245457060f6517787b2c4b8cf500ca889d2304af02043bd5b513e3b5935c8114610473576040517fdafbdd1f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61047c82610566565b507f1626ba7e0000000000000000000000000000000000000000000000000000000095945050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163314610516576040517ff87d0d1600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001681556040517fbcb8b8fbdea8aa6dc4ae41213e4da81e605a3d1a56ed851b9355182321c091909190a1565b80517f0000000000000000000000000000000000000000000000000000000000000000907f00000000000000000000000000000000000000000000000000000000000000009073ffffffffffffffffffffffffffffffffffffffff80841691161461066a578073ffffffffffffffffffffffffffffffffffffffff16835f015173ffffffffffffffffffffffffffffffffffffffff1614610668576040517fc8fc272500000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f696e76616c69642073656c6c20746f6b656e000000000000000000000000000060448201526064015b60405180910390fd5b905b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201525f9073ffffffffffffffffffffffffffffffffffffffff8416906370a0823190602401602060405180830381865afa1580156106d4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106f89190610f0e565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529091505f9073ffffffffffffffffffffffffffffffffffffffff8416906370a0823190602401602060405180830381865afa158015610765573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107899190610f0e565b90508273ffffffffffffffffffffffffffffffffffffffff16856020015173ffffffffffffffffffffffffffffffffffffffff1614610824576040517fc8fc272500000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f696e76616c69642062757920746f6b656e000000000000000000000000000000604482015260640161065f565b604085015173ffffffffffffffffffffffffffffffffffffffff16156108a6576040517fc8fc272500000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f7265636569766572206d757374206265207a65726f2061646472657373000000604482015260640161065f565b6108b261012c42610f52565b8560a0015163ffffffff161115610925576040517fc8fc272500000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f76616c696469747920746f6f2066617220696e20746865206675747572650000604482015260640161065f565b60c08501517f555ea39564bc0bdb86c923141da12754e14676ae1fd8fcf6b26ae04abdfa0298146109b2576040517fc8fc272500000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f696e76616c696420617070446174610000000000000000000000000000000000604482015260640161065f565b60e085015115610a1e576040517fc8fc272500000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f66656520616d6f756e74206d757374206265207a65726f000000000000000000604482015260640161065f565b7f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc985610160015114610aac576040517fc8fc272500000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f627579546f6b656e42616c616e6365206d757374206265206572633230000000604482015260640161065f565b7f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc985610140015114610b3a576040517fc8fc272500000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f73656c6c546f6b656e42616c616e6365206d7573742062652065726332300000604482015260640161065f565b6060850151610b499082610f6b565b60808601516060870151610b5d9085610f82565b610b679190610f6b565b1015610bcf576040517fc8fc272500000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f726563656976656420616d6f756e7420746f6f206c6f77000000000000000000604482015260640161065f565b5050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163314610c45576040517ff87d0d1600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011781556040517f799663458a5ef2936f7fa0c99b3336c69c25890f82974f04e811e5bb359186c79190a1565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610d07576040517fbf84897700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b807f6c3c90245457060f6517787b2c4b8cf500ca889d2304af02043bd5b513e3b5935d50565b5f805f60408486031215610d3f575f80fd5b83359250602084013567ffffffffffffffff80821115610d5d575f80fd5b818601915086601f830112610d70575f80fd5b813581811115610d7e575f80fd5b876020828501011115610d8f575f80fd5b6020830194508093505050509250925092565b604051610180810167ffffffffffffffff81118282101715610deb577f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60405290565b803573ffffffffffffffffffffffffffffffffffffffff81168114610e14575f80fd5b919050565b803563ffffffff81168114610e14575f80fd5b80358015158114610e14575f80fd5b5f6101808284031215610e4c575f80fd5b610e54610da2565b610e5d83610df1565b8152610e6b60208401610df1565b6020820152610e7c60408401610df1565b60408201526060830135606082015260808301356080820152610ea160a08401610e19565b60a082015260c083013560c082015260e083013560e0820152610100808401358183015250610120610ed4818501610e2c565b908201526101408381013590820152610160928301359281019290925250919050565b5f60208284031215610f07575f80fd5b5035919050565b5f60208284031215610f1e575f80fd5b5051919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b80820180821115610f6557610f65610f25565b92915050565b8082028115828204841417610f6557610f65610f25565b81810381811115610f6557610f65610f2556fea2646970667358221220967062b59e37290338f9608f7152204bed104899594c42d483a4700cb8ed95eb64736f6c63430008190033a2646970667358221220ed160e391bbfec011ad912a61c2add46e4c3d36ea73ffa9da111ecc6b0e9600264736f6c634300081900330000000000000000000000009008d19f58aabd9ed0d60971565aa8510560ab41", + "nonce": "0x10", + "chainId": "0x1" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x1076f31", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x4aa028aab545f88957d94f7d2a13924ade97f709c11dce12aac5f0609cd53b92", + "transactionIndex": "0xb2", + "blockHash": "0x6c4ee739114f7c431c05895bd4d2fb1ddb6f352ef52f8395928ced9f887bd202", + "blockNumber": "0x133bd50", + "gasUsed": "0x1f9d93", + "effectiveGasPrice": "0xf76f5c23", + "from": "0x254e0b8ce09b571dbcc6e6e1f55a0c057f26e710", + "to": null, + "contractAddress": "0x8deed8ed7c5fcb55884f13f121654bb4bb7c8437" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1719310324, + "chain": 1, + "commit": "5103ead" +} \ No newline at end of file diff --git a/broadcast/ConstantProductFactory.s.sol/100/run-1719309655.json b/broadcast/ConstantProductFactory.s.sol/100/run-1719309655.json new file mode 100644 index 0000000..cdb7dc2 --- /dev/null +++ b/broadcast/ConstantProductFactory.s.sol/100/run-1719309655.json @@ -0,0 +1,48 @@ +{ + "transactions": [ + { + "hash": "0xf796756d733bcd656177c8db91cb39e2e35fbb101b7ab1e017d4727a84378333", + "transactionType": "CREATE", + "contractName": "ConstantProductFactory", + "contractAddress": "0x2af6c59fc957d4a45ddbbd927fa30f7c5051f583", + "function": null, + "arguments": [ + "0x9008D19f58AAbD9eD0D60971565AA8510560ab41" + ], + "transaction": { + "from": "0x75c35dfd35775f1241f6de49ada78fda82308bc9", + "gas": "0x2919a5", + "value": "0x0", + "input": "0x60a0604052348015600e575f80fd5b5060405161254a38038061254a833981016040819052602b91603b565b6001600160a01b03166080526066565b5f60208284031215604a575f80fd5b81516001600160a01b0381168114605f575f80fd5b9392505050565b6080516124be61008c5f395f818161011c0152818161037b01526105ec01526124be5ff3fe608060405234801561000f575f80fd5b506004361061007a575f3560e01c8063666e1b3911610058578063666e1b39146100e2578063ab221a7614610117578063b5c5f6721461013e578063ce8a7da414610151575f80fd5b80630efe6a8b1461007e578063279105651461009357806337ebdf50146100a6575b5f80fd5b61009161008c366004610c8f565b610164565b005b6100916100a1366004610cc1565b610249565b6100b96100b4366004610ce3565b6102e6565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100b96100f0366004610cc1565b5f6020819052908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6100b97f000000000000000000000000000000000000000000000000000000000000000081565b61009161014c366004610c8f565b6104b8565b6100b961015f366004610d2b565b6105e7565b6101f53384848673ffffffffffffffffffffffffffffffffffffffff16630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101b3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101d79190610d70565b73ffffffffffffffffffffffffffffffffffffffff16929190610777565b6102443384838673ffffffffffffffffffffffffffffffffffffffff1663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101b3573d5f803e3d5ffd5b505050565b73ffffffffffffffffffffffffffffffffffffffff8082165f9081526020819052604090205482911633146102d95773ffffffffffffffffffffffffffffffffffffffff8181165f90815260208190526040908190205490517f68bafff8000000000000000000000000000000000000000000000000000000008152911660048201526024015b60405180910390fd5b6102e28261080c565b5050565b5f807fff000000000000000000000000000000000000000000000000000000000000003073ffffffffffffffffffffffffffffffffffffffff871660405161033060208201610c5e565b8181037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09081018352601f90910116604081815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000081166020840152808b169183019190915288166060820152608001604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526103f19291602001610da2565b6040516020818303038152906040528051906020012060405160200161047994939291907fff0000000000000000000000000000000000000000000000000000000000000094909416845260609290921b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660018401526015830152603582015260550190565b604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0018152919052805160209091012095945050505050565b73ffffffffffffffffffffffffffffffffffffffff8084165f9081526020819052604090205484911633146105435773ffffffffffffffffffffffffffffffffffffffff8181165f90815260208190526040908190205490517f68bafff8000000000000000000000000000000000000000000000000000000008152911660048201526024016102d0565b6105928433858773ffffffffffffffffffffffffffffffffffffffff16630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101b3573d5f803e3d5ffd5b6105e18433848773ffffffffffffffffffffffffffffffffffffffff1663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101b3573d5f803e3d5ffd5b50505050565b5f33807f0000000000000000000000000000000000000000000000000000000000000000878660405161061990610c5e565b73ffffffffffffffffffffffffffffffffffffffff9384168152918316602083015290911660408201526060018190604051809103905ff5905080158015610663573d5f803e3d5ffd5b506040805173ffffffffffffffffffffffffffffffffffffffff89811682528781166020830152929450828416928516917f6707255b2c5ca81220b2f3e408a269cb83baa6aa7e5e37aa1756883a6cdf06f1910160405180910390a360405173ffffffffffffffffffffffffffffffffffffffff831681527f0d03834d0d86c7f57e877af40e26f176dc31bd637535d4ba153d1ac9de88a7ea9060200160405180910390a173ffffffffffffffffffffffffffffffffffffffff8281165f90815260208190526040902080547fffffffffffffffffffffffff000000000000000000000000000000000000000016918316919091179055610765828685610164565b61076e826108aa565b50949350505050565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd000000000000000000000000000000000000000000000000000000001790526105e1908590610948565b8073ffffffffffffffffffffffffffffffffffffffff166317700f016040518163ffffffff1660e01b81526004015f604051808303815f87803b158015610851575f80fd5b505af1158015610863573d5f803e3d5ffd5b505060405173ffffffffffffffffffffffffffffffffffffffff841692507fc75bf4f03c02fab9414a7d7a54048c0486722bc72f33ad924709a0593608ad2791505f90a250565b8073ffffffffffffffffffffffffffffffffffffffff16638a8c523c6040518163ffffffff1660e01b81526004015f604051808303815f87803b1580156108ef575f80fd5b505af1158015610901573d5f803e3d5ffd5b505060405173ffffffffffffffffffffffffffffffffffffffff841692507f32acebb207383f6d09c833a8b6ff8e83246f4cf11637e76f9b94ef945c704a3091505f90a250565b5f6109a9826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16610a559092919063ffffffff16565b905080515f14806109c95750808060200190518101906109c99190610db6565b610244576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016102d0565b6060610a6384845f85610a6b565b949350505050565b606082471015610afd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016102d0565b5f808673ffffffffffffffffffffffffffffffffffffffff168587604051610b259190610dd5565b5f6040518083038185875af1925050503d805f8114610b5f576040519150601f19603f3d011682016040523d82523d5f602084013e610b64565b606091505b5091509150610b7587838387610b80565b979650505050505050565b60608315610c155782515f03610c0e5773ffffffffffffffffffffffffffffffffffffffff85163b610c0e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016102d0565b5081610a63565b610a638383815115610c2a5781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102d09190610de0565b61165580610e3483390190565b73ffffffffffffffffffffffffffffffffffffffff81168114610c8c575f80fd5b50565b5f805f60608486031215610ca1575f80fd5b8335610cac81610c6b565b95602085013595506040909401359392505050565b5f60208284031215610cd1575f80fd5b8135610cdc81610c6b565b9392505050565b5f805f60608486031215610cf5575f80fd5b8335610d0081610c6b565b92506020840135610d1081610c6b565b91506040840135610d2081610c6b565b809150509250925092565b5f805f8060808587031215610d3e575f80fd5b8435610d4981610c6b565b9350602085013592506040850135610d6081610c6b565b9396929550929360600135925050565b5f60208284031215610d80575f80fd5b8151610cdc81610c6b565b5f81518060208401855e5f93019283525090919050565b5f610a63610db08386610d8b565b84610d8b565b5f60208284031215610dc6575f80fd5b81518015158114610cdc575f80fd5b5f610cdc8284610d8b565b602081525f82518060208401528060208501604085015e5f6040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168401019150509291505056fe6101206040525f805460ff19169055348015610019575f80fd5b5060405161165538038061165583398101604081905261003891610536565b6001600160a01b03831660808190526040805163f698da2560e01b8152905163f698da25916004808201926020929091908290030181865afa158015610080573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100a49190610580565b610100526100b28233610166565b6100bc8133610166565b336001600160a01b031660e0816001600160a01b0316815250505f836001600160a01b0316639b552cc26040518163ffffffff1660e01b8152600401602060405180830381865afa158015610113573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101379190610597565b90506101438382610166565b61014d8282610166565b506001600160a01b0391821660a0521660c05250610623565b61017b6001600160a01b038316825f1961017f565b5050565b8015806101f75750604051636eb1769f60e11b81523060048201526001600160a01b03838116602483015284169063dd62ed3e90604401602060405180830381865afa1580156101d1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101f59190610580565b155b61026e5760405162461bcd60e51b815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527f20746f206e6f6e2d7a65726f20616c6c6f77616e63650000000000000000000060648201526084015b60405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b0390811663095ea7b360e01b179091526102c49185916102c916565b505050565b6040805180820190915260208082527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564908201525f90610315906001600160a01b038516908490610394565b905080515f148061033557508080602001905181019061033591906105b9565b6102c45760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610265565b60606103a284845f856103aa565b949350505050565b60608247101561040b5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610265565b5f80866001600160a01b0316858760405161042691906105d8565b5f6040518083038185875af1925050503d805f8114610460576040519150601f19603f3d011682016040523d82523d5f602084013e610465565b606091505b50909250905061047787838387610482565b979650505050505050565b606083156104f05782515f036104e9576001600160a01b0385163b6104e95760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610265565b50816103a2565b6103a283838151156105055781518083602001fd5b8060405162461bcd60e51b815260040161026591906105ee565b6001600160a01b0381168114610533575f80fd5b50565b5f805f60608486031215610548575f80fd5b83516105538161051f565b60208501519093506105648161051f565b60408501519092506105758161051f565b809150509250925092565b5f60208284031215610590575f80fd5b5051919050565b5f602082840312156105a7575f80fd5b81516105b28161051f565b9392505050565b5f602082840312156105c9575f80fd5b815180151581146105b2575f80fd5b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b60805160a05160c05160e05161010051610fcb61068a5f395f81816102c501526103ad01525f818161020e015281816104a90152610bd801525f818161029e015261058c01525f8181610104015261056a01525f81816102ec0152610cb00152610fcb5ff3fe608060405234801561000f575f80fd5b50600436106100fb575f3560e01c80636dbc881311610093578063d25e0cb611610063578063d25e0cb6146102c0578063e516715b146102e7578063f14fcbc81461030e578063ff2dbc9814610321575f80fd5b80636dbc88131461024c5780638a8c523c14610273578063981a160b1461027b578063d21220a714610299575f80fd5b806328bd6443116100ce57806328bd6443146101cf5780633e706e32146101e2578063481c6a75146102095780634ada218b14610230575f80fd5b80630dfe1681146100ff5780631303a484146101505780631626ba7e1461018157806317700f01146101c5575b5f80fd5b6101267f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b7f6c3c90245457060f6517787b2c4b8cf500ca889d2304af02043bd5b513e3b5935c5b604051908152602001610147565b61019461018f366004610d2d565b610328565b6040517fffffffff000000000000000000000000000000000000000000000000000000009091168152602001610147565b6101cd6104a7565b005b6101cd6101dd366004610e3b565b610566565b6101737f6c3c90245457060f6517787b2c4b8cf500ca889d2304af02043bd5b513e3b59381565b6101267f000000000000000000000000000000000000000000000000000000000000000081565b5f5461023c9060ff1681565b6040519015158152602001610147565b6101737f555ea39564bc0bdb86c923141da12754e14676ae1fd8fcf6b26ae04abdfa029881565b6101cd610bd6565b61028461012c81565b60405163ffffffff9091168152602001610147565b6101267f000000000000000000000000000000000000000000000000000000000000000081565b6101737f000000000000000000000000000000000000000000000000000000000000000081565b6101267f000000000000000000000000000000000000000000000000000000000000000081565b6101cd61031c366004610ef7565b610c98565b6101735f81565b5f8061033683850185610e3b565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fd5a25ba2e97094ad7d83dc28a6572da797d6b3e7fc6663bd93efb789fc17e48982526101a0822091526040517f190100000000000000000000000000000000000000000000000000000000000081527f00000000000000000000000000000000000000000000000000000000000000006002820152602281019190915260429020909150858114610419576040517f593fcacd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f6c3c90245457060f6517787b2c4b8cf500ca889d2304af02043bd5b513e3b5935c8114610473576040517fdafbdd1f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61047c82610566565b507f1626ba7e0000000000000000000000000000000000000000000000000000000095945050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163314610516576040517ff87d0d1600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001681556040517fbcb8b8fbdea8aa6dc4ae41213e4da81e605a3d1a56ed851b9355182321c091909190a1565b80517f0000000000000000000000000000000000000000000000000000000000000000907f00000000000000000000000000000000000000000000000000000000000000009073ffffffffffffffffffffffffffffffffffffffff80841691161461066a578073ffffffffffffffffffffffffffffffffffffffff16835f015173ffffffffffffffffffffffffffffffffffffffff1614610668576040517fc8fc272500000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f696e76616c69642073656c6c20746f6b656e000000000000000000000000000060448201526064015b60405180910390fd5b905b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201525f9073ffffffffffffffffffffffffffffffffffffffff8416906370a0823190602401602060405180830381865afa1580156106d4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106f89190610f0e565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529091505f9073ffffffffffffffffffffffffffffffffffffffff8416906370a0823190602401602060405180830381865afa158015610765573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107899190610f0e565b90508273ffffffffffffffffffffffffffffffffffffffff16856020015173ffffffffffffffffffffffffffffffffffffffff1614610824576040517fc8fc272500000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f696e76616c69642062757920746f6b656e000000000000000000000000000000604482015260640161065f565b604085015173ffffffffffffffffffffffffffffffffffffffff16156108a6576040517fc8fc272500000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f7265636569766572206d757374206265207a65726f2061646472657373000000604482015260640161065f565b6108b261012c42610f52565b8560a0015163ffffffff161115610925576040517fc8fc272500000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f76616c696469747920746f6f2066617220696e20746865206675747572650000604482015260640161065f565b60c08501517f555ea39564bc0bdb86c923141da12754e14676ae1fd8fcf6b26ae04abdfa0298146109b2576040517fc8fc272500000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f696e76616c696420617070446174610000000000000000000000000000000000604482015260640161065f565b60e085015115610a1e576040517fc8fc272500000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f66656520616d6f756e74206d757374206265207a65726f000000000000000000604482015260640161065f565b7f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc985610160015114610aac576040517fc8fc272500000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f627579546f6b656e42616c616e6365206d757374206265206572633230000000604482015260640161065f565b7f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc985610140015114610b3a576040517fc8fc272500000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f73656c6c546f6b656e42616c616e6365206d7573742062652065726332300000604482015260640161065f565b6060850151610b499082610f6b565b60808601516060870151610b5d9085610f82565b610b679190610f6b565b1015610bcf576040517fc8fc272500000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f726563656976656420616d6f756e7420746f6f206c6f77000000000000000000604482015260640161065f565b5050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163314610c45576040517ff87d0d1600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011781556040517f799663458a5ef2936f7fa0c99b3336c69c25890f82974f04e811e5bb359186c79190a1565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610d07576040517fbf84897700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b807f6c3c90245457060f6517787b2c4b8cf500ca889d2304af02043bd5b513e3b5935d50565b5f805f60408486031215610d3f575f80fd5b83359250602084013567ffffffffffffffff80821115610d5d575f80fd5b818601915086601f830112610d70575f80fd5b813581811115610d7e575f80fd5b876020828501011115610d8f575f80fd5b6020830194508093505050509250925092565b604051610180810167ffffffffffffffff81118282101715610deb577f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60405290565b803573ffffffffffffffffffffffffffffffffffffffff81168114610e14575f80fd5b919050565b803563ffffffff81168114610e14575f80fd5b80358015158114610e14575f80fd5b5f6101808284031215610e4c575f80fd5b610e54610da2565b610e5d83610df1565b8152610e6b60208401610df1565b6020820152610e7c60408401610df1565b60408201526060830135606082015260808301356080820152610ea160a08401610e19565b60a082015260c083013560c082015260e083013560e0820152610100808401358183015250610120610ed4818501610e2c565b908201526101408381013590820152610160928301359281019290925250919050565b5f60208284031215610f07575f80fd5b5035919050565b5f60208284031215610f1e575f80fd5b5051919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b80820180821115610f6557610f65610f25565b92915050565b8082028115828204841417610f6557610f65610f25565b81810381811115610f6557610f65610f2556fea2646970667358221220967062b59e37290338f9608f7152204bed104899594c42d483a4700cb8ed95eb64736f6c63430008190033a2646970667358221220ed160e391bbfec011ad912a61c2add46e4c3d36ea73ffa9da111ecc6b0e9600264736f6c634300081900330000000000000000000000009008d19f58aabd9ed0d60971565aa8510560ab41", + "nonce": "0xc", + "chainId": "0x64" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x30765a", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xf796756d733bcd656177c8db91cb39e2e35fbb101b7ab1e017d4727a84378333", + "transactionIndex": "0x5", + "blockHash": "0x0251a6e06a812feeffcfc46f4baf994d0bfdbf0f97cfea16fb7a6d51a731ae7e", + "blockNumber": "0x2109a5e", + "gasUsed": "0x1f9d93", + "effectiveGasPrice": "0x415607ed", + "from": "0x75c35dfd35775f1241f6de49ada78fda82308bc9", + "to": null, + "contractAddress": "0x2af6c59fc957d4a45ddbbd927fa30f7c5051f583" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1719309655, + "chain": 100, + "commit": "5103ead" +} \ No newline at end of file diff --git a/broadcast/ConstantProductFactory.s.sol/11155111/run-1719308170.json b/broadcast/ConstantProductFactory.s.sol/11155111/run-1719308170.json new file mode 100644 index 0000000..1f28c8c --- /dev/null +++ b/broadcast/ConstantProductFactory.s.sol/11155111/run-1719308170.json @@ -0,0 +1,48 @@ +{ + "transactions": [ + { + "hash": "0x6bb46c17360c05537b2b0a5f750e407c976c1839c219e555a02e79e3587fcab8", + "transactionType": "CREATE", + "contractName": "ConstantProductFactory", + "contractAddress": "0xbd18758055dbe3ed37a2471394559ae97a5da5c0", + "function": null, + "arguments": [ + "0x9008D19f58AAbD9eD0D60971565AA8510560ab41" + ], + "transaction": { + "from": "0x479bd5b0d9211665bda2ecc1be3db2aa4ab81102", + "gas": "0x2919a5", + "value": "0x0", + "input": "0x60a0604052348015600e575f80fd5b5060405161254a38038061254a833981016040819052602b91603b565b6001600160a01b03166080526066565b5f60208284031215604a575f80fd5b81516001600160a01b0381168114605f575f80fd5b9392505050565b6080516124be61008c5f395f818161011c0152818161037b01526105ec01526124be5ff3fe608060405234801561000f575f80fd5b506004361061007a575f3560e01c8063666e1b3911610058578063666e1b39146100e2578063ab221a7614610117578063b5c5f6721461013e578063ce8a7da414610151575f80fd5b80630efe6a8b1461007e578063279105651461009357806337ebdf50146100a6575b5f80fd5b61009161008c366004610c8f565b610164565b005b6100916100a1366004610cc1565b610249565b6100b96100b4366004610ce3565b6102e6565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100b96100f0366004610cc1565b5f6020819052908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6100b97f000000000000000000000000000000000000000000000000000000000000000081565b61009161014c366004610c8f565b6104b8565b6100b961015f366004610d2b565b6105e7565b6101f53384848673ffffffffffffffffffffffffffffffffffffffff16630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101b3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101d79190610d70565b73ffffffffffffffffffffffffffffffffffffffff16929190610777565b6102443384838673ffffffffffffffffffffffffffffffffffffffff1663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101b3573d5f803e3d5ffd5b505050565b73ffffffffffffffffffffffffffffffffffffffff8082165f9081526020819052604090205482911633146102d95773ffffffffffffffffffffffffffffffffffffffff8181165f90815260208190526040908190205490517f68bafff8000000000000000000000000000000000000000000000000000000008152911660048201526024015b60405180910390fd5b6102e28261080c565b5050565b5f807fff000000000000000000000000000000000000000000000000000000000000003073ffffffffffffffffffffffffffffffffffffffff871660405161033060208201610c5e565b8181037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09081018352601f90910116604081815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000081166020840152808b169183019190915288166060820152608001604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526103f19291602001610da2565b6040516020818303038152906040528051906020012060405160200161047994939291907fff0000000000000000000000000000000000000000000000000000000000000094909416845260609290921b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660018401526015830152603582015260550190565b604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0018152919052805160209091012095945050505050565b73ffffffffffffffffffffffffffffffffffffffff8084165f9081526020819052604090205484911633146105435773ffffffffffffffffffffffffffffffffffffffff8181165f90815260208190526040908190205490517f68bafff8000000000000000000000000000000000000000000000000000000008152911660048201526024016102d0565b6105928433858773ffffffffffffffffffffffffffffffffffffffff16630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101b3573d5f803e3d5ffd5b6105e18433848773ffffffffffffffffffffffffffffffffffffffff1663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101b3573d5f803e3d5ffd5b50505050565b5f33807f0000000000000000000000000000000000000000000000000000000000000000878660405161061990610c5e565b73ffffffffffffffffffffffffffffffffffffffff9384168152918316602083015290911660408201526060018190604051809103905ff5905080158015610663573d5f803e3d5ffd5b506040805173ffffffffffffffffffffffffffffffffffffffff89811682528781166020830152929450828416928516917f6707255b2c5ca81220b2f3e408a269cb83baa6aa7e5e37aa1756883a6cdf06f1910160405180910390a360405173ffffffffffffffffffffffffffffffffffffffff831681527f0d03834d0d86c7f57e877af40e26f176dc31bd637535d4ba153d1ac9de88a7ea9060200160405180910390a173ffffffffffffffffffffffffffffffffffffffff8281165f90815260208190526040902080547fffffffffffffffffffffffff000000000000000000000000000000000000000016918316919091179055610765828685610164565b61076e826108aa565b50949350505050565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd000000000000000000000000000000000000000000000000000000001790526105e1908590610948565b8073ffffffffffffffffffffffffffffffffffffffff166317700f016040518163ffffffff1660e01b81526004015f604051808303815f87803b158015610851575f80fd5b505af1158015610863573d5f803e3d5ffd5b505060405173ffffffffffffffffffffffffffffffffffffffff841692507fc75bf4f03c02fab9414a7d7a54048c0486722bc72f33ad924709a0593608ad2791505f90a250565b8073ffffffffffffffffffffffffffffffffffffffff16638a8c523c6040518163ffffffff1660e01b81526004015f604051808303815f87803b1580156108ef575f80fd5b505af1158015610901573d5f803e3d5ffd5b505060405173ffffffffffffffffffffffffffffffffffffffff841692507f32acebb207383f6d09c833a8b6ff8e83246f4cf11637e76f9b94ef945c704a3091505f90a250565b5f6109a9826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16610a559092919063ffffffff16565b905080515f14806109c95750808060200190518101906109c99190610db6565b610244576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016102d0565b6060610a6384845f85610a6b565b949350505050565b606082471015610afd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016102d0565b5f808673ffffffffffffffffffffffffffffffffffffffff168587604051610b259190610dd5565b5f6040518083038185875af1925050503d805f8114610b5f576040519150601f19603f3d011682016040523d82523d5f602084013e610b64565b606091505b5091509150610b7587838387610b80565b979650505050505050565b60608315610c155782515f03610c0e5773ffffffffffffffffffffffffffffffffffffffff85163b610c0e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016102d0565b5081610a63565b610a638383815115610c2a5781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102d09190610de0565b61165580610e3483390190565b73ffffffffffffffffffffffffffffffffffffffff81168114610c8c575f80fd5b50565b5f805f60608486031215610ca1575f80fd5b8335610cac81610c6b565b95602085013595506040909401359392505050565b5f60208284031215610cd1575f80fd5b8135610cdc81610c6b565b9392505050565b5f805f60608486031215610cf5575f80fd5b8335610d0081610c6b565b92506020840135610d1081610c6b565b91506040840135610d2081610c6b565b809150509250925092565b5f805f8060808587031215610d3e575f80fd5b8435610d4981610c6b565b9350602085013592506040850135610d6081610c6b565b9396929550929360600135925050565b5f60208284031215610d80575f80fd5b8151610cdc81610c6b565b5f81518060208401855e5f93019283525090919050565b5f610a63610db08386610d8b565b84610d8b565b5f60208284031215610dc6575f80fd5b81518015158114610cdc575f80fd5b5f610cdc8284610d8b565b602081525f82518060208401528060208501604085015e5f6040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168401019150509291505056fe6101206040525f805460ff19169055348015610019575f80fd5b5060405161165538038061165583398101604081905261003891610536565b6001600160a01b03831660808190526040805163f698da2560e01b8152905163f698da25916004808201926020929091908290030181865afa158015610080573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100a49190610580565b610100526100b28233610166565b6100bc8133610166565b336001600160a01b031660e0816001600160a01b0316815250505f836001600160a01b0316639b552cc26040518163ffffffff1660e01b8152600401602060405180830381865afa158015610113573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101379190610597565b90506101438382610166565b61014d8282610166565b506001600160a01b0391821660a0521660c05250610623565b61017b6001600160a01b038316825f1961017f565b5050565b8015806101f75750604051636eb1769f60e11b81523060048201526001600160a01b03838116602483015284169063dd62ed3e90604401602060405180830381865afa1580156101d1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101f59190610580565b155b61026e5760405162461bcd60e51b815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527f20746f206e6f6e2d7a65726f20616c6c6f77616e63650000000000000000000060648201526084015b60405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b0390811663095ea7b360e01b179091526102c49185916102c916565b505050565b6040805180820190915260208082527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564908201525f90610315906001600160a01b038516908490610394565b905080515f148061033557508080602001905181019061033591906105b9565b6102c45760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610265565b60606103a284845f856103aa565b949350505050565b60608247101561040b5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610265565b5f80866001600160a01b0316858760405161042691906105d8565b5f6040518083038185875af1925050503d805f8114610460576040519150601f19603f3d011682016040523d82523d5f602084013e610465565b606091505b50909250905061047787838387610482565b979650505050505050565b606083156104f05782515f036104e9576001600160a01b0385163b6104e95760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610265565b50816103a2565b6103a283838151156105055781518083602001fd5b8060405162461bcd60e51b815260040161026591906105ee565b6001600160a01b0381168114610533575f80fd5b50565b5f805f60608486031215610548575f80fd5b83516105538161051f565b60208501519093506105648161051f565b60408501519092506105758161051f565b809150509250925092565b5f60208284031215610590575f80fd5b5051919050565b5f602082840312156105a7575f80fd5b81516105b28161051f565b9392505050565b5f602082840312156105c9575f80fd5b815180151581146105b2575f80fd5b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b60805160a05160c05160e05161010051610fcb61068a5f395f81816102c501526103ad01525f818161020e015281816104a90152610bd801525f818161029e015261058c01525f8181610104015261056a01525f81816102ec0152610cb00152610fcb5ff3fe608060405234801561000f575f80fd5b50600436106100fb575f3560e01c80636dbc881311610093578063d25e0cb611610063578063d25e0cb6146102c0578063e516715b146102e7578063f14fcbc81461030e578063ff2dbc9814610321575f80fd5b80636dbc88131461024c5780638a8c523c14610273578063981a160b1461027b578063d21220a714610299575f80fd5b806328bd6443116100ce57806328bd6443146101cf5780633e706e32146101e2578063481c6a75146102095780634ada218b14610230575f80fd5b80630dfe1681146100ff5780631303a484146101505780631626ba7e1461018157806317700f01146101c5575b5f80fd5b6101267f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b7f6c3c90245457060f6517787b2c4b8cf500ca889d2304af02043bd5b513e3b5935c5b604051908152602001610147565b61019461018f366004610d2d565b610328565b6040517fffffffff000000000000000000000000000000000000000000000000000000009091168152602001610147565b6101cd6104a7565b005b6101cd6101dd366004610e3b565b610566565b6101737f6c3c90245457060f6517787b2c4b8cf500ca889d2304af02043bd5b513e3b59381565b6101267f000000000000000000000000000000000000000000000000000000000000000081565b5f5461023c9060ff1681565b6040519015158152602001610147565b6101737f555ea39564bc0bdb86c923141da12754e14676ae1fd8fcf6b26ae04abdfa029881565b6101cd610bd6565b61028461012c81565b60405163ffffffff9091168152602001610147565b6101267f000000000000000000000000000000000000000000000000000000000000000081565b6101737f000000000000000000000000000000000000000000000000000000000000000081565b6101267f000000000000000000000000000000000000000000000000000000000000000081565b6101cd61031c366004610ef7565b610c98565b6101735f81565b5f8061033683850185610e3b565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fd5a25ba2e97094ad7d83dc28a6572da797d6b3e7fc6663bd93efb789fc17e48982526101a0822091526040517f190100000000000000000000000000000000000000000000000000000000000081527f00000000000000000000000000000000000000000000000000000000000000006002820152602281019190915260429020909150858114610419576040517f593fcacd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f6c3c90245457060f6517787b2c4b8cf500ca889d2304af02043bd5b513e3b5935c8114610473576040517fdafbdd1f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61047c82610566565b507f1626ba7e0000000000000000000000000000000000000000000000000000000095945050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163314610516576040517ff87d0d1600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001681556040517fbcb8b8fbdea8aa6dc4ae41213e4da81e605a3d1a56ed851b9355182321c091909190a1565b80517f0000000000000000000000000000000000000000000000000000000000000000907f00000000000000000000000000000000000000000000000000000000000000009073ffffffffffffffffffffffffffffffffffffffff80841691161461066a578073ffffffffffffffffffffffffffffffffffffffff16835f015173ffffffffffffffffffffffffffffffffffffffff1614610668576040517fc8fc272500000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f696e76616c69642073656c6c20746f6b656e000000000000000000000000000060448201526064015b60405180910390fd5b905b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201525f9073ffffffffffffffffffffffffffffffffffffffff8416906370a0823190602401602060405180830381865afa1580156106d4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106f89190610f0e565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529091505f9073ffffffffffffffffffffffffffffffffffffffff8416906370a0823190602401602060405180830381865afa158015610765573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107899190610f0e565b90508273ffffffffffffffffffffffffffffffffffffffff16856020015173ffffffffffffffffffffffffffffffffffffffff1614610824576040517fc8fc272500000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f696e76616c69642062757920746f6b656e000000000000000000000000000000604482015260640161065f565b604085015173ffffffffffffffffffffffffffffffffffffffff16156108a6576040517fc8fc272500000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f7265636569766572206d757374206265207a65726f2061646472657373000000604482015260640161065f565b6108b261012c42610f52565b8560a0015163ffffffff161115610925576040517fc8fc272500000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f76616c696469747920746f6f2066617220696e20746865206675747572650000604482015260640161065f565b60c08501517f555ea39564bc0bdb86c923141da12754e14676ae1fd8fcf6b26ae04abdfa0298146109b2576040517fc8fc272500000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f696e76616c696420617070446174610000000000000000000000000000000000604482015260640161065f565b60e085015115610a1e576040517fc8fc272500000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f66656520616d6f756e74206d757374206265207a65726f000000000000000000604482015260640161065f565b7f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc985610160015114610aac576040517fc8fc272500000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f627579546f6b656e42616c616e6365206d757374206265206572633230000000604482015260640161065f565b7f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc985610140015114610b3a576040517fc8fc272500000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f73656c6c546f6b656e42616c616e6365206d7573742062652065726332300000604482015260640161065f565b6060850151610b499082610f6b565b60808601516060870151610b5d9085610f82565b610b679190610f6b565b1015610bcf576040517fc8fc272500000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f726563656976656420616d6f756e7420746f6f206c6f77000000000000000000604482015260640161065f565b5050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163314610c45576040517ff87d0d1600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011781556040517f799663458a5ef2936f7fa0c99b3336c69c25890f82974f04e811e5bb359186c79190a1565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610d07576040517fbf84897700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b807f6c3c90245457060f6517787b2c4b8cf500ca889d2304af02043bd5b513e3b5935d50565b5f805f60408486031215610d3f575f80fd5b83359250602084013567ffffffffffffffff80821115610d5d575f80fd5b818601915086601f830112610d70575f80fd5b813581811115610d7e575f80fd5b876020828501011115610d8f575f80fd5b6020830194508093505050509250925092565b604051610180810167ffffffffffffffff81118282101715610deb577f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60405290565b803573ffffffffffffffffffffffffffffffffffffffff81168114610e14575f80fd5b919050565b803563ffffffff81168114610e14575f80fd5b80358015158114610e14575f80fd5b5f6101808284031215610e4c575f80fd5b610e54610da2565b610e5d83610df1565b8152610e6b60208401610df1565b6020820152610e7c60408401610df1565b60408201526060830135606082015260808301356080820152610ea160a08401610e19565b60a082015260c083013560c082015260e083013560e0820152610100808401358183015250610120610ed4818501610e2c565b908201526101408381013590820152610160928301359281019290925250919050565b5f60208284031215610f07575f80fd5b5035919050565b5f60208284031215610f1e575f80fd5b5051919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b80820180821115610f6557610f65610f25565b92915050565b8082028115828204841417610f6557610f65610f25565b81810381811115610f6557610f65610f2556fea2646970667358221220967062b59e37290338f9608f7152204bed104899594c42d483a4700cb8ed95eb64736f6c63430008190033a2646970667358221220ed160e391bbfec011ad912a61c2add46e4c3d36ea73ffa9da111ecc6b0e9600264736f6c634300081900330000000000000000000000009008d19f58aabd9ed0d60971565aa8510560ab41", + "nonce": "0x1a", + "chainId": "0xaa36a7" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0xab02ad", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x6bb46c17360c05537b2b0a5f750e407c976c1839c219e555a02e79e3587fcab8", + "transactionIndex": "0x3e", + "blockHash": "0x550bd35159d1745667e3d64d0b65abafcd89c1561d3c981b95f3e39edd103f43", + "blockNumber": "0x5e56e9", + "gasUsed": "0x1f9d93", + "effectiveGasPrice": "0x1132141d1c", + "from": "0x479bd5b0d9211665bda2ecc1be3db2aa4ab81102", + "to": null, + "contractAddress": "0xbd18758055dbe3ed37a2471394559ae97a5da5c0" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1719308170, + "chain": 11155111, + "commit": "5103ead" +} \ No newline at end of file diff --git a/broadcast/DeployAllContracts.s.sol/1/run-1715613714.json b/broadcast/DeployAllContracts.s.sol/1/run-1715613714.json deleted file mode 100644 index 95e77d6..0000000 --- a/broadcast/DeployAllContracts.s.sol/1/run-1715613714.json +++ /dev/null @@ -1,157 +0,0 @@ -{ - "transactions": [ - { - "hash": "0xf37fc438ddacb00c28305bd7dea3b79091cd5be3405a2b445717d9faf946fa50", - "transactionType": "CREATE", - "contractName": "ConstantProductFactory", - "contractAddress": "0x40664207e3375FB4b733d4743CE9b159331fd034", - "function": null, - "arguments": [ - "0x9008D19f58AAbD9eD0D60971565AA8510560ab41" - ], - "transaction": { - "type": "0x02", - "from": "0x254e0b8ce09b571dbcc6e6e1f55a0c057f26e710", - "gas": "0x4821e5", - "value": "0x0", - "data": "0x60a0604052348015600e575f80fd5b506040516141b33803806141b3833981016040819052602b91603b565b6001600160a01b03166080526066565b5f60208284031215604a575f80fd5b81516001600160a01b0381168114605f575f80fd5b9392505050565b60805161412761008c5f395f8181610189015281816102a801526108c401526141275ff3fe608060405234801561000f575f80fd5b506004361061009f575f3560e01c806337ebdf5011610072578063666e1b3911610058578063666e1b391461014f578063ab221a7614610184578063b5c5f672146101ab575f80fd5b806337ebdf50146101295780635b5d9ee61461013c575f80fd5b80630efe6a8b146100a357806322b155c6146100b857806326e0a196146100f55780632791056514610116575b5f80fd5b6100b66100b13660046111ea565b6101be565b005b6100cb6100c6366004611261565b6102a3565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6101086101033660046112fb565b61045f565b6040516100ec9291906114fd565b6100b6610124366004611527565b610797565b6100cb610137366004611549565b61082f565b6100b661014a366004611591565b610a01565b6100cb61015d366004611527565b5f6020819052908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6100cb7f000000000000000000000000000000000000000000000000000000000000000081565b6100b66101b93660046111ea565b610b17565b61024f3384848673ffffffffffffffffffffffffffffffffffffffff16630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa15801561020d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102319190611617565b73ffffffffffffffffffffffffffffffffffffffff16929190610c46565b61029e3384838673ffffffffffffffffffffffffffffffffffffffff1663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa15801561020d573d5f803e3d5ffd5b505050565b5f33807f00000000000000000000000000000000000000000000000000000000000000008c8b6040516102d5906111b9565b73ffffffffffffffffffffffffffffffffffffffff9384168152918316602083015290911660408201526060018190604051809103905ff590508015801561031f573d5f803e3d5ffd5b506040805173ffffffffffffffffffffffffffffffffffffffff8e811682528c81166020830152929450828416928516917f6707255b2c5ca81220b2f3e408a269cb83baa6aa7e5e37aa1756883a6cdf06f1910160405180910390a373ffffffffffffffffffffffffffffffffffffffff8281165f90815260208190526040902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169183169190911790556103d8828b8a6101be565b5f60405180608001604052808981526020018873ffffffffffffffffffffffffffffffffffffffff16815260200187878080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525050509082525060200185905290506104508382610cdb565b50509998505050505050505050565b60408051610180810182525f80825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081018290526101008101829052610120810182905261014081018290526101608101919091526060306104cf6020890189611527565b73ffffffffffffffffffffffffffffffffffffffff1614610551576040517fc8fc272500000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f63616e206f6e6c792068616e646c65206f776e206f726465727300000000000060448201526064015b60405180910390fd5b5f61055f6040890189611632565b81019061056c919061175c565b90508873ffffffffffffffffffffffffffffffffffffffff1663eec50b976040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105b7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105db919061185a565b6040517fb09aaaca00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8b169063b09aaaca9061062d9085906004016118c3565b602060405180830381865afa158015610648573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061066c919061185a565b146106d3576040517fc8fc272500000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f696e76616c69642074726164696e6720706172616d65746572730000000000006044820152606401610548565b6040517fe3e6f5b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a169063e3e6f5b2906107259084906004016118c3565b61018060405180830381865afa158015610741573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061076591906118f7565b9250828160405160200161077a9291906119b3565b604051602081830303815290604052915050965096945050505050565b73ffffffffffffffffffffffffffffffffffffffff8082165f9081526020819052604090205482911633146108225773ffffffffffffffffffffffffffffffffffffffff8181165f90815260208190526040908190205490517f68bafff800000000000000000000000000000000000000000000000000000000815291166004820152602401610548565b61082b82610e05565b5050565b5f807fff000000000000000000000000000000000000000000000000000000000000003073ffffffffffffffffffffffffffffffffffffffff8716604051610879602082016111b9565b8181037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09081018352601f90910116604081815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000081166020840152808b169183019190915288166060820152608001604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905261093a92916020016119eb565b604051602081830303815290604052805190602001206040516020016109c294939291907fff0000000000000000000000000000000000000000000000000000000000000094909416845260609290921b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660018401526015830152603582015260550190565b604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0018152919052805160209091012095945050505050565b73ffffffffffffffffffffffffffffffffffffffff8087165f908152602081905260409020548791163314610a8c5773ffffffffffffffffffffffffffffffffffffffff8181165f90815260208190526040908190205490517f68bafff800000000000000000000000000000000000000000000000000000000815291166004820152602401610548565b5f60405180608001604052808881526020018773ffffffffffffffffffffffffffffffffffffffff16815260200186868080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505050908252506020018490529050610b0388610e05565b610b0d8882610cdb565b5050505050505050565b73ffffffffffffffffffffffffffffffffffffffff8084165f908152602081905260409020548491163314610ba25773ffffffffffffffffffffffffffffffffffffffff8181165f90815260208190526040908190205490517f68bafff800000000000000000000000000000000000000000000000000000000815291166004820152602401610548565b610bf18433858773ffffffffffffffffffffffffffffffffffffffff16630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa15801561020d573d5f803e3d5ffd5b610c408433848773ffffffffffffffffffffffffffffffffffffffff1663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa15801561020d573d5f803e3d5ffd5b50505050565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd00000000000000000000000000000000000000000000000000000000179052610c40908590610ea3565b6040517fc5f3d25400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83169063c5f3d25490610d2d9084906004016118c3565b5f604051808303815f87803b158015610d44575f80fd5b505af1158015610d56573d5f803e3d5ffd5b5050604080516060810182523081525f6020808301829052835191955073ffffffffffffffffffffffffffffffffffffffff881694507f2cceac5555b0ca45a3744ced542f54b56ad2eb45e521962372eef212a2cbf36193830191610dbd918891016118c3565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152918152915251610df891906119ff565b60405180910390a2505050565b8073ffffffffffffffffffffffffffffffffffffffff166317700f016040518163ffffffff1660e01b81526004015f604051808303815f87803b158015610e4a575f80fd5b505af1158015610e5c573d5f803e3d5ffd5b505060405173ffffffffffffffffffffffffffffffffffffffff841692507fc75bf4f03c02fab9414a7d7a54048c0486722bc72f33ad924709a0593608ad2791505f90a250565b5f610f04826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16610fb09092919063ffffffff16565b905080515f1480610f24575080806020019051810190610f249190611a43565b61029e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610548565b6060610fbe84845f85610fc6565b949350505050565b606082471015611058576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610548565b5f808673ffffffffffffffffffffffffffffffffffffffff1685876040516110809190611a5c565b5f6040518083038185875af1925050503d805f81146110ba576040519150601f19603f3d011682016040523d82523d5f602084013e6110bf565b606091505b50915091506110d0878383876110db565b979650505050505050565b606083156111705782515f036111695773ffffffffffffffffffffffffffffffffffffffff85163b611169576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610548565b5081610fbe565b610fbe83838151156111855781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105489190611a67565b61267880611a7a83390190565b73ffffffffffffffffffffffffffffffffffffffff811681146111e7575f80fd5b50565b5f805f606084860312156111fc575f80fd5b8335611207816111c6565b95602085013595506040909401359392505050565b5f8083601f84011261122c575f80fd5b50813567ffffffffffffffff811115611243575f80fd5b60208301915083602082850101111561125a575f80fd5b9250929050565b5f805f805f805f805f6101008a8c03121561127a575f80fd5b8935611285816111c6565b985060208a0135975060408a013561129c816111c6565b965060608a0135955060808a0135945060a08a01356112ba816111c6565b935060c08a013567ffffffffffffffff8111156112d5575f80fd5b6112e18c828d0161121c565b9a9d999c50979a9699959894979660e00135949350505050565b5f805f805f8060808789031215611310575f80fd5b863561131b816111c6565b9550602087013567ffffffffffffffff80821115611337575f80fd5b908801906060828b03121561134a575f80fd5b9095506040880135908082111561135f575f80fd5b61136b8a838b0161121c565b90965094506060890135915080821115611383575f80fd5b818901915089601f830112611396575f80fd5b8135818111156113a4575f80fd5b8a60208260051b85010111156113b8575f80fd5b6020830194508093505050509295509295509295565b805173ffffffffffffffffffffffffffffffffffffffff168252602081015161140f602084018273ffffffffffffffffffffffffffffffffffffffff169052565b506040810151611437604084018273ffffffffffffffffffffffffffffffffffffffff169052565b50606081015160608301526080810151608083015260a081015161146360a084018263ffffffff169052565b5060c081015160c083015260e081015160e0830152610100808201518184015250610120808201516114988285018215159052565b5050610140818101519083015261016090810151910152565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b5f6101a061150b83866113ce565b8061018084015261151e818401856114b1565b95945050505050565b5f60208284031215611537575f80fd5b8135611542816111c6565b9392505050565b5f805f6060848603121561155b575f80fd5b8335611566816111c6565b92506020840135611576816111c6565b91506040840135611586816111c6565b809150509250925092565b5f805f805f8060a087890312156115a6575f80fd5b86356115b1816111c6565b95506020870135945060408701356115c8816111c6565b9350606087013567ffffffffffffffff8111156115e3575f80fd5b6115ef89828a0161121c565b979a9699509497949695608090950135949350505050565b8051611612816111c6565b919050565b5f60208284031215611627575f80fd5b8151611542816111c6565b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611665575f80fd5b83018035915067ffffffffffffffff82111561167f575f80fd5b60200191503681900382131561125a575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040516080810167ffffffffffffffff811182821017156116e3576116e3611693565b60405290565b604051610180810167ffffffffffffffff811182821017156116e3576116e3611693565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561175457611754611693565b604052919050565b5f602080838503121561176d575f80fd5b823567ffffffffffffffff80821115611784575f80fd5b9084019060808287031215611797575f80fd5b61179f6116c0565b82358152838301356117b0816111c6565b818501526040830135828111156117c5575f80fd5b8301601f810188136117d5575f80fd5b8035838111156117e7576117e7611693565b611817867fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160161170d565b9350808452888682840101111561182c575f80fd5b80868301878601375f8682860101525050816040820152606083013560608201528094505050505092915050565b5f6020828403121561186a575f80fd5b5051919050565b8051825273ffffffffffffffffffffffffffffffffffffffff60208201511660208301525f6040820151608060408501526118af60808501826114b1565b606093840151949093019390935250919050565b602081525f6115426020830184611871565b805163ffffffff81168114611612575f80fd5b80518015158114611612575f80fd5b5f6101808284031215611908575f80fd5b6119106116e9565b61191983611607565b815261192760208401611607565b602082015261193860408401611607565b6040820152606083015160608201526080830151608082015261195d60a084016118d5565b60a082015260c083015160c082015260e083015160e08201526101008084015181830152506101206119908185016118e8565b908201526101408381015190820152610160928301519281019290925250919050565b5f6101a06119c183866113ce565b8061018084015261151e81840185611871565b5f81518060208401855e5f93019283525090919050565b5f610fbe6119f983866119d4565b846119d4565b6020815273ffffffffffffffffffffffffffffffffffffffff8251166020820152602082015160408201525f6040830151606080840152610fbe60808401826114b1565b5f60208284031215611a53575f80fd5b611542826118e8565b5f61154282846119d4565b602081525f61154260208301846114b156fe610120604052348015610010575f80fd5b5060405161267838038061267883398101604081905261002f9161052f565b6001600160a01b03831660808190526040805163f698da2560e01b8152905163f698da259160048082019260209290919082900301815f875af1158015610078573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061009c9190610579565b610100526100aa823361015f565b6100b4813361015f565b336001600160a01b031660e0816001600160a01b0316815250505f836001600160a01b0316639b552cc26040518163ffffffff1660e01b81526004016020604051808303815f875af115801561010c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101309190610590565b905061013c838261015f565b610146828261015f565b506001600160a01b0391821660a0521660c0525061061c565b6101746001600160a01b038316825f19610178565b5050565b8015806101f05750604051636eb1769f60e11b81523060048201526001600160a01b03838116602483015284169063dd62ed3e90604401602060405180830381865afa1580156101ca573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101ee9190610579565b155b6102675760405162461bcd60e51b815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527f20746f206e6f6e2d7a65726f20616c6c6f77616e63650000000000000000000060648201526084015b60405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b0390811663095ea7b360e01b179091526102bd9185916102c216565b505050565b6040805180820190915260208082527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564908201525f9061030e906001600160a01b03851690849061038d565b905080515f148061032e57508080602001905181019061032e91906105b2565b6102bd5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161025e565b606061039b84845f856103a3565b949350505050565b6060824710156104045760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b606482015260840161025e565b5f80866001600160a01b0316858760405161041f91906105d1565b5f6040518083038185875af1925050503d805f8114610459576040519150601f19603f3d011682016040523d82523d5f602084013e61045e565b606091505b5090925090506104708783838761047b565b979650505050505050565b606083156104e95782515f036104e2576001600160a01b0385163b6104e25760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161025e565b508161039b565b61039b83838151156104fe5781518083602001fd5b8060405162461bcd60e51b815260040161025e91906105e7565b6001600160a01b038116811461052c575f80fd5b50565b5f805f60608486031215610541575f80fd5b835161054c81610518565b602085015190935061055d81610518565b604085015190925061056e81610518565b809150509250925092565b5f60208284031215610589575f80fd5b5051919050565b5f602082840312156105a0575f80fd5b81516105ab81610518565b9392505050565b5f602082840312156105c2575f80fd5b815180151581146105ab575f80fd5b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b60805160a05160c05160e05161010051611fbd6106bb5f395f81816102db015261042b01525f8181610236015281816104d90152610bf901525f81816102b40152818161059901528181610d5c01528181610ebf01528181610f8e015261100d01525f81816101380152818161057701528181610d3b01528181610e2801528181610f6b015261103001525f818161032201526112140152611fbd5ff3fe608060405234801561000f575f80fd5b506004361061012f575f3560e01c8063b09aaaca116100ad578063e3e6f5b21161007d578063eec50b9711610063578063eec50b9714610344578063f14fcbc81461034c578063ff2dbc9814610203575f80fd5b8063e3e6f5b2146102fd578063e516715b1461031d575f80fd5b8063b09aaaca14610289578063c5f3d2541461029c578063d21220a7146102af578063d25e0cb6146102d6575f80fd5b80631c7de94111610102578063481c6a75116100e8578063481c6a7514610231578063981a160b14610258578063a029a8d414610276575f80fd5b80631c7de941146102035780633e706e321461020a575f80fd5b80630dfe1681146101335780631303a484146101845780631626ba7e146101b557806317700f01146101f9575b5f80fd5b61015a7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b7f6c3c90245457060f6517787b2c4b8cf500ca889d2304af02043bd5b513e3b5935c5b60405190815260200161017b565b6101c86101c33660046116bf565b61035f565b6040517fffffffff00000000000000000000000000000000000000000000000000000000909116815260200161017b565b6102016104d7565b005b6101a75f81565b6101a77f6c3c90245457060f6517787b2c4b8cf500ca889d2304af02043bd5b513e3b59381565b61015a7f000000000000000000000000000000000000000000000000000000000000000081565b61026161012c81565b60405163ffffffff909116815260200161017b565b6102016102843660046119ee565b610573565b6101a7610297366004611a3b565b610bc8565b6102016102aa366004611a75565b610bf7565b61015a7f000000000000000000000000000000000000000000000000000000000000000081565b6101a77f000000000000000000000000000000000000000000000000000000000000000081565b61031061030b366004611a3b565b610cb7565b60405161017b9190611aac565b61015a7f000000000000000000000000000000000000000000000000000000000000000081565b6101a75f5481565b61020161035a366004611b9a565b6111fc565b5f808061036e84860186611bb1565b915091505f5461037d82610bc8565b146103b4576040517ff1a6789000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0820180517fd5a25ba2e97094ad7d83dc28a6572da797d6b3e7fc6663bd93efb789fc17e48982526101a0822091526040517f190100000000000000000000000000000000000000000000000000000000000081527f00000000000000000000000000000000000000000000000000000000000000006002820152602281019190915260429020868114610494576040517f593fcacd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61049f818385611291565b6104a98284610573565b507f1626ba7e00000000000000000000000000000000000000000000000000000000925050505b9392505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163314610546576040517ff87d0d1600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8080556040517fbcb8b8fbdea8aa6dc4ae41213e4da81e605a3d1a56ed851b9355182321c091909190a1565b80517f0000000000000000000000000000000000000000000000000000000000000000907f00000000000000000000000000000000000000000000000000000000000000009073ffffffffffffffffffffffffffffffffffffffff808416911614610677578073ffffffffffffffffffffffffffffffffffffffff16835f015173ffffffffffffffffffffffffffffffffffffffff1614610675576040517fc8fc272500000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f696e76616c69642073656c6c20746f6b656e000000000000000000000000000060448201526064015b60405180910390fd5b905b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201525f9073ffffffffffffffffffffffffffffffffffffffff8416906370a0823190602401602060405180830381865afa1580156106e1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107059190611bff565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529091505f9073ffffffffffffffffffffffffffffffffffffffff8416906370a0823190602401602060405180830381865afa158015610772573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107969190611bff565b90508273ffffffffffffffffffffffffffffffffffffffff16856020015173ffffffffffffffffffffffffffffffffffffffff1614610831576040517fc8fc272500000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f696e76616c69642062757920746f6b656e000000000000000000000000000000604482015260640161066c565b604085015173ffffffffffffffffffffffffffffffffffffffff16156108b3576040517fc8fc272500000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f7265636569766572206d757374206265207a65726f2061646472657373000000604482015260640161066c565b6108bf61012c42611c43565b8560a0015163ffffffff161115610932576040517fc8fc272500000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f76616c696469747920746f6f2066617220696e20746865206675747572650000604482015260640161066c565b85606001518560c00151146109a3576040517fc8fc272500000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f696e76616c696420617070446174610000000000000000000000000000000000604482015260640161066c565b60e085015115610a0f576040517fc8fc272500000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f66656520616d6f756e74206d757374206265207a65726f000000000000000000604482015260640161066c565b7f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc985610160015114610a9d576040517fc8fc272500000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f627579546f6b656e42616c616e6365206d757374206265206572633230000000604482015260640161066c565b7f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc985610140015114610b2b576040517fc8fc272500000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f73656c6c546f6b656e42616c616e6365206d7573742062652065726332300000604482015260640161066c565b6060850151610b3a9082611c56565b60808601516060870151610b4e9085611c6d565b610b589190611c56565b1015610bc0576040517fc8fc272500000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f726563656976656420616d6f756e7420746f6f206c6f77000000000000000000604482015260640161066c565b505050505050565b5f81604051602001610bda9190611ccc565b604051602081830303815290604052805190602001209050919050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163314610c66576040517ff87d0d1600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f610c7361029783611d27565b9050805f81905550807f510e4a4f76907c2d6158b343f7c4f2f597df385b727c26e9ef90e75093ace19a83604051610cab9190611d79565b60405180910390a25050565b60408051610180810182525f80825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081018290526101008101829052610120810182905261014081018290526101608101919091525f80836020015173ffffffffffffffffffffffffffffffffffffffff1663355efdd97f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000087604001516040518463ffffffff1660e01b8152600401610d9e93929190611e3a565b6040805180830381865afa158015610db8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ddc9190611e72565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015291935091505f90819073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa158015610e6d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e919190611bff565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa158015610f19573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f3d9190611bff565b90925090505f80808080610f518888611c56565b90505f610f5e8a88611c56565b90505f8282101561100b577f000000000000000000000000000000000000000000000000000000000000000096507f00000000000000000000000000000000000000000000000000000000000000009550610fd6610fbd60028b611ec1565b610fd184610fcc8e6002611c56565b611346565b61137e565b945061100185610fe6818d611c56565b610ff09085611c43565b610ffa8c8f611c56565b60016113cb565b9350849050611098565b7f000000000000000000000000000000000000000000000000000000000000000096507f0000000000000000000000000000000000000000000000000000000000000000955061106e61105f60028a611ec1565b610fd185610fcc8f6002611c56565b94506110928561107e818e611c56565b6110889086611c43565b610ffa8b8e611c56565b93508390505b8c518110156110df576110df6040518060400160405280601781526020017f74726164656420616d6f756e7420746f6f20736d616c6c000000000000000000815250611426565b6040518061018001604052808873ffffffffffffffffffffffffffffffffffffffff1681526020018773ffffffffffffffffffffffffffffffffffffffff1681526020015f73ffffffffffffffffffffffffffffffffffffffff16815260200186815260200185815260200161115661012c611466565b63ffffffff1681526020018e6060015181526020015f81526020017ff3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee34677581526020016001151581526020017f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc981526020017f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc98152509b505050505050505050505050919050565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461126b576040517fbf84897700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b807f6c3c90245457060f6517787b2c4b8cf500ca889d2304af02043bd5b513e3b5935d50565b7f6c3c90245457060f6517787b2c4b8cf500ca889d2304af02043bd5b513e3b5935c8381146113405780156112f2576040517fdafbdd1f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6112fc84610cb7565b90506113088382611487565b61133e576040517fd9ff24c700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505b50505050565b5f82156113735781611359600185611c6d565b6113639190611ec1565b61136e906001611c43565b611375565b5f5b90505b92915050565b5f818310156113c5576113c56040518060400160405280601581526020017f7375627472616374696f6e20756e646572666c6f770000000000000000000000815250611426565b50900390565b5f806113d8868686611599565b905060018360028111156113ee576113ee611ed4565b14801561140a57505f848061140557611405611e94565b868809115b1561141d5761141a600182611c43565b90505b95945050505050565b611431436001611c43565b816040517f1fe8506e00000000000000000000000000000000000000000000000000000000815260040161066c929190611f01565b5f81806114738142611f19565b61147d9190611f3b565b6113789190611f63565b5f80825f015173ffffffffffffffffffffffffffffffffffffffff16845f015173ffffffffffffffffffffffffffffffffffffffff161490505f836020015173ffffffffffffffffffffffffffffffffffffffff16856020015173ffffffffffffffffffffffffffffffffffffffff161490505f846060015186606001511490505f856080015187608001511490505f8660a0015163ffffffff168860a0015163ffffffff161490505f8761010001518961010001511490505f88610120015115158a6101200151151514905086801561155e5750855b80156115675750845b80156115705750835b80156115795750825b80156115825750815b801561158b5750805b9a9950505050505050505050565b5f80807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff858709858702925082811083820303915050805f036115ef578382816115e5576115e5611e94565b04925050506104d0565b808411611658576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4d6174683a206d756c446976206f766572666c6f770000000000000000000000604482015260640161066c565b5f8486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091025f889003889004909101858311909403939093029303949094049190911702949350505050565b5f805f604084860312156116d1575f80fd5b83359250602084013567ffffffffffffffff808211156116ef575f80fd5b818601915086601f830112611702575f80fd5b813581811115611710575f80fd5b876020828501011115611721575f80fd5b6020830194508093505050509250925092565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040516080810167ffffffffffffffff8111828210171561178457611784611734565b60405290565b604051610180810167ffffffffffffffff8111828210171561178457611784611734565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156117f5576117f5611734565b604052919050565b73ffffffffffffffffffffffffffffffffffffffff8116811461181e575f80fd5b50565b5f60808284031215611831575f80fd5b611839611761565b90508135815260208083013561184e816117fd565b82820152604083013567ffffffffffffffff8082111561186c575f80fd5b818501915085601f83011261187f575f80fd5b81358181111561189157611891611734565b6118c1847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016117ae565b915080825286848285010111156118d6575f80fd5b80848401858401375f848284010152508060408501525050506060820135606082015292915050565b803561190a816117fd565b919050565b803563ffffffff8116811461190a575f80fd5b8035801515811461190a575f80fd5b5f6101808284031215611942575f80fd5b61194a61178a565b9050611955826118ff565b8152611963602083016118ff565b6020820152611974604083016118ff565b6040820152606082013560608201526080820135608082015261199960a0830161190f565b60a082015260c082013560c082015260e082013560e08201526101008083013581830152506101206119cc818401611922565b9082015261014082810135908201526101609182013591810191909152919050565b5f806101a08385031215611a00575f80fd5b823567ffffffffffffffff811115611a16575f80fd5b611a2285828601611821565b925050611a328460208501611931565b90509250929050565b5f60208284031215611a4b575f80fd5b813567ffffffffffffffff811115611a61575f80fd5b611a6d84828501611821565b949350505050565b5f60208284031215611a85575f80fd5b813567ffffffffffffffff811115611a9b575f80fd5b8201608081850312156104d0575f80fd5b815173ffffffffffffffffffffffffffffffffffffffff16815261018081016020830151611af2602084018273ffffffffffffffffffffffffffffffffffffffff169052565b506040830151611b1a604084018273ffffffffffffffffffffffffffffffffffffffff169052565b50606083015160608301526080830151608083015260a0830151611b4660a084018263ffffffff169052565b5060c083015160c083015260e083015160e083015261010080840151818401525061012080840151611b7b8285018215159052565b5050610140838101519083015261016092830151929091019190915290565b5f60208284031215611baa575f80fd5b5035919050565b5f806101a08385031215611bc3575f80fd5b611bcd8484611931565b915061018083013567ffffffffffffffff811115611be9575f80fd5b611bf585828601611821565b9150509250929050565b5f60208284031215611c0f575f80fd5b5051919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b8082018082111561137857611378611c16565b808202811582820484141761137857611378611c16565b8181038181111561137857611378611c16565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081528151602082015273ffffffffffffffffffffffffffffffffffffffff60208301511660408201525f604083015160806060840152611d1160a0840182611c80565b9050606084015160808401528091505092915050565b5f6113783683611821565b81835281816020850137505f602082840101525f60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60208152813560208201525f6020830135611d93816117fd565b73ffffffffffffffffffffffffffffffffffffffff811660408401525060408301357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611de4575f80fd5b830160208101903567ffffffffffffffff811115611e00575f80fd5b803603821315611e0e575f80fd5b60806060850152611e2360a085018284611d32565b915050606084013560808401528091505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff80861683528085166020840152506060604083015261141d6060830184611c80565b5f8060408385031215611e83575f80fd5b505080516020909101519092909150565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f82611ecf57611ecf611e94565b500490565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b828152604060208201525f611a6d6040830184611c80565b5f63ffffffff80841680611f2f57611f2f611e94565b92169190910492915050565b63ffffffff818116838216028082169190828114611f5b57611f5b611c16565b505092915050565b63ffffffff818116838216019080821115611f8057611f80611c16565b509291505056fea2646970667358221220007787385571c489d2d3dd1067df9d880b4dcbadc90929009db8bacadf24c59c64736f6c63430008190033a2646970667358221220c0204c7751d8f2123ca68d540faf4dc94182742afb6653be6fc250385d038cf964736f6c634300081900330000000000000000000000009008d19f58aabd9ed0d60971565aa8510560ab41", - "nonce": "0xc", - "accessList": [] - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x967564124beb451f546d2311e4b18addf9088888509366e9ab001de371534cf0", - "transactionType": "CREATE", - "contractName": "UniswapV2PriceOracle", - "contractAddress": "0xff77a62ADA5a37c2c500107DDc60F1292E030D85", - "function": null, - "arguments": null, - "transaction": { - "type": "0x02", - "from": "0x254e0b8ce09b571dbcc6e6e1f55a0c057f26e710", - "gas": "0x6d326", - "value": "0x0", - "data": "0x6080604052348015600e575f80fd5b506105468061001c5f395ff3fe608060405234801561000f575f80fd5b5060043610610029575f3560e01c8063355efdd91461002d575b5f80fd5b61004061003b366004610386565b610059565b6040805192835260208301919091520160405180910390f35b5f808061006884860186610411565b9050805f015173ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156100b6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100da91906104a2565b826dffffffffffffffffffffffffffff169250816dffffffffffffffffffffffffffff1691505080935081945050505f815f015173ffffffffffffffffffffffffffffffffffffffff16630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015610156573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061017a91906104ee565b90505f825f015173ffffffffffffffffffffffffffffffffffffffff1663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101c9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101ed91906104ee565b90508073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff160361022757929392905b8173ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff16146102c1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f6f7261636c653a20696e76616c696420746f6b656e300000000000000000000060448201526064015b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614610356576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f6f7261636c653a20696e76616c696420746f6b656e310000000000000000000060448201526064016102b8565b50505094509492505050565b73ffffffffffffffffffffffffffffffffffffffff81168114610383575f80fd5b50565b5f805f8060608587031215610399575f80fd5b84356103a481610362565b935060208501356103b481610362565b9250604085013567ffffffffffffffff808211156103d0575f80fd5b818701915087601f8301126103e3575f80fd5b8135818111156103f1575f80fd5b886020828501011115610402575f80fd5b95989497505060200194505050565b5f60208284031215610421575f80fd5b6040516020810181811067ffffffffffffffff82111715610469577f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604052823561047781610362565b81529392505050565b80516dffffffffffffffffffffffffffff8116811461049d575f80fd5b919050565b5f805f606084860312156104b4575f80fd5b6104bd84610480565b92506104cb60208501610480565b9150604084015163ffffffff811681146104e3575f80fd5b809150509250925092565b5f602082840312156104fe575f80fd5b815161050981610362565b939250505056fea26469706673582212204cbf3de6d25713817f80195812acb33b4c24b78149d1e68a6f0894ac1685cfdd64736f6c63430008190033", - "nonce": "0xd", - "accessList": [] - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x9b9836a6992dff16d955da49f26abc3e0678f6240f7a4a3d97054501d65ea297", - "transactionType": "CREATE", - "contractName": "BalancerWeightedPoolPriceOracle", - "contractAddress": "0x32dBede1bD6559D7d3ecf279D1207B47cE147137", - "function": null, - "arguments": [ - "0xBA12222222228d8Ba445958a75a0704d566BF2C8" - ], - "transaction": { - "type": "0x02", - "from": "0x254e0b8ce09b571dbcc6e6e1f55a0c057f26e710", - "gas": "0xe8051", - "value": "0x0", - "data": "0x6080604052348015600e575f80fd5b50604051610c65380380610c65833981016040819052602b91604e565b5f80546001600160a01b0319166001600160a01b03929092169190911790556079565b5f60208284031215605d575f80fd5b81516001600160a01b03811681146072575f80fd5b9392505050565b610bdf806100865f395ff3fe608060405234801561000f575f80fd5b506004361061003f575f3560e01c8063355efdd914610043578063b52d5b1e14610070578063fbfa77cf14610086575b5f80fd5b610056610051366004610801565b6100ca565b604080519283526020830191909152015b60405180910390f35b610078600e81565b604051908152602001610067565b5f546100a59073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610067565b5f808060608080836100de888a018a610908565b515f546040517ff6c009270000000000000000000000000000000000000000000000000000000081526004810183905291925073ffffffffffffffffffffffffffffffffffffffff169063f6c00927906024016040805180830381865afa925050508015610187575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261018491810190610948565b60015b610221573d8080156101b4576040519150601f19603f3d011682016040523d82523d5f602084013e6101b9565b606091505b506040517fc8fc272500000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f696e76616c696420706f6f6c206964000000000000000000000000000000000060448201526064015b60405180910390fd5b505f546040517ff94d46680000000000000000000000000000000000000000000000000000000081526004810184905291965073ffffffffffffffffffffffffffffffffffffffff169063f94d4668906024015f60405180830381865afa15801561028e573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526102d39190810190610a12565b5080945081955050508473ffffffffffffffffffffffffffffffffffffffff1663f89f27ed6040518163ffffffff1660e01b81526004015f60405180830381865afa92505050801561036457506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526103619190810190610ad9565b60015b6103f9573d808015610391576040519150601f19603f3d011682016040523d82523d5f602084013e610396565b606091505b506040517fc8fc272500000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f6e6f74206120776569676874656420706f6f6c000000000000000000000000006044820152606401610218565b9150505f805f805f5b875181101561050d575f88828151811061041e5761041e610b13565b602002602001015190508f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036104985786828151811061046d5761046d610b13565b6020026020010151955087828151811061048957610489610b13565b60200260200101519350610504565b8e73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610504578682815181106104dd576104dd610b13565b602002602001015194508782815181106104f9576104f9610b13565b602002602001015192505b50600101610402565b50835f03610577576040517fc8fc272500000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f706f6f6c20646f6573206e6f7420747261646520746f6b656e300000000000006044820152606401610218565b825f036105e0576040517fc8fc272500000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f706f6f6c20646f6573206e6f7420747261646520746f6b656e310000000000006044820152606401610218565b5f6105eb8484610b40565b90505f6105f88684610b40565b9050610604828261061b565b9b509b505050505050505050505094509492505050565b5f805f8084861115610631575084905083610637565b50839050845b5f6106438360016106ff565b90505f610650835f6106ff565b90506080821115806106635750600e8111155b1561067757878795509550505050506106f8565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8082017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8e83018210156106e957507ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff281015b88811c965087901c9450505050505b9250929050565b5f8061070a8461074a565b9050600183600281111561072057610720610b7c565b148015610730575083816001901b105b61073a575f61073d565b60015b60ff160190505b92915050565b5f80608083901c1561075e57608092831c92015b604083901c1561077057604092831c92015b602083901c1561078257602092831c92015b601083901c1561079457601092831c92015b600883901c156107a657600892831c92015b600483901c156107b857600492831c92015b600283901c156107ca57600292831c92015b600183901c156107445760010192915050565b73ffffffffffffffffffffffffffffffffffffffff811681146107fe575f80fd5b50565b5f805f8060608587031215610814575f80fd5b843561081f816107dd565b9350602085013561082f816107dd565b9250604085013567ffffffffffffffff8082111561084b575f80fd5b818701915087601f83011261085e575f80fd5b81358181111561086c575f80fd5b88602082850101111561087d575f80fd5b95989497505060200194505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156109005761090061088c565b604052919050565b5f60208284031215610918575f80fd5b6040516020810181811067ffffffffffffffff8211171561093b5761093b61088c565b6040529135825250919050565b5f8060408385031215610959575f80fd5b8251610964816107dd565b602084015190925060038110610978575f80fd5b809150509250929050565b5f67ffffffffffffffff82111561099c5761099c61088c565b5060051b60200190565b5f82601f8301126109b5575f80fd5b815160206109ca6109c583610983565b6108b9565b8083825260208201915060208460051b8701019350868411156109eb575f80fd5b602086015b84811015610a0757805183529183019183016109f0565b509695505050505050565b5f805f60608486031215610a24575f80fd5b835167ffffffffffffffff80821115610a3b575f80fd5b818601915086601f830112610a4e575f80fd5b81516020610a5e6109c583610983565b82815260059290921b8401810191818101908a841115610a7c575f80fd5b948201945b83861015610aa3578551610a94816107dd565b82529482019490820190610a81565b91890151919750909350505080821115610abb575f80fd5b50610ac8868287016109a6565b925050604084015190509250925092565b5f60208284031215610ae9575f80fd5b815167ffffffffffffffff811115610aff575f80fd5b610b0b848285016109a6565b949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b8082028115828204841417610744577f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffdfea2646970667358221220bae76dc8983e18caffc6c9508dd7b03510810e47543a2b7bb07b52aa88ae6b6164736f6c63430008190033000000000000000000000000ba12222222228d8ba445958a75a0704d566bf2c8", - "nonce": "0xe", - "accessList": [] - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x4a6ded6c5928a8e74daa6330408ab0532c8ab3b474cfac884261f16fb0ca659b", - "transactionType": "CREATE", - "contractName": "ChainlinkPriceOracle", - "contractAddress": "0xF54c4bcc34a8750382B8fB0f0EC6f1A6C785af9c", - "function": null, - "arguments": null, - "transaction": { - "type": "0x02", - "from": "0x254e0b8ce09b571dbcc6e6e1f55a0c057f26e710", - "gas": "0x93b54", - "value": "0x0", - "data": "0x6080604052348015600e575f80fd5b506107798061001c5f395ff3fe608060405234801561000f575f80fd5b5060043610610029575f3560e01c8063355efdd91461002d575b5f80fd5b61004061003b366004610402565b610059565b6040805192835260208301919091520160405180910390f35b5f808061006884860186610489565b90505f815f015190505f826020015190505f808373ffffffffffffffffffffffffffffffffffffffff1663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa1580156100c4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100e89190610537565b509350509250505f808473ffffffffffffffffffffffffffffffffffffffff1663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa15801561013a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061015e9190610537565b5060408b01519295509350429250610178905085836105b0565b1015806101925750604088015161018f83836105b0565b10155b156102145760608801516101a690426105c9565b604080517f7e33463700000000000000000000000000000000000000000000000000000000815260048101929092526024820152600c60448201527f7374616c65206f7261636c65000000000000000000000000000000000000000060648201526084015b60405180910390fd5b5f8773ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801561025e573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061028291906105dc565b60ff1690505f8773ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156102d1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102f591906105dc565b60ff16905060128211806103095750601281115b15610370576040517fc8fc272500000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f556e737570706f7274656420646563696d616c7320283e313829000000000000604482015260640161020b565b80820361038257849b50869a506103c7565b61038d8160126105b0565b61039890600a610721565b6103a2908661072c565b9b506103af8260126105b0565b6103ba90600a610721565b6103c4908861072c565b9a505b5050505050505050505094509492505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146103fd575f80fd5b919050565b5f805f8060608587031215610415575f80fd5b61041e856103da565b935061042c602086016103da565b9250604085013567ffffffffffffffff80821115610448575f80fd5b818701915087601f83011261045b575f80fd5b813581811115610469575f80fd5b88602082850101111561047a575f80fd5b95989497505060200194505050565b5f60808284031215610499575f80fd5b6040516080810181811067ffffffffffffffff821117156104e1577f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040526104ed836103da565b81526104fb602084016103da565b602082015260408301356040820152606083013560608201528091505092915050565b805169ffffffffffffffffffff811681146103fd575f80fd5b5f805f805f60a0868803121561054b575f80fd5b6105548661051e565b94506020860151935060408601519250606086015191506105776080870161051e565b90509295509295909350565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b818103818111156105c3576105c3610583565b92915050565b808201808211156105c3576105c3610583565b5f602082840312156105ec575f80fd5b815160ff811681146105fc575f80fd5b9392505050565b600181815b8085111561065c57817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561064257610642610583565b8085161561064f57918102915b93841c9390800290610608565b509250929050565b5f82610672575060016105c3565b8161067e57505f6105c3565b8160018114610694576002811461069e576106ba565b60019150506105c3565b60ff8411156106af576106af610583565b50506001821b6105c3565b5060208310610133831016604e8410600b84101617156106dd575081810a6105c3565b6106e78383610603565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561071957610719610583565b029392505050565b5f6105fc8383610664565b80820281158282048414176105c3576105c361058356fea264697066735822122075b0d6e4467e1e01e1870465db09540c101ee7e906096ed6f85733060584767d64736f6c63430008190033", - "nonce": "0xf", - "accessList": [] - }, - "additionalContracts": [], - "isFixedGasLimit": false - } - ], - "receipts": [ - { - "transactionHash": "0xf37fc438ddacb00c28305bd7dea3b79091cd5be3405a2b445717d9faf946fa50", - "transactionIndex": "0x7", - "blockHash": "0x7013c1f47f5af338719751bbcbbcb2cbf84670116a37ffa2daa7eee1a65efa1a", - "blockNumber": "0x12f11c0", - "from": "0x254e0B8ce09b571dBCc6e6E1f55a0c057F26E710", - "to": null, - "cumulativeGasUsed": "0x520192", - "gasUsed": "0x377c89", - "contractAddress": "0x40664207e3375FB4b733d4743CE9b159331fd034", - "logs": [], - "status": "0x1", - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "effectiveGasPrice": "0x59fb4d808" - }, - { - "transactionHash": "0x967564124beb451f546d2311e4b18addf9088888509366e9ab001de371534cf0", - "transactionIndex": "0xb", - "blockHash": "0x7013c1f47f5af338719751bbcbbcb2cbf84670116a37ffa2daa7eee1a65efa1a", - "blockNumber": "0x12f11c0", - "from": "0x254e0B8ce09b571dBCc6e6E1f55a0c057F26E710", - "to": null, - "cumulativeGasUsed": "0x5eb673", - "gasUsed": "0x53ff6", - "contractAddress": "0xff77a62ADA5a37c2c500107DDc60F1292E030D85", - "logs": [], - "status": "0x1", - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "effectiveGasPrice": "0x59fb4d808" - }, - { - "transactionHash": "0x9b9836a6992dff16d955da49f26abc3e0678f6240f7a4a3d97054501d65ea297", - "transactionIndex": "0xc", - "blockHash": "0x7013c1f47f5af338719751bbcbbcb2cbf84670116a37ffa2daa7eee1a65efa1a", - "blockNumber": "0x12f11c0", - "from": "0x254e0B8ce09b571dBCc6e6E1f55a0c057F26E710", - "to": null, - "cumulativeGasUsed": "0x69de14", - "gasUsed": "0xb27a1", - "contractAddress": "0x32dBede1bD6559D7d3ecf279D1207B47cE147137", - "logs": [], - "status": "0x1", - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "effectiveGasPrice": "0x59fb4d808" - }, - { - "transactionHash": "0x4a6ded6c5928a8e74daa6330408ab0532c8ab3b474cfac884261f16fb0ca659b", - "transactionIndex": "0xd", - "blockHash": "0x7013c1f47f5af338719751bbcbbcb2cbf84670116a37ffa2daa7eee1a65efa1a", - "blockNumber": "0x12f11c0", - "from": "0x254e0B8ce09b571dBCc6e6E1f55a0c057F26E710", - "to": null, - "cumulativeGasUsed": "0x70f806", - "gasUsed": "0x719f2", - "contractAddress": "0xF54c4bcc34a8750382B8fB0f0EC6f1A6C785af9c", - "logs": [], - "status": "0x1", - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "effectiveGasPrice": "0x59fb4d808" - } - ], - "libraries": [], - "pending": [], - "returns": {}, - "timestamp": 1715613714, - "chain": 1, - "multi": false, - "commit": "5718abc" -} \ No newline at end of file diff --git a/broadcast/DeployAllContracts.s.sol/100/run-1715348175.json b/broadcast/DeployAllContracts.s.sol/100/run-1715348175.json deleted file mode 100644 index c1790a3..0000000 --- a/broadcast/DeployAllContracts.s.sol/100/run-1715348175.json +++ /dev/null @@ -1,164 +0,0 @@ -{ - "transactions": [ - { - "hash": "0x4121efab4ad58ae7ad73b50448cccae0de92905e181648e5e08de3d6d9c66083", - "transactionType": "CREATE", - "contractName": "ConstantProductFactory", - "contractAddress": "0xdb1cba3a87f2db53b6e1e6af48e28ed877592ec0", - "function": null, - "arguments": [ - "0x9008D19f58AAbD9eD0D60971565AA8510560ab41" - ], - "transaction": { - "from": "0x75c35dfd35775f1241f6de49ada78fda82308bc9", - "to": null, - "gas": "0x4821e5", - "value": "0x0", - "input": "0x60a0604052348015600e575f80fd5b506040516141b33803806141b3833981016040819052602b91603b565b6001600160a01b03166080526066565b5f60208284031215604a575f80fd5b81516001600160a01b0381168114605f575f80fd5b9392505050565b60805161412761008c5f395f8181610189015281816102a801526108c401526141275ff3fe608060405234801561000f575f80fd5b506004361061009f575f3560e01c806337ebdf5011610072578063666e1b3911610058578063666e1b391461014f578063ab221a7614610184578063b5c5f672146101ab575f80fd5b806337ebdf50146101295780635b5d9ee61461013c575f80fd5b80630efe6a8b146100a357806322b155c6146100b857806326e0a196146100f55780632791056514610116575b5f80fd5b6100b66100b13660046111ea565b6101be565b005b6100cb6100c6366004611261565b6102a3565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6101086101033660046112fb565b61045f565b6040516100ec9291906114fd565b6100b6610124366004611527565b610797565b6100cb610137366004611549565b61082f565b6100b661014a366004611591565b610a01565b6100cb61015d366004611527565b5f6020819052908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6100cb7f000000000000000000000000000000000000000000000000000000000000000081565b6100b66101b93660046111ea565b610b17565b61024f3384848673ffffffffffffffffffffffffffffffffffffffff16630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa15801561020d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102319190611617565b73ffffffffffffffffffffffffffffffffffffffff16929190610c46565b61029e3384838673ffffffffffffffffffffffffffffffffffffffff1663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa15801561020d573d5f803e3d5ffd5b505050565b5f33807f00000000000000000000000000000000000000000000000000000000000000008c8b6040516102d5906111b9565b73ffffffffffffffffffffffffffffffffffffffff9384168152918316602083015290911660408201526060018190604051809103905ff590508015801561031f573d5f803e3d5ffd5b506040805173ffffffffffffffffffffffffffffffffffffffff8e811682528c81166020830152929450828416928516917f6707255b2c5ca81220b2f3e408a269cb83baa6aa7e5e37aa1756883a6cdf06f1910160405180910390a373ffffffffffffffffffffffffffffffffffffffff8281165f90815260208190526040902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169183169190911790556103d8828b8a6101be565b5f60405180608001604052808981526020018873ffffffffffffffffffffffffffffffffffffffff16815260200187878080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525050509082525060200185905290506104508382610cdb565b50509998505050505050505050565b60408051610180810182525f80825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081018290526101008101829052610120810182905261014081018290526101608101919091526060306104cf6020890189611527565b73ffffffffffffffffffffffffffffffffffffffff1614610551576040517fc8fc272500000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f63616e206f6e6c792068616e646c65206f776e206f726465727300000000000060448201526064015b60405180910390fd5b5f61055f6040890189611632565b81019061056c919061175c565b90508873ffffffffffffffffffffffffffffffffffffffff1663eec50b976040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105b7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105db919061185a565b6040517fb09aaaca00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8b169063b09aaaca9061062d9085906004016118c3565b602060405180830381865afa158015610648573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061066c919061185a565b146106d3576040517fc8fc272500000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f696e76616c69642074726164696e6720706172616d65746572730000000000006044820152606401610548565b6040517fe3e6f5b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a169063e3e6f5b2906107259084906004016118c3565b61018060405180830381865afa158015610741573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061076591906118f7565b9250828160405160200161077a9291906119b3565b604051602081830303815290604052915050965096945050505050565b73ffffffffffffffffffffffffffffffffffffffff8082165f9081526020819052604090205482911633146108225773ffffffffffffffffffffffffffffffffffffffff8181165f90815260208190526040908190205490517f68bafff800000000000000000000000000000000000000000000000000000000815291166004820152602401610548565b61082b82610e05565b5050565b5f807fff000000000000000000000000000000000000000000000000000000000000003073ffffffffffffffffffffffffffffffffffffffff8716604051610879602082016111b9565b8181037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09081018352601f90910116604081815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000081166020840152808b169183019190915288166060820152608001604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905261093a92916020016119eb565b604051602081830303815290604052805190602001206040516020016109c294939291907fff0000000000000000000000000000000000000000000000000000000000000094909416845260609290921b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660018401526015830152603582015260550190565b604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0018152919052805160209091012095945050505050565b73ffffffffffffffffffffffffffffffffffffffff8087165f908152602081905260409020548791163314610a8c5773ffffffffffffffffffffffffffffffffffffffff8181165f90815260208190526040908190205490517f68bafff800000000000000000000000000000000000000000000000000000000815291166004820152602401610548565b5f60405180608001604052808881526020018773ffffffffffffffffffffffffffffffffffffffff16815260200186868080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505050908252506020018490529050610b0388610e05565b610b0d8882610cdb565b5050505050505050565b73ffffffffffffffffffffffffffffffffffffffff8084165f908152602081905260409020548491163314610ba25773ffffffffffffffffffffffffffffffffffffffff8181165f90815260208190526040908190205490517f68bafff800000000000000000000000000000000000000000000000000000000815291166004820152602401610548565b610bf18433858773ffffffffffffffffffffffffffffffffffffffff16630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa15801561020d573d5f803e3d5ffd5b610c408433848773ffffffffffffffffffffffffffffffffffffffff1663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa15801561020d573d5f803e3d5ffd5b50505050565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd00000000000000000000000000000000000000000000000000000000179052610c40908590610ea3565b6040517fc5f3d25400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83169063c5f3d25490610d2d9084906004016118c3565b5f604051808303815f87803b158015610d44575f80fd5b505af1158015610d56573d5f803e3d5ffd5b5050604080516060810182523081525f6020808301829052835191955073ffffffffffffffffffffffffffffffffffffffff881694507f2cceac5555b0ca45a3744ced542f54b56ad2eb45e521962372eef212a2cbf36193830191610dbd918891016118c3565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152918152915251610df891906119ff565b60405180910390a2505050565b8073ffffffffffffffffffffffffffffffffffffffff166317700f016040518163ffffffff1660e01b81526004015f604051808303815f87803b158015610e4a575f80fd5b505af1158015610e5c573d5f803e3d5ffd5b505060405173ffffffffffffffffffffffffffffffffffffffff841692507fc75bf4f03c02fab9414a7d7a54048c0486722bc72f33ad924709a0593608ad2791505f90a250565b5f610f04826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16610fb09092919063ffffffff16565b905080515f1480610f24575080806020019051810190610f249190611a43565b61029e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610548565b6060610fbe84845f85610fc6565b949350505050565b606082471015611058576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610548565b5f808673ffffffffffffffffffffffffffffffffffffffff1685876040516110809190611a5c565b5f6040518083038185875af1925050503d805f81146110ba576040519150601f19603f3d011682016040523d82523d5f602084013e6110bf565b606091505b50915091506110d0878383876110db565b979650505050505050565b606083156111705782515f036111695773ffffffffffffffffffffffffffffffffffffffff85163b611169576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610548565b5081610fbe565b610fbe83838151156111855781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105489190611a67565b61267880611a7a83390190565b73ffffffffffffffffffffffffffffffffffffffff811681146111e7575f80fd5b50565b5f805f606084860312156111fc575f80fd5b8335611207816111c6565b95602085013595506040909401359392505050565b5f8083601f84011261122c575f80fd5b50813567ffffffffffffffff811115611243575f80fd5b60208301915083602082850101111561125a575f80fd5b9250929050565b5f805f805f805f805f6101008a8c03121561127a575f80fd5b8935611285816111c6565b985060208a0135975060408a013561129c816111c6565b965060608a0135955060808a0135945060a08a01356112ba816111c6565b935060c08a013567ffffffffffffffff8111156112d5575f80fd5b6112e18c828d0161121c565b9a9d999c50979a9699959894979660e00135949350505050565b5f805f805f8060808789031215611310575f80fd5b863561131b816111c6565b9550602087013567ffffffffffffffff80821115611337575f80fd5b908801906060828b03121561134a575f80fd5b9095506040880135908082111561135f575f80fd5b61136b8a838b0161121c565b90965094506060890135915080821115611383575f80fd5b818901915089601f830112611396575f80fd5b8135818111156113a4575f80fd5b8a60208260051b85010111156113b8575f80fd5b6020830194508093505050509295509295509295565b805173ffffffffffffffffffffffffffffffffffffffff168252602081015161140f602084018273ffffffffffffffffffffffffffffffffffffffff169052565b506040810151611437604084018273ffffffffffffffffffffffffffffffffffffffff169052565b50606081015160608301526080810151608083015260a081015161146360a084018263ffffffff169052565b5060c081015160c083015260e081015160e0830152610100808201518184015250610120808201516114988285018215159052565b5050610140818101519083015261016090810151910152565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b5f6101a061150b83866113ce565b8061018084015261151e818401856114b1565b95945050505050565b5f60208284031215611537575f80fd5b8135611542816111c6565b9392505050565b5f805f6060848603121561155b575f80fd5b8335611566816111c6565b92506020840135611576816111c6565b91506040840135611586816111c6565b809150509250925092565b5f805f805f8060a087890312156115a6575f80fd5b86356115b1816111c6565b95506020870135945060408701356115c8816111c6565b9350606087013567ffffffffffffffff8111156115e3575f80fd5b6115ef89828a0161121c565b979a9699509497949695608090950135949350505050565b8051611612816111c6565b919050565b5f60208284031215611627575f80fd5b8151611542816111c6565b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611665575f80fd5b83018035915067ffffffffffffffff82111561167f575f80fd5b60200191503681900382131561125a575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040516080810167ffffffffffffffff811182821017156116e3576116e3611693565b60405290565b604051610180810167ffffffffffffffff811182821017156116e3576116e3611693565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561175457611754611693565b604052919050565b5f602080838503121561176d575f80fd5b823567ffffffffffffffff80821115611784575f80fd5b9084019060808287031215611797575f80fd5b61179f6116c0565b82358152838301356117b0816111c6565b818501526040830135828111156117c5575f80fd5b8301601f810188136117d5575f80fd5b8035838111156117e7576117e7611693565b611817867fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160161170d565b9350808452888682840101111561182c575f80fd5b80868301878601375f8682860101525050816040820152606083013560608201528094505050505092915050565b5f6020828403121561186a575f80fd5b5051919050565b8051825273ffffffffffffffffffffffffffffffffffffffff60208201511660208301525f6040820151608060408501526118af60808501826114b1565b606093840151949093019390935250919050565b602081525f6115426020830184611871565b805163ffffffff81168114611612575f80fd5b80518015158114611612575f80fd5b5f6101808284031215611908575f80fd5b6119106116e9565b61191983611607565b815261192760208401611607565b602082015261193860408401611607565b6040820152606083015160608201526080830151608082015261195d60a084016118d5565b60a082015260c083015160c082015260e083015160e08201526101008084015181830152506101206119908185016118e8565b908201526101408381015190820152610160928301519281019290925250919050565b5f6101a06119c183866113ce565b8061018084015261151e81840185611871565b5f81518060208401855e5f93019283525090919050565b5f610fbe6119f983866119d4565b846119d4565b6020815273ffffffffffffffffffffffffffffffffffffffff8251166020820152602082015160408201525f6040830151606080840152610fbe60808401826114b1565b5f60208284031215611a53575f80fd5b611542826118e8565b5f61154282846119d4565b602081525f61154260208301846114b156fe610120604052348015610010575f80fd5b5060405161267838038061267883398101604081905261002f9161052f565b6001600160a01b03831660808190526040805163f698da2560e01b8152905163f698da259160048082019260209290919082900301815f875af1158015610078573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061009c9190610579565b610100526100aa823361015f565b6100b4813361015f565b336001600160a01b031660e0816001600160a01b0316815250505f836001600160a01b0316639b552cc26040518163ffffffff1660e01b81526004016020604051808303815f875af115801561010c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101309190610590565b905061013c838261015f565b610146828261015f565b506001600160a01b0391821660a0521660c0525061061c565b6101746001600160a01b038316825f19610178565b5050565b8015806101f05750604051636eb1769f60e11b81523060048201526001600160a01b03838116602483015284169063dd62ed3e90604401602060405180830381865afa1580156101ca573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101ee9190610579565b155b6102675760405162461bcd60e51b815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527f20746f206e6f6e2d7a65726f20616c6c6f77616e63650000000000000000000060648201526084015b60405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b0390811663095ea7b360e01b179091526102bd9185916102c216565b505050565b6040805180820190915260208082527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564908201525f9061030e906001600160a01b03851690849061038d565b905080515f148061032e57508080602001905181019061032e91906105b2565b6102bd5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161025e565b606061039b84845f856103a3565b949350505050565b6060824710156104045760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b606482015260840161025e565b5f80866001600160a01b0316858760405161041f91906105d1565b5f6040518083038185875af1925050503d805f8114610459576040519150601f19603f3d011682016040523d82523d5f602084013e61045e565b606091505b5090925090506104708783838761047b565b979650505050505050565b606083156104e95782515f036104e2576001600160a01b0385163b6104e25760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161025e565b508161039b565b61039b83838151156104fe5781518083602001fd5b8060405162461bcd60e51b815260040161025e91906105e7565b6001600160a01b038116811461052c575f80fd5b50565b5f805f60608486031215610541575f80fd5b835161054c81610518565b602085015190935061055d81610518565b604085015190925061056e81610518565b809150509250925092565b5f60208284031215610589575f80fd5b5051919050565b5f602082840312156105a0575f80fd5b81516105ab81610518565b9392505050565b5f602082840312156105c2575f80fd5b815180151581146105ab575f80fd5b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b60805160a05160c05160e05161010051611fbd6106bb5f395f81816102db015261042b01525f8181610236015281816104d90152610bf901525f81816102b40152818161059901528181610d5c01528181610ebf01528181610f8e015261100d01525f81816101380152818161057701528181610d3b01528181610e2801528181610f6b015261103001525f818161032201526112140152611fbd5ff3fe608060405234801561000f575f80fd5b506004361061012f575f3560e01c8063b09aaaca116100ad578063e3e6f5b21161007d578063eec50b9711610063578063eec50b9714610344578063f14fcbc81461034c578063ff2dbc9814610203575f80fd5b8063e3e6f5b2146102fd578063e516715b1461031d575f80fd5b8063b09aaaca14610289578063c5f3d2541461029c578063d21220a7146102af578063d25e0cb6146102d6575f80fd5b80631c7de94111610102578063481c6a75116100e8578063481c6a7514610231578063981a160b14610258578063a029a8d414610276575f80fd5b80631c7de941146102035780633e706e321461020a575f80fd5b80630dfe1681146101335780631303a484146101845780631626ba7e146101b557806317700f01146101f9575b5f80fd5b61015a7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b7f6c3c90245457060f6517787b2c4b8cf500ca889d2304af02043bd5b513e3b5935c5b60405190815260200161017b565b6101c86101c33660046116bf565b61035f565b6040517fffffffff00000000000000000000000000000000000000000000000000000000909116815260200161017b565b6102016104d7565b005b6101a75f81565b6101a77f6c3c90245457060f6517787b2c4b8cf500ca889d2304af02043bd5b513e3b59381565b61015a7f000000000000000000000000000000000000000000000000000000000000000081565b61026161012c81565b60405163ffffffff909116815260200161017b565b6102016102843660046119ee565b610573565b6101a7610297366004611a3b565b610bc8565b6102016102aa366004611a75565b610bf7565b61015a7f000000000000000000000000000000000000000000000000000000000000000081565b6101a77f000000000000000000000000000000000000000000000000000000000000000081565b61031061030b366004611a3b565b610cb7565b60405161017b9190611aac565b61015a7f000000000000000000000000000000000000000000000000000000000000000081565b6101a75f5481565b61020161035a366004611b9a565b6111fc565b5f808061036e84860186611bb1565b915091505f5461037d82610bc8565b146103b4576040517ff1a6789000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0820180517fd5a25ba2e97094ad7d83dc28a6572da797d6b3e7fc6663bd93efb789fc17e48982526101a0822091526040517f190100000000000000000000000000000000000000000000000000000000000081527f00000000000000000000000000000000000000000000000000000000000000006002820152602281019190915260429020868114610494576040517f593fcacd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61049f818385611291565b6104a98284610573565b507f1626ba7e00000000000000000000000000000000000000000000000000000000925050505b9392505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163314610546576040517ff87d0d1600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8080556040517fbcb8b8fbdea8aa6dc4ae41213e4da81e605a3d1a56ed851b9355182321c091909190a1565b80517f0000000000000000000000000000000000000000000000000000000000000000907f00000000000000000000000000000000000000000000000000000000000000009073ffffffffffffffffffffffffffffffffffffffff808416911614610677578073ffffffffffffffffffffffffffffffffffffffff16835f015173ffffffffffffffffffffffffffffffffffffffff1614610675576040517fc8fc272500000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f696e76616c69642073656c6c20746f6b656e000000000000000000000000000060448201526064015b60405180910390fd5b905b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201525f9073ffffffffffffffffffffffffffffffffffffffff8416906370a0823190602401602060405180830381865afa1580156106e1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107059190611bff565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529091505f9073ffffffffffffffffffffffffffffffffffffffff8416906370a0823190602401602060405180830381865afa158015610772573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107969190611bff565b90508273ffffffffffffffffffffffffffffffffffffffff16856020015173ffffffffffffffffffffffffffffffffffffffff1614610831576040517fc8fc272500000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f696e76616c69642062757920746f6b656e000000000000000000000000000000604482015260640161066c565b604085015173ffffffffffffffffffffffffffffffffffffffff16156108b3576040517fc8fc272500000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f7265636569766572206d757374206265207a65726f2061646472657373000000604482015260640161066c565b6108bf61012c42611c43565b8560a0015163ffffffff161115610932576040517fc8fc272500000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f76616c696469747920746f6f2066617220696e20746865206675747572650000604482015260640161066c565b85606001518560c00151146109a3576040517fc8fc272500000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f696e76616c696420617070446174610000000000000000000000000000000000604482015260640161066c565b60e085015115610a0f576040517fc8fc272500000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f66656520616d6f756e74206d757374206265207a65726f000000000000000000604482015260640161066c565b7f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc985610160015114610a9d576040517fc8fc272500000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f627579546f6b656e42616c616e6365206d757374206265206572633230000000604482015260640161066c565b7f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc985610140015114610b2b576040517fc8fc272500000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f73656c6c546f6b656e42616c616e6365206d7573742062652065726332300000604482015260640161066c565b6060850151610b3a9082611c56565b60808601516060870151610b4e9085611c6d565b610b589190611c56565b1015610bc0576040517fc8fc272500000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f726563656976656420616d6f756e7420746f6f206c6f77000000000000000000604482015260640161066c565b505050505050565b5f81604051602001610bda9190611ccc565b604051602081830303815290604052805190602001209050919050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163314610c66576040517ff87d0d1600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f610c7361029783611d27565b9050805f81905550807f510e4a4f76907c2d6158b343f7c4f2f597df385b727c26e9ef90e75093ace19a83604051610cab9190611d79565b60405180910390a25050565b60408051610180810182525f80825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081018290526101008101829052610120810182905261014081018290526101608101919091525f80836020015173ffffffffffffffffffffffffffffffffffffffff1663355efdd97f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000087604001516040518463ffffffff1660e01b8152600401610d9e93929190611e3a565b6040805180830381865afa158015610db8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ddc9190611e72565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015291935091505f90819073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa158015610e6d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e919190611bff565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa158015610f19573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f3d9190611bff565b90925090505f80808080610f518888611c56565b90505f610f5e8a88611c56565b90505f8282101561100b577f000000000000000000000000000000000000000000000000000000000000000096507f00000000000000000000000000000000000000000000000000000000000000009550610fd6610fbd60028b611ec1565b610fd184610fcc8e6002611c56565b611346565b61137e565b945061100185610fe6818d611c56565b610ff09085611c43565b610ffa8c8f611c56565b60016113cb565b9350849050611098565b7f000000000000000000000000000000000000000000000000000000000000000096507f0000000000000000000000000000000000000000000000000000000000000000955061106e61105f60028a611ec1565b610fd185610fcc8f6002611c56565b94506110928561107e818e611c56565b6110889086611c43565b610ffa8b8e611c56565b93508390505b8c518110156110df576110df6040518060400160405280601781526020017f74726164656420616d6f756e7420746f6f20736d616c6c000000000000000000815250611426565b6040518061018001604052808873ffffffffffffffffffffffffffffffffffffffff1681526020018773ffffffffffffffffffffffffffffffffffffffff1681526020015f73ffffffffffffffffffffffffffffffffffffffff16815260200186815260200185815260200161115661012c611466565b63ffffffff1681526020018e6060015181526020015f81526020017ff3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee34677581526020016001151581526020017f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc981526020017f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc98152509b505050505050505050505050919050565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461126b576040517fbf84897700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b807f6c3c90245457060f6517787b2c4b8cf500ca889d2304af02043bd5b513e3b5935d50565b7f6c3c90245457060f6517787b2c4b8cf500ca889d2304af02043bd5b513e3b5935c8381146113405780156112f2576040517fdafbdd1f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6112fc84610cb7565b90506113088382611487565b61133e576040517fd9ff24c700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505b50505050565b5f82156113735781611359600185611c6d565b6113639190611ec1565b61136e906001611c43565b611375565b5f5b90505b92915050565b5f818310156113c5576113c56040518060400160405280601581526020017f7375627472616374696f6e20756e646572666c6f770000000000000000000000815250611426565b50900390565b5f806113d8868686611599565b905060018360028111156113ee576113ee611ed4565b14801561140a57505f848061140557611405611e94565b868809115b1561141d5761141a600182611c43565b90505b95945050505050565b611431436001611c43565b816040517f1fe8506e00000000000000000000000000000000000000000000000000000000815260040161066c929190611f01565b5f81806114738142611f19565b61147d9190611f3b565b6113789190611f63565b5f80825f015173ffffffffffffffffffffffffffffffffffffffff16845f015173ffffffffffffffffffffffffffffffffffffffff161490505f836020015173ffffffffffffffffffffffffffffffffffffffff16856020015173ffffffffffffffffffffffffffffffffffffffff161490505f846060015186606001511490505f856080015187608001511490505f8660a0015163ffffffff168860a0015163ffffffff161490505f8761010001518961010001511490505f88610120015115158a6101200151151514905086801561155e5750855b80156115675750845b80156115705750835b80156115795750825b80156115825750815b801561158b5750805b9a9950505050505050505050565b5f80807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff858709858702925082811083820303915050805f036115ef578382816115e5576115e5611e94565b04925050506104d0565b808411611658576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4d6174683a206d756c446976206f766572666c6f770000000000000000000000604482015260640161066c565b5f8486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091025f889003889004909101858311909403939093029303949094049190911702949350505050565b5f805f604084860312156116d1575f80fd5b83359250602084013567ffffffffffffffff808211156116ef575f80fd5b818601915086601f830112611702575f80fd5b813581811115611710575f80fd5b876020828501011115611721575f80fd5b6020830194508093505050509250925092565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040516080810167ffffffffffffffff8111828210171561178457611784611734565b60405290565b604051610180810167ffffffffffffffff8111828210171561178457611784611734565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156117f5576117f5611734565b604052919050565b73ffffffffffffffffffffffffffffffffffffffff8116811461181e575f80fd5b50565b5f60808284031215611831575f80fd5b611839611761565b90508135815260208083013561184e816117fd565b82820152604083013567ffffffffffffffff8082111561186c575f80fd5b818501915085601f83011261187f575f80fd5b81358181111561189157611891611734565b6118c1847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016117ae565b915080825286848285010111156118d6575f80fd5b80848401858401375f848284010152508060408501525050506060820135606082015292915050565b803561190a816117fd565b919050565b803563ffffffff8116811461190a575f80fd5b8035801515811461190a575f80fd5b5f6101808284031215611942575f80fd5b61194a61178a565b9050611955826118ff565b8152611963602083016118ff565b6020820152611974604083016118ff565b6040820152606082013560608201526080820135608082015261199960a0830161190f565b60a082015260c082013560c082015260e082013560e08201526101008083013581830152506101206119cc818401611922565b9082015261014082810135908201526101609182013591810191909152919050565b5f806101a08385031215611a00575f80fd5b823567ffffffffffffffff811115611a16575f80fd5b611a2285828601611821565b925050611a328460208501611931565b90509250929050565b5f60208284031215611a4b575f80fd5b813567ffffffffffffffff811115611a61575f80fd5b611a6d84828501611821565b949350505050565b5f60208284031215611a85575f80fd5b813567ffffffffffffffff811115611a9b575f80fd5b8201608081850312156104d0575f80fd5b815173ffffffffffffffffffffffffffffffffffffffff16815261018081016020830151611af2602084018273ffffffffffffffffffffffffffffffffffffffff169052565b506040830151611b1a604084018273ffffffffffffffffffffffffffffffffffffffff169052565b50606083015160608301526080830151608083015260a0830151611b4660a084018263ffffffff169052565b5060c083015160c083015260e083015160e083015261010080840151818401525061012080840151611b7b8285018215159052565b5050610140838101519083015261016092830151929091019190915290565b5f60208284031215611baa575f80fd5b5035919050565b5f806101a08385031215611bc3575f80fd5b611bcd8484611931565b915061018083013567ffffffffffffffff811115611be9575f80fd5b611bf585828601611821565b9150509250929050565b5f60208284031215611c0f575f80fd5b5051919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b8082018082111561137857611378611c16565b808202811582820484141761137857611378611c16565b8181038181111561137857611378611c16565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081528151602082015273ffffffffffffffffffffffffffffffffffffffff60208301511660408201525f604083015160806060840152611d1160a0840182611c80565b9050606084015160808401528091505092915050565b5f6113783683611821565b81835281816020850137505f602082840101525f60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60208152813560208201525f6020830135611d93816117fd565b73ffffffffffffffffffffffffffffffffffffffff811660408401525060408301357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611de4575f80fd5b830160208101903567ffffffffffffffff811115611e00575f80fd5b803603821315611e0e575f80fd5b60806060850152611e2360a085018284611d32565b915050606084013560808401528091505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff80861683528085166020840152506060604083015261141d6060830184611c80565b5f8060408385031215611e83575f80fd5b505080516020909101519092909150565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f82611ecf57611ecf611e94565b500490565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b828152604060208201525f611a6d6040830184611c80565b5f63ffffffff80841680611f2f57611f2f611e94565b92169190910492915050565b63ffffffff818116838216028082169190828114611f5b57611f5b611c16565b505092915050565b63ffffffff818116838216019080821115611f8057611f80611c16565b509291505056fea2646970667358221220007787385571c489d2d3dd1067df9d880b4dcbadc90929009db8bacadf24c59c64736f6c63430008190033a2646970667358221220c0204c7751d8f2123ca68d540faf4dc94182742afb6653be6fc250385d038cf964736f6c634300081900330000000000000000000000009008d19f58aabd9ed0d60971565aa8510560ab41", - "nonce": "0x8", - "chainId": "0x64", - "accessList": null, - "type": null - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0xf1a5eedd250dc75d6b632671a3e2fcafa153ccdc389aa6148e214f11a75fef48", - "transactionType": "CREATE", - "contractName": "UniswapV2PriceOracle", - "contractAddress": "0x2145a393887b12f1fe7909d2d0c11dcdb53057ed", - "function": null, - "arguments": null, - "transaction": { - "from": "0x75c35dfd35775f1241f6de49ada78fda82308bc9", - "to": null, - "gas": "0x6d326", - "value": "0x0", - "input": "0x6080604052348015600e575f80fd5b506105468061001c5f395ff3fe608060405234801561000f575f80fd5b5060043610610029575f3560e01c8063355efdd91461002d575b5f80fd5b61004061003b366004610386565b610059565b6040805192835260208301919091520160405180910390f35b5f808061006884860186610411565b9050805f015173ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156100b6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100da91906104a2565b826dffffffffffffffffffffffffffff169250816dffffffffffffffffffffffffffff1691505080935081945050505f815f015173ffffffffffffffffffffffffffffffffffffffff16630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015610156573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061017a91906104ee565b90505f825f015173ffffffffffffffffffffffffffffffffffffffff1663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101c9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101ed91906104ee565b90508073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff160361022757929392905b8173ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff16146102c1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f6f7261636c653a20696e76616c696420746f6b656e300000000000000000000060448201526064015b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614610356576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f6f7261636c653a20696e76616c696420746f6b656e310000000000000000000060448201526064016102b8565b50505094509492505050565b73ffffffffffffffffffffffffffffffffffffffff81168114610383575f80fd5b50565b5f805f8060608587031215610399575f80fd5b84356103a481610362565b935060208501356103b481610362565b9250604085013567ffffffffffffffff808211156103d0575f80fd5b818701915087601f8301126103e3575f80fd5b8135818111156103f1575f80fd5b886020828501011115610402575f80fd5b95989497505060200194505050565b5f60208284031215610421575f80fd5b6040516020810181811067ffffffffffffffff82111715610469577f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604052823561047781610362565b81529392505050565b80516dffffffffffffffffffffffffffff8116811461049d575f80fd5b919050565b5f805f606084860312156104b4575f80fd5b6104bd84610480565b92506104cb60208501610480565b9150604084015163ffffffff811681146104e3575f80fd5b809150509250925092565b5f602082840312156104fe575f80fd5b815161050981610362565b939250505056fea26469706673582212204cbf3de6d25713817f80195812acb33b4c24b78149d1e68a6f0894ac1685cfdd64736f6c63430008190033", - "nonce": "0x9", - "chainId": "0x64", - "accessList": null, - "type": null - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x50dcc1d75d2eeb92476d12a4e40da8fd73797ab25ff2fbaab327c022ddaa2123", - "transactionType": "CREATE", - "contractName": "BalancerWeightedPoolPriceOracle", - "contractAddress": "0x7ede1f69ccbf38ae4a0c2d53d8868a55f4311ba2", - "function": null, - "arguments": [ - "0xBA12222222228d8Ba445958a75a0704d566BF2C8" - ], - "transaction": { - "from": "0x75c35dfd35775f1241f6de49ada78fda82308bc9", - "to": null, - "gas": "0xe8051", - "value": "0x0", - "input": "0x6080604052348015600e575f80fd5b50604051610c65380380610c65833981016040819052602b91604e565b5f80546001600160a01b0319166001600160a01b03929092169190911790556079565b5f60208284031215605d575f80fd5b81516001600160a01b03811681146072575f80fd5b9392505050565b610bdf806100865f395ff3fe608060405234801561000f575f80fd5b506004361061003f575f3560e01c8063355efdd914610043578063b52d5b1e14610070578063fbfa77cf14610086575b5f80fd5b610056610051366004610801565b6100ca565b604080519283526020830191909152015b60405180910390f35b610078600e81565b604051908152602001610067565b5f546100a59073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610067565b5f808060608080836100de888a018a610908565b515f546040517ff6c009270000000000000000000000000000000000000000000000000000000081526004810183905291925073ffffffffffffffffffffffffffffffffffffffff169063f6c00927906024016040805180830381865afa925050508015610187575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261018491810190610948565b60015b610221573d8080156101b4576040519150601f19603f3d011682016040523d82523d5f602084013e6101b9565b606091505b506040517fc8fc272500000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f696e76616c696420706f6f6c206964000000000000000000000000000000000060448201526064015b60405180910390fd5b505f546040517ff94d46680000000000000000000000000000000000000000000000000000000081526004810184905291965073ffffffffffffffffffffffffffffffffffffffff169063f94d4668906024015f60405180830381865afa15801561028e573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526102d39190810190610a12565b5080945081955050508473ffffffffffffffffffffffffffffffffffffffff1663f89f27ed6040518163ffffffff1660e01b81526004015f60405180830381865afa92505050801561036457506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526103619190810190610ad9565b60015b6103f9573d808015610391576040519150601f19603f3d011682016040523d82523d5f602084013e610396565b606091505b506040517fc8fc272500000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f6e6f74206120776569676874656420706f6f6c000000000000000000000000006044820152606401610218565b9150505f805f805f5b875181101561050d575f88828151811061041e5761041e610b13565b602002602001015190508f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036104985786828151811061046d5761046d610b13565b6020026020010151955087828151811061048957610489610b13565b60200260200101519350610504565b8e73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610504578682815181106104dd576104dd610b13565b602002602001015194508782815181106104f9576104f9610b13565b602002602001015192505b50600101610402565b50835f03610577576040517fc8fc272500000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f706f6f6c20646f6573206e6f7420747261646520746f6b656e300000000000006044820152606401610218565b825f036105e0576040517fc8fc272500000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f706f6f6c20646f6573206e6f7420747261646520746f6b656e310000000000006044820152606401610218565b5f6105eb8484610b40565b90505f6105f88684610b40565b9050610604828261061b565b9b509b505050505050505050505094509492505050565b5f805f8084861115610631575084905083610637565b50839050845b5f6106438360016106ff565b90505f610650835f6106ff565b90506080821115806106635750600e8111155b1561067757878795509550505050506106f8565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8082017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8e83018210156106e957507ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff281015b88811c965087901c9450505050505b9250929050565b5f8061070a8461074a565b9050600183600281111561072057610720610b7c565b148015610730575083816001901b105b61073a575f61073d565b60015b60ff160190505b92915050565b5f80608083901c1561075e57608092831c92015b604083901c1561077057604092831c92015b602083901c1561078257602092831c92015b601083901c1561079457601092831c92015b600883901c156107a657600892831c92015b600483901c156107b857600492831c92015b600283901c156107ca57600292831c92015b600183901c156107445760010192915050565b73ffffffffffffffffffffffffffffffffffffffff811681146107fe575f80fd5b50565b5f805f8060608587031215610814575f80fd5b843561081f816107dd565b9350602085013561082f816107dd565b9250604085013567ffffffffffffffff8082111561084b575f80fd5b818701915087601f83011261085e575f80fd5b81358181111561086c575f80fd5b88602082850101111561087d575f80fd5b95989497505060200194505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156109005761090061088c565b604052919050565b5f60208284031215610918575f80fd5b6040516020810181811067ffffffffffffffff8211171561093b5761093b61088c565b6040529135825250919050565b5f8060408385031215610959575f80fd5b8251610964816107dd565b602084015190925060038110610978575f80fd5b809150509250929050565b5f67ffffffffffffffff82111561099c5761099c61088c565b5060051b60200190565b5f82601f8301126109b5575f80fd5b815160206109ca6109c583610983565b6108b9565b8083825260208201915060208460051b8701019350868411156109eb575f80fd5b602086015b84811015610a0757805183529183019183016109f0565b509695505050505050565b5f805f60608486031215610a24575f80fd5b835167ffffffffffffffff80821115610a3b575f80fd5b818601915086601f830112610a4e575f80fd5b81516020610a5e6109c583610983565b82815260059290921b8401810191818101908a841115610a7c575f80fd5b948201945b83861015610aa3578551610a94816107dd565b82529482019490820190610a81565b91890151919750909350505080821115610abb575f80fd5b50610ac8868287016109a6565b925050604084015190509250925092565b5f60208284031215610ae9575f80fd5b815167ffffffffffffffff811115610aff575f80fd5b610b0b848285016109a6565b949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b8082028115828204841417610744577f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffdfea2646970667358221220bae76dc8983e18caffc6c9508dd7b03510810e47543a2b7bb07b52aa88ae6b6164736f6c63430008190033000000000000000000000000ba12222222228d8ba445958a75a0704d566bf2c8", - "nonce": "0xa", - "chainId": "0x64", - "accessList": null, - "type": null - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x97abf8e06a37851a8d74ec75296656ddc8c2813feed63d4fbb7bf32a332a71bf", - "transactionType": "CREATE", - "contractName": "ChainlinkPriceOracle", - "contractAddress": "0xbd91a72dc3d9b5d9b16ee8638da1fc65311bd90a", - "function": null, - "arguments": null, - "transaction": { - "from": "0x75c35dfd35775f1241f6de49ada78fda82308bc9", - "to": null, - "gas": "0x93b54", - "value": "0x0", - "input": "0x6080604052348015600e575f80fd5b506107798061001c5f395ff3fe608060405234801561000f575f80fd5b5060043610610029575f3560e01c8063355efdd91461002d575b5f80fd5b61004061003b366004610402565b610059565b6040805192835260208301919091520160405180910390f35b5f808061006884860186610489565b90505f815f015190505f826020015190505f808373ffffffffffffffffffffffffffffffffffffffff1663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa1580156100c4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100e89190610537565b509350509250505f808473ffffffffffffffffffffffffffffffffffffffff1663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa15801561013a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061015e9190610537565b5060408b01519295509350429250610178905085836105b0565b1015806101925750604088015161018f83836105b0565b10155b156102145760608801516101a690426105c9565b604080517f7e33463700000000000000000000000000000000000000000000000000000000815260048101929092526024820152600c60448201527f7374616c65206f7261636c65000000000000000000000000000000000000000060648201526084015b60405180910390fd5b5f8773ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801561025e573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061028291906105dc565b60ff1690505f8773ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156102d1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102f591906105dc565b60ff16905060128211806103095750601281115b15610370576040517fc8fc272500000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f556e737570706f7274656420646563696d616c7320283e313829000000000000604482015260640161020b565b80820361038257849b50869a506103c7565b61038d8160126105b0565b61039890600a610721565b6103a2908661072c565b9b506103af8260126105b0565b6103ba90600a610721565b6103c4908861072c565b9a505b5050505050505050505094509492505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146103fd575f80fd5b919050565b5f805f8060608587031215610415575f80fd5b61041e856103da565b935061042c602086016103da565b9250604085013567ffffffffffffffff80821115610448575f80fd5b818701915087601f83011261045b575f80fd5b813581811115610469575f80fd5b88602082850101111561047a575f80fd5b95989497505060200194505050565b5f60808284031215610499575f80fd5b6040516080810181811067ffffffffffffffff821117156104e1577f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040526104ed836103da565b81526104fb602084016103da565b602082015260408301356040820152606083013560608201528091505092915050565b805169ffffffffffffffffffff811681146103fd575f80fd5b5f805f805f60a0868803121561054b575f80fd5b6105548661051e565b94506020860151935060408601519250606086015191506105776080870161051e565b90509295509295909350565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b818103818111156105c3576105c3610583565b92915050565b808201808211156105c3576105c3610583565b5f602082840312156105ec575f80fd5b815160ff811681146105fc575f80fd5b9392505050565b600181815b8085111561065c57817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561064257610642610583565b8085161561064f57918102915b93841c9390800290610608565b509250929050565b5f82610672575060016105c3565b8161067e57505f6105c3565b8160018114610694576002811461069e576106ba565b60019150506105c3565b60ff8411156106af576106af610583565b50506001821b6105c3565b5060208310610133831016604e8410600b84101617156106dd575081810a6105c3565b6106e78383610603565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561071957610719610583565b029392505050565b5f6105fc8383610664565b80820281158282048414176105c3576105c361058356fea264697066735822122075b0d6e4467e1e01e1870465db09540c101ee7e906096ed6f85733060584767d64736f6c63430008190033", - "nonce": "0xb", - "chainId": "0x64", - "accessList": null, - "type": null - }, - "additionalContracts": [], - "isFixedGasLimit": false - } - ], - "receipts": [ - { - "status": "0x1", - "cumulativeGasUsed": "0x51d8e3", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x4121efab4ad58ae7ad73b50448cccae0de92905e181648e5e08de3d6d9c66083", - "transactionIndex": "0x6", - "blockHash": "0x4b260065ef71a564fa050df54998780bd42c597695ece4628565a8fcd6c920da", - "blockNumber": "0x204e18d", - "gasUsed": "0x377c89", - "effectiveGasPrice": "0x7b49a4e5", - "from": "0x75c35dfd35775f1241f6de49ada78fda82308bc9", - "to": null, - "contractAddress": "0xdb1cba3a87f2db53b6e1e6af48e28ed877592ec0" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x5718d9", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0xf1a5eedd250dc75d6b632671a3e2fcafa153ccdc389aa6148e214f11a75fef48", - "transactionIndex": "0x7", - "blockHash": "0x4b260065ef71a564fa050df54998780bd42c597695ece4628565a8fcd6c920da", - "blockNumber": "0x204e18d", - "gasUsed": "0x53ff6", - "effectiveGasPrice": "0x7b49a4e5", - "from": "0x75c35dfd35775f1241f6de49ada78fda82308bc9", - "to": null, - "contractAddress": "0x2145a393887b12f1fe7909d2d0c11dcdb53057ed" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x62407a", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x50dcc1d75d2eeb92476d12a4e40da8fd73797ab25ff2fbaab327c022ddaa2123", - "transactionIndex": "0x8", - "blockHash": "0x4b260065ef71a564fa050df54998780bd42c597695ece4628565a8fcd6c920da", - "blockNumber": "0x204e18d", - "gasUsed": "0xb27a1", - "effectiveGasPrice": "0x7b49a4e5", - "from": "0x75c35dfd35775f1241f6de49ada78fda82308bc9", - "to": null, - "contractAddress": "0x7ede1f69ccbf38ae4a0c2d53d8868a55f4311ba2" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x695a6c", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x97abf8e06a37851a8d74ec75296656ddc8c2813feed63d4fbb7bf32a332a71bf", - "transactionIndex": "0x9", - "blockHash": "0x4b260065ef71a564fa050df54998780bd42c597695ece4628565a8fcd6c920da", - "blockNumber": "0x204e18d", - "gasUsed": "0x719f2", - "effectiveGasPrice": "0x7b49a4e5", - "from": "0x75c35dfd35775f1241f6de49ada78fda82308bc9", - "to": null, - "contractAddress": "0xbd91a72dc3d9b5d9b16ee8638da1fc65311bd90a" - } - ], - "libraries": [], - "pending": [], - "returns": {}, - "timestamp": 1715348175, - "chain": 100, - "commit": "5dfcdcd" -} \ No newline at end of file diff --git a/broadcast/DeployAllContracts.s.sol/11155111/run-1715347993.json b/broadcast/DeployAllContracts.s.sol/11155111/run-1715347993.json deleted file mode 100644 index 476a350..0000000 --- a/broadcast/DeployAllContracts.s.sol/11155111/run-1715347993.json +++ /dev/null @@ -1,164 +0,0 @@ -{ - "transactions": [ - { - "hash": "0x5e6af00c670eb421b96e78fd2e3b9df573b19e6e0ea77d8003e47cdde384b048", - "transactionType": "CREATE", - "contractName": "ConstantProductFactory", - "contractAddress": "0xb808e8183e3a72d196457d127c7fd4befa0d7fd3", - "function": null, - "arguments": [ - "0x9008D19f58AAbD9eD0D60971565AA8510560ab41" - ], - "transaction": { - "from": "0x479bd5b0d9211665bda2ecc1be3db2aa4ab81102", - "to": null, - "gas": "0x4821e5", - "value": "0x0", - "input": "0x60a0604052348015600e575f80fd5b506040516141b33803806141b3833981016040819052602b91603b565b6001600160a01b03166080526066565b5f60208284031215604a575f80fd5b81516001600160a01b0381168114605f575f80fd5b9392505050565b60805161412761008c5f395f8181610189015281816102a801526108c401526141275ff3fe608060405234801561000f575f80fd5b506004361061009f575f3560e01c806337ebdf5011610072578063666e1b3911610058578063666e1b391461014f578063ab221a7614610184578063b5c5f672146101ab575f80fd5b806337ebdf50146101295780635b5d9ee61461013c575f80fd5b80630efe6a8b146100a357806322b155c6146100b857806326e0a196146100f55780632791056514610116575b5f80fd5b6100b66100b13660046111ea565b6101be565b005b6100cb6100c6366004611261565b6102a3565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6101086101033660046112fb565b61045f565b6040516100ec9291906114fd565b6100b6610124366004611527565b610797565b6100cb610137366004611549565b61082f565b6100b661014a366004611591565b610a01565b6100cb61015d366004611527565b5f6020819052908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6100cb7f000000000000000000000000000000000000000000000000000000000000000081565b6100b66101b93660046111ea565b610b17565b61024f3384848673ffffffffffffffffffffffffffffffffffffffff16630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa15801561020d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102319190611617565b73ffffffffffffffffffffffffffffffffffffffff16929190610c46565b61029e3384838673ffffffffffffffffffffffffffffffffffffffff1663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa15801561020d573d5f803e3d5ffd5b505050565b5f33807f00000000000000000000000000000000000000000000000000000000000000008c8b6040516102d5906111b9565b73ffffffffffffffffffffffffffffffffffffffff9384168152918316602083015290911660408201526060018190604051809103905ff590508015801561031f573d5f803e3d5ffd5b506040805173ffffffffffffffffffffffffffffffffffffffff8e811682528c81166020830152929450828416928516917f6707255b2c5ca81220b2f3e408a269cb83baa6aa7e5e37aa1756883a6cdf06f1910160405180910390a373ffffffffffffffffffffffffffffffffffffffff8281165f90815260208190526040902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169183169190911790556103d8828b8a6101be565b5f60405180608001604052808981526020018873ffffffffffffffffffffffffffffffffffffffff16815260200187878080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525050509082525060200185905290506104508382610cdb565b50509998505050505050505050565b60408051610180810182525f80825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081018290526101008101829052610120810182905261014081018290526101608101919091526060306104cf6020890189611527565b73ffffffffffffffffffffffffffffffffffffffff1614610551576040517fc8fc272500000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f63616e206f6e6c792068616e646c65206f776e206f726465727300000000000060448201526064015b60405180910390fd5b5f61055f6040890189611632565b81019061056c919061175c565b90508873ffffffffffffffffffffffffffffffffffffffff1663eec50b976040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105b7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105db919061185a565b6040517fb09aaaca00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8b169063b09aaaca9061062d9085906004016118c3565b602060405180830381865afa158015610648573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061066c919061185a565b146106d3576040517fc8fc272500000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f696e76616c69642074726164696e6720706172616d65746572730000000000006044820152606401610548565b6040517fe3e6f5b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a169063e3e6f5b2906107259084906004016118c3565b61018060405180830381865afa158015610741573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061076591906118f7565b9250828160405160200161077a9291906119b3565b604051602081830303815290604052915050965096945050505050565b73ffffffffffffffffffffffffffffffffffffffff8082165f9081526020819052604090205482911633146108225773ffffffffffffffffffffffffffffffffffffffff8181165f90815260208190526040908190205490517f68bafff800000000000000000000000000000000000000000000000000000000815291166004820152602401610548565b61082b82610e05565b5050565b5f807fff000000000000000000000000000000000000000000000000000000000000003073ffffffffffffffffffffffffffffffffffffffff8716604051610879602082016111b9565b8181037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09081018352601f90910116604081815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000081166020840152808b169183019190915288166060820152608001604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905261093a92916020016119eb565b604051602081830303815290604052805190602001206040516020016109c294939291907fff0000000000000000000000000000000000000000000000000000000000000094909416845260609290921b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660018401526015830152603582015260550190565b604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0018152919052805160209091012095945050505050565b73ffffffffffffffffffffffffffffffffffffffff8087165f908152602081905260409020548791163314610a8c5773ffffffffffffffffffffffffffffffffffffffff8181165f90815260208190526040908190205490517f68bafff800000000000000000000000000000000000000000000000000000000815291166004820152602401610548565b5f60405180608001604052808881526020018773ffffffffffffffffffffffffffffffffffffffff16815260200186868080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505050908252506020018490529050610b0388610e05565b610b0d8882610cdb565b5050505050505050565b73ffffffffffffffffffffffffffffffffffffffff8084165f908152602081905260409020548491163314610ba25773ffffffffffffffffffffffffffffffffffffffff8181165f90815260208190526040908190205490517f68bafff800000000000000000000000000000000000000000000000000000000815291166004820152602401610548565b610bf18433858773ffffffffffffffffffffffffffffffffffffffff16630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa15801561020d573d5f803e3d5ffd5b610c408433848773ffffffffffffffffffffffffffffffffffffffff1663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa15801561020d573d5f803e3d5ffd5b50505050565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd00000000000000000000000000000000000000000000000000000000179052610c40908590610ea3565b6040517fc5f3d25400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83169063c5f3d25490610d2d9084906004016118c3565b5f604051808303815f87803b158015610d44575f80fd5b505af1158015610d56573d5f803e3d5ffd5b5050604080516060810182523081525f6020808301829052835191955073ffffffffffffffffffffffffffffffffffffffff881694507f2cceac5555b0ca45a3744ced542f54b56ad2eb45e521962372eef212a2cbf36193830191610dbd918891016118c3565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152918152915251610df891906119ff565b60405180910390a2505050565b8073ffffffffffffffffffffffffffffffffffffffff166317700f016040518163ffffffff1660e01b81526004015f604051808303815f87803b158015610e4a575f80fd5b505af1158015610e5c573d5f803e3d5ffd5b505060405173ffffffffffffffffffffffffffffffffffffffff841692507fc75bf4f03c02fab9414a7d7a54048c0486722bc72f33ad924709a0593608ad2791505f90a250565b5f610f04826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16610fb09092919063ffffffff16565b905080515f1480610f24575080806020019051810190610f249190611a43565b61029e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610548565b6060610fbe84845f85610fc6565b949350505050565b606082471015611058576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610548565b5f808673ffffffffffffffffffffffffffffffffffffffff1685876040516110809190611a5c565b5f6040518083038185875af1925050503d805f81146110ba576040519150601f19603f3d011682016040523d82523d5f602084013e6110bf565b606091505b50915091506110d0878383876110db565b979650505050505050565b606083156111705782515f036111695773ffffffffffffffffffffffffffffffffffffffff85163b611169576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610548565b5081610fbe565b610fbe83838151156111855781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105489190611a67565b61267880611a7a83390190565b73ffffffffffffffffffffffffffffffffffffffff811681146111e7575f80fd5b50565b5f805f606084860312156111fc575f80fd5b8335611207816111c6565b95602085013595506040909401359392505050565b5f8083601f84011261122c575f80fd5b50813567ffffffffffffffff811115611243575f80fd5b60208301915083602082850101111561125a575f80fd5b9250929050565b5f805f805f805f805f6101008a8c03121561127a575f80fd5b8935611285816111c6565b985060208a0135975060408a013561129c816111c6565b965060608a0135955060808a0135945060a08a01356112ba816111c6565b935060c08a013567ffffffffffffffff8111156112d5575f80fd5b6112e18c828d0161121c565b9a9d999c50979a9699959894979660e00135949350505050565b5f805f805f8060808789031215611310575f80fd5b863561131b816111c6565b9550602087013567ffffffffffffffff80821115611337575f80fd5b908801906060828b03121561134a575f80fd5b9095506040880135908082111561135f575f80fd5b61136b8a838b0161121c565b90965094506060890135915080821115611383575f80fd5b818901915089601f830112611396575f80fd5b8135818111156113a4575f80fd5b8a60208260051b85010111156113b8575f80fd5b6020830194508093505050509295509295509295565b805173ffffffffffffffffffffffffffffffffffffffff168252602081015161140f602084018273ffffffffffffffffffffffffffffffffffffffff169052565b506040810151611437604084018273ffffffffffffffffffffffffffffffffffffffff169052565b50606081015160608301526080810151608083015260a081015161146360a084018263ffffffff169052565b5060c081015160c083015260e081015160e0830152610100808201518184015250610120808201516114988285018215159052565b5050610140818101519083015261016090810151910152565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b5f6101a061150b83866113ce565b8061018084015261151e818401856114b1565b95945050505050565b5f60208284031215611537575f80fd5b8135611542816111c6565b9392505050565b5f805f6060848603121561155b575f80fd5b8335611566816111c6565b92506020840135611576816111c6565b91506040840135611586816111c6565b809150509250925092565b5f805f805f8060a087890312156115a6575f80fd5b86356115b1816111c6565b95506020870135945060408701356115c8816111c6565b9350606087013567ffffffffffffffff8111156115e3575f80fd5b6115ef89828a0161121c565b979a9699509497949695608090950135949350505050565b8051611612816111c6565b919050565b5f60208284031215611627575f80fd5b8151611542816111c6565b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611665575f80fd5b83018035915067ffffffffffffffff82111561167f575f80fd5b60200191503681900382131561125a575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040516080810167ffffffffffffffff811182821017156116e3576116e3611693565b60405290565b604051610180810167ffffffffffffffff811182821017156116e3576116e3611693565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561175457611754611693565b604052919050565b5f602080838503121561176d575f80fd5b823567ffffffffffffffff80821115611784575f80fd5b9084019060808287031215611797575f80fd5b61179f6116c0565b82358152838301356117b0816111c6565b818501526040830135828111156117c5575f80fd5b8301601f810188136117d5575f80fd5b8035838111156117e7576117e7611693565b611817867fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160161170d565b9350808452888682840101111561182c575f80fd5b80868301878601375f8682860101525050816040820152606083013560608201528094505050505092915050565b5f6020828403121561186a575f80fd5b5051919050565b8051825273ffffffffffffffffffffffffffffffffffffffff60208201511660208301525f6040820151608060408501526118af60808501826114b1565b606093840151949093019390935250919050565b602081525f6115426020830184611871565b805163ffffffff81168114611612575f80fd5b80518015158114611612575f80fd5b5f6101808284031215611908575f80fd5b6119106116e9565b61191983611607565b815261192760208401611607565b602082015261193860408401611607565b6040820152606083015160608201526080830151608082015261195d60a084016118d5565b60a082015260c083015160c082015260e083015160e08201526101008084015181830152506101206119908185016118e8565b908201526101408381015190820152610160928301519281019290925250919050565b5f6101a06119c183866113ce565b8061018084015261151e81840185611871565b5f81518060208401855e5f93019283525090919050565b5f610fbe6119f983866119d4565b846119d4565b6020815273ffffffffffffffffffffffffffffffffffffffff8251166020820152602082015160408201525f6040830151606080840152610fbe60808401826114b1565b5f60208284031215611a53575f80fd5b611542826118e8565b5f61154282846119d4565b602081525f61154260208301846114b156fe610120604052348015610010575f80fd5b5060405161267838038061267883398101604081905261002f9161052f565b6001600160a01b03831660808190526040805163f698da2560e01b8152905163f698da259160048082019260209290919082900301815f875af1158015610078573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061009c9190610579565b610100526100aa823361015f565b6100b4813361015f565b336001600160a01b031660e0816001600160a01b0316815250505f836001600160a01b0316639b552cc26040518163ffffffff1660e01b81526004016020604051808303815f875af115801561010c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101309190610590565b905061013c838261015f565b610146828261015f565b506001600160a01b0391821660a0521660c0525061061c565b6101746001600160a01b038316825f19610178565b5050565b8015806101f05750604051636eb1769f60e11b81523060048201526001600160a01b03838116602483015284169063dd62ed3e90604401602060405180830381865afa1580156101ca573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101ee9190610579565b155b6102675760405162461bcd60e51b815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527f20746f206e6f6e2d7a65726f20616c6c6f77616e63650000000000000000000060648201526084015b60405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b0390811663095ea7b360e01b179091526102bd9185916102c216565b505050565b6040805180820190915260208082527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564908201525f9061030e906001600160a01b03851690849061038d565b905080515f148061032e57508080602001905181019061032e91906105b2565b6102bd5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161025e565b606061039b84845f856103a3565b949350505050565b6060824710156104045760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b606482015260840161025e565b5f80866001600160a01b0316858760405161041f91906105d1565b5f6040518083038185875af1925050503d805f8114610459576040519150601f19603f3d011682016040523d82523d5f602084013e61045e565b606091505b5090925090506104708783838761047b565b979650505050505050565b606083156104e95782515f036104e2576001600160a01b0385163b6104e25760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161025e565b508161039b565b61039b83838151156104fe5781518083602001fd5b8060405162461bcd60e51b815260040161025e91906105e7565b6001600160a01b038116811461052c575f80fd5b50565b5f805f60608486031215610541575f80fd5b835161054c81610518565b602085015190935061055d81610518565b604085015190925061056e81610518565b809150509250925092565b5f60208284031215610589575f80fd5b5051919050565b5f602082840312156105a0575f80fd5b81516105ab81610518565b9392505050565b5f602082840312156105c2575f80fd5b815180151581146105ab575f80fd5b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b60805160a05160c05160e05161010051611fbd6106bb5f395f81816102db015261042b01525f8181610236015281816104d90152610bf901525f81816102b40152818161059901528181610d5c01528181610ebf01528181610f8e015261100d01525f81816101380152818161057701528181610d3b01528181610e2801528181610f6b015261103001525f818161032201526112140152611fbd5ff3fe608060405234801561000f575f80fd5b506004361061012f575f3560e01c8063b09aaaca116100ad578063e3e6f5b21161007d578063eec50b9711610063578063eec50b9714610344578063f14fcbc81461034c578063ff2dbc9814610203575f80fd5b8063e3e6f5b2146102fd578063e516715b1461031d575f80fd5b8063b09aaaca14610289578063c5f3d2541461029c578063d21220a7146102af578063d25e0cb6146102d6575f80fd5b80631c7de94111610102578063481c6a75116100e8578063481c6a7514610231578063981a160b14610258578063a029a8d414610276575f80fd5b80631c7de941146102035780633e706e321461020a575f80fd5b80630dfe1681146101335780631303a484146101845780631626ba7e146101b557806317700f01146101f9575b5f80fd5b61015a7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b7f6c3c90245457060f6517787b2c4b8cf500ca889d2304af02043bd5b513e3b5935c5b60405190815260200161017b565b6101c86101c33660046116bf565b61035f565b6040517fffffffff00000000000000000000000000000000000000000000000000000000909116815260200161017b565b6102016104d7565b005b6101a75f81565b6101a77f6c3c90245457060f6517787b2c4b8cf500ca889d2304af02043bd5b513e3b59381565b61015a7f000000000000000000000000000000000000000000000000000000000000000081565b61026161012c81565b60405163ffffffff909116815260200161017b565b6102016102843660046119ee565b610573565b6101a7610297366004611a3b565b610bc8565b6102016102aa366004611a75565b610bf7565b61015a7f000000000000000000000000000000000000000000000000000000000000000081565b6101a77f000000000000000000000000000000000000000000000000000000000000000081565b61031061030b366004611a3b565b610cb7565b60405161017b9190611aac565b61015a7f000000000000000000000000000000000000000000000000000000000000000081565b6101a75f5481565b61020161035a366004611b9a565b6111fc565b5f808061036e84860186611bb1565b915091505f5461037d82610bc8565b146103b4576040517ff1a6789000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0820180517fd5a25ba2e97094ad7d83dc28a6572da797d6b3e7fc6663bd93efb789fc17e48982526101a0822091526040517f190100000000000000000000000000000000000000000000000000000000000081527f00000000000000000000000000000000000000000000000000000000000000006002820152602281019190915260429020868114610494576040517f593fcacd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61049f818385611291565b6104a98284610573565b507f1626ba7e00000000000000000000000000000000000000000000000000000000925050505b9392505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163314610546576040517ff87d0d1600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8080556040517fbcb8b8fbdea8aa6dc4ae41213e4da81e605a3d1a56ed851b9355182321c091909190a1565b80517f0000000000000000000000000000000000000000000000000000000000000000907f00000000000000000000000000000000000000000000000000000000000000009073ffffffffffffffffffffffffffffffffffffffff808416911614610677578073ffffffffffffffffffffffffffffffffffffffff16835f015173ffffffffffffffffffffffffffffffffffffffff1614610675576040517fc8fc272500000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f696e76616c69642073656c6c20746f6b656e000000000000000000000000000060448201526064015b60405180910390fd5b905b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201525f9073ffffffffffffffffffffffffffffffffffffffff8416906370a0823190602401602060405180830381865afa1580156106e1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107059190611bff565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529091505f9073ffffffffffffffffffffffffffffffffffffffff8416906370a0823190602401602060405180830381865afa158015610772573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107969190611bff565b90508273ffffffffffffffffffffffffffffffffffffffff16856020015173ffffffffffffffffffffffffffffffffffffffff1614610831576040517fc8fc272500000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f696e76616c69642062757920746f6b656e000000000000000000000000000000604482015260640161066c565b604085015173ffffffffffffffffffffffffffffffffffffffff16156108b3576040517fc8fc272500000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f7265636569766572206d757374206265207a65726f2061646472657373000000604482015260640161066c565b6108bf61012c42611c43565b8560a0015163ffffffff161115610932576040517fc8fc272500000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f76616c696469747920746f6f2066617220696e20746865206675747572650000604482015260640161066c565b85606001518560c00151146109a3576040517fc8fc272500000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f696e76616c696420617070446174610000000000000000000000000000000000604482015260640161066c565b60e085015115610a0f576040517fc8fc272500000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f66656520616d6f756e74206d757374206265207a65726f000000000000000000604482015260640161066c565b7f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc985610160015114610a9d576040517fc8fc272500000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f627579546f6b656e42616c616e6365206d757374206265206572633230000000604482015260640161066c565b7f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc985610140015114610b2b576040517fc8fc272500000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f73656c6c546f6b656e42616c616e6365206d7573742062652065726332300000604482015260640161066c565b6060850151610b3a9082611c56565b60808601516060870151610b4e9085611c6d565b610b589190611c56565b1015610bc0576040517fc8fc272500000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f726563656976656420616d6f756e7420746f6f206c6f77000000000000000000604482015260640161066c565b505050505050565b5f81604051602001610bda9190611ccc565b604051602081830303815290604052805190602001209050919050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163314610c66576040517ff87d0d1600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f610c7361029783611d27565b9050805f81905550807f510e4a4f76907c2d6158b343f7c4f2f597df385b727c26e9ef90e75093ace19a83604051610cab9190611d79565b60405180910390a25050565b60408051610180810182525f80825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081018290526101008101829052610120810182905261014081018290526101608101919091525f80836020015173ffffffffffffffffffffffffffffffffffffffff1663355efdd97f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000087604001516040518463ffffffff1660e01b8152600401610d9e93929190611e3a565b6040805180830381865afa158015610db8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ddc9190611e72565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015291935091505f90819073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa158015610e6d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e919190611bff565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa158015610f19573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f3d9190611bff565b90925090505f80808080610f518888611c56565b90505f610f5e8a88611c56565b90505f8282101561100b577f000000000000000000000000000000000000000000000000000000000000000096507f00000000000000000000000000000000000000000000000000000000000000009550610fd6610fbd60028b611ec1565b610fd184610fcc8e6002611c56565b611346565b61137e565b945061100185610fe6818d611c56565b610ff09085611c43565b610ffa8c8f611c56565b60016113cb565b9350849050611098565b7f000000000000000000000000000000000000000000000000000000000000000096507f0000000000000000000000000000000000000000000000000000000000000000955061106e61105f60028a611ec1565b610fd185610fcc8f6002611c56565b94506110928561107e818e611c56565b6110889086611c43565b610ffa8b8e611c56565b93508390505b8c518110156110df576110df6040518060400160405280601781526020017f74726164656420616d6f756e7420746f6f20736d616c6c000000000000000000815250611426565b6040518061018001604052808873ffffffffffffffffffffffffffffffffffffffff1681526020018773ffffffffffffffffffffffffffffffffffffffff1681526020015f73ffffffffffffffffffffffffffffffffffffffff16815260200186815260200185815260200161115661012c611466565b63ffffffff1681526020018e6060015181526020015f81526020017ff3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee34677581526020016001151581526020017f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc981526020017f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc98152509b505050505050505050505050919050565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461126b576040517fbf84897700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b807f6c3c90245457060f6517787b2c4b8cf500ca889d2304af02043bd5b513e3b5935d50565b7f6c3c90245457060f6517787b2c4b8cf500ca889d2304af02043bd5b513e3b5935c8381146113405780156112f2576040517fdafbdd1f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6112fc84610cb7565b90506113088382611487565b61133e576040517fd9ff24c700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505b50505050565b5f82156113735781611359600185611c6d565b6113639190611ec1565b61136e906001611c43565b611375565b5f5b90505b92915050565b5f818310156113c5576113c56040518060400160405280601581526020017f7375627472616374696f6e20756e646572666c6f770000000000000000000000815250611426565b50900390565b5f806113d8868686611599565b905060018360028111156113ee576113ee611ed4565b14801561140a57505f848061140557611405611e94565b868809115b1561141d5761141a600182611c43565b90505b95945050505050565b611431436001611c43565b816040517f1fe8506e00000000000000000000000000000000000000000000000000000000815260040161066c929190611f01565b5f81806114738142611f19565b61147d9190611f3b565b6113789190611f63565b5f80825f015173ffffffffffffffffffffffffffffffffffffffff16845f015173ffffffffffffffffffffffffffffffffffffffff161490505f836020015173ffffffffffffffffffffffffffffffffffffffff16856020015173ffffffffffffffffffffffffffffffffffffffff161490505f846060015186606001511490505f856080015187608001511490505f8660a0015163ffffffff168860a0015163ffffffff161490505f8761010001518961010001511490505f88610120015115158a6101200151151514905086801561155e5750855b80156115675750845b80156115705750835b80156115795750825b80156115825750815b801561158b5750805b9a9950505050505050505050565b5f80807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff858709858702925082811083820303915050805f036115ef578382816115e5576115e5611e94565b04925050506104d0565b808411611658576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4d6174683a206d756c446976206f766572666c6f770000000000000000000000604482015260640161066c565b5f8486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091025f889003889004909101858311909403939093029303949094049190911702949350505050565b5f805f604084860312156116d1575f80fd5b83359250602084013567ffffffffffffffff808211156116ef575f80fd5b818601915086601f830112611702575f80fd5b813581811115611710575f80fd5b876020828501011115611721575f80fd5b6020830194508093505050509250925092565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040516080810167ffffffffffffffff8111828210171561178457611784611734565b60405290565b604051610180810167ffffffffffffffff8111828210171561178457611784611734565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156117f5576117f5611734565b604052919050565b73ffffffffffffffffffffffffffffffffffffffff8116811461181e575f80fd5b50565b5f60808284031215611831575f80fd5b611839611761565b90508135815260208083013561184e816117fd565b82820152604083013567ffffffffffffffff8082111561186c575f80fd5b818501915085601f83011261187f575f80fd5b81358181111561189157611891611734565b6118c1847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016117ae565b915080825286848285010111156118d6575f80fd5b80848401858401375f848284010152508060408501525050506060820135606082015292915050565b803561190a816117fd565b919050565b803563ffffffff8116811461190a575f80fd5b8035801515811461190a575f80fd5b5f6101808284031215611942575f80fd5b61194a61178a565b9050611955826118ff565b8152611963602083016118ff565b6020820152611974604083016118ff565b6040820152606082013560608201526080820135608082015261199960a0830161190f565b60a082015260c082013560c082015260e082013560e08201526101008083013581830152506101206119cc818401611922565b9082015261014082810135908201526101609182013591810191909152919050565b5f806101a08385031215611a00575f80fd5b823567ffffffffffffffff811115611a16575f80fd5b611a2285828601611821565b925050611a328460208501611931565b90509250929050565b5f60208284031215611a4b575f80fd5b813567ffffffffffffffff811115611a61575f80fd5b611a6d84828501611821565b949350505050565b5f60208284031215611a85575f80fd5b813567ffffffffffffffff811115611a9b575f80fd5b8201608081850312156104d0575f80fd5b815173ffffffffffffffffffffffffffffffffffffffff16815261018081016020830151611af2602084018273ffffffffffffffffffffffffffffffffffffffff169052565b506040830151611b1a604084018273ffffffffffffffffffffffffffffffffffffffff169052565b50606083015160608301526080830151608083015260a0830151611b4660a084018263ffffffff169052565b5060c083015160c083015260e083015160e083015261010080840151818401525061012080840151611b7b8285018215159052565b5050610140838101519083015261016092830151929091019190915290565b5f60208284031215611baa575f80fd5b5035919050565b5f806101a08385031215611bc3575f80fd5b611bcd8484611931565b915061018083013567ffffffffffffffff811115611be9575f80fd5b611bf585828601611821565b9150509250929050565b5f60208284031215611c0f575f80fd5b5051919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b8082018082111561137857611378611c16565b808202811582820484141761137857611378611c16565b8181038181111561137857611378611c16565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081528151602082015273ffffffffffffffffffffffffffffffffffffffff60208301511660408201525f604083015160806060840152611d1160a0840182611c80565b9050606084015160808401528091505092915050565b5f6113783683611821565b81835281816020850137505f602082840101525f60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60208152813560208201525f6020830135611d93816117fd565b73ffffffffffffffffffffffffffffffffffffffff811660408401525060408301357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611de4575f80fd5b830160208101903567ffffffffffffffff811115611e00575f80fd5b803603821315611e0e575f80fd5b60806060850152611e2360a085018284611d32565b915050606084013560808401528091505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff80861683528085166020840152506060604083015261141d6060830184611c80565b5f8060408385031215611e83575f80fd5b505080516020909101519092909150565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f82611ecf57611ecf611e94565b500490565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b828152604060208201525f611a6d6040830184611c80565b5f63ffffffff80841680611f2f57611f2f611e94565b92169190910492915050565b63ffffffff818116838216028082169190828114611f5b57611f5b611c16565b505092915050565b63ffffffff818116838216019080821115611f8057611f80611c16565b509291505056fea2646970667358221220007787385571c489d2d3dd1067df9d880b4dcbadc90929009db8bacadf24c59c64736f6c63430008190033a2646970667358221220c0204c7751d8f2123ca68d540faf4dc94182742afb6653be6fc250385d038cf964736f6c634300081900330000000000000000000000009008d19f58aabd9ed0d60971565aa8510560ab41", - "nonce": "0xe", - "chainId": "0xaa36a7", - "accessList": null, - "type": null - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x6f2092d0449a2508bccfc4acc6313961232a71f3e5faedf63c5f8b0821815c29", - "transactionType": "CREATE", - "contractName": "UniswapV2PriceOracle", - "contractAddress": "0x79786bc861465fc4b355359545025676f8b5fbf9", - "function": null, - "arguments": null, - "transaction": { - "from": "0x479bd5b0d9211665bda2ecc1be3db2aa4ab81102", - "to": null, - "gas": "0x6d326", - "value": "0x0", - "input": "0x6080604052348015600e575f80fd5b506105468061001c5f395ff3fe608060405234801561000f575f80fd5b5060043610610029575f3560e01c8063355efdd91461002d575b5f80fd5b61004061003b366004610386565b610059565b6040805192835260208301919091520160405180910390f35b5f808061006884860186610411565b9050805f015173ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156100b6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100da91906104a2565b826dffffffffffffffffffffffffffff169250816dffffffffffffffffffffffffffff1691505080935081945050505f815f015173ffffffffffffffffffffffffffffffffffffffff16630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015610156573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061017a91906104ee565b90505f825f015173ffffffffffffffffffffffffffffffffffffffff1663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101c9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101ed91906104ee565b90508073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff160361022757929392905b8173ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff16146102c1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f6f7261636c653a20696e76616c696420746f6b656e300000000000000000000060448201526064015b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614610356576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f6f7261636c653a20696e76616c696420746f6b656e310000000000000000000060448201526064016102b8565b50505094509492505050565b73ffffffffffffffffffffffffffffffffffffffff81168114610383575f80fd5b50565b5f805f8060608587031215610399575f80fd5b84356103a481610362565b935060208501356103b481610362565b9250604085013567ffffffffffffffff808211156103d0575f80fd5b818701915087601f8301126103e3575f80fd5b8135818111156103f1575f80fd5b886020828501011115610402575f80fd5b95989497505060200194505050565b5f60208284031215610421575f80fd5b6040516020810181811067ffffffffffffffff82111715610469577f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604052823561047781610362565b81529392505050565b80516dffffffffffffffffffffffffffff8116811461049d575f80fd5b919050565b5f805f606084860312156104b4575f80fd5b6104bd84610480565b92506104cb60208501610480565b9150604084015163ffffffff811681146104e3575f80fd5b809150509250925092565b5f602082840312156104fe575f80fd5b815161050981610362565b939250505056fea26469706673582212204cbf3de6d25713817f80195812acb33b4c24b78149d1e68a6f0894ac1685cfdd64736f6c63430008190033", - "nonce": "0xf", - "chainId": "0xaa36a7", - "accessList": null, - "type": null - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x37a90d05f220d8e13053d6b5f8dea9d034f441dcaa09497f1f901df01c36d45c", - "transactionType": "CREATE", - "contractName": "BalancerWeightedPoolPriceOracle", - "contractAddress": "0x7b073dd8192803ab692eb30e367f218ff399162d", - "function": null, - "arguments": [ - "0xBA12222222228d8Ba445958a75a0704d566BF2C8" - ], - "transaction": { - "from": "0x479bd5b0d9211665bda2ecc1be3db2aa4ab81102", - "to": null, - "gas": "0xe8051", - "value": "0x0", - "input": "0x6080604052348015600e575f80fd5b50604051610c65380380610c65833981016040819052602b91604e565b5f80546001600160a01b0319166001600160a01b03929092169190911790556079565b5f60208284031215605d575f80fd5b81516001600160a01b03811681146072575f80fd5b9392505050565b610bdf806100865f395ff3fe608060405234801561000f575f80fd5b506004361061003f575f3560e01c8063355efdd914610043578063b52d5b1e14610070578063fbfa77cf14610086575b5f80fd5b610056610051366004610801565b6100ca565b604080519283526020830191909152015b60405180910390f35b610078600e81565b604051908152602001610067565b5f546100a59073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610067565b5f808060608080836100de888a018a610908565b515f546040517ff6c009270000000000000000000000000000000000000000000000000000000081526004810183905291925073ffffffffffffffffffffffffffffffffffffffff169063f6c00927906024016040805180830381865afa925050508015610187575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261018491810190610948565b60015b610221573d8080156101b4576040519150601f19603f3d011682016040523d82523d5f602084013e6101b9565b606091505b506040517fc8fc272500000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f696e76616c696420706f6f6c206964000000000000000000000000000000000060448201526064015b60405180910390fd5b505f546040517ff94d46680000000000000000000000000000000000000000000000000000000081526004810184905291965073ffffffffffffffffffffffffffffffffffffffff169063f94d4668906024015f60405180830381865afa15801561028e573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526102d39190810190610a12565b5080945081955050508473ffffffffffffffffffffffffffffffffffffffff1663f89f27ed6040518163ffffffff1660e01b81526004015f60405180830381865afa92505050801561036457506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526103619190810190610ad9565b60015b6103f9573d808015610391576040519150601f19603f3d011682016040523d82523d5f602084013e610396565b606091505b506040517fc8fc272500000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f6e6f74206120776569676874656420706f6f6c000000000000000000000000006044820152606401610218565b9150505f805f805f5b875181101561050d575f88828151811061041e5761041e610b13565b602002602001015190508f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036104985786828151811061046d5761046d610b13565b6020026020010151955087828151811061048957610489610b13565b60200260200101519350610504565b8e73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610504578682815181106104dd576104dd610b13565b602002602001015194508782815181106104f9576104f9610b13565b602002602001015192505b50600101610402565b50835f03610577576040517fc8fc272500000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f706f6f6c20646f6573206e6f7420747261646520746f6b656e300000000000006044820152606401610218565b825f036105e0576040517fc8fc272500000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f706f6f6c20646f6573206e6f7420747261646520746f6b656e310000000000006044820152606401610218565b5f6105eb8484610b40565b90505f6105f88684610b40565b9050610604828261061b565b9b509b505050505050505050505094509492505050565b5f805f8084861115610631575084905083610637565b50839050845b5f6106438360016106ff565b90505f610650835f6106ff565b90506080821115806106635750600e8111155b1561067757878795509550505050506106f8565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8082017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8e83018210156106e957507ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff281015b88811c965087901c9450505050505b9250929050565b5f8061070a8461074a565b9050600183600281111561072057610720610b7c565b148015610730575083816001901b105b61073a575f61073d565b60015b60ff160190505b92915050565b5f80608083901c1561075e57608092831c92015b604083901c1561077057604092831c92015b602083901c1561078257602092831c92015b601083901c1561079457601092831c92015b600883901c156107a657600892831c92015b600483901c156107b857600492831c92015b600283901c156107ca57600292831c92015b600183901c156107445760010192915050565b73ffffffffffffffffffffffffffffffffffffffff811681146107fe575f80fd5b50565b5f805f8060608587031215610814575f80fd5b843561081f816107dd565b9350602085013561082f816107dd565b9250604085013567ffffffffffffffff8082111561084b575f80fd5b818701915087601f83011261085e575f80fd5b81358181111561086c575f80fd5b88602082850101111561087d575f80fd5b95989497505060200194505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156109005761090061088c565b604052919050565b5f60208284031215610918575f80fd5b6040516020810181811067ffffffffffffffff8211171561093b5761093b61088c565b6040529135825250919050565b5f8060408385031215610959575f80fd5b8251610964816107dd565b602084015190925060038110610978575f80fd5b809150509250929050565b5f67ffffffffffffffff82111561099c5761099c61088c565b5060051b60200190565b5f82601f8301126109b5575f80fd5b815160206109ca6109c583610983565b6108b9565b8083825260208201915060208460051b8701019350868411156109eb575f80fd5b602086015b84811015610a0757805183529183019183016109f0565b509695505050505050565b5f805f60608486031215610a24575f80fd5b835167ffffffffffffffff80821115610a3b575f80fd5b818601915086601f830112610a4e575f80fd5b81516020610a5e6109c583610983565b82815260059290921b8401810191818101908a841115610a7c575f80fd5b948201945b83861015610aa3578551610a94816107dd565b82529482019490820190610a81565b91890151919750909350505080821115610abb575f80fd5b50610ac8868287016109a6565b925050604084015190509250925092565b5f60208284031215610ae9575f80fd5b815167ffffffffffffffff811115610aff575f80fd5b610b0b848285016109a6565b949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b8082028115828204841417610744577f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffdfea2646970667358221220bae76dc8983e18caffc6c9508dd7b03510810e47543a2b7bb07b52aa88ae6b6164736f6c63430008190033000000000000000000000000ba12222222228d8ba445958a75a0704d566bf2c8", - "nonce": "0x10", - "chainId": "0xaa36a7", - "accessList": null, - "type": null - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x341f7936fe0bd5d80a775a7dbcd33d1df298bd89632bf3971df16745880d4e73", - "transactionType": "CREATE", - "contractName": "ChainlinkPriceOracle", - "contractAddress": "0x79200763b5bc95d8d6a3b53be1e9a494bc301940", - "function": null, - "arguments": null, - "transaction": { - "from": "0x479bd5b0d9211665bda2ecc1be3db2aa4ab81102", - "to": null, - "gas": "0x93b54", - "value": "0x0", - "input": "0x6080604052348015600e575f80fd5b506107798061001c5f395ff3fe608060405234801561000f575f80fd5b5060043610610029575f3560e01c8063355efdd91461002d575b5f80fd5b61004061003b366004610402565b610059565b6040805192835260208301919091520160405180910390f35b5f808061006884860186610489565b90505f815f015190505f826020015190505f808373ffffffffffffffffffffffffffffffffffffffff1663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa1580156100c4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100e89190610537565b509350509250505f808473ffffffffffffffffffffffffffffffffffffffff1663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa15801561013a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061015e9190610537565b5060408b01519295509350429250610178905085836105b0565b1015806101925750604088015161018f83836105b0565b10155b156102145760608801516101a690426105c9565b604080517f7e33463700000000000000000000000000000000000000000000000000000000815260048101929092526024820152600c60448201527f7374616c65206f7261636c65000000000000000000000000000000000000000060648201526084015b60405180910390fd5b5f8773ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801561025e573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061028291906105dc565b60ff1690505f8773ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156102d1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102f591906105dc565b60ff16905060128211806103095750601281115b15610370576040517fc8fc272500000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f556e737570706f7274656420646563696d616c7320283e313829000000000000604482015260640161020b565b80820361038257849b50869a506103c7565b61038d8160126105b0565b61039890600a610721565b6103a2908661072c565b9b506103af8260126105b0565b6103ba90600a610721565b6103c4908861072c565b9a505b5050505050505050505094509492505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146103fd575f80fd5b919050565b5f805f8060608587031215610415575f80fd5b61041e856103da565b935061042c602086016103da565b9250604085013567ffffffffffffffff80821115610448575f80fd5b818701915087601f83011261045b575f80fd5b813581811115610469575f80fd5b88602082850101111561047a575f80fd5b95989497505060200194505050565b5f60808284031215610499575f80fd5b6040516080810181811067ffffffffffffffff821117156104e1577f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040526104ed836103da565b81526104fb602084016103da565b602082015260408301356040820152606083013560608201528091505092915050565b805169ffffffffffffffffffff811681146103fd575f80fd5b5f805f805f60a0868803121561054b575f80fd5b6105548661051e565b94506020860151935060408601519250606086015191506105776080870161051e565b90509295509295909350565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b818103818111156105c3576105c3610583565b92915050565b808201808211156105c3576105c3610583565b5f602082840312156105ec575f80fd5b815160ff811681146105fc575f80fd5b9392505050565b600181815b8085111561065c57817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561064257610642610583565b8085161561064f57918102915b93841c9390800290610608565b509250929050565b5f82610672575060016105c3565b8161067e57505f6105c3565b8160018114610694576002811461069e576106ba565b60019150506105c3565b60ff8411156106af576106af610583565b50506001821b6105c3565b5060208310610133831016604e8410600b84101617156106dd575081810a6105c3565b6106e78383610603565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561071957610719610583565b029392505050565b5f6105fc8383610664565b80820281158282048414176105c3576105c361058356fea264697066735822122075b0d6e4467e1e01e1870465db09540c101ee7e906096ed6f85733060584767d64736f6c63430008190033", - "nonce": "0x11", - "chainId": "0xaa36a7", - "accessList": null, - "type": null - }, - "additionalContracts": [], - "isFixedGasLimit": false - } - ], - "receipts": [ - { - "status": "0x1", - "cumulativeGasUsed": "0x1258509", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x5e6af00c670eb421b96e78fd2e3b9df573b19e6e0ea77d8003e47cdde384b048", - "transactionIndex": "0x2d", - "blockHash": "0xfb7294e1150a0f7294acdaa9919f3472b13bfc43b19886499506582518ca58c8", - "blockNumber": "0x59a382", - "gasUsed": "0x377c89", - "effectiveGasPrice": "0x59722857", - "from": "0x479bd5b0d9211665bda2ecc1be3db2aa4ab81102", - "to": null, - "contractAddress": "0xb808e8183e3a72d196457d127c7fd4befa0d7fd3" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x12ac4ff", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x6f2092d0449a2508bccfc4acc6313961232a71f3e5faedf63c5f8b0821815c29", - "transactionIndex": "0x2e", - "blockHash": "0xfb7294e1150a0f7294acdaa9919f3472b13bfc43b19886499506582518ca58c8", - "blockNumber": "0x59a382", - "gasUsed": "0x53ff6", - "effectiveGasPrice": "0x59722857", - "from": "0x479bd5b0d9211665bda2ecc1be3db2aa4ab81102", - "to": null, - "contractAddress": "0x79786bc861465fc4b355359545025676f8b5fbf9" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x136630a", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x37a90d05f220d8e13053d6b5f8dea9d034f441dcaa09497f1f901df01c36d45c", - "transactionIndex": "0x30", - "blockHash": "0xfb7294e1150a0f7294acdaa9919f3472b13bfc43b19886499506582518ca58c8", - "blockNumber": "0x59a382", - "gasUsed": "0xb27a1", - "effectiveGasPrice": "0x59722857", - "from": "0x479bd5b0d9211665bda2ecc1be3db2aa4ab81102", - "to": null, - "contractAddress": "0x7b073dd8192803ab692eb30e367f218ff399162d" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x13d7cfc", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x341f7936fe0bd5d80a775a7dbcd33d1df298bd89632bf3971df16745880d4e73", - "transactionIndex": "0x31", - "blockHash": "0xfb7294e1150a0f7294acdaa9919f3472b13bfc43b19886499506582518ca58c8", - "blockNumber": "0x59a382", - "gasUsed": "0x719f2", - "effectiveGasPrice": "0x59722857", - "from": "0x479bd5b0d9211665bda2ecc1be3db2aa4ab81102", - "to": null, - "contractAddress": "0x79200763b5bc95d8d6a3b53be1e9a494bc301940" - } - ], - "libraries": [], - "pending": [], - "returns": {}, - "timestamp": 1715347993, - "chain": 11155111, - "commit": "5dfcdcd" -} \ No newline at end of file diff --git a/networks.json b/networks.json index 06257e4..b685587 100644 --- a/networks.json +++ b/networks.json @@ -1,58 +1,16 @@ { - "BalancerWeightedPoolPriceOracle": { - "1": { - "address": "0x32dBede1bD6559D7d3ecf279D1207B47cE147137", - "transactionHash": "0x9b9836a6992dff16d955da49f26abc3e0678f6240f7a4a3d97054501d65ea297" - }, - "100": { - "address": "0x7ede1f69ccbf38ae4a0c2d53d8868a55f4311ba2", - "transactionHash": "0x50dcc1d75d2eeb92476d12a4e40da8fd73797ab25ff2fbaab327c022ddaa2123" - }, - "11155111": { - "address": "0x7b073dd8192803ab692eb30e367f218ff399162d", - "transactionHash": "0x37a90d05f220d8e13053d6b5f8dea9d034f441dcaa09497f1f901df01c36d45c" - } - }, - "ChainlinkPriceOracle": { - "1": { - "address": "0xF54c4bcc34a8750382B8fB0f0EC6f1A6C785af9c", - "transactionHash": "0x4a6ded6c5928a8e74daa6330408ab0532c8ab3b474cfac884261f16fb0ca659b" - }, - "100": { - "address": "0xbd91a72dc3d9b5d9b16ee8638da1fc65311bd90a", - "transactionHash": "0x97abf8e06a37851a8d74ec75296656ddc8c2813feed63d4fbb7bf32a332a71bf" - }, - "11155111": { - "address": "0x79200763b5bc95d8d6a3b53be1e9a494bc301940", - "transactionHash": "0x341f7936fe0bd5d80a775a7dbcd33d1df298bd89632bf3971df16745880d4e73" - } - }, "ConstantProductFactory": { "1": { - "address": "0x40664207e3375FB4b733d4743CE9b159331fd034", - "transactionHash": "0xf37fc438ddacb00c28305bd7dea3b79091cd5be3405a2b445717d9faf946fa50" - }, - "100": { - "address": "0xdb1cba3a87f2db53b6e1e6af48e28ed877592ec0", - "transactionHash": "0x4121efab4ad58ae7ad73b50448cccae0de92905e181648e5e08de3d6d9c66083" - }, - "11155111": { - "address": "0xb808e8183e3a72d196457d127c7fd4befa0d7fd3", - "transactionHash": "0x5e6af00c670eb421b96e78fd2e3b9df573b19e6e0ea77d8003e47cdde384b048" - } - }, - "UniswapV2PriceOracle": { - "1": { - "address": "0xff77a62ADA5a37c2c500107DDc60F1292E030D85", - "transactionHash": "0x967564124beb451f546d2311e4b18addf9088888509366e9ab001de371534cf0" + "address": "0x8deed8ed7c5fcb55884f13f121654bb4bb7c8437", + "transactionHash": "0x4aa028aab545f88957d94f7d2a13924ade97f709c11dce12aac5f0609cd53b92" }, "100": { - "address": "0x2145a393887b12f1fe7909d2d0c11dcdb53057ed", - "transactionHash": "0xf1a5eedd250dc75d6b632671a3e2fcafa153ccdc389aa6148e214f11a75fef48" + "address": "0x2af6c59fc957d4a45ddbbd927fa30f7c5051f583", + "transactionHash": "0xf796756d733bcd656177c8db91cb39e2e35fbb101b7ab1e017d4727a84378333" }, "11155111": { - "address": "0x79786bc861465fc4b355359545025676f8b5fbf9", - "transactionHash": "0x6f2092d0449a2508bccfc4acc6313961232a71f3e5faedf63c5f8b0821815c29" + "address": "0xbd18758055dbe3ed37a2471394559ae97a5da5c0", + "transactionHash": "0x6bb46c17360c05537b2b0a5f750e407c976c1839c219e555a02e79e3587fcab8" } } } From bf8ea372f2d42e35d3984228d71814387e171d34 Mon Sep 17 00:00:00 2001 From: mfw78 <53399572+mfw78@users.noreply.github.com> Date: Wed, 26 Jun 2024 05:51:56 +0000 Subject: [PATCH 2/2] feat: legacy cow amm safe indexer (#81) ## Description This PR adds a rust utility that indexes all legacy CoW AMMs that have been created using the Safe module, to be used for statically populating the `ConstantProductHelper.sol` contract in a forthcoming PR. ## Testing 1. Ensure you have a running `rust` environment (the devcontainer has been updated to include one). 2. Change into the `utils` directory and: `RPC_URL=cargo run --bin cow-amm-indexer` **NOTE**: As this indexer looks back over previous blocks, the RPC being used must have `receipts` available for the respective contracts that are being analysed. For example, if you want to test this for mainnet, `https://eth.merkle.io` is suitable. --------- Co-authored-by: Federico Giacon <58218759+fedgiac@users.noreply.github.com> --- .devcontainer/devcontainer.json | 30 +- .gitignore | 3 + utils/Cargo.lock | 3409 +++++++++++++++++++++++++++++++ utils/Cargo.toml | 23 + utils/abi/ComposableCoW.json | 1 + utils/bin/indexer/Cargo.toml | 12 + utils/bin/indexer/src/main.rs | 116 ++ 7 files changed, 3582 insertions(+), 12 deletions(-) create mode 100644 utils/Cargo.lock create mode 100644 utils/Cargo.toml create mode 100644 utils/abi/ComposableCoW.json create mode 100644 utils/bin/indexer/Cargo.toml create mode 100644 utils/bin/indexer/src/main.rs diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 322b8c3..98282c7 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -1,14 +1,20 @@ { - "name": "Foundry", - "image": "mcr.microsoft.com/devcontainers/base:0", - "features": { - "ghcr.io/nlordell/features/foundry": {}, - }, - "customizations": { - "vscode": { - "extensions": [ - "JuanBlanco.solidity" - ] - } - } + "name": "Foundry + Rust Development Container", + "image": "mcr.microsoft.com/devcontainers/base:debian", + "features": { + "ghcr.io/devcontainers/features/rust:1": { + "version": "nightly-2024-06-07" + }, + "ghcr.io/nlordell/features/foundry": {} + }, + "postCreateCommand": "sudo DEBIAN_FRONTEND=noninteractive apt-get update && sudo DEBIAN_FRONTEND=noninteractive apt-get install -y pkg-config libssl-dev", + "customizations": { + "vscode": { + "extensions": [ + "rust-lang.rust-analyzer", + "JuanBlanco.solidity" + ] + } + } } + diff --git a/.gitignore b/.gitignore index 3269660..d9babea 100644 --- a/.gitignore +++ b/.gitignore @@ -9,3 +9,6 @@ out/ # Dotenv file .env + +# Rust +/utils/target \ No newline at end of file diff --git a/utils/Cargo.lock b/utils/Cargo.lock new file mode 100644 index 0000000..059f60e --- /dev/null +++ b/utils/Cargo.lock @@ -0,0 +1,3409 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "addr2line" +version = "0.22.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e4503c46a5c0c7844e948c9a4d6acd9f50cccb4de1c48eb9e291ea17470c678" +dependencies = [ + "gimli", +] + +[[package]] +name = "adler" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" + +[[package]] +name = "ahash" +version = "0.8.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" +dependencies = [ + "cfg-if", + "once_cell", + "version_check", + "zerocopy", +] + +[[package]] +name = "allocator-api2" +version = "0.2.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c6cb57a04249c6480766f7f7cef5467412af1490f8d1e243141daddada3264f" + +[[package]] +name = "alloy" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9134b68e24175eff6c3c4d2bffeefb0a1b7435462130862c88d1524ca376e7e5" +dependencies = [ + "alloy-consensus", + "alloy-contract", + "alloy-core", + "alloy-eips", + "alloy-genesis", + "alloy-network", + "alloy-provider", + "alloy-pubsub", + "alloy-rpc-client", + "alloy-rpc-types", + "alloy-serde", + "alloy-signer", + "alloy-signer-local", + "alloy-transport", + "alloy-transport-http", + "alloy-transport-ipc", + "alloy-transport-ws", + "reqwest", +] + +[[package]] +name = "alloy-chains" +version = "0.1.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd47e5f8545bdf53beb545d3c039b4afa16040bdf69c50100581579b08776afd" +dependencies = [ + "num_enum", + "strum", +] + +[[package]] +name = "alloy-consensus" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a016bfa21193744d4c38b3f3ab845462284d129e5e23c7cc0fafca7e92d9db37" +dependencies = [ + "alloy-eips", + "alloy-primitives", + "alloy-rlp", + "alloy-serde", + "c-kzg", + "serde", +] + +[[package]] +name = "alloy-contract" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e47b2a620fd588d463ccf0f5931b41357664b293a8d31592768845a2a101bb9e" +dependencies = [ + "alloy-dyn-abi", + "alloy-json-abi", + "alloy-network", + "alloy-primitives", + "alloy-provider", + "alloy-pubsub", + "alloy-rpc-types-eth", + "alloy-sol-types", + "alloy-transport", + "futures", + "futures-util", + "thiserror", +] + +[[package]] +name = "alloy-core" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5af3faff14c12c8b11037e0a093dd157c3702becb8435577a2408534d0758315" +dependencies = [ + "alloy-dyn-abi", + "alloy-json-abi", + "alloy-primitives", + "alloy-sol-types", +] + +[[package]] +name = "alloy-dyn-abi" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb6e6436a9530f25010d13653e206fab4c9feddacf21a54de8d7311b275bc56b" +dependencies = [ + "alloy-json-abi", + "alloy-primitives", + "alloy-sol-type-parser", + "alloy-sol-types", + "const-hex", + "itoa", + "serde", + "serde_json", + "winnow 0.6.13", +] + +[[package]] +name = "alloy-eips" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32d6d8118b83b0489cfb7e6435106948add2b35217f4a5004ef895f613f60299" +dependencies = [ + "alloy-primitives", + "alloy-rlp", + "alloy-serde", + "c-kzg", + "derive_more", + "once_cell", + "serde", + "sha2", +] + +[[package]] +name = "alloy-genesis" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "894f33a7822abb018db56b10ab90398e63273ce1b5a33282afd186c132d764a6" +dependencies = [ + "alloy-primitives", + "alloy-serde", + "serde", +] + +[[package]] +name = "alloy-json-abi" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aaeaccd50238126e3a0ff9387c7c568837726ad4f4e399b528ca88104d6c25ef" +dependencies = [ + "alloy-primitives", + "alloy-sol-type-parser", + "serde", + "serde_json", +] + +[[package]] +name = "alloy-json-rpc" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61f0ae6e93b885cc70fe8dae449e7fd629751dbee8f59767eaaa7285333c5727" +dependencies = [ + "alloy-primitives", + "serde", + "serde_json", + "thiserror", + "tracing", +] + +[[package]] +name = "alloy-network" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc122cbee2b8523854cc11d87bcd5773741602c553d2d2d106d82eeb9c16924a" +dependencies = [ + "alloy-consensus", + "alloy-eips", + "alloy-json-rpc", + "alloy-primitives", + "alloy-rpc-types-eth", + "alloy-serde", + "alloy-signer", + "alloy-sol-types", + "async-trait", + "auto_impl", + "futures-utils-wasm", + "thiserror", +] + +[[package]] +name = "alloy-primitives" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f783611babedbbe90db3478c120fb5f5daacceffc210b39adc0af4fe0da70bad" +dependencies = [ + "alloy-rlp", + "bytes", + "cfg-if", + "const-hex", + "derive_more", + "hex-literal", + "itoa", + "k256", + "keccak-asm", + "proptest", + "rand", + "ruint", + "serde", + "tiny-keccak", +] + +[[package]] +name = "alloy-provider" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d5af289798fe8783acd0c5f10644d9d26f54a12bc52a083e4f3b31718e9bf92" +dependencies = [ + "alloy-chains", + "alloy-consensus", + "alloy-eips", + "alloy-json-rpc", + "alloy-network", + "alloy-primitives", + "alloy-pubsub", + "alloy-rpc-client", + "alloy-rpc-types-eth", + "alloy-transport", + "alloy-transport-http", + "alloy-transport-ipc", + "alloy-transport-ws", + "async-stream", + "async-trait", + "auto_impl", + "dashmap", + "futures", + "futures-utils-wasm", + "lru", + "pin-project", + "reqwest", + "serde", + "serde_json", + "tokio", + "tracing", + "url", +] + +[[package]] +name = "alloy-pubsub" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "702f330b7da123a71465ab9d39616292f8344a2811c28f2cc8d8438a69d79e35" +dependencies = [ + "alloy-json-rpc", + "alloy-primitives", + "alloy-transport", + "bimap", + "futures", + "serde", + "serde_json", + "tokio", + "tokio-stream", + "tower", + "tracing", +] + +[[package]] +name = "alloy-rlp" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b155716bab55763c95ba212806cf43d05bcc70e5f35b02bad20cf5ec7fe11fed" +dependencies = [ + "alloy-rlp-derive", + "arrayvec", + "bytes", +] + +[[package]] +name = "alloy-rlp-derive" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8037e03c7f462a063f28daec9fda285a9a89da003c552f8637a80b9c8fd96241" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.66", +] + +[[package]] +name = "alloy-rpc-client" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b40fcb53b2a9d0a78a4968b2eca8805a4b7011b9ee3fdfa2acaf137c5128f36b" +dependencies = [ + "alloy-json-rpc", + "alloy-primitives", + "alloy-pubsub", + "alloy-transport", + "alloy-transport-http", + "alloy-transport-ipc", + "alloy-transport-ws", + "futures", + "pin-project", + "reqwest", + "serde", + "serde_json", + "tokio", + "tokio-stream", + "tower", + "tracing", + "url", +] + +[[package]] +name = "alloy-rpc-types" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50f2fbe956a3e0f0975c798f488dc6be96b669544df3737e18f4a325b42f4c86" +dependencies = [ + "alloy-rpc-types-engine", + "alloy-rpc-types-eth", + "alloy-serde", +] + +[[package]] +name = "alloy-rpc-types-engine" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd473d98ec552f8229cd6d566bd2b0bbfc5bb4efcefbb5288c834aa8fd832020" +dependencies = [ + "alloy-consensus", + "alloy-eips", + "alloy-primitives", + "alloy-rlp", + "alloy-rpc-types-eth", + "alloy-serde", + "jsonwebtoken", + "rand", + "serde", + "thiserror", +] + +[[package]] +name = "alloy-rpc-types-eth" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "083f443a83b9313373817236a8f4bea09cca862618e9177d822aee579640a5d6" +dependencies = [ + "alloy-consensus", + "alloy-eips", + "alloy-primitives", + "alloy-rlp", + "alloy-serde", + "alloy-sol-types", + "itertools 0.13.0", + "serde", + "serde_json", + "thiserror", +] + +[[package]] +name = "alloy-serde" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d94da1c0c4e27cc344b05626fe22a89dc6b8b531b9475f3b7691dbf6913e4109" +dependencies = [ + "alloy-primitives", + "serde", + "serde_json", +] + +[[package]] +name = "alloy-signer" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "58d876be3afd8b78979540084ff63995292a26aa527ad0d44276405780aa0ffd" +dependencies = [ + "alloy-primitives", + "async-trait", + "auto_impl", + "elliptic-curve", + "k256", + "thiserror", +] + +[[package]] +name = "alloy-signer-local" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d40a37dc216c269b8a7244047cb1c18a9c69f7a0332ab2c4c2aa4cbb1a31468b" +dependencies = [ + "alloy-consensus", + "alloy-network", + "alloy-primitives", + "alloy-signer", + "async-trait", + "k256", + "rand", + "thiserror", +] + +[[package]] +name = "alloy-sol-macro" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4bad41a7c19498e3f6079f7744656328699f8ea3e783bdd10d85788cd439f572" +dependencies = [ + "alloy-sol-macro-expander", + "alloy-sol-macro-input", + "proc-macro-error", + "proc-macro2", + "quote", + "syn 2.0.66", +] + +[[package]] +name = "alloy-sol-macro-expander" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd9899da7d011b4fe4c406a524ed3e3f963797dbc93b45479d60341d3a27b252" +dependencies = [ + "alloy-json-abi", + "alloy-sol-macro-input", + "const-hex", + "heck", + "indexmap", + "proc-macro-error", + "proc-macro2", + "quote", + "syn 2.0.66", + "syn-solidity", + "tiny-keccak", +] + +[[package]] +name = "alloy-sol-macro-input" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d32d595768fdc61331a132b6f65db41afae41b9b97d36c21eb1b955c422a7e60" +dependencies = [ + "alloy-json-abi", + "const-hex", + "dunce", + "heck", + "proc-macro2", + "quote", + "serde_json", + "syn 2.0.66", + "syn-solidity", +] + +[[package]] +name = "alloy-sol-type-parser" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baa2fbd22d353d8685bd9fee11ba2d8b5c3b1d11e56adb3265fcf1f32bfdf404" +dependencies = [ + "winnow 0.6.13", +] + +[[package]] +name = "alloy-sol-types" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a49042c6d3b66a9fe6b2b5a8bf0d39fc2ae1ee0310a2a26ffedd79fb097878dd" +dependencies = [ + "alloy-json-abi", + "alloy-primitives", + "alloy-sol-macro", + "const-hex", + "serde", +] + +[[package]] +name = "alloy-transport" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "245af9541f0a0dbd5258669c80dfe3af118164cacec978a520041fc130550deb" +dependencies = [ + "alloy-json-rpc", + "base64 0.22.1", + "futures-util", + "futures-utils-wasm", + "serde", + "serde_json", + "thiserror", + "tokio", + "tower", + "url", +] + +[[package]] +name = "alloy-transport-http" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5619c017e1fdaa1db87f9182f4f0ed97c53d674957f4902fba655e972d359c6c" +dependencies = [ + "alloy-json-rpc", + "alloy-transport", + "reqwest", + "serde_json", + "tower", + "tracing", + "url", +] + +[[package]] +name = "alloy-transport-ipc" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "173cefa110afac7a53cf2e75519327761f2344d305eea2993f3af1b2c1fc1c44" +dependencies = [ + "alloy-json-rpc", + "alloy-pubsub", + "alloy-transport", + "bytes", + "futures", + "interprocess", + "pin-project", + "serde_json", + "tokio", + "tokio-util", + "tracing", +] + +[[package]] +name = "alloy-transport-ws" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c0aff8af5be5e58856c5cdd1e46db2c67c7ecd3a652d9100b4822c96c899947" +dependencies = [ + "alloy-pubsub", + "alloy-transport", + "futures", + "http", + "rustls", + "serde_json", + "tokio", + "tokio-tungstenite", + "tracing", + "ws_stream_wasm", +] + +[[package]] +name = "ark-ff" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b3235cc41ee7a12aaaf2c575a2ad7b46713a8a50bda2fc3b003a04845c05dd6" +dependencies = [ + "ark-ff-asm 0.3.0", + "ark-ff-macros 0.3.0", + "ark-serialize 0.3.0", + "ark-std 0.3.0", + "derivative", + "num-bigint", + "num-traits", + "paste", + "rustc_version 0.3.3", + "zeroize", +] + +[[package]] +name = "ark-ff" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec847af850f44ad29048935519032c33da8aa03340876d351dfab5660d2966ba" +dependencies = [ + "ark-ff-asm 0.4.2", + "ark-ff-macros 0.4.2", + "ark-serialize 0.4.2", + "ark-std 0.4.0", + "derivative", + "digest 0.10.7", + "itertools 0.10.5", + "num-bigint", + "num-traits", + "paste", + "rustc_version 0.4.0", + "zeroize", +] + +[[package]] +name = "ark-ff-asm" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db02d390bf6643fb404d3d22d31aee1c4bc4459600aef9113833d17e786c6e44" +dependencies = [ + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ark-ff-asm" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ed4aa4fe255d0bc6d79373f7e31d2ea147bcf486cba1be5ba7ea85abdb92348" +dependencies = [ + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ark-ff-macros" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db2fd794a08ccb318058009eefdf15bcaaaaf6f8161eb3345f907222bac38b20" +dependencies = [ + "num-bigint", + "num-traits", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ark-ff-macros" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7abe79b0e4288889c4574159ab790824d0033b9fdcb2a112a3182fac2e514565" +dependencies = [ + "num-bigint", + "num-traits", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ark-serialize" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d6c2b318ee6e10f8c2853e73a83adc0ccb88995aa978d8a3408d492ab2ee671" +dependencies = [ + "ark-std 0.3.0", + "digest 0.9.0", +] + +[[package]] +name = "ark-serialize" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adb7b85a02b83d2f22f89bd5cac66c9c89474240cb6207cb1efc16d098e822a5" +dependencies = [ + "ark-std 0.4.0", + "digest 0.10.7", + "num-bigint", +] + +[[package]] +name = "ark-std" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1df2c09229cbc5a028b1d70e00fdb2acee28b1055dfb5ca73eea49c5a25c4e7c" +dependencies = [ + "num-traits", + "rand", +] + +[[package]] +name = "ark-std" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94893f1e0c6eeab764ade8dc4c0db24caf4fe7cbbaafc0eba0a9030f447b5185" +dependencies = [ + "num-traits", + "rand", +] + +[[package]] +name = "arrayvec" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" + +[[package]] +name = "async-stream" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd56dd203fef61ac097dd65721a419ddccb106b2d2b70ba60a6b529f03961a51" +dependencies = [ + "async-stream-impl", + "futures-core", + "pin-project-lite", +] + +[[package]] +name = "async-stream-impl" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16e62a023e7c117e27523144c5d2459f4397fcc3cab0085af8e2224f643a0193" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.66", +] + +[[package]] +name = "async-trait" +version = "0.1.80" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6fa2087f2753a7da8cc1c0dbfcf89579dd57458e36769de5ac750b4671737ca" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.66", +] + +[[package]] +name = "async_io_stream" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6d7b9decdf35d8908a7e3ef02f64c5e9b1695e230154c0e8de3969142d9b94c" +dependencies = [ + "futures", + "pharos", + "rustc_version 0.4.0", +] + +[[package]] +name = "auto_impl" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c87f3f15e7794432337fc718554eaa4dc8f04c9677a950ffe366f20a162ae42" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.66", +] + +[[package]] +name = "autocfg" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" + +[[package]] +name = "backtrace" +version = "0.3.73" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5cc23269a4f8976d0a4d2e7109211a419fe30e8d88d677cd60b6bc79c5732e0a" +dependencies = [ + "addr2line", + "cc", + "cfg-if", + "libc", + "miniz_oxide", + "object", + "rustc-demangle", +] + +[[package]] +name = "base16ct" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf" + +[[package]] +name = "base64" +version = "0.21.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" + +[[package]] +name = "base64" +version = "0.22.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" + +[[package]] +name = "base64ct" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" + +[[package]] +name = "bimap" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "230c5f1ca6a325a32553f8640d31ac9b49f2411e901e427570154868b46da4f7" + +[[package]] +name = "bit-set" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0700ddab506f33b20a03b13996eccd309a48e5ff77d0d95926aa0210fb4e95f1" +dependencies = [ + "bit-vec", +] + +[[package]] +name = "bit-vec" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb" + +[[package]] +name = "bitflags" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf4b9d6a944f767f8e5e0db018570623c85f3d925ac718db4e06d0187adb21c1" + +[[package]] +name = "bitvec" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c" +dependencies = [ + "funty", + "radium", + "tap", + "wyz", +] + +[[package]] +name = "block-buffer" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +dependencies = [ + "generic-array", +] + +[[package]] +name = "blst" +version = "0.3.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62dc83a094a71d43eeadd254b1ec2d24cb6a0bb6cadce00df51f0db594711a32" +dependencies = [ + "cc", + "glob", + "threadpool", + "zeroize", +] + +[[package]] +name = "bumpalo" +version = "3.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" + +[[package]] +name = "byte-slice-cast" +version = "1.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3ac9f8b63eca6fd385229b3675f6cc0dc5c8a5c8a54a59d4f52ffd670d87b0c" + +[[package]] +name = "byteorder" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" + +[[package]] +name = "bytes" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "514de17de45fdb8dc022b1a7975556c53c86f9f0aa5f534b98977b171857c2c9" +dependencies = [ + "serde", +] + +[[package]] +name = "c-kzg" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cdf100c4cea8f207e883ff91ca886d621d8a166cb04971dfaa9bb8fd99ed95df" +dependencies = [ + "blst", + "cc", + "glob", + "hex", + "libc", + "serde", +] + +[[package]] +name = "cc" +version = "1.0.99" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96c51067fd44124faa7f870b4b1c969379ad32b2ba805aa959430ceaa384f695" + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "const-hex" +version = "1.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94fb8a24a26d37e1ffd45343323dc9fe6654ceea44c12f2fcb3d7ac29e610bc6" +dependencies = [ + "cfg-if", + "cpufeatures", + "hex", + "proptest", + "serde", +] + +[[package]] +name = "const-oid" +version = "0.9.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" + +[[package]] +name = "convert_case" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e" + +[[package]] +name = "core-foundation" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "core-foundation-sys" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" + +[[package]] +name = "cow-amm-indexer" +version = "0.1.0" +dependencies = [ + "alloy", + "eyre", + "futures", + "futures-util", + "tokio", +] + +[[package]] +name = "cpufeatures" +version = "0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53fe5e26ff1b7aef8bca9c6080520cfb8d9333c7568e1829cef191a9723e5504" +dependencies = [ + "libc", +] + +[[package]] +name = "crunchy" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" + +[[package]] +name = "crypto-bigint" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76" +dependencies = [ + "generic-array", + "rand_core", + "subtle", + "zeroize", +] + +[[package]] +name = "crypto-common" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +dependencies = [ + "generic-array", + "typenum", +] + +[[package]] +name = "dashmap" +version = "5.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "978747c1d849a7d2ee5e8adc0159961c48fb7e5db2f06af6723b80123bb53856" +dependencies = [ + "cfg-if", + "hashbrown", + "lock_api", + "once_cell", + "parking_lot_core", +] + +[[package]] +name = "data-encoding" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8566979429cf69b49a5c740c60791108e86440e8be149bbea4fe54d2c32d6e2" + +[[package]] +name = "der" +version = "0.7.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f55bf8e7b65898637379c1b74eb1551107c8294ed26d855ceb9fd1a09cfc9bc0" +dependencies = [ + "const-oid", + "zeroize", +] + +[[package]] +name = "deranged" +version = "0.3.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4" +dependencies = [ + "powerfmt", +] + +[[package]] +name = "derivative" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "derive_more" +version = "0.99.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f33878137e4dafd7fa914ad4e259e18a4e8e532b9617a2d0150262bf53abfce" +dependencies = [ + "convert_case", + "proc-macro2", + "quote", + "rustc_version 0.4.0", + "syn 2.0.66", +] + +[[package]] +name = "digest" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" +dependencies = [ + "generic-array", +] + +[[package]] +name = "digest" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +dependencies = [ + "block-buffer", + "const-oid", + "crypto-common", + "subtle", +] + +[[package]] +name = "doctest-file" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aac81fa3e28d21450aa4d2ac065992ba96a1d7303efbce51a95f4fd175b67562" + +[[package]] +name = "dunce" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56ce8c6da7551ec6c462cbaf3bfbc75131ebbfa1c944aeaa9dab51ca1c5f0c3b" + +[[package]] +name = "ecdsa" +version = "0.16.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee27f32b5c5292967d2d4a9d7f1e0b0aed2c15daded5a60300e4abb9d8020bca" +dependencies = [ + "der", + "digest 0.10.7", + "elliptic-curve", + "rfc6979", + "signature", + "spki", +] + +[[package]] +name = "either" +version = "1.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3dca9240753cf90908d7e4aac30f630662b02aebaa1b58a3cadabdb23385b58b" + +[[package]] +name = "elliptic-curve" +version = "0.13.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5e6043086bf7973472e0c7dff2142ea0b680d30e18d9cc40f267efbf222bd47" +dependencies = [ + "base16ct", + "crypto-bigint", + "digest 0.10.7", + "ff", + "generic-array", + "group", + "pkcs8", + "rand_core", + "sec1", + "subtle", + "zeroize", +] + +[[package]] +name = "equivalent" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" + +[[package]] +name = "errno" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba" +dependencies = [ + "libc", + "windows-sys 0.52.0", +] + +[[package]] +name = "eyre" +version = "0.6.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7cd915d99f24784cdc19fd37ef22b97e3ff0ae756c7e492e9fbfe897d61e2aec" +dependencies = [ + "indenter", + "once_cell", +] + +[[package]] +name = "fastrand" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fc0510504f03c51ada170672ac806f1f105a88aa97a5281117e1ddc3368e51a" + +[[package]] +name = "fastrlp" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "139834ddba373bbdd213dffe02c8d110508dcf1726c2be27e8d1f7d7e1856418" +dependencies = [ + "arrayvec", + "auto_impl", + "bytes", +] + +[[package]] +name = "ff" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ded41244b729663b1e574f1b4fb731469f69f79c17667b5d776b16cda0479449" +dependencies = [ + "rand_core", + "subtle", +] + +[[package]] +name = "fixed-hash" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "835c052cb0c08c1acf6ffd71c022172e18723949c8282f2b9f27efbc51e64534" +dependencies = [ + "byteorder", + "rand", + "rustc-hex", + "static_assertions", +] + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "foreign-types" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" +dependencies = [ + "foreign-types-shared", +] + +[[package]] +name = "foreign-types-shared" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" + +[[package]] +name = "form_urlencoded" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" +dependencies = [ + "percent-encoding", +] + +[[package]] +name = "funty" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" + +[[package]] +name = "futures" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "645c6916888f6cb6350d2550b80fb63e734897a8498abe35cfb732b6487804b0" +dependencies = [ + "futures-channel", + "futures-core", + "futures-executor", + "futures-io", + "futures-sink", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-channel" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78" +dependencies = [ + "futures-core", + "futures-sink", +] + +[[package]] +name = "futures-core" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d" + +[[package]] +name = "futures-executor" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a576fc72ae164fca6b9db127eaa9a9dda0d61316034f33a0a0d4eda41f02b01d" +dependencies = [ + "futures-core", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-io" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1" + +[[package]] +name = "futures-macro" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.66", +] + +[[package]] +name = "futures-sink" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5" + +[[package]] +name = "futures-task" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004" + +[[package]] +name = "futures-util" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48" +dependencies = [ + "futures-channel", + "futures-core", + "futures-io", + "futures-macro", + "futures-sink", + "futures-task", + "memchr", + "pin-project-lite", + "pin-utils", + "slab", +] + +[[package]] +name = "futures-utils-wasm" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42012b0f064e01aa58b545fe3727f90f7dd4020f4a3ea735b50344965f5a57e9" + +[[package]] +name = "generic-array" +version = "0.14.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +dependencies = [ + "typenum", + "version_check", + "zeroize", +] + +[[package]] +name = "getrandom" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" +dependencies = [ + "cfg-if", + "js-sys", + "libc", + "wasi", + "wasm-bindgen", +] + +[[package]] +name = "gimli" +version = "0.29.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "40ecd4077b5ae9fd2e9e169b102c6c330d0605168eb0e8bf79952b256dbefffd" + +[[package]] +name = "glob" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" + +[[package]] +name = "group" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63" +dependencies = [ + "ff", + "rand_core", + "subtle", +] + +[[package]] +name = "hashbrown" +version = "0.14.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" +dependencies = [ + "ahash", + "allocator-api2", +] + +[[package]] +name = "heck" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" + +[[package]] +name = "hermit-abi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" + +[[package]] +name = "hex" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" +dependencies = [ + "serde", +] + +[[package]] +name = "hex-literal" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" + +[[package]] +name = "hmac" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" +dependencies = [ + "digest 0.10.7", +] + +[[package]] +name = "http" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "21b9ddb458710bc376481b842f5da65cdf31522de232c1ca8146abce2a358258" +dependencies = [ + "bytes", + "fnv", + "itoa", +] + +[[package]] +name = "http-body" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1cac85db508abc24a2e48553ba12a996e87244a0395ce011e62b37158745d643" +dependencies = [ + "bytes", + "http", +] + +[[package]] +name = "http-body-util" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "793429d76616a256bcb62c2a2ec2bed781c8307e797e2598c50010f2bee2544f" +dependencies = [ + "bytes", + "futures-util", + "http", + "http-body", + "pin-project-lite", +] + +[[package]] +name = "httparse" +version = "1.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fcc0b4a115bf80b728eb8ea024ad5bd707b615bfed49e0665b6e0f86fd082d9" + +[[package]] +name = "hyper" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe575dd17d0862a9a33781c8c4696a55c320909004a67a00fb286ba8b1bc496d" +dependencies = [ + "bytes", + "futures-channel", + "futures-util", + "http", + "http-body", + "httparse", + "itoa", + "pin-project-lite", + "smallvec", + "tokio", + "want", +] + +[[package]] +name = "hyper-tls" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0" +dependencies = [ + "bytes", + "http-body-util", + "hyper", + "hyper-util", + "native-tls", + "tokio", + "tokio-native-tls", + "tower-service", +] + +[[package]] +name = "hyper-util" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b875924a60b96e5d7b9ae7b066540b1dd1cbd90d1828f54c92e02a283351c56" +dependencies = [ + "bytes", + "futures-channel", + "futures-util", + "http", + "http-body", + "hyper", + "pin-project-lite", + "socket2", + "tokio", + "tower", + "tower-service", + "tracing", +] + +[[package]] +name = "idna" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" +dependencies = [ + "unicode-bidi", + "unicode-normalization", +] + +[[package]] +name = "impl-codec" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba6a270039626615617f3f36d15fc827041df3b78c439da2cadfa47455a77f2f" +dependencies = [ + "parity-scale-codec", +] + +[[package]] +name = "impl-trait-for-tuples" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11d7a9f6330b71fea57921c9b61c47ee6e84f72d394754eff6163ae67e7395eb" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "indenter" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce23b50ad8242c51a442f3ff322d56b02f08852c77e4c0b4d3fd684abc89c683" + +[[package]] +name = "indexmap" +version = "2.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26" +dependencies = [ + "equivalent", + "hashbrown", +] + +[[package]] +name = "interprocess" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67bafc2f5dbdad79a6d925649758d5472647b416028099f0b829d1b67fdd47d3" +dependencies = [ + "doctest-file", + "futures-core", + "libc", + "recvmsg", + "tokio", + "widestring", + "windows-sys 0.52.0", +] + +[[package]] +name = "ipnet" +version = "2.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3" + +[[package]] +name = "itertools" +version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" +dependencies = [ + "either", +] + +[[package]] +name = "itertools" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" +dependencies = [ + "either", +] + +[[package]] +name = "itoa" +version = "1.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" + +[[package]] +name = "js-sys" +version = "0.3.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29c15563dc2726973df627357ce0c9ddddbea194836909d655df6a75d2cf296d" +dependencies = [ + "wasm-bindgen", +] + +[[package]] +name = "jsonwebtoken" +version = "9.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9ae10193d25051e74945f1ea2d0b42e03cc3b890f7e4cc5faa44997d808193f" +dependencies = [ + "base64 0.21.7", + "js-sys", + "pem", + "ring", + "serde", + "serde_json", + "simple_asn1", +] + +[[package]] +name = "k256" +version = "0.13.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "956ff9b67e26e1a6a866cb758f12c6f8746208489e3e4a4b5580802f2f0a587b" +dependencies = [ + "cfg-if", + "ecdsa", + "elliptic-curve", + "once_cell", + "sha2", +] + +[[package]] +name = "keccak-asm" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47a3633291834c4fbebf8673acbc1b04ec9d151418ff9b8e26dcd79129928758" +dependencies = [ + "digest 0.10.7", + "sha3-asm", +] + +[[package]] +name = "lazy_static" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" + +[[package]] +name = "libc" +version = "0.2.155" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97b3888a4aecf77e811145cadf6eef5901f4782c53886191b2f693f24761847c" + +[[package]] +name = "libm" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058" + +[[package]] +name = "linux-raw-sys" +version = "0.4.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" + +[[package]] +name = "lock_api" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" +dependencies = [ + "autocfg", + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c" + +[[package]] +name = "lru" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3262e75e648fce39813cb56ac41f3c3e3f65217ebf3844d818d1f9398cfb0dc" +dependencies = [ + "hashbrown", +] + +[[package]] +name = "memchr" +version = "2.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" + +[[package]] +name = "mime" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" + +[[package]] +name = "miniz_oxide" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8a240ddb74feaf34a79a7add65a741f3167852fba007066dcac1ca548d89c08" +dependencies = [ + "adler", +] + +[[package]] +name = "mio" +version = "0.8.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c" +dependencies = [ + "libc", + "wasi", + "windows-sys 0.48.0", +] + +[[package]] +name = "native-tls" +version = "0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8614eb2c83d59d1c8cc974dd3f920198647674a0a035e1af1fa58707e317466" +dependencies = [ + "libc", + "log", + "openssl", + "openssl-probe", + "openssl-sys", + "schannel", + "security-framework", + "security-framework-sys", + "tempfile", +] + +[[package]] +name = "num-bigint" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c165a9ab64cf766f73521c0dd2cfdff64f488b8f0b3e621face3462d3db536d7" +dependencies = [ + "num-integer", + "num-traits", +] + +[[package]] +name = "num-conv" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" + +[[package]] +name = "num-integer" +version = "0.1.46" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" +dependencies = [ + "num-traits", +] + +[[package]] +name = "num-traits" +version = "0.2.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" +dependencies = [ + "autocfg", + "libm", +] + +[[package]] +name = "num_cpus" +version = "1.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" +dependencies = [ + "hermit-abi", + "libc", +] + +[[package]] +name = "num_enum" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02339744ee7253741199f897151b38e72257d13802d4ee837285cc2990a90845" +dependencies = [ + "num_enum_derive", +] + +[[package]] +name = "num_enum_derive" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "681030a937600a36906c185595136d26abfebb4aa9c65701cefcaf8578bb982b" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.66", +] + +[[package]] +name = "object" +version = "0.36.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "576dfe1fc8f9df304abb159d767a29d0476f7750fbf8aa7ad07816004a207434" +dependencies = [ + "memchr", +] + +[[package]] +name = "once_cell" +version = "1.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" + +[[package]] +name = "openssl" +version = "0.10.64" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95a0481286a310808298130d22dd1fef0fa571e05a8f44ec801801e84b216b1f" +dependencies = [ + "bitflags", + "cfg-if", + "foreign-types", + "libc", + "once_cell", + "openssl-macros", + "openssl-sys", +] + +[[package]] +name = "openssl-macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.66", +] + +[[package]] +name = "openssl-probe" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" + +[[package]] +name = "openssl-sys" +version = "0.9.102" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c597637d56fbc83893a35eb0dd04b2b8e7a50c91e64e9493e398b5df4fb45fa2" +dependencies = [ + "cc", + "libc", + "pkg-config", + "vcpkg", +] + +[[package]] +name = "parity-scale-codec" +version = "3.6.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "306800abfa29c7f16596b5970a588435e3d5b3149683d00c12b699cc19f895ee" +dependencies = [ + "arrayvec", + "bitvec", + "byte-slice-cast", + "impl-trait-for-tuples", + "parity-scale-codec-derive", + "serde", +] + +[[package]] +name = "parity-scale-codec-derive" +version = "3.6.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d830939c76d294956402033aee57a6da7b438f2294eb94864c37b0569053a42c" +dependencies = [ + "proc-macro-crate", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall", + "smallvec", + "windows-targets 0.52.5", +] + +[[package]] +name = "paste" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" + +[[package]] +name = "pem" +version = "3.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e459365e590736a54c3fa561947c84837534b8e9af6fc5bf781307e82658fae" +dependencies = [ + "base64 0.22.1", + "serde", +] + +[[package]] +name = "percent-encoding" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" + +[[package]] +name = "pest" +version = "2.7.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "560131c633294438da9f7c4b08189194b20946c8274c6b9e38881a7874dc8ee8" +dependencies = [ + "memchr", + "thiserror", + "ucd-trie", +] + +[[package]] +name = "pharos" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e9567389417feee6ce15dd6527a8a1ecac205ef62c2932bcf3d9f6fc5b78b414" +dependencies = [ + "futures", + "rustc_version 0.4.0", +] + +[[package]] +name = "pin-project" +version = "1.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6bf43b791c5b9e34c3d182969b4abb522f9343702850a2e57f460d00d09b4b3" +dependencies = [ + "pin-project-internal", +] + +[[package]] +name = "pin-project-internal" +version = "1.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.66", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "pkcs8" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" +dependencies = [ + "der", + "spki", +] + +[[package]] +name = "pkg-config" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" + +[[package]] +name = "powerfmt" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" + +[[package]] +name = "ppv-lite86" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" + +[[package]] +name = "primitive-types" +version = "0.12.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b34d9fd68ae0b74a41b21c03c2f62847aa0ffea044eee893b4c140b37e244e2" +dependencies = [ + "fixed-hash", + "impl-codec", + "uint", +] + +[[package]] +name = "proc-macro-crate" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d37c51ca738a55da99dc0c4a34860fd675453b8b36209178c2249bb13651284" +dependencies = [ + "toml_edit", +] + +[[package]] +name = "proc-macro-error" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" +dependencies = [ + "proc-macro-error-attr", + "proc-macro2", + "quote", + "syn 1.0.109", + "version_check", +] + +[[package]] +name = "proc-macro-error-attr" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" +dependencies = [ + "proc-macro2", + "quote", + "version_check", +] + +[[package]] +name = "proc-macro2" +version = "1.0.85" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22244ce15aa966053a896d1accb3a6e68469b97c7f33f284b99f0d576879fc23" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "proptest" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "31b476131c3c86cb68032fdc5cb6d5a1045e3e42d96b69fa599fd77701e1f5bf" +dependencies = [ + "bit-set", + "bit-vec", + "bitflags", + "lazy_static", + "num-traits", + "rand", + "rand_chacha", + "rand_xorshift", + "regex-syntax", + "rusty-fork", + "tempfile", + "unarray", +] + +[[package]] +name = "quick-error" +version = "1.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" + +[[package]] +name = "quote" +version = "1.0.36" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "radium" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" + +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "libc", + "rand_chacha", + "rand_core", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom", +] + +[[package]] +name = "rand_xorshift" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d25bf25ec5ae4a3f1b92f929810509a2f53d7dca2f50b794ff57e3face536c8f" +dependencies = [ + "rand_core", +] + +[[package]] +name = "recvmsg" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3edd4d5d42c92f0a659926464d4cce56b562761267ecf0f469d85b7de384175" + +[[package]] +name = "redox_syscall" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c82cf8cff14456045f55ec4241383baeff27af886adb72ffb2162f99911de0fd" +dependencies = [ + "bitflags", +] + +[[package]] +name = "regex-syntax" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a66a03ae7c801facd77a29370b4faec201768915ac14a721ba36f20bc9c209b" + +[[package]] +name = "reqwest" +version = "0.12.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7d6d2a27d57148378eb5e111173f4276ad26340ecc5c49a4a2152167a2d6a37" +dependencies = [ + "base64 0.22.1", + "bytes", + "futures-core", + "futures-util", + "http", + "http-body", + "http-body-util", + "hyper", + "hyper-tls", + "hyper-util", + "ipnet", + "js-sys", + "log", + "mime", + "native-tls", + "once_cell", + "percent-encoding", + "pin-project-lite", + "rustls-pemfile", + "serde", + "serde_json", + "serde_urlencoded", + "sync_wrapper", + "tokio", + "tokio-native-tls", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "winreg", +] + +[[package]] +name = "rfc6979" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8dd2a808d456c4a54e300a23e9f5a67e122c3024119acbfd73e3bf664491cb2" +dependencies = [ + "hmac", + "subtle", +] + +[[package]] +name = "ring" +version = "0.17.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d" +dependencies = [ + "cc", + "cfg-if", + "getrandom", + "libc", + "spin", + "untrusted", + "windows-sys 0.52.0", +] + +[[package]] +name = "rlp" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb919243f34364b6bd2fc10ef797edbfa75f33c252e7998527479c6d6b47e1ec" +dependencies = [ + "bytes", + "rustc-hex", +] + +[[package]] +name = "ruint" +version = "1.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c3cc4c2511671f327125da14133d0c5c5d137f006a1017a16f557bc85b16286" +dependencies = [ + "alloy-rlp", + "ark-ff 0.3.0", + "ark-ff 0.4.2", + "bytes", + "fastrlp", + "num-bigint", + "num-traits", + "parity-scale-codec", + "primitive-types", + "proptest", + "rand", + "rlp", + "ruint-macro", + "serde", + "valuable", + "zeroize", +] + +[[package]] +name = "ruint-macro" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48fd7bd8a6377e15ad9d42a8ec25371b94ddc67abe7c8b9127bec79bebaaae18" + +[[package]] +name = "rustc-demangle" +version = "0.1.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" + +[[package]] +name = "rustc-hex" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e75f6a532d0fd9f7f13144f392b6ad56a32696bfcd9c78f797f16bbb6f072d6" + +[[package]] +name = "rustc_version" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0dfe2087c51c460008730de8b57e6a320782fbfb312e1f4d520e6c6fae155ee" +dependencies = [ + "semver 0.11.0", +] + +[[package]] +name = "rustc_version" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" +dependencies = [ + "semver 1.0.23", +] + +[[package]] +name = "rustix" +version = "0.38.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70dc5ec042f7a43c4a73241207cecc9873a06d45debb38b329f8541d85c2730f" +dependencies = [ + "bitflags", + "errno", + "libc", + "linux-raw-sys", + "windows-sys 0.52.0", +] + +[[package]] +name = "rustls" +version = "0.23.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05cff451f60db80f490f3c182b77c35260baace73209e9cdbbe526bfe3a4d402" +dependencies = [ + "once_cell", + "ring", + "rustls-pki-types", + "rustls-webpki", + "subtle", + "zeroize", +] + +[[package]] +name = "rustls-pemfile" +version = "2.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29993a25686778eb88d4189742cd713c9bce943bc54251a33509dc63cbacf73d" +dependencies = [ + "base64 0.22.1", + "rustls-pki-types", +] + +[[package]] +name = "rustls-pki-types" +version = "1.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "976295e77ce332211c0d24d92c0e83e50f5c5f046d11082cea19f3df13a3562d" + +[[package]] +name = "rustls-webpki" +version = "0.102.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff448f7e92e913c4b7d4c6d8e4540a1724b319b4152b8aef6d4cf8339712b33e" +dependencies = [ + "ring", + "rustls-pki-types", + "untrusted", +] + +[[package]] +name = "rustversion" +version = "1.0.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "955d28af4278de8121b7ebeb796b6a45735dc01436d898801014aced2773a3d6" + +[[package]] +name = "rusty-fork" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb3dcc6e454c328bb824492db107ab7c0ae8fcffe4ad210136ef014458c1bc4f" +dependencies = [ + "fnv", + "quick-error", + "tempfile", + "wait-timeout", +] + +[[package]] +name = "ryu" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" + +[[package]] +name = "schannel" +version = "0.1.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbc91545643bcf3a0bbb6569265615222618bdf33ce4ffbbd13c4bbd4c093534" +dependencies = [ + "windows-sys 0.52.0", +] + +[[package]] +name = "scopeguard" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + +[[package]] +name = "sec1" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dc" +dependencies = [ + "base16ct", + "der", + "generic-array", + "pkcs8", + "subtle", + "zeroize", +] + +[[package]] +name = "security-framework" +version = "2.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c627723fd09706bacdb5cf41499e95098555af3c3c29d014dc3c458ef6be11c0" +dependencies = [ + "bitflags", + "core-foundation", + "core-foundation-sys", + "libc", + "security-framework-sys", +] + +[[package]] +name = "security-framework-sys" +version = "2.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "317936bbbd05227752583946b9e66d7ce3b489f84e11a94a510b4437fef407d7" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "semver" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f301af10236f6df4160f7c3f04eec6dbc70ace82d23326abad5edee88801c6b6" +dependencies = [ + "semver-parser", +] + +[[package]] +name = "semver" +version = "1.0.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" + +[[package]] +name = "semver-parser" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00b0bef5b7f9e0df16536d3961cfb6e84331c065b4066afb39768d0e319411f7" +dependencies = [ + "pest", +] + +[[package]] +name = "send_wrapper" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd0b0ec5f1c1ca621c432a25813d8d60c88abe6d3e08a3eb9cf37d97a0fe3d73" + +[[package]] +name = "serde" +version = "1.0.203" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7253ab4de971e72fb7be983802300c30b5a7f0c2e56fab8abfc6a214307c0094" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.203" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "500cbc0ebeb6f46627f50f3f5811ccf6bf00643be300b4c3eabc0ef55dc5b5ba" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.66", +] + +[[package]] +name = "serde_json" +version = "1.0.117" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "455182ea6142b14f93f4bc5320a2b31c1f266b66a4a5c858b013302a5d8cbfc3" +dependencies = [ + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "serde_urlencoded" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" +dependencies = [ + "form_urlencoded", + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "sha1" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest 0.10.7", +] + +[[package]] +name = "sha2" +version = "0.10.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest 0.10.7", +] + +[[package]] +name = "sha3-asm" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9b57fd861253bff08bb1919e995f90ba8f4889de2726091c8876f3a4e823b40" +dependencies = [ + "cc", + "cfg-if", +] + +[[package]] +name = "signature" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" +dependencies = [ + "digest 0.10.7", + "rand_core", +] + +[[package]] +name = "simple_asn1" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adc4e5204eb1910f40f9cfa375f6f05b68c3abac4b6fd879c8ff5e7ae8a0a085" +dependencies = [ + "num-bigint", + "num-traits", + "thiserror", + "time", +] + +[[package]] +name = "slab" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" +dependencies = [ + "autocfg", +] + +[[package]] +name = "smallvec" +version = "1.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" + +[[package]] +name = "socket2" +version = "0.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce305eb0b4296696835b71df73eb912e0f1ffd2556a501fcede6e0c50349191c" +dependencies = [ + "libc", + "windows-sys 0.52.0", +] + +[[package]] +name = "spin" +version = "0.9.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" + +[[package]] +name = "spki" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d" +dependencies = [ + "base64ct", + "der", +] + +[[package]] +name = "static_assertions" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" + +[[package]] +name = "strum" +version = "0.26.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d8cec3501a5194c432b2b7976db6b7d10ec95c253208b45f83f7136aa985e29" +dependencies = [ + "strum_macros", +] + +[[package]] +name = "strum_macros" +version = "0.26.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c6bee85a5a24955dc440386795aa378cd9cf82acd5f764469152d2270e581be" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "rustversion", + "syn 2.0.66", +] + +[[package]] +name = "subtle" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d0208408ba0c3df17ed26eb06992cb1a1268d41b2c0e12e65203fbe3972cee5" + +[[package]] +name = "syn" +version = "1.0.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "2.0.66" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c42f3f41a2de00b01c0aaad383c5a45241efc8b2d1eda5661812fda5f3cdcff5" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn-solidity" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8d71e19bca02c807c9faa67b5a47673ff231b6e7449b251695188522f1dc44b2" +dependencies = [ + "paste", + "proc-macro2", + "quote", + "syn 2.0.66", +] + +[[package]] +name = "sync_wrapper" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7065abeca94b6a8a577f9bd45aa0867a2238b74e8eb67cf10d492bc39351394" + +[[package]] +name = "tap" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" + +[[package]] +name = "tempfile" +version = "3.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85b77fafb263dd9d05cbeac119526425676db3784113aa9295c88498cbf8bff1" +dependencies = [ + "cfg-if", + "fastrand", + "rustix", + "windows-sys 0.52.0", +] + +[[package]] +name = "thiserror" +version = "1.0.61" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c546c80d6be4bc6a00c0f01730c08df82eaa7a7a61f11d656526506112cc1709" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.61" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46c3384250002a6d5af4d114f2845d37b57521033f30d5c3f46c4d70e1197533" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.66", +] + +[[package]] +name = "threadpool" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d050e60b33d41c19108b32cea32164033a9013fe3b46cbd4457559bfbf77afaa" +dependencies = [ + "num_cpus", +] + +[[package]] +name = "time" +version = "0.3.36" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5dfd88e563464686c916c7e46e623e520ddc6d79fa6641390f2e3fa86e83e885" +dependencies = [ + "deranged", + "itoa", + "num-conv", + "powerfmt", + "serde", + "time-core", + "time-macros", +] + +[[package]] +name = "time-core" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" + +[[package]] +name = "time-macros" +version = "0.2.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f252a68540fde3a3877aeea552b832b40ab9a69e318efd078774a01ddee1ccf" +dependencies = [ + "num-conv", + "time-core", +] + +[[package]] +name = "tiny-keccak" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c9d3793400a45f954c52e73d068316d76b6f4e36977e3fcebb13a2721e80237" +dependencies = [ + "crunchy", +] + +[[package]] +name = "tinyvec" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" +dependencies = [ + "tinyvec_macros", +] + +[[package]] +name = "tinyvec_macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" + +[[package]] +name = "tokio" +version = "1.38.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba4f4a02a7a80d6f274636f0aa95c7e383b912d41fe721a31f29e29698585a4a" +dependencies = [ + "backtrace", + "bytes", + "libc", + "mio", + "num_cpus", + "pin-project-lite", + "socket2", + "tokio-macros", + "windows-sys 0.48.0", +] + +[[package]] +name = "tokio-macros" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f5ae998a069d4b5aba8ee9dad856af7d520c3699e6159b185c2acd48155d39a" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.66", +] + +[[package]] +name = "tokio-native-tls" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2" +dependencies = [ + "native-tls", + "tokio", +] + +[[package]] +name = "tokio-rustls" +version = "0.26.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c7bc40d0e5a97695bb96e27995cd3a08538541b0a846f65bba7a359f36700d4" +dependencies = [ + "rustls", + "rustls-pki-types", + "tokio", +] + +[[package]] +name = "tokio-stream" +version = "0.1.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "267ac89e0bec6e691e5813911606935d77c476ff49024f98abcea3e7b15e37af" +dependencies = [ + "futures-core", + "pin-project-lite", + "tokio", + "tokio-util", +] + +[[package]] +name = "tokio-tungstenite" +version = "0.23.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6989540ced10490aaf14e6bad2e3d33728a2813310a0c71d1574304c49631cd" +dependencies = [ + "futures-util", + "log", + "rustls", + "rustls-pki-types", + "tokio", + "tokio-rustls", + "tungstenite", + "webpki-roots", +] + +[[package]] +name = "tokio-util" +version = "0.7.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9cf6b47b3771c49ac75ad09a6162f53ad4b8088b76ac60e8ec1455b31a189fe1" +dependencies = [ + "bytes", + "futures-core", + "futures-sink", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "toml_datetime" +version = "0.6.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4badfd56924ae69bcc9039335b2e017639ce3f9b001c393c1b2d1ef846ce2cbf" + +[[package]] +name = "toml_edit" +version = "0.21.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a8534fd7f78b5405e860340ad6575217ce99f38d4d5c8f2442cb5ecb50090e1" +dependencies = [ + "indexmap", + "toml_datetime", + "winnow 0.5.40", +] + +[[package]] +name = "tower" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c" +dependencies = [ + "futures-core", + "futures-util", + "pin-project", + "pin-project-lite", + "tokio", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "tower-layer" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c20c8dbed6283a09604c3e69b4b7eeb54e298b8a600d4d5ecb5ad39de609f1d0" + +[[package]] +name = "tower-service" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" + +[[package]] +name = "tracing" +version = "0.1.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" +dependencies = [ + "log", + "pin-project-lite", + "tracing-attributes", + "tracing-core", +] + +[[package]] +name = "tracing-attributes" +version = "0.1.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.66", +] + +[[package]] +name = "tracing-core" +version = "0.1.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" +dependencies = [ + "once_cell", +] + +[[package]] +name = "try-lock" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" + +[[package]] +name = "tungstenite" +version = "0.23.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e2e2ce1e47ed2994fd43b04c8f618008d4cabdd5ee34027cf14f9d918edd9c8" +dependencies = [ + "byteorder", + "bytes", + "data-encoding", + "http", + "httparse", + "log", + "rand", + "rustls", + "rustls-pki-types", + "sha1", + "thiserror", + "utf-8", +] + +[[package]] +name = "typenum" +version = "1.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" + +[[package]] +name = "ucd-trie" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed646292ffc8188ef8ea4d1e0e0150fb15a5c2e12ad9b8fc191ae7a8a7f3c4b9" + +[[package]] +name = "uint" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76f64bba2c53b04fcab63c01a7d7427eadc821e3bc48c34dc9ba29c501164b52" +dependencies = [ + "byteorder", + "crunchy", + "hex", + "static_assertions", +] + +[[package]] +name = "unarray" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eaea85b334db583fe3274d12b4cd1880032beab409c0d774be044d4480ab9a94" + +[[package]] +name = "unicode-bidi" +version = "0.3.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75" + +[[package]] +name = "unicode-ident" +version = "1.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" + +[[package]] +name = "unicode-normalization" +version = "0.1.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a56d1686db2308d901306f92a263857ef59ea39678a5458e7cb17f01415101f5" +dependencies = [ + "tinyvec", +] + +[[package]] +name = "untrusted" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" + +[[package]] +name = "url" +version = "2.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22784dbdf76fdde8af1aeda5622b546b422b6fc585325248a2bf9f5e41e94d6c" +dependencies = [ + "form_urlencoded", + "idna", + "percent-encoding", +] + +[[package]] +name = "utf-8" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" + +[[package]] +name = "valuable" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" + +[[package]] +name = "vcpkg" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" + +[[package]] +name = "version_check" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" + +[[package]] +name = "wait-timeout" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f200f5b12eb75f8c1ed65abd4b2db8a6e1b138a20de009dacee265a2498f3f6" +dependencies = [ + "libc", +] + +[[package]] +name = "want" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" +dependencies = [ + "try-lock", +] + +[[package]] +name = "wasi" +version = "0.11.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" + +[[package]] +name = "wasm-bindgen" +version = "0.2.92" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4be2531df63900aeb2bca0daaaddec08491ee64ceecbee5076636a3b026795a8" +dependencies = [ + "cfg-if", + "wasm-bindgen-macro", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.92" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "614d787b966d3989fa7bb98a654e369c762374fd3213d212cfc0251257e747da" +dependencies = [ + "bumpalo", + "log", + "once_cell", + "proc-macro2", + "quote", + "syn 2.0.66", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-futures" +version = "0.4.42" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76bc14366121efc8dbb487ab05bcc9d346b3b5ec0eaa76e46594cabbe51762c0" +dependencies = [ + "cfg-if", + "js-sys", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.92" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1f8823de937b71b9460c0c34e25f3da88250760bec0ebac694b49997550d726" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.92" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.66", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.92" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96" + +[[package]] +name = "web-sys" +version = "0.3.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77afa9a11836342370f4817622a2f0f418b134426d91a82dfb48f532d2ec13ef" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "webpki-roots" +version = "0.26.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd7c23921eeb1713a4e851530e9b9756e4fb0e89978582942612524cf09f01cd" +dependencies = [ + "rustls-pki-types", +] + +[[package]] +name = "widestring" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7219d36b6eac893fa81e84ebe06485e7dcbb616177469b142df14f1f4deb1311" + +[[package]] +name = "windows-sys" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" +dependencies = [ + "windows-targets 0.48.5", +] + +[[package]] +name = "windows-sys" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +dependencies = [ + "windows-targets 0.52.5", +] + +[[package]] +name = "windows-targets" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" +dependencies = [ + "windows_aarch64_gnullvm 0.48.5", + "windows_aarch64_msvc 0.48.5", + "windows_i686_gnu 0.48.5", + "windows_i686_msvc 0.48.5", + "windows_x86_64_gnu 0.48.5", + "windows_x86_64_gnullvm 0.48.5", + "windows_x86_64_msvc 0.48.5", +] + +[[package]] +name = "windows-targets" +version = "0.52.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f0713a46559409d202e70e28227288446bf7841d3211583a4b53e3f6d96e7eb" +dependencies = [ + "windows_aarch64_gnullvm 0.52.5", + "windows_aarch64_msvc 0.52.5", + "windows_i686_gnu 0.52.5", + "windows_i686_gnullvm", + "windows_i686_msvc 0.52.5", + "windows_x86_64_gnu 0.52.5", + "windows_x86_64_gnullvm 0.52.5", + "windows_x86_64_msvc 0.52.5", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7088eed71e8b8dda258ecc8bac5fb1153c5cffaf2578fc8ff5d61e23578d3263" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9985fd1504e250c615ca5f281c3f7a6da76213ebd5ccc9561496568a2752afb6" + +[[package]] +name = "windows_i686_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" + +[[package]] +name = "windows_i686_gnu" +version = "0.52.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88ba073cf16d5372720ec942a8ccbf61626074c6d4dd2e745299726ce8b89670" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87f4261229030a858f36b459e748ae97545d6f1ec60e5e0d6a3d32e0dc232ee9" + +[[package]] +name = "windows_i686_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" + +[[package]] +name = "windows_i686_msvc" +version = "0.52.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db3c2bf3d13d5b658be73463284eaf12830ac9a26a90c717b7f771dfe97487bf" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4e4246f76bdeff09eb48875a0fd3e2af6aada79d409d33011886d3e1581517d9" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "852298e482cd67c356ddd9570386e2862b5673c85bd5f88df9ab6802b334c596" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bec47e5bfd1bff0eeaf6d8b485cc1074891a197ab4225d504cb7a1ab88b02bf0" + +[[package]] +name = "winnow" +version = "0.5.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876" +dependencies = [ + "memchr", +] + +[[package]] +name = "winnow" +version = "0.6.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59b5e5f6c299a3c7890b876a2a587f3115162487e704907d9b6cd29473052ba1" +dependencies = [ + "memchr", +] + +[[package]] +name = "winreg" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a277a57398d4bfa075df44f501a17cfdf8542d224f0d36095a2adc7aee4ef0a5" +dependencies = [ + "cfg-if", + "windows-sys 0.48.0", +] + +[[package]] +name = "ws_stream_wasm" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7999f5f4217fe3818726b66257a4475f71e74ffd190776ad053fa159e50737f5" +dependencies = [ + "async_io_stream", + "futures", + "js-sys", + "log", + "pharos", + "rustc_version 0.4.0", + "send_wrapper", + "thiserror", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + +[[package]] +name = "wyz" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f360fc0b24296329c78fda852a1e9ae82de9cf7b27dae4b7f62f118f77b9ed" +dependencies = [ + "tap", +] + +[[package]] +name = "zerocopy" +version = "0.7.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae87e3fcd617500e5d106f0380cf7b77f3c6092aae37191433159dda23cfb087" +dependencies = [ + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.7.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "15e934569e47891f7d9411f1a451d947a60e000ab3bd24fbb970f000387d1b3b" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.66", +] + +[[package]] +name = "zeroize" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" +dependencies = [ + "zeroize_derive", +] + +[[package]] +name = "zeroize_derive" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.66", +] diff --git a/utils/Cargo.toml b/utils/Cargo.toml new file mode 100644 index 0000000..79ec7c1 --- /dev/null +++ b/utils/Cargo.toml @@ -0,0 +1,23 @@ +[workspace.package] +version = "0.1.0" +edition = "2021" + +[workspace] +members = [ + "bin/indexer", +] +default-members = [ + "bin/indexer", +] +resolver = "2" + +[workspace.dependencies] +alloy = { version = "0.1", features = [ "full", "rpc-client" ] } + +# async +tokio = { version = "1", features = ["macros", "rt-multi-thread"] } +futures = "0.3" +futures-util = "0.3.30" + +# misc +eyre = "0.6.12" \ No newline at end of file diff --git a/utils/abi/ComposableCoW.json b/utils/abi/ComposableCoW.json new file mode 100644 index 0000000..fefb006 --- /dev/null +++ b/utils/abi/ComposableCoW.json @@ -0,0 +1 @@ +{"abi":[{"type":"constructor","inputs":[{"name":"_settlement","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"cabinet","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"create","inputs":[{"name":"params","type":"tuple","internalType":"struct IConditionalOrder.ConditionalOrderParams","components":[{"name":"handler","type":"address","internalType":"contract IConditionalOrder"},{"name":"salt","type":"bytes32","internalType":"bytes32"},{"name":"staticInput","type":"bytes","internalType":"bytes"}]},{"name":"dispatch","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"createWithContext","inputs":[{"name":"params","type":"tuple","internalType":"struct IConditionalOrder.ConditionalOrderParams","components":[{"name":"handler","type":"address","internalType":"contract IConditionalOrder"},{"name":"salt","type":"bytes32","internalType":"bytes32"},{"name":"staticInput","type":"bytes","internalType":"bytes"}]},{"name":"factory","type":"address","internalType":"contract IValueFactory"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"dispatch","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"domainSeparator","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"getTradeableOrderWithSignature","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"params","type":"tuple","internalType":"struct IConditionalOrder.ConditionalOrderParams","components":[{"name":"handler","type":"address","internalType":"contract IConditionalOrder"},{"name":"salt","type":"bytes32","internalType":"bytes32"},{"name":"staticInput","type":"bytes","internalType":"bytes"}]},{"name":"offchainInput","type":"bytes","internalType":"bytes"},{"name":"proof","type":"bytes32[]","internalType":"bytes32[]"}],"outputs":[{"name":"order","type":"tuple","internalType":"struct GPv2Order.Data","components":[{"name":"sellToken","type":"address","internalType":"contract IERC20"},{"name":"buyToken","type":"address","internalType":"contract IERC20"},{"name":"receiver","type":"address","internalType":"address"},{"name":"sellAmount","type":"uint256","internalType":"uint256"},{"name":"buyAmount","type":"uint256","internalType":"uint256"},{"name":"validTo","type":"uint32","internalType":"uint32"},{"name":"appData","type":"bytes32","internalType":"bytes32"},{"name":"feeAmount","type":"uint256","internalType":"uint256"},{"name":"kind","type":"bytes32","internalType":"bytes32"},{"name":"partiallyFillable","type":"bool","internalType":"bool"},{"name":"sellTokenBalance","type":"bytes32","internalType":"bytes32"},{"name":"buyTokenBalance","type":"bytes32","internalType":"bytes32"}]},{"name":"signature","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"hash","inputs":[{"name":"params","type":"tuple","internalType":"struct IConditionalOrder.ConditionalOrderParams","components":[{"name":"handler","type":"address","internalType":"contract IConditionalOrder"},{"name":"salt","type":"bytes32","internalType":"bytes32"},{"name":"staticInput","type":"bytes","internalType":"bytes"}]}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"type":"function","name":"isValidSafeSignature","inputs":[{"name":"safe","type":"address","internalType":"contract Safe"},{"name":"sender","type":"address","internalType":"address"},{"name":"_hash","type":"bytes32","internalType":"bytes32"},{"name":"_domainSeparator","type":"bytes32","internalType":"bytes32"},{"name":"","type":"bytes32","internalType":"bytes32"},{"name":"encodeData","type":"bytes","internalType":"bytes"},{"name":"payload","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"magic","type":"bytes4","internalType":"bytes4"}],"stateMutability":"view"},{"type":"function","name":"remove","inputs":[{"name":"singleOrderHash","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"roots","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"setRoot","inputs":[{"name":"root","type":"bytes32","internalType":"bytes32"},{"name":"proof","type":"tuple","internalType":"struct ComposableCoW.Proof","components":[{"name":"location","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setRootWithContext","inputs":[{"name":"root","type":"bytes32","internalType":"bytes32"},{"name":"proof","type":"tuple","internalType":"struct ComposableCoW.Proof","components":[{"name":"location","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}]},{"name":"factory","type":"address","internalType":"contract IValueFactory"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setSwapGuard","inputs":[{"name":"swapGuard","type":"address","internalType":"contract ISwapGuard"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"singleOrders","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"swapGuards","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"address","internalType":"contract ISwapGuard"}],"stateMutability":"view"},{"type":"event","name":"ConditionalOrderCreated","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"params","type":"tuple","indexed":false,"internalType":"struct IConditionalOrder.ConditionalOrderParams","components":[{"name":"handler","type":"address","internalType":"contract IConditionalOrder"},{"name":"salt","type":"bytes32","internalType":"bytes32"},{"name":"staticInput","type":"bytes","internalType":"bytes"}]}],"anonymous":false},{"type":"event","name":"MerkleRootSet","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"root","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"proof","type":"tuple","indexed":false,"internalType":"struct ComposableCoW.Proof","components":[{"name":"location","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}]}],"anonymous":false},{"type":"event","name":"SwapGuardSet","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"swapGuard","type":"address","indexed":false,"internalType":"contract ISwapGuard"}],"anonymous":false},{"type":"error","name":"InterfaceNotSupported","inputs":[]},{"type":"error","name":"InvalidFallbackHandler","inputs":[]},{"type":"error","name":"InvalidHandler","inputs":[]},{"type":"error","name":"ProofNotAuthed","inputs":[]},{"type":"error","name":"SingleOrderNotAuthed","inputs":[]},{"type":"error","name":"SwapGuardRestricted","inputs":[]}],"bytecode":{"object":"0x60a060405234801561000f575f80fd5b506040516120f43803806120f483398101604081905261002e91610097565b806001600160a01b031663f698da256040518163ffffffff1660e01b8152600401602060405180830381865afa15801561006a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061008e91906100c4565b608052506100db565b5f602082840312156100a7575f80fd5b81516001600160a01b03811681146100bd575f80fd5b9392505050565b5f602082840312156100d4575f80fd5b5051919050565b608051611ffa6100fa5f395f818161031d01526109120152611ffa5ff3fe608060405234801561000f575f80fd5b50600436106100e5575f3560e01c8063595001b2116100885780638f7984ed116100635780638f7984ed1461028357806395bc267314610296578063a4546876146102f9578063f698da2514610318575f80fd5b8063595001b2146101d95780636108c532146102335780636bfae1ca14610270575f80fd5b806326e0a196116100c357806326e0a1961461014e57806353f00b141461016f5780635500079d146101b357806357f1d41a146101c6575f80fd5b80630d0d9800146100e95780631ab0dd9d146100fe5780631c7662c814610111575b5f80fd5b6100fc6100f73660046111cb565b61033f565b005b6100fc61010c366004611268565b61040e565b61013b61011f3660046112b7565b600360209081525f928352604080842090915290825290205481565b6040519081526020015b60405180910390f35b61016161015c3660046112e1565b61045d565b6040516101459291906114dc565b61018261017d3660046114fd565b610ae3565b6040517fffffffff000000000000000000000000000000000000000000000000000000009091168152602001610145565b61013b6101c136600461175e565b610c1c565b6100fc6101d4366004611798565b610c4b565b61020e6101e736600461181b565b60026020525f908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610145565b6102606102413660046112b7565b600160209081525f928352604080842090915290825290205460ff1681565b6040519015158152602001610145565b6100fc61027e366004611836565b610d09565b6100fc61029136600461181b565b610e0e565b6100fc6102a4366004611885565b335f818152600160209081526040808320858452825280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690559282526003815282822093825292909252812055565b61013b61030736600461181b565b5f6020819052908152604090205481565b61013b7f000000000000000000000000000000000000000000000000000000000000000081565b6103498582610d09565b6040517fb6576bdf00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063b6576bdf9061039d90869086906004016118e3565b602060405180830381865afa1580156103b8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103dc91906118f6565b335f908152600360205260408120906103f76101c18961190d565b815260208101919091526040015f20555050505050565b335f8181526020819052604090819020849055517f58662f46b4a87d0f96d929b24c37fe25c55d52c0025d0b2bec3936534cc31e57906104519085908590611978565b60405180910390a25050565b60408051610180810182525f80825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081018290526101208101829052610140810182905261016081019190915260605f610505896104cd8a61190d565b8787808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250610e9492505050565b9050610514602089018961181b565b6040517f01ffc9a70000000000000000000000000000000000000000000000000000000081527fb8296fc400000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff91909116906301ffc9a790602401602060405180830381865afa9250505080156105da575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526105d7918101906119c1565b60015b610610576040517f2c7ca6d700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80610647576040517f2c7ca6d700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50610655602089018961181b565b73ffffffffffffffffffffffffffffffffffffffff1663b8296fc48a338461068060408e018e6119dc565b8d8d6040518863ffffffff1660e01b81526004016106a49796959493929190611a3d565b61018060405180830381865afa1580156106c0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106e49190611ac4565b925061073189826106f48b61190d565b8a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152508a9250610fd0915050565b610767576040517f03fc2a7e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f01ffc9a70000000000000000000000000000000000000000000000000000000081527f62af8dc200000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff8a16906301ffc9a790602401602060405180830381865afa92505050801561082b575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252610828918101906119c1565b60015b6108d95760408051608060208702808301820190935260608201878152869383928a918a918291908601908490808284375f920191909152505050908252506020016108768b61190d565b815260200189898080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525050509152506040516108c3929190602001611c2f565b6040516020818303038152906040529150610ad7565b80610910576040517f79ac63cd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000007fd5a25ba2e97094ad7d83dc28a6572da797d6b3e7fc6663bd93efb789fc17e489856040516020016109639190611c50565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152608060208b028085018201909352606084018b81529193928392918d918d918291908601908490808284375f920191909152505050908252506020016109d38e61190d565b81526020018c8c8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505050915250604051610a1f9190602001611c5f565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052610a5d94939291602401611c71565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f5fd7e97d000000000000000000000000000000000000000000000000000000001790529250505b50965096945050505050565b5f80610af183850185611cac565b90505f610b068c8360200151845f0151610e94565b90505f610b1587890189611dc5565b9050610b2c8d838560200151866040015185610fd0565b610b62576040517f03fc2a7e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82602001515f015173ffffffffffffffffffffffffffffffffffffffff166314a2a7848e8e8e8e878960200151604001518a60400151896040518963ffffffff1660e01b8152600401610bbc989796959493929190611e81565b5f6040518083038186803b158015610bd2575f80fd5b505afa158015610be4573d5f803e3d5ffd5b507f1626ba7e0000000000000000000000000000000000000000000000000000000096505050505050505b9998505050505050505050565b5f81604051602001610c2e9190611ef0565b604051602081830303815290604052805190602001209050919050565b610c55858561040e565b6040517fb6576bdf00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063b6576bdf90610ca990859085906004016118e3565b602060405180830381865afa158015610cc4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ce891906118f6565b335f9081526003602090815260408083208380529091529020555050505050565b5f610d17602084018461181b565b73ffffffffffffffffffffffffffffffffffffffff1603610d64576040517fd8f59fa500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b335f90815260016020819052604082209091610d826101c18661190d565b815260208101919091526040015f2080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169115159190911790558015610e0a573373ffffffffffffffffffffffffffffffffffffffff167f2cceac5555b0ca45a3744ced542f54b56ad2eb45e521962372eef212a2cbf361836040516104519190611f02565b5050565b335f8181526002602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff861690811790915591519182527f41f583e2d25b3921afe66987b63b0b5e4cf2acbbbed4a477fd19a22180f3f859910160405180910390a250565b5f81515f14610f54575f610ea784610c1c565b604051602001610eb991815260200190565b604051602081830303815290604052805190602001209050610f18835f808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054836110ad565b610f4e576040517f4a82146400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50610fc9565b610f5d83610c1c565b73ffffffffffffffffffffffffffffffffffffffff85165f90815260016020908152604080832084845290915290205490915060ff16610fc9576040517f7a93323400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9392505050565b73ffffffffffffffffffffffffffffffffffffffff8086165f90815260026020526040812054909116801561109e576040517ff9ae35a200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82169063f9ae35a2906110579086908a908a908a90600401611f5a565b602060405180830381865afa158015611072573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061109691906119c1565b9150506110a4565b60019150505b95945050505050565b5f826110b985846110c2565b14949350505050565b5f81815b84518110156110fc576110f2828683815181106110e5576110e5611f97565b6020026020010151611106565b91506001016110c6565b5090505b92915050565b5f818310611120575f828152602084905260409020610fc9565b505f9182526020526040902090565b5f6060828403121561113f575f80fd5b50919050565b73ffffffffffffffffffffffffffffffffffffffff81168114611166575f80fd5b50565b5f8083601f840112611179575f80fd5b50813567ffffffffffffffff811115611190575f80fd5b6020830191508360208285010111156111a7575f80fd5b9250929050565b8015158114611166575f80fd5b80356111c6816111ae565b919050565b5f805f805f608086880312156111df575f80fd5b853567ffffffffffffffff808211156111f6575f80fd5b61120289838a0161112f565b96506020880135915061121482611145565b90945060408701359080821115611229575f80fd5b5061123688828901611169565b909450925050606086013561124a816111ae565b809150509295509295909350565b5f6040828403121561113f575f80fd5b5f8060408385031215611279575f80fd5b82359150602083013567ffffffffffffffff811115611296575f80fd5b6112a285828601611258565b9150509250929050565b80356111c681611145565b5f80604083850312156112c8575f80fd5b82356112d381611145565b946020939093013593505050565b5f805f805f80608087890312156112f6575f80fd5b863561130181611145565b9550602087013567ffffffffffffffff8082111561131d575f80fd5b6113298a838b0161112f565b9650604089013591508082111561133e575f80fd5b61134a8a838b01611169565b90965094506060890135915080821115611362575f80fd5b818901915089601f830112611375575f80fd5b813581811115611383575f80fd5b8a60208260051b8501011115611397575f80fd5b6020830194508093505050509295509295509295565b805173ffffffffffffffffffffffffffffffffffffffff16825260208101516113ee602084018273ffffffffffffffffffffffffffffffffffffffff169052565b506040810151611416604084018273ffffffffffffffffffffffffffffffffffffffff169052565b50606081015160608301526080810151608083015260a081015161144260a084018263ffffffff169052565b5060c081015160c083015260e081015160e0830152610100808201518184015250610120808201516114778285018215159052565b5050610140818101519083015261016090810151910152565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b5f6101a06114ea83866113ad565b806101808401526110a481840185611490565b5f805f805f805f805f60e08a8c031215611515575f80fd5b893561152081611145565b985060208a013561153081611145565b975060408a0135965060608a0135955060808a0135945060a08a013567ffffffffffffffff80821115611561575f80fd5b61156d8d838e01611169565b909650945060c08c0135915080821115611585575f80fd5b506115928c828d01611169565b915080935050809150509295985092959850929598565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040516060810167ffffffffffffffff811182821017156115f9576115f96115a9565b60405290565b604051610180810167ffffffffffffffff811182821017156115f9576115f96115a9565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561166a5761166a6115a9565b604052919050565b5f82601f830112611681575f80fd5b813567ffffffffffffffff81111561169b5761169b6115a9565b6116cc60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601611623565b8181528460208386010111156116e0575f80fd5b816020850160208301375f918101602001919091529392505050565b5f6060828403121561170c575f80fd5b6117146115d6565b9050813561172181611145565b815260208281013590820152604082013567ffffffffffffffff811115611746575f80fd5b61175284828501611672565b60408301525092915050565b5f6020828403121561176e575f80fd5b813567ffffffffffffffff811115611784575f80fd5b611790848285016116fc565b949350505050565b5f805f805f608086880312156117ac575f80fd5b85359450602086013567ffffffffffffffff808211156117ca575f80fd5b6117d689838a01611258565b9550604088013591506117e882611145565b909350606087013590808211156117fd575f80fd5b5061180a88828901611169565b969995985093965092949392505050565b5f6020828403121561182b575f80fd5b8135610fc981611145565b5f8060408385031215611847575f80fd5b823567ffffffffffffffff81111561185d575f80fd5b6118698582860161112f565b925050602083013561187a816111ae565b809150509250929050565b5f60208284031215611895575f80fd5b5035919050565b81835281816020850137505f602082840101525f60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b602081525f61179060208301848661189c565b5f60208284031215611906575f80fd5b5051919050565b5f61110036836116fc565b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261194b575f80fd5b830160208101925035905067ffffffffffffffff81111561196a575f80fd5b8036038213156111a7575f80fd5b82815260406020820152813560408201525f6119976020840184611918565b604060608501526119ac60808501828461189c565b9695505050505050565b80516111c6816111ae565b5f602082840312156119d1575f80fd5b8151610fc9816111ae565b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611a0f575f80fd5b83018035915067ffffffffffffffff821115611a29575f80fd5b6020019150368190038213156111a7575f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff808a16835280891660208401525086604083015260a06060830152611a7c60a08301868861189c565b8281036080840152611a8f81858761189c565b9a9950505050505050505050565b80516111c681611145565b63ffffffff81168114611166575f80fd5b80516111c681611aa8565b5f6101808284031215611ad5575f80fd5b611add6115ff565b611ae683611a9d565b8152611af460208401611a9d565b6020820152611b0560408401611a9d565b60408201526060830151606082015260808301516080820152611b2a60a08401611ab9565b60a082015260c083015160c082015260e083015160e0820152610100808401518183015250610120611b5d8185016119b6565b908201526101408381015190820152610160928301519281019290925250919050565b73ffffffffffffffffffffffffffffffffffffffff8151168252602081015160208301525f6040820151606060408501526117906060850182611490565b8051606080845281519084018190525f91602091908201906080860190845b81811015611bf957835183529284019291840191600101611bdd565b5050602085015192508581036020870152611c148184611b80565b92505050604083015184820360408601526110a48282611490565b5f6101a0611c3d83866113ad565b806101808401526110a481840185611bbe565b610180810161110082846113ad565b602081525f610fc96020830184611bbe565b848152836020820152608060408201525f611c8f6080830185611490565b8281036060840152611ca18185611490565b979650505050505050565b5f6020808385031215611cbd575f80fd5b823567ffffffffffffffff80821115611cd4575f80fd5b9084019060608287031215611ce7575f80fd5b611cef6115d6565b823582811115611cfd575f80fd5b8301601f81018813611d0d575f80fd5b803583811115611d1f57611d1f6115a9565b8060051b611d2e878201611623565b918252828101870191878101908b841115611d47575f80fd5b938801935b83851015611d6557843582529388019390880190611d4c565b8552505050508284013582811115611d7b575f80fd5b611d87888286016116fc565b85830152506040830135935081841115611d9f575f80fd5b611dab87858501611672565b60408201529695505050505050565b80356111c681611aa8565b5f6101808284031215611dd6575f80fd5b611dde6115ff565b611de7836112ac565b8152611df5602084016112ac565b6020820152611e06604084016112ac565b60408201526060830135606082015260808301356080820152611e2b60a08401611dba565b60a082015260c083013560c082015260e083013560e0820152610100808401358183015250610120611e5e8185016111bb565b908201526101408381013590820152610160928301359281019290925250919050565b5f61026073ffffffffffffffffffffffffffffffffffffffff808c168452808b166020850152508860408401528760608401528660808401528060a0840152611ecc81840187611490565b905082810360c0840152611ee08186611490565b915050610c0f60e08301846113ad565b602081525f610fc96020830184611b80565b602081525f8235611f1281611145565b73ffffffffffffffffffffffffffffffffffffffff811660208401525060208301356040830152611f466040840184611918565b6060808501526110a460808501828461189c565b5f6101e0611f6883886113ad565b85610180840152806101a0840152611f8281840186611b80565b90508281036101c0840152611ca18185611490565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffdfea2646970667358221220875b798f7ff64b4972f8844fc63ebeb558835c113a62c597af6ddd5ff1775f6564736f6c63430008190033","sourceMap":"822:11686:57:-:0;;;2421:112;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2496:11;-1:-1:-1;;;;;2482:42:57;;:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2464:62;;-1:-1:-1;822:11686:57;;14:290:172;84:6;137:2;125:9;116:7;112:23;108:32;105:52;;;153:1;150;143:12;105:52;179:16;;-1:-1:-1;;;;;224:31:172;;214:42;;204:70;;270:1;267;260:12;204:70;293:5;14:290;-1:-1:-1;;;14:290:172:o;309:184::-;379:6;432:2;420:9;411:7;407:23;403:32;400:52;;;448:1;445;438:12;400:52;-1:-1:-1;471:16:172;;309:184;-1:-1:-1;309:184:172:o;:::-;822:11686:57;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561000f575f80fd5b50600436106100e5575f3560e01c8063595001b2116100885780638f7984ed116100635780638f7984ed1461028357806395bc267314610296578063a4546876146102f9578063f698da2514610318575f80fd5b8063595001b2146101d95780636108c532146102335780636bfae1ca14610270575f80fd5b806326e0a196116100c357806326e0a1961461014e57806353f00b141461016f5780635500079d146101b357806357f1d41a146101c6575f80fd5b80630d0d9800146100e95780631ab0dd9d146100fe5780631c7662c814610111575b5f80fd5b6100fc6100f73660046111cb565b61033f565b005b6100fc61010c366004611268565b61040e565b61013b61011f3660046112b7565b600360209081525f928352604080842090915290825290205481565b6040519081526020015b60405180910390f35b61016161015c3660046112e1565b61045d565b6040516101459291906114dc565b61018261017d3660046114fd565b610ae3565b6040517fffffffff000000000000000000000000000000000000000000000000000000009091168152602001610145565b61013b6101c136600461175e565b610c1c565b6100fc6101d4366004611798565b610c4b565b61020e6101e736600461181b565b60026020525f908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610145565b6102606102413660046112b7565b600160209081525f928352604080842090915290825290205460ff1681565b6040519015158152602001610145565b6100fc61027e366004611836565b610d09565b6100fc61029136600461181b565b610e0e565b6100fc6102a4366004611885565b335f818152600160209081526040808320858452825280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690559282526003815282822093825292909252812055565b61013b61030736600461181b565b5f6020819052908152604090205481565b61013b7f000000000000000000000000000000000000000000000000000000000000000081565b6103498582610d09565b6040517fb6576bdf00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063b6576bdf9061039d90869086906004016118e3565b602060405180830381865afa1580156103b8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103dc91906118f6565b335f908152600360205260408120906103f76101c18961190d565b815260208101919091526040015f20555050505050565b335f8181526020819052604090819020849055517f58662f46b4a87d0f96d929b24c37fe25c55d52c0025d0b2bec3936534cc31e57906104519085908590611978565b60405180910390a25050565b60408051610180810182525f80825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081018290526101208101829052610140810182905261016081019190915260605f610505896104cd8a61190d565b8787808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250610e9492505050565b9050610514602089018961181b565b6040517f01ffc9a70000000000000000000000000000000000000000000000000000000081527fb8296fc400000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff91909116906301ffc9a790602401602060405180830381865afa9250505080156105da575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526105d7918101906119c1565b60015b610610576040517f2c7ca6d700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80610647576040517f2c7ca6d700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50610655602089018961181b565b73ffffffffffffffffffffffffffffffffffffffff1663b8296fc48a338461068060408e018e6119dc565b8d8d6040518863ffffffff1660e01b81526004016106a49796959493929190611a3d565b61018060405180830381865afa1580156106c0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106e49190611ac4565b925061073189826106f48b61190d565b8a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152508a9250610fd0915050565b610767576040517f03fc2a7e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f01ffc9a70000000000000000000000000000000000000000000000000000000081527f62af8dc200000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff8a16906301ffc9a790602401602060405180830381865afa92505050801561082b575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252610828918101906119c1565b60015b6108d95760408051608060208702808301820190935260608201878152869383928a918a918291908601908490808284375f920191909152505050908252506020016108768b61190d565b815260200189898080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525050509152506040516108c3929190602001611c2f565b6040516020818303038152906040529150610ad7565b80610910576040517f79ac63cd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000007fd5a25ba2e97094ad7d83dc28a6572da797d6b3e7fc6663bd93efb789fc17e489856040516020016109639190611c50565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152608060208b028085018201909352606084018b81529193928392918d918d918291908601908490808284375f920191909152505050908252506020016109d38e61190d565b81526020018c8c8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505050915250604051610a1f9190602001611c5f565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052610a5d94939291602401611c71565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f5fd7e97d000000000000000000000000000000000000000000000000000000001790529250505b50965096945050505050565b5f80610af183850185611cac565b90505f610b068c8360200151845f0151610e94565b90505f610b1587890189611dc5565b9050610b2c8d838560200151866040015185610fd0565b610b62576040517f03fc2a7e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82602001515f015173ffffffffffffffffffffffffffffffffffffffff166314a2a7848e8e8e8e878960200151604001518a60400151896040518963ffffffff1660e01b8152600401610bbc989796959493929190611e81565b5f6040518083038186803b158015610bd2575f80fd5b505afa158015610be4573d5f803e3d5ffd5b507f1626ba7e0000000000000000000000000000000000000000000000000000000096505050505050505b9998505050505050505050565b5f81604051602001610c2e9190611ef0565b604051602081830303815290604052805190602001209050919050565b610c55858561040e565b6040517fb6576bdf00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063b6576bdf90610ca990859085906004016118e3565b602060405180830381865afa158015610cc4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ce891906118f6565b335f9081526003602090815260408083208380529091529020555050505050565b5f610d17602084018461181b565b73ffffffffffffffffffffffffffffffffffffffff1603610d64576040517fd8f59fa500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b335f90815260016020819052604082209091610d826101c18661190d565b815260208101919091526040015f2080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169115159190911790558015610e0a573373ffffffffffffffffffffffffffffffffffffffff167f2cceac5555b0ca45a3744ced542f54b56ad2eb45e521962372eef212a2cbf361836040516104519190611f02565b5050565b335f8181526002602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff861690811790915591519182527f41f583e2d25b3921afe66987b63b0b5e4cf2acbbbed4a477fd19a22180f3f859910160405180910390a250565b5f81515f14610f54575f610ea784610c1c565b604051602001610eb991815260200190565b604051602081830303815290604052805190602001209050610f18835f808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054836110ad565b610f4e576040517f4a82146400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50610fc9565b610f5d83610c1c565b73ffffffffffffffffffffffffffffffffffffffff85165f90815260016020908152604080832084845290915290205490915060ff16610fc9576040517f7a93323400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9392505050565b73ffffffffffffffffffffffffffffffffffffffff8086165f90815260026020526040812054909116801561109e576040517ff9ae35a200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82169063f9ae35a2906110579086908a908a908a90600401611f5a565b602060405180830381865afa158015611072573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061109691906119c1565b9150506110a4565b60019150505b95945050505050565b5f826110b985846110c2565b14949350505050565b5f81815b84518110156110fc576110f2828683815181106110e5576110e5611f97565b6020026020010151611106565b91506001016110c6565b5090505b92915050565b5f818310611120575f828152602084905260409020610fc9565b505f9182526020526040902090565b5f6060828403121561113f575f80fd5b50919050565b73ffffffffffffffffffffffffffffffffffffffff81168114611166575f80fd5b50565b5f8083601f840112611179575f80fd5b50813567ffffffffffffffff811115611190575f80fd5b6020830191508360208285010111156111a7575f80fd5b9250929050565b8015158114611166575f80fd5b80356111c6816111ae565b919050565b5f805f805f608086880312156111df575f80fd5b853567ffffffffffffffff808211156111f6575f80fd5b61120289838a0161112f565b96506020880135915061121482611145565b90945060408701359080821115611229575f80fd5b5061123688828901611169565b909450925050606086013561124a816111ae565b809150509295509295909350565b5f6040828403121561113f575f80fd5b5f8060408385031215611279575f80fd5b82359150602083013567ffffffffffffffff811115611296575f80fd5b6112a285828601611258565b9150509250929050565b80356111c681611145565b5f80604083850312156112c8575f80fd5b82356112d381611145565b946020939093013593505050565b5f805f805f80608087890312156112f6575f80fd5b863561130181611145565b9550602087013567ffffffffffffffff8082111561131d575f80fd5b6113298a838b0161112f565b9650604089013591508082111561133e575f80fd5b61134a8a838b01611169565b90965094506060890135915080821115611362575f80fd5b818901915089601f830112611375575f80fd5b813581811115611383575f80fd5b8a60208260051b8501011115611397575f80fd5b6020830194508093505050509295509295509295565b805173ffffffffffffffffffffffffffffffffffffffff16825260208101516113ee602084018273ffffffffffffffffffffffffffffffffffffffff169052565b506040810151611416604084018273ffffffffffffffffffffffffffffffffffffffff169052565b50606081015160608301526080810151608083015260a081015161144260a084018263ffffffff169052565b5060c081015160c083015260e081015160e0830152610100808201518184015250610120808201516114778285018215159052565b5050610140818101519083015261016090810151910152565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b5f6101a06114ea83866113ad565b806101808401526110a481840185611490565b5f805f805f805f805f60e08a8c031215611515575f80fd5b893561152081611145565b985060208a013561153081611145565b975060408a0135965060608a0135955060808a0135945060a08a013567ffffffffffffffff80821115611561575f80fd5b61156d8d838e01611169565b909650945060c08c0135915080821115611585575f80fd5b506115928c828d01611169565b915080935050809150509295985092959850929598565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040516060810167ffffffffffffffff811182821017156115f9576115f96115a9565b60405290565b604051610180810167ffffffffffffffff811182821017156115f9576115f96115a9565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561166a5761166a6115a9565b604052919050565b5f82601f830112611681575f80fd5b813567ffffffffffffffff81111561169b5761169b6115a9565b6116cc60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601611623565b8181528460208386010111156116e0575f80fd5b816020850160208301375f918101602001919091529392505050565b5f6060828403121561170c575f80fd5b6117146115d6565b9050813561172181611145565b815260208281013590820152604082013567ffffffffffffffff811115611746575f80fd5b61175284828501611672565b60408301525092915050565b5f6020828403121561176e575f80fd5b813567ffffffffffffffff811115611784575f80fd5b611790848285016116fc565b949350505050565b5f805f805f608086880312156117ac575f80fd5b85359450602086013567ffffffffffffffff808211156117ca575f80fd5b6117d689838a01611258565b9550604088013591506117e882611145565b909350606087013590808211156117fd575f80fd5b5061180a88828901611169565b969995985093965092949392505050565b5f6020828403121561182b575f80fd5b8135610fc981611145565b5f8060408385031215611847575f80fd5b823567ffffffffffffffff81111561185d575f80fd5b6118698582860161112f565b925050602083013561187a816111ae565b809150509250929050565b5f60208284031215611895575f80fd5b5035919050565b81835281816020850137505f602082840101525f60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b602081525f61179060208301848661189c565b5f60208284031215611906575f80fd5b5051919050565b5f61110036836116fc565b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261194b575f80fd5b830160208101925035905067ffffffffffffffff81111561196a575f80fd5b8036038213156111a7575f80fd5b82815260406020820152813560408201525f6119976020840184611918565b604060608501526119ac60808501828461189c565b9695505050505050565b80516111c6816111ae565b5f602082840312156119d1575f80fd5b8151610fc9816111ae565b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611a0f575f80fd5b83018035915067ffffffffffffffff821115611a29575f80fd5b6020019150368190038213156111a7575f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff808a16835280891660208401525086604083015260a06060830152611a7c60a08301868861189c565b8281036080840152611a8f81858761189c565b9a9950505050505050505050565b80516111c681611145565b63ffffffff81168114611166575f80fd5b80516111c681611aa8565b5f6101808284031215611ad5575f80fd5b611add6115ff565b611ae683611a9d565b8152611af460208401611a9d565b6020820152611b0560408401611a9d565b60408201526060830151606082015260808301516080820152611b2a60a08401611ab9565b60a082015260c083015160c082015260e083015160e0820152610100808401518183015250610120611b5d8185016119b6565b908201526101408381015190820152610160928301519281019290925250919050565b73ffffffffffffffffffffffffffffffffffffffff8151168252602081015160208301525f6040820151606060408501526117906060850182611490565b8051606080845281519084018190525f91602091908201906080860190845b81811015611bf957835183529284019291840191600101611bdd565b5050602085015192508581036020870152611c148184611b80565b92505050604083015184820360408601526110a48282611490565b5f6101a0611c3d83866113ad565b806101808401526110a481840185611bbe565b610180810161110082846113ad565b602081525f610fc96020830184611bbe565b848152836020820152608060408201525f611c8f6080830185611490565b8281036060840152611ca18185611490565b979650505050505050565b5f6020808385031215611cbd575f80fd5b823567ffffffffffffffff80821115611cd4575f80fd5b9084019060608287031215611ce7575f80fd5b611cef6115d6565b823582811115611cfd575f80fd5b8301601f81018813611d0d575f80fd5b803583811115611d1f57611d1f6115a9565b8060051b611d2e878201611623565b918252828101870191878101908b841115611d47575f80fd5b938801935b83851015611d6557843582529388019390880190611d4c565b8552505050508284013582811115611d7b575f80fd5b611d87888286016116fc565b85830152506040830135935081841115611d9f575f80fd5b611dab87858501611672565b60408201529695505050505050565b80356111c681611aa8565b5f6101808284031215611dd6575f80fd5b611dde6115ff565b611de7836112ac565b8152611df5602084016112ac565b6020820152611e06604084016112ac565b60408201526060830135606082015260808301356080820152611e2b60a08401611dba565b60a082015260c083013560c082015260e083013560e0820152610100808401358183015250610120611e5e8185016111bb565b908201526101408381013590820152610160928301359281019290925250919050565b5f61026073ffffffffffffffffffffffffffffffffffffffff808c168452808b166020850152508860408401528760608401528660808401528060a0840152611ecc81840187611490565b905082810360c0840152611ee08186611490565b915050610c0f60e08301846113ad565b602081525f610fc96020830184611b80565b602081525f8235611f1281611145565b73ffffffffffffffffffffffffffffffffffffffff811660208401525060208301356040830152611f466040840184611918565b6060808501526110a460808501828461189c565b5f6101e0611f6883886113ad565b85610180840152806101a0840152611f8281840186611b80565b90508281036101c0840152611ca18185611490565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffdfea2646970667358221220875b798f7ff64b4972f8844fc63ebeb558835c113a62c597af6ddd5ff1775f6564736f6c63430008190033","sourceMap":"822:11686:57:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4761:524;;;;;;:::i;:::-;;:::i;:::-;;2816:154;;;;;;:::i;:::-;;:::i;2257:62::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;3196:25:172;;;3184:2;3169:18;2257:62:57;;;;;;;;8064:2111;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;6265:1259::-;;;;;;:::i;:::-;;:::i;:::-;;;8090:66:172;8078:79;;;8060:98;;8048:2;8033:18;6265:1259:57;7916:248:172;10408:153:57;;;;;;:::i;:::-;;:::i;3379:425::-;;;;;;:::i;:::-;;:::i;2149:48::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;12136:42:172;12124:55;;;12106:74;;12094:2;12079:18;2149:48:57;11941:245:172;2037:64:57;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12356:14:172;;12349:22;12331:41;;12319:2;12304:18;2037:64:57;12191:187:172;4010:358:57;;;;;;:::i;:::-;;:::i;5760:154::-;;;;;;:::i;:::-;;:::i;5450:175::-;;;;;;:::i;:::-;5523:10;5554:5;5510:24;;;:12;:24;;;;;;;;:41;;;;;;;;:49;;;;;;5569:19;;;:7;:19;;;;;:36;;;;;;;;;:49;5450:175;1945:40;;;;;;:::i;:::-;;;;;;;;;;;;;;;1854;;;;;4761:524;4962:24;4969:6;4977:8;4962:6;:24::i;:::-;5256:22;;;;;:16;;;;;;:22;;5273:4;;;;5256:22;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5228:10;5220:19;;;;:7;:19;;;;;;5240:12;;5245:6;5240:12;:::i;:::-;5220:33;;;;;;;;;;;-1:-1:-1;5220:33:57;:58;-1:-1:-1;;;;;4761:524:57:o;2816:154::-;2892:10;2886:5;:17;;;;;;;;;;;;:24;;;2925:38;;;;;2906:4;;2957:5;;2925:38;:::i;:::-;;;;;;;;2816:154;;:::o;8064:2111::-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8323:22:57;8434:11;8448:27;8454:5;8448:27;8461:6;8448:27;:::i;:::-;8469:5;;8448:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8448:5:57;;-1:-1:-1;;;8448:27:57:i;:::-;8434:41;-1:-1:-1;8596:14:57;;;;:6;:14;:::i;:::-;8561:137;;;;;8644:44;8561:137;;;8060:98:172;8561:69:57;;;;;;;;8033:18:172;;8561:137:57;;;;;;;;;;;;;;;;;;-1:-1:-1;8561:137:57;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;8557:332;;8855:23;;;;;;;;;;;;;;8557:332;8743:9;8738:79;;8779:23;;;;;;;;;;;;;;8738:79;8699:128;8942:14;;;;:6;:14;:::i;:::-;8907:69;;;8990:5;8997:10;9009:3;9014:18;;;;:6;:18;:::i;:::-;9034:13;;8907:150;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8899:158;-1:-1:-1;9145:53:57;9157:5;9164:3;9145:53;9169:6;9145:53;:::i;:::-;9177:13;;9145:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9192:5:57;;-1:-1:-1;9145:11:57;;-1:-1:-1;;9145:53:57:i;:::-;9139:115;;9222:21;;;;;;;;;;;;;;9139:115;9268:93;;;;;9319:41;9268:93;;;8060:98:172;9268:50:57;;;;;;8033:18:172;;9268:93:57;;;;;;;;;;;;;;;;;;-1:-1:-1;9268:93:57;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;9264:905;;10082:75;;;;;;;;;;;;;;;;;;;;;10075:5;;10082:75;;10150:5;;;;;;10082:75;;;;10150:5;;10082:75;10150:5;10082:75;;;;;;;;;-1:-1:-1;;;10082:75:57;;;-1:-1:-1;10082:75:57;;;10105:6;10082:75;:::i;:::-;;;;;10128:13;;10082:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;10082:75:57;;-1:-1:-1;10064:94:57;;;;;;;;;:::i;:::-;;;;;;;;;;;;;10052:106;;9264:905;;;9428:9;9423:80;;9464:24;;;;;;;;;;;;;;9423:80;9631:15;9664:19;9712:5;9701:17;;;;;;;;:::i;:::-;;;;;;;;;;;9747:75;9701:17;9747:75;;;;;;;;;;;;;;;;9701:17;;;;;9747:75;9815:5;;;;;;9747:75;;;;9815:5;;9747:75;9815:5;9747:75;;;;;;;;;-1:-1:-1;;;9747:75:57;;;-1:-1:-1;9747:75:57;;;9770:6;9747:75;:::i;:::-;;;;;9793:13;;9747:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;9747:75:57;;-1:-1:-1;9736:87:57;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;9528:309;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9264:905:57;8347:1828;8064:2111;;;;;;;;;:::o;6265:1259::-;6529:12;;6621:36;;;;6632:7;6621:36;:::i;:::-;6589:68;;6712:11;6726:53;6740:4;6747:8;:15;;;6764:8;:14;;;6726:5;:53::i;:::-;6712:67;-1:-1:-1;6840:27:57;6870:40;;;;6881:10;6870:40;:::i;:::-;6840:70;;6998:79;7018:4;7025:3;7030:8;:15;;;7047:8;:22;;;7071:5;6998:11;:79::i;:::-;6992:141;;7101:21;;;;;;;;;;;;;;6992:141;7217:8;:15;;;:23;;;:30;;;7269:4;7288:6;7308:5;7327:16;7357:3;7374:8;:15;;;:27;;;7415:8;:22;;;7451:5;7217:249;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7484:33:57;;-1:-1:-1;;;;;;;6265:1259:57;;;;;;;;;;;;:::o;10408:153::-;10499:7;10546:6;10535:18;;;;;;;;:::i;:::-;;;;;;;;;;;;;10525:29;;;;;;10518:36;;10408:153;;;:::o;3379:425::-;3518:20;3526:4;3532:5;3518:7;:20::i;:::-;3775:22;;;;;:16;;;;;;:22;;3792:4;;;;3775:22;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3749:10;3741:19;;;;:7;:19;;;;;;;;:31;;;;;;;;:56;-1:-1:-1;;;;;3379:425:57:o;4010:358::-;4157:1;4130:14;;;;:6;:14;:::i;:::-;4122:37;;;4116:94;;4183:16;;;;;;;;;;;;;;4116:94;4233:10;4220:24;;;;4261:4;4220:24;;;;;;;4261:4;;4245:12;;4250:6;4245:12;:::i;:::-;4220:38;;;;;;;;;;;-1:-1:-1;4220:38:57;:45;;;;;;;;;;;;;4275:87;;;;4332:10;4308:43;;;4344:6;4308:43;;;;;;:::i;4275:87::-;4010:358;;:::o;5760:154::-;5834:10;5823:22;;;;:10;:22;;;;;;;;;:34;;;;:22;:34;;;;;;;;5872:35;;12106:74:172;;;5872:35:57;;12079:18:172;5872:35:57;;;;;;;5760:154;:::o;10945:721::-;11102:11;11133:5;:12;11149:1;11133:17;11129:531;;11229:12;11267;11272:6;11267:4;:12::i;:::-;11254:26;;;;;;26821:19:172;;26865:2;26856:12;;26692:182;11254:26:57;;;;;;;;;;;;;11244:37;;;;;;11229:52;;11344:45;11363:5;11370;:12;11376:5;11370:12;;;;;;;;;;;;;;;;11384:4;11344:18;:45::i;:::-;11339:108;;11416:16;;;;;;;;;;;;;;11339:108;11152:305;11129:531;;;11531:12;11536:6;11531:4;:12::i;:::-;11562:19;;;;;;;:12;:19;;;;;;;;:24;;;;;;;;;11525:18;;-1:-1:-1;11562:24:57;;11557:93;;11613:22;;;;;;;;;;;;;;11557:93;10945:721;;;;;:::o;12073:433::-;12339:17;;;;12304:4;12339:17;;;:10;:17;;;;;;12304:4;;12339:17;12370:28;;12366:113;;12421:47;;;;;:12;;;;;;:47;;12434:5;;12441:3;;12446:6;;12454:13;;12421:47;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12414:54;;;;;12366:113;12495:4;12488:11;;;12073:433;;;;;;;;:::o;1156:154:110:-;1247:4;1299;1270:25;1283:5;1290:4;1270:12;:25::i;:::-;:33;;1156:154;-1:-1:-1;;;;1156:154:110:o;1934:290::-;2017:7;2059:4;2017:7;2073:116;2097:5;:12;2093:1;:16;2073:116;;;2145:33;2155:12;2169:5;2175:1;2169:8;;;;;;;;:::i;:::-;;;;;;;2145:9;:33::i;:::-;2130:48;-1:-1:-1;2111:3:110;;2073:116;;;-1:-1:-1;2205:12:110;-1:-1:-1;1934:290:110;;;;;:::o;9205:147::-;9268:7;9298:1;9294;:5;:51;;9426:13;9517:15;;;9552:4;9545:15;;;9598:4;9582:21;;9294:51;;;-1:-1:-1;9426:13:110;9517:15;;;9552:4;9545:15;9598:4;9582:21;;;9205:147::o;14:170:172:-;89:5;134:2;125:6;120:3;116:16;112:25;109:45;;;150:1;147;140:12;109:45;-1:-1:-1;172:6:172;14:170;-1:-1:-1;14:170:172:o;189:169::-;290:42;283:5;279:54;272:5;269:65;259:93;;348:1;345;338:12;259:93;189:169;:::o;363:347::-;414:8;424:6;478:3;471:4;463:6;459:17;455:27;445:55;;496:1;493;486:12;445:55;-1:-1:-1;519:20:172;;562:18;551:30;;548:50;;;594:1;591;584:12;548:50;631:4;623:6;619:17;607:29;;683:3;676:4;667:6;659;655:19;651:30;648:39;645:59;;;700:1;697;690:12;645:59;363:347;;;;;:::o;715:118::-;801:5;794:13;787:21;780:5;777:32;767:60;;823:1;820;813:12;838:128;903:20;;932:28;903:20;932:28;:::i;:::-;838:128;;;:::o;971:1002::-;1129:6;1137;1145;1153;1161;1214:3;1202:9;1193:7;1189:23;1185:33;1182:53;;;1231:1;1228;1221:12;1182:53;1271:9;1258:23;1300:18;1341:2;1333:6;1330:14;1327:34;;;1357:1;1354;1347:12;1327:34;1380:82;1454:7;1445:6;1434:9;1430:22;1380:82;:::i;:::-;1370:92;;1512:2;1501:9;1497:18;1484:32;1471:45;;1525:46;1565:5;1525:46;:::i;:::-;1590:5;;-1:-1:-1;1648:2:172;1633:18;;1620:32;;1664:16;;;1661:36;;;1693:1;1690;1683:12;1661:36;;1732:60;1784:7;1773:8;1762:9;1758:24;1732:60;:::i;:::-;1811:8;;-1:-1:-1;1706:86:172;-1:-1:-1;;1898:2:172;1883:18;;1870:32;1911:30;1870:32;1911:30;:::i;:::-;1960:7;1950:17;;;971:1002;;;;;;;;:::o;1978:153::-;2036:5;2081:2;2072:6;2067:3;2063:16;2059:25;2056:45;;;2097:1;2094;2087:12;2136:420;2229:6;2237;2290:2;2278:9;2269:7;2265:23;2261:32;2258:52;;;2306:1;2303;2296:12;2258:52;2342:9;2329:23;2319:33;;2403:2;2392:9;2388:18;2375:32;2430:18;2422:6;2419:30;2416:50;;;2462:1;2459;2452:12;2416:50;2485:65;2542:7;2533:6;2522:9;2518:22;2485:65;:::i;:::-;2475:75;;;2136:420;;;;;:::o;2561:149::-;2629:20;;2658:46;2629:20;2658:46;:::i;2715:330::-;2783:6;2791;2844:2;2832:9;2823:7;2819:23;2815:32;2812:52;;;2860:1;2857;2850:12;2812:52;2899:9;2886:23;2918:46;2958:5;2918:46;:::i;:::-;2983:5;3035:2;3020:18;;;;3007:32;;-1:-1:-1;;;2715:330:172:o;3232:1317::-;3398:6;3406;3414;3422;3430;3438;3491:3;3479:9;3470:7;3466:23;3462:33;3459:53;;;3508:1;3505;3498:12;3459:53;3547:9;3534:23;3566:46;3606:5;3566:46;:::i;:::-;3631:5;-1:-1:-1;3687:2:172;3672:18;;3659:32;3710:18;3740:14;;;3737:34;;;3767:1;3764;3757:12;3737:34;3790:82;3864:7;3855:6;3844:9;3840:22;3790:82;:::i;:::-;3780:92;;3925:2;3914:9;3910:18;3897:32;3881:48;;3954:2;3944:8;3941:16;3938:36;;;3970:1;3967;3960:12;3938:36;4009:60;4061:7;4050:8;4039:9;4035:24;4009:60;:::i;:::-;4088:8;;-1:-1:-1;3983:86:172;-1:-1:-1;4176:2:172;4161:18;;4148:32;;-1:-1:-1;4192:16:172;;;4189:36;;;4221:1;4218;4211:12;4189:36;4259:8;4248:9;4244:24;4234:34;;4306:7;4299:4;4295:2;4291:13;4287:27;4277:55;;4328:1;4325;4318:12;4277:55;4368:2;4355:16;4394:2;4386:6;4383:14;4380:34;;;4410:1;4407;4400:12;4380:34;4463:7;4458:2;4448:6;4445:1;4441:14;4437:2;4433:23;4429:32;4426:45;4423:65;;;4484:1;4481;4474:12;4423:65;4515:2;4511;4507:11;4497:21;;4537:6;4527:16;;;;;3232:1317;;;;;;;;:::o;4889:1045::-;4974:12;;4639:42;4628:54;4616:67;;5038:4;5031:5;5027:16;5021:23;5053:56;5103:4;5098:3;5094:14;5080:12;4639:42;4628:54;4616:67;;4554:135;5053:56;;5157:4;5150:5;5146:16;5140:23;5172:58;5224:4;5219:3;5215:14;5199;4639:42;4628:54;4616:67;;4554:135;5172:58;;5279:4;5272:5;5268:16;5262:23;5255:4;5250:3;5246:14;5239:47;5335:4;5328:5;5324:16;5318:23;5311:4;5306:3;5302:14;5295:47;5390:4;5383:5;5379:16;5373:23;5405:49;5448:4;5443:3;5439:14;5423;4770:10;4759:22;4747:35;;4694:94;5405:49;;5503:4;5496:5;5492:16;5486:23;5479:4;5474:3;5470:14;5463:47;5559:4;5552:5;5548:16;5542:23;5535:4;5530:3;5526:14;5519:47;5585:6;5638:2;5631:5;5627:14;5621:21;5616:2;5611:3;5607:12;5600:43;;5662:6;5716:2;5709:5;5705:14;5699:21;5729:45;5770:2;5765:3;5761:12;5745:14;4863:13;4856:21;4844:34;;4793:91;5729:45;-1:-1:-1;;5793:6:172;5835:14;;;5829:21;5815:12;;;5808:43;5870:6;5912:14;;;5906:21;5892:12;;5885:43;4889:1045::o;5939:347::-;5980:3;6018:5;6012:12;6045:6;6040:3;6033:19;6101:6;6094:4;6087:5;6083:16;6076:4;6071:3;6067:14;6061:47;6153:1;6146:4;6137:6;6132:3;6128:16;6124:27;6117:38;6275:4;6205:66;6200:2;6192:6;6188:15;6184:88;6179:3;6175:98;6171:109;6164:116;;;5939:347;;;;:::o;6291:371::-;6473:4;6502:3;6514:41;6545:9;6537:6;6514:41;:::i;:::-;6592:2;6586:3;6575:9;6571:19;6564:31;6612:44;6652:2;6641:9;6637:18;6629:6;6612:44;:::i;6667:1244::-;6815:6;6823;6831;6839;6847;6855;6863;6871;6879;6932:3;6920:9;6911:7;6907:23;6903:33;6900:53;;;6949:1;6946;6939:12;6900:53;6988:9;6975:23;7007:46;7047:5;7007:46;:::i;:::-;7072:5;-1:-1:-1;7129:2:172;7114:18;;7101:32;7142:48;7101:32;7142:48;:::i;:::-;7209:7;-1:-1:-1;7263:2:172;7248:18;;7235:32;;-1:-1:-1;7314:2:172;7299:18;;7286:32;;-1:-1:-1;7365:3:172;7350:19;;7337:33;;-1:-1:-1;7421:3:172;7406:19;;7393:33;7445:18;7475:14;;;7472:34;;;7502:1;7499;7492:12;7472:34;7541:58;7591:7;7582:6;7571:9;7567:22;7541:58;:::i;:::-;7618:8;;-1:-1:-1;7515:84:172;-1:-1:-1;7706:3:172;7691:19;;7678:33;;-1:-1:-1;7723:16:172;;;7720:36;;;7752:1;7749;7742:12;7720:36;;7791:60;7843:7;7832:8;7821:9;7817:24;7791:60;:::i;:::-;7765:86;;7870:8;7860:18;;;7897:8;7887:18;;;6667:1244;;;;;;;;;;;:::o;8169:184::-;8221:77;8218:1;8211:88;8318:4;8315:1;8308:15;8342:4;8339:1;8332:15;8358:253;8430:2;8424:9;8472:4;8460:17;;8507:18;8492:34;;8528:22;;;8489:62;8486:88;;;8554:18;;:::i;:::-;8590:2;8583:22;8358:253;:::o;8616:252::-;8688:2;8682:9;8730:3;8718:16;;8764:18;8749:34;;8785:22;;;8746:62;8743:88;;;8811:18;;:::i;8873:334::-;8944:2;8938:9;9000:2;8990:13;;9005:66;8986:86;8974:99;;9103:18;9088:34;;9124:22;;;9085:62;9082:88;;;9150:18;;:::i;:::-;9186:2;9179:22;8873:334;;-1:-1:-1;8873:334:172:o;9212:589::-;9254:5;9307:3;9300:4;9292:6;9288:17;9284:27;9274:55;;9325:1;9322;9315:12;9274:55;9361:6;9348:20;9387:18;9383:2;9380:26;9377:52;;;9409:18;;:::i;:::-;9453:114;9561:4;9492:66;9485:4;9481:2;9477:13;9473:86;9469:97;9453:114;:::i;:::-;9592:2;9583:7;9576:19;9638:3;9631:4;9626:2;9618:6;9614:15;9610:26;9607:35;9604:55;;;9655:1;9652;9645:12;9604:55;9720:2;9713:4;9705:6;9701:17;9694:4;9685:7;9681:18;9668:55;9768:1;9743:16;;;9761:4;9739:27;9732:38;;;;9747:7;9212:589;-1:-1:-1;;;9212:589:172:o;9806:577::-;9875:5;9923:4;9911:9;9906:3;9902:19;9898:30;9895:50;;;9941:1;9938;9931:12;9895:50;9963:22;;:::i;:::-;9954:31;;10022:9;10009:23;10041:48;10081:7;10041:48;:::i;:::-;10098:22;;10180:2;10165:18;;;10152:32;10136:14;;;10129:56;10236:2;10221:18;;10208:32;10263:18;10252:30;;10249:50;;;10295:1;10292;10285:12;10249:50;10331:45;10372:3;10363:6;10352:9;10348:22;10331:45;:::i;:::-;10326:2;10319:5;10315:14;10308:69;;9806:577;;;;:::o;10388:375::-;10487:6;10540:2;10528:9;10519:7;10515:23;10511:32;10508:52;;;10556:1;10553;10546:12;10508:52;10596:9;10583:23;10629:18;10621:6;10618:30;10615:50;;;10661:1;10658;10651:12;10615:50;10684:73;10749:7;10740:6;10729:9;10725:22;10684:73;:::i;:::-;10674:83;10388:375;-1:-1:-1;;;;10388:375:172:o;10768:901::-;10912:6;10920;10928;10936;10944;10997:3;10985:9;10976:7;10972:23;10968:33;10965:53;;;11014:1;11011;11004:12;10965:53;11050:9;11037:23;11027:33;;11111:2;11100:9;11096:18;11083:32;11134:18;11175:2;11167:6;11164:14;11161:34;;;11191:1;11188;11181:12;11161:34;11214:65;11271:7;11262:6;11251:9;11247:22;11214:65;:::i;:::-;11204:75;;11329:2;11318:9;11314:18;11301:32;11288:45;;11342:46;11382:5;11342:46;:::i;:::-;11407:5;;-1:-1:-1;11465:2:172;11450:18;;11437:32;;11481:16;;;11478:36;;;11510:1;11507;11500:12;11478:36;;11549:60;11601:7;11590:8;11579:9;11575:24;11549:60;:::i;:::-;10768:901;;;;-1:-1:-1;10768:901:172;;-1:-1:-1;11628:8:172;;11523:86;10768:901;-1:-1:-1;;;10768:901:172:o;11674:262::-;11733:6;11786:2;11774:9;11765:7;11761:23;11757:32;11754:52;;;11802:1;11799;11792:12;11754:52;11841:9;11828:23;11860:46;11900:5;11860:46;:::i;12383:515::-;12490:6;12498;12551:2;12539:9;12530:7;12526:23;12522:32;12519:52;;;12567:1;12564;12557:12;12519:52;12607:9;12594:23;12640:18;12632:6;12629:30;12626:50;;;12672:1;12669;12662:12;12626:50;12695:82;12769:7;12760:6;12749:9;12745:22;12695:82;:::i;:::-;12685:92;;;12827:2;12816:9;12812:18;12799:32;12840:28;12862:5;12840:28;:::i;:::-;12887:5;12877:15;;;12383:515;;;;;:::o;13189:180::-;13248:6;13301:2;13289:9;13280:7;13276:23;13272:32;13269:52;;;13317:1;13314;13307:12;13269:52;-1:-1:-1;13340:23:172;;13189:180;-1:-1:-1;13189:180:172:o;13374:325::-;13462:6;13457:3;13450:19;13514:6;13507:5;13500:4;13495:3;13491:14;13478:43;;13566:1;13559:4;13550:6;13545:3;13541:16;13537:27;13530:38;13432:3;13688:4;13618:66;13613:2;13605:6;13601:15;13597:88;13592:3;13588:98;13584:109;13577:116;;13374:325;;;;:::o;13704:244::-;13861:2;13850:9;13843:21;13824:4;13881:61;13938:2;13927:9;13923:18;13915:6;13907;13881:61;:::i;13953:184::-;14023:6;14076:2;14064:9;14055:7;14051:23;14047:32;14044:52;;;14092:1;14089;14082:12;14044:52;-1:-1:-1;14115:16:172;;13953:184;-1:-1:-1;13953:184:172:o;14142:238::-;14274:9;14311:63;14359:14;14352:5;14311:63;:::i;14385:559::-;14443:5;14450:6;14510:3;14497:17;14592:66;14581:8;14565:14;14561:29;14557:102;14537:18;14533:127;14523:155;;14674:1;14671;14664:12;14523:155;14702:33;;14806:4;14793:18;;;-1:-1:-1;14754:21:172;;-1:-1:-1;14834:18:172;14823:30;;14820:50;;;14866:1;14863;14856:12;14820:50;14913:6;14897:14;14893:27;14886:5;14882:39;14879:59;;;14934:1;14931;14924:12;14949:542;15154:6;15143:9;15136:25;15197:2;15192;15181:9;15177:18;15170:30;15249:6;15236:20;15231:2;15220:9;15216:18;15209:48;15117:4;15300:55;15351:2;15343:6;15339:15;15331:6;15300:55;:::i;:::-;15391:2;15386;15375:9;15371:18;15364:30;15411:74;15480:3;15469:9;15465:19;15451:12;15437;15411:74;:::i;:::-;15403:82;14949:542;-1:-1:-1;;;;;;14949:542:172:o;15789:132::-;15865:13;;15887:28;15865:13;15887:28;:::i;15926:245::-;15993:6;16046:2;16034:9;16025:7;16021:23;16017:32;16014:52;;;16062:1;16059;16052:12;16014:52;16094:9;16088:16;16113:28;16135:5;16113:28;:::i;16176:580::-;16253:4;16259:6;16319:11;16306:25;16409:66;16398:8;16382:14;16378:29;16374:102;16354:18;16350:127;16340:155;;16491:1;16488;16481:12;16340:155;16518:33;;16570:20;;;-1:-1:-1;16613:18:172;16602:30;;16599:50;;;16645:1;16642;16635:12;16599:50;16678:4;16666:17;;-1:-1:-1;16709:14:172;16705:27;;;16695:38;;16692:58;;;16746:1;16743;16736:12;16761:726;17021:4;17050:42;17131:2;17123:6;17119:15;17108:9;17101:34;17183:2;17175:6;17171:15;17166:2;17155:9;17151:18;17144:43;;17223:6;17218:2;17207:9;17203:18;17196:34;17266:3;17261:2;17250:9;17246:18;17239:31;17293:62;17350:3;17339:9;17335:19;17327:6;17319;17293:62;:::i;:::-;17404:9;17396:6;17392:22;17386:3;17375:9;17371:19;17364:51;17432:49;17474:6;17466;17458;17432:49;:::i;:::-;17424:57;16761:726;-1:-1:-1;;;;;;;;;;16761:726:172:o;17492:161::-;17579:13;;17601:46;17579:13;17601:46;:::i;17658:121::-;17743:10;17736:5;17732:22;17725:5;17722:33;17712:61;;17769:1;17766;17759:12;17784:136;17862:13;;17884:30;17862:13;17884:30;:::i;17925:1154::-;18017:6;18070:3;18058:9;18049:7;18045:23;18041:33;18038:53;;;18087:1;18084;18077:12;18038:53;18113:22;;:::i;:::-;18158:48;18196:9;18158:48;:::i;:::-;18151:5;18144:63;18239:57;18292:2;18281:9;18277:18;18239:57;:::i;:::-;18234:2;18227:5;18223:14;18216:81;18329:57;18382:2;18371:9;18367:18;18329:57;:::i;:::-;18324:2;18317:5;18313:14;18306:81;18440:2;18429:9;18425:18;18419:25;18414:2;18407:5;18403:14;18396:49;18499:3;18488:9;18484:19;18478:26;18472:3;18465:5;18461:15;18454:51;18538:49;18582:3;18571:9;18567:19;18538:49;:::i;:::-;18532:3;18525:5;18521:15;18514:74;18642:3;18631:9;18627:19;18621:26;18615:3;18608:5;18604:15;18597:51;18702:3;18691:9;18687:19;18681:26;18675:3;18668:5;18664:15;18657:51;18727:3;18783:2;18772:9;18768:18;18762:25;18757:2;18750:5;18746:14;18739:49;;18807:3;18842:46;18884:2;18873:9;18869:18;18842:46;:::i;:::-;18826:14;;;18819:70;18908:3;18949:18;;;18943:25;18927:14;;;18920:49;18988:3;19029:18;;;19023:25;19007:14;;;19000:49;;;;-1:-1:-1;18830:5:172;17925:1154;-1:-1:-1;17925:1154:172:o;19084:370::-;19197:42;19189:5;19183:12;19179:61;19174:3;19167:74;19290:4;19283:5;19279:16;19273:23;19266:4;19261:3;19257:14;19250:47;19149:3;19343:4;19336:5;19332:16;19326:23;19381:4;19374;19369:3;19365:14;19358:28;19402:46;19442:4;19437:3;19433:14;19419:12;19402:46;:::i;19459:920::-;19588:12;;19554:4;19609:17;;;19675:19;;19545:14;;;19703:20;;;19515:3;;19773:4;;19800:23;;;;19750:3;19741:13;;;19515:3;19851:175;19865:6;19862:1;19859:13;19851:175;;;19928:13;;19914:28;;20001:15;;;;19964:14;;;;19887:1;19880:9;19851:175;;;19855:3;;20074:4;20067:5;20063:16;20057:23;20035:45;;20123:3;20116:5;20112:15;20105:4;20100:3;20096:14;20089:39;20151:63;20208:5;20192:14;20151:63;:::i;:::-;20137:77;;;;20262:4;20255:5;20251:16;20245:23;20312:3;20304:6;20300:16;20293:4;20288:3;20284:14;20277:40;20333;20366:6;20350:14;20333:40;:::i;20384:430::-;20610:4;20639:3;20651:41;20682:9;20674:6;20651:41;:::i;:::-;20729:2;20723:3;20712:9;20708:19;20701:31;20749:59;20804:2;20793:9;20789:18;20781:6;20749:59;:::i;20819:238::-;20997:3;20982:19;;21010:41;20986:9;21033:6;21010:41;:::i;21062:276::-;21253:2;21242:9;21235:21;21216:4;21273:59;21328:2;21317:9;21313:18;21305:6;21273:59;:::i;21343:521::-;21592:6;21581:9;21574:25;21635:6;21630:2;21619:9;21615:18;21608:34;21678:3;21673:2;21662:9;21658:18;21651:31;21555:4;21705:45;21745:3;21734:9;21730:19;21722:6;21705:45;:::i;:::-;21798:9;21790:6;21786:22;21781:2;21770:9;21766:18;21759:50;21826:32;21851:6;21843;21826:32;:::i;:::-;21818:40;21343:521;-1:-1:-1;;;;;;;21343:521:172:o;21869:1571::-;21959:6;21990:2;22033;22021:9;22012:7;22008:23;22004:32;22001:52;;;22049:1;22046;22039:12;22001:52;22089:9;22076:23;22118:18;22159:2;22151:6;22148:14;22145:34;;;22175:1;22172;22165:12;22145:34;22198:22;;;;22254:4;22236:16;;;22232:27;22229:47;;;22272:1;22269;22262:12;22229:47;22298:22;;:::i;:::-;22358:2;22345:16;22386:2;22376:8;22373:16;22370:36;;;22402:1;22399;22392:12;22370:36;22425:17;;22473:4;22465:13;;22461:27;-1:-1:-1;22451:55:172;;22502:1;22499;22492:12;22451:55;22538:2;22525:16;22560:2;22556;22553:10;22550:36;;;22566:18;;:::i;:::-;22612:2;22609:1;22605:10;22635:28;22659:2;22655;22651:11;22635:28;:::i;:::-;22697:15;;;22767:11;;;22763:20;;;22728:12;;;;22795:19;;;22792:39;;;22827:1;22824;22817:12;22792:39;22851:11;;;;22871:142;22887:6;22882:3;22879:15;22871:142;;;22953:17;;22941:30;;22904:12;;;;22991;;;;22871:142;;;23022:20;;-1:-1:-1;;;;23080:11:172;;;23067:25;23104:16;;;23101:36;;;23133:1;23130;23123:12;23101:36;23169:68;23229:7;23218:8;23214:2;23210:17;23169:68;:::i;:::-;23164:2;23157:5;23153:14;23146:92;;23284:2;23280;23276:11;23263:25;23247:41;;23313:2;23303:8;23300:16;23297:36;;;23329:1;23326;23319:12;23297:36;23365:44;23401:7;23390:8;23386:2;23382:17;23365:44;:::i;:::-;23360:2;23349:14;;23342:68;23353:5;21869:1571;-1:-1:-1;;;;;;21869:1571:172:o;23445:132::-;23512:20;;23541:30;23512:20;23541:30;:::i;23582:1113::-;23663:6;23716:3;23704:9;23695:7;23691:23;23687:33;23684:53;;;23733:1;23730;23723:12;23684:53;23759:22;;:::i;:::-;23804:29;23823:9;23804:29;:::i;:::-;23797:5;23790:44;23866:38;23900:2;23889:9;23885:18;23866:38;:::i;:::-;23861:2;23854:5;23850:14;23843:62;23937:38;23971:2;23960:9;23956:18;23937:38;:::i;:::-;23932:2;23925:5;23921:14;23914:62;24036:2;24025:9;24021:18;24008:32;24003:2;23996:5;23992:14;23985:56;24102:3;24091:9;24087:19;24074:33;24068:3;24061:5;24057:15;24050:58;24141:38;24174:3;24163:9;24159:19;24141:38;:::i;:::-;24135:3;24128:5;24124:15;24117:63;24241:3;24230:9;24226:19;24213:33;24207:3;24200:5;24196:15;24189:58;24308:3;24297:9;24293:19;24280:33;24274:3;24267:5;24263:15;24256:58;24333:3;24396:2;24385:9;24381:18;24368:32;24363:2;24356:5;24352:14;24345:56;;24420:3;24455:35;24486:2;24475:9;24471:18;24455:35;:::i;:::-;24439:14;;;24432:59;24510:3;24558:18;;;24545:32;24529:14;;;24522:56;24597:3;24645:18;;;24632:32;24616:14;;;24609:56;;;;-1:-1:-1;24443:5:172;23582:1113;-1:-1:-1;23582:1113:172:o;24700:968::-;25068:4;25097:3;25119:42;25200:2;25192:6;25188:15;25177:9;25170:34;25252:2;25244:6;25240:15;25235:2;25224:9;25220:18;25213:43;;25292:6;25287:2;25276:9;25272:18;25265:34;25335:6;25330:2;25319:9;25315:18;25308:34;25379:6;25373:3;25362:9;25358:19;25351:35;25423:2;25417:3;25406:9;25402:19;25395:31;25449:44;25489:2;25478:9;25474:18;25466:6;25449:44;:::i;:::-;25435:58;;25542:9;25534:6;25530:22;25524:3;25513:9;25509:19;25502:51;25570:32;25595:6;25587;25570:32;:::i;:::-;25562:40;;;25611:51;25657:3;25646:9;25642:19;25634:6;25611:51;:::i;25673:303::-;25882:2;25871:9;25864:21;25845:4;25902:68;25966:2;25955:9;25951:18;25943:6;25902:68;:::i;25981:706::-;26192:2;26181:9;26174:21;26155:4;26230:6;26217:20;26246:46;26286:5;26246:46;:::i;:::-;26339:42;26332:5;26328:54;26323:2;26312:9;26308:18;26301:82;;26444:2;26436:6;26432:15;26419:29;26414:2;26403:9;26399:18;26392:57;26492:55;26543:2;26535:6;26531:15;26523:6;26492:55;:::i;:::-;26585:4;26578;26567:9;26563:20;26556:34;26607:74;26676:3;26665:9;26661:19;26647:12;26633;26607:74;:::i;26879:690::-;27197:4;27226:3;27238:41;27269:9;27261:6;27238:41;:::i;:::-;27316:6;27310:3;27299:9;27295:19;27288:35;27360:2;27354:3;27343:9;27339:19;27332:31;27386:68;27450:2;27439:9;27435:18;27427:6;27386:68;:::i;:::-;27372:82;;27503:9;27495:6;27491:22;27485:3;27474:9;27470:19;27463:51;27531:32;27556:6;27548;27531:32;:::i;27574:184::-;27626:77;27623:1;27616:88;27723:4;27720:1;27713:15;27747:4;27744:1;27737:15","linkReferences":{},"immutableReferences":{"9065":[{"start":797,"length":32},{"start":2322,"length":32}]}},"methodIdentifiers":{"cabinet(address,bytes32)":"1c7662c8","create((address,bytes32,bytes),bool)":"6bfae1ca","createWithContext((address,bytes32,bytes),address,bytes,bool)":"0d0d9800","domainSeparator()":"f698da25","getTradeableOrderWithSignature(address,(address,bytes32,bytes),bytes,bytes32[])":"26e0a196","hash((address,bytes32,bytes))":"5500079d","isValidSafeSignature(address,address,bytes32,bytes32,bytes32,bytes,bytes)":"53f00b14","remove(bytes32)":"95bc2673","roots(address)":"a4546876","setRoot(bytes32,(uint256,bytes))":"1ab0dd9d","setRootWithContext(bytes32,(uint256,bytes),address,bytes)":"57f1d41a","setSwapGuard(address)":"8f7984ed","singleOrders(address,bytes32)":"6108c532","swapGuards(address)":"595001b2"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_settlement\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"InterfaceNotSupported\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidFallbackHandler\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidHandler\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ProofNotAuthed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SingleOrderNotAuthed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SwapGuardRestricted\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"contract IConditionalOrder\",\"name\":\"handler\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"staticInput\",\"type\":\"bytes\"}],\"indexed\":false,\"internalType\":\"struct IConditionalOrder.ConditionalOrderParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"ConditionalOrderCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"location\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"indexed\":false,\"internalType\":\"struct ComposableCoW.Proof\",\"name\":\"proof\",\"type\":\"tuple\"}],\"name\":\"MerkleRootSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"contract ISwapGuard\",\"name\":\"swapGuard\",\"type\":\"address\"}],\"name\":\"SwapGuardSet\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"cabinet\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"contract IConditionalOrder\",\"name\":\"handler\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"staticInput\",\"type\":\"bytes\"}],\"internalType\":\"struct IConditionalOrder.ConditionalOrderParams\",\"name\":\"params\",\"type\":\"tuple\"},{\"internalType\":\"bool\",\"name\":\"dispatch\",\"type\":\"bool\"}],\"name\":\"create\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"contract IConditionalOrder\",\"name\":\"handler\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"staticInput\",\"type\":\"bytes\"}],\"internalType\":\"struct IConditionalOrder.ConditionalOrderParams\",\"name\":\"params\",\"type\":\"tuple\"},{\"internalType\":\"contract IValueFactory\",\"name\":\"factory\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"dispatch\",\"type\":\"bool\"}],\"name\":\"createWithContext\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"domainSeparator\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"contract IConditionalOrder\",\"name\":\"handler\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"staticInput\",\"type\":\"bytes\"}],\"internalType\":\"struct IConditionalOrder.ConditionalOrderParams\",\"name\":\"params\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"offchainInput\",\"type\":\"bytes\"},{\"internalType\":\"bytes32[]\",\"name\":\"proof\",\"type\":\"bytes32[]\"}],\"name\":\"getTradeableOrderWithSignature\",\"outputs\":[{\"components\":[{\"internalType\":\"contract IERC20\",\"name\":\"sellToken\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"buyToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"sellAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"buyAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"validTo\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"appData\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"feeAmount\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"kind\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"partiallyFillable\",\"type\":\"bool\"},{\"internalType\":\"bytes32\",\"name\":\"sellTokenBalance\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"buyTokenBalance\",\"type\":\"bytes32\"}],\"internalType\":\"struct GPv2Order.Data\",\"name\":\"order\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"contract IConditionalOrder\",\"name\":\"handler\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"staticInput\",\"type\":\"bytes\"}],\"internalType\":\"struct IConditionalOrder.ConditionalOrderParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"hash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract Safe\",\"name\":\"safe\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_domainSeparator\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"encodeData\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"}],\"name\":\"isValidSafeSignature\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"magic\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"singleOrderHash\",\"type\":\"bytes32\"}],\"name\":\"remove\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"roots\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"location\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct ComposableCoW.Proof\",\"name\":\"proof\",\"type\":\"tuple\"}],\"name\":\"setRoot\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"location\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct ComposableCoW.Proof\",\"name\":\"proof\",\"type\":\"tuple\"},{\"internalType\":\"contract IValueFactory\",\"name\":\"factory\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"setRootWithContext\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISwapGuard\",\"name\":\"swapGuard\",\"type\":\"address\"}],\"name\":\"setSwapGuard\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"singleOrders\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"swapGuards\",\"outputs\":[{\"internalType\":\"contract ISwapGuard\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"mfw78 \",\"details\":\"Designed to be used with Safe + ExtensibleFallbackHandler\",\"kind\":\"dev\",\"methods\":{\"constructor\":{\"params\":{\"_settlement\":\"The GPv2 settlement contract\"}},\"create((address,bytes32,bytes),bool)\":{\"params\":{\"dispatch\":\"Whether to dispatch the `ConditionalOrderCreated` event\",\"params\":\"The parameters of the conditional order\"}},\"createWithContext((address,bytes32,bytes),address,bytes,bool)\":{\"params\":{\"data\":\"Implementation specific off-chain data\",\"dispatch\":\"Whether to dispatch the `ConditionalOrderCreated` event\",\"factory\":\"A factory from which to get a value to store in the cabinet\",\"params\":\"The parameters of the conditional order\"}},\"getTradeableOrderWithSignature(address,(address,bytes32,bytes),bytes,bytes32[])\":{\"params\":{\"offchainInput\":\"any dynamic off-chain input for generating the discrete order\",\"owner\":\"of the order\",\"params\":\"`ConditionalOrderParams` for the order\",\"proof\":\"if using merkle-roots that H(handler || salt || staticInput) is in the merkle tree\"},\"returns\":{\"order\":\"discrete order for submitting to CoW Protocol API\",\"signature\":\"for submitting to CoW Protocol API\"}},\"hash((address,bytes32,bytes))\":{\"params\":{\"params\":\"`ConditionalOrderParams` for the order\"},\"returns\":{\"_0\":\"hash of the conditional order parameters\"}},\"isValidSafeSignature(address,address,bytes32,bytes32,bytes32,bytes,bytes)\":{\"details\":\"This function does not make use of the `typeHash` parameter as CoW Protocol does not have more than one type.\",\"params\":{\"encodeData\":\"Is the abi encoded `GPv2Order.Data`\",\"payload\":\"Is the abi encoded `PayloadStruct`\"},\"returns\":{\"magic\":\"The magic value that should be returned if the signature is valid (0x1626ba7e)\"}},\"remove(bytes32)\":{\"params\":{\"singleOrderHash\":\"The hash of the single conditional order to remove\"}},\"setRoot(bytes32,(uint256,bytes))\":{\"params\":{\"proof\":\"Where to find the proofs\",\"root\":\"The merkle root of the user's conditional orders\"}},\"setRootWithContext(bytes32,(uint256,bytes),address,bytes)\":{\"params\":{\"data\":\"Implementation specific off-chain data\",\"factory\":\"A factory from which to get a value to store in the cabinet related to the merkle root\",\"proof\":\"Where to find the proofs\",\"root\":\"The merkle root of the user's conditional orders\"}},\"setSwapGuard(address)\":{\"params\":{\"swapGuard\":\"The address of the swap guard\"}}},\"stateVariables\":{\"roots\":{\"details\":\"Mapping of owner's merkle roots\"},\"singleOrders\":{\"details\":\"Mapping of owner's single orders\"}},\"title\":\"ComposableCoW - A contract that allows users to create multiple conditional orders\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"create((address,bytes32,bytes),bool)\":{\"notice\":\"Authorise a single conditional order\"},\"createWithContext((address,bytes32,bytes),address,bytes,bool)\":{\"notice\":\"Authorise a single conditional order and store a value from on-chain in the cabinet\"},\"getTradeableOrderWithSignature(address,(address,bytes32,bytes),bytes,bytes32[])\":{\"notice\":\"Get the `GPv2Order.Data` and signature for submitting to CoW Protocol API\"},\"hash((address,bytes32,bytes))\":{\"notice\":\"Return the hash of the conditional order parameters\"},\"remove(bytes32)\":{\"notice\":\"Remove the authorisation of a single conditional order\"},\"setRoot(bytes32,(uint256,bytes))\":{\"notice\":\"Set the merkle root of the user's conditional ordersSet the merkle root of the user's conditional orders\"},\"setRootWithContext(bytes32,(uint256,bytes),address,bytes)\":{\"notice\":\"Set the merkle root of the user's conditional orders and store a value from on-chain in the cabinet\"},\"setSwapGuard(address)\":{\"notice\":\"Set the swap guard of the user's conditional orders\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/composable-cow/src/ComposableCoW.sol\":\"ComposableCoW\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100000},\"remappings\":[\":@openzeppelin/=lib/composable-cow/lib/@openzeppelin/\",\":composable-cow/=lib/composable-cow/\",\":cowprotocol/=lib/composable-cow/lib/cowprotocol/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin/lib/halmos-cheatcodes/src/\",\":murky/=lib/composable-cow/lib/murky/src/\",\":openzeppelin-contracts/=lib/composable-cow/lib/murky/lib/openzeppelin-contracts/\",\":openzeppelin/=lib/openzeppelin/\",\":safe/=lib/composable-cow/lib/safe/\",\":uniswap-v2-core/=lib/uniswap-v2-core/contracts/\",\"lib/composable-cow:@openzeppelin/=lib/openzeppelin/contracts/\",\"lib/composable-cow:@openzeppelin/contracts/=lib/openzeppelin/contracts/\",\"lib/composable-cow:safe/=lib/composable-cow/lib/safe/contracts/\"]},\"sources\":{\"lib/composable-cow/lib/cowprotocol/src/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0x2db02cc0e23db99d10cd21590425b714060a556bcfb934cb5ab3b80aef1610ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c05f8a21a244e6566a3e555028cebeebd1c38902f0cea2e9b014cc7becaf3140\",\"dweb:/ipfs/QmTBY1GphjwAnY2nC9qKMwj5HeAUJMgFdo5YZcVxsVyqFb\"]},\"lib/composable-cow/lib/cowprotocol/src/contracts/libraries/GPv2Interaction.sol\":{\"keccak256\":\"0x7b69b3d536c995e84a5fe4ec3dc63ddf01a3538f72ece83828e87aa90df33a7d\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://7ba34b22f5b25cd6fecfd0d5e9b6077b36130a2cb4539b1311de0f328c226958\",\"dweb:/ipfs/QmUURWvPbrZ6Z4iDv8Sa8soQCZyKZCsCcdMzgY9Jy5RNV2\"]},\"lib/composable-cow/lib/cowprotocol/src/contracts/libraries/GPv2Order.sol\":{\"keccak256\":\"0xb96efb76433446cf0ccb9f5bc926301a9c8bcbfd17dcd6a36a1e6207f5b436b2\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://5ec097e17d3e47e16808a5246a99af7ef618bb58ccb61d7331bfca1929cbbd82\",\"dweb:/ipfs/QmbH7rg5s5gdpa5KENMUXHyGBWJyQn6XEwv9JakRSCcv8n\"]},\"lib/composable-cow/lib/safe/contracts/Safe.sol\":{\"keccak256\":\"0xbab2f7bec33283e349342e7b23f5191c678c64fe02065bac4f4f44fb3f5d2638\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://f95884e85691d49ba3efb9b2a160466fed17377bfa92fc8bf5923f3c61e99119\",\"dweb:/ipfs/QmQjhP9RnB3Cj3DNpWLzWqqvRdKBya6Efx6xzmRrwLqjm9\"]},\"lib/composable-cow/lib/safe/contracts/base/Executor.sol\":{\"keccak256\":\"0xf0be832e7529e92000544170a5529d73666a9b5e836b30c6f2ed6ef7d7d8c94a\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://710022b40c9f78a5b55b97f6ce600e4834df2ddd36bf714974d953883c82d58c\",\"dweb:/ipfs/QmbdJNKH5opevm7HxQKQAe6W7dQTgSHKa4nKvbUNGRcQQp\"]},\"lib/composable-cow/lib/safe/contracts/base/FallbackManager.sol\":{\"keccak256\":\"0x646b3088f15af8b4f71ac5eeffaa24ce0c1abed5f494f90368208b09e35d5165\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://7975be46d228510c70659b18076aecb3b0e7331b4d3a162444304145143bdc6e\",\"dweb:/ipfs/QmRRbZrWUnoky6pVo8zMUzCTsshR4sZ2FjR13s8vyAb8dV\"]},\"lib/composable-cow/lib/safe/contracts/base/GuardManager.sol\":{\"keccak256\":\"0xedfc7c830ab35e52d1208986b253f3422c2f0ca68054c10819fb348fcc6ccf5d\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://3ff8a4194d1160d2e23142937bc9d7eac7b6b553b1ee226390a0df07ebac1b64\",\"dweb:/ipfs/QmSw8Y7z4TQrUTEosdWqcug7TUv9Tg1kxqMKHd7RuTnyzx\"]},\"lib/composable-cow/lib/safe/contracts/base/ModuleManager.sol\":{\"keccak256\":\"0xd71b0d56dce386fa6f67c51061face071b2c7b03ec535d68717e2538ec47113a\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://30812896d9f57cae84a432c67fbb3007d566071ec203b2992f1c0f762722df0d\",\"dweb:/ipfs/QmRyJ3JbsUwDQxQDTrqDDX4qNtVu7XiW8cD8WP5kgNJGGz\"]},\"lib/composable-cow/lib/safe/contracts/base/OwnerManager.sol\":{\"keccak256\":\"0xec9799093eb7a73461cd5e563198751ee222f956f754ea622a03fe953e515b2c\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://5729c58b14e7b656c71dd3377e9519c0d34ef8c04851a9a21c3d62393e4fae7a\",\"dweb:/ipfs/QmRRtfFpNqvdANny9TYBr8rA3HbT1egUCpb2uXALMHkVxK\"]},\"lib/composable-cow/lib/safe/contracts/common/Enum.sol\":{\"keccak256\":\"0x4ff3008926a118e9f36e6747facc39dd13168e0d00f516888ae966ec20766453\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://385929800d1c0f92eb165fcf37a9e28b395b17d8b74f74755654d3a096a0fc34\",\"dweb:/ipfs/QmagieLuN2jrp2oJHFyZuyz65Sh1CcupnXSEKypGFS5Gvo\"]},\"lib/composable-cow/lib/safe/contracts/common/NativeCurrencyPaymentFallback.sol\":{\"keccak256\":\"0x3ddcd4130c67326033dcf773d2d87d7147e3a8386993ea3ab3f1c38da406adba\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://740a729397b6a0d903f4738a50e856d4e5039555024937b148d97529525dbfa9\",\"dweb:/ipfs/QmQJuNVvHbkeJ6jjd75D8FsZBPXH6neoGBZdQgtsA82E7g\"]},\"lib/composable-cow/lib/safe/contracts/common/SecuredTokenTransfer.sol\":{\"keccak256\":\"0x1eb8c3601538b73dd6a823ac4fca49bb8adc97d1302a936622156636c971eb05\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://c26495b1fe9229ea17f90b70f295030880d629b9ea3016ea20b634983865f7b3\",\"dweb:/ipfs/QmTc1UmKcynkKn8DeviLMuy6scxNvAVSdLoX4ndUtdEL9N\"]},\"lib/composable-cow/lib/safe/contracts/common/SelfAuthorized.sol\":{\"keccak256\":\"0xfb0e176bb208e047a234fe757e2acd13787e27879570b8544547ac787feb5f13\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://8e9a317f0c3c02ab1d6c38039bff2b3e0c97f4dc9d229d3d9149c1af1c5023b3\",\"dweb:/ipfs/QmNcZjNChsuXF34T6f3Zu7i3tnqvKN4NyWBWZ4tXLH9kMu\"]},\"lib/composable-cow/lib/safe/contracts/common/SignatureDecoder.sol\":{\"keccak256\":\"0x2a3baf0efa1585ddf2276505c6d34fa16f01cafff1288e40110d5e67fb459c7c\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://00cdded3068b9051ee0a966f40926fbc57dbe7ef8bf4285db3740f9d50468c80\",\"dweb:/ipfs/QmcP5hKmaRqBe7TpgoXtncZqsNKKdCCKxZgXoxEL4Nj5F4\"]},\"lib/composable-cow/lib/safe/contracts/common/Singleton.sol\":{\"keccak256\":\"0xcab7c6e5fb6d7295a9343f72fec26a2f632ddfe220a6f267b5c5a1eb2f9bce50\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://dd1c31d5787ef590a60f6b0dbc74d09e6fe4d3ad2f0529940d662bf315521cde\",\"dweb:/ipfs/QmSAS5DYrGksJe4cPQ4wLrveXa1CjxAuEiohcLpPG5h2bo\"]},\"lib/composable-cow/lib/safe/contracts/common/StorageAccessible.sol\":{\"keccak256\":\"0x2c5412a8f014db332322a6b24ee3cedce15dca17a721ae49fdef368568d4391e\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://e775f267d3e60ebe452d9533f46a0eb1f1dc4593d1bcb553e86cea205a5f361e\",\"dweb:/ipfs/QmQdYDHGQsiMx1AADWRhX7tduU9ycTzrT5q3zBWvphXzKZ\"]},\"lib/composable-cow/lib/safe/contracts/external/SafeMath.sol\":{\"keccak256\":\"0x5f856674d9be11344c5899deb43364e19baa75bc881cada4c159938270b2bd89\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://351c66e5fe92c0a51f79d133521545dabdd3f756312a7b1428c1fc813c512a1c\",\"dweb:/ipfs/QmdnrRmgef8SdamEU6fVEqFD5RQwXeDFTfQuZEfX2vxC4x\"]},\"lib/composable-cow/lib/safe/contracts/handler/ExtensibleFallbackHandler.sol\":{\"keccak256\":\"0x7e511290dae21c9b1710c9250320d9b98ffd71c9501af354814485b58e1b64e9\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://3e55ba23bde90d2cdd07baa7172ea41bdc1d638bc7b6eb5dce03189d86412515\",\"dweb:/ipfs/QmbxH73sqooeQL8ehsP2FDoXhLBoPs3wr3nod6ZgJwVcFV\"]},\"lib/composable-cow/lib/safe/contracts/handler/HandlerContext.sol\":{\"keccak256\":\"0x3e105ebac003af9c8d34e3eed517ff0355d5f487e17478c85df0f225b04846f5\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://657bec347d746453883c461a3d9a2275bf2b99625dcaef0960e1c0276c3d56c4\",\"dweb:/ipfs/QmUGj8Tzs1CsmUf63LbTMK81EEGtYYnWKLGdHHtoYCd9CF\"]},\"lib/composable-cow/lib/safe/contracts/handler/extensible/ERC165Handler.sol\":{\"keccak256\":\"0x4d562221e6645b6e79da99d2b322331617051fa90e06ec7ce3f9a6a87bae116c\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://5a574dd50b9e9a594afda4a96701295e18a0054fcaf5083573ee80033b2da060\",\"dweb:/ipfs/QmNQf5rfHqMCGKBcqZowz89JEZe8rjjoYEkySBy7oxwh4Y\"]},\"lib/composable-cow/lib/safe/contracts/handler/extensible/ExtensibleBase.sol\":{\"keccak256\":\"0xe5b71121b0020728158ee60756982e74809f9d77cb294a6d65930bff09d84d15\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://fd7fd2702b31fc8569a9986a476dd9fe9aa76624d0da6d832547f624426925f9\",\"dweb:/ipfs/QmWjYGtW38Fnwvm8qFvoJYhz2nTuySGkHouwRF3eksd6Nh\"]},\"lib/composable-cow/lib/safe/contracts/handler/extensible/FallbackHandler.sol\":{\"keccak256\":\"0x3020c96c812548a2bf6413168ee21033638a36736b695909f7cf54277beefd76\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://6ffdf49fb516791f4cad239fc780bb5d9934bb06744b99b0fbc067f31ad13591\",\"dweb:/ipfs/QmPXwVoDhnhnQFSxEiHDZYRQJ5ozAECSFrUHMTjwAJ1LuM\"]},\"lib/composable-cow/lib/safe/contracts/handler/extensible/MarshalLib.sol\":{\"keccak256\":\"0x36eacc47b1ce7697e679c1b5c0d3a86d8f46a0436b666f86e88df04765cde5c1\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://7097bfb174ea424ef55f9a5b55f4a9857f7368cdd3061888f5ffb3e29503f071\",\"dweb:/ipfs/QmRPvAvMdGRuh8AjePtamBGUU55p1tSP8ZHUUMfxWgi1ew\"]},\"lib/composable-cow/lib/safe/contracts/handler/extensible/SignatureVerifierMuxer.sol\":{\"keccak256\":\"0x51e8dad81059527f9b6b6827d742a0fbc0960c66e364dd1e67c8f151970c6ee4\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://b368a4eb15d50487986db1543a5c786324a4d0de680a421d131e21c25459f666\",\"dweb:/ipfs/QmVca3J2JBEZtxW3uNMvYc9ugQH24CqantLnVzKcZwG71W\"]},\"lib/composable-cow/lib/safe/contracts/handler/extensible/TokenCallbacks.sol\":{\"keccak256\":\"0x549d737c3eef66cec2a858b34dce4db42e56d8f053635742230873e6049e81ed\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://f03f130c36be396895acfa7891ccca36725c6a6496085d88fc33071e00093073\",\"dweb:/ipfs/QmfLfenjQ1gWnotx5Vdda1kJBqjnCi53bGNqyZ5cN6wxXV\"]},\"lib/composable-cow/lib/safe/contracts/interfaces/ERC1155TokenReceiver.sol\":{\"keccak256\":\"0x87e62665c041cade64e753ecdccf931cb100ab6e4bcc98769c1e6474be9db493\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://59ca1157dcfe19c72b9d1244a6ae5ec70fee9793d4d8af523b70f22ae567d55c\",\"dweb:/ipfs/QmfE3kv73QuQWAWQND927LWVHVLCp19m1mLUvxVYJDEFZM\"]},\"lib/composable-cow/lib/safe/contracts/interfaces/ERC721TokenReceiver.sol\":{\"keccak256\":\"0x96c4c5457fede2d4c6012011dfda36f8e8ffdb7388468f2dddb35661538bf479\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://99a54737bc23722f79ec9cf9de63ba35b556a61df453eb332f3cac783503f26c\",\"dweb:/ipfs/QmbLW5C2RhoLbwDWEPtTKpyYE5apT9B3q4U11PZG3wSM1n\"]},\"lib/composable-cow/lib/safe/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0x779ed3893a8812e383670b755f65c7727e9343dadaa4d7a4aa7f4aa35d859fdb\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://bb2039e1459ace1e68761e873632fc339866332f9f5ecb7452a0bc3a3b847e89\",\"dweb:/ipfs/QmYXvDQXJnDkXFvsvKLyZXaAv4x42qvtbtmwHftP4RKX38\"]},\"lib/composable-cow/lib/safe/contracts/interfaces/ISignatureValidator.sol\":{\"keccak256\":\"0x2459cb3ed73ecb80e1e7a6508d09a58cc59570b049f77042f669dedfcc5f6457\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://3c4a1371948b11f78171bc4ae4fd169a1eec11e5c4b273eb2c54bc030a1aae25\",\"dweb:/ipfs/QmPuztatXZYVS65n8YbCyccJFZYPP6zQfBQ8tTY27pB978\"]},\"lib/composable-cow/src/ComposableCoW.sol\":{\"keccak256\":\"0xcf1583fd0565c921f108e81d516591c9ff123f840dbdd349e9e98d793de4409f\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://112df8eb50205574a22bbb8db9f7d064ec4c753052f798668db88fd222724883\",\"dweb:/ipfs/QmSV7gBaWDn4PhJGCYayuFqvRortZHnzUjsZNGrm2NriEu\"]},\"lib/composable-cow/src/interfaces/IConditionalOrder.sol\":{\"keccak256\":\"0xe9e47811223793dfa9a5fc3098cf874385f547e536ef47da634b505659aeedc7\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://40c3daf74830a4394052b916ca920fce07761a2b66e8af8c877b72d2efaa49eb\",\"dweb:/ipfs/QmZ9adA6R1hCHnvg6DwnTn7zqta6zU1Ctb564zb8aiqRFD\"]},\"lib/composable-cow/src/interfaces/ISwapGuard.sol\":{\"keccak256\":\"0xac211fb24463a9c04a05bb58fe42d9bea10e58fe9ca35e7f544868eeb5972339\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://3ce2a180c5368c6807aecafb242675476bbc653ac72b3bd727db3467efe8b900\",\"dweb:/ipfs/QmWzTqMQCuvX5Zpn2sjxYUS9o3upsip4yNvwCMQGbXAk6Y\"]},\"lib/composable-cow/src/interfaces/IValueFactory.sol\":{\"keccak256\":\"0x3304ef8a0a1727258ac8278bf5426daeac37ece4653eaaff87b15143814a8122\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://9934d278069dd9474065777833a81e65af227b85d350b6c1f012b812101be9de\",\"dweb:/ipfs/QmcMBdvY7wLs92FCyutDGQGtHnYryjnaykREvDNBNM8Yih\"]},\"lib/composable-cow/src/vendored/CoWSettlement.sol\":{\"keccak256\":\"0x4e4e317b24017cd87eb11d16368b8c06ec19306d31946c330a86f9f136df38d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://34b9b2fc2c89e60497457cd812da9c53718c15ddfbf70f6e11832d22092c1840\",\"dweb:/ipfs/QmYFzaynWZfdpmFRf2dZrQ32Ep53AtQDd5fTE3a89xVkaR\"]},\"lib/openzeppelin/contracts/utils/cryptography/MerkleProof.sol\":{\"keccak256\":\"0xcf688741f79f4838d5301dcf72d0af9eff11bbab6ab0bb112ad144c7fb672dac\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://85d9c87a481fe99fd28a146c205da0867ef7e1b7edbe0036abc86d2e64eb1f04\",\"dweb:/ipfs/QmR7m1zWQNfZHUKTtqnjoCjCBbNFcjCxV27rxf6iMfhVtG\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.25+commit.b61c2a91"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_settlement","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"InterfaceNotSupported"},{"inputs":[],"type":"error","name":"InvalidFallbackHandler"},{"inputs":[],"type":"error","name":"InvalidHandler"},{"inputs":[],"type":"error","name":"ProofNotAuthed"},{"inputs":[],"type":"error","name":"SingleOrderNotAuthed"},{"inputs":[],"type":"error","name":"SwapGuardRestricted"},{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"struct IConditionalOrder.ConditionalOrderParams","name":"params","type":"tuple","components":[{"internalType":"contract IConditionalOrder","name":"handler","type":"address"},{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"bytes","name":"staticInput","type":"bytes"}],"indexed":false}],"type":"event","name":"ConditionalOrderCreated","anonymous":false},{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"bytes32","name":"root","type":"bytes32","indexed":false},{"internalType":"struct ComposableCoW.Proof","name":"proof","type":"tuple","components":[{"internalType":"uint256","name":"location","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"indexed":false}],"type":"event","name":"MerkleRootSet","anonymous":false},{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"contract ISwapGuard","name":"swapGuard","type":"address","indexed":false}],"type":"event","name":"SwapGuardSet","anonymous":false},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function","name":"cabinet","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"struct IConditionalOrder.ConditionalOrderParams","name":"params","type":"tuple","components":[{"internalType":"contract IConditionalOrder","name":"handler","type":"address"},{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"bytes","name":"staticInput","type":"bytes"}]},{"internalType":"bool","name":"dispatch","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"create"},{"inputs":[{"internalType":"struct IConditionalOrder.ConditionalOrderParams","name":"params","type":"tuple","components":[{"internalType":"contract IConditionalOrder","name":"handler","type":"address"},{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"bytes","name":"staticInput","type":"bytes"}]},{"internalType":"contract IValueFactory","name":"factory","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bool","name":"dispatch","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"createWithContext"},{"inputs":[],"stateMutability":"view","type":"function","name":"domainSeparator","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"struct IConditionalOrder.ConditionalOrderParams","name":"params","type":"tuple","components":[{"internalType":"contract IConditionalOrder","name":"handler","type":"address"},{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"bytes","name":"staticInput","type":"bytes"}]},{"internalType":"bytes","name":"offchainInput","type":"bytes"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}],"stateMutability":"view","type":"function","name":"getTradeableOrderWithSignature","outputs":[{"internalType":"struct GPv2Order.Data","name":"order","type":"tuple","components":[{"internalType":"contract IERC20","name":"sellToken","type":"address"},{"internalType":"contract IERC20","name":"buyToken","type":"address"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"sellAmount","type":"uint256"},{"internalType":"uint256","name":"buyAmount","type":"uint256"},{"internalType":"uint32","name":"validTo","type":"uint32"},{"internalType":"bytes32","name":"appData","type":"bytes32"},{"internalType":"uint256","name":"feeAmount","type":"uint256"},{"internalType":"bytes32","name":"kind","type":"bytes32"},{"internalType":"bool","name":"partiallyFillable","type":"bool"},{"internalType":"bytes32","name":"sellTokenBalance","type":"bytes32"},{"internalType":"bytes32","name":"buyTokenBalance","type":"bytes32"}]},{"internalType":"bytes","name":"signature","type":"bytes"}]},{"inputs":[{"internalType":"struct IConditionalOrder.ConditionalOrderParams","name":"params","type":"tuple","components":[{"internalType":"contract IConditionalOrder","name":"handler","type":"address"},{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"bytes","name":"staticInput","type":"bytes"}]}],"stateMutability":"pure","type":"function","name":"hash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"contract Safe","name":"safe","type":"address"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"bytes32","name":"_hash","type":"bytes32"},{"internalType":"bytes32","name":"_domainSeparator","type":"bytes32"},{"internalType":"bytes32","name":"","type":"bytes32"},{"internalType":"bytes","name":"encodeData","type":"bytes"},{"internalType":"bytes","name":"payload","type":"bytes"}],"stateMutability":"view","type":"function","name":"isValidSafeSignature","outputs":[{"internalType":"bytes4","name":"magic","type":"bytes4"}]},{"inputs":[{"internalType":"bytes32","name":"singleOrderHash","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"remove"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"roots","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"bytes32","name":"root","type":"bytes32"},{"internalType":"struct ComposableCoW.Proof","name":"proof","type":"tuple","components":[{"internalType":"uint256","name":"location","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}]}],"stateMutability":"nonpayable","type":"function","name":"setRoot"},{"inputs":[{"internalType":"bytes32","name":"root","type":"bytes32"},{"internalType":"struct ComposableCoW.Proof","name":"proof","type":"tuple","components":[{"internalType":"uint256","name":"location","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}]},{"internalType":"contract IValueFactory","name":"factory","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"setRootWithContext"},{"inputs":[{"internalType":"contract ISwapGuard","name":"swapGuard","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setSwapGuard"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function","name":"singleOrders","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"swapGuards","outputs":[{"internalType":"contract ISwapGuard","name":"","type":"address"}]}],"devdoc":{"kind":"dev","methods":{"constructor":{"params":{"_settlement":"The GPv2 settlement contract"}},"create((address,bytes32,bytes),bool)":{"params":{"dispatch":"Whether to dispatch the `ConditionalOrderCreated` event","params":"The parameters of the conditional order"}},"createWithContext((address,bytes32,bytes),address,bytes,bool)":{"params":{"data":"Implementation specific off-chain data","dispatch":"Whether to dispatch the `ConditionalOrderCreated` event","factory":"A factory from which to get a value to store in the cabinet","params":"The parameters of the conditional order"}},"getTradeableOrderWithSignature(address,(address,bytes32,bytes),bytes,bytes32[])":{"params":{"offchainInput":"any dynamic off-chain input for generating the discrete order","owner":"of the order","params":"`ConditionalOrderParams` for the order","proof":"if using merkle-roots that H(handler || salt || staticInput) is in the merkle tree"},"returns":{"order":"discrete order for submitting to CoW Protocol API","signature":"for submitting to CoW Protocol API"}},"hash((address,bytes32,bytes))":{"params":{"params":"`ConditionalOrderParams` for the order"},"returns":{"_0":"hash of the conditional order parameters"}},"isValidSafeSignature(address,address,bytes32,bytes32,bytes32,bytes,bytes)":{"details":"This function does not make use of the `typeHash` parameter as CoW Protocol does not have more than one type.","params":{"encodeData":"Is the abi encoded `GPv2Order.Data`","payload":"Is the abi encoded `PayloadStruct`"},"returns":{"magic":"The magic value that should be returned if the signature is valid (0x1626ba7e)"}},"remove(bytes32)":{"params":{"singleOrderHash":"The hash of the single conditional order to remove"}},"setRoot(bytes32,(uint256,bytes))":{"params":{"proof":"Where to find the proofs","root":"The merkle root of the user's conditional orders"}},"setRootWithContext(bytes32,(uint256,bytes),address,bytes)":{"params":{"data":"Implementation specific off-chain data","factory":"A factory from which to get a value to store in the cabinet related to the merkle root","proof":"Where to find the proofs","root":"The merkle root of the user's conditional orders"}},"setSwapGuard(address)":{"params":{"swapGuard":"The address of the swap guard"}}},"version":1},"userdoc":{"kind":"user","methods":{"create((address,bytes32,bytes),bool)":{"notice":"Authorise a single conditional order"},"createWithContext((address,bytes32,bytes),address,bytes,bool)":{"notice":"Authorise a single conditional order and store a value from on-chain in the cabinet"},"getTradeableOrderWithSignature(address,(address,bytes32,bytes),bytes,bytes32[])":{"notice":"Get the `GPv2Order.Data` and signature for submitting to CoW Protocol API"},"hash((address,bytes32,bytes))":{"notice":"Return the hash of the conditional order parameters"},"remove(bytes32)":{"notice":"Remove the authorisation of a single conditional order"},"setRoot(bytes32,(uint256,bytes))":{"notice":"Set the merkle root of the user's conditional ordersSet the merkle root of the user's conditional orders"},"setRootWithContext(bytes32,(uint256,bytes),address,bytes)":{"notice":"Set the merkle root of the user's conditional orders and store a value from on-chain in the cabinet"},"setSwapGuard(address)":{"notice":"Set the swap guard of the user's conditional orders"}},"version":1}},"settings":{"remappings":["@openzeppelin/=lib/composable-cow/lib/@openzeppelin/","composable-cow/=lib/composable-cow/","cowprotocol/=lib/composable-cow/lib/cowprotocol/src/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin/lib/halmos-cheatcodes/src/","murky/=lib/composable-cow/lib/murky/src/","openzeppelin-contracts/=lib/composable-cow/lib/murky/lib/openzeppelin-contracts/","openzeppelin/=lib/openzeppelin/","safe/=lib/composable-cow/lib/safe/","uniswap-v2-core/=lib/uniswap-v2-core/contracts/","lib/composable-cow:@openzeppelin/=lib/openzeppelin/contracts/","lib/composable-cow:@openzeppelin/contracts/=lib/openzeppelin/contracts/","lib/composable-cow:safe/=lib/composable-cow/lib/safe/contracts/"],"optimizer":{"enabled":true,"runs":100000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/composable-cow/src/ComposableCoW.sol":"ComposableCoW"},"evmVersion":"cancun","libraries":{}},"sources":{"lib/composable-cow/lib/cowprotocol/src/contracts/interfaces/IERC20.sol":{"keccak256":"0x2db02cc0e23db99d10cd21590425b714060a556bcfb934cb5ab3b80aef1610ba","urls":["bzz-raw://c05f8a21a244e6566a3e555028cebeebd1c38902f0cea2e9b014cc7becaf3140","dweb:/ipfs/QmTBY1GphjwAnY2nC9qKMwj5HeAUJMgFdo5YZcVxsVyqFb"],"license":"MIT"},"lib/composable-cow/lib/cowprotocol/src/contracts/libraries/GPv2Interaction.sol":{"keccak256":"0x7b69b3d536c995e84a5fe4ec3dc63ddf01a3538f72ece83828e87aa90df33a7d","urls":["bzz-raw://7ba34b22f5b25cd6fecfd0d5e9b6077b36130a2cb4539b1311de0f328c226958","dweb:/ipfs/QmUURWvPbrZ6Z4iDv8Sa8soQCZyKZCsCcdMzgY9Jy5RNV2"],"license":"LGPL-3.0-or-later"},"lib/composable-cow/lib/cowprotocol/src/contracts/libraries/GPv2Order.sol":{"keccak256":"0xb96efb76433446cf0ccb9f5bc926301a9c8bcbfd17dcd6a36a1e6207f5b436b2","urls":["bzz-raw://5ec097e17d3e47e16808a5246a99af7ef618bb58ccb61d7331bfca1929cbbd82","dweb:/ipfs/QmbH7rg5s5gdpa5KENMUXHyGBWJyQn6XEwv9JakRSCcv8n"],"license":"LGPL-3.0-or-later"},"lib/composable-cow/lib/safe/contracts/Safe.sol":{"keccak256":"0xbab2f7bec33283e349342e7b23f5191c678c64fe02065bac4f4f44fb3f5d2638","urls":["bzz-raw://f95884e85691d49ba3efb9b2a160466fed17377bfa92fc8bf5923f3c61e99119","dweb:/ipfs/QmQjhP9RnB3Cj3DNpWLzWqqvRdKBya6Efx6xzmRrwLqjm9"],"license":"LGPL-3.0-only"},"lib/composable-cow/lib/safe/contracts/base/Executor.sol":{"keccak256":"0xf0be832e7529e92000544170a5529d73666a9b5e836b30c6f2ed6ef7d7d8c94a","urls":["bzz-raw://710022b40c9f78a5b55b97f6ce600e4834df2ddd36bf714974d953883c82d58c","dweb:/ipfs/QmbdJNKH5opevm7HxQKQAe6W7dQTgSHKa4nKvbUNGRcQQp"],"license":"LGPL-3.0-only"},"lib/composable-cow/lib/safe/contracts/base/FallbackManager.sol":{"keccak256":"0x646b3088f15af8b4f71ac5eeffaa24ce0c1abed5f494f90368208b09e35d5165","urls":["bzz-raw://7975be46d228510c70659b18076aecb3b0e7331b4d3a162444304145143bdc6e","dweb:/ipfs/QmRRbZrWUnoky6pVo8zMUzCTsshR4sZ2FjR13s8vyAb8dV"],"license":"LGPL-3.0-only"},"lib/composable-cow/lib/safe/contracts/base/GuardManager.sol":{"keccak256":"0xedfc7c830ab35e52d1208986b253f3422c2f0ca68054c10819fb348fcc6ccf5d","urls":["bzz-raw://3ff8a4194d1160d2e23142937bc9d7eac7b6b553b1ee226390a0df07ebac1b64","dweb:/ipfs/QmSw8Y7z4TQrUTEosdWqcug7TUv9Tg1kxqMKHd7RuTnyzx"],"license":"LGPL-3.0-only"},"lib/composable-cow/lib/safe/contracts/base/ModuleManager.sol":{"keccak256":"0xd71b0d56dce386fa6f67c51061face071b2c7b03ec535d68717e2538ec47113a","urls":["bzz-raw://30812896d9f57cae84a432c67fbb3007d566071ec203b2992f1c0f762722df0d","dweb:/ipfs/QmRyJ3JbsUwDQxQDTrqDDX4qNtVu7XiW8cD8WP5kgNJGGz"],"license":"LGPL-3.0-only"},"lib/composable-cow/lib/safe/contracts/base/OwnerManager.sol":{"keccak256":"0xec9799093eb7a73461cd5e563198751ee222f956f754ea622a03fe953e515b2c","urls":["bzz-raw://5729c58b14e7b656c71dd3377e9519c0d34ef8c04851a9a21c3d62393e4fae7a","dweb:/ipfs/QmRRtfFpNqvdANny9TYBr8rA3HbT1egUCpb2uXALMHkVxK"],"license":"LGPL-3.0-only"},"lib/composable-cow/lib/safe/contracts/common/Enum.sol":{"keccak256":"0x4ff3008926a118e9f36e6747facc39dd13168e0d00f516888ae966ec20766453","urls":["bzz-raw://385929800d1c0f92eb165fcf37a9e28b395b17d8b74f74755654d3a096a0fc34","dweb:/ipfs/QmagieLuN2jrp2oJHFyZuyz65Sh1CcupnXSEKypGFS5Gvo"],"license":"LGPL-3.0-only"},"lib/composable-cow/lib/safe/contracts/common/NativeCurrencyPaymentFallback.sol":{"keccak256":"0x3ddcd4130c67326033dcf773d2d87d7147e3a8386993ea3ab3f1c38da406adba","urls":["bzz-raw://740a729397b6a0d903f4738a50e856d4e5039555024937b148d97529525dbfa9","dweb:/ipfs/QmQJuNVvHbkeJ6jjd75D8FsZBPXH6neoGBZdQgtsA82E7g"],"license":"LGPL-3.0-only"},"lib/composable-cow/lib/safe/contracts/common/SecuredTokenTransfer.sol":{"keccak256":"0x1eb8c3601538b73dd6a823ac4fca49bb8adc97d1302a936622156636c971eb05","urls":["bzz-raw://c26495b1fe9229ea17f90b70f295030880d629b9ea3016ea20b634983865f7b3","dweb:/ipfs/QmTc1UmKcynkKn8DeviLMuy6scxNvAVSdLoX4ndUtdEL9N"],"license":"LGPL-3.0-only"},"lib/composable-cow/lib/safe/contracts/common/SelfAuthorized.sol":{"keccak256":"0xfb0e176bb208e047a234fe757e2acd13787e27879570b8544547ac787feb5f13","urls":["bzz-raw://8e9a317f0c3c02ab1d6c38039bff2b3e0c97f4dc9d229d3d9149c1af1c5023b3","dweb:/ipfs/QmNcZjNChsuXF34T6f3Zu7i3tnqvKN4NyWBWZ4tXLH9kMu"],"license":"LGPL-3.0-only"},"lib/composable-cow/lib/safe/contracts/common/SignatureDecoder.sol":{"keccak256":"0x2a3baf0efa1585ddf2276505c6d34fa16f01cafff1288e40110d5e67fb459c7c","urls":["bzz-raw://00cdded3068b9051ee0a966f40926fbc57dbe7ef8bf4285db3740f9d50468c80","dweb:/ipfs/QmcP5hKmaRqBe7TpgoXtncZqsNKKdCCKxZgXoxEL4Nj5F4"],"license":"LGPL-3.0-only"},"lib/composable-cow/lib/safe/contracts/common/Singleton.sol":{"keccak256":"0xcab7c6e5fb6d7295a9343f72fec26a2f632ddfe220a6f267b5c5a1eb2f9bce50","urls":["bzz-raw://dd1c31d5787ef590a60f6b0dbc74d09e6fe4d3ad2f0529940d662bf315521cde","dweb:/ipfs/QmSAS5DYrGksJe4cPQ4wLrveXa1CjxAuEiohcLpPG5h2bo"],"license":"LGPL-3.0-only"},"lib/composable-cow/lib/safe/contracts/common/StorageAccessible.sol":{"keccak256":"0x2c5412a8f014db332322a6b24ee3cedce15dca17a721ae49fdef368568d4391e","urls":["bzz-raw://e775f267d3e60ebe452d9533f46a0eb1f1dc4593d1bcb553e86cea205a5f361e","dweb:/ipfs/QmQdYDHGQsiMx1AADWRhX7tduU9ycTzrT5q3zBWvphXzKZ"],"license":"LGPL-3.0-only"},"lib/composable-cow/lib/safe/contracts/external/SafeMath.sol":{"keccak256":"0x5f856674d9be11344c5899deb43364e19baa75bc881cada4c159938270b2bd89","urls":["bzz-raw://351c66e5fe92c0a51f79d133521545dabdd3f756312a7b1428c1fc813c512a1c","dweb:/ipfs/QmdnrRmgef8SdamEU6fVEqFD5RQwXeDFTfQuZEfX2vxC4x"],"license":"LGPL-3.0-only"},"lib/composable-cow/lib/safe/contracts/handler/ExtensibleFallbackHandler.sol":{"keccak256":"0x7e511290dae21c9b1710c9250320d9b98ffd71c9501af354814485b58e1b64e9","urls":["bzz-raw://3e55ba23bde90d2cdd07baa7172ea41bdc1d638bc7b6eb5dce03189d86412515","dweb:/ipfs/QmbxH73sqooeQL8ehsP2FDoXhLBoPs3wr3nod6ZgJwVcFV"],"license":"LGPL-3.0-only"},"lib/composable-cow/lib/safe/contracts/handler/HandlerContext.sol":{"keccak256":"0x3e105ebac003af9c8d34e3eed517ff0355d5f487e17478c85df0f225b04846f5","urls":["bzz-raw://657bec347d746453883c461a3d9a2275bf2b99625dcaef0960e1c0276c3d56c4","dweb:/ipfs/QmUGj8Tzs1CsmUf63LbTMK81EEGtYYnWKLGdHHtoYCd9CF"],"license":"LGPL-3.0-only"},"lib/composable-cow/lib/safe/contracts/handler/extensible/ERC165Handler.sol":{"keccak256":"0x4d562221e6645b6e79da99d2b322331617051fa90e06ec7ce3f9a6a87bae116c","urls":["bzz-raw://5a574dd50b9e9a594afda4a96701295e18a0054fcaf5083573ee80033b2da060","dweb:/ipfs/QmNQf5rfHqMCGKBcqZowz89JEZe8rjjoYEkySBy7oxwh4Y"],"license":"LGPL-3.0-only"},"lib/composable-cow/lib/safe/contracts/handler/extensible/ExtensibleBase.sol":{"keccak256":"0xe5b71121b0020728158ee60756982e74809f9d77cb294a6d65930bff09d84d15","urls":["bzz-raw://fd7fd2702b31fc8569a9986a476dd9fe9aa76624d0da6d832547f624426925f9","dweb:/ipfs/QmWjYGtW38Fnwvm8qFvoJYhz2nTuySGkHouwRF3eksd6Nh"],"license":"LGPL-3.0-only"},"lib/composable-cow/lib/safe/contracts/handler/extensible/FallbackHandler.sol":{"keccak256":"0x3020c96c812548a2bf6413168ee21033638a36736b695909f7cf54277beefd76","urls":["bzz-raw://6ffdf49fb516791f4cad239fc780bb5d9934bb06744b99b0fbc067f31ad13591","dweb:/ipfs/QmPXwVoDhnhnQFSxEiHDZYRQJ5ozAECSFrUHMTjwAJ1LuM"],"license":"LGPL-3.0-only"},"lib/composable-cow/lib/safe/contracts/handler/extensible/MarshalLib.sol":{"keccak256":"0x36eacc47b1ce7697e679c1b5c0d3a86d8f46a0436b666f86e88df04765cde5c1","urls":["bzz-raw://7097bfb174ea424ef55f9a5b55f4a9857f7368cdd3061888f5ffb3e29503f071","dweb:/ipfs/QmRPvAvMdGRuh8AjePtamBGUU55p1tSP8ZHUUMfxWgi1ew"],"license":"LGPL-3.0-only"},"lib/composable-cow/lib/safe/contracts/handler/extensible/SignatureVerifierMuxer.sol":{"keccak256":"0x51e8dad81059527f9b6b6827d742a0fbc0960c66e364dd1e67c8f151970c6ee4","urls":["bzz-raw://b368a4eb15d50487986db1543a5c786324a4d0de680a421d131e21c25459f666","dweb:/ipfs/QmVca3J2JBEZtxW3uNMvYc9ugQH24CqantLnVzKcZwG71W"],"license":"LGPL-3.0-only"},"lib/composable-cow/lib/safe/contracts/handler/extensible/TokenCallbacks.sol":{"keccak256":"0x549d737c3eef66cec2a858b34dce4db42e56d8f053635742230873e6049e81ed","urls":["bzz-raw://f03f130c36be396895acfa7891ccca36725c6a6496085d88fc33071e00093073","dweb:/ipfs/QmfLfenjQ1gWnotx5Vdda1kJBqjnCi53bGNqyZ5cN6wxXV"],"license":"LGPL-3.0-only"},"lib/composable-cow/lib/safe/contracts/interfaces/ERC1155TokenReceiver.sol":{"keccak256":"0x87e62665c041cade64e753ecdccf931cb100ab6e4bcc98769c1e6474be9db493","urls":["bzz-raw://59ca1157dcfe19c72b9d1244a6ae5ec70fee9793d4d8af523b70f22ae567d55c","dweb:/ipfs/QmfE3kv73QuQWAWQND927LWVHVLCp19m1mLUvxVYJDEFZM"],"license":"LGPL-3.0-only"},"lib/composable-cow/lib/safe/contracts/interfaces/ERC721TokenReceiver.sol":{"keccak256":"0x96c4c5457fede2d4c6012011dfda36f8e8ffdb7388468f2dddb35661538bf479","urls":["bzz-raw://99a54737bc23722f79ec9cf9de63ba35b556a61df453eb332f3cac783503f26c","dweb:/ipfs/QmbLW5C2RhoLbwDWEPtTKpyYE5apT9B3q4U11PZG3wSM1n"],"license":"LGPL-3.0-only"},"lib/composable-cow/lib/safe/contracts/interfaces/IERC165.sol":{"keccak256":"0x779ed3893a8812e383670b755f65c7727e9343dadaa4d7a4aa7f4aa35d859fdb","urls":["bzz-raw://bb2039e1459ace1e68761e873632fc339866332f9f5ecb7452a0bc3a3b847e89","dweb:/ipfs/QmYXvDQXJnDkXFvsvKLyZXaAv4x42qvtbtmwHftP4RKX38"],"license":"LGPL-3.0-only"},"lib/composable-cow/lib/safe/contracts/interfaces/ISignatureValidator.sol":{"keccak256":"0x2459cb3ed73ecb80e1e7a6508d09a58cc59570b049f77042f669dedfcc5f6457","urls":["bzz-raw://3c4a1371948b11f78171bc4ae4fd169a1eec11e5c4b273eb2c54bc030a1aae25","dweb:/ipfs/QmPuztatXZYVS65n8YbCyccJFZYPP6zQfBQ8tTY27pB978"],"license":"LGPL-3.0-only"},"lib/composable-cow/src/ComposableCoW.sol":{"keccak256":"0xcf1583fd0565c921f108e81d516591c9ff123f840dbdd349e9e98d793de4409f","urls":["bzz-raw://112df8eb50205574a22bbb8db9f7d064ec4c753052f798668db88fd222724883","dweb:/ipfs/QmSV7gBaWDn4PhJGCYayuFqvRortZHnzUjsZNGrm2NriEu"],"license":"GPL-3.0"},"lib/composable-cow/src/interfaces/IConditionalOrder.sol":{"keccak256":"0xe9e47811223793dfa9a5fc3098cf874385f547e536ef47da634b505659aeedc7","urls":["bzz-raw://40c3daf74830a4394052b916ca920fce07761a2b66e8af8c877b72d2efaa49eb","dweb:/ipfs/QmZ9adA6R1hCHnvg6DwnTn7zqta6zU1Ctb564zb8aiqRFD"],"license":"GPL-3.0"},"lib/composable-cow/src/interfaces/ISwapGuard.sol":{"keccak256":"0xac211fb24463a9c04a05bb58fe42d9bea10e58fe9ca35e7f544868eeb5972339","urls":["bzz-raw://3ce2a180c5368c6807aecafb242675476bbc653ac72b3bd727db3467efe8b900","dweb:/ipfs/QmWzTqMQCuvX5Zpn2sjxYUS9o3upsip4yNvwCMQGbXAk6Y"],"license":"GPL-3.0"},"lib/composable-cow/src/interfaces/IValueFactory.sol":{"keccak256":"0x3304ef8a0a1727258ac8278bf5426daeac37ece4653eaaff87b15143814a8122","urls":["bzz-raw://9934d278069dd9474065777833a81e65af227b85d350b6c1f012b812101be9de","dweb:/ipfs/QmcMBdvY7wLs92FCyutDGQGtHnYryjnaykREvDNBNM8Yih"],"license":"GPL-3.0"},"lib/composable-cow/src/vendored/CoWSettlement.sol":{"keccak256":"0x4e4e317b24017cd87eb11d16368b8c06ec19306d31946c330a86f9f136df38d7","urls":["bzz-raw://34b9b2fc2c89e60497457cd812da9c53718c15ddfbf70f6e11832d22092c1840","dweb:/ipfs/QmYFzaynWZfdpmFRf2dZrQ32Ep53AtQDd5fTE3a89xVkaR"],"license":"MIT"},"lib/openzeppelin/contracts/utils/cryptography/MerkleProof.sol":{"keccak256":"0xcf688741f79f4838d5301dcf72d0af9eff11bbab6ab0bb112ad144c7fb672dac","urls":["bzz-raw://85d9c87a481fe99fd28a146c205da0867ef7e1b7edbe0036abc86d2e64eb1f04","dweb:/ipfs/QmR7m1zWQNfZHUKTtqnjoCjCBbNFcjCxV27rxf6iMfhVtG"],"license":"MIT"}},"version":1},"id":57} \ No newline at end of file diff --git a/utils/bin/indexer/Cargo.toml b/utils/bin/indexer/Cargo.toml new file mode 100644 index 0000000..8bcecc5 --- /dev/null +++ b/utils/bin/indexer/Cargo.toml @@ -0,0 +1,12 @@ +[package] +name = "cow-amm-indexer" +version = "0.1.0" +edition = "2021" +description = "Indexer for legacy^2 amms" + +[dependencies] +alloy.workspace = true +eyre.workspace = true +futures.workspace = true +tokio.workspace = true +futures-util.workspace = true \ No newline at end of file diff --git a/utils/bin/indexer/src/main.rs b/utils/bin/indexer/src/main.rs new file mode 100644 index 0000000..5d3edac --- /dev/null +++ b/utils/bin/indexer/src/main.rs @@ -0,0 +1,116 @@ +use std::{cmp::min, collections::HashMap}; + +use alloy::{ + primitives::{keccak256, Address, Bytes}, + providers::{Provider, ProviderBuilder}, + rpc::types::Filter, + sol, + sol_types::{SolEvent, SolValue}, +}; + +// Codegen from ABI file to interact with the contract. +sol!( + #[allow(missing_docs)] + #[allow(clippy::too_many_arguments)] + #[sol(rpc)] + ComposableCoW, + "../../../out/ComposableCoW.sol/ComposableCoW.json" +); + +#[tokio::main] +async fn main() -> eyre::Result<()> { + const WINDOW_SIZE: u64 = 10000; + const MAINNET_DEPLOYMENT_GENESIS: u64 = 19277205; + const MAINNET_CONSTANT_PRODUCT_HANDLER: &str = "0x34323B933096534e43958F6c7Bf44F2Bb59424DA"; + const GNOSIS_DEPLOYMENT_GENESIS: u64 = 32478660; + const GNOSIS_CONSTANT_PRODUCT_HANDLER: &str = "0xB148F40fff05b5CE6B22752cf8E454B556f7a851"; + const COMPOSABLE_COW: &str = "0xfdaFc9d1902f4e0b84f65F49f244b32b31013b74"; + + let rpc_url = std::env::var("ETH_RPC_URL") + .expect("Environment variable `ETH_RPC_URL` is not set") + .parse() + .expect("Invalid ETH_RPC_URL"); + let provider = ProviderBuilder::new().on_http(rpc_url); + + // Determine the chain and then set the constant product handler and genesis block + let chain_id = provider.get_chain_id().await?; + println!("Chain ID: {}", chain_id); + + let (constant_product_handler, mut start_block): (Address, u64) = match chain_id { + 1 => ( + MAINNET_CONSTANT_PRODUCT_HANDLER.parse()?, + MAINNET_DEPLOYMENT_GENESIS, + ), + 100 => ( + GNOSIS_CONSTANT_PRODUCT_HANDLER.parse()?, + GNOSIS_DEPLOYMENT_GENESIS, + ), + _ => { + return Err(eyre::eyre!("Unsupported chain ID: {}", chain_id)); + } + }; + + let mut latest_block = provider.get_block_number().await?; + let mut amms: HashMap = HashMap::new(); + + loop { + let to_block = start_block + min(WINDOW_SIZE - 1, latest_block - start_block); + let filter = Filter::new() + .event(ComposableCoW::ConditionalOrderCreated::SIGNATURE) + .from_block(start_block) + .to_block(to_block); + println!("Processing blocks: {} - {}", start_block, to_block); + + // Get all logs from the latest block that match the filter. + let logs = provider.get_logs(&filter).await?; + + // Iterate over the logs, only concerned about `ConstantProduct` handlers + for log in logs { + let event = + ComposableCoW::ConditionalOrderCreated::decode_log(&log.inner, true).unwrap(); + + if event.data.params.handler == constant_product_handler { + // insert will override the previous value if the key already existed + amms.insert(event.data.owner, event.params.abi_encode().into()); + } + } + + latest_block = provider.get_block_number().await?; + match latest_block == to_block { + true => break, + false => start_block = to_block + 1, + } + } + + // Filter out AMMs that are no longer open + let composable_cow = ComposableCoW::new(COMPOSABLE_COW.parse().unwrap(), provider.clone()); + let amms = futures_util::future::join_all(amms.iter().map(|(addr, params)| { + let composable_cow = composable_cow.clone(); + async move { + let open = composable_cow + .singleOrders(*addr, keccak256(params.clone())) + .call() + .await + .unwrap() + ._0; + match open { + true => Some((addr, params)), + false => None, + } + } + })) + .await + .into_iter() + .flatten() + .collect::>(); + + println!("\nTotal open AMMs: {}", amms.len()); + println!("\nWill now print the AMMs in the format: ,"); + println!("Please note that the AMM Bytes Params are ABI encoded and will need to be decoded to be human readable.\n"); + println!("Caution: No guarantee is made that the AMMs will be presented in the same order as they were created.\n"); + amms.iter().for_each(|(k, v)| { + println!("{},{}", k, v); + }); + + Ok(()) +}