diff --git a/Justfile b/Justfile index 1cebc4e575..a9156bda66 100644 --- a/Justfile +++ b/Justfile @@ -5,16 +5,20 @@ help: setup: cd contracts && \ cargo r -r -- vendor && \ - cargo r -r -- generate && \ - cargo +nightly fmt --all && \ - cd generated && cargo +nightly fmt --all && \ - cd ../.. && \ - tombi format + cargo r -r -- generate + just _format_generated_contracts # Generate contract bindings generate-contracts: cd contracts && \ cargo r -r -- generate + just _format_generated_contracts + +_format_generated_contracts: + cd contracts && cargo +nightly fmt --all && \ + cd generated && cargo +nightly fmt --all && \ + cd ../.. && \ + tombi format # Run unit tests test-unit: diff --git a/contracts/artifacts/Balances.json b/contracts/artifacts/Balances.json index 7bfb804785..08238348aa 100644 --- a/contracts/artifacts/Balances.json +++ b/contracts/artifacts/Balances.json @@ -88,14 +88,19 @@ "internalType": "bool", "name": "canTransfer", "type": "bool" + }, + { + "internalType": "bytes", + "name": "transferRevertReason", + "type": "bytes" } ], "stateMutability": "nonpayable", "type": "function" } ], - "bytecode": "0x6080604052348015600e575f5ffd5b50610e438061001c5f395ff3fe608060405234801561000f575f5ffd5b5060043610610029575f3560e01c8063f88cf6db1461002d575b5f5ffd5b61004061003b366004610a96565b610066565b604080519485526020850193909352918301521515606082015260800160405180910390f35b5f5f5f5f6100758b8787610788565b7f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc987036101d0576040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8b811660048301528a16906370a0823190602401602060405180830381865afa158015610106573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061012a9190610b5b565b60208c01516040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8d8116600483015291821660248201529195508a169063dd62ed3e906044015b602060405180830381865afa1580156101a5573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101c99190610b5b565b925061060e565b7fabee3b73373acd583a130924aad6dc38cfdc44ba0555ba94ce2ff63980ea06328703610393576040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8b811660048301528a16906370a0823190602401602060405180830381865afa158015610261573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102859190610b5b565b6040808d015160208e015191517ffec90d7200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8e811660048301529283166024820152929650169063fec90d7290604401602060405180830381865afa158015610303573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103279190610b72565b610331575f6101c9565b60408b81015190517fdd62ed3e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8c811660048301529182166024820152908a169063dd62ed3e9060440161018a565b7f4ac99ace14ee0a5ef932dc609df0943ab7ac16b7583634612f8dc35a4289a6ce87036105a7576040805160018082528183019092525f916020808301908036833701905050905089815f815181106103ee576103ee610b98565b73ffffffffffffffffffffffffffffffffffffffff92831660209182029290920101526040808e015190517f0f5a6efa000000000000000000000000000000000000000000000000000000008152911690630f5a6efa90610455908e908590600401610bc5565b5f60405180830381865afa15801561046f573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526104b49190810190610c3e565b5f815181106104c5576104c5610b98565b602002602001015194508b6040015173ffffffffffffffffffffffffffffffffffffffff1663fec90d728c8e602001516040518363ffffffff1660e01b815260040161053492919073ffffffffffffffffffffffffffffffffffffffff92831681529116602082015260400190565b602060405180830381865afa15801561054f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105739190610b72565b61057d575f61059f565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b93505061060e565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f696e76616c696420746f6b656e20736f7572636500000000000000000000000060448201526064015b60405180910390fd5b8284111561061c578261061e565b835b6040805160018082528183019092529193505f9190816020015b604080516080810182525f8082526020808301829052928201819052606082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90920191018161063857905050905060405180608001604052808c73ffffffffffffffffffffffffffffffffffffffff1681526020018b73ffffffffffffffffffffffffffffffffffffffff1681526020018a5f036106db57846106dd565b8a5b815260200189815250815f815181106106f8576106f8610b98565b60200260200101819052508b6020015173ffffffffffffffffffffffffffffffffffffffff16637d10d11f826040518263ffffffff1660e01b81526004016107409190610cea565b5f604051808303815f87803b158015610757575f5ffd5b505af1925050508015610768575060015b610774575f9150610779565b600191505b50975097509750979350505050565b825173ffffffffffffffffffffffffffffffffffffffff163014610808576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f696e636f72726563742063616c6c696e6720636f6e74657874000000000000006044820152606401610605565b5f5b8181101561096f575f83838381811061082557610825610b98565b90506020028101906108379190610d7e565b610845906020810190610dba565b90505f84848481811061085a5761085a610b98565b905060200281019061086c9190610d7e565b602001359050365f86868681811061088657610886610b98565b90506020028101906108989190610d7e565b6108a6906040810190610dd5565b91509150876020015173ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610943576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f475076323a20666f7262696464656e20696e746572616374696f6e00000000006044820152606401610605565b604051818382375f5f838387895af161095e573d5f5f3e3d5ffd5b50506001909301925061080a915050565b50505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040516060810167ffffffffffffffff811182821017156109c5576109c5610975565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715610a1257610a12610975565b604052919050565b73ffffffffffffffffffffffffffffffffffffffff81168114610a3b575f5ffd5b50565b8035610a4981610a1a565b919050565b5f5f83601f840112610a5e575f5ffd5b50813567ffffffffffffffff811115610a75575f5ffd5b6020830191508360208260051b8501011115610a8f575f5ffd5b9250929050565b5f5f5f5f5f5f5f878903610100811215610aae575f5ffd5b6060811215610abb575f5ffd5b50610ac46109a2565b8835610acf81610a1a565b81526020890135610adf81610a1a565b60208201526040890135610af281610a1a565b60408201529650610b0560608901610a3e565b9550610b1360808901610a3e565b945060a0880135935060c0880135925060e088013567ffffffffffffffff811115610b3c575f5ffd5b610b488a828b01610a4e565b989b979a50959850939692959293505050565b5f60208284031215610b6b575f5ffd5b5051919050565b5f60208284031215610b82575f5ffd5b81518015158114610b91575f5ffd5b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f6040820173ffffffffffffffffffffffffffffffffffffffff85168352604060208401528084518083526060850191506020860192505f5b81811015610c3257835173ffffffffffffffffffffffffffffffffffffffff16835260209384019390920191600101610bfe565b50909695505050505050565b5f60208284031215610c4e575f5ffd5b815167ffffffffffffffff811115610c64575f5ffd5b8201601f81018413610c74575f5ffd5b805167ffffffffffffffff811115610c8e57610c8e610975565b8060051b610c9e602082016109cb565b91825260208184018101929081019087841115610cb9575f5ffd5b6020850194505b83851015610cdf57845180835260209586019590935090910190610cc0565b979650505050505050565b602080825282518282018190525f918401906040840190835b81811015610d7357835173ffffffffffffffffffffffffffffffffffffffff815116845273ffffffffffffffffffffffffffffffffffffffff6020820151166020850152604081015160408501526060810151606085015250608083019250602084019350600181019050610d03565b509095945050505050565b5f82357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa1833603018112610db0575f5ffd5b9190910192915050565b5f60208284031215610dca575f5ffd5b8135610b9181610a1a565b5f5f83357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112610e08575f5ffd5b83018035915067ffffffffffffffff821115610e22575f5ffd5b602001915036819003821315610a8f575f5ffdfea164736f6c634300081e000a", - "deployedBytecode": "0x608060405234801561000f575f5ffd5b5060043610610029575f3560e01c8063f88cf6db1461002d575b5f5ffd5b61004061003b366004610a96565b610066565b604080519485526020850193909352918301521515606082015260800160405180910390f35b5f5f5f5f6100758b8787610788565b7f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc987036101d0576040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8b811660048301528a16906370a0823190602401602060405180830381865afa158015610106573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061012a9190610b5b565b60208c01516040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8d8116600483015291821660248201529195508a169063dd62ed3e906044015b602060405180830381865afa1580156101a5573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101c99190610b5b565b925061060e565b7fabee3b73373acd583a130924aad6dc38cfdc44ba0555ba94ce2ff63980ea06328703610393576040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8b811660048301528a16906370a0823190602401602060405180830381865afa158015610261573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102859190610b5b565b6040808d015160208e015191517ffec90d7200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8e811660048301529283166024820152929650169063fec90d7290604401602060405180830381865afa158015610303573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103279190610b72565b610331575f6101c9565b60408b81015190517fdd62ed3e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8c811660048301529182166024820152908a169063dd62ed3e9060440161018a565b7f4ac99ace14ee0a5ef932dc609df0943ab7ac16b7583634612f8dc35a4289a6ce87036105a7576040805160018082528183019092525f916020808301908036833701905050905089815f815181106103ee576103ee610b98565b73ffffffffffffffffffffffffffffffffffffffff92831660209182029290920101526040808e015190517f0f5a6efa000000000000000000000000000000000000000000000000000000008152911690630f5a6efa90610455908e908590600401610bc5565b5f60405180830381865afa15801561046f573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526104b49190810190610c3e565b5f815181106104c5576104c5610b98565b602002602001015194508b6040015173ffffffffffffffffffffffffffffffffffffffff1663fec90d728c8e602001516040518363ffffffff1660e01b815260040161053492919073ffffffffffffffffffffffffffffffffffffffff92831681529116602082015260400190565b602060405180830381865afa15801561054f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105739190610b72565b61057d575f61059f565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b93505061060e565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f696e76616c696420746f6b656e20736f7572636500000000000000000000000060448201526064015b60405180910390fd5b8284111561061c578261061e565b835b6040805160018082528183019092529193505f9190816020015b604080516080810182525f8082526020808301829052928201819052606082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90920191018161063857905050905060405180608001604052808c73ffffffffffffffffffffffffffffffffffffffff1681526020018b73ffffffffffffffffffffffffffffffffffffffff1681526020018a5f036106db57846106dd565b8a5b815260200189815250815f815181106106f8576106f8610b98565b60200260200101819052508b6020015173ffffffffffffffffffffffffffffffffffffffff16637d10d11f826040518263ffffffff1660e01b81526004016107409190610cea565b5f604051808303815f87803b158015610757575f5ffd5b505af1925050508015610768575060015b610774575f9150610779565b600191505b50975097509750979350505050565b825173ffffffffffffffffffffffffffffffffffffffff163014610808576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f696e636f72726563742063616c6c696e6720636f6e74657874000000000000006044820152606401610605565b5f5b8181101561096f575f83838381811061082557610825610b98565b90506020028101906108379190610d7e565b610845906020810190610dba565b90505f84848481811061085a5761085a610b98565b905060200281019061086c9190610d7e565b602001359050365f86868681811061088657610886610b98565b90506020028101906108989190610d7e565b6108a6906040810190610dd5565b91509150876020015173ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610943576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f475076323a20666f7262696464656e20696e746572616374696f6e00000000006044820152606401610605565b604051818382375f5f838387895af161095e573d5f5f3e3d5ffd5b50506001909301925061080a915050565b50505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040516060810167ffffffffffffffff811182821017156109c5576109c5610975565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715610a1257610a12610975565b604052919050565b73ffffffffffffffffffffffffffffffffffffffff81168114610a3b575f5ffd5b50565b8035610a4981610a1a565b919050565b5f5f83601f840112610a5e575f5ffd5b50813567ffffffffffffffff811115610a75575f5ffd5b6020830191508360208260051b8501011115610a8f575f5ffd5b9250929050565b5f5f5f5f5f5f5f878903610100811215610aae575f5ffd5b6060811215610abb575f5ffd5b50610ac46109a2565b8835610acf81610a1a565b81526020890135610adf81610a1a565b60208201526040890135610af281610a1a565b60408201529650610b0560608901610a3e565b9550610b1360808901610a3e565b945060a0880135935060c0880135925060e088013567ffffffffffffffff811115610b3c575f5ffd5b610b488a828b01610a4e565b989b979a50959850939692959293505050565b5f60208284031215610b6b575f5ffd5b5051919050565b5f60208284031215610b82575f5ffd5b81518015158114610b91575f5ffd5b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f6040820173ffffffffffffffffffffffffffffffffffffffff85168352604060208401528084518083526060850191506020860192505f5b81811015610c3257835173ffffffffffffffffffffffffffffffffffffffff16835260209384019390920191600101610bfe565b50909695505050505050565b5f60208284031215610c4e575f5ffd5b815167ffffffffffffffff811115610c64575f5ffd5b8201601f81018413610c74575f5ffd5b805167ffffffffffffffff811115610c8e57610c8e610975565b8060051b610c9e602082016109cb565b91825260208184018101929081019087841115610cb9575f5ffd5b6020850194505b83851015610cdf57845180835260209586019590935090910190610cc0565b979650505050505050565b602080825282518282018190525f918401906040840190835b81811015610d7357835173ffffffffffffffffffffffffffffffffffffffff815116845273ffffffffffffffffffffffffffffffffffffffff6020820151166020850152604081015160408501526060810151606085015250608083019250602084019350600181019050610d03565b509095945050505050565b5f82357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa1833603018112610db0575f5ffd5b9190910192915050565b5f60208284031215610dca575f5ffd5b8135610b9181610a1a565b5f5f83357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112610e08575f5ffd5b83018035915067ffffffffffffffff821115610e22575f5ffd5b602001915036819003821315610a8f575f5ffdfea164736f6c634300081e000a", + "bytecode": "0x6080604052348015600e575f5ffd5b50610ef28061001c5f395ff3fe608060405234801561000f575f5ffd5b5060043610610029575f3560e01c8063f88cf6db1461002d575b5f5ffd5b61004061003b366004610abe565b61005a565b604051610051959493929190610b83565b60405180910390f35b5f5f5f5f606061006b8c88886107b0565b7f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc988036101c6576040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8c811660048301528b16906370a0823190602401602060405180830381865afa1580156100fc573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101209190610c0a565b60208d01516040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8e8116600483015291821660248201529196508b169063dd62ed3e906044015b602060405180830381865afa15801561019b573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101bf9190610c0a565b9350610604565b7fabee3b73373acd583a130924aad6dc38cfdc44ba0555ba94ce2ff63980ea06328803610389576040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8c811660048301528b16906370a0823190602401602060405180830381865afa158015610257573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061027b9190610c0a565b6040808e015160208f015191517ffec90d7200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8f811660048301529283166024820152929750169063fec90d7290604401602060405180830381865afa1580156102f9573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061031d9190610c21565b610327575f6101bf565b60408c81015190517fdd62ed3e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8d811660048301529182166024820152908b169063dd62ed3e90604401610180565b7f4ac99ace14ee0a5ef932dc609df0943ab7ac16b7583634612f8dc35a4289a6ce880361059d576040805160018082528183019092525f91602080830190803683370190505090508a815f815181106103e4576103e4610c47565b73ffffffffffffffffffffffffffffffffffffffff92831660209182029290920101526040808f015190517f0f5a6efa000000000000000000000000000000000000000000000000000000008152911690630f5a6efa9061044b908f908590600401610c74565b5f60405180830381865afa158015610465573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526104aa9190810190610ced565b5f815181106104bb576104bb610c47565b602002602001015195508c6040015173ffffffffffffffffffffffffffffffffffffffff1663fec90d728d8f602001516040518363ffffffff1660e01b815260040161052a92919073ffffffffffffffffffffffffffffffffffffffff92831681529116602082015260400190565b602060405180830381865afa158015610545573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105699190610c21565b610573575f610595565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b945050610604565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f696e76616c696420746f6b656e20736f7572636500000000000000000000000060448201526064015b60405180910390fd5b838511156106125783610614565b845b6040805160018082528183019092529194505f9190816020015b604080516080810182525f8082526020808301829052928201819052606082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90920191018161062e57905050905060405180608001604052808d73ffffffffffffffffffffffffffffffffffffffff1681526020018c73ffffffffffffffffffffffffffffffffffffffff1681526020018b5f036106d157856106d3565b8b5b81526020018a815250815f815181106106ee576106ee610c47565b60200260200101819052508c6020015173ffffffffffffffffffffffffffffffffffffffff16637d10d11f826040518263ffffffff1660e01b81526004016107369190610d99565b5f604051808303815f87803b15801561074d575f5ffd5b505af192505050801561075e575060015b61079b573d80801561078b576040519150601f19603f3d011682016040523d82523d5f602084013e610790565b606091505b505f935091506107a0565b600192505b5097509750975097509792505050565b825173ffffffffffffffffffffffffffffffffffffffff163014610830576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f696e636f72726563742063616c6c696e6720636f6e746578740000000000000060448201526064016105fb565b5f5b81811015610997575f83838381811061084d5761084d610c47565b905060200281019061085f9190610e2d565b61086d906020810190610e69565b90505f84848481811061088257610882610c47565b90506020028101906108949190610e2d565b602001359050365f8686868181106108ae576108ae610c47565b90506020028101906108c09190610e2d565b6108ce906040810190610e84565b91509150876020015173ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff160361096b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f475076323a20666f7262696464656e20696e746572616374696f6e000000000060448201526064016105fb565b604051818382375f5f838387895af1610986573d5f5f3e3d5ffd5b505060019093019250610832915050565b50505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040516060810167ffffffffffffffff811182821017156109ed576109ed61099d565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715610a3a57610a3a61099d565b604052919050565b73ffffffffffffffffffffffffffffffffffffffff81168114610a63575f5ffd5b50565b8035610a7181610a42565b919050565b5f5f83601f840112610a86575f5ffd5b50813567ffffffffffffffff811115610a9d575f5ffd5b6020830191508360208260051b8501011115610ab7575f5ffd5b9250929050565b5f5f5f5f5f5f5f878903610100811215610ad6575f5ffd5b6060811215610ae3575f5ffd5b50610aec6109ca565b8835610af781610a42565b81526020890135610b0781610a42565b60208201526040890135610b1a81610a42565b60408201529650610b2d60608901610a66565b9550610b3b60808901610a66565b945060a0880135935060c0880135925060e088013567ffffffffffffffff811115610b64575f5ffd5b610b708a828b01610a76565b989b979a50959850939692959293505050565b858152846020820152836040820152821515606082015260a060808201525f82518060a08401525f5b81811015610bc957602081860181015160c0868401015201610bac565b505f60c0828501015260c07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168401019150509695505050505050565b5f60208284031215610c1a575f5ffd5b5051919050565b5f60208284031215610c31575f5ffd5b81518015158114610c40575f5ffd5b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f6040820173ffffffffffffffffffffffffffffffffffffffff85168352604060208401528084518083526060850191506020860192505f5b81811015610ce157835173ffffffffffffffffffffffffffffffffffffffff16835260209384019390920191600101610cad565b50909695505050505050565b5f60208284031215610cfd575f5ffd5b815167ffffffffffffffff811115610d13575f5ffd5b8201601f81018413610d23575f5ffd5b805167ffffffffffffffff811115610d3d57610d3d61099d565b8060051b610d4d602082016109f3565b91825260208184018101929081019087841115610d68575f5ffd5b6020850194505b83851015610d8e57845180835260209586019590935090910190610d6f565b979650505050505050565b602080825282518282018190525f918401906040840190835b81811015610e2257835173ffffffffffffffffffffffffffffffffffffffff815116845273ffffffffffffffffffffffffffffffffffffffff6020820151166020850152604081015160408501526060810151606085015250608083019250602084019350600181019050610db2565b509095945050505050565b5f82357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa1833603018112610e5f575f5ffd5b9190910192915050565b5f60208284031215610e79575f5ffd5b8135610c4081610a42565b5f5f83357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112610eb7575f5ffd5b83018035915067ffffffffffffffff821115610ed1575f5ffd5b602001915036819003821315610ab7575f5ffdfea164736f6c634300081e000a", + "deployedBytecode": "0x608060405234801561000f575f5ffd5b5060043610610029575f3560e01c8063f88cf6db1461002d575b5f5ffd5b61004061003b366004610abe565b61005a565b604051610051959493929190610b83565b60405180910390f35b5f5f5f5f606061006b8c88886107b0565b7f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc988036101c6576040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8c811660048301528b16906370a0823190602401602060405180830381865afa1580156100fc573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101209190610c0a565b60208d01516040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8e8116600483015291821660248201529196508b169063dd62ed3e906044015b602060405180830381865afa15801561019b573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101bf9190610c0a565b9350610604565b7fabee3b73373acd583a130924aad6dc38cfdc44ba0555ba94ce2ff63980ea06328803610389576040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8c811660048301528b16906370a0823190602401602060405180830381865afa158015610257573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061027b9190610c0a565b6040808e015160208f015191517ffec90d7200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8f811660048301529283166024820152929750169063fec90d7290604401602060405180830381865afa1580156102f9573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061031d9190610c21565b610327575f6101bf565b60408c81015190517fdd62ed3e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8d811660048301529182166024820152908b169063dd62ed3e90604401610180565b7f4ac99ace14ee0a5ef932dc609df0943ab7ac16b7583634612f8dc35a4289a6ce880361059d576040805160018082528183019092525f91602080830190803683370190505090508a815f815181106103e4576103e4610c47565b73ffffffffffffffffffffffffffffffffffffffff92831660209182029290920101526040808f015190517f0f5a6efa000000000000000000000000000000000000000000000000000000008152911690630f5a6efa9061044b908f908590600401610c74565b5f60405180830381865afa158015610465573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526104aa9190810190610ced565b5f815181106104bb576104bb610c47565b602002602001015195508c6040015173ffffffffffffffffffffffffffffffffffffffff1663fec90d728d8f602001516040518363ffffffff1660e01b815260040161052a92919073ffffffffffffffffffffffffffffffffffffffff92831681529116602082015260400190565b602060405180830381865afa158015610545573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105699190610c21565b610573575f610595565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b945050610604565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f696e76616c696420746f6b656e20736f7572636500000000000000000000000060448201526064015b60405180910390fd5b838511156106125783610614565b845b6040805160018082528183019092529194505f9190816020015b604080516080810182525f8082526020808301829052928201819052606082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90920191018161062e57905050905060405180608001604052808d73ffffffffffffffffffffffffffffffffffffffff1681526020018c73ffffffffffffffffffffffffffffffffffffffff1681526020018b5f036106d157856106d3565b8b5b81526020018a815250815f815181106106ee576106ee610c47565b60200260200101819052508c6020015173ffffffffffffffffffffffffffffffffffffffff16637d10d11f826040518263ffffffff1660e01b81526004016107369190610d99565b5f604051808303815f87803b15801561074d575f5ffd5b505af192505050801561075e575060015b61079b573d80801561078b576040519150601f19603f3d011682016040523d82523d5f602084013e610790565b606091505b505f935091506107a0565b600192505b5097509750975097509792505050565b825173ffffffffffffffffffffffffffffffffffffffff163014610830576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f696e636f72726563742063616c6c696e6720636f6e746578740000000000000060448201526064016105fb565b5f5b81811015610997575f83838381811061084d5761084d610c47565b905060200281019061085f9190610e2d565b61086d906020810190610e69565b90505f84848481811061088257610882610c47565b90506020028101906108949190610e2d565b602001359050365f8686868181106108ae576108ae610c47565b90506020028101906108c09190610e2d565b6108ce906040810190610e84565b91509150876020015173ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff160361096b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f475076323a20666f7262696464656e20696e746572616374696f6e000000000060448201526064016105fb565b604051818382375f5f838387895af1610986573d5f5f3e3d5ffd5b505060019093019250610832915050565b50505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040516060810167ffffffffffffffff811182821017156109ed576109ed61099d565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715610a3a57610a3a61099d565b604052919050565b73ffffffffffffffffffffffffffffffffffffffff81168114610a63575f5ffd5b50565b8035610a7181610a42565b919050565b5f5f83601f840112610a86575f5ffd5b50813567ffffffffffffffff811115610a9d575f5ffd5b6020830191508360208260051b8501011115610ab7575f5ffd5b9250929050565b5f5f5f5f5f5f5f878903610100811215610ad6575f5ffd5b6060811215610ae3575f5ffd5b50610aec6109ca565b8835610af781610a42565b81526020890135610b0781610a42565b60208201526040890135610b1a81610a42565b60408201529650610b2d60608901610a66565b9550610b3b60808901610a66565b945060a0880135935060c0880135925060e088013567ffffffffffffffff811115610b64575f5ffd5b610b708a828b01610a76565b989b979a50959850939692959293505050565b858152846020820152836040820152821515606082015260a060808201525f82518060a08401525f5b81811015610bc957602081860181015160c0868401015201610bac565b505f60c0828501015260c07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168401019150509695505050505050565b5f60208284031215610c1a575f5ffd5b5051919050565b5f60208284031215610c31575f5ffd5b81518015158114610c40575f5ffd5b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f6040820173ffffffffffffffffffffffffffffffffffffffff85168352604060208401528084518083526060850191506020860192505f5b81811015610ce157835173ffffffffffffffffffffffffffffffffffffffff16835260209384019390920191600101610cad565b50909695505050505050565b5f60208284031215610cfd575f5ffd5b815167ffffffffffffffff811115610d13575f5ffd5b8201601f81018413610d23575f5ffd5b805167ffffffffffffffff811115610d3d57610d3d61099d565b8060051b610d4d602082016109f3565b91825260208184018101929081019087841115610d68575f5ffd5b6020850194505b83851015610d8e57845180835260209586019590935090910190610d6f565b979650505050505050565b602080825282518282018190525f918401906040840190835b81811015610e2257835173ffffffffffffffffffffffffffffffffffffffff815116845273ffffffffffffffffffffffffffffffffffffffff6020820151166020850152604081015160408501526060810151606085015250608083019250602084019350600181019050610db2565b509095945050505050565b5f82357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa1833603018112610e5f575f5ffd5b9190910192915050565b5f60208284031215610e79575f5ffd5b8135610c4081610a42565b5f5f83357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112610eb7575f5ffd5b83018035915067ffffffffffffffff821115610ed1575f5ffd5b602001915036819003821315610ab7575f5ffdfea164736f6c634300081e000a", "devdoc": { "methods": {} }, diff --git a/contracts/generated/contracts-generated/balances/src/lib.rs b/contracts/generated/contracts-generated/balances/src/lib.rs index 56507b2c6b..0c4f3080f2 100644 --- a/contracts/generated/contracts-generated/balances/src/lib.rs +++ b/contracts/generated/contracts-generated/balances/src/lib.rs @@ -22,7 +22,7 @@ interface Balances { bytes callData; } - function balance(Contracts memory contracts, address trader, address token, uint256 amount, bytes32 source, Interaction[] memory interactions) external returns (uint256 tokenBalance, uint256 allowance, uint256 effectiveBalance, bool canTransfer); + function balance(Contracts memory contracts, address trader, address token, uint256 amount, bytes32 source, Interaction[] memory interactions) external returns (uint256 tokenBalance, uint256 allowance, uint256 effectiveBalance, bool canTransfer, bytes memory transferRevertReason); } ``` @@ -118,6 +118,11 @@ interface Balances { "name": "canTransfer", "type": "bool", "internalType": "bool" + }, + { + "name": "transferRevertReason", + "type": "bytes", + "internalType": "bytes" } ], "stateMutability": "nonpayable" @@ -136,22 +141,22 @@ pub mod Balances { /// The creation / init bytecode of the contract. /// /// ```text - ///0x6080604052348015600e575f5ffd5b50610e438061001c5f395ff3fe608060405234801561000f575f5ffd5b5060043610610029575f3560e01c8063f88cf6db1461002d575b5f5ffd5b61004061003b366004610a96565b610066565b604080519485526020850193909352918301521515606082015260800160405180910390f35b5f5f5f5f6100758b8787610788565b7f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc987036101d0576040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8b811660048301528a16906370a0823190602401602060405180830381865afa158015610106573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061012a9190610b5b565b60208c01516040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8d8116600483015291821660248201529195508a169063dd62ed3e906044015b602060405180830381865afa1580156101a5573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101c99190610b5b565b925061060e565b7fabee3b73373acd583a130924aad6dc38cfdc44ba0555ba94ce2ff63980ea06328703610393576040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8b811660048301528a16906370a0823190602401602060405180830381865afa158015610261573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102859190610b5b565b6040808d015160208e015191517ffec90d7200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8e811660048301529283166024820152929650169063fec90d7290604401602060405180830381865afa158015610303573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103279190610b72565b610331575f6101c9565b60408b81015190517fdd62ed3e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8c811660048301529182166024820152908a169063dd62ed3e9060440161018a565b7f4ac99ace14ee0a5ef932dc609df0943ab7ac16b7583634612f8dc35a4289a6ce87036105a7576040805160018082528183019092525f916020808301908036833701905050905089815f815181106103ee576103ee610b98565b73ffffffffffffffffffffffffffffffffffffffff92831660209182029290920101526040808e015190517f0f5a6efa000000000000000000000000000000000000000000000000000000008152911690630f5a6efa90610455908e908590600401610bc5565b5f60405180830381865afa15801561046f573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526104b49190810190610c3e565b5f815181106104c5576104c5610b98565b602002602001015194508b6040015173ffffffffffffffffffffffffffffffffffffffff1663fec90d728c8e602001516040518363ffffffff1660e01b815260040161053492919073ffffffffffffffffffffffffffffffffffffffff92831681529116602082015260400190565b602060405180830381865afa15801561054f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105739190610b72565b61057d575f61059f565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b93505061060e565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f696e76616c696420746f6b656e20736f7572636500000000000000000000000060448201526064015b60405180910390fd5b8284111561061c578261061e565b835b6040805160018082528183019092529193505f9190816020015b604080516080810182525f8082526020808301829052928201819052606082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90920191018161063857905050905060405180608001604052808c73ffffffffffffffffffffffffffffffffffffffff1681526020018b73ffffffffffffffffffffffffffffffffffffffff1681526020018a5f036106db57846106dd565b8a5b815260200189815250815f815181106106f8576106f8610b98565b60200260200101819052508b6020015173ffffffffffffffffffffffffffffffffffffffff16637d10d11f826040518263ffffffff1660e01b81526004016107409190610cea565b5f604051808303815f87803b158015610757575f5ffd5b505af1925050508015610768575060015b610774575f9150610779565b600191505b50975097509750979350505050565b825173ffffffffffffffffffffffffffffffffffffffff163014610808576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f696e636f72726563742063616c6c696e6720636f6e74657874000000000000006044820152606401610605565b5f5b8181101561096f575f83838381811061082557610825610b98565b90506020028101906108379190610d7e565b610845906020810190610dba565b90505f84848481811061085a5761085a610b98565b905060200281019061086c9190610d7e565b602001359050365f86868681811061088657610886610b98565b90506020028101906108989190610d7e565b6108a6906040810190610dd5565b91509150876020015173ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610943576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f475076323a20666f7262696464656e20696e746572616374696f6e00000000006044820152606401610605565b604051818382375f5f838387895af161095e573d5f5f3e3d5ffd5b50506001909301925061080a915050565b50505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040516060810167ffffffffffffffff811182821017156109c5576109c5610975565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715610a1257610a12610975565b604052919050565b73ffffffffffffffffffffffffffffffffffffffff81168114610a3b575f5ffd5b50565b8035610a4981610a1a565b919050565b5f5f83601f840112610a5e575f5ffd5b50813567ffffffffffffffff811115610a75575f5ffd5b6020830191508360208260051b8501011115610a8f575f5ffd5b9250929050565b5f5f5f5f5f5f5f878903610100811215610aae575f5ffd5b6060811215610abb575f5ffd5b50610ac46109a2565b8835610acf81610a1a565b81526020890135610adf81610a1a565b60208201526040890135610af281610a1a565b60408201529650610b0560608901610a3e565b9550610b1360808901610a3e565b945060a0880135935060c0880135925060e088013567ffffffffffffffff811115610b3c575f5ffd5b610b488a828b01610a4e565b989b979a50959850939692959293505050565b5f60208284031215610b6b575f5ffd5b5051919050565b5f60208284031215610b82575f5ffd5b81518015158114610b91575f5ffd5b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f6040820173ffffffffffffffffffffffffffffffffffffffff85168352604060208401528084518083526060850191506020860192505f5b81811015610c3257835173ffffffffffffffffffffffffffffffffffffffff16835260209384019390920191600101610bfe565b50909695505050505050565b5f60208284031215610c4e575f5ffd5b815167ffffffffffffffff811115610c64575f5ffd5b8201601f81018413610c74575f5ffd5b805167ffffffffffffffff811115610c8e57610c8e610975565b8060051b610c9e602082016109cb565b91825260208184018101929081019087841115610cb9575f5ffd5b6020850194505b83851015610cdf57845180835260209586019590935090910190610cc0565b979650505050505050565b602080825282518282018190525f918401906040840190835b81811015610d7357835173ffffffffffffffffffffffffffffffffffffffff815116845273ffffffffffffffffffffffffffffffffffffffff6020820151166020850152604081015160408501526060810151606085015250608083019250602084019350600181019050610d03565b509095945050505050565b5f82357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa1833603018112610db0575f5ffd5b9190910192915050565b5f60208284031215610dca575f5ffd5b8135610b9181610a1a565b5f5f83357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112610e08575f5ffd5b83018035915067ffffffffffffffff821115610e22575f5ffd5b602001915036819003821315610a8f575f5ffdfea164736f6c634300081e000a + ///0x6080604052348015600e575f5ffd5b50610ef28061001c5f395ff3fe608060405234801561000f575f5ffd5b5060043610610029575f3560e01c8063f88cf6db1461002d575b5f5ffd5b61004061003b366004610abe565b61005a565b604051610051959493929190610b83565b60405180910390f35b5f5f5f5f606061006b8c88886107b0565b7f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc988036101c6576040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8c811660048301528b16906370a0823190602401602060405180830381865afa1580156100fc573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101209190610c0a565b60208d01516040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8e8116600483015291821660248201529196508b169063dd62ed3e906044015b602060405180830381865afa15801561019b573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101bf9190610c0a565b9350610604565b7fabee3b73373acd583a130924aad6dc38cfdc44ba0555ba94ce2ff63980ea06328803610389576040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8c811660048301528b16906370a0823190602401602060405180830381865afa158015610257573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061027b9190610c0a565b6040808e015160208f015191517ffec90d7200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8f811660048301529283166024820152929750169063fec90d7290604401602060405180830381865afa1580156102f9573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061031d9190610c21565b610327575f6101bf565b60408c81015190517fdd62ed3e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8d811660048301529182166024820152908b169063dd62ed3e90604401610180565b7f4ac99ace14ee0a5ef932dc609df0943ab7ac16b7583634612f8dc35a4289a6ce880361059d576040805160018082528183019092525f91602080830190803683370190505090508a815f815181106103e4576103e4610c47565b73ffffffffffffffffffffffffffffffffffffffff92831660209182029290920101526040808f015190517f0f5a6efa000000000000000000000000000000000000000000000000000000008152911690630f5a6efa9061044b908f908590600401610c74565b5f60405180830381865afa158015610465573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526104aa9190810190610ced565b5f815181106104bb576104bb610c47565b602002602001015195508c6040015173ffffffffffffffffffffffffffffffffffffffff1663fec90d728d8f602001516040518363ffffffff1660e01b815260040161052a92919073ffffffffffffffffffffffffffffffffffffffff92831681529116602082015260400190565b602060405180830381865afa158015610545573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105699190610c21565b610573575f610595565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b945050610604565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f696e76616c696420746f6b656e20736f7572636500000000000000000000000060448201526064015b60405180910390fd5b838511156106125783610614565b845b6040805160018082528183019092529194505f9190816020015b604080516080810182525f8082526020808301829052928201819052606082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90920191018161062e57905050905060405180608001604052808d73ffffffffffffffffffffffffffffffffffffffff1681526020018c73ffffffffffffffffffffffffffffffffffffffff1681526020018b5f036106d157856106d3565b8b5b81526020018a815250815f815181106106ee576106ee610c47565b60200260200101819052508c6020015173ffffffffffffffffffffffffffffffffffffffff16637d10d11f826040518263ffffffff1660e01b81526004016107369190610d99565b5f604051808303815f87803b15801561074d575f5ffd5b505af192505050801561075e575060015b61079b573d80801561078b576040519150601f19603f3d011682016040523d82523d5f602084013e610790565b606091505b505f935091506107a0565b600192505b5097509750975097509792505050565b825173ffffffffffffffffffffffffffffffffffffffff163014610830576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f696e636f72726563742063616c6c696e6720636f6e746578740000000000000060448201526064016105fb565b5f5b81811015610997575f83838381811061084d5761084d610c47565b905060200281019061085f9190610e2d565b61086d906020810190610e69565b90505f84848481811061088257610882610c47565b90506020028101906108949190610e2d565b602001359050365f8686868181106108ae576108ae610c47565b90506020028101906108c09190610e2d565b6108ce906040810190610e84565b91509150876020015173ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff160361096b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f475076323a20666f7262696464656e20696e746572616374696f6e000000000060448201526064016105fb565b604051818382375f5f838387895af1610986573d5f5f3e3d5ffd5b505060019093019250610832915050565b50505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040516060810167ffffffffffffffff811182821017156109ed576109ed61099d565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715610a3a57610a3a61099d565b604052919050565b73ffffffffffffffffffffffffffffffffffffffff81168114610a63575f5ffd5b50565b8035610a7181610a42565b919050565b5f5f83601f840112610a86575f5ffd5b50813567ffffffffffffffff811115610a9d575f5ffd5b6020830191508360208260051b8501011115610ab7575f5ffd5b9250929050565b5f5f5f5f5f5f5f878903610100811215610ad6575f5ffd5b6060811215610ae3575f5ffd5b50610aec6109ca565b8835610af781610a42565b81526020890135610b0781610a42565b60208201526040890135610b1a81610a42565b60408201529650610b2d60608901610a66565b9550610b3b60808901610a66565b945060a0880135935060c0880135925060e088013567ffffffffffffffff811115610b64575f5ffd5b610b708a828b01610a76565b989b979a50959850939692959293505050565b858152846020820152836040820152821515606082015260a060808201525f82518060a08401525f5b81811015610bc957602081860181015160c0868401015201610bac565b505f60c0828501015260c07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168401019150509695505050505050565b5f60208284031215610c1a575f5ffd5b5051919050565b5f60208284031215610c31575f5ffd5b81518015158114610c40575f5ffd5b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f6040820173ffffffffffffffffffffffffffffffffffffffff85168352604060208401528084518083526060850191506020860192505f5b81811015610ce157835173ffffffffffffffffffffffffffffffffffffffff16835260209384019390920191600101610cad565b50909695505050505050565b5f60208284031215610cfd575f5ffd5b815167ffffffffffffffff811115610d13575f5ffd5b8201601f81018413610d23575f5ffd5b805167ffffffffffffffff811115610d3d57610d3d61099d565b8060051b610d4d602082016109f3565b91825260208184018101929081019087841115610d68575f5ffd5b6020850194505b83851015610d8e57845180835260209586019590935090910190610d6f565b979650505050505050565b602080825282518282018190525f918401906040840190835b81811015610e2257835173ffffffffffffffffffffffffffffffffffffffff815116845273ffffffffffffffffffffffffffffffffffffffff6020820151166020850152604081015160408501526060810151606085015250608083019250602084019350600181019050610db2565b509095945050505050565b5f82357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa1833603018112610e5f575f5ffd5b9190910192915050565b5f60208284031215610e79575f5ffd5b8135610c4081610a42565b5f5f83357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112610eb7575f5ffd5b83018035915067ffffffffffffffff821115610ed1575f5ffd5b602001915036819003821315610ab7575f5ffdfea164736f6c634300081e000a /// ``` #[rustfmt::skip] #[allow(clippy::all)] pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( - b"`\x80`@R4\x80\x15`\x0EW__\xFD[Pa\x0EC\x80a\0\x1C_9_\xF3\xFE`\x80`@R4\x80\x15a\0\x0FW__\xFD[P`\x046\x10a\0)W_5`\xE0\x1C\x80c\xF8\x8C\xF6\xDB\x14a\0-W[__\xFD[a\0@a\0;6`\x04a\n\x96V[a\0fV[`@\x80Q\x94\x85R` \x85\x01\x93\x90\x93R\x91\x83\x01R\x15\x15``\x82\x01R`\x80\x01`@Q\x80\x91\x03\x90\xF3[____a\0u\x8B\x87\x87a\x07\x88V[\x7FZ(\xE96;\xB9B\xB69'\0b\xAAk\xB2\x95\xF44\xBC\xDF\xC4,\x97&{\xF0\x03\xF2r\x06\r\xC9\x87\x03a\x01\xD0W`@Q\x7Fp\xA0\x821\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x8B\x81\x16`\x04\x83\x01R\x8A\x16\x90cp\xA0\x821\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x01\x06W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x01*\x91\x90a\x0B[V[` \x8C\x01Q`@Q\x7F\xDDb\xED>\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x8D\x81\x16`\x04\x83\x01R\x91\x82\x16`$\x82\x01R\x91\x95P\x8A\x16\x90c\xDDb\xED>\x90`D\x01[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x01\xA5W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x01\xC9\x91\x90a\x0B[V[\x92Pa\x06\x0EV[\x7F\xAB\xEE;s7:\xCDX:\x13\t$\xAA\xD6\xDC8\xCF\xDCD\xBA\x05U\xBA\x94\xCE/\xF69\x80\xEA\x062\x87\x03a\x03\x93W`@Q\x7Fp\xA0\x821\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x8B\x81\x16`\x04\x83\x01R\x8A\x16\x90cp\xA0\x821\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x02aW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x02\x85\x91\x90a\x0B[V[`@\x80\x8D\x01Q` \x8E\x01Q\x91Q\x7F\xFE\xC9\rr\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x8E\x81\x16`\x04\x83\x01R\x92\x83\x16`$\x82\x01R\x92\x96P\x16\x90c\xFE\xC9\rr\x90`D\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x03\x03W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x03'\x91\x90a\x0BrV[a\x031W_a\x01\xC9V[`@\x8B\x81\x01Q\x90Q\x7F\xDDb\xED>\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x8C\x81\x16`\x04\x83\x01R\x91\x82\x16`$\x82\x01R\x90\x8A\x16\x90c\xDDb\xED>\x90`D\x01a\x01\x8AV[\x7FJ\xC9\x9A\xCE\x14\xEE\n^\xF92\xDC`\x9D\xF0\x94:\xB7\xAC\x16\xB7X64a/\x8D\xC3ZB\x89\xA6\xCE\x87\x03a\x05\xA7W`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R_\x91` \x80\x83\x01\x90\x806\x837\x01\x90PP\x90P\x89\x81_\x81Q\x81\x10a\x03\xEEWa\x03\xEEa\x0B\x98V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x83\x16` \x91\x82\x02\x92\x90\x92\x01\x01R`@\x80\x8E\x01Q\x90Q\x7F\x0FZn\xFA\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\x91\x16\x90c\x0FZn\xFA\x90a\x04U\x90\x8E\x90\x85\x90`\x04\x01a\x0B\xC5V[_`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x04oW=__>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x04\xB4\x91\x90\x81\x01\x90a\x0C>V[_\x81Q\x81\x10a\x04\xC5Wa\x04\xC5a\x0B\x98V[` \x02` \x01\x01Q\x94P\x8B`@\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\xFE\xC9\rr\x8C\x8E` \x01Q`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x054\x92\x91\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x83\x16\x81R\x91\x16` \x82\x01R`@\x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x05OW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05s\x91\x90a\x0BrV[a\x05}W_a\x05\x9FV[\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF[\x93PPa\x06\x0EV[`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x14`$\x82\x01R\x7Finvalid token source\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[\x82\x84\x11\x15a\x06\x1CW\x82a\x06\x1EV[\x83[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R\x91\x93P_\x91\x90\x81` \x01[`@\x80Q`\x80\x81\x01\x82R_\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01\x81\x90R``\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x068W\x90PP\x90P`@Q\x80`\x80\x01`@R\x80\x8Cs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x8Bs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x8A_\x03a\x06\xDBW\x84a\x06\xDDV[\x8A[\x81R` \x01\x89\x81RP\x81_\x81Q\x81\x10a\x06\xF8Wa\x06\xF8a\x0B\x98V[` \x02` \x01\x01\x81\x90RP\x8B` \x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c}\x10\xD1\x1F\x82`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x07@\x91\x90a\x0C\xEAV[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x07WW__\xFD[PZ\xF1\x92PPP\x80\x15a\x07hWP`\x01[a\x07tW_\x91Pa\x07yV[`\x01\x91P[P\x97P\x97P\x97P\x97\x93PPPPV[\x82Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x160\x14a\x08\x08W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x19`$\x82\x01R\x7Fincorrect calling context\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x06\x05V[_[\x81\x81\x10\x15a\toW_\x83\x83\x83\x81\x81\x10a\x08%Wa\x08%a\x0B\x98V[\x90P` \x02\x81\x01\x90a\x087\x91\x90a\r~V[a\x08E\x90` \x81\x01\x90a\r\xBAV[\x90P_\x84\x84\x84\x81\x81\x10a\x08ZWa\x08Za\x0B\x98V[\x90P` \x02\x81\x01\x90a\x08l\x91\x90a\r~V[` \x015\x90P6_\x86\x86\x86\x81\x81\x10a\x08\x86Wa\x08\x86a\x0B\x98V[\x90P` \x02\x81\x01\x90a\x08\x98\x91\x90a\r~V[a\x08\xA6\x90`@\x81\x01\x90a\r\xD5V[\x91P\x91P\x87` \x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x84s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\tCW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x1B`$\x82\x01R\x7FGPv2: forbidden interaction\0\0\0\0\0`D\x82\x01R`d\x01a\x06\x05V[`@Q\x81\x83\x827__\x83\x83\x87\x89Z\xF1a\t^W=__>=_\xFD[PP`\x01\x90\x93\x01\x92Pa\x08\n\x91PPV[PPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`A`\x04R`$_\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\t\xC5Wa\t\xC5a\tuV[`@R\x90V[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\n\x12Wa\n\x12a\tuV[`@R\x91\x90PV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\n;W__\xFD[PV[\x805a\nI\x81a\n\x1AV[\x91\x90PV[__\x83`\x1F\x84\x01\x12a\n^W__\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\nuW__\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a\n\x8FW__\xFD[\x92P\x92\x90PV[_______\x87\x89\x03a\x01\0\x81\x12\x15a\n\xAEW__\xFD[``\x81\x12\x15a\n\xBBW__\xFD[Pa\n\xC4a\t\xA2V[\x885a\n\xCF\x81a\n\x1AV[\x81R` \x89\x015a\n\xDF\x81a\n\x1AV[` \x82\x01R`@\x89\x015a\n\xF2\x81a\n\x1AV[`@\x82\x01R\x96Pa\x0B\x05``\x89\x01a\n>V[\x95Pa\x0B\x13`\x80\x89\x01a\n>V[\x94P`\xA0\x88\x015\x93P`\xC0\x88\x015\x92P`\xE0\x88\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0B=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x01 \x91\x90a\x0C\nV[` \x8D\x01Q`@Q\x7F\xDDb\xED>\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x8E\x81\x16`\x04\x83\x01R\x91\x82\x16`$\x82\x01R\x91\x96P\x8B\x16\x90c\xDDb\xED>\x90`D\x01[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x01\x9BW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x01\xBF\x91\x90a\x0C\nV[\x93Pa\x06\x04V[\x7F\xAB\xEE;s7:\xCDX:\x13\t$\xAA\xD6\xDC8\xCF\xDCD\xBA\x05U\xBA\x94\xCE/\xF69\x80\xEA\x062\x88\x03a\x03\x89W`@Q\x7Fp\xA0\x821\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x8C\x81\x16`\x04\x83\x01R\x8B\x16\x90cp\xA0\x821\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x02WW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x02{\x91\x90a\x0C\nV[`@\x80\x8E\x01Q` \x8F\x01Q\x91Q\x7F\xFE\xC9\rr\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x8F\x81\x16`\x04\x83\x01R\x92\x83\x16`$\x82\x01R\x92\x97P\x16\x90c\xFE\xC9\rr\x90`D\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x02\xF9W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x03\x1D\x91\x90a\x0C!V[a\x03'W_a\x01\xBFV[`@\x8C\x81\x01Q\x90Q\x7F\xDDb\xED>\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x8D\x81\x16`\x04\x83\x01R\x91\x82\x16`$\x82\x01R\x90\x8B\x16\x90c\xDDb\xED>\x90`D\x01a\x01\x80V[\x7FJ\xC9\x9A\xCE\x14\xEE\n^\xF92\xDC`\x9D\xF0\x94:\xB7\xAC\x16\xB7X64a/\x8D\xC3ZB\x89\xA6\xCE\x88\x03a\x05\x9DW`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R_\x91` \x80\x83\x01\x90\x806\x837\x01\x90PP\x90P\x8A\x81_\x81Q\x81\x10a\x03\xE4Wa\x03\xE4a\x0CGV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x83\x16` \x91\x82\x02\x92\x90\x92\x01\x01R`@\x80\x8F\x01Q\x90Q\x7F\x0FZn\xFA\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\x91\x16\x90c\x0FZn\xFA\x90a\x04K\x90\x8F\x90\x85\x90`\x04\x01a\x0CtV[_`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x04eW=__>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x04\xAA\x91\x90\x81\x01\x90a\x0C\xEDV[_\x81Q\x81\x10a\x04\xBBWa\x04\xBBa\x0CGV[` \x02` \x01\x01Q\x95P\x8C`@\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\xFE\xC9\rr\x8D\x8F` \x01Q`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x05*\x92\x91\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x83\x16\x81R\x91\x16` \x82\x01R`@\x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x05EW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05i\x91\x90a\x0C!V[a\x05sW_a\x05\x95V[\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF[\x94PPa\x06\x04V[`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x14`$\x82\x01R\x7Finvalid token source\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[\x83\x85\x11\x15a\x06\x12W\x83a\x06\x14V[\x84[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R\x91\x94P_\x91\x90\x81` \x01[`@\x80Q`\x80\x81\x01\x82R_\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01\x81\x90R``\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x06.W\x90PP\x90P`@Q\x80`\x80\x01`@R\x80\x8Ds\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x8Cs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x8B_\x03a\x06\xD1W\x85a\x06\xD3V[\x8B[\x81R` \x01\x8A\x81RP\x81_\x81Q\x81\x10a\x06\xEEWa\x06\xEEa\x0CGV[` \x02` \x01\x01\x81\x90RP\x8C` \x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c}\x10\xD1\x1F\x82`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x076\x91\x90a\r\x99V[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x07MW__\xFD[PZ\xF1\x92PPP\x80\x15a\x07^WP`\x01[a\x07\x9BW=\x80\x80\x15a\x07\x8BW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x07\x90V[``\x91P[P_\x93P\x91Pa\x07\xA0V[`\x01\x92P[P\x97P\x97P\x97P\x97P\x97\x92PPPV[\x82Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x160\x14a\x080W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x19`$\x82\x01R\x7Fincorrect calling context\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05\xFBV[_[\x81\x81\x10\x15a\t\x97W_\x83\x83\x83\x81\x81\x10a\x08MWa\x08Ma\x0CGV[\x90P` \x02\x81\x01\x90a\x08_\x91\x90a\x0E-V[a\x08m\x90` \x81\x01\x90a\x0EiV[\x90P_\x84\x84\x84\x81\x81\x10a\x08\x82Wa\x08\x82a\x0CGV[\x90P` \x02\x81\x01\x90a\x08\x94\x91\x90a\x0E-V[` \x015\x90P6_\x86\x86\x86\x81\x81\x10a\x08\xAEWa\x08\xAEa\x0CGV[\x90P` \x02\x81\x01\x90a\x08\xC0\x91\x90a\x0E-V[a\x08\xCE\x90`@\x81\x01\x90a\x0E\x84V[\x91P\x91P\x87` \x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x84s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\tkW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x1B`$\x82\x01R\x7FGPv2: forbidden interaction\0\0\0\0\0`D\x82\x01R`d\x01a\x05\xFBV[`@Q\x81\x83\x827__\x83\x83\x87\x89Z\xF1a\t\x86W=__>=_\xFD[PP`\x01\x90\x93\x01\x92Pa\x082\x91PPV[PPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`A`\x04R`$_\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\t\xEDWa\t\xEDa\t\x9DV[`@R\x90V[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\n:Wa\n:a\t\x9DV[`@R\x91\x90PV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\ncW__\xFD[PV[\x805a\nq\x81a\nBV[\x91\x90PV[__\x83`\x1F\x84\x01\x12a\n\x86W__\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\n\x9DW__\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a\n\xB7W__\xFD[\x92P\x92\x90PV[_______\x87\x89\x03a\x01\0\x81\x12\x15a\n\xD6W__\xFD[``\x81\x12\x15a\n\xE3W__\xFD[Pa\n\xECa\t\xCAV[\x885a\n\xF7\x81a\nBV[\x81R` \x89\x015a\x0B\x07\x81a\nBV[` \x82\x01R`@\x89\x015a\x0B\x1A\x81a\nBV[`@\x82\x01R\x96Pa\x0B-``\x89\x01a\nfV[\x95Pa\x0B;`\x80\x89\x01a\nfV[\x94P`\xA0\x88\x015\x93P`\xC0\x88\x015\x92P`\xE0\x88\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0BdW__\xFD[a\x0Bp\x8A\x82\x8B\x01a\nvV[\x98\x9B\x97\x9AP\x95\x98P\x93\x96\x92\x95\x92\x93PPPV[\x85\x81R\x84` \x82\x01R\x83`@\x82\x01R\x82\x15\x15``\x82\x01R`\xA0`\x80\x82\x01R_\x82Q\x80`\xA0\x84\x01R_[\x81\x81\x10\x15a\x0B\xC9W` \x81\x86\x01\x81\x01Q`\xC0\x86\x84\x01\x01R\x01a\x0B\xACV[P_`\xC0\x82\x85\x01\x01R`\xC0\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x83\x01\x16\x84\x01\x01\x91PP\x96\x95PPPPPPV[_` \x82\x84\x03\x12\x15a\x0C\x1AW__\xFD[PQ\x91\x90PV[_` \x82\x84\x03\x12\x15a\x0C1W__\xFD[\x81Q\x80\x15\x15\x81\x14a\x0C@W__\xFD[\x93\x92PPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`2`\x04R`$_\xFD[_`@\x82\x01s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16\x83R`@` \x84\x01R\x80\x84Q\x80\x83R``\x85\x01\x91P` \x86\x01\x92P_[\x81\x81\x10\x15a\x0C\xE1W\x83Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x83R` \x93\x84\x01\x93\x90\x92\x01\x91`\x01\x01a\x0C\xADV[P\x90\x96\x95PPPPPPV[_` \x82\x84\x03\x12\x15a\x0C\xFDW__\xFD[\x81Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\r\x13W__\xFD[\x82\x01`\x1F\x81\x01\x84\x13a\r#W__\xFD[\x80Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\r=Wa\r=a\t\x9DV[\x80`\x05\x1Ba\rM` \x82\x01a\t\xF3V[\x91\x82R` \x81\x84\x01\x81\x01\x92\x90\x81\x01\x90\x87\x84\x11\x15a\rhW__\xFD[` \x85\x01\x94P[\x83\x85\x10\x15a\r\x8EW\x84Q\x80\x83R` \x95\x86\x01\x95\x90\x93P\x90\x91\x01\x90a\roV[\x97\x96PPPPPPPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R_\x91\x84\x01\x90`@\x84\x01\x90\x83[\x81\x81\x10\x15a\x0E\"W\x83Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81Q\x16\x84Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF` \x82\x01Q\x16` \x85\x01R`@\x81\x01Q`@\x85\x01R``\x81\x01Q``\x85\x01RP`\x80\x83\x01\x92P` \x84\x01\x93P`\x01\x81\x01\x90Pa\r\xB2V[P\x90\x95\x94PPPPPV[_\x825\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA1\x836\x03\x01\x81\x12a\x0E_W__\xFD[\x91\x90\x91\x01\x92\x91PPV[_` \x82\x84\x03\x12\x15a\x0EyW__\xFD[\x815a\x0C@\x81a\nBV[__\x835\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\x846\x03\x01\x81\x12a\x0E\xB7W__\xFD[\x83\x01\x805\x91Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x0E\xD1W__\xFD[` \x01\x91P6\x81\x90\x03\x82\x13\x15a\n\xB7W__\xFD\xFE\xA1dsolcC\0\x08\x1E\0\n", ); /// The runtime bytecode of the contract, as deployed on the network. /// /// ```text - ///0x608060405234801561000f575f5ffd5b5060043610610029575f3560e01c8063f88cf6db1461002d575b5f5ffd5b61004061003b366004610a96565b610066565b604080519485526020850193909352918301521515606082015260800160405180910390f35b5f5f5f5f6100758b8787610788565b7f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc987036101d0576040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8b811660048301528a16906370a0823190602401602060405180830381865afa158015610106573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061012a9190610b5b565b60208c01516040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8d8116600483015291821660248201529195508a169063dd62ed3e906044015b602060405180830381865afa1580156101a5573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101c99190610b5b565b925061060e565b7fabee3b73373acd583a130924aad6dc38cfdc44ba0555ba94ce2ff63980ea06328703610393576040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8b811660048301528a16906370a0823190602401602060405180830381865afa158015610261573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102859190610b5b565b6040808d015160208e015191517ffec90d7200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8e811660048301529283166024820152929650169063fec90d7290604401602060405180830381865afa158015610303573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103279190610b72565b610331575f6101c9565b60408b81015190517fdd62ed3e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8c811660048301529182166024820152908a169063dd62ed3e9060440161018a565b7f4ac99ace14ee0a5ef932dc609df0943ab7ac16b7583634612f8dc35a4289a6ce87036105a7576040805160018082528183019092525f916020808301908036833701905050905089815f815181106103ee576103ee610b98565b73ffffffffffffffffffffffffffffffffffffffff92831660209182029290920101526040808e015190517f0f5a6efa000000000000000000000000000000000000000000000000000000008152911690630f5a6efa90610455908e908590600401610bc5565b5f60405180830381865afa15801561046f573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526104b49190810190610c3e565b5f815181106104c5576104c5610b98565b602002602001015194508b6040015173ffffffffffffffffffffffffffffffffffffffff1663fec90d728c8e602001516040518363ffffffff1660e01b815260040161053492919073ffffffffffffffffffffffffffffffffffffffff92831681529116602082015260400190565b602060405180830381865afa15801561054f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105739190610b72565b61057d575f61059f565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b93505061060e565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f696e76616c696420746f6b656e20736f7572636500000000000000000000000060448201526064015b60405180910390fd5b8284111561061c578261061e565b835b6040805160018082528183019092529193505f9190816020015b604080516080810182525f8082526020808301829052928201819052606082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90920191018161063857905050905060405180608001604052808c73ffffffffffffffffffffffffffffffffffffffff1681526020018b73ffffffffffffffffffffffffffffffffffffffff1681526020018a5f036106db57846106dd565b8a5b815260200189815250815f815181106106f8576106f8610b98565b60200260200101819052508b6020015173ffffffffffffffffffffffffffffffffffffffff16637d10d11f826040518263ffffffff1660e01b81526004016107409190610cea565b5f604051808303815f87803b158015610757575f5ffd5b505af1925050508015610768575060015b610774575f9150610779565b600191505b50975097509750979350505050565b825173ffffffffffffffffffffffffffffffffffffffff163014610808576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f696e636f72726563742063616c6c696e6720636f6e74657874000000000000006044820152606401610605565b5f5b8181101561096f575f83838381811061082557610825610b98565b90506020028101906108379190610d7e565b610845906020810190610dba565b90505f84848481811061085a5761085a610b98565b905060200281019061086c9190610d7e565b602001359050365f86868681811061088657610886610b98565b90506020028101906108989190610d7e565b6108a6906040810190610dd5565b91509150876020015173ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610943576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f475076323a20666f7262696464656e20696e746572616374696f6e00000000006044820152606401610605565b604051818382375f5f838387895af161095e573d5f5f3e3d5ffd5b50506001909301925061080a915050565b50505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040516060810167ffffffffffffffff811182821017156109c5576109c5610975565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715610a1257610a12610975565b604052919050565b73ffffffffffffffffffffffffffffffffffffffff81168114610a3b575f5ffd5b50565b8035610a4981610a1a565b919050565b5f5f83601f840112610a5e575f5ffd5b50813567ffffffffffffffff811115610a75575f5ffd5b6020830191508360208260051b8501011115610a8f575f5ffd5b9250929050565b5f5f5f5f5f5f5f878903610100811215610aae575f5ffd5b6060811215610abb575f5ffd5b50610ac46109a2565b8835610acf81610a1a565b81526020890135610adf81610a1a565b60208201526040890135610af281610a1a565b60408201529650610b0560608901610a3e565b9550610b1360808901610a3e565b945060a0880135935060c0880135925060e088013567ffffffffffffffff811115610b3c575f5ffd5b610b488a828b01610a4e565b989b979a50959850939692959293505050565b5f60208284031215610b6b575f5ffd5b5051919050565b5f60208284031215610b82575f5ffd5b81518015158114610b91575f5ffd5b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f6040820173ffffffffffffffffffffffffffffffffffffffff85168352604060208401528084518083526060850191506020860192505f5b81811015610c3257835173ffffffffffffffffffffffffffffffffffffffff16835260209384019390920191600101610bfe565b50909695505050505050565b5f60208284031215610c4e575f5ffd5b815167ffffffffffffffff811115610c64575f5ffd5b8201601f81018413610c74575f5ffd5b805167ffffffffffffffff811115610c8e57610c8e610975565b8060051b610c9e602082016109cb565b91825260208184018101929081019087841115610cb9575f5ffd5b6020850194505b83851015610cdf57845180835260209586019590935090910190610cc0565b979650505050505050565b602080825282518282018190525f918401906040840190835b81811015610d7357835173ffffffffffffffffffffffffffffffffffffffff815116845273ffffffffffffffffffffffffffffffffffffffff6020820151166020850152604081015160408501526060810151606085015250608083019250602084019350600181019050610d03565b509095945050505050565b5f82357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa1833603018112610db0575f5ffd5b9190910192915050565b5f60208284031215610dca575f5ffd5b8135610b9181610a1a565b5f5f83357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112610e08575f5ffd5b83018035915067ffffffffffffffff821115610e22575f5ffd5b602001915036819003821315610a8f575f5ffdfea164736f6c634300081e000a + ///0x608060405234801561000f575f5ffd5b5060043610610029575f3560e01c8063f88cf6db1461002d575b5f5ffd5b61004061003b366004610abe565b61005a565b604051610051959493929190610b83565b60405180910390f35b5f5f5f5f606061006b8c88886107b0565b7f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc988036101c6576040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8c811660048301528b16906370a0823190602401602060405180830381865afa1580156100fc573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101209190610c0a565b60208d01516040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8e8116600483015291821660248201529196508b169063dd62ed3e906044015b602060405180830381865afa15801561019b573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101bf9190610c0a565b9350610604565b7fabee3b73373acd583a130924aad6dc38cfdc44ba0555ba94ce2ff63980ea06328803610389576040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8c811660048301528b16906370a0823190602401602060405180830381865afa158015610257573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061027b9190610c0a565b6040808e015160208f015191517ffec90d7200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8f811660048301529283166024820152929750169063fec90d7290604401602060405180830381865afa1580156102f9573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061031d9190610c21565b610327575f6101bf565b60408c81015190517fdd62ed3e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8d811660048301529182166024820152908b169063dd62ed3e90604401610180565b7f4ac99ace14ee0a5ef932dc609df0943ab7ac16b7583634612f8dc35a4289a6ce880361059d576040805160018082528183019092525f91602080830190803683370190505090508a815f815181106103e4576103e4610c47565b73ffffffffffffffffffffffffffffffffffffffff92831660209182029290920101526040808f015190517f0f5a6efa000000000000000000000000000000000000000000000000000000008152911690630f5a6efa9061044b908f908590600401610c74565b5f60405180830381865afa158015610465573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526104aa9190810190610ced565b5f815181106104bb576104bb610c47565b602002602001015195508c6040015173ffffffffffffffffffffffffffffffffffffffff1663fec90d728d8f602001516040518363ffffffff1660e01b815260040161052a92919073ffffffffffffffffffffffffffffffffffffffff92831681529116602082015260400190565b602060405180830381865afa158015610545573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105699190610c21565b610573575f610595565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b945050610604565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f696e76616c696420746f6b656e20736f7572636500000000000000000000000060448201526064015b60405180910390fd5b838511156106125783610614565b845b6040805160018082528183019092529194505f9190816020015b604080516080810182525f8082526020808301829052928201819052606082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90920191018161062e57905050905060405180608001604052808d73ffffffffffffffffffffffffffffffffffffffff1681526020018c73ffffffffffffffffffffffffffffffffffffffff1681526020018b5f036106d157856106d3565b8b5b81526020018a815250815f815181106106ee576106ee610c47565b60200260200101819052508c6020015173ffffffffffffffffffffffffffffffffffffffff16637d10d11f826040518263ffffffff1660e01b81526004016107369190610d99565b5f604051808303815f87803b15801561074d575f5ffd5b505af192505050801561075e575060015b61079b573d80801561078b576040519150601f19603f3d011682016040523d82523d5f602084013e610790565b606091505b505f935091506107a0565b600192505b5097509750975097509792505050565b825173ffffffffffffffffffffffffffffffffffffffff163014610830576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f696e636f72726563742063616c6c696e6720636f6e746578740000000000000060448201526064016105fb565b5f5b81811015610997575f83838381811061084d5761084d610c47565b905060200281019061085f9190610e2d565b61086d906020810190610e69565b90505f84848481811061088257610882610c47565b90506020028101906108949190610e2d565b602001359050365f8686868181106108ae576108ae610c47565b90506020028101906108c09190610e2d565b6108ce906040810190610e84565b91509150876020015173ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff160361096b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f475076323a20666f7262696464656e20696e746572616374696f6e000000000060448201526064016105fb565b604051818382375f5f838387895af1610986573d5f5f3e3d5ffd5b505060019093019250610832915050565b50505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040516060810167ffffffffffffffff811182821017156109ed576109ed61099d565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715610a3a57610a3a61099d565b604052919050565b73ffffffffffffffffffffffffffffffffffffffff81168114610a63575f5ffd5b50565b8035610a7181610a42565b919050565b5f5f83601f840112610a86575f5ffd5b50813567ffffffffffffffff811115610a9d575f5ffd5b6020830191508360208260051b8501011115610ab7575f5ffd5b9250929050565b5f5f5f5f5f5f5f878903610100811215610ad6575f5ffd5b6060811215610ae3575f5ffd5b50610aec6109ca565b8835610af781610a42565b81526020890135610b0781610a42565b60208201526040890135610b1a81610a42565b60408201529650610b2d60608901610a66565b9550610b3b60808901610a66565b945060a0880135935060c0880135925060e088013567ffffffffffffffff811115610b64575f5ffd5b610b708a828b01610a76565b989b979a50959850939692959293505050565b858152846020820152836040820152821515606082015260a060808201525f82518060a08401525f5b81811015610bc957602081860181015160c0868401015201610bac565b505f60c0828501015260c07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168401019150509695505050505050565b5f60208284031215610c1a575f5ffd5b5051919050565b5f60208284031215610c31575f5ffd5b81518015158114610c40575f5ffd5b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f6040820173ffffffffffffffffffffffffffffffffffffffff85168352604060208401528084518083526060850191506020860192505f5b81811015610ce157835173ffffffffffffffffffffffffffffffffffffffff16835260209384019390920191600101610cad565b50909695505050505050565b5f60208284031215610cfd575f5ffd5b815167ffffffffffffffff811115610d13575f5ffd5b8201601f81018413610d23575f5ffd5b805167ffffffffffffffff811115610d3d57610d3d61099d565b8060051b610d4d602082016109f3565b91825260208184018101929081019087841115610d68575f5ffd5b6020850194505b83851015610d8e57845180835260209586019590935090910190610d6f565b979650505050505050565b602080825282518282018190525f918401906040840190835b81811015610e2257835173ffffffffffffffffffffffffffffffffffffffff815116845273ffffffffffffffffffffffffffffffffffffffff6020820151166020850152604081015160408501526060810151606085015250608083019250602084019350600181019050610db2565b509095945050505050565b5f82357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa1833603018112610e5f575f5ffd5b9190910192915050565b5f60208284031215610e79575f5ffd5b8135610c4081610a42565b5f5f83357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112610eb7575f5ffd5b83018035915067ffffffffffffffff821115610ed1575f5ffd5b602001915036819003821315610ab7575f5ffdfea164736f6c634300081e000a /// ``` #[rustfmt::skip] #[allow(clippy::all)] pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( - b"`\x80`@R4\x80\x15a\0\x0FW__\xFD[P`\x046\x10a\0)W_5`\xE0\x1C\x80c\xF8\x8C\xF6\xDB\x14a\0-W[__\xFD[a\0@a\0;6`\x04a\n\x96V[a\0fV[`@\x80Q\x94\x85R` \x85\x01\x93\x90\x93R\x91\x83\x01R\x15\x15``\x82\x01R`\x80\x01`@Q\x80\x91\x03\x90\xF3[____a\0u\x8B\x87\x87a\x07\x88V[\x7FZ(\xE96;\xB9B\xB69'\0b\xAAk\xB2\x95\xF44\xBC\xDF\xC4,\x97&{\xF0\x03\xF2r\x06\r\xC9\x87\x03a\x01\xD0W`@Q\x7Fp\xA0\x821\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x8B\x81\x16`\x04\x83\x01R\x8A\x16\x90cp\xA0\x821\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x01\x06W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x01*\x91\x90a\x0B[V[` \x8C\x01Q`@Q\x7F\xDDb\xED>\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x8D\x81\x16`\x04\x83\x01R\x91\x82\x16`$\x82\x01R\x91\x95P\x8A\x16\x90c\xDDb\xED>\x90`D\x01[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x01\xA5W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x01\xC9\x91\x90a\x0B[V[\x92Pa\x06\x0EV[\x7F\xAB\xEE;s7:\xCDX:\x13\t$\xAA\xD6\xDC8\xCF\xDCD\xBA\x05U\xBA\x94\xCE/\xF69\x80\xEA\x062\x87\x03a\x03\x93W`@Q\x7Fp\xA0\x821\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x8B\x81\x16`\x04\x83\x01R\x8A\x16\x90cp\xA0\x821\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x02aW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x02\x85\x91\x90a\x0B[V[`@\x80\x8D\x01Q` \x8E\x01Q\x91Q\x7F\xFE\xC9\rr\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x8E\x81\x16`\x04\x83\x01R\x92\x83\x16`$\x82\x01R\x92\x96P\x16\x90c\xFE\xC9\rr\x90`D\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x03\x03W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x03'\x91\x90a\x0BrV[a\x031W_a\x01\xC9V[`@\x8B\x81\x01Q\x90Q\x7F\xDDb\xED>\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x8C\x81\x16`\x04\x83\x01R\x91\x82\x16`$\x82\x01R\x90\x8A\x16\x90c\xDDb\xED>\x90`D\x01a\x01\x8AV[\x7FJ\xC9\x9A\xCE\x14\xEE\n^\xF92\xDC`\x9D\xF0\x94:\xB7\xAC\x16\xB7X64a/\x8D\xC3ZB\x89\xA6\xCE\x87\x03a\x05\xA7W`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R_\x91` \x80\x83\x01\x90\x806\x837\x01\x90PP\x90P\x89\x81_\x81Q\x81\x10a\x03\xEEWa\x03\xEEa\x0B\x98V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x83\x16` \x91\x82\x02\x92\x90\x92\x01\x01R`@\x80\x8E\x01Q\x90Q\x7F\x0FZn\xFA\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\x91\x16\x90c\x0FZn\xFA\x90a\x04U\x90\x8E\x90\x85\x90`\x04\x01a\x0B\xC5V[_`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x04oW=__>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x04\xB4\x91\x90\x81\x01\x90a\x0C>V[_\x81Q\x81\x10a\x04\xC5Wa\x04\xC5a\x0B\x98V[` \x02` \x01\x01Q\x94P\x8B`@\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\xFE\xC9\rr\x8C\x8E` \x01Q`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x054\x92\x91\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x83\x16\x81R\x91\x16` \x82\x01R`@\x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x05OW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05s\x91\x90a\x0BrV[a\x05}W_a\x05\x9FV[\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF[\x93PPa\x06\x0EV[`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x14`$\x82\x01R\x7Finvalid token source\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[\x82\x84\x11\x15a\x06\x1CW\x82a\x06\x1EV[\x83[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R\x91\x93P_\x91\x90\x81` \x01[`@\x80Q`\x80\x81\x01\x82R_\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01\x81\x90R``\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x068W\x90PP\x90P`@Q\x80`\x80\x01`@R\x80\x8Cs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x8Bs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x8A_\x03a\x06\xDBW\x84a\x06\xDDV[\x8A[\x81R` \x01\x89\x81RP\x81_\x81Q\x81\x10a\x06\xF8Wa\x06\xF8a\x0B\x98V[` \x02` \x01\x01\x81\x90RP\x8B` \x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c}\x10\xD1\x1F\x82`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x07@\x91\x90a\x0C\xEAV[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x07WW__\xFD[PZ\xF1\x92PPP\x80\x15a\x07hWP`\x01[a\x07tW_\x91Pa\x07yV[`\x01\x91P[P\x97P\x97P\x97P\x97\x93PPPPV[\x82Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x160\x14a\x08\x08W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x19`$\x82\x01R\x7Fincorrect calling context\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x06\x05V[_[\x81\x81\x10\x15a\toW_\x83\x83\x83\x81\x81\x10a\x08%Wa\x08%a\x0B\x98V[\x90P` \x02\x81\x01\x90a\x087\x91\x90a\r~V[a\x08E\x90` \x81\x01\x90a\r\xBAV[\x90P_\x84\x84\x84\x81\x81\x10a\x08ZWa\x08Za\x0B\x98V[\x90P` \x02\x81\x01\x90a\x08l\x91\x90a\r~V[` \x015\x90P6_\x86\x86\x86\x81\x81\x10a\x08\x86Wa\x08\x86a\x0B\x98V[\x90P` \x02\x81\x01\x90a\x08\x98\x91\x90a\r~V[a\x08\xA6\x90`@\x81\x01\x90a\r\xD5V[\x91P\x91P\x87` \x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x84s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\tCW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x1B`$\x82\x01R\x7FGPv2: forbidden interaction\0\0\0\0\0`D\x82\x01R`d\x01a\x06\x05V[`@Q\x81\x83\x827__\x83\x83\x87\x89Z\xF1a\t^W=__>=_\xFD[PP`\x01\x90\x93\x01\x92Pa\x08\n\x91PPV[PPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`A`\x04R`$_\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\t\xC5Wa\t\xC5a\tuV[`@R\x90V[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\n\x12Wa\n\x12a\tuV[`@R\x91\x90PV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\n;W__\xFD[PV[\x805a\nI\x81a\n\x1AV[\x91\x90PV[__\x83`\x1F\x84\x01\x12a\n^W__\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\nuW__\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a\n\x8FW__\xFD[\x92P\x92\x90PV[_______\x87\x89\x03a\x01\0\x81\x12\x15a\n\xAEW__\xFD[``\x81\x12\x15a\n\xBBW__\xFD[Pa\n\xC4a\t\xA2V[\x885a\n\xCF\x81a\n\x1AV[\x81R` \x89\x015a\n\xDF\x81a\n\x1AV[` \x82\x01R`@\x89\x015a\n\xF2\x81a\n\x1AV[`@\x82\x01R\x96Pa\x0B\x05``\x89\x01a\n>V[\x95Pa\x0B\x13`\x80\x89\x01a\n>V[\x94P`\xA0\x88\x015\x93P`\xC0\x88\x015\x92P`\xE0\x88\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0B=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x01 \x91\x90a\x0C\nV[` \x8D\x01Q`@Q\x7F\xDDb\xED>\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x8E\x81\x16`\x04\x83\x01R\x91\x82\x16`$\x82\x01R\x91\x96P\x8B\x16\x90c\xDDb\xED>\x90`D\x01[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x01\x9BW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x01\xBF\x91\x90a\x0C\nV[\x93Pa\x06\x04V[\x7F\xAB\xEE;s7:\xCDX:\x13\t$\xAA\xD6\xDC8\xCF\xDCD\xBA\x05U\xBA\x94\xCE/\xF69\x80\xEA\x062\x88\x03a\x03\x89W`@Q\x7Fp\xA0\x821\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x8C\x81\x16`\x04\x83\x01R\x8B\x16\x90cp\xA0\x821\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x02WW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x02{\x91\x90a\x0C\nV[`@\x80\x8E\x01Q` \x8F\x01Q\x91Q\x7F\xFE\xC9\rr\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x8F\x81\x16`\x04\x83\x01R\x92\x83\x16`$\x82\x01R\x92\x97P\x16\x90c\xFE\xC9\rr\x90`D\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x02\xF9W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x03\x1D\x91\x90a\x0C!V[a\x03'W_a\x01\xBFV[`@\x8C\x81\x01Q\x90Q\x7F\xDDb\xED>\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x8D\x81\x16`\x04\x83\x01R\x91\x82\x16`$\x82\x01R\x90\x8B\x16\x90c\xDDb\xED>\x90`D\x01a\x01\x80V[\x7FJ\xC9\x9A\xCE\x14\xEE\n^\xF92\xDC`\x9D\xF0\x94:\xB7\xAC\x16\xB7X64a/\x8D\xC3ZB\x89\xA6\xCE\x88\x03a\x05\x9DW`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R_\x91` \x80\x83\x01\x90\x806\x837\x01\x90PP\x90P\x8A\x81_\x81Q\x81\x10a\x03\xE4Wa\x03\xE4a\x0CGV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x83\x16` \x91\x82\x02\x92\x90\x92\x01\x01R`@\x80\x8F\x01Q\x90Q\x7F\x0FZn\xFA\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\x91\x16\x90c\x0FZn\xFA\x90a\x04K\x90\x8F\x90\x85\x90`\x04\x01a\x0CtV[_`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x04eW=__>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x04\xAA\x91\x90\x81\x01\x90a\x0C\xEDV[_\x81Q\x81\x10a\x04\xBBWa\x04\xBBa\x0CGV[` \x02` \x01\x01Q\x95P\x8C`@\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\xFE\xC9\rr\x8D\x8F` \x01Q`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x05*\x92\x91\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x83\x16\x81R\x91\x16` \x82\x01R`@\x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x05EW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05i\x91\x90a\x0C!V[a\x05sW_a\x05\x95V[\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF[\x94PPa\x06\x04V[`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x14`$\x82\x01R\x7Finvalid token source\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[\x83\x85\x11\x15a\x06\x12W\x83a\x06\x14V[\x84[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R\x91\x94P_\x91\x90\x81` \x01[`@\x80Q`\x80\x81\x01\x82R_\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01\x81\x90R``\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x06.W\x90PP\x90P`@Q\x80`\x80\x01`@R\x80\x8Ds\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x8Cs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x8B_\x03a\x06\xD1W\x85a\x06\xD3V[\x8B[\x81R` \x01\x8A\x81RP\x81_\x81Q\x81\x10a\x06\xEEWa\x06\xEEa\x0CGV[` \x02` \x01\x01\x81\x90RP\x8C` \x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c}\x10\xD1\x1F\x82`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x076\x91\x90a\r\x99V[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x07MW__\xFD[PZ\xF1\x92PPP\x80\x15a\x07^WP`\x01[a\x07\x9BW=\x80\x80\x15a\x07\x8BW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x07\x90V[``\x91P[P_\x93P\x91Pa\x07\xA0V[`\x01\x92P[P\x97P\x97P\x97P\x97P\x97\x92PPPV[\x82Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x160\x14a\x080W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x19`$\x82\x01R\x7Fincorrect calling context\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05\xFBV[_[\x81\x81\x10\x15a\t\x97W_\x83\x83\x83\x81\x81\x10a\x08MWa\x08Ma\x0CGV[\x90P` \x02\x81\x01\x90a\x08_\x91\x90a\x0E-V[a\x08m\x90` \x81\x01\x90a\x0EiV[\x90P_\x84\x84\x84\x81\x81\x10a\x08\x82Wa\x08\x82a\x0CGV[\x90P` \x02\x81\x01\x90a\x08\x94\x91\x90a\x0E-V[` \x015\x90P6_\x86\x86\x86\x81\x81\x10a\x08\xAEWa\x08\xAEa\x0CGV[\x90P` \x02\x81\x01\x90a\x08\xC0\x91\x90a\x0E-V[a\x08\xCE\x90`@\x81\x01\x90a\x0E\x84V[\x91P\x91P\x87` \x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x84s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\tkW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x1B`$\x82\x01R\x7FGPv2: forbidden interaction\0\0\0\0\0`D\x82\x01R`d\x01a\x05\xFBV[`@Q\x81\x83\x827__\x83\x83\x87\x89Z\xF1a\t\x86W=__>=_\xFD[PP`\x01\x90\x93\x01\x92Pa\x082\x91PPV[PPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`A`\x04R`$_\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\t\xEDWa\t\xEDa\t\x9DV[`@R\x90V[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\n:Wa\n:a\t\x9DV[`@R\x91\x90PV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\ncW__\xFD[PV[\x805a\nq\x81a\nBV[\x91\x90PV[__\x83`\x1F\x84\x01\x12a\n\x86W__\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\n\x9DW__\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a\n\xB7W__\xFD[\x92P\x92\x90PV[_______\x87\x89\x03a\x01\0\x81\x12\x15a\n\xD6W__\xFD[``\x81\x12\x15a\n\xE3W__\xFD[Pa\n\xECa\t\xCAV[\x885a\n\xF7\x81a\nBV[\x81R` \x89\x015a\x0B\x07\x81a\nBV[` \x82\x01R`@\x89\x015a\x0B\x1A\x81a\nBV[`@\x82\x01R\x96Pa\x0B-``\x89\x01a\nfV[\x95Pa\x0B;`\x80\x89\x01a\nfV[\x94P`\xA0\x88\x015\x93P`\xC0\x88\x015\x92P`\xE0\x88\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0BdW__\xFD[a\x0Bp\x8A\x82\x8B\x01a\nvV[\x98\x9B\x97\x9AP\x95\x98P\x93\x96\x92\x95\x92\x93PPPV[\x85\x81R\x84` \x82\x01R\x83`@\x82\x01R\x82\x15\x15``\x82\x01R`\xA0`\x80\x82\x01R_\x82Q\x80`\xA0\x84\x01R_[\x81\x81\x10\x15a\x0B\xC9W` \x81\x86\x01\x81\x01Q`\xC0\x86\x84\x01\x01R\x01a\x0B\xACV[P_`\xC0\x82\x85\x01\x01R`\xC0\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x83\x01\x16\x84\x01\x01\x91PP\x96\x95PPPPPPV[_` \x82\x84\x03\x12\x15a\x0C\x1AW__\xFD[PQ\x91\x90PV[_` \x82\x84\x03\x12\x15a\x0C1W__\xFD[\x81Q\x80\x15\x15\x81\x14a\x0C@W__\xFD[\x93\x92PPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`2`\x04R`$_\xFD[_`@\x82\x01s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16\x83R`@` \x84\x01R\x80\x84Q\x80\x83R``\x85\x01\x91P` \x86\x01\x92P_[\x81\x81\x10\x15a\x0C\xE1W\x83Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x83R` \x93\x84\x01\x93\x90\x92\x01\x91`\x01\x01a\x0C\xADV[P\x90\x96\x95PPPPPPV[_` \x82\x84\x03\x12\x15a\x0C\xFDW__\xFD[\x81Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\r\x13W__\xFD[\x82\x01`\x1F\x81\x01\x84\x13a\r#W__\xFD[\x80Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\r=Wa\r=a\t\x9DV[\x80`\x05\x1Ba\rM` \x82\x01a\t\xF3V[\x91\x82R` \x81\x84\x01\x81\x01\x92\x90\x81\x01\x90\x87\x84\x11\x15a\rhW__\xFD[` \x85\x01\x94P[\x83\x85\x10\x15a\r\x8EW\x84Q\x80\x83R` \x95\x86\x01\x95\x90\x93P\x90\x91\x01\x90a\roV[\x97\x96PPPPPPPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R_\x91\x84\x01\x90`@\x84\x01\x90\x83[\x81\x81\x10\x15a\x0E\"W\x83Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81Q\x16\x84Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF` \x82\x01Q\x16` \x85\x01R`@\x81\x01Q`@\x85\x01R``\x81\x01Q``\x85\x01RP`\x80\x83\x01\x92P` \x84\x01\x93P`\x01\x81\x01\x90Pa\r\xB2V[P\x90\x95\x94PPPPPV[_\x825\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA1\x836\x03\x01\x81\x12a\x0E_W__\xFD[\x91\x90\x91\x01\x92\x91PPV[_` \x82\x84\x03\x12\x15a\x0EyW__\xFD[\x815a\x0C@\x81a\nBV[__\x835\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\x846\x03\x01\x81\x12a\x0E\xB7W__\xFD[\x83\x01\x805\x91Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x0E\xD1W__\xFD[` \x01\x91P6\x81\x90\x03\x82\x13\x15a\n\xB7W__\xFD\xFE\xA1dsolcC\0\x08\x1E\0\n", ); #[derive(Default, Debug, PartialEq, Eq, Hash)] /**```solidity @@ -612,7 +617,7 @@ pub mod Balances { #[derive(Default, Debug, PartialEq, Eq, Hash)] /**Function with signature `balance((address,address,address),address,address,uint256,bytes32,(address,uint256,bytes)[])` and selector `0xf88cf6db`. ```solidity - function balance(Contracts memory contracts, address trader, address token, uint256 amount, bytes32 source, Interaction[] memory interactions) external returns (uint256 tokenBalance, uint256 allowance, uint256 effectiveBalance, bool canTransfer); + function balance(Contracts memory contracts, address trader, address token, uint256 amount, bytes32 source, Interaction[] memory interactions) external returns (uint256 tokenBalance, uint256 allowance, uint256 effectiveBalance, bool canTransfer, bytes memory transferRevertReason); ```*/ #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] @@ -646,6 +651,8 @@ pub mod Balances { pub effectiveBalance: alloy_sol_types::private::primitives::aliases::U256, #[allow(missing_docs)] pub canTransfer: bool, + #[allow(missing_docs)] + pub transferRevertReason: alloy_sol_types::private::Bytes, } #[allow( non_camel_case_types, @@ -721,6 +728,7 @@ pub mod Balances { alloy_sol_types::sol_data::Uint<256>, alloy_sol_types::sol_data::Uint<256>, alloy_sol_types::sol_data::Bool, + alloy_sol_types::sol_data::Bytes, ); #[doc(hidden)] type UnderlyingRustTuple<'a> = ( @@ -728,6 +736,7 @@ pub mod Balances { alloy_sol_types::private::primitives::aliases::U256, alloy_sol_types::private::primitives::aliases::U256, bool, + alloy_sol_types::private::Bytes, ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] @@ -747,6 +756,7 @@ pub mod Balances { value.allowance, value.effectiveBalance, value.canTransfer, + value.transferRevertReason, ) } } @@ -759,6 +769,7 @@ pub mod Balances { allowance: tuple.1, effectiveBalance: tuple.2, canTransfer: tuple.3, + transferRevertReason: tuple.4, } } } @@ -778,6 +789,9 @@ pub mod Balances { ::tokenize( &self.canTransfer, ), + ::tokenize( + &self.transferRevertReason, + ), ) } } @@ -798,6 +812,7 @@ pub mod Balances { alloy_sol_types::sol_data::Uint<256>, alloy_sol_types::sol_data::Uint<256>, alloy_sol_types::sol_data::Bool, + alloy_sol_types::sol_data::Bytes, ); type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; @@ -1186,55 +1201,51 @@ use { pub const fn deployment_info(chain_id: u64) -> Option<(Address, Option)> { match chain_id { 1u64 => Some(( - ::alloy_primitives::address!("0x3e8C6De9510e7ECad902D005DE3Ab52f35cF4f1b"), + ::alloy_primitives::address!("0x88b4B74082BffB2976C306CB3f7E9093AE48B94F"), None, )), 10u64 => Some(( - ::alloy_primitives::address!("0x3e8C6De9510e7ECad902D005DE3Ab52f35cF4f1b"), + ::alloy_primitives::address!("0x88b4B74082BffB2976C306CB3f7E9093AE48B94F"), None, )), 56u64 => Some(( - ::alloy_primitives::address!("0x3e8C6De9510e7ECad902D005DE3Ab52f35cF4f1b"), + ::alloy_primitives::address!("0x88b4B74082BffB2976C306CB3f7E9093AE48B94F"), None, )), 100u64 => Some(( - ::alloy_primitives::address!("0x3e8C6De9510e7ECad902D005DE3Ab52f35cF4f1b"), + ::alloy_primitives::address!("0x88b4B74082BffB2976C306CB3f7E9093AE48B94F"), None, )), 137u64 => Some(( - ::alloy_primitives::address!("0x3e8C6De9510e7ECad902D005DE3Ab52f35cF4f1b"), - None, - )), - 232u64 => Some(( - ::alloy_primitives::address!("0x3e8C6De9510e7ECad902D005DE3Ab52f35cF4f1b"), + ::alloy_primitives::address!("0x88b4B74082BffB2976C306CB3f7E9093AE48B94F"), None, )), 8453u64 => Some(( - ::alloy_primitives::address!("0x3e8C6De9510e7ECad902D005DE3Ab52f35cF4f1b"), + ::alloy_primitives::address!("0x88b4B74082BffB2976C306CB3f7E9093AE48B94F"), None, )), 9745u64 => Some(( - ::alloy_primitives::address!("0x3e8C6De9510e7ECad902D005DE3Ab52f35cF4f1b"), + ::alloy_primitives::address!("0x88b4B74082BffB2976C306CB3f7E9093AE48B94F"), None, )), 42161u64 => Some(( - ::alloy_primitives::address!("0x3e8C6De9510e7ECad902D005DE3Ab52f35cF4f1b"), + ::alloy_primitives::address!("0x88b4B74082BffB2976C306CB3f7E9093AE48B94F"), None, )), 43114u64 => Some(( - ::alloy_primitives::address!("0x3e8C6De9510e7ECad902D005DE3Ab52f35cF4f1b"), + ::alloy_primitives::address!("0x88b4B74082BffB2976C306CB3f7E9093AE48B94F"), None, )), 57073u64 => Some(( - ::alloy_primitives::address!("0x3e8C6De9510e7ECad902D005DE3Ab52f35cF4f1b"), + ::alloy_primitives::address!("0x88b4B74082BffB2976C306CB3f7E9093AE48B94F"), None, )), 59144u64 => Some(( - ::alloy_primitives::address!("0x361350f708f7c0c63c8a505226592c3e5d1faa29"), + ::alloy_primitives::address!("0x88b4B74082BffB2976C306CB3f7E9093AE48B94F"), None, )), 11155111u64 => Some(( - ::alloy_primitives::address!("0x3e8C6De9510e7ECad902D005DE3Ab52f35cF4f1b"), + ::alloy_primitives::address!("0x88b4B74082BffB2976C306CB3f7E9093AE48B94F"), None, )), _ => None, diff --git a/contracts/generated/contracts-generated/cowswapethflow/src/lib.rs b/contracts/generated/contracts-generated/cowswapethflow/src/lib.rs index eef46097a3..a95fc944a7 100644 --- a/contracts/generated/contracts-generated/cowswapethflow/src/lib.rs +++ b/contracts/generated/contracts-generated/cowswapethflow/src/lib.rs @@ -5833,10 +5833,6 @@ pub const fn deployment_info(chain_id: u64) -> Option<(Address, Option)> { ::alloy_primitives::address!("0x04501b9b1d52e67f6862d157e00d13419d2d6e95"), Some(71296258u64), )), - 232u64 => Some(( - ::alloy_primitives::address!("0xFb337f8a725A142f65fb9ff4902d41cc901de222"), - Some(3007173u64), - )), 8453u64 => Some(( ::alloy_primitives::address!("0x3C3eA1829891BC9bEC3d06A81d5d169e52a415e3"), Some(21490258u64), diff --git a/contracts/generated/contracts-generated/gpv2allowlistauthentication/src/lib.rs b/contracts/generated/contracts-generated/gpv2allowlistauthentication/src/lib.rs index 68a54ea295..4aafc4e0f0 100644 --- a/contracts/generated/contracts-generated/gpv2allowlistauthentication/src/lib.rs +++ b/contracts/generated/contracts-generated/gpv2allowlistauthentication/src/lib.rs @@ -2753,10 +2753,6 @@ pub const fn deployment_info(chain_id: u64) -> Option<(Address, Option)> { ::alloy_primitives::address!("0x2c4c28DDBdAc9C5E7055b4C863b72eA0149D8aFE"), Some(45854728u64), )), - 232u64 => Some(( - ::alloy_primitives::address!("0x2c4c28DDBdAc9C5E7055b4C863b72eA0149D8aFE"), - Some(2612937u64), - )), 8453u64 => Some(( ::alloy_primitives::address!("0x2c4c28DDBdAc9C5E7055b4C863b72eA0149D8aFE"), Some(21407137u64), diff --git a/contracts/generated/contracts-generated/gpv2settlement/src/lib.rs b/contracts/generated/contracts-generated/gpv2settlement/src/lib.rs index 1bbdf44f2a..edadccd68a 100644 --- a/contracts/generated/contracts-generated/gpv2settlement/src/lib.rs +++ b/contracts/generated/contracts-generated/gpv2settlement/src/lib.rs @@ -6162,10 +6162,6 @@ pub const fn deployment_info(chain_id: u64) -> Option<(Address, Option)> { ::alloy_primitives::address!("0x9008D19f58AAbD9eD0D60971565AA8510560ab41"), Some(45859743u64), )), - 232u64 => Some(( - ::alloy_primitives::address!("0x9008D19f58AAbD9eD0D60971565AA8510560ab41"), - Some(2621745u64), - )), 8453u64 => Some(( ::alloy_primitives::address!("0x9008D19f58AAbD9eD0D60971565AA8510560ab41"), Some(21407238u64), diff --git a/contracts/generated/contracts-generated/hookstrampoline/src/lib.rs b/contracts/generated/contracts-generated/hookstrampoline/src/lib.rs index bcc0cd0566..b6002f94ac 100644 --- a/contracts/generated/contracts-generated/hookstrampoline/src/lib.rs +++ b/contracts/generated/contracts-generated/hookstrampoline/src/lib.rs @@ -1271,10 +1271,6 @@ pub const fn deployment_info(chain_id: u64) -> Option<(Address, Option)> { ::alloy_primitives::address!("0x60Bf78233f48eC42eE3F101b9a05eC7878728006"), None, )), - 232u64 => Some(( - ::alloy_primitives::address!("0x60Bf78233f48eC42eE3F101b9a05eC7878728006"), - None, - )), 8453u64 => Some(( ::alloy_primitives::address!("0x60Bf78233f48eC42eE3F101b9a05eC7878728006"), None, diff --git a/contracts/generated/contracts-generated/iuniswapv3factory/src/lib.rs b/contracts/generated/contracts-generated/iuniswapv3factory/src/lib.rs index eb6d721593..19886c69ec 100644 --- a/contracts/generated/contracts-generated/iuniswapv3factory/src/lib.rs +++ b/contracts/generated/contracts-generated/iuniswapv3factory/src/lib.rs @@ -2177,10 +2177,6 @@ pub const fn deployment_info(chain_id: u64) -> Option<(Address, Option)> { ::alloy_primitives::address!("0x1F98431c8aD98523631AE4a59f267346ea31F984"), None, )), - 232u64 => Some(( - ::alloy_primitives::address!("0xc3A5b857Ba82a2586A45a8B59ECc3AA50Bc3D0e3"), - None, - )), 8453u64 => Some(( ::alloy_primitives::address!("0x33128a8fC17869897dcE68Ed026d694621f6FDfD"), None, diff --git a/contracts/generated/contracts-generated/signatures/src/lib.rs b/contracts/generated/contracts-generated/signatures/src/lib.rs index 1f94bce242..c787ca99df 100644 --- a/contracts/generated/contracts-generated/signatures/src/lib.rs +++ b/contracts/generated/contracts-generated/signatures/src/lib.rs @@ -1113,10 +1113,6 @@ pub const fn deployment_info(chain_id: u64) -> Option<(Address, Option)> { ::alloy_primitives::address!("0x8262d639c38470F38d2eff15926F7071c28057Af"), None, )), - 232u64 => Some(( - ::alloy_primitives::address!("0x8262d639c38470F38d2eff15926F7071c28057Af"), - None, - )), 8453u64 => Some(( ::alloy_primitives::address!("0x8262d639c38470F38d2eff15926F7071c28057Af"), None, diff --git a/contracts/generated/contracts-generated/uniswapv3quoterv2/src/lib.rs b/contracts/generated/contracts-generated/uniswapv3quoterv2/src/lib.rs index f9cb522cbb..f9d342e7ed 100644 --- a/contracts/generated/contracts-generated/uniswapv3quoterv2/src/lib.rs +++ b/contracts/generated/contracts-generated/uniswapv3quoterv2/src/lib.rs @@ -2902,10 +2902,6 @@ pub const fn deployment_info(chain_id: u64) -> Option<(Address, Option)> { ::alloy_primitives::address!("0x61fFE014bA17989E743c5F6cB21bF9697530B21e"), None, )), - 232u64 => Some(( - ::alloy_primitives::address!("0x1eEA2B790Dc527c5a4cd3d4f3ae8A2DDB65B2af1"), - None, - )), 8453u64 => Some(( ::alloy_primitives::address!("0x3d4e44Eb1374240CE5F1B871ab261CD16335B76a"), None, diff --git a/contracts/generated/contracts-generated/uniswapv3swaprouterv2/src/lib.rs b/contracts/generated/contracts-generated/uniswapv3swaprouterv2/src/lib.rs index 1870e65c85..0bb24e41c1 100644 --- a/contracts/generated/contracts-generated/uniswapv3swaprouterv2/src/lib.rs +++ b/contracts/generated/contracts-generated/uniswapv3swaprouterv2/src/lib.rs @@ -1015,10 +1015,6 @@ pub const fn deployment_info(chain_id: u64) -> Option<(Address, Option)> { ::alloy_primitives::address!("0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45"), None, )), - 232u64 => Some(( - ::alloy_primitives::address!("0x6ddD32cd941041D8b61df213B9f515A7D288Dc13"), - None, - )), 8453u64 => Some(( ::alloy_primitives::address!("0x2626664c2603336E57B271c5C0b26F421741e481"), None, diff --git a/contracts/generated/contracts-generated/weth9/src/lib.rs b/contracts/generated/contracts-generated/weth9/src/lib.rs index e1db1eefad..7e647d9e38 100644 --- a/contracts/generated/contracts-generated/weth9/src/lib.rs +++ b/contracts/generated/contracts-generated/weth9/src/lib.rs @@ -3239,10 +3239,6 @@ pub const fn deployment_info(chain_id: u64) -> Option<(Address, Option)> { ::alloy_primitives::address!("0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270"), None, )), - 232u64 => Some(( - ::alloy_primitives::address!("0x6bDc36E20D267Ff0dd6097799f82e78907105e2F"), - None, - )), 8453u64 => Some(( ::alloy_primitives::address!("0x4200000000000000000000000000000000000006"), None, diff --git a/contracts/solidity/Balances.sol b/contracts/solidity/Balances.sol index c7d5a2d5a0..2ab9afe006 100644 --- a/contracts/solidity/Balances.sol +++ b/contracts/solidity/Balances.sol @@ -38,6 +38,8 @@ contract Balances { /// contract when executing a trade. /// @return canTransfer - Returns whether or not the transfer into the /// settlement contract for the specified amount would succeed. + /// @return transferRevertReason - The revert reason bytes if the transfer + /// failed, or empty bytes if it succeeded. function balance( Contracts memory contracts, address trader, @@ -49,7 +51,8 @@ contract Balances { uint256 tokenBalance, uint256 allowance, uint256 effectiveBalance, - bool canTransfer + bool canTransfer, + bytes memory transferRevertReason ) { // Execute the interactions within the current context. This ensures // that any pre-interactions that setup balances and/or allowances @@ -96,8 +99,9 @@ contract Balances { try contracts.vaultRelayer.transferFromAccounts(transfers) { canTransfer = true; } - catch { + catch (bytes memory reason) { canTransfer = false; + transferRevertReason = reason; } } diff --git a/contracts/src/main.rs b/contracts/src/main.rs index 34ec14364c..1f4ed17afa 100644 --- a/contracts/src/main.rs +++ b/contracts/src/main.rs @@ -332,7 +332,6 @@ fn build_module() -> Module { BNB => "0x78D78E420Da98ad378D7799bE8f4AF69033EB077", OPTIMISM => "0x61fFE014bA17989E743c5F6cB21bF9697530B21e", POLYGON => "0x61fFE014bA17989E743c5F6cB21bF9697530B21e", - LENS => "0x1eEA2B790Dc527c5a4cd3d4f3ae8A2DDB65B2af1", LINEA => "0x42bE4D6527829FeFA1493e1fb9F3676d2425C3C1", PLASMA => "0xaa52bB8110fE38D0d2d2AF0B85C3A3eE622CA455", INK => "0x96b572D2d880cf2Fa2563651BD23ADE6f5516652", @@ -346,7 +345,6 @@ fn build_module() -> Module { BASE => "0x2626664c2603336E57B271c5C0b26F421741e481", AVALANCHE => "0xbb00FF08d01D300023C629E8fFfFcb65A5a578cE", BNB => "0xB971eF87ede563556b2ED4b1C0b0019111Dd85d2", - LENS => "0x6ddD32cd941041D8b61df213B9f515A7D288Dc13", LINEA => "0x3d4e44Eb1374240CE5F1B871ab261CD16335B76a", PLASMA => "0x807F4E281B7A3B324825C64ca53c69F0b418dE40", INK => "0x177778F19E89dD1012BdBe603F144088A95C4B53", @@ -361,7 +359,6 @@ fn build_module() -> Module { BNB => "0xdB1d10011AD0Ff90774D0C6Bb92e5C5c8b4461F7", OPTIMISM => "0x1F98431c8aD98523631AE4a59f267346ea31F984", POLYGON => "0x1F98431c8aD98523631AE4a59f267346ea31F984", - LENS => "0xc3A5b857Ba82a2586A45a8B59ECc3AA50Bc3D0e3", LINEA => "0x31FAfd4889FA1269F7a13A66eE0fB458f27D72A9", PLASMA => "0xcb2436774C3e191c85056d248EF4260ce5f27A9D", INK => "0x640887A9ba3A9C53Ed27D0F7e8246A4F933f3424", @@ -376,7 +373,6 @@ fn build_module() -> Module { BNB => "0x60Bf78233f48eC42eE3F101b9a05eC7878728006", OPTIMISM => "0x60Bf78233f48eC42eE3F101b9a05eC7878728006", POLYGON => "0x60Bf78233f48eC42eE3F101b9a05eC7878728006", - LENS => "0x60Bf78233f48eC42eE3F101b9a05eC7878728006", LINEA => "0x60bf78233f48ec42ee3f101b9a05ec7878728006", PLASMA => "0x60Bf78233f48eC42eE3F101b9a05eC7878728006", INK => "0x60Bf78233f48eC42eE3F101b9a05eC7878728006", @@ -391,7 +387,6 @@ fn build_module() -> Module { BNB => ("0x04501b9b1d52e67f6862d157e00d13419d2d6e95", 48411237), OPTIMISM => ("0x04501b9b1d52e67f6862d157e00d13419d2d6e95", 134607215), POLYGON => ("0x04501b9b1d52e67f6862d157e00d13419d2d6e95", 71296258), - LENS => ("0xFb337f8a725A142f65fb9ff4902d41cc901de222", 3007173), LINEA => ("0x04501b9b1d52e67f6862d157e00d13419d2d6e95", 24522097), PLASMA => ("0x04501b9b1d52e67f6862d157e00d13419d2d6e95", 3521855), ])) @@ -456,7 +451,6 @@ fn build_module() -> Module { BNB => ("0x2c4c28DDBdAc9C5E7055b4C863b72eA0149D8aFE", 48173639), OPTIMISM => ("0x2c4c28DDBdAc9C5E7055b4C863b72eA0149D8aFE", 134254466), POLYGON => ("0x2c4c28DDBdAc9C5E7055b4C863b72eA0149D8aFE", 45854728), - LENS => ("0x2c4c28DDBdAc9C5E7055b4C863b72eA0149D8aFE", 2612937), LINEA => ("0x2c4c28DDBdAc9C5E7055b4C863b72eA0149D8aFE", 24333100), PLASMA => ("0x2c4c28DDBdAc9C5E7055b4C863b72eA0149D8aFE", 3439709), INK => ("0x2c4c28DDBdAc9C5E7055b4C863b72eA0149D8aFE", 34436840), @@ -472,7 +466,6 @@ fn build_module() -> Module { BNB => ("0x9008D19f58AAbD9eD0D60971565AA8510560ab41", 48173641), OPTIMISM => ("0x9008D19f58AAbD9eD0D60971565AA8510560ab41", 134254624), POLYGON => ("0x9008D19f58AAbD9eD0D60971565AA8510560ab41", 45859743), - LENS => ("0x9008D19f58AAbD9eD0D60971565AA8510560ab41", 2621745), LINEA => ("0x9008D19f58AAbD9eD0D60971565AA8510560ab41", 24333100), PLASMA => ("0x9008D19f58AAbD9eD0D60971565AA8510560ab41", 3439711), INK => ("0x9008D19f58AAbD9eD0D60971565AA8510560ab41", 34436849), @@ -487,7 +480,6 @@ fn build_module() -> Module { BNB => "0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c", OPTIMISM => "0x4200000000000000000000000000000000000006", POLYGON => "0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270", - LENS => "0x6bDc36E20D267Ff0dd6097799f82e78907105e2F", LINEA => "0xe5d7c2a44ffddf6b295a15c148167daaaf5cf34f", PLASMA => "0x6100E367285b01F48D07953803A2d8dCA5D19873", INK => "0x4200000000000000000000000000000000000006", @@ -538,7 +530,6 @@ fn build_module() -> Module { BNB => "0x8262d639c38470F38d2eff15926F7071c28057Af", OPTIMISM => "0x8262d639c38470F38d2eff15926F7071c28057Af", POLYGON => "0x8262d639c38470F38d2eff15926F7071c28057Af", - LENS => "0x8262d639c38470F38d2eff15926F7071c28057Af", GNOSIS => "0x8262d639c38470F38d2eff15926F7071c28057Af", SEPOLIA => "0x8262d639c38470F38d2eff15926F7071c28057Af", LINEA => "0xf6E57e72F7dB3D9A51a8B4c149C00475b94A37e4", @@ -546,19 +537,18 @@ fn build_module() -> Module { INK => "0x8262d639c38470F38d2eff15926F7071c28057Af", ])) .add_contract(Contract::new("Balances").with_networks(networks![ - MAINNET => "0x3e8C6De9510e7ECad902D005DE3Ab52f35cF4f1b", - ARBITRUM_ONE => "0x3e8C6De9510e7ECad902D005DE3Ab52f35cF4f1b", - BASE => "0x3e8C6De9510e7ECad902D005DE3Ab52f35cF4f1b", - AVALANCHE => "0x3e8C6De9510e7ECad902D005DE3Ab52f35cF4f1b", - BNB => "0x3e8C6De9510e7ECad902D005DE3Ab52f35cF4f1b", - OPTIMISM => "0x3e8C6De9510e7ECad902D005DE3Ab52f35cF4f1b", - POLYGON => "0x3e8C6De9510e7ECad902D005DE3Ab52f35cF4f1b", - LENS => "0x3e8C6De9510e7ECad902D005DE3Ab52f35cF4f1b", - GNOSIS => "0x3e8C6De9510e7ECad902D005DE3Ab52f35cF4f1b", - SEPOLIA => "0x3e8C6De9510e7ECad902D005DE3Ab52f35cF4f1b", - PLASMA => "0x3e8C6De9510e7ECad902D005DE3Ab52f35cF4f1b", - LINEA => "0x361350f708f7c0c63c8a505226592c3e5d1faa29", - INK => "0x3e8C6De9510e7ECad902D005DE3Ab52f35cF4f1b", + MAINNET => "0x88b4B74082BffB2976C306CB3f7E9093AE48B94F", + ARBITRUM_ONE => "0x88b4B74082BffB2976C306CB3f7E9093AE48B94F", + BASE => "0x88b4B74082BffB2976C306CB3f7E9093AE48B94F", + AVALANCHE => "0x88b4B74082BffB2976C306CB3f7E9093AE48B94F", + BNB => "0x88b4B74082BffB2976C306CB3f7E9093AE48B94F", + OPTIMISM => "0x88b4B74082BffB2976C306CB3f7E9093AE48B94F", + POLYGON => "0x88b4B74082BffB2976C306CB3f7E9093AE48B94F", + GNOSIS => "0x88b4B74082BffB2976C306CB3f7E9093AE48B94F", + SEPOLIA => "0x88b4B74082BffB2976C306CB3f7E9093AE48B94F", + PLASMA => "0x88b4B74082BffB2976C306CB3f7E9093AE48B94F", + LINEA => "0x88b4B74082BffB2976C306CB3f7E9093AE48B94F", + INK => "0x88b4B74082BffB2976C306CB3f7E9093AE48B94F", ])), ) } diff --git a/contracts/src/networks.rs b/contracts/src/networks.rs index 4af659aab0..1d8948644b 100644 --- a/contracts/src/networks.rs +++ b/contracts/src/networks.rs @@ -7,7 +7,6 @@ pub const POLYGON: u64 = 137; pub const AVALANCHE: u64 = 43114; pub const BNB: u64 = 56; pub const OPTIMISM: u64 = 10; -pub const LENS: u64 = 232; pub const LINEA: u64 = 59144; pub const PLASMA: u64 = 9745; pub const INK: u64 = 57073; diff --git a/crates/account-balances/src/lib.rs b/crates/account-balances/src/lib.rs index 4979e4c652..ed33acaf37 100644 --- a/crates/account-balances/src/lib.rs +++ b/crates/account-balances/src/lib.rs @@ -42,7 +42,7 @@ impl Query { pub enum TransferSimulationError { InsufficientAllowance, InsufficientBalance, - TransferFailed, + TransferFailed(Vec), Other(anyhow::Error), } @@ -176,13 +176,14 @@ impl BalanceSimulator { .call() .await?; - let (token_balance, allowance, effective_balance, can_transfer) = + let (token_balance, allowance, effective_balance, can_transfer, transfer_revert_reason) = <( sol_data::Uint<256>, sol_data::Uint<256>, sol_data::Uint<256>, sol_data::Bool, - )>::abi_decode(&response.0) + sol_data::Bytes, + )>::abi_decode_params(&response.0) .map_err(|err| { tracing::error!(?err, "failed to decode balance response"); alloy_contract::Error::AbiError(alloy_dyn_abi::Error::SolTypes(err)) @@ -193,6 +194,7 @@ impl BalanceSimulator { allowance: U256::from_le_slice(&allowance.as_le_bytes()), effective_balance: U256::from_le_slice(&effective_balance.as_le_bytes()), can_transfer, + transfer_revert_reason: transfer_revert_reason.to_vec(), }; tracing::trace!( @@ -214,6 +216,7 @@ pub struct Simulation { pub allowance: U256, pub effective_balance: U256, pub can_transfer: bool, + pub transfer_revert_reason: Vec, } #[derive(Debug)] diff --git a/crates/account-balances/src/simulation.rs b/crates/account-balances/src/simulation.rs index b98166fccb..0c0378601b 100644 --- a/crates/account-balances/src/simulation.rs +++ b/crates/account-balances/src/simulation.rs @@ -156,7 +156,9 @@ impl BalanceFetching for Balances { return Err(TransferSimulationError::InsufficientAllowance); } if !simulation.can_transfer { - return Err(TransferSimulationError::TransferFailed); + return Err(TransferSimulationError::TransferFailed( + simulation.transfer_revert_reason, + )); } Ok(()) diff --git a/crates/e2e/tests/e2e/banned_users.rs b/crates/e2e/tests/e2e/banned_users.rs index b580d0d337..b1ee2c6bfd 100644 --- a/crates/e2e/tests/e2e/banned_users.rs +++ b/crates/e2e/tests/e2e/banned_users.rs @@ -24,9 +24,9 @@ async fn forked_node_mainnet_single_limit_order() { } /// The block number from which we will fetch state for the forked tests. -const FORK_BLOCK_MAINNET: u64 = 23112197; +const FORK_BLOCK_MAINNET: u64 = 24843565; /// DAI whale address as per [FORK_BLOCK_MAINNET]. -const DAI_WHALE_MAINNET: Address = address!("762d46904B93a1EEDBfF2fD50445CB8ffA41F9FB"); +const DAI_WHALE_MAINNET: Address = address!("28c6c06298d514db089934071355e5743bf21d60"); const BANNED_USER: Address = address!("7F367cC41522cE07553e823bf3be79A889DEbe1B"); async fn forked_mainnet_onchain_banned_user_test(web3: Web3) { diff --git a/crates/e2e/tests/e2e/limit_orders.rs b/crates/e2e/tests/e2e/limit_orders.rs index 2b8ee84858..1ba0d40c74 100644 --- a/crates/e2e/tests/e2e/limit_orders.rs +++ b/crates/e2e/tests/e2e/limit_orders.rs @@ -101,7 +101,7 @@ async fn local_node_buy_order_with_haircut() { } /// The block number from which we will fetch state for the forked tests. -const FORK_BLOCK_MAINNET: u64 = 23112197; +const FORK_BLOCK_MAINNET: u64 = 24843565; /// USDC whale address as per [FORK_BLOCK_MAINNET]. const USDC_WHALE_MAINNET: Address = address!("28c6c06298d514db089934071355e5743bf21d60"); @@ -117,7 +117,7 @@ async fn forked_node_mainnet_single_limit_order() { .await; } -const FORK_BLOCK_GNOSIS: u64 = 41502478; +const FORK_BLOCK_GNOSIS: u64 = 45588623; /// USDC whale address as per [FORK_BLOCK_GNOSIS]. const USDC_WHALE_GNOSIS: Address = address!("d4A39d219ADB43aB00739DC5D876D98Fdf0121Bf"); diff --git a/crates/e2e/tests/e2e/liquidity.rs b/crates/e2e/tests/e2e/liquidity.rs index 878397d3d3..5133e5e4e1 100644 --- a/crates/e2e/tests/e2e/liquidity.rs +++ b/crates/e2e/tests/e2e/liquidity.rs @@ -36,7 +36,7 @@ use { }; /// The block number from which we will fetch state for the forked tests. -pub const FORK_BLOCK: u64 = 23112197; +pub const FORK_BLOCK: u64 = 24843565; pub const USDT_WHALE: Address = address!("F977814e90dA44bFA03b6295A0616a897441aceC"); pub const USDC_WHALE: Address = address!("28c6c06298d514db089934071355e5743bf21d60"); diff --git a/crates/e2e/tests/e2e/liquidity_source_notification.rs b/crates/e2e/tests/e2e/liquidity_source_notification.rs index f517e09315..35a09588e2 100644 --- a/crates/e2e/tests/e2e/liquidity_source_notification.rs +++ b/crates/e2e/tests/e2e/liquidity_source_notification.rs @@ -35,7 +35,7 @@ use { }; /// The block number from which we will fetch state for the forked tests. -pub const FORK_BLOCK: u64 = 23326100; +pub const FORK_BLOCK: u64 = 24843565; pub const USDT_WHALE: Address = address!("6AC38D1b2f0c0c3b9E816342b1CA14d91D5Ff60B"); pub const USDC_WHALE: Address = address!("01b8697695eab322a339c4bf75740db75dc9375e"); diff --git a/crates/e2e/tests/e2e/quote_verification.rs b/crates/e2e/tests/e2e/quote_verification.rs index a20d344ec4..bcc5c933fa 100644 --- a/crates/e2e/tests/e2e/quote_verification.rs +++ b/crates/e2e/tests/e2e/quote_verification.rs @@ -127,7 +127,7 @@ async fn standard_verified_quote(web3: Web3) { } /// The block number from which we will fetch state for the forked tests. -const FORK_BLOCK_MAINNET: u64 = 23112197; +const FORK_BLOCK_MAINNET: u64 = 24843565; /// Tests that quotes requesting `tx_origin: 0x0000` bypass the verification /// because those are currently used by some solvers to provide market maker diff --git a/crates/e2e/tests/e2e/wrapper.rs b/crates/e2e/tests/e2e/wrapper.rs index 66be717b54..deecd0377e 100644 --- a/crates/e2e/tests/e2e/wrapper.rs +++ b/crates/e2e/tests/e2e/wrapper.rs @@ -22,7 +22,7 @@ use { }; /// The block number from which we will fetch state for the forked test. -const FORK_BLOCK_MAINNET: u64 = 23688436; +const FORK_BLOCK_MAINNET: u64 = 24843565; /// EmptyWrapper contract address deployed on mainnet. const EMPTY_WRAPPER_MAINNET: Address = address!("751871E9cA28B441Bb6d3b7C4255cf2B5873d56a"); diff --git a/crates/orderbook/src/api/post_order.rs b/crates/orderbook/src/api/post_order.rs index c67270b84a..9db253913b 100644 --- a/crates/orderbook/src/api/post_order.rs +++ b/crates/orderbook/src/api/post_order.rs @@ -222,14 +222,21 @@ impl IntoResponse for ValidationErrorWrapper { ), ) .into_response(), - ValidationError::TransferSimulationFailed => ( - StatusCode::BAD_REQUEST, - error( - "TransferSimulationFailed", - "sell token cannot be transferred", - ), - ) - .into_response(), + ValidationError::TransferSimulationFailed(revert_data) => { + let description = if revert_data.is_empty() { + "sell token cannot be transferred".to_string() + } else { + format!( + "sell token cannot be transferred, token reverted with: 0x{}", + const_hex::encode(&revert_data), + ) + }; + ( + StatusCode::BAD_REQUEST, + error("TransferSimulationFailed", description), + ) + } + .into_response(), ValidationError::QuoteNotVerified => ( StatusCode::BAD_REQUEST, error( diff --git a/crates/shared/src/order_validation.rs b/crates/shared/src/order_validation.rs index e6761b7c65..21bf3a781c 100644 --- a/crates/shared/src/order_validation.rs +++ b/crates/shared/src/order_validation.rs @@ -141,7 +141,7 @@ pub enum ValidationError { InvalidSignature, /// If fee and sell amount overflow u256 SellAmountOverflow, - TransferSimulationFailed, + TransferSimulationFailed(Vec), /// The specified on-chain signature requires the from address of the /// order signer. MissingFrom, @@ -445,7 +445,7 @@ impl OrderValidator { res = match err { TransferSimulationError::InsufficientAllowance | TransferSimulationError::InsufficientBalance - | TransferSimulationError::TransferFailed + | TransferSimulationError::TransferFailed(_) if order.signature == Signature::PreSign || has_wrappers => { // Pre-sign orders do not require sufficient balance or allowance. @@ -469,12 +469,12 @@ impl OrderValidator { // will be triggered for the other amounts too return Err(ValidationError::InsufficientBalance); } - TransferSimulationError::TransferFailed => { - Err(ValidationError::TransferSimulationFailed) + TransferSimulationError::TransferFailed(reason) => { + Err(ValidationError::TransferSimulationFailed(reason)) } TransferSimulationError::Other(err) => { tracing::warn!("TransferSimulation failed: {:?}", err); - Err(ValidationError::TransferSimulationFailed) + Err(ValidationError::TransferSimulationFailed(Vec::new())) } }; }