diff --git a/contracts/src/v0.8/ccip/pools/LBTC/adapters/CLAdapter.sol b/contracts/src/v0.8/ccip/pools/LBTC/adapters/CLAdapter.sol index 318dcb91d4..c5b10a5cd0 100644 --- a/contracts/src/v0.8/ccip/pools/LBTC/adapters/CLAdapter.sol +++ b/contracts/src/v0.8/ccip/pools/LBTC/adapters/CLAdapter.sol @@ -46,7 +46,7 @@ contract CLAdapter is AbstractAdapter, Ownable { address[] memory allowlist_, address rmnProxy_, bool attestationEnable_ - ) AbstractAdapter(bridge_) Ownable(_msgSender()) { + ) AbstractAdapter(bridge_) Ownable() { _setExecutionGasLimit(executionGasLimit_); tokenPool = new LombardTokenPool( diff --git a/contracts/src/v0.8/ccip/pools/LBTC/adapters/LombardTokenPool.sol b/contracts/src/v0.8/ccip/pools/LBTC/adapters/LombardTokenPool.sol index 23cb02b0ef..ee4ee9a9ca 100644 --- a/contracts/src/v0.8/ccip/pools/LBTC/adapters/LombardTokenPool.sol +++ b/contracts/src/v0.8/ccip/pools/LBTC/adapters/LombardTokenPool.sol @@ -22,7 +22,7 @@ contract LombardTokenPool is TokenPool { address rmnProxy_, CLAdapter adapter_, bool attestationEnable_ - ) TokenPool(lbtc_, allowlist_, rmnProxy_, ccipRouter_) { + ) TokenPool(lbtc_, 8, allowlist_, rmnProxy_, ccipRouter_) { adapter = adapter_; isAttestationEnabled = attestationEnable_; } diff --git a/core/gethwrappers/ccip/generated/lbtc_adapter/lbtc_adapter.go b/core/gethwrappers/ccip/generated/lbtc_adapter/lbtc_adapter.go index 2f80b76c29..f7a4b643f1 100644 --- a/core/gethwrappers/ccip/generated/lbtc_adapter/lbtc_adapter.go +++ b/core/gethwrappers/ccip/generated/lbtc_adapter/lbtc_adapter.go @@ -31,15 +31,15 @@ var ( ) var CLAdapterMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"internalType\":\"contractIBridge\",\"name\":\"bridge_\",\"type\":\"address\"},{\"internalType\":\"contractLombardTokenPool\",\"name\":\"tokenPool_\",\"type\":\"address\"},{\"internalType\":\"uint128\",\"name\":\"executionGasLimit_\",\"type\":\"uint128\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"Adapter_ZeroAddress\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CLAttemptToOverrideChain\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CLAttemptToOverrideChainSelector\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"CLRefundFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"CLUnauthorizedTokenPool\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CLZeroChain\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CLZeroChanSelector\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotBridge\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"NotEnoughToPayFee\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroPayload\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contractIBridge\",\"name\":\"oldBridge\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contractIBridge\",\"name\":\"newBridge\",\"type\":\"address\"}],\"name\":\"BridgeChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"CLChainSelectorSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"CLTokenPoolDeployed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint128\",\"name\":\"prevVal\",\"type\":\"uint128\"},{\"indexed\":true,\"internalType\":\"uint128\",\"name\":\"newVal\",\"type\":\"uint128\"}],\"name\":\"ExecutionGasLimitSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"bridge\",\"outputs\":[{\"internalType\":\"contractIBridge\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contractIBridge\",\"name\":\"bridge_\",\"type\":\"address\"}],\"name\":\"changeBridge\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"fromAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_toChain\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_toAddress\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_payload\",\"type\":\"bytes\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"getChain\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getExecutionGasLimit\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_toChain\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_toAddress\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_payload\",\"type\":\"bytes\"}],\"name\":\"getFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"getRemoteChainSelector\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"remoteSelector\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"onChainData\",\"type\":\"bytes\"}],\"name\":\"initWithdrawalNoSignatures\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"remoteChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"receiver\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"initiateDeposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"lastBurnedAmount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"lastPayload\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"remoteSelector\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"offChainData\",\"type\":\"bytes\"}],\"name\":\"initiateWithdrawal\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lbtc\",\"outputs\":[{\"internalType\":\"contractILBTC\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint128\",\"name\":\"newVal\",\"type\":\"uint128\"}],\"name\":\"setExecutionGasLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"chain\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"chainSelector\",\"type\":\"uint64\"}],\"name\":\"setRemoteChainSelector\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tokenPool\",\"outputs\":[{\"internalType\":\"contractLombardTokenPool\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", - Bin: "0x60806040523480156200001157600080fd5b506040516200246c3803806200246c83398101604081905262000034916200018d565b600080546001600160a01b0319166001600160a01b038516179055620000616200005b3390565b620000c6565b6200006c8162000118565b600580546001600160a01b0319166001600160a01b0384169081179091556040519081527f45163ba2f75e282ba1000a5e166237acb454fa6b2b4cc778671bf977a01b13b49060200160405180910390a1505050620001ec565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6004546040516001600160801b038084169216907f45a4a024e3d155ab5b1634193775d00d4cbf4ef295e76d0bf1aa6dfeb114dd8490600090a3600480546001600160801b0319166001600160801b0392909216919091179055565b6001600160a01b03811681146200018a57600080fd5b50565b600080600060608486031215620001a357600080fd5b8351620001b08162000174565b6020850151909350620001c38162000174565b60408501519092506001600160801b0381168114620001e157600080fd5b809150509250925092565b61227080620001fc6000396000f3fe60806040526004361061010e5760003560e01c8063715886c4116100a5578063a1a6d50811610074578063e240550d11610059578063e240550d14610377578063e78cea9214610397578063f2fde38b146103c457600080fd5b8063a1a6d5081461031c578063b1ab7e221461035757600080fd5b8063715886c41461025d578063775710d4146102705780638da5cb5b146102a757806392b0680a146102d257600080fd5b80635391a405116100e15780635391a405146101e5578063550e7ab21461020557806368b3c91014610233578063715018a61461024857600080fd5b806308774410146101135780630c373d7414610135578063104e992914610173578063453bb95c146101c5575b600080fd5b34801561011f57600080fd5b5061013361012e3660046118be565b6103e4565b005b34801561014157600080fd5b50610155610150366004611941565b61046a565b60405167ffffffffffffffff90911681526020015b60405180910390f35b34801561017f57600080fd5b506005546101a09073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161016a565b3480156101d157600080fd5b506101336101e0366004611996565b61057e565b3480156101f157600080fd5b50610155610200366004611941565b610731565b34801561021157600080fd5b506102256102203660046119c6565b6108a0565b60405161016a929190611a90565b34801561023f57600080fd5b506101a0610c47565b34801561025457600080fd5b50610133610cde565b61013361026b366004611bc3565b610cf2565b34801561027c57600080fd5b5061015561028b366004611c38565b60026020526000908152604090205467ffffffffffffffff1681565b3480156102b357600080fd5b5060015473ffffffffffffffffffffffffffffffffffffffff166101a0565b3480156102de57600080fd5b506004546102fb906fffffffffffffffffffffffffffffffff1681565b6040516fffffffffffffffffffffffffffffffff909116815260200161016a565b34801561032857600080fd5b50610349610337366004611c51565b60036020526000908152604090205481565b60405190815260200161016a565b34801561036357600080fd5b50610349610372366004611c6e565b6110d8565b34801561038357600080fd5b50610133610392366004611cd2565b61122d565b3480156103a357600080fd5b506000546101a09073ffffffffffffffffffffffffffffffffffffffff1681565b3480156103d057600080fd5b506101336103df3660046118be565b611241565b6103ec6112f5565b6103f5816112fd565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917fd565484d693f5157abcceb853139678038bc740991b0a4dc3baa2426325bb3c09190a35050565b600061047461134a565b6104db600360008667ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000205484848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061139d92505050565b6000546040517f0968f26400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690630968f264906105339086908690600401611d04565b6020604051808303816000875af1158015610552573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105769190611d51565b949350505050565b610586611423565b816105bd576040517fe531cb7300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8067ffffffffffffffff16600003610601576040517fe531cb7300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526002602052604090205467ffffffffffffffff1615610651576040517fb72f782a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b67ffffffffffffffff8116600090815260036020526040902054156106a2576040517fe95ca6dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082815260026020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff861690811790915580845260038352928190208590558051858152918201929092527f61805347ac73c642ed5bfbc228e1702a4d51591b36a35387250de0c0d75b0072910160405180910390a15050565b600061073b61134a565b60008061074a84860186611d6e565b67ffffffffffffffff88166000908152600360205260409020549193509150610773908361139d565b6000546040517f6b93aa5100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690636b93aa51906107cb9085908590600401611dd2565b600060405180830381600087803b1580156107e557600080fd5b505af11580156107f9573d6000803e3d6000fd5b50506000546040517f0968f26400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169250630968f2649150610853908590600401611e00565b6020604051808303816000875af1158015610872573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108969190611d51565b9695505050505050565b600060606108ac61134a565b6000600780546108bb90611e13565b905011156109a2576006549150600780546108d590611e13565b80601f016020809104026020016040519081016040528092919081815260200182805461090190611e13565b801561094e5780601f106109235761010080835404028352916020019161094e565b820191906000526020600020905b81548152906001019060200180831161093157829003601f168201915b509394506000935061095f92505050565b6040519080825280601f01601f191660200182016040528015610989576020820181803683370190505b506007906109979082611eb3565b506000600655610b43565b6109aa610c47565b6000546040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201526024810186905291169063095ea7b3906044016020604051808303816000875af1158015610a22573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a469190611fcd565b506000805467ffffffffffffffff88168252600360205260409091205473ffffffffffffffffffffffffffffffffffffffff909116906383031c4190610a8c8789611fef565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526004810192909252602482015267ffffffffffffffff861660448201526064016000604051808303816000875af1158015610af7573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610b3d919081019061202c565b90925090505b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166368b3c9106040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bd291906120af565b73ffffffffffffffffffffffffffffffffffffffff166342966c68836040518263ffffffff1660e01b8152600401610c0c91815260200190565b600060405180830381600087803b158015610c2657600080fd5b505af1158015610c3a573d6000803e3d6000fd5b5050505094509492505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166368b3c9106040518163ffffffff1660e01b8152600401602060405180830381865afa158015610cb5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd991906120af565b905090565b610ce6611423565b610cf060006114a4565b565b73ffffffffffffffffffffffffffffffffffffffff861630146110d05760068290556007610d208282611eb3565b50600085815260026020908152604080832054815192830187905267ffffffffffffffff169291610d629101604051602081830303815290604052858561151b565b90506000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b0f479a16040518163ffffffff1660e01b8152600401602060405180830381865afa158015610dd3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610df791906120af565b905060008173ffffffffffffffffffffffffffffffffffffffff166320487ded85856040518363ffffffff1660e01b8152600401610e369291906120cc565b602060405180830381865afa158015610e53573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e7791906121e1565b905080341015610ebb576040517faf09dec9000000000000000000000000000000000000000000000000000000008152600481018290526024015b60405180910390fd5b80341115610f8d576000610ecf82346121fa565b905060008b73ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114610f2b576040519150601f19603f3d011682016040523d82523d6000602084013e610f30565b606091505b5050905080610f8a576040517f9bb3185e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8d16600482015260248101839052604401610eb2565b50505b610f95610c47565b6040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015260248201899052919091169063095ea7b3906044016020604051808303816000875af115801561100c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110309190611fcd565b506040517f96f4e9f900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8316906396f4e9f990839061108790889088906004016120cc565b60206040518083038185885af11580156110a5573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906110ca91906121e1565b50505050505b505050505050565b600554604080517fb0f479a1000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff169163b0f479a19160048083019260209291908290030181865afa158015611148573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061116c91906120af565b60008781526002602090815260409182902054825191820188905273ffffffffffffffffffffffffffffffffffffffff93909316926320487ded9267ffffffffffffffff909116916111cf9101604051602081830303815290604052878761151b565b6040518363ffffffff1660e01b81526004016111ec9291906120cc565b602060405180830381865afa158015611209573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061089691906121e1565b611235611423565b61123e81611816565b50565b611249611423565b73ffffffffffffffffffffffffffffffffffffffff81166112ec576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610eb2565b61123e816114a4565b610cf0611423565b73ffffffffffffffffffffffffffffffffffffffff811661123e576040517fcf891a8700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60055473ffffffffffffffffffffffffffffffffffffffff163314610cf0576040517f36b0b92e000000000000000000000000000000000000000000000000000000008152336004820152602401610eb2565b6000546040517f8783f52500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690638783f525906113f59085908590600401611a90565b600060405180830381600087803b15801561140f57600080fd5b505af11580156110d0573d6000803e3d6000fd5b60015473ffffffffffffffffffffffffffffffffffffffff163314610cf0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610eb2565b6001805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6115636040518060a00160405280606081526020016060815260200160608152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001606081525090565b604080516001808252818301909252600091816020015b604080518082019091526000808252602082015281526020019060019003908161157a575050604080518082018083526000547f68b3c91000000000000000000000000000000000000000000000000000000000909152915192935091829173ffffffffffffffffffffffffffffffffffffffff16906368b3c910906044808501916020918187030181865afa158015611618573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061163c91906120af565b73ffffffffffffffffffffffffffffffffffffffff168152602001858152508160008151811061166e5761166e612234565b60200260200101819052506060600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166355b961566040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061170c9190611fcd565b61174e57835160000361174b576040517ff3cc293900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50825b6040805160a081018252878152602080820184905281830185905260006060830152825180840184526004546fffffffffffffffffffffffffffffffff1680825260019183019182528451602481019190915290511515604480830191909152845180830390910181526064909101909352820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f181dcf10000000000000000000000000000000000000000000000000000000001790529060808201529695505050505050565b6004546040516fffffffffffffffffffffffffffffffff8084169216907f45a4a024e3d155ab5b1634193775d00d4cbf4ef295e76d0bf1aa6dfeb114dd8490600090a3600480547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff92909216919091179055565b73ffffffffffffffffffffffffffffffffffffffff8116811461123e57600080fd5b6000602082840312156118d057600080fd5b81356118db8161189c565b9392505050565b67ffffffffffffffff8116811461123e57600080fd5b60008083601f84011261190a57600080fd5b50813567ffffffffffffffff81111561192257600080fd5b60208301915083602082850101111561193a57600080fd5b9250929050565b60008060006040848603121561195657600080fd5b8335611961816118e2565b9250602084013567ffffffffffffffff81111561197d57600080fd5b611989868287016118f8565b9497909650939450505050565b600080604083850312156119a957600080fd5b8235915060208301356119bb816118e2565b809150509250929050565b600080600080606085870312156119dc57600080fd5b84356119e7816118e2565b9350602085013567ffffffffffffffff811115611a0357600080fd5b611a0f878288016118f8565b9598909750949560400135949350505050565b60005b83811015611a3d578181015183820152602001611a25565b50506000910152565b60008151808452611a5e816020860160208601611a22565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b8281526040602082015260006105766040830184611a46565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715611b1f57611b1f611aa9565b604052919050565b600067ffffffffffffffff821115611b4157611b41611aa9565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f830112611b7e57600080fd5b8135611b91611b8c82611b27565b611ad8565b818152846020838601011115611ba657600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060008060c08789031215611bdc57600080fd5b8635611be78161189c565b95506020870135945060408701359350606087013592506080870135915060a087013567ffffffffffffffff811115611c1f57600080fd5b611c2b89828a01611b6d565b9150509295509295509295565b600060208284031215611c4a57600080fd5b5035919050565b600060208284031215611c6357600080fd5b81356118db816118e2565b600080600080600060a08688031215611c8657600080fd5b85359450602086013593506040860135925060608601359150608086013567ffffffffffffffff811115611cb957600080fd5b611cc588828901611b6d565b9150509295509295909350565b600060208284031215611ce457600080fd5b81356fffffffffffffffffffffffffffffffff811681146118db57600080fd5b60208152816020820152818360408301376000818301604090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0160101919050565b600060208284031215611d6357600080fd5b81516118db816118e2565b60008060408385031215611d8157600080fd5b823567ffffffffffffffff80821115611d9957600080fd5b611da586838701611b6d565b93506020850135915080821115611dbb57600080fd5b50611dc885828601611b6d565b9150509250929050565b604081526000611de56040830185611a46565b8281036020840152611df78185611a46565b95945050505050565b6020815260006118db6020830184611a46565b600181811c90821680611e2757607f821691505b602082108103611e60577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b601f821115611eae576000816000526020600020601f850160051c81016020861015611e8f5750805b601f850160051c820191505b818110156110d057828155600101611e9b565b505050565b815167ffffffffffffffff811115611ecd57611ecd611aa9565b611ee181611edb8454611e13565b84611e66565b602080601f831160018114611f345760008415611efe5750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b1785556110d0565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b82811015611f8157888601518255948401946001909101908401611f62565b5085821015611fbd57878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b600060208284031215611fdf57600080fd5b815180151581146118db57600080fd5b80356020831015612026577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602084900360031b1b165b92915050565b6000806040838503121561203f57600080fd5b82519150602083015167ffffffffffffffff81111561205d57600080fd5b8301601f8101851361206e57600080fd5b805161207c611b8c82611b27565b81815286602083850101111561209157600080fd5b6120a2826020830160208601611a22565b8093505050509250929050565b6000602082840312156120c157600080fd5b81516118db8161189c565b6000604067ffffffffffffffff851683526020604081850152845160a060408601526120fb60e0860182611a46565b9050818601517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0808784030160608801526121368383611a46565b6040890151888203830160808a01528051808352908601945060009350908501905b80841015612197578451805173ffffffffffffffffffffffffffffffffffffffff16835286015186830152938501936001939093019290860190612158565b50606089015173ffffffffffffffffffffffffffffffffffffffff1660a08901526080890151888203830160c08a015295506121d38187611a46565b9a9950505050505050505050565b6000602082840312156121f357600080fd5b5051919050565b81810381811115612026577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea164736f6c6343000818000a", + ABI: "[{\"inputs\":[{\"internalType\":\"contractIBridge\",\"name\":\"bridge_\",\"type\":\"address\"},{\"internalType\":\"uint128\",\"name\":\"executionGasLimit_\",\"type\":\"uint128\"},{\"internalType\":\"address\",\"name\":\"ccipRouter_\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"allowlist_\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"rmnProxy_\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"attestationEnable_\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"Adapter_ZeroAddress\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CLAttemptToOverrideChain\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CLAttemptToOverrideChainSelector\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"CLRefundFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"CLUnauthorizedTokenPool\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CLZeroChain\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CLZeroChanSelector\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotBridge\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"NotEnoughToPayFee\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroPayload\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contractIBridge\",\"name\":\"oldBridge\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contractIBridge\",\"name\":\"newBridge\",\"type\":\"address\"}],\"name\":\"BridgeChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"CLChainSelectorSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"CLTokenPoolDeployed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint128\",\"name\":\"prevVal\",\"type\":\"uint128\"},{\"indexed\":true,\"internalType\":\"uint128\",\"name\":\"newVal\",\"type\":\"uint128\"}],\"name\":\"ExecutionGasLimitSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"bridge\",\"outputs\":[{\"internalType\":\"contractIBridge\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contractIBridge\",\"name\":\"bridge_\",\"type\":\"address\"}],\"name\":\"changeBridge\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"fromAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_toChain\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_toAddress\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_payload\",\"type\":\"bytes\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"getChain\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getExecutionGasLimit\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_toChain\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_toAddress\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_payload\",\"type\":\"bytes\"}],\"name\":\"getFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"getRemoteChainSelector\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"remoteSelector\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"onChainData\",\"type\":\"bytes\"}],\"name\":\"initWithdrawalNoSignatures\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"remoteChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"receiver\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"initiateDeposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"lastBurnedAmount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"lastPayload\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"remoteSelector\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"offChainData\",\"type\":\"bytes\"}],\"name\":\"initiateWithdrawal\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lbtc\",\"outputs\":[{\"internalType\":\"contractILBTC\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint128\",\"name\":\"newVal\",\"type\":\"uint128\"}],\"name\":\"setExecutionGasLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"chain\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"chainSelector\",\"type\":\"uint64\"}],\"name\":\"setRemoteChainSelector\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tokenPool\",\"outputs\":[{\"internalType\":\"contractLombardTokenPool\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", + Bin: "0x60806040523480156200001157600080fd5b5060405162006e3c38038062006e3c8339810160408190526200003491620002f5565b600080546001600160a01b0319166001600160a01b038816179055620000616200005b3390565b620001e7565b6200006c8562000239565b856001600160a01b03166368b3c9106040518163ffffffff1660e01b8152600401602060405180830381865afa158015620000ab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000d191906200043a565b8484843085604051620000e49062000295565b620000f59695949392919062000461565b604051809103906000f08015801562000112573d6000803e3d6000fd5b50600580546001600160a01b0319166001600160a01b0392909216918217905563f2fde38b6200013f3390565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401600060405180830381600087803b1580156200018157600080fd5b505af115801562000196573d6000803e3d6000fd5b50506005546040516001600160a01b0390911681527f45163ba2f75e282ba1000a5e166237acb454fa6b2b4cc778671bf977a01b13b49250602001905060405180910390a1505050505050620004df565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6004546040516001600160801b038084169216907f45a4a024e3d155ab5b1634193775d00d4cbf4ef295e76d0bf1aa6dfeb114dd8490600090a3600480546001600160801b0319166001600160801b0392909216919091179055565b6146dd806200275f83390190565b6001600160a01b0381168114620002b957600080fd5b50565b8051620002c981620002a3565b919050565b634e487b7160e01b600052604160045260246000fd5b80518015158114620002c957600080fd5b60008060008060008060c087890312156200030f57600080fd5b86516200031c81620002a3565b602088810151919750906001600160801b03811681146200033c57600080fd5b60408901519096506200034f81620002a3565b60608901519095506001600160401b03808211156200036d57600080fd5b818a0191508a601f8301126200038257600080fd5b815181811115620003975762000397620002ce565b8060051b604051601f19603f83011681018181108582111715620003bf57620003bf620002ce565b60405291825284820192508381018501918d831115620003de57600080fd5b938501935b828510156200040757620003f785620002bc565b84529385019392850192620003e3565b8098505050505050506200041e60808801620002bc565b91506200042e60a08801620002e4565b90509295509295509295565b6000602082840312156200044d57600080fd5b81516200045a81620002a3565b9392505050565b600060c0820160018060a01b03808a1684526020818a16602086015260c0604086015282895180855260e08701915060208b01945060005b81811015620004b957855185168352948301949183019160010162000499565b50509782166060860152509490941660808301525090151560a090910152509392505050565b61227080620004ef6000396000f3fe60806040526004361061010e5760003560e01c8063715886c4116100a5578063a1a6d50811610074578063e240550d11610059578063e240550d14610377578063e78cea9214610397578063f2fde38b146103c457600080fd5b8063a1a6d5081461031c578063b1ab7e221461035757600080fd5b8063715886c41461025d578063775710d4146102705780638da5cb5b146102a757806392b0680a146102d257600080fd5b80635391a405116100e15780635391a405146101e5578063550e7ab21461020557806368b3c91014610233578063715018a61461024857600080fd5b806308774410146101135780630c373d7414610135578063104e992914610173578063453bb95c146101c5575b600080fd5b34801561011f57600080fd5b5061013361012e3660046118be565b6103e4565b005b34801561014157600080fd5b50610155610150366004611941565b61046a565b60405167ffffffffffffffff90911681526020015b60405180910390f35b34801561017f57600080fd5b506005546101a09073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161016a565b3480156101d157600080fd5b506101336101e0366004611996565b61057e565b3480156101f157600080fd5b50610155610200366004611941565b610731565b34801561021157600080fd5b506102256102203660046119c6565b6108a0565b60405161016a929190611a90565b34801561023f57600080fd5b506101a0610c47565b34801561025457600080fd5b50610133610cde565b61013361026b366004611bc3565b610cf2565b34801561027c57600080fd5b5061015561028b366004611c38565b60026020526000908152604090205467ffffffffffffffff1681565b3480156102b357600080fd5b5060015473ffffffffffffffffffffffffffffffffffffffff166101a0565b3480156102de57600080fd5b506004546102fb906fffffffffffffffffffffffffffffffff1681565b6040516fffffffffffffffffffffffffffffffff909116815260200161016a565b34801561032857600080fd5b50610349610337366004611c51565b60036020526000908152604090205481565b60405190815260200161016a565b34801561036357600080fd5b50610349610372366004611c6e565b6110d8565b34801561038357600080fd5b50610133610392366004611cd2565b61122d565b3480156103a357600080fd5b506000546101a09073ffffffffffffffffffffffffffffffffffffffff1681565b3480156103d057600080fd5b506101336103df3660046118be565b611241565b6103ec6112f5565b6103f5816112fd565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917fd565484d693f5157abcceb853139678038bc740991b0a4dc3baa2426325bb3c09190a35050565b600061047461134a565b6104db600360008667ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000205484848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061139d92505050565b6000546040517f0968f26400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690630968f264906105339086908690600401611d04565b6020604051808303816000875af1158015610552573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105769190611d51565b949350505050565b610586611423565b816105bd576040517fe531cb7300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8067ffffffffffffffff16600003610601576040517fe531cb7300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526002602052604090205467ffffffffffffffff1615610651576040517fb72f782a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b67ffffffffffffffff8116600090815260036020526040902054156106a2576040517fe95ca6dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082815260026020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff861690811790915580845260038352928190208590558051858152918201929092527f61805347ac73c642ed5bfbc228e1702a4d51591b36a35387250de0c0d75b0072910160405180910390a15050565b600061073b61134a565b60008061074a84860186611d6e565b67ffffffffffffffff88166000908152600360205260409020549193509150610773908361139d565b6000546040517f6b93aa5100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690636b93aa51906107cb9085908590600401611dd2565b600060405180830381600087803b1580156107e557600080fd5b505af11580156107f9573d6000803e3d6000fd5b50506000546040517f0968f26400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169250630968f2649150610853908590600401611e00565b6020604051808303816000875af1158015610872573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108969190611d51565b9695505050505050565b600060606108ac61134a565b6000600780546108bb90611e13565b905011156109a2576006549150600780546108d590611e13565b80601f016020809104026020016040519081016040528092919081815260200182805461090190611e13565b801561094e5780601f106109235761010080835404028352916020019161094e565b820191906000526020600020905b81548152906001019060200180831161093157829003601f168201915b509394506000935061095f92505050565b6040519080825280601f01601f191660200182016040528015610989576020820181803683370190505b506007906109979082611eb3565b506000600655610b43565b6109aa610c47565b6000546040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201526024810186905291169063095ea7b3906044016020604051808303816000875af1158015610a22573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a469190611fcd565b506000805467ffffffffffffffff88168252600360205260409091205473ffffffffffffffffffffffffffffffffffffffff909116906383031c4190610a8c8789611fef565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526004810192909252602482015267ffffffffffffffff861660448201526064016000604051808303816000875af1158015610af7573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610b3d919081019061202c565b90925090505b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166368b3c9106040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bd291906120af565b73ffffffffffffffffffffffffffffffffffffffff166342966c68836040518263ffffffff1660e01b8152600401610c0c91815260200190565b600060405180830381600087803b158015610c2657600080fd5b505af1158015610c3a573d6000803e3d6000fd5b5050505094509492505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166368b3c9106040518163ffffffff1660e01b8152600401602060405180830381865afa158015610cb5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd991906120af565b905090565b610ce6611423565b610cf060006114a4565b565b73ffffffffffffffffffffffffffffffffffffffff861630146110d05760068290556007610d208282611eb3565b50600085815260026020908152604080832054815192830187905267ffffffffffffffff169291610d629101604051602081830303815290604052858561151b565b90506000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b0f479a16040518163ffffffff1660e01b8152600401602060405180830381865afa158015610dd3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610df791906120af565b905060008173ffffffffffffffffffffffffffffffffffffffff166320487ded85856040518363ffffffff1660e01b8152600401610e369291906120cc565b602060405180830381865afa158015610e53573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e7791906121e1565b905080341015610ebb576040517faf09dec9000000000000000000000000000000000000000000000000000000008152600481018290526024015b60405180910390fd5b80341115610f8d576000610ecf82346121fa565b905060008b73ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114610f2b576040519150601f19603f3d011682016040523d82523d6000602084013e610f30565b606091505b5050905080610f8a576040517f9bb3185e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8d16600482015260248101839052604401610eb2565b50505b610f95610c47565b6040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015260248201899052919091169063095ea7b3906044016020604051808303816000875af115801561100c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110309190611fcd565b506040517f96f4e9f900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8316906396f4e9f990839061108790889088906004016120cc565b60206040518083038185885af11580156110a5573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906110ca91906121e1565b50505050505b505050505050565b600554604080517fb0f479a1000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff169163b0f479a19160048083019260209291908290030181865afa158015611148573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061116c91906120af565b60008781526002602090815260409182902054825191820188905273ffffffffffffffffffffffffffffffffffffffff93909316926320487ded9267ffffffffffffffff909116916111cf9101604051602081830303815290604052878761151b565b6040518363ffffffff1660e01b81526004016111ec9291906120cc565b602060405180830381865afa158015611209573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061089691906121e1565b611235611423565b61123e81611816565b50565b611249611423565b73ffffffffffffffffffffffffffffffffffffffff81166112ec576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610eb2565b61123e816114a4565b610cf0611423565b73ffffffffffffffffffffffffffffffffffffffff811661123e576040517fcf891a8700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60055473ffffffffffffffffffffffffffffffffffffffff163314610cf0576040517f36b0b92e000000000000000000000000000000000000000000000000000000008152336004820152602401610eb2565b6000546040517f8783f52500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690638783f525906113f59085908590600401611a90565b600060405180830381600087803b15801561140f57600080fd5b505af11580156110d0573d6000803e3d6000fd5b60015473ffffffffffffffffffffffffffffffffffffffff163314610cf0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610eb2565b6001805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6115636040518060a00160405280606081526020016060815260200160608152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001606081525090565b604080516001808252818301909252600091816020015b604080518082019091526000808252602082015281526020019060019003908161157a575050604080518082018083526000547f68b3c91000000000000000000000000000000000000000000000000000000000909152915192935091829173ffffffffffffffffffffffffffffffffffffffff16906368b3c910906044808501916020918187030181865afa158015611618573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061163c91906120af565b73ffffffffffffffffffffffffffffffffffffffff168152602001858152508160008151811061166e5761166e612234565b60200260200101819052506060600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166355b961566040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061170c9190611fcd565b61174e57835160000361174b576040517ff3cc293900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50825b6040805160a081018252878152602080820184905281830185905260006060830152825180840184526004546fffffffffffffffffffffffffffffffff1680825260019183019182528451602481019190915290511515604480830191909152845180830390910181526064909101909352820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f181dcf10000000000000000000000000000000000000000000000000000000001790529060808201529695505050505050565b6004546040516fffffffffffffffffffffffffffffffff8084169216907f45a4a024e3d155ab5b1634193775d00d4cbf4ef295e76d0bf1aa6dfeb114dd8490600090a3600480547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff92909216919091179055565b73ffffffffffffffffffffffffffffffffffffffff8116811461123e57600080fd5b6000602082840312156118d057600080fd5b81356118db8161189c565b9392505050565b67ffffffffffffffff8116811461123e57600080fd5b60008083601f84011261190a57600080fd5b50813567ffffffffffffffff81111561192257600080fd5b60208301915083602082850101111561193a57600080fd5b9250929050565b60008060006040848603121561195657600080fd5b8335611961816118e2565b9250602084013567ffffffffffffffff81111561197d57600080fd5b611989868287016118f8565b9497909650939450505050565b600080604083850312156119a957600080fd5b8235915060208301356119bb816118e2565b809150509250929050565b600080600080606085870312156119dc57600080fd5b84356119e7816118e2565b9350602085013567ffffffffffffffff811115611a0357600080fd5b611a0f878288016118f8565b9598909750949560400135949350505050565b60005b83811015611a3d578181015183820152602001611a25565b50506000910152565b60008151808452611a5e816020860160208601611a22565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b8281526040602082015260006105766040830184611a46565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715611b1f57611b1f611aa9565b604052919050565b600067ffffffffffffffff821115611b4157611b41611aa9565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f830112611b7e57600080fd5b8135611b91611b8c82611b27565b611ad8565b818152846020838601011115611ba657600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060008060c08789031215611bdc57600080fd5b8635611be78161189c565b95506020870135945060408701359350606087013592506080870135915060a087013567ffffffffffffffff811115611c1f57600080fd5b611c2b89828a01611b6d565b9150509295509295509295565b600060208284031215611c4a57600080fd5b5035919050565b600060208284031215611c6357600080fd5b81356118db816118e2565b600080600080600060a08688031215611c8657600080fd5b85359450602086013593506040860135925060608601359150608086013567ffffffffffffffff811115611cb957600080fd5b611cc588828901611b6d565b9150509295509295909350565b600060208284031215611ce457600080fd5b81356fffffffffffffffffffffffffffffffff811681146118db57600080fd5b60208152816020820152818360408301376000818301604090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0160101919050565b600060208284031215611d6357600080fd5b81516118db816118e2565b60008060408385031215611d8157600080fd5b823567ffffffffffffffff80821115611d9957600080fd5b611da586838701611b6d565b93506020850135915080821115611dbb57600080fd5b50611dc885828601611b6d565b9150509250929050565b604081526000611de56040830185611a46565b8281036020840152611df78185611a46565b95945050505050565b6020815260006118db6020830184611a46565b600181811c90821680611e2757607f821691505b602082108103611e60577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b601f821115611eae576000816000526020600020601f850160051c81016020861015611e8f5750805b601f850160051c820191505b818110156110d057828155600101611e9b565b505050565b815167ffffffffffffffff811115611ecd57611ecd611aa9565b611ee181611edb8454611e13565b84611e66565b602080601f831160018114611f345760008415611efe5750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b1785556110d0565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b82811015611f8157888601518255948401946001909101908401611f62565b5085821015611fbd57878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b600060208284031215611fdf57600080fd5b815180151581146118db57600080fd5b80356020831015612026577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602084900360031b1b165b92915050565b6000806040838503121561203f57600080fd5b82519150602083015167ffffffffffffffff81111561205d57600080fd5b8301601f8101851361206e57600080fd5b805161207c611b8c82611b27565b81815286602083850101111561209157600080fd5b6120a2826020830160208601611a22565b8093505050509250929050565b6000602082840312156120c157600080fd5b81516118db8161189c565b6000604067ffffffffffffffff851683526020604081850152845160a060408601526120fb60e0860182611a46565b9050818601517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0808784030160608801526121368383611a46565b6040890151888203830160808a01528051808352908601945060009350908501905b80841015612197578451805173ffffffffffffffffffffffffffffffffffffffff16835286015186830152938501936001939093019290860190612158565b50606089015173ffffffffffffffffffffffffffffffffffffffff1660a08901526080890151888203830160c08a015295506121d38187611a46565b9a9950505050505050505050565b6000602082840312156121f357600080fd5b5051919050565b81810381811115612026577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea164736f6c6343000818000a6101006040523480156200001257600080fd5b50604051620046dd380380620046dd8339810160408190526200003591620005d1565b856008858588336000816200005d57604051639b15e16f60e01b815260040160405180910390fd5b600180546001600160a01b0319166001600160a01b0384811691909117909155811615620000905762000090816200021b565b50506001600160a01b0385161580620000b057506001600160a01b038116155b80620000c357506001600160a01b038216155b15620000e2576040516342bcdf7f60e11b815260040160405180910390fd5b6001600160a01b03808616608081905290831660c0526040805163313ce56760e01b8152905163313ce567916004808201926020929091908290030181865afa92505050801562000152575060408051601f3d908101601f191682019092526200014f9181019062000708565b60015b1562000192578060ff168560ff161462000190576040516332ad3e0760e11b815260ff80871660048301528216602482015260440160405180910390fd5b505b60ff841660a052600480546001600160a01b0319166001600160a01b038316179055825115801560e052620001dc57604080516000815260208101909152620001dc908462000295565b5050600a8054941515600160a01b026001600160a81b03199095166001600160a01b039096169590951793909317909355506200078295505050505050565b336001600160a01b038216036200024557604051636d6c4ee560e11b815260040160405180910390fd5b600080546001600160a01b0319166001600160a01b03838116918217835560015460405192939116917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b60e051620002b6576040516335f4a7b360e01b815260040160405180910390fd5b60005b825181101562000341576000838281518110620002da57620002da62000734565b60209081029190910101519050620002f4600282620003f2565b1562000337576040516001600160a01b03821681527f800671136ab6cfee9fbe5ed1fb7ca417811aca3cf864800d127b927adedf75669060200160405180910390a15b50600101620002b9565b5060005b8151811015620003ed57600082828151811062000366576200036662000734565b6020026020010151905060006001600160a01b0316816001600160a01b031603620003925750620003e4565b6200039f60028262000412565b15620003e2576040516001600160a01b03821681527f2640d4d76caf8bf478aabfa982fa4e1c4eb71a37f93cd15e80dbc657911546d89060200160405180910390a15b505b60010162000345565b505050565b600062000409836001600160a01b03841662000429565b90505b92915050565b600062000409836001600160a01b0384166200052d565b6000818152600183016020526040812054801562000522576000620004506001836200074a565b855490915060009062000466906001906200074a565b9050808214620004d25760008660000182815481106200048a576200048a62000734565b9060005260206000200154905080876000018481548110620004b057620004b062000734565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080620004e657620004e66200076c565b6001900381819060005260206000200160009055905585600101600086815260200190815260200160002060009055600193505050506200040c565b60009150506200040c565b600081815260018301602052604081205462000576575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556200040c565b5060006200040c565b6001600160a01b03811681146200059557600080fd5b50565b8051620005a5816200057f565b919050565b634e487b7160e01b600052604160045260246000fd5b80518015158114620005a557600080fd5b60008060008060008060c08789031215620005eb57600080fd5b8651620005f8816200057f565b809650506020808801516200060d816200057f565b60408901519096506001600160401b03808211156200062b57600080fd5b818a0191508a601f8301126200064057600080fd5b815181811115620006555762000655620005aa565b8060051b604051601f19603f830116810181811085821117156200067d576200067d620005aa565b60405291825284820192508381018501918d8311156200069c57600080fd5b938501935b82851015620006c557620006b58562000598565b84529385019392850192620006a1565b809950505050505050620006dc6060880162000598565b9250620006ec6080880162000598565b9150620006fc60a08801620005c0565b90509295509295509295565b6000602082840312156200071b57600080fd5b815160ff811681146200072d57600080fd5b9392505050565b634e487b7160e01b600052603260045260246000fd5b818103818111156200040c57634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603160045260246000fd5b60805160a05160c05160e051613ee9620007f46000396000818161056701528181611d1501526126c401526000818161054101528181611b0a0152612001015260006102c601526000818161024e0152818161028201528181610bec0152818161265a01526128af0152613ee96000f3fe608060405234801561001057600080fd5b50600436106101da5760003560e01c80639a4575b911610104578063c0d78655116100a2578063dc0bd97111610071578063dc0bd9711461053f578063e0351e1314610565578063e8a1da171461058b578063f2fde38b1461059e57600080fd5b8063c0d78655146104f1578063c4bffe2b14610504578063c75eea9c14610519578063cf7401f31461052c57600080fd5b8063acfecf91116100de578063acfecf9114610431578063af58d59f14610444578063b0f479a1146104b3578063b7946580146104d157600080fd5b80639a4575b9146103dc578063a42a7b8b146103fc578063a7cd63b71461041c57600080fd5b806354c8a4f31161017c57806379ba50971161014b57806379ba5097146103905780637d54534e146103985780638926f54f146103ab5780638da5cb5b146103be57600080fd5b806354c8a4f31461032557806355b961561461033a57806362ddd3c41461035f5780636d3d1a581461037257600080fd5b8063240028e8116101b8578063240028e81461027257806324f65ee7146102bf57806339077537146102f05780634c5ef0ed1461031257600080fd5b806301ffc9a7146101df57806303eadcfc1461020757806321df0da71461024c575b600080fd5b6101f26101ed36600461306f565b6105b1565b60405190151581526020015b60405180910390f35b600a546102279073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101fe565b7f0000000000000000000000000000000000000000000000000000000000000000610227565b6101f26102803660046130d3565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff90811691161490565b60405160ff7f00000000000000000000000000000000000000000000000000000000000000001681526020016101fe565b6103036102fe3660046130f0565b610696565b604051905181526020016101fe565b6101f2610320366004613142565b6108b5565b610338610333366004613213565b6108ff565b005b600a546101f29074010000000000000000000000000000000000000000900460ff1681565b61033861036d366004613142565b61097a565b60095473ffffffffffffffffffffffffffffffffffffffff16610227565b610338610a17565b6103386103a63660046130d3565b610ae5565b6101f26103b936600461327f565b610b66565b60015473ffffffffffffffffffffffffffffffffffffffff16610227565b6103ef6103ea36600461329c565b610b7d565b6040516101fe9190613345565b61040f61040a36600461327f565b610e59565b6040516101fe919061339c565b610424610fc4565b6040516101fe919061341e565b61033861043f366004613142565b610fd5565b61045761045236600461327f565b6110ed565b6040516101fe919081516fffffffffffffffffffffffffffffffff908116825260208084015163ffffffff1690830152604080840151151590830152606080840151821690830152608092830151169181019190915260a00190565b60045473ffffffffffffffffffffffffffffffffffffffff16610227565b6104e46104df36600461327f565b6111c2565b6040516101fe9190613478565b6103386104ff3660046130d3565b611272565b61050c61134d565b6040516101fe919061348b565b61045761052736600461327f565b611405565b61033861053a3660046135ef565b6114d7565b7f0000000000000000000000000000000000000000000000000000000000000000610227565b7f00000000000000000000000000000000000000000000000000000000000000006101f2565b610338610599366004613213565b61155b565b6103386105ac3660046130d3565b611a6d565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167faff2afbf00000000000000000000000000000000000000000000000000000000148061064457507fffffffff0000000000000000000000000000000000000000000000000000000082167f0e64dd2900000000000000000000000000000000000000000000000000000000145b8061069057507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b6040805160208101909152600081526106ae82611a81565b600a5460009074010000000000000000000000000000000000000000900460ff161561077757600a5473ffffffffffffffffffffffffffffffffffffffff16635391a405610702604086016020870161327f565b61070f60e0870187613636565b6040518463ffffffff1660e01b815260040161072d939291906136e4565b6020604051808303816000875af115801561074c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107709190613708565b9050610816565b600a5473ffffffffffffffffffffffffffffffffffffffff16630c373d746107a5604086016020870161327f565b6107b260c0870187613636565b6040518463ffffffff1660e01b81526004016107d0939291906136e4565b6020604051808303816000875af11580156107ef573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108139190613708565b90505b61082660608401604085016130d3565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f9d228d69b5fdb8d273a2336f8fb8612d039631024ea9bf09c424a9503aa078f08367ffffffffffffffff1660405161088e91815260200190565b60405180910390a3604080516020810190915267ffffffffffffffff909116815292915050565b60006108f783836040516108ca929190613725565b604080519182900390912067ffffffffffffffff8716600090815260076020529190912060050190611ca5565b949350505050565b610907611cc0565b61097484848080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020808802828101820190935287825290935087925086918291850190849080828437600092019190915250611d1392505050565b50505050565b610982611cc0565b61098b83610b66565b6109d2576040517f1e670e4b00000000000000000000000000000000000000000000000000000000815267ffffffffffffffff841660048201526024015b60405180910390fd5b610a128383838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611ec992505050565b505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610a68576040517f02b543c600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000008082163390811790935560008054909116815560405173ffffffffffffffffffffffffffffffffffffffff909216929183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a350565b610aed611cc0565b600980547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f44676b5284b809a22248eba0da87391d79098be38bb03154be88a58bf4d091749060200160405180910390a150565b6000610690600567ffffffffffffffff8416611ca5565b6040805180820190915260608082526020820152610b9a82611fc3565b600a546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9182166004820152606084013560248201527f00000000000000000000000000000000000000000000000000000000000000009091169063a9059cbb906044016020604051808303816000875af1158015610c37573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c5b9190613735565b50600a54600090819073ffffffffffffffffffffffffffffffffffffffff1663550e7ab2610c8f604087016020880161327f565b610c998780613636565b88606001356040518563ffffffff1660e01b8152600401610cbd9493929190613752565b6000604051808303816000875af1158015610cdc573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610d2291908101906137cd565b9092509050610d3760608501604086016130d3565b73ffffffffffffffffffffffffffffffffffffffff167f696de425f79f4a40bc6d2122ca50507f0efbeabbff86a84871b7196ab8ea8df783604051610d7e91815260200190565b60405180910390a2600a5460609074010000000000000000000000000000000000000000900460ff1615610e2457600282604051610dbc9190613855565b602060405180830381855afa158015610dd9573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190610dfc9190613871565b604051602001610e0e91815260200190565b6040516020818303038152906040529050610e27565b50805b6040518060400160405280610e488760200160208101906104df919061327f565b815260200191909152949350505050565b67ffffffffffffffff8116600090815260076020526040812060609190610e829060050161214f565b90506000815167ffffffffffffffff811115610ea057610ea06134cd565b604051908082528060200260200182016040528015610ed357816020015b6060815260200190600190039081610ebe5790505b50905060005b8251811015610fbc5760086000848381518110610ef857610ef861388a565b602002602001015181526020019081526020016000208054610f19906138b9565b80601f0160208091040260200160405190810160405280929190818152602001828054610f45906138b9565b8015610f925780601f10610f6757610100808354040283529160200191610f92565b820191906000526020600020905b815481529060010190602001808311610f7557829003601f168201915b5050505050828281518110610fa957610fa961388a565b6020908102919091010152600101610ed9565b509392505050565b6060610fd0600261214f565b905090565b610fdd611cc0565b610fe683610b66565b611028576040517f1e670e4b00000000000000000000000000000000000000000000000000000000815267ffffffffffffffff841660048201526024016109c9565b611068828260405161103b929190613725565b604080519182900390912067ffffffffffffffff861660009081526007602052919091206005019061215c565b6110a4578282826040517f74f23c7c0000000000000000000000000000000000000000000000000000000081526004016109c9939291906136e4565b8267ffffffffffffffff167f52d00ee4d9bd51b40168f2afc5848837288ce258784ad914278791464b3f4d7683836040516110e092919061390c565b60405180910390a2505050565b6040805160a08101825260008082526020820181905291810182905260608101829052608081019190915267ffffffffffffffff8216600090815260076020908152604091829020825160a08101845260028201546fffffffffffffffffffffffffffffffff808216835270010000000000000000000000000000000080830463ffffffff16958401959095527401000000000000000000000000000000000000000090910460ff16151594820194909452600390910154808416606083015291909104909116608082015261069090612168565b67ffffffffffffffff811660009081526007602052604090206004018054606091906111ed906138b9565b80601f0160208091040260200160405190810160405280929190818152602001828054611219906138b9565b80156112665780601f1061123b57610100808354040283529160200191611266565b820191906000526020600020905b81548152906001019060200180831161124957829003601f168201915b50505050509050919050565b61127a611cc0565b73ffffffffffffffffffffffffffffffffffffffff81166112c7576040517f8579befe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6004805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff000000000000000000000000000000000000000083168117909355604080519190921680825260208201939093527f02dc5c233404867c793b749c6d644beb2277536d18a7e7974d3f238e4c6f1684910160405180910390a15050565b6060600061135b600561214f565b90506000815167ffffffffffffffff811115611379576113796134cd565b6040519080825280602002602001820160405280156113a2578160200160208202803683370190505b50905060005b82518110156113fe578281815181106113c3576113c361388a565b60200260200101518282815181106113dd576113dd61388a565b67ffffffffffffffff909216602092830291909101909101526001016113a8565b5092915050565b6040805160a08101825260008082526020820181905291810182905260608101829052608081019190915267ffffffffffffffff8216600090815260076020908152604091829020825160a08101845281546fffffffffffffffffffffffffffffffff808216835270010000000000000000000000000000000080830463ffffffff16958401959095527401000000000000000000000000000000000000000090910460ff16151594820194909452600190910154808416606083015291909104909116608082015261069090612168565b60095473ffffffffffffffffffffffffffffffffffffffff163314801590611517575060015473ffffffffffffffffffffffffffffffffffffffff163314155b15611550576040517f8e4a23d60000000000000000000000000000000000000000000000000000000081523360048201526024016109c9565b610a1283838361221a565b611563611cc0565b60005b838110156117505760008585838181106115825761158261388a565b9050602002016020810190611597919061327f565b90506115ae600567ffffffffffffffff831661215c565b6115f0576040517f1e670e4b00000000000000000000000000000000000000000000000000000000815267ffffffffffffffff821660048201526024016109c9565b67ffffffffffffffff811660009081526007602052604081206116159060050161214f565b905060005b8151811015611681576116788282815181106116385761163861388a565b6020026020010151600760008667ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060050161215c90919063ffffffff16565b5060010161161a565b5067ffffffffffffffff8216600090815260076020526040812080547fffffffffffffffffffffff000000000000000000000000000000000000000000908116825560018201839055600282018054909116905560038101829055906116ea6004830182613002565b60058201600081816116fc828261303c565b505060405167ffffffffffffffff871681527f5204aec90a3c794d8e90fded8b46ae9c7c552803e7e832e0c1d358396d8599169450602001925061173e915050565b60405180910390a15050600101611566565b5060005b81811015611a665760008383838181106117705761177061388a565b90506020028101906117829190613920565b61178b90613a44565b905061179c81606001516000612304565b6117ab81608001516000612304565b8060400151516000036117ea576040517f8579befe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80516118029060059067ffffffffffffffff16612441565b6118475780516040517f1d5ad3c500000000000000000000000000000000000000000000000000000000815267ffffffffffffffff90911660048201526024016109c9565b805167ffffffffffffffff16600090815260076020908152604091829020825160a08082018552606080870180518601516fffffffffffffffffffffffffffffffff90811680865263ffffffff42168689018190528351511515878b0181905284518a0151841686890181905294518b0151841660809889018190528954740100000000000000000000000000000000000000009283027fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff7001000000000000000000000000000000008087027fffffffffffffffffffffffff000000000000000000000000000000000000000094851690981788178216929092178d5592810290971760018c01558c519889018d52898e0180518d01518716808b528a8e019590955280515115158a8f018190528151909d01518716988a01899052518d0151909516979098018790526002890180549a9091029990931617179094169590951790925590920290911760038201559082015160048201906119ca9082613b54565b5060005b826020015151811015611a0e57611a068360000151846020015183815181106119f9576119f961388a565b6020026020010151611ec9565b6001016119ce565b507f8d340f17e19058004c20453540862a9c62778504476f6756755cb33bcd6c38c28260000151836040015184606001518560800151604051611a549493929190613c6e565b60405180910390a15050600101611754565b5050505050565b611a75611cc0565b611a7e8161244d565b50565b611a9461028060a08301608084016130d3565b611af357611aa860a08201608083016130d3565b6040517f961c9a4f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911660048201526024016109c9565b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016632cbc26bb611b3f604084016020850161327f565b60405160e083901b7fffffffff0000000000000000000000000000000000000000000000000000000016815260809190911b77ffffffffffffffff00000000000000000000000000000000166004820152602401602060405180830381865afa158015611bb0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bd49190613735565b15611c0b576040517f53ad11d800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611c23611c1e604083016020840161327f565b612511565b611c43611c36604083016020840161327f565b61032060a0840184613636565b611c8857611c5460a0820182613636565b6040517f24eb47e50000000000000000000000000000000000000000000000000000000081526004016109c992919061390c565b611a7e611c9b604083016020840161327f565b8260600135612637565b600081815260018301602052604081205415155b9392505050565b60015473ffffffffffffffffffffffffffffffffffffffff163314611d11576040517f2b5c74de00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b7f0000000000000000000000000000000000000000000000000000000000000000611d6a576040517f35f4a7b300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b8251811015611e00576000838281518110611d8a57611d8a61388a565b60200260200101519050611da881600261267e90919063ffffffff16565b15611df75760405173ffffffffffffffffffffffffffffffffffffffff821681527f800671136ab6cfee9fbe5ed1fb7ca417811aca3cf864800d127b927adedf75669060200160405180910390a15b50600101611d6d565b5060005b8151811015610a12576000828281518110611e2157611e2161388a565b60200260200101519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611e655750611ec1565b611e706002826126a0565b15611ebf5760405173ffffffffffffffffffffffffffffffffffffffff821681527f2640d4d76caf8bf478aabfa982fa4e1c4eb71a37f93cd15e80dbc657911546d89060200160405180910390a15b505b600101611e04565b8051600003611f04576040517f8579befe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805160208083019190912067ffffffffffffffff8416600090815260079092526040909120611f369060050182612441565b611f705782826040517f393b8ad20000000000000000000000000000000000000000000000000000000081526004016109c9929190613d07565b6000818152600860205260409020611f888382613b54565b508267ffffffffffffffff167f7d628c9a1796743d365ab521a8b2a4686e419b3269919dc9145ea2ce853b54ea836040516110e09190613478565b611fd661028060a08301608084016130d3565b611fea57611aa860a08201608083016130d3565b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016632cbc26bb612036604084016020850161327f565b60405160e083901b7fffffffff0000000000000000000000000000000000000000000000000000000016815260809190911b77ffffffffffffffff00000000000000000000000000000000166004820152602401602060405180830381865afa1580156120a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120cb9190613735565b15612102576040517f53ad11d800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61211a61211560608301604084016130d3565b6126c2565b61213261212d604083016020840161327f565b612741565b611a7e612145604083016020840161327f565b826060013561288f565b60606000611cb9836128d3565b6000611cb9838361292e565b6040805160a0810182526000808252602082018190529181018290526060810182905260808101919091526121f682606001516fffffffffffffffffffffffffffffffff1683600001516fffffffffffffffffffffffffffffffff16846020015163ffffffff16426121da9190613d59565b85608001516fffffffffffffffffffffffffffffffff16612a21565b6fffffffffffffffffffffffffffffffff1682525063ffffffff4216602082015290565b61222383610b66565b612265576040517f1e670e4b00000000000000000000000000000000000000000000000000000000815267ffffffffffffffff841660048201526024016109c9565b612270826000612304565b67ffffffffffffffff831660009081526007602052604090206122939083612a49565b61229e816000612304565b67ffffffffffffffff831660009081526007602052604090206122c49060020182612a49565b7f0350d63aa5f270e01729d00d627eeb8f3429772b1818c016c66a588a864f912b8383836040516122f793929190613d6c565b60405180910390a1505050565b8151156123cf5781602001516fffffffffffffffffffffffffffffffff1682604001516fffffffffffffffffffffffffffffffff1610158061235a575060408201516fffffffffffffffffffffffffffffffff16155b1561239357816040517f8020d1240000000000000000000000000000000000000000000000000000000081526004016109c99190613def565b80156123cb576040517f433fc33d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b60408201516fffffffffffffffffffffffffffffffff16151580612408575060208201516fffffffffffffffffffffffffffffffff1615155b156123cb57816040517fd68af9cc0000000000000000000000000000000000000000000000000000000081526004016109c99190613def565b6000611cb98383612beb565b3373ffffffffffffffffffffffffffffffffffffffff82160361249c576040517fdad89dca00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff838116918217835560015460405192939116917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b61251a81610b66565b61255c576040517fa9902c7e00000000000000000000000000000000000000000000000000000000815267ffffffffffffffff821660048201526024016109c9565b600480546040517f83826b2b00000000000000000000000000000000000000000000000000000000815267ffffffffffffffff84169281019290925233602483015273ffffffffffffffffffffffffffffffffffffffff16906383826b2b90604401602060405180830381865afa1580156125db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125ff9190613735565b611a7e576040517f728fe07b0000000000000000000000000000000000000000000000000000000081523360048201526024016109c9565b67ffffffffffffffff821660009081526007602052604090206123cb90600201827f0000000000000000000000000000000000000000000000000000000000000000612c3a565b6000611cb98373ffffffffffffffffffffffffffffffffffffffff841661292e565b6000611cb98373ffffffffffffffffffffffffffffffffffffffff8416612beb565b7f000000000000000000000000000000000000000000000000000000000000000015611a7e576126f3600282612fbd565b611a7e576040517fd0d2597600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821660048201526024016109c9565b61274a81610b66565b61278c576040517fa9902c7e00000000000000000000000000000000000000000000000000000000815267ffffffffffffffff821660048201526024016109c9565b600480546040517fa8d87a3b00000000000000000000000000000000000000000000000000000000815267ffffffffffffffff84169281019290925273ffffffffffffffffffffffffffffffffffffffff169063a8d87a3b90602401602060405180830381865afa158015612805573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128299190613e2b565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611a7e576040517f728fe07b0000000000000000000000000000000000000000000000000000000081523360048201526024016109c9565b67ffffffffffffffff821660009081526007602052604090206123cb90827f0000000000000000000000000000000000000000000000000000000000000000612c3a565b60608160000180548060200260200160405190810160405280929190818152602001828054801561126657602002820191906000526020600020905b81548152602001906001019080831161290f5750505050509050919050565b60008181526001830160205260408120548015612a17576000612952600183613d59565b855490915060009061296690600190613d59565b90508082146129cb5760008660000182815481106129865761298661388a565b90600052602060002001549050808760000184815481106129a9576129a961388a565b6000918252602080832090910192909255918252600188019052604090208390555b85548690806129dc576129dc613e48565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610690565b6000915050610690565b6000612a4085612a318486613e77565b612a3b9087613e8e565b612fec565b95945050505050565b8154600090612a7290700100000000000000000000000000000000900463ffffffff1642613d59565b90508015612b145760018301548354612aba916fffffffffffffffffffffffffffffffff80821692811691859170010000000000000000000000000000000090910416612a21565b83546fffffffffffffffffffffffffffffffff919091167fffffffffffffffffffffffff0000000000000000000000000000000000000000909116177001000000000000000000000000000000004263ffffffff16021783555b60208201518354612b3a916fffffffffffffffffffffffffffffffff9081169116612fec565b83548351151574010000000000000000000000000000000000000000027fffffffffffffffffffffff00ffffffff000000000000000000000000000000009091166fffffffffffffffffffffffffffffffff92831617178455602083015160408085015183167001000000000000000000000000000000000291909216176001850155517f9ea3374b67bf275e6bb9c8ae68f9cae023e1c528b4b27e092f0bb209d3531c19906122f7908490613def565b6000818152600183016020526040812054612c3257508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610690565b506000610690565b825474010000000000000000000000000000000000000000900460ff161580612c61575081155b15612c6b57505050565b825460018401546fffffffffffffffffffffffffffffffff80831692911690600090612cb190700100000000000000000000000000000000900463ffffffff1642613d59565b90508015612d715781831115612cf3576040517f9725942a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001860154612d2d9083908590849070010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff16612a21565b86547fffffffffffffffffffffffff00000000ffffffffffffffffffffffffffffffff167001000000000000000000000000000000004263ffffffff160217875592505b84821015612e285773ffffffffffffffffffffffffffffffffffffffff8416612dd0576040517ff94ebcd100000000000000000000000000000000000000000000000000000000815260048101839052602481018690526044016109c9565b6040517f1a76572a000000000000000000000000000000000000000000000000000000008152600481018390526024810186905273ffffffffffffffffffffffffffffffffffffffff851660448201526064016109c9565b84831015612f3b5760018681015470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff16906000908290612e6c9082613d59565b612e76878a613d59565b612e809190613e8e565b612e8a9190613ea1565b905073ffffffffffffffffffffffffffffffffffffffff8616612ee3576040517f15279c0800000000000000000000000000000000000000000000000000000000815260048101829052602481018690526044016109c9565b6040517fd0c8d23a000000000000000000000000000000000000000000000000000000008152600481018290526024810186905273ffffffffffffffffffffffffffffffffffffffff871660448201526064016109c9565b612f458584613d59565b86547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff82161787556040518681529093507f1871cdf8010e63f2eb8384381a68dfa7416dc571a5517e66e88b2d2d0c0a690a9060200160405180910390a1505050505050565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001830160205260408120541515611cb9565b6000818310612ffb5781611cb9565b5090919050565b50805461300e906138b9565b6000825580601f1061301e575050565b601f016020900490600052602060002090810190611a7e9190613056565b5080546000825590600052602060002090810190611a7e91905b5b8082111561306b5760008155600101613057565b5090565b60006020828403121561308157600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611cb957600080fd5b73ffffffffffffffffffffffffffffffffffffffff81168114611a7e57600080fd5b6000602082840312156130e557600080fd5b8135611cb9816130b1565b60006020828403121561310257600080fd5b813567ffffffffffffffff81111561311957600080fd5b82016101008185031215611cb957600080fd5b67ffffffffffffffff81168114611a7e57600080fd5b60008060006040848603121561315757600080fd5b83356131628161312c565b9250602084013567ffffffffffffffff8082111561317f57600080fd5b818601915086601f83011261319357600080fd5b8135818111156131a257600080fd5b8760208285010111156131b457600080fd5b6020830194508093505050509250925092565b60008083601f8401126131d957600080fd5b50813567ffffffffffffffff8111156131f157600080fd5b6020830191508360208260051b850101111561320c57600080fd5b9250929050565b6000806000806040858703121561322957600080fd5b843567ffffffffffffffff8082111561324157600080fd5b61324d888389016131c7565b9096509450602087013591508082111561326657600080fd5b50613273878288016131c7565b95989497509550505050565b60006020828403121561329157600080fd5b8135611cb98161312c565b6000602082840312156132ae57600080fd5b813567ffffffffffffffff8111156132c557600080fd5b820160a08185031215611cb957600080fd5b60005b838110156132f25781810151838201526020016132da565b50506000910152565b600081518084526133138160208601602086016132d7565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600082516040602084015261336160608401826132fb565b905060208401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0848303016040850152612a4082826132fb565b600060208083016020845280855180835260408601915060408160051b87010192506020870160005b82811015613411577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08886030184526133ff8583516132fb565b945092850192908501906001016133c5565b5092979650505050505050565b6020808252825182820181905260009190848201906040850190845b8181101561346c57835173ffffffffffffffffffffffffffffffffffffffff168352928401929184019160010161343a565b50909695505050505050565b602081526000611cb960208301846132fb565b6020808252825182820181905260009190848201906040850190845b8181101561346c57835167ffffffffffffffff16835292840192918401916001016134a7565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715613543576135436134cd565b604052919050565b8015158114611a7e57600080fd5b80356fffffffffffffffffffffffffffffffff8116811461357957600080fd5b919050565b60006060828403121561359057600080fd5b6040516060810181811067ffffffffffffffff821117156135b3576135b36134cd565b60405290508082356135c48161354b565b81526135d260208401613559565b60208201526135e360408401613559565b60408201525092915050565b600080600060e0848603121561360457600080fd5b833561360f8161312c565b925061361e856020860161357e565b915061362d856080860161357e565b90509250925092565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261366b57600080fd5b83018035915067ffffffffffffffff82111561368657600080fd5b60200191503681900382131561320c57600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b67ffffffffffffffff84168152604060208201526000612a4060408301848661369b565b60006020828403121561371a57600080fd5b8151611cb98161312c565b8183823760009101908152919050565b60006020828403121561374757600080fd5b8151611cb98161354b565b67ffffffffffffffff8516815260606020820152600061377660608301858761369b565b905082604083015295945050505050565b600067ffffffffffffffff8211156137a1576137a16134cd565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600080604083850312156137e057600080fd5b82519150602083015167ffffffffffffffff8111156137fe57600080fd5b8301601f8101851361380f57600080fd5b805161382261381d82613787565b6134fc565b81815286602083850101111561383757600080fd5b6138488260208301602086016132d7565b8093505050509250929050565b600082516138678184602087016132d7565b9190910192915050565b60006020828403121561388357600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600181811c908216806138cd57607f821691505b602082108103613906577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b6020815260006108f760208301848661369b565b600082357ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee183360301811261386757600080fd5b600082601f83011261396557600080fd5b813561397361381d82613787565b81815284602083860101111561398857600080fd5b816020850160208301376000918101602001919091529392505050565b600082601f8301126139b657600080fd5b8135602067ffffffffffffffff808311156139d3576139d36134cd565b8260051b6139e28382016134fc565b93845285810183019383810190888611156139fc57600080fd5b84880192505b85831015613a3857823584811115613a1a5760008081fd5b613a288a87838c0101613954565b8352509184019190840190613a02565b98975050505050505050565b60006101208236031215613a5757600080fd5b60405160a0810167ffffffffffffffff8282108183111715613a7b57613a7b6134cd565b8160405284359150613a8c8261312c565b90825260208401359080821115613aa257600080fd5b613aae368387016139a5565b60208401526040850135915080821115613ac757600080fd5b50613ad436828601613954565b604083015250613ae7366060850161357e565b6060820152613af93660c0850161357e565b608082015292915050565b601f821115610a12576000816000526020600020601f850160051c81016020861015613b2d5750805b601f850160051c820191505b81811015613b4c57828155600101613b39565b505050505050565b815167ffffffffffffffff811115613b6e57613b6e6134cd565b613b8281613b7c84546138b9565b84613b04565b602080601f831160018114613bd55760008415613b9f5750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b178555613b4c565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b82811015613c2257888601518255948401946001909101908401613c03565b5085821015613c5e57878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b600061010067ffffffffffffffff87168352806020840152613c92818401876132fb565b8551151560408581019190915260208701516fffffffffffffffffffffffffffffffff9081166060870152908701511660808501529150613cd09050565b8251151560a083015260208301516fffffffffffffffffffffffffffffffff90811660c084015260408401511660e0830152612a40565b67ffffffffffffffff831681526040602082015260006108f760408301846132fb565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561069057610690613d2a565b67ffffffffffffffff8416815260e08101613db860208301858051151582526020808201516fffffffffffffffffffffffffffffffff9081169184019190915260409182015116910152565b82511515608083015260208301516fffffffffffffffffffffffffffffffff90811660a084015260408401511660c08301526108f7565b6060810161069082848051151582526020808201516fffffffffffffffffffffffffffffffff9081169184019190915260409182015116910152565b600060208284031215613e3d57600080fd5b8151611cb9816130b1565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b808202811582820484141761069057610690613d2a565b8082018082111561069057610690613d2a565b600082613ed7577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b50049056fea164736f6c6343000818000a", } var CLAdapterABI = CLAdapterMetaData.ABI var CLAdapterBin = CLAdapterMetaData.Bin -func DeployCLAdapter(auth *bind.TransactOpts, backend bind.ContractBackend, bridge_ common.Address, tokenPool_ common.Address, executionGasLimit_ *big.Int) (common.Address, *types.Transaction, *CLAdapter, error) { +func DeployCLAdapter(auth *bind.TransactOpts, backend bind.ContractBackend, bridge_ common.Address, executionGasLimit_ *big.Int, ccipRouter_ common.Address, allowlist_ []common.Address, rmnProxy_ common.Address, attestationEnable_ bool) (common.Address, *types.Transaction, *CLAdapter, error) { parsed, err := CLAdapterMetaData.GetAbi() if err != nil { return common.Address{}, nil, nil, err @@ -48,7 +48,7 @@ func DeployCLAdapter(auth *bind.TransactOpts, backend bind.ContractBackend, brid return common.Address{}, nil, nil, errors.New("GetABI returned nil") } - address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(CLAdapterBin), backend, bridge_, tokenPool_, executionGasLimit_) + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(CLAdapterBin), backend, bridge_, executionGasLimit_, ccipRouter_, allowlist_, rmnProxy_, attestationEnable_) if err != nil { return common.Address{}, nil, nil, err } diff --git a/core/gethwrappers/ccip/generated/lbtc_token_pool/lbtc_token_pool.go b/core/gethwrappers/ccip/generated/lbtc_token_pool/lbtc_token_pool.go index b51226b939..13ac5716fd 100644 --- a/core/gethwrappers/ccip/generated/lbtc_token_pool/lbtc_token_pool.go +++ b/core/gethwrappers/ccip/generated/lbtc_token_pool/lbtc_token_pool.go @@ -81,15 +81,15 @@ type TokenPoolChainUpdate struct { } var LombardTokenPoolMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"internalType\":\"contractIERC20\",\"name\":\"lbtc_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"ccipRouter_\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"allowlist_\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"rmnProxy_\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"attestationEnable_\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"capacity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"requested\",\"type\":\"uint256\"}],\"name\":\"AggregateValueMaxCapacityExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"minWaitInSeconds\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"available\",\"type\":\"uint256\"}],\"name\":\"AggregateValueRateLimitReached\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AllowListNotEnabled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BucketOverfilled\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"CallerIsNotARampOnRouter\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CannotTransferToSelf\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"chainSelector\",\"type\":\"uint64\"}],\"name\":\"ChainAlreadyExists\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"remoteChainSelector\",\"type\":\"uint64\"}],\"name\":\"ChainNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CursedByRMN\",\"type\":\"error\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"isEnabled\",\"type\":\"bool\"},{\"internalType\":\"uint128\",\"name\":\"capacity\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"rate\",\"type\":\"uint128\"}],\"internalType\":\"structRateLimiter.Config\",\"name\":\"config\",\"type\":\"tuple\"}],\"name\":\"DisabledNonZeroRateLimit\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"expected\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"actual\",\"type\":\"uint8\"}],\"name\":\"InvalidDecimalArgs\",\"type\":\"error\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"isEnabled\",\"type\":\"bool\"},{\"internalType\":\"uint128\",\"name\":\"capacity\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"rate\",\"type\":\"uint128\"}],\"internalType\":\"structRateLimiter.Config\",\"name\":\"rateLimiterConfig\",\"type\":\"tuple\"}],\"name\":\"InvalidRateLimitRate\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"sourcePoolData\",\"type\":\"bytes\"}],\"name\":\"InvalidRemoteChainDecimals\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"remoteChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"remotePoolAddress\",\"type\":\"bytes\"}],\"name\":\"InvalidRemotePoolForChain\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"sourcePoolAddress\",\"type\":\"bytes\"}],\"name\":\"InvalidSourcePoolAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"InvalidToken\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MustBeProposedOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"remoteChainSelector\",\"type\":\"uint64\"}],\"name\":\"NonExistentChain\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyCallableByOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"remoteDecimals\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"localDecimals\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"remoteAmount\",\"type\":\"uint256\"}],\"name\":\"OverflowDetected\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OwnerCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"remoteChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"remotePoolAddress\",\"type\":\"bytes\"}],\"name\":\"PoolAlreadyAdded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RateLimitMustBeDisabled\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"SenderNotAllowed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"capacity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"requested\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"}],\"name\":\"TokenMaxCapacityExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"minWaitInSeconds\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"available\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"}],\"name\":\"TokenRateLimitReached\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"Unauthorized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddressNotAllowed\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"AllowListAdd\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"AllowListRemove\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Burned\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"remoteChainSelector\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"remoteToken\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"isEnabled\",\"type\":\"bool\"},{\"internalType\":\"uint128\",\"name\":\"capacity\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"rate\",\"type\":\"uint128\"}],\"indexed\":false,\"internalType\":\"structRateLimiter.Config\",\"name\":\"outboundRateLimiterConfig\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"isEnabled\",\"type\":\"bool\"},{\"internalType\":\"uint128\",\"name\":\"capacity\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"rate\",\"type\":\"uint128\"}],\"indexed\":false,\"internalType\":\"structRateLimiter.Config\",\"name\":\"inboundRateLimiterConfig\",\"type\":\"tuple\"}],\"name\":\"ChainAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"remoteChainSelector\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"isEnabled\",\"type\":\"bool\"},{\"internalType\":\"uint128\",\"name\":\"capacity\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"rate\",\"type\":\"uint128\"}],\"indexed\":false,\"internalType\":\"structRateLimiter.Config\",\"name\":\"outboundRateLimiterConfig\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"isEnabled\",\"type\":\"bool\"},{\"internalType\":\"uint128\",\"name\":\"capacity\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"rate\",\"type\":\"uint128\"}],\"indexed\":false,\"internalType\":\"structRateLimiter.Config\",\"name\":\"inboundRateLimiterConfig\",\"type\":\"tuple\"}],\"name\":\"ChainConfigured\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"remoteChainSelector\",\"type\":\"uint64\"}],\"name\":\"ChainRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"isEnabled\",\"type\":\"bool\"},{\"internalType\":\"uint128\",\"name\":\"capacity\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"rate\",\"type\":\"uint128\"}],\"indexed\":false,\"internalType\":\"structRateLimiter.Config\",\"name\":\"config\",\"type\":\"tuple\"}],\"name\":\"ConfigChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Locked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Minted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"OwnershipTransferRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"rateLimitAdmin\",\"type\":\"address\"}],\"name\":\"RateLimitAdminSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Released\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"remoteChainSelector\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"remotePoolAddress\",\"type\":\"bytes\"}],\"name\":\"RemotePoolAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"remoteChainSelector\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"remotePoolAddress\",\"type\":\"bytes\"}],\"name\":\"RemotePoolRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"oldRouter\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newRouter\",\"type\":\"address\"}],\"name\":\"RouterUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"tokens\",\"type\":\"uint256\"}],\"name\":\"TokensConsumed\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"acceptOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"adapter\",\"outputs\":[{\"internalType\":\"contractCLAdapter\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"remoteChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"remotePoolAddress\",\"type\":\"bytes\"}],\"name\":\"addRemotePool\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"removes\",\"type\":\"address[]\"},{\"internalType\":\"address[]\",\"name\":\"adds\",\"type\":\"address[]\"}],\"name\":\"applyAllowListUpdates\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64[]\",\"name\":\"remoteChainSelectorsToRemove\",\"type\":\"uint64[]\"},{\"components\":[{\"internalType\":\"uint64\",\"name\":\"remoteChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"bytes[]\",\"name\":\"remotePoolAddresses\",\"type\":\"bytes[]\"},{\"internalType\":\"bytes\",\"name\":\"remoteTokenAddress\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"isEnabled\",\"type\":\"bool\"},{\"internalType\":\"uint128\",\"name\":\"capacity\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"rate\",\"type\":\"uint128\"}],\"internalType\":\"structRateLimiter.Config\",\"name\":\"outboundRateLimiterConfig\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"isEnabled\",\"type\":\"bool\"},{\"internalType\":\"uint128\",\"name\":\"capacity\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"rate\",\"type\":\"uint128\"}],\"internalType\":\"structRateLimiter.Config\",\"name\":\"inboundRateLimiterConfig\",\"type\":\"tuple\"}],\"internalType\":\"structTokenPool.ChainUpdate[]\",\"name\":\"chainsToAdd\",\"type\":\"tuple[]\"}],\"name\":\"applyChainUpdates\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAllowList\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAllowListEnabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"remoteChainSelector\",\"type\":\"uint64\"}],\"name\":\"getCurrentInboundRateLimiterState\",\"outputs\":[{\"components\":[{\"internalType\":\"uint128\",\"name\":\"tokens\",\"type\":\"uint128\"},{\"internalType\":\"uint32\",\"name\":\"lastUpdated\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"isEnabled\",\"type\":\"bool\"},{\"internalType\":\"uint128\",\"name\":\"capacity\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"rate\",\"type\":\"uint128\"}],\"internalType\":\"structRateLimiter.TokenBucket\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"remoteChainSelector\",\"type\":\"uint64\"}],\"name\":\"getCurrentOutboundRateLimiterState\",\"outputs\":[{\"components\":[{\"internalType\":\"uint128\",\"name\":\"tokens\",\"type\":\"uint128\"},{\"internalType\":\"uint32\",\"name\":\"lastUpdated\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"isEnabled\",\"type\":\"bool\"},{\"internalType\":\"uint128\",\"name\":\"capacity\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"rate\",\"type\":\"uint128\"}],\"internalType\":\"structRateLimiter.TokenBucket\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRateLimitAdmin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"remoteChainSelector\",\"type\":\"uint64\"}],\"name\":\"getRemotePools\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"\",\"type\":\"bytes[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"remoteChainSelector\",\"type\":\"uint64\"}],\"name\":\"getRemoteToken\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRmnProxy\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"rmnProxy\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRouter\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"router\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getSupportedChains\",\"outputs\":[{\"internalType\":\"uint64[]\",\"name\":\"\",\"type\":\"uint64[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getToken\",\"outputs\":[{\"internalType\":\"contractIERC20\",\"name\":\"token\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTokenDecimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isAttestationEnabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"remoteChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"remotePoolAddress\",\"type\":\"bytes\"}],\"name\":\"isRemotePool\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"remoteChainSelector\",\"type\":\"uint64\"}],\"name\":\"isSupportedChain\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"isSupportedToken\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"receiver\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"remoteChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"originalSender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"localToken\",\"type\":\"address\"}],\"internalType\":\"structPool.LockOrBurnInV1\",\"name\":\"lockOrBurnIn\",\"type\":\"tuple\"}],\"name\":\"lockOrBurn\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"destTokenAddress\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"destPoolData\",\"type\":\"bytes\"}],\"internalType\":\"structPool.LockOrBurnOutV1\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"originalSender\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"remoteChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"localToken\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"sourcePoolAddress\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"sourcePoolData\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"offchainTokenData\",\"type\":\"bytes\"}],\"internalType\":\"structPool.ReleaseOrMintInV1\",\"name\":\"releaseOrMintIn\",\"type\":\"tuple\"}],\"name\":\"releaseOrMint\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"destinationAmount\",\"type\":\"uint256\"}],\"internalType\":\"structPool.ReleaseOrMintOutV1\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"remoteChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"remotePoolAddress\",\"type\":\"bytes\"}],\"name\":\"removeRemotePool\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contractCLAdapter\",\"name\":\"adapter_\",\"type\":\"address\"}],\"name\":\"setAdapter\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"attestationEnable_\",\"type\":\"bool\"}],\"name\":\"setAttestationEnabled\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"remoteChainSelector\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"isEnabled\",\"type\":\"bool\"},{\"internalType\":\"uint128\",\"name\":\"capacity\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"rate\",\"type\":\"uint128\"}],\"internalType\":\"structRateLimiter.Config\",\"name\":\"outboundConfig\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"isEnabled\",\"type\":\"bool\"},{\"internalType\":\"uint128\",\"name\":\"capacity\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"rate\",\"type\":\"uint128\"}],\"internalType\":\"structRateLimiter.Config\",\"name\":\"inboundConfig\",\"type\":\"tuple\"}],\"name\":\"setChainRateLimiterConfig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"rateLimitAdmin\",\"type\":\"address\"}],\"name\":\"setRateLimitAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newRouter\",\"type\":\"address\"}],\"name\":\"setRouter\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", - Bin: "0x6101006040523480156200001257600080fd5b50604051620047b4380380620047b48339810160408190526200003591620005bf565b846008848487336000816200005d57604051639b15e16f60e01b815260040160405180910390fd5b600180546001600160a01b0319166001600160a01b03848116919091179091558116156200009057620000908162000209565b50506001600160a01b0385161580620000b057506001600160a01b038116155b80620000c357506001600160a01b038216155b15620000e2576040516342bcdf7f60e11b815260040160405180910390fd5b6001600160a01b03808616608081905290831660c0526040805163313ce56760e01b8152905163313ce567916004808201926020929091908290030181865afa92505050801562000152575060408051601f3d908101601f191682019092526200014f91810190620006e5565b60015b1562000192578060ff168560ff161462000190576040516332ad3e0760e11b815260ff80871660048301528216602482015260440160405180910390fd5b505b60ff841660a052600480546001600160a01b0319166001600160a01b038316179055825115801560e052620001dc57604080516000815260208101909152620001dc908462000283565b5050600a8054941515600160a01b0260ff60a01b1990951694909417909355506200075f95505050505050565b336001600160a01b038216036200023357604051636d6c4ee560e11b815260040160405180910390fd5b600080546001600160a01b0319166001600160a01b03838116918217835560015460405192939116917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b60e051620002a4576040516335f4a7b360e01b815260040160405180910390fd5b60005b82518110156200032f576000838281518110620002c857620002c862000711565b60209081029190910101519050620002e2600282620003e0565b1562000325576040516001600160a01b03821681527f800671136ab6cfee9fbe5ed1fb7ca417811aca3cf864800d127b927adedf75669060200160405180910390a15b50600101620002a7565b5060005b8151811015620003db57600082828151811062000354576200035462000711565b6020026020010151905060006001600160a01b0316816001600160a01b031603620003805750620003d2565b6200038d60028262000400565b15620003d0576040516001600160a01b03821681527f2640d4d76caf8bf478aabfa982fa4e1c4eb71a37f93cd15e80dbc657911546d89060200160405180910390a15b505b60010162000333565b505050565b6000620003f7836001600160a01b03841662000417565b90505b92915050565b6000620003f7836001600160a01b0384166200051b565b60008181526001830160205260408120548015620005105760006200043e60018362000727565b8554909150600090620004549060019062000727565b9050808214620004c057600086600001828154811062000478576200047862000711565b90600052602060002001549050808760000184815481106200049e576200049e62000711565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080620004d457620004d462000749565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050620003fa565b6000915050620003fa565b60008181526001830160205260408120546200056457508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155620003fa565b506000620003fa565b6001600160a01b03811681146200058357600080fd5b50565b805162000593816200056d565b919050565b634e487b7160e01b600052604160045260246000fd5b805180151581146200059357600080fd5b600080600080600060a08688031215620005d857600080fd5b8551620005e5816200056d565b80955050602080870151620005fa816200056d565b60408801519095506001600160401b03808211156200061857600080fd5b818901915089601f8301126200062d57600080fd5b81518181111562000642576200064262000598565b8060051b604051601f19603f830116810181811085821117156200066a576200066a62000598565b60405291825284820192508381018501918c8311156200068957600080fd5b938501935b82851015620006b257620006a28562000586565b845293850193928501926200068e565b809850505050505050620006c96060870162000586565b9150620006d960808701620005ae565b90509295509295909350565b600060208284031215620006f857600080fd5b815160ff811681146200070a57600080fd5b9392505050565b634e487b7160e01b600052603260045260246000fd5b81810381811115620003fa57634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603160045260246000fd5b60805160a05160c05160e051613fe3620007d1600039600081816105a301528181611df201526127a101526000818161057d01528181611be701526120de015260006102dc0152600081816102640152818161029801528181610c7a01528181612737015261298c0152613fe36000f3fe608060405234801561001057600080fd5b50600436106101f05760003560e01c80639a4575b91161010f578063c0d78655116100a2578063dc0bd97111610071578063dc0bd9711461057b578063e0351e13146105a1578063e8a1da17146105c7578063f2fde38b146105da57600080fd5b8063c0d786551461052d578063c4bffe2b14610540578063c75eea9c14610555578063cf7401f31461056857600080fd5b8063acfecf91116100de578063acfecf911461046d578063af58d59f14610480578063b0f479a1146104ef578063b79465801461050d57600080fd5b80639a4575b914610405578063a42a7b8b14610425578063a7cd63b714610445578063ab1da79c1461045a57600080fd5b806355b961561161018757806379ba50971161015657806379ba5097146103b95780637d54534e146103c15780638926f54f146103d45780638da5cb5b146103e757600080fd5b806355b96156146103505780635b665be81461037557806362ddd3c4146103885780636d3d1a581461039b57600080fd5b806324f65ee7116101c357806324f65ee7146102d557806339077537146103065780634c5ef0ed1461032857806354c8a4f31461033b57600080fd5b806301ffc9a7146101f557806303eadcfc1461021d57806321df0da714610262578063240028e814610288575b600080fd5b61020861020336600461314c565b6105ed565b60405190151581526020015b60405180910390f35b600a5461023d9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610214565b7f000000000000000000000000000000000000000000000000000000000000000061023d565b6102086102963660046131b0565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff90811691161490565b60405160ff7f0000000000000000000000000000000000000000000000000000000000000000168152602001610214565b6103196103143660046131cd565b6106d2565b60405190518152602001610214565b61020861033636600461321f565b6108f1565b61034e6103493660046132f0565b61093b565b005b600a546102089074010000000000000000000000000000000000000000900460ff1681565b61034e61038336600461336a565b6109b6565b61034e61039636600461321f565b610a08565b60095473ffffffffffffffffffffffffffffffffffffffff1661023d565b61034e610aa5565b61034e6103cf3660046131b0565b610b73565b6102086103e2366004613387565b610bf4565b60015473ffffffffffffffffffffffffffffffffffffffff1661023d565b6104186104133660046133a4565b610c0b565b604051610214919061344d565b610438610433366004613387565b610ee7565b60405161021491906134a4565b61044d611052565b6040516102149190613526565b61034e6104683660046131b0565b611063565b61034e61047b36600461321f565b6110b2565b61049361048e366004613387565b6111ca565b604051610214919081516fffffffffffffffffffffffffffffffff908116825260208084015163ffffffff1690830152604080840151151590830152606080840151821690830152608092830151169181019190915260a00190565b60045473ffffffffffffffffffffffffffffffffffffffff1661023d565b61052061051b366004613387565b61129f565b6040516102149190613580565b61034e61053b3660046131b0565b61134f565b61054861142a565b6040516102149190613593565b610493610563366004613387565b6114e2565b61034e6105763660046136e9565b6115b4565b7f000000000000000000000000000000000000000000000000000000000000000061023d565b7f0000000000000000000000000000000000000000000000000000000000000000610208565b61034e6105d53660046132f0565b611638565b61034e6105e83660046131b0565b611b4a565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167faff2afbf00000000000000000000000000000000000000000000000000000000148061068057507fffffffff0000000000000000000000000000000000000000000000000000000082167f0e64dd2900000000000000000000000000000000000000000000000000000000145b806106cc57507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b6040805160208101909152600081526106ea82611b5e565b600a5460009074010000000000000000000000000000000000000000900460ff16156107b357600a5473ffffffffffffffffffffffffffffffffffffffff16635391a40561073e6040860160208701613387565b61074b60e0870187613730565b6040518463ffffffff1660e01b8152600401610769939291906137de565b6020604051808303816000875af1158015610788573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107ac9190613802565b9050610852565b600a5473ffffffffffffffffffffffffffffffffffffffff16630c373d746107e16040860160208701613387565b6107ee60c0870187613730565b6040518463ffffffff1660e01b815260040161080c939291906137de565b6020604051808303816000875af115801561082b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061084f9190613802565b90505b61086260608401604085016131b0565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f9d228d69b5fdb8d273a2336f8fb8612d039631024ea9bf09c424a9503aa078f08367ffffffffffffffff166040516108ca91815260200190565b60405180910390a3604080516020810190915267ffffffffffffffff909116815292915050565b6000610933838360405161090692919061381f565b604080519182900390912067ffffffffffffffff8716600090815260076020529190912060050190611d82565b949350505050565b610943611d9d565b6109b084848080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020808802828101820190935287825290935087925086918291850190849080828437600092019190915250611df092505050565b50505050565b6109be611d9d565b600a805491151574010000000000000000000000000000000000000000027fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff909216919091179055565b610a10611d9d565b610a1983610bf4565b610a60576040517f1e670e4b00000000000000000000000000000000000000000000000000000000815267ffffffffffffffff841660048201526024015b60405180910390fd5b610aa08383838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611fa692505050565b505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610af6576040517f02b543c600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000008082163390811790935560008054909116815560405173ffffffffffffffffffffffffffffffffffffffff909216929183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a350565b610b7b611d9d565b600980547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f44676b5284b809a22248eba0da87391d79098be38bb03154be88a58bf4d091749060200160405180910390a150565b60006106cc600567ffffffffffffffff8416611d82565b6040805180820190915260608082526020820152610c28826120a0565b600a546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9182166004820152606084013560248201527f00000000000000000000000000000000000000000000000000000000000000009091169063a9059cbb906044016020604051808303816000875af1158015610cc5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ce9919061382f565b50600a54600090819073ffffffffffffffffffffffffffffffffffffffff1663550e7ab2610d1d6040870160208801613387565b610d278780613730565b88606001356040518563ffffffff1660e01b8152600401610d4b949392919061384c565b6000604051808303816000875af1158015610d6a573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610db091908101906138c7565b9092509050610dc560608501604086016131b0565b73ffffffffffffffffffffffffffffffffffffffff167f696de425f79f4a40bc6d2122ca50507f0efbeabbff86a84871b7196ab8ea8df783604051610e0c91815260200190565b60405180910390a2600a5460609074010000000000000000000000000000000000000000900460ff1615610eb257600282604051610e4a919061394f565b602060405180830381855afa158015610e67573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190610e8a919061396b565b604051602001610e9c91815260200190565b6040516020818303038152906040529050610eb5565b50805b6040518060400160405280610ed687602001602081019061051b9190613387565b815260200191909152949350505050565b67ffffffffffffffff8116600090815260076020526040812060609190610f109060050161222c565b90506000815167ffffffffffffffff811115610f2e57610f2e6135d5565b604051908082528060200260200182016040528015610f6157816020015b6060815260200190600190039081610f4c5790505b50905060005b825181101561104a5760086000848381518110610f8657610f86613984565b602002602001015181526020019081526020016000208054610fa7906139b3565b80601f0160208091040260200160405190810160405280929190818152602001828054610fd3906139b3565b80156110205780601f10610ff557610100808354040283529160200191611020565b820191906000526020600020905b81548152906001019060200180831161100357829003601f168201915b505050505082828151811061103757611037613984565b6020908102919091010152600101610f67565b509392505050565b606061105e600261222c565b905090565b61106b611d9d565b600a80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6110ba611d9d565b6110c383610bf4565b611105576040517f1e670e4b00000000000000000000000000000000000000000000000000000000815267ffffffffffffffff84166004820152602401610a57565b611145828260405161111892919061381f565b604080519182900390912067ffffffffffffffff8616600090815260076020529190912060050190612239565b611181578282826040517f74f23c7c000000000000000000000000000000000000000000000000000000008152600401610a57939291906137de565b8267ffffffffffffffff167f52d00ee4d9bd51b40168f2afc5848837288ce258784ad914278791464b3f4d7683836040516111bd929190613a06565b60405180910390a2505050565b6040805160a08101825260008082526020820181905291810182905260608101829052608081019190915267ffffffffffffffff8216600090815260076020908152604091829020825160a08101845260028201546fffffffffffffffffffffffffffffffff808216835270010000000000000000000000000000000080830463ffffffff16958401959095527401000000000000000000000000000000000000000090910460ff1615159482019490945260039091015480841660608301529190910490911660808201526106cc90612245565b67ffffffffffffffff811660009081526007602052604090206004018054606091906112ca906139b3565b80601f01602080910402602001604051908101604052809291908181526020018280546112f6906139b3565b80156113435780601f1061131857610100808354040283529160200191611343565b820191906000526020600020905b81548152906001019060200180831161132657829003601f168201915b50505050509050919050565b611357611d9d565b73ffffffffffffffffffffffffffffffffffffffff81166113a4576040517f8579befe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6004805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff000000000000000000000000000000000000000083168117909355604080519190921680825260208201939093527f02dc5c233404867c793b749c6d644beb2277536d18a7e7974d3f238e4c6f1684910160405180910390a15050565b60606000611438600561222c565b90506000815167ffffffffffffffff811115611456576114566135d5565b60405190808252806020026020018201604052801561147f578160200160208202803683370190505b50905060005b82518110156114db578281815181106114a0576114a0613984565b60200260200101518282815181106114ba576114ba613984565b67ffffffffffffffff90921660209283029190910190910152600101611485565b5092915050565b6040805160a08101825260008082526020820181905291810182905260608101829052608081019190915267ffffffffffffffff8216600090815260076020908152604091829020825160a08101845281546fffffffffffffffffffffffffffffffff808216835270010000000000000000000000000000000080830463ffffffff16958401959095527401000000000000000000000000000000000000000090910460ff1615159482019490945260019091015480841660608301529190910490911660808201526106cc90612245565b60095473ffffffffffffffffffffffffffffffffffffffff1633148015906115f4575060015473ffffffffffffffffffffffffffffffffffffffff163314155b1561162d576040517f8e4a23d6000000000000000000000000000000000000000000000000000000008152336004820152602401610a57565b610aa08383836122f7565b611640611d9d565b60005b8381101561182d57600085858381811061165f5761165f613984565b90506020020160208101906116749190613387565b905061168b600567ffffffffffffffff8316612239565b6116cd576040517f1e670e4b00000000000000000000000000000000000000000000000000000000815267ffffffffffffffff82166004820152602401610a57565b67ffffffffffffffff811660009081526007602052604081206116f29060050161222c565b905060005b815181101561175e5761175582828151811061171557611715613984565b6020026020010151600760008667ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060050161223990919063ffffffff16565b506001016116f7565b5067ffffffffffffffff8216600090815260076020526040812080547fffffffffffffffffffffff000000000000000000000000000000000000000000908116825560018201839055600282018054909116905560038101829055906117c760048301826130df565b60058201600081816117d98282613119565b505060405167ffffffffffffffff871681527f5204aec90a3c794d8e90fded8b46ae9c7c552803e7e832e0c1d358396d8599169450602001925061181b915050565b60405180910390a15050600101611643565b5060005b81811015611b4357600083838381811061184d5761184d613984565b905060200281019061185f9190613a1a565b61186890613b3e565b9050611879816060015160006123e1565b611888816080015160006123e1565b8060400151516000036118c7576040517f8579befe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80516118df9060059067ffffffffffffffff1661251e565b6119245780516040517f1d5ad3c500000000000000000000000000000000000000000000000000000000815267ffffffffffffffff9091166004820152602401610a57565b805167ffffffffffffffff16600090815260076020908152604091829020825160a08082018552606080870180518601516fffffffffffffffffffffffffffffffff90811680865263ffffffff42168689018190528351511515878b0181905284518a0151841686890181905294518b0151841660809889018190528954740100000000000000000000000000000000000000009283027fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff7001000000000000000000000000000000008087027fffffffffffffffffffffffff000000000000000000000000000000000000000094851690981788178216929092178d5592810290971760018c01558c519889018d52898e0180518d01518716808b528a8e019590955280515115158a8f018190528151909d01518716988a01899052518d0151909516979098018790526002890180549a909102999093161717909416959095179092559092029091176003820155908201516004820190611aa79082613c4e565b5060005b826020015151811015611aeb57611ae3836000015184602001518381518110611ad657611ad6613984565b6020026020010151611fa6565b600101611aab565b507f8d340f17e19058004c20453540862a9c62778504476f6756755cb33bcd6c38c28260000151836040015184606001518560800151604051611b319493929190613d68565b60405180910390a15050600101611831565b5050505050565b611b52611d9d565b611b5b8161252a565b50565b611b7161029660a08301608084016131b0565b611bd057611b8560a08201608083016131b0565b6040517f961c9a4f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401610a57565b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016632cbc26bb611c1c6040840160208501613387565b60405160e083901b7fffffffff0000000000000000000000000000000000000000000000000000000016815260809190911b77ffffffffffffffff00000000000000000000000000000000166004820152602401602060405180830381865afa158015611c8d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cb1919061382f565b15611ce8576040517f53ad11d800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611d00611cfb6040830160208401613387565b6125ee565b611d20611d136040830160208401613387565b61033660a0840184613730565b611d6557611d3160a0820182613730565b6040517f24eb47e5000000000000000000000000000000000000000000000000000000008152600401610a57929190613a06565b611b5b611d786040830160208401613387565b8260600135612714565b600081815260018301602052604081205415155b9392505050565b60015473ffffffffffffffffffffffffffffffffffffffff163314611dee576040517f2b5c74de00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b7f0000000000000000000000000000000000000000000000000000000000000000611e47576040517f35f4a7b300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b8251811015611edd576000838281518110611e6757611e67613984565b60200260200101519050611e8581600261275b90919063ffffffff16565b15611ed45760405173ffffffffffffffffffffffffffffffffffffffff821681527f800671136ab6cfee9fbe5ed1fb7ca417811aca3cf864800d127b927adedf75669060200160405180910390a15b50600101611e4a565b5060005b8151811015610aa0576000828281518110611efe57611efe613984565b60200260200101519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611f425750611f9e565b611f4d60028261277d565b15611f9c5760405173ffffffffffffffffffffffffffffffffffffffff821681527f2640d4d76caf8bf478aabfa982fa4e1c4eb71a37f93cd15e80dbc657911546d89060200160405180910390a15b505b600101611ee1565b8051600003611fe1576040517f8579befe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805160208083019190912067ffffffffffffffff8416600090815260079092526040909120612013906005018261251e565b61204d5782826040517f393b8ad2000000000000000000000000000000000000000000000000000000008152600401610a57929190613e01565b60008181526008602052604090206120658382613c4e565b508267ffffffffffffffff167f7d628c9a1796743d365ab521a8b2a4686e419b3269919dc9145ea2ce853b54ea836040516111bd9190613580565b6120b361029660a08301608084016131b0565b6120c757611b8560a08201608083016131b0565b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016632cbc26bb6121136040840160208501613387565b60405160e083901b7fffffffff0000000000000000000000000000000000000000000000000000000016815260809190911b77ffffffffffffffff00000000000000000000000000000000166004820152602401602060405180830381865afa158015612184573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121a8919061382f565b156121df576040517f53ad11d800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6121f76121f260608301604084016131b0565b61279f565b61220f61220a6040830160208401613387565b61281e565b611b5b6122226040830160208401613387565b826060013561296c565b60606000611d96836129b0565b6000611d968383612a0b565b6040805160a0810182526000808252602082018190529181018290526060810182905260808101919091526122d382606001516fffffffffffffffffffffffffffffffff1683600001516fffffffffffffffffffffffffffffffff16846020015163ffffffff16426122b79190613e53565b85608001516fffffffffffffffffffffffffffffffff16612afe565b6fffffffffffffffffffffffffffffffff1682525063ffffffff4216602082015290565b61230083610bf4565b612342576040517f1e670e4b00000000000000000000000000000000000000000000000000000000815267ffffffffffffffff84166004820152602401610a57565b61234d8260006123e1565b67ffffffffffffffff831660009081526007602052604090206123709083612b26565b61237b8160006123e1565b67ffffffffffffffff831660009081526007602052604090206123a19060020182612b26565b7f0350d63aa5f270e01729d00d627eeb8f3429772b1818c016c66a588a864f912b8383836040516123d493929190613e66565b60405180910390a1505050565b8151156124ac5781602001516fffffffffffffffffffffffffffffffff1682604001516fffffffffffffffffffffffffffffffff16101580612437575060408201516fffffffffffffffffffffffffffffffff16155b1561247057816040517f8020d124000000000000000000000000000000000000000000000000000000008152600401610a579190613ee9565b80156124a8576040517f433fc33d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b60408201516fffffffffffffffffffffffffffffffff161515806124e5575060208201516fffffffffffffffffffffffffffffffff1615155b156124a857816040517fd68af9cc000000000000000000000000000000000000000000000000000000008152600401610a579190613ee9565b6000611d968383612cc8565b3373ffffffffffffffffffffffffffffffffffffffff821603612579576040517fdad89dca00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff838116918217835560015460405192939116917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b6125f781610bf4565b612639576040517fa9902c7e00000000000000000000000000000000000000000000000000000000815267ffffffffffffffff82166004820152602401610a57565b600480546040517f83826b2b00000000000000000000000000000000000000000000000000000000815267ffffffffffffffff84169281019290925233602483015273ffffffffffffffffffffffffffffffffffffffff16906383826b2b90604401602060405180830381865afa1580156126b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126dc919061382f565b611b5b576040517f728fe07b000000000000000000000000000000000000000000000000000000008152336004820152602401610a57565b67ffffffffffffffff821660009081526007602052604090206124a890600201827f0000000000000000000000000000000000000000000000000000000000000000612d17565b6000611d968373ffffffffffffffffffffffffffffffffffffffff8416612a0b565b6000611d968373ffffffffffffffffffffffffffffffffffffffff8416612cc8565b7f000000000000000000000000000000000000000000000000000000000000000015611b5b576127d060028261309a565b611b5b576040517fd0d2597600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602401610a57565b61282781610bf4565b612869576040517fa9902c7e00000000000000000000000000000000000000000000000000000000815267ffffffffffffffff82166004820152602401610a57565b600480546040517fa8d87a3b00000000000000000000000000000000000000000000000000000000815267ffffffffffffffff84169281019290925273ffffffffffffffffffffffffffffffffffffffff169063a8d87a3b90602401602060405180830381865afa1580156128e2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129069190613f25565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611b5b576040517f728fe07b000000000000000000000000000000000000000000000000000000008152336004820152602401610a57565b67ffffffffffffffff821660009081526007602052604090206124a890827f0000000000000000000000000000000000000000000000000000000000000000612d17565b60608160000180548060200260200160405190810160405280929190818152602001828054801561134357602002820191906000526020600020905b8154815260200190600101908083116129ec5750505050509050919050565b60008181526001830160205260408120548015612af4576000612a2f600183613e53565b8554909150600090612a4390600190613e53565b9050808214612aa8576000866000018281548110612a6357612a63613984565b9060005260206000200154905080876000018481548110612a8657612a86613984565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080612ab957612ab9613f42565b6001900381819060005260206000200160009055905585600101600086815260200190815260200160002060009055600193505050506106cc565b60009150506106cc565b6000612b1d85612b0e8486613f71565b612b189087613f88565b6130c9565b95945050505050565b8154600090612b4f90700100000000000000000000000000000000900463ffffffff1642613e53565b90508015612bf15760018301548354612b97916fffffffffffffffffffffffffffffffff80821692811691859170010000000000000000000000000000000090910416612afe565b83546fffffffffffffffffffffffffffffffff919091167fffffffffffffffffffffffff0000000000000000000000000000000000000000909116177001000000000000000000000000000000004263ffffffff16021783555b60208201518354612c17916fffffffffffffffffffffffffffffffff90811691166130c9565b83548351151574010000000000000000000000000000000000000000027fffffffffffffffffffffff00ffffffff000000000000000000000000000000009091166fffffffffffffffffffffffffffffffff92831617178455602083015160408085015183167001000000000000000000000000000000000291909216176001850155517f9ea3374b67bf275e6bb9c8ae68f9cae023e1c528b4b27e092f0bb209d3531c19906123d4908490613ee9565b6000818152600183016020526040812054612d0f575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556106cc565b5060006106cc565b825474010000000000000000000000000000000000000000900460ff161580612d3e575081155b15612d4857505050565b825460018401546fffffffffffffffffffffffffffffffff80831692911690600090612d8e90700100000000000000000000000000000000900463ffffffff1642613e53565b90508015612e4e5781831115612dd0576040517f9725942a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001860154612e0a9083908590849070010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff16612afe565b86547fffffffffffffffffffffffff00000000ffffffffffffffffffffffffffffffff167001000000000000000000000000000000004263ffffffff160217875592505b84821015612f055773ffffffffffffffffffffffffffffffffffffffff8416612ead576040517ff94ebcd10000000000000000000000000000000000000000000000000000000081526004810183905260248101869052604401610a57565b6040517f1a76572a000000000000000000000000000000000000000000000000000000008152600481018390526024810186905273ffffffffffffffffffffffffffffffffffffffff85166044820152606401610a57565b848310156130185760018681015470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff16906000908290612f499082613e53565b612f53878a613e53565b612f5d9190613f88565b612f679190613f9b565b905073ffffffffffffffffffffffffffffffffffffffff8616612fc0576040517f15279c080000000000000000000000000000000000000000000000000000000081526004810182905260248101869052604401610a57565b6040517fd0c8d23a000000000000000000000000000000000000000000000000000000008152600481018290526024810186905273ffffffffffffffffffffffffffffffffffffffff87166044820152606401610a57565b6130228584613e53565b86547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff82161787556040518681529093507f1871cdf8010e63f2eb8384381a68dfa7416dc571a5517e66e88b2d2d0c0a690a9060200160405180910390a1505050505050565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001830160205260408120541515611d96565b60008183106130d85781611d96565b5090919050565b5080546130eb906139b3565b6000825580601f106130fb575050565b601f016020900490600052602060002090810190611b5b9190613133565b5080546000825590600052602060002090810190611b5b91905b5b808211156131485760008155600101613134565b5090565b60006020828403121561315e57600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611d9657600080fd5b73ffffffffffffffffffffffffffffffffffffffff81168114611b5b57600080fd5b6000602082840312156131c257600080fd5b8135611d968161318e565b6000602082840312156131df57600080fd5b813567ffffffffffffffff8111156131f657600080fd5b82016101008185031215611d9657600080fd5b67ffffffffffffffff81168114611b5b57600080fd5b60008060006040848603121561323457600080fd5b833561323f81613209565b9250602084013567ffffffffffffffff8082111561325c57600080fd5b818601915086601f83011261327057600080fd5b81358181111561327f57600080fd5b87602082850101111561329157600080fd5b6020830194508093505050509250925092565b60008083601f8401126132b657600080fd5b50813567ffffffffffffffff8111156132ce57600080fd5b6020830191508360208260051b85010111156132e957600080fd5b9250929050565b6000806000806040858703121561330657600080fd5b843567ffffffffffffffff8082111561331e57600080fd5b61332a888389016132a4565b9096509450602087013591508082111561334357600080fd5b50613350878288016132a4565b95989497509550505050565b8015158114611b5b57600080fd5b60006020828403121561337c57600080fd5b8135611d968161335c565b60006020828403121561339957600080fd5b8135611d9681613209565b6000602082840312156133b657600080fd5b813567ffffffffffffffff8111156133cd57600080fd5b820160a08185031215611d9657600080fd5b60005b838110156133fa5781810151838201526020016133e2565b50506000910152565b6000815180845261341b8160208601602086016133df565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260008251604060208401526134696060840182613403565b905060208401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0848303016040850152612b1d8282613403565b600060208083016020845280855180835260408601915060408160051b87010192506020870160005b82811015613519577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0888603018452613507858351613403565b945092850192908501906001016134cd565b5092979650505050505050565b6020808252825182820181905260009190848201906040850190845b8181101561357457835173ffffffffffffffffffffffffffffffffffffffff1683529284019291840191600101613542565b50909695505050505050565b602081526000611d966020830184613403565b6020808252825182820181905260009190848201906040850190845b8181101561357457835167ffffffffffffffff16835292840192918401916001016135af565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561364b5761364b6135d5565b604052919050565b80356fffffffffffffffffffffffffffffffff8116811461367357600080fd5b919050565b60006060828403121561368a57600080fd5b6040516060810181811067ffffffffffffffff821117156136ad576136ad6135d5565b60405290508082356136be8161335c565b81526136cc60208401613653565b60208201526136dd60408401613653565b60408201525092915050565b600080600060e084860312156136fe57600080fd5b833561370981613209565b92506137188560208601613678565b91506137278560808601613678565b90509250925092565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261376557600080fd5b83018035915067ffffffffffffffff82111561378057600080fd5b6020019150368190038213156132e957600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b67ffffffffffffffff84168152604060208201526000612b1d604083018486613795565b60006020828403121561381457600080fd5b8151611d9681613209565b8183823760009101908152919050565b60006020828403121561384157600080fd5b8151611d968161335c565b67ffffffffffffffff85168152606060208201526000613870606083018587613795565b905082604083015295945050505050565b600067ffffffffffffffff82111561389b5761389b6135d5565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600080604083850312156138da57600080fd5b82519150602083015167ffffffffffffffff8111156138f857600080fd5b8301601f8101851361390957600080fd5b805161391c61391782613881565b613604565b81815286602083850101111561393157600080fd5b6139428260208301602086016133df565b8093505050509250929050565b600082516139618184602087016133df565b9190910192915050565b60006020828403121561397d57600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600181811c908216806139c757607f821691505b602082108103613a00577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b602081526000610933602083018486613795565b600082357ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee183360301811261396157600080fd5b600082601f830112613a5f57600080fd5b8135613a6d61391782613881565b818152846020838601011115613a8257600080fd5b816020850160208301376000918101602001919091529392505050565b600082601f830112613ab057600080fd5b8135602067ffffffffffffffff80831115613acd57613acd6135d5565b8260051b613adc838201613604565b9384528581018301938381019088861115613af657600080fd5b84880192505b85831015613b3257823584811115613b145760008081fd5b613b228a87838c0101613a4e565b8352509184019190840190613afc565b98975050505050505050565b60006101208236031215613b5157600080fd5b60405160a0810167ffffffffffffffff8282108183111715613b7557613b756135d5565b8160405284359150613b8682613209565b90825260208401359080821115613b9c57600080fd5b613ba836838701613a9f565b60208401526040850135915080821115613bc157600080fd5b50613bce36828601613a4e565b604083015250613be13660608501613678565b6060820152613bf33660c08501613678565b608082015292915050565b601f821115610aa0576000816000526020600020601f850160051c81016020861015613c275750805b601f850160051c820191505b81811015613c4657828155600101613c33565b505050505050565b815167ffffffffffffffff811115613c6857613c686135d5565b613c7c81613c7684546139b3565b84613bfe565b602080601f831160018114613ccf5760008415613c995750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b178555613c46565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b82811015613d1c57888601518255948401946001909101908401613cfd565b5085821015613d5857878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b600061010067ffffffffffffffff87168352806020840152613d8c81840187613403565b8551151560408581019190915260208701516fffffffffffffffffffffffffffffffff9081166060870152908701511660808501529150613dca9050565b8251151560a083015260208301516fffffffffffffffffffffffffffffffff90811660c084015260408401511660e0830152612b1d565b67ffffffffffffffff831681526040602082015260006109336040830184613403565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156106cc576106cc613e24565b67ffffffffffffffff8416815260e08101613eb260208301858051151582526020808201516fffffffffffffffffffffffffffffffff9081169184019190915260409182015116910152565b82511515608083015260208301516fffffffffffffffffffffffffffffffff90811660a084015260408401511660c0830152610933565b606081016106cc82848051151582526020808201516fffffffffffffffffffffffffffffffff9081169184019190915260409182015116910152565b600060208284031215613f3757600080fd5b8151611d968161318e565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b80820281158282048414176106cc576106cc613e24565b808201808211156106cc576106cc613e24565b600082613fd1577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b50049056fea164736f6c6343000818000a", + ABI: "[{\"inputs\":[{\"internalType\":\"contractIERC20\",\"name\":\"lbtc_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"ccipRouter_\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"allowlist_\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"rmnProxy_\",\"type\":\"address\"},{\"internalType\":\"contractCLAdapter\",\"name\":\"adapter_\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"attestationEnable_\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"capacity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"requested\",\"type\":\"uint256\"}],\"name\":\"AggregateValueMaxCapacityExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"minWaitInSeconds\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"available\",\"type\":\"uint256\"}],\"name\":\"AggregateValueRateLimitReached\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AllowListNotEnabled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BucketOverfilled\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"CallerIsNotARampOnRouter\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CannotTransferToSelf\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"chainSelector\",\"type\":\"uint64\"}],\"name\":\"ChainAlreadyExists\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"remoteChainSelector\",\"type\":\"uint64\"}],\"name\":\"ChainNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CursedByRMN\",\"type\":\"error\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"isEnabled\",\"type\":\"bool\"},{\"internalType\":\"uint128\",\"name\":\"capacity\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"rate\",\"type\":\"uint128\"}],\"internalType\":\"structRateLimiter.Config\",\"name\":\"config\",\"type\":\"tuple\"}],\"name\":\"DisabledNonZeroRateLimit\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"expected\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"actual\",\"type\":\"uint8\"}],\"name\":\"InvalidDecimalArgs\",\"type\":\"error\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"isEnabled\",\"type\":\"bool\"},{\"internalType\":\"uint128\",\"name\":\"capacity\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"rate\",\"type\":\"uint128\"}],\"internalType\":\"structRateLimiter.Config\",\"name\":\"rateLimiterConfig\",\"type\":\"tuple\"}],\"name\":\"InvalidRateLimitRate\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"sourcePoolData\",\"type\":\"bytes\"}],\"name\":\"InvalidRemoteChainDecimals\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"remoteChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"remotePoolAddress\",\"type\":\"bytes\"}],\"name\":\"InvalidRemotePoolForChain\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"sourcePoolAddress\",\"type\":\"bytes\"}],\"name\":\"InvalidSourcePoolAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"InvalidToken\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MustBeProposedOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"remoteChainSelector\",\"type\":\"uint64\"}],\"name\":\"NonExistentChain\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyCallableByOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"remoteDecimals\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"localDecimals\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"remoteAmount\",\"type\":\"uint256\"}],\"name\":\"OverflowDetected\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OwnerCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"remoteChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"remotePoolAddress\",\"type\":\"bytes\"}],\"name\":\"PoolAlreadyAdded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RateLimitMustBeDisabled\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"SenderNotAllowed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"capacity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"requested\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"}],\"name\":\"TokenMaxCapacityExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"minWaitInSeconds\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"available\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"}],\"name\":\"TokenRateLimitReached\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"Unauthorized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddressNotAllowed\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"AllowListAdd\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"AllowListRemove\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Burned\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"remoteChainSelector\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"remoteToken\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"isEnabled\",\"type\":\"bool\"},{\"internalType\":\"uint128\",\"name\":\"capacity\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"rate\",\"type\":\"uint128\"}],\"indexed\":false,\"internalType\":\"structRateLimiter.Config\",\"name\":\"outboundRateLimiterConfig\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"isEnabled\",\"type\":\"bool\"},{\"internalType\":\"uint128\",\"name\":\"capacity\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"rate\",\"type\":\"uint128\"}],\"indexed\":false,\"internalType\":\"structRateLimiter.Config\",\"name\":\"inboundRateLimiterConfig\",\"type\":\"tuple\"}],\"name\":\"ChainAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"remoteChainSelector\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"isEnabled\",\"type\":\"bool\"},{\"internalType\":\"uint128\",\"name\":\"capacity\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"rate\",\"type\":\"uint128\"}],\"indexed\":false,\"internalType\":\"structRateLimiter.Config\",\"name\":\"outboundRateLimiterConfig\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"isEnabled\",\"type\":\"bool\"},{\"internalType\":\"uint128\",\"name\":\"capacity\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"rate\",\"type\":\"uint128\"}],\"indexed\":false,\"internalType\":\"structRateLimiter.Config\",\"name\":\"inboundRateLimiterConfig\",\"type\":\"tuple\"}],\"name\":\"ChainConfigured\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"remoteChainSelector\",\"type\":\"uint64\"}],\"name\":\"ChainRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"isEnabled\",\"type\":\"bool\"},{\"internalType\":\"uint128\",\"name\":\"capacity\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"rate\",\"type\":\"uint128\"}],\"indexed\":false,\"internalType\":\"structRateLimiter.Config\",\"name\":\"config\",\"type\":\"tuple\"}],\"name\":\"ConfigChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Locked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Minted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"OwnershipTransferRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"rateLimitAdmin\",\"type\":\"address\"}],\"name\":\"RateLimitAdminSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Released\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"remoteChainSelector\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"remotePoolAddress\",\"type\":\"bytes\"}],\"name\":\"RemotePoolAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"remoteChainSelector\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"remotePoolAddress\",\"type\":\"bytes\"}],\"name\":\"RemotePoolRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"oldRouter\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newRouter\",\"type\":\"address\"}],\"name\":\"RouterUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"tokens\",\"type\":\"uint256\"}],\"name\":\"TokensConsumed\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"acceptOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"adapter\",\"outputs\":[{\"internalType\":\"contractCLAdapter\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"remoteChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"remotePoolAddress\",\"type\":\"bytes\"}],\"name\":\"addRemotePool\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"removes\",\"type\":\"address[]\"},{\"internalType\":\"address[]\",\"name\":\"adds\",\"type\":\"address[]\"}],\"name\":\"applyAllowListUpdates\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64[]\",\"name\":\"remoteChainSelectorsToRemove\",\"type\":\"uint64[]\"},{\"components\":[{\"internalType\":\"uint64\",\"name\":\"remoteChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"bytes[]\",\"name\":\"remotePoolAddresses\",\"type\":\"bytes[]\"},{\"internalType\":\"bytes\",\"name\":\"remoteTokenAddress\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"isEnabled\",\"type\":\"bool\"},{\"internalType\":\"uint128\",\"name\":\"capacity\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"rate\",\"type\":\"uint128\"}],\"internalType\":\"structRateLimiter.Config\",\"name\":\"outboundRateLimiterConfig\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"isEnabled\",\"type\":\"bool\"},{\"internalType\":\"uint128\",\"name\":\"capacity\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"rate\",\"type\":\"uint128\"}],\"internalType\":\"structRateLimiter.Config\",\"name\":\"inboundRateLimiterConfig\",\"type\":\"tuple\"}],\"internalType\":\"structTokenPool.ChainUpdate[]\",\"name\":\"chainsToAdd\",\"type\":\"tuple[]\"}],\"name\":\"applyChainUpdates\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAllowList\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAllowListEnabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"remoteChainSelector\",\"type\":\"uint64\"}],\"name\":\"getCurrentInboundRateLimiterState\",\"outputs\":[{\"components\":[{\"internalType\":\"uint128\",\"name\":\"tokens\",\"type\":\"uint128\"},{\"internalType\":\"uint32\",\"name\":\"lastUpdated\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"isEnabled\",\"type\":\"bool\"},{\"internalType\":\"uint128\",\"name\":\"capacity\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"rate\",\"type\":\"uint128\"}],\"internalType\":\"structRateLimiter.TokenBucket\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"remoteChainSelector\",\"type\":\"uint64\"}],\"name\":\"getCurrentOutboundRateLimiterState\",\"outputs\":[{\"components\":[{\"internalType\":\"uint128\",\"name\":\"tokens\",\"type\":\"uint128\"},{\"internalType\":\"uint32\",\"name\":\"lastUpdated\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"isEnabled\",\"type\":\"bool\"},{\"internalType\":\"uint128\",\"name\":\"capacity\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"rate\",\"type\":\"uint128\"}],\"internalType\":\"structRateLimiter.TokenBucket\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRateLimitAdmin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"remoteChainSelector\",\"type\":\"uint64\"}],\"name\":\"getRemotePools\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"\",\"type\":\"bytes[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"remoteChainSelector\",\"type\":\"uint64\"}],\"name\":\"getRemoteToken\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRmnProxy\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"rmnProxy\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRouter\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"router\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getSupportedChains\",\"outputs\":[{\"internalType\":\"uint64[]\",\"name\":\"\",\"type\":\"uint64[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getToken\",\"outputs\":[{\"internalType\":\"contractIERC20\",\"name\":\"token\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTokenDecimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isAttestationEnabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"remoteChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"remotePoolAddress\",\"type\":\"bytes\"}],\"name\":\"isRemotePool\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"remoteChainSelector\",\"type\":\"uint64\"}],\"name\":\"isSupportedChain\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"isSupportedToken\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"receiver\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"remoteChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"originalSender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"localToken\",\"type\":\"address\"}],\"internalType\":\"structPool.LockOrBurnInV1\",\"name\":\"lockOrBurnIn\",\"type\":\"tuple\"}],\"name\":\"lockOrBurn\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"destTokenAddress\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"destPoolData\",\"type\":\"bytes\"}],\"internalType\":\"structPool.LockOrBurnOutV1\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"originalSender\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"remoteChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"localToken\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"sourcePoolAddress\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"sourcePoolData\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"offchainTokenData\",\"type\":\"bytes\"}],\"internalType\":\"structPool.ReleaseOrMintInV1\",\"name\":\"releaseOrMintIn\",\"type\":\"tuple\"}],\"name\":\"releaseOrMint\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"destinationAmount\",\"type\":\"uint256\"}],\"internalType\":\"structPool.ReleaseOrMintOutV1\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"remoteChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"remotePoolAddress\",\"type\":\"bytes\"}],\"name\":\"removeRemotePool\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"remoteChainSelector\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"isEnabled\",\"type\":\"bool\"},{\"internalType\":\"uint128\",\"name\":\"capacity\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"rate\",\"type\":\"uint128\"}],\"internalType\":\"structRateLimiter.Config\",\"name\":\"outboundConfig\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"isEnabled\",\"type\":\"bool\"},{\"internalType\":\"uint128\",\"name\":\"capacity\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"rate\",\"type\":\"uint128\"}],\"internalType\":\"structRateLimiter.Config\",\"name\":\"inboundConfig\",\"type\":\"tuple\"}],\"name\":\"setChainRateLimiterConfig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"rateLimitAdmin\",\"type\":\"address\"}],\"name\":\"setRateLimitAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newRouter\",\"type\":\"address\"}],\"name\":\"setRouter\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", + Bin: "0x6101006040523480156200001257600080fd5b50604051620046dd380380620046dd8339810160408190526200003591620005d1565b856008858588336000816200005d57604051639b15e16f60e01b815260040160405180910390fd5b600180546001600160a01b0319166001600160a01b0384811691909117909155811615620000905762000090816200021b565b50506001600160a01b0385161580620000b057506001600160a01b038116155b80620000c357506001600160a01b038216155b15620000e2576040516342bcdf7f60e11b815260040160405180910390fd5b6001600160a01b03808616608081905290831660c0526040805163313ce56760e01b8152905163313ce567916004808201926020929091908290030181865afa92505050801562000152575060408051601f3d908101601f191682019092526200014f9181019062000708565b60015b1562000192578060ff168560ff161462000190576040516332ad3e0760e11b815260ff80871660048301528216602482015260440160405180910390fd5b505b60ff841660a052600480546001600160a01b0319166001600160a01b038316179055825115801560e052620001dc57604080516000815260208101909152620001dc908462000295565b5050600a8054941515600160a01b026001600160a81b03199095166001600160a01b039096169590951793909317909355506200078295505050505050565b336001600160a01b038216036200024557604051636d6c4ee560e11b815260040160405180910390fd5b600080546001600160a01b0319166001600160a01b03838116918217835560015460405192939116917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b60e051620002b6576040516335f4a7b360e01b815260040160405180910390fd5b60005b825181101562000341576000838281518110620002da57620002da62000734565b60209081029190910101519050620002f4600282620003f2565b1562000337576040516001600160a01b03821681527f800671136ab6cfee9fbe5ed1fb7ca417811aca3cf864800d127b927adedf75669060200160405180910390a15b50600101620002b9565b5060005b8151811015620003ed57600082828151811062000366576200036662000734565b6020026020010151905060006001600160a01b0316816001600160a01b031603620003925750620003e4565b6200039f60028262000412565b15620003e2576040516001600160a01b03821681527f2640d4d76caf8bf478aabfa982fa4e1c4eb71a37f93cd15e80dbc657911546d89060200160405180910390a15b505b60010162000345565b505050565b600062000409836001600160a01b03841662000429565b90505b92915050565b600062000409836001600160a01b0384166200052d565b6000818152600183016020526040812054801562000522576000620004506001836200074a565b855490915060009062000466906001906200074a565b9050808214620004d25760008660000182815481106200048a576200048a62000734565b9060005260206000200154905080876000018481548110620004b057620004b062000734565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080620004e657620004e66200076c565b6001900381819060005260206000200160009055905585600101600086815260200190815260200160002060009055600193505050506200040c565b60009150506200040c565b600081815260018301602052604081205462000576575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556200040c565b5060006200040c565b6001600160a01b03811681146200059557600080fd5b50565b8051620005a5816200057f565b919050565b634e487b7160e01b600052604160045260246000fd5b80518015158114620005a557600080fd5b60008060008060008060c08789031215620005eb57600080fd5b8651620005f8816200057f565b809650506020808801516200060d816200057f565b60408901519096506001600160401b03808211156200062b57600080fd5b818a0191508a601f8301126200064057600080fd5b815181811115620006555762000655620005aa565b8060051b604051601f19603f830116810181811085821117156200067d576200067d620005aa565b60405291825284820192508381018501918d8311156200069c57600080fd5b938501935b82851015620006c557620006b58562000598565b84529385019392850192620006a1565b809950505050505050620006dc6060880162000598565b9250620006ec6080880162000598565b9150620006fc60a08801620005c0565b90509295509295509295565b6000602082840312156200071b57600080fd5b815160ff811681146200072d57600080fd5b9392505050565b634e487b7160e01b600052603260045260246000fd5b818103818111156200040c57634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603160045260246000fd5b60805160a05160c05160e051613ee9620007f46000396000818161056701528181611d1501526126c401526000818161054101528181611b0a0152612001015260006102c601526000818161024e0152818161028201528181610bec0152818161265a01526128af0152613ee96000f3fe608060405234801561001057600080fd5b50600436106101da5760003560e01c80639a4575b911610104578063c0d78655116100a2578063dc0bd97111610071578063dc0bd9711461053f578063e0351e1314610565578063e8a1da171461058b578063f2fde38b1461059e57600080fd5b8063c0d78655146104f1578063c4bffe2b14610504578063c75eea9c14610519578063cf7401f31461052c57600080fd5b8063acfecf91116100de578063acfecf9114610431578063af58d59f14610444578063b0f479a1146104b3578063b7946580146104d157600080fd5b80639a4575b9146103dc578063a42a7b8b146103fc578063a7cd63b71461041c57600080fd5b806354c8a4f31161017c57806379ba50971161014b57806379ba5097146103905780637d54534e146103985780638926f54f146103ab5780638da5cb5b146103be57600080fd5b806354c8a4f31461032557806355b961561461033a57806362ddd3c41461035f5780636d3d1a581461037257600080fd5b8063240028e8116101b8578063240028e81461027257806324f65ee7146102bf57806339077537146102f05780634c5ef0ed1461031257600080fd5b806301ffc9a7146101df57806303eadcfc1461020757806321df0da71461024c575b600080fd5b6101f26101ed36600461306f565b6105b1565b60405190151581526020015b60405180910390f35b600a546102279073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101fe565b7f0000000000000000000000000000000000000000000000000000000000000000610227565b6101f26102803660046130d3565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff90811691161490565b60405160ff7f00000000000000000000000000000000000000000000000000000000000000001681526020016101fe565b6103036102fe3660046130f0565b610696565b604051905181526020016101fe565b6101f2610320366004613142565b6108b5565b610338610333366004613213565b6108ff565b005b600a546101f29074010000000000000000000000000000000000000000900460ff1681565b61033861036d366004613142565b61097a565b60095473ffffffffffffffffffffffffffffffffffffffff16610227565b610338610a17565b6103386103a63660046130d3565b610ae5565b6101f26103b936600461327f565b610b66565b60015473ffffffffffffffffffffffffffffffffffffffff16610227565b6103ef6103ea36600461329c565b610b7d565b6040516101fe9190613345565b61040f61040a36600461327f565b610e59565b6040516101fe919061339c565b610424610fc4565b6040516101fe919061341e565b61033861043f366004613142565b610fd5565b61045761045236600461327f565b6110ed565b6040516101fe919081516fffffffffffffffffffffffffffffffff908116825260208084015163ffffffff1690830152604080840151151590830152606080840151821690830152608092830151169181019190915260a00190565b60045473ffffffffffffffffffffffffffffffffffffffff16610227565b6104e46104df36600461327f565b6111c2565b6040516101fe9190613478565b6103386104ff3660046130d3565b611272565b61050c61134d565b6040516101fe919061348b565b61045761052736600461327f565b611405565b61033861053a3660046135ef565b6114d7565b7f0000000000000000000000000000000000000000000000000000000000000000610227565b7f00000000000000000000000000000000000000000000000000000000000000006101f2565b610338610599366004613213565b61155b565b6103386105ac3660046130d3565b611a6d565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167faff2afbf00000000000000000000000000000000000000000000000000000000148061064457507fffffffff0000000000000000000000000000000000000000000000000000000082167f0e64dd2900000000000000000000000000000000000000000000000000000000145b8061069057507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b6040805160208101909152600081526106ae82611a81565b600a5460009074010000000000000000000000000000000000000000900460ff161561077757600a5473ffffffffffffffffffffffffffffffffffffffff16635391a405610702604086016020870161327f565b61070f60e0870187613636565b6040518463ffffffff1660e01b815260040161072d939291906136e4565b6020604051808303816000875af115801561074c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107709190613708565b9050610816565b600a5473ffffffffffffffffffffffffffffffffffffffff16630c373d746107a5604086016020870161327f565b6107b260c0870187613636565b6040518463ffffffff1660e01b81526004016107d0939291906136e4565b6020604051808303816000875af11580156107ef573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108139190613708565b90505b61082660608401604085016130d3565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f9d228d69b5fdb8d273a2336f8fb8612d039631024ea9bf09c424a9503aa078f08367ffffffffffffffff1660405161088e91815260200190565b60405180910390a3604080516020810190915267ffffffffffffffff909116815292915050565b60006108f783836040516108ca929190613725565b604080519182900390912067ffffffffffffffff8716600090815260076020529190912060050190611ca5565b949350505050565b610907611cc0565b61097484848080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020808802828101820190935287825290935087925086918291850190849080828437600092019190915250611d1392505050565b50505050565b610982611cc0565b61098b83610b66565b6109d2576040517f1e670e4b00000000000000000000000000000000000000000000000000000000815267ffffffffffffffff841660048201526024015b60405180910390fd5b610a128383838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611ec992505050565b505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610a68576040517f02b543c600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000008082163390811790935560008054909116815560405173ffffffffffffffffffffffffffffffffffffffff909216929183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a350565b610aed611cc0565b600980547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f44676b5284b809a22248eba0da87391d79098be38bb03154be88a58bf4d091749060200160405180910390a150565b6000610690600567ffffffffffffffff8416611ca5565b6040805180820190915260608082526020820152610b9a82611fc3565b600a546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9182166004820152606084013560248201527f00000000000000000000000000000000000000000000000000000000000000009091169063a9059cbb906044016020604051808303816000875af1158015610c37573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c5b9190613735565b50600a54600090819073ffffffffffffffffffffffffffffffffffffffff1663550e7ab2610c8f604087016020880161327f565b610c998780613636565b88606001356040518563ffffffff1660e01b8152600401610cbd9493929190613752565b6000604051808303816000875af1158015610cdc573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610d2291908101906137cd565b9092509050610d3760608501604086016130d3565b73ffffffffffffffffffffffffffffffffffffffff167f696de425f79f4a40bc6d2122ca50507f0efbeabbff86a84871b7196ab8ea8df783604051610d7e91815260200190565b60405180910390a2600a5460609074010000000000000000000000000000000000000000900460ff1615610e2457600282604051610dbc9190613855565b602060405180830381855afa158015610dd9573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190610dfc9190613871565b604051602001610e0e91815260200190565b6040516020818303038152906040529050610e27565b50805b6040518060400160405280610e488760200160208101906104df919061327f565b815260200191909152949350505050565b67ffffffffffffffff8116600090815260076020526040812060609190610e829060050161214f565b90506000815167ffffffffffffffff811115610ea057610ea06134cd565b604051908082528060200260200182016040528015610ed357816020015b6060815260200190600190039081610ebe5790505b50905060005b8251811015610fbc5760086000848381518110610ef857610ef861388a565b602002602001015181526020019081526020016000208054610f19906138b9565b80601f0160208091040260200160405190810160405280929190818152602001828054610f45906138b9565b8015610f925780601f10610f6757610100808354040283529160200191610f92565b820191906000526020600020905b815481529060010190602001808311610f7557829003601f168201915b5050505050828281518110610fa957610fa961388a565b6020908102919091010152600101610ed9565b509392505050565b6060610fd0600261214f565b905090565b610fdd611cc0565b610fe683610b66565b611028576040517f1e670e4b00000000000000000000000000000000000000000000000000000000815267ffffffffffffffff841660048201526024016109c9565b611068828260405161103b929190613725565b604080519182900390912067ffffffffffffffff861660009081526007602052919091206005019061215c565b6110a4578282826040517f74f23c7c0000000000000000000000000000000000000000000000000000000081526004016109c9939291906136e4565b8267ffffffffffffffff167f52d00ee4d9bd51b40168f2afc5848837288ce258784ad914278791464b3f4d7683836040516110e092919061390c565b60405180910390a2505050565b6040805160a08101825260008082526020820181905291810182905260608101829052608081019190915267ffffffffffffffff8216600090815260076020908152604091829020825160a08101845260028201546fffffffffffffffffffffffffffffffff808216835270010000000000000000000000000000000080830463ffffffff16958401959095527401000000000000000000000000000000000000000090910460ff16151594820194909452600390910154808416606083015291909104909116608082015261069090612168565b67ffffffffffffffff811660009081526007602052604090206004018054606091906111ed906138b9565b80601f0160208091040260200160405190810160405280929190818152602001828054611219906138b9565b80156112665780601f1061123b57610100808354040283529160200191611266565b820191906000526020600020905b81548152906001019060200180831161124957829003601f168201915b50505050509050919050565b61127a611cc0565b73ffffffffffffffffffffffffffffffffffffffff81166112c7576040517f8579befe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6004805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff000000000000000000000000000000000000000083168117909355604080519190921680825260208201939093527f02dc5c233404867c793b749c6d644beb2277536d18a7e7974d3f238e4c6f1684910160405180910390a15050565b6060600061135b600561214f565b90506000815167ffffffffffffffff811115611379576113796134cd565b6040519080825280602002602001820160405280156113a2578160200160208202803683370190505b50905060005b82518110156113fe578281815181106113c3576113c361388a565b60200260200101518282815181106113dd576113dd61388a565b67ffffffffffffffff909216602092830291909101909101526001016113a8565b5092915050565b6040805160a08101825260008082526020820181905291810182905260608101829052608081019190915267ffffffffffffffff8216600090815260076020908152604091829020825160a08101845281546fffffffffffffffffffffffffffffffff808216835270010000000000000000000000000000000080830463ffffffff16958401959095527401000000000000000000000000000000000000000090910460ff16151594820194909452600190910154808416606083015291909104909116608082015261069090612168565b60095473ffffffffffffffffffffffffffffffffffffffff163314801590611517575060015473ffffffffffffffffffffffffffffffffffffffff163314155b15611550576040517f8e4a23d60000000000000000000000000000000000000000000000000000000081523360048201526024016109c9565b610a1283838361221a565b611563611cc0565b60005b838110156117505760008585838181106115825761158261388a565b9050602002016020810190611597919061327f565b90506115ae600567ffffffffffffffff831661215c565b6115f0576040517f1e670e4b00000000000000000000000000000000000000000000000000000000815267ffffffffffffffff821660048201526024016109c9565b67ffffffffffffffff811660009081526007602052604081206116159060050161214f565b905060005b8151811015611681576116788282815181106116385761163861388a565b6020026020010151600760008667ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060050161215c90919063ffffffff16565b5060010161161a565b5067ffffffffffffffff8216600090815260076020526040812080547fffffffffffffffffffffff000000000000000000000000000000000000000000908116825560018201839055600282018054909116905560038101829055906116ea6004830182613002565b60058201600081816116fc828261303c565b505060405167ffffffffffffffff871681527f5204aec90a3c794d8e90fded8b46ae9c7c552803e7e832e0c1d358396d8599169450602001925061173e915050565b60405180910390a15050600101611566565b5060005b81811015611a665760008383838181106117705761177061388a565b90506020028101906117829190613920565b61178b90613a44565b905061179c81606001516000612304565b6117ab81608001516000612304565b8060400151516000036117ea576040517f8579befe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80516118029060059067ffffffffffffffff16612441565b6118475780516040517f1d5ad3c500000000000000000000000000000000000000000000000000000000815267ffffffffffffffff90911660048201526024016109c9565b805167ffffffffffffffff16600090815260076020908152604091829020825160a08082018552606080870180518601516fffffffffffffffffffffffffffffffff90811680865263ffffffff42168689018190528351511515878b0181905284518a0151841686890181905294518b0151841660809889018190528954740100000000000000000000000000000000000000009283027fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff7001000000000000000000000000000000008087027fffffffffffffffffffffffff000000000000000000000000000000000000000094851690981788178216929092178d5592810290971760018c01558c519889018d52898e0180518d01518716808b528a8e019590955280515115158a8f018190528151909d01518716988a01899052518d0151909516979098018790526002890180549a9091029990931617179094169590951790925590920290911760038201559082015160048201906119ca9082613b54565b5060005b826020015151811015611a0e57611a068360000151846020015183815181106119f9576119f961388a565b6020026020010151611ec9565b6001016119ce565b507f8d340f17e19058004c20453540862a9c62778504476f6756755cb33bcd6c38c28260000151836040015184606001518560800151604051611a549493929190613c6e565b60405180910390a15050600101611754565b5050505050565b611a75611cc0565b611a7e8161244d565b50565b611a9461028060a08301608084016130d3565b611af357611aa860a08201608083016130d3565b6040517f961c9a4f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911660048201526024016109c9565b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016632cbc26bb611b3f604084016020850161327f565b60405160e083901b7fffffffff0000000000000000000000000000000000000000000000000000000016815260809190911b77ffffffffffffffff00000000000000000000000000000000166004820152602401602060405180830381865afa158015611bb0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bd49190613735565b15611c0b576040517f53ad11d800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611c23611c1e604083016020840161327f565b612511565b611c43611c36604083016020840161327f565b61032060a0840184613636565b611c8857611c5460a0820182613636565b6040517f24eb47e50000000000000000000000000000000000000000000000000000000081526004016109c992919061390c565b611a7e611c9b604083016020840161327f565b8260600135612637565b600081815260018301602052604081205415155b9392505050565b60015473ffffffffffffffffffffffffffffffffffffffff163314611d11576040517f2b5c74de00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b7f0000000000000000000000000000000000000000000000000000000000000000611d6a576040517f35f4a7b300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b8251811015611e00576000838281518110611d8a57611d8a61388a565b60200260200101519050611da881600261267e90919063ffffffff16565b15611df75760405173ffffffffffffffffffffffffffffffffffffffff821681527f800671136ab6cfee9fbe5ed1fb7ca417811aca3cf864800d127b927adedf75669060200160405180910390a15b50600101611d6d565b5060005b8151811015610a12576000828281518110611e2157611e2161388a565b60200260200101519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611e655750611ec1565b611e706002826126a0565b15611ebf5760405173ffffffffffffffffffffffffffffffffffffffff821681527f2640d4d76caf8bf478aabfa982fa4e1c4eb71a37f93cd15e80dbc657911546d89060200160405180910390a15b505b600101611e04565b8051600003611f04576040517f8579befe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805160208083019190912067ffffffffffffffff8416600090815260079092526040909120611f369060050182612441565b611f705782826040517f393b8ad20000000000000000000000000000000000000000000000000000000081526004016109c9929190613d07565b6000818152600860205260409020611f888382613b54565b508267ffffffffffffffff167f7d628c9a1796743d365ab521a8b2a4686e419b3269919dc9145ea2ce853b54ea836040516110e09190613478565b611fd661028060a08301608084016130d3565b611fea57611aa860a08201608083016130d3565b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016632cbc26bb612036604084016020850161327f565b60405160e083901b7fffffffff0000000000000000000000000000000000000000000000000000000016815260809190911b77ffffffffffffffff00000000000000000000000000000000166004820152602401602060405180830381865afa1580156120a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120cb9190613735565b15612102576040517f53ad11d800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61211a61211560608301604084016130d3565b6126c2565b61213261212d604083016020840161327f565b612741565b611a7e612145604083016020840161327f565b826060013561288f565b60606000611cb9836128d3565b6000611cb9838361292e565b6040805160a0810182526000808252602082018190529181018290526060810182905260808101919091526121f682606001516fffffffffffffffffffffffffffffffff1683600001516fffffffffffffffffffffffffffffffff16846020015163ffffffff16426121da9190613d59565b85608001516fffffffffffffffffffffffffffffffff16612a21565b6fffffffffffffffffffffffffffffffff1682525063ffffffff4216602082015290565b61222383610b66565b612265576040517f1e670e4b00000000000000000000000000000000000000000000000000000000815267ffffffffffffffff841660048201526024016109c9565b612270826000612304565b67ffffffffffffffff831660009081526007602052604090206122939083612a49565b61229e816000612304565b67ffffffffffffffff831660009081526007602052604090206122c49060020182612a49565b7f0350d63aa5f270e01729d00d627eeb8f3429772b1818c016c66a588a864f912b8383836040516122f793929190613d6c565b60405180910390a1505050565b8151156123cf5781602001516fffffffffffffffffffffffffffffffff1682604001516fffffffffffffffffffffffffffffffff1610158061235a575060408201516fffffffffffffffffffffffffffffffff16155b1561239357816040517f8020d1240000000000000000000000000000000000000000000000000000000081526004016109c99190613def565b80156123cb576040517f433fc33d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b60408201516fffffffffffffffffffffffffffffffff16151580612408575060208201516fffffffffffffffffffffffffffffffff1615155b156123cb57816040517fd68af9cc0000000000000000000000000000000000000000000000000000000081526004016109c99190613def565b6000611cb98383612beb565b3373ffffffffffffffffffffffffffffffffffffffff82160361249c576040517fdad89dca00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff838116918217835560015460405192939116917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b61251a81610b66565b61255c576040517fa9902c7e00000000000000000000000000000000000000000000000000000000815267ffffffffffffffff821660048201526024016109c9565b600480546040517f83826b2b00000000000000000000000000000000000000000000000000000000815267ffffffffffffffff84169281019290925233602483015273ffffffffffffffffffffffffffffffffffffffff16906383826b2b90604401602060405180830381865afa1580156125db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125ff9190613735565b611a7e576040517f728fe07b0000000000000000000000000000000000000000000000000000000081523360048201526024016109c9565b67ffffffffffffffff821660009081526007602052604090206123cb90600201827f0000000000000000000000000000000000000000000000000000000000000000612c3a565b6000611cb98373ffffffffffffffffffffffffffffffffffffffff841661292e565b6000611cb98373ffffffffffffffffffffffffffffffffffffffff8416612beb565b7f000000000000000000000000000000000000000000000000000000000000000015611a7e576126f3600282612fbd565b611a7e576040517fd0d2597600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821660048201526024016109c9565b61274a81610b66565b61278c576040517fa9902c7e00000000000000000000000000000000000000000000000000000000815267ffffffffffffffff821660048201526024016109c9565b600480546040517fa8d87a3b00000000000000000000000000000000000000000000000000000000815267ffffffffffffffff84169281019290925273ffffffffffffffffffffffffffffffffffffffff169063a8d87a3b90602401602060405180830381865afa158015612805573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128299190613e2b565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611a7e576040517f728fe07b0000000000000000000000000000000000000000000000000000000081523360048201526024016109c9565b67ffffffffffffffff821660009081526007602052604090206123cb90827f0000000000000000000000000000000000000000000000000000000000000000612c3a565b60608160000180548060200260200160405190810160405280929190818152602001828054801561126657602002820191906000526020600020905b81548152602001906001019080831161290f5750505050509050919050565b60008181526001830160205260408120548015612a17576000612952600183613d59565b855490915060009061296690600190613d59565b90508082146129cb5760008660000182815481106129865761298661388a565b90600052602060002001549050808760000184815481106129a9576129a961388a565b6000918252602080832090910192909255918252600188019052604090208390555b85548690806129dc576129dc613e48565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610690565b6000915050610690565b6000612a4085612a318486613e77565b612a3b9087613e8e565b612fec565b95945050505050565b8154600090612a7290700100000000000000000000000000000000900463ffffffff1642613d59565b90508015612b145760018301548354612aba916fffffffffffffffffffffffffffffffff80821692811691859170010000000000000000000000000000000090910416612a21565b83546fffffffffffffffffffffffffffffffff919091167fffffffffffffffffffffffff0000000000000000000000000000000000000000909116177001000000000000000000000000000000004263ffffffff16021783555b60208201518354612b3a916fffffffffffffffffffffffffffffffff9081169116612fec565b83548351151574010000000000000000000000000000000000000000027fffffffffffffffffffffff00ffffffff000000000000000000000000000000009091166fffffffffffffffffffffffffffffffff92831617178455602083015160408085015183167001000000000000000000000000000000000291909216176001850155517f9ea3374b67bf275e6bb9c8ae68f9cae023e1c528b4b27e092f0bb209d3531c19906122f7908490613def565b6000818152600183016020526040812054612c3257508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610690565b506000610690565b825474010000000000000000000000000000000000000000900460ff161580612c61575081155b15612c6b57505050565b825460018401546fffffffffffffffffffffffffffffffff80831692911690600090612cb190700100000000000000000000000000000000900463ffffffff1642613d59565b90508015612d715781831115612cf3576040517f9725942a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001860154612d2d9083908590849070010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff16612a21565b86547fffffffffffffffffffffffff00000000ffffffffffffffffffffffffffffffff167001000000000000000000000000000000004263ffffffff160217875592505b84821015612e285773ffffffffffffffffffffffffffffffffffffffff8416612dd0576040517ff94ebcd100000000000000000000000000000000000000000000000000000000815260048101839052602481018690526044016109c9565b6040517f1a76572a000000000000000000000000000000000000000000000000000000008152600481018390526024810186905273ffffffffffffffffffffffffffffffffffffffff851660448201526064016109c9565b84831015612f3b5760018681015470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff16906000908290612e6c9082613d59565b612e76878a613d59565b612e809190613e8e565b612e8a9190613ea1565b905073ffffffffffffffffffffffffffffffffffffffff8616612ee3576040517f15279c0800000000000000000000000000000000000000000000000000000000815260048101829052602481018690526044016109c9565b6040517fd0c8d23a000000000000000000000000000000000000000000000000000000008152600481018290526024810186905273ffffffffffffffffffffffffffffffffffffffff871660448201526064016109c9565b612f458584613d59565b86547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff82161787556040518681529093507f1871cdf8010e63f2eb8384381a68dfa7416dc571a5517e66e88b2d2d0c0a690a9060200160405180910390a1505050505050565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001830160205260408120541515611cb9565b6000818310612ffb5781611cb9565b5090919050565b50805461300e906138b9565b6000825580601f1061301e575050565b601f016020900490600052602060002090810190611a7e9190613056565b5080546000825590600052602060002090810190611a7e91905b5b8082111561306b5760008155600101613057565b5090565b60006020828403121561308157600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611cb957600080fd5b73ffffffffffffffffffffffffffffffffffffffff81168114611a7e57600080fd5b6000602082840312156130e557600080fd5b8135611cb9816130b1565b60006020828403121561310257600080fd5b813567ffffffffffffffff81111561311957600080fd5b82016101008185031215611cb957600080fd5b67ffffffffffffffff81168114611a7e57600080fd5b60008060006040848603121561315757600080fd5b83356131628161312c565b9250602084013567ffffffffffffffff8082111561317f57600080fd5b818601915086601f83011261319357600080fd5b8135818111156131a257600080fd5b8760208285010111156131b457600080fd5b6020830194508093505050509250925092565b60008083601f8401126131d957600080fd5b50813567ffffffffffffffff8111156131f157600080fd5b6020830191508360208260051b850101111561320c57600080fd5b9250929050565b6000806000806040858703121561322957600080fd5b843567ffffffffffffffff8082111561324157600080fd5b61324d888389016131c7565b9096509450602087013591508082111561326657600080fd5b50613273878288016131c7565b95989497509550505050565b60006020828403121561329157600080fd5b8135611cb98161312c565b6000602082840312156132ae57600080fd5b813567ffffffffffffffff8111156132c557600080fd5b820160a08185031215611cb957600080fd5b60005b838110156132f25781810151838201526020016132da565b50506000910152565b600081518084526133138160208601602086016132d7565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600082516040602084015261336160608401826132fb565b905060208401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0848303016040850152612a4082826132fb565b600060208083016020845280855180835260408601915060408160051b87010192506020870160005b82811015613411577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08886030184526133ff8583516132fb565b945092850192908501906001016133c5565b5092979650505050505050565b6020808252825182820181905260009190848201906040850190845b8181101561346c57835173ffffffffffffffffffffffffffffffffffffffff168352928401929184019160010161343a565b50909695505050505050565b602081526000611cb960208301846132fb565b6020808252825182820181905260009190848201906040850190845b8181101561346c57835167ffffffffffffffff16835292840192918401916001016134a7565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715613543576135436134cd565b604052919050565b8015158114611a7e57600080fd5b80356fffffffffffffffffffffffffffffffff8116811461357957600080fd5b919050565b60006060828403121561359057600080fd5b6040516060810181811067ffffffffffffffff821117156135b3576135b36134cd565b60405290508082356135c48161354b565b81526135d260208401613559565b60208201526135e360408401613559565b60408201525092915050565b600080600060e0848603121561360457600080fd5b833561360f8161312c565b925061361e856020860161357e565b915061362d856080860161357e565b90509250925092565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261366b57600080fd5b83018035915067ffffffffffffffff82111561368657600080fd5b60200191503681900382131561320c57600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b67ffffffffffffffff84168152604060208201526000612a4060408301848661369b565b60006020828403121561371a57600080fd5b8151611cb98161312c565b8183823760009101908152919050565b60006020828403121561374757600080fd5b8151611cb98161354b565b67ffffffffffffffff8516815260606020820152600061377660608301858761369b565b905082604083015295945050505050565b600067ffffffffffffffff8211156137a1576137a16134cd565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600080604083850312156137e057600080fd5b82519150602083015167ffffffffffffffff8111156137fe57600080fd5b8301601f8101851361380f57600080fd5b805161382261381d82613787565b6134fc565b81815286602083850101111561383757600080fd5b6138488260208301602086016132d7565b8093505050509250929050565b600082516138678184602087016132d7565b9190910192915050565b60006020828403121561388357600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600181811c908216806138cd57607f821691505b602082108103613906577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b6020815260006108f760208301848661369b565b600082357ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee183360301811261386757600080fd5b600082601f83011261396557600080fd5b813561397361381d82613787565b81815284602083860101111561398857600080fd5b816020850160208301376000918101602001919091529392505050565b600082601f8301126139b657600080fd5b8135602067ffffffffffffffff808311156139d3576139d36134cd565b8260051b6139e28382016134fc565b93845285810183019383810190888611156139fc57600080fd5b84880192505b85831015613a3857823584811115613a1a5760008081fd5b613a288a87838c0101613954565b8352509184019190840190613a02565b98975050505050505050565b60006101208236031215613a5757600080fd5b60405160a0810167ffffffffffffffff8282108183111715613a7b57613a7b6134cd565b8160405284359150613a8c8261312c565b90825260208401359080821115613aa257600080fd5b613aae368387016139a5565b60208401526040850135915080821115613ac757600080fd5b50613ad436828601613954565b604083015250613ae7366060850161357e565b6060820152613af93660c0850161357e565b608082015292915050565b601f821115610a12576000816000526020600020601f850160051c81016020861015613b2d5750805b601f850160051c820191505b81811015613b4c57828155600101613b39565b505050505050565b815167ffffffffffffffff811115613b6e57613b6e6134cd565b613b8281613b7c84546138b9565b84613b04565b602080601f831160018114613bd55760008415613b9f5750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b178555613b4c565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b82811015613c2257888601518255948401946001909101908401613c03565b5085821015613c5e57878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b600061010067ffffffffffffffff87168352806020840152613c92818401876132fb565b8551151560408581019190915260208701516fffffffffffffffffffffffffffffffff9081166060870152908701511660808501529150613cd09050565b8251151560a083015260208301516fffffffffffffffffffffffffffffffff90811660c084015260408401511660e0830152612a40565b67ffffffffffffffff831681526040602082015260006108f760408301846132fb565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561069057610690613d2a565b67ffffffffffffffff8416815260e08101613db860208301858051151582526020808201516fffffffffffffffffffffffffffffffff9081169184019190915260409182015116910152565b82511515608083015260208301516fffffffffffffffffffffffffffffffff90811660a084015260408401511660c08301526108f7565b6060810161069082848051151582526020808201516fffffffffffffffffffffffffffffffff9081169184019190915260409182015116910152565b600060208284031215613e3d57600080fd5b8151611cb9816130b1565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b808202811582820484141761069057610690613d2a565b8082018082111561069057610690613d2a565b600082613ed7577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b50049056fea164736f6c6343000818000a", } var LombardTokenPoolABI = LombardTokenPoolMetaData.ABI var LombardTokenPoolBin = LombardTokenPoolMetaData.Bin -func DeployLombardTokenPool(auth *bind.TransactOpts, backend bind.ContractBackend, lbtc_ common.Address, ccipRouter_ common.Address, allowlist_ []common.Address, rmnProxy_ common.Address, attestationEnable_ bool) (common.Address, *types.Transaction, *LombardTokenPool, error) { +func DeployLombardTokenPool(auth *bind.TransactOpts, backend bind.ContractBackend, lbtc_ common.Address, ccipRouter_ common.Address, allowlist_ []common.Address, rmnProxy_ common.Address, adapter_ common.Address, attestationEnable_ bool) (common.Address, *types.Transaction, *LombardTokenPool, error) { parsed, err := LombardTokenPoolMetaData.GetAbi() if err != nil { return common.Address{}, nil, nil, err @@ -98,7 +98,7 @@ func DeployLombardTokenPool(auth *bind.TransactOpts, backend bind.ContractBacken return common.Address{}, nil, nil, errors.New("GetABI returned nil") } - address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(LombardTokenPoolBin), backend, lbtc_, ccipRouter_, allowlist_, rmnProxy_, attestationEnable_) + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(LombardTokenPoolBin), backend, lbtc_, ccipRouter_, allowlist_, rmnProxy_, adapter_, attestationEnable_) if err != nil { return common.Address{}, nil, nil, err } @@ -723,30 +723,6 @@ func (_LombardTokenPool *LombardTokenPoolTransactorSession) RemoveRemotePool(rem return _LombardTokenPool.Contract.RemoveRemotePool(&_LombardTokenPool.TransactOpts, remoteChainSelector, remotePoolAddress) } -func (_LombardTokenPool *LombardTokenPoolTransactor) SetAdapter(opts *bind.TransactOpts, adapter_ common.Address) (*types.Transaction, error) { - return _LombardTokenPool.contract.Transact(opts, "setAdapter", adapter_) -} - -func (_LombardTokenPool *LombardTokenPoolSession) SetAdapter(adapter_ common.Address) (*types.Transaction, error) { - return _LombardTokenPool.Contract.SetAdapter(&_LombardTokenPool.TransactOpts, adapter_) -} - -func (_LombardTokenPool *LombardTokenPoolTransactorSession) SetAdapter(adapter_ common.Address) (*types.Transaction, error) { - return _LombardTokenPool.Contract.SetAdapter(&_LombardTokenPool.TransactOpts, adapter_) -} - -func (_LombardTokenPool *LombardTokenPoolTransactor) SetAttestationEnabled(opts *bind.TransactOpts, attestationEnable_ bool) (*types.Transaction, error) { - return _LombardTokenPool.contract.Transact(opts, "setAttestationEnabled", attestationEnable_) -} - -func (_LombardTokenPool *LombardTokenPoolSession) SetAttestationEnabled(attestationEnable_ bool) (*types.Transaction, error) { - return _LombardTokenPool.Contract.SetAttestationEnabled(&_LombardTokenPool.TransactOpts, attestationEnable_) -} - -func (_LombardTokenPool *LombardTokenPoolTransactorSession) SetAttestationEnabled(attestationEnable_ bool) (*types.Transaction, error) { - return _LombardTokenPool.Contract.SetAttestationEnabled(&_LombardTokenPool.TransactOpts, attestationEnable_) -} - func (_LombardTokenPool *LombardTokenPoolTransactor) SetChainRateLimiterConfig(opts *bind.TransactOpts, remoteChainSelector uint64, outboundConfig RateLimiterConfig, inboundConfig RateLimiterConfig) (*types.Transaction, error) { return _LombardTokenPool.contract.Transact(opts, "setChainRateLimiterConfig", remoteChainSelector, outboundConfig, inboundConfig) } @@ -3079,10 +3055,6 @@ type LombardTokenPoolInterface interface { RemoveRemotePool(opts *bind.TransactOpts, remoteChainSelector uint64, remotePoolAddress []byte) (*types.Transaction, error) - SetAdapter(opts *bind.TransactOpts, adapter_ common.Address) (*types.Transaction, error) - - SetAttestationEnabled(opts *bind.TransactOpts, attestationEnable_ bool) (*types.Transaction, error) - SetChainRateLimiterConfig(opts *bind.TransactOpts, remoteChainSelector uint64, outboundConfig RateLimiterConfig, inboundConfig RateLimiterConfig) (*types.Transaction, error) SetRateLimitAdmin(opts *bind.TransactOpts, rateLimitAdmin common.Address) (*types.Transaction, error) diff --git a/core/gethwrappers/ccip/generation/generated-wrapper-dependency-versions-do-not-edit.txt b/core/gethwrappers/ccip/generation/generated-wrapper-dependency-versions-do-not-edit.txt index cd8f861cfe..1d9540a6d5 100644 --- a/core/gethwrappers/ccip/generation/generated-wrapper-dependency-versions-do-not-edit.txt +++ b/core/gethwrappers/ccip/generation/generated-wrapper-dependency-versions-do-not-edit.txt @@ -14,8 +14,8 @@ ether_sender_receiver: ../../../contracts/solc/v0.8.24/EtherSenderReceiver/Ether evm_2_evm_offramp: ../../../contracts/solc/v0.8.24/EVM2EVMOffRamp/EVM2EVMOffRamp.abi ../../../contracts/solc/v0.8.24/EVM2EVMOffRamp/EVM2EVMOffRamp.bin b0d77babbe635cd6ba04c2af049badc9e9d28a4b6ed6bb75f830ad902a618beb evm_2_evm_onramp: ../../../contracts/solc/v0.8.24/EVM2EVMOnRamp/EVM2EVMOnRamp.abi ../../../contracts/solc/v0.8.24/EVM2EVMOnRamp/EVM2EVMOnRamp.bin 5c02c2b167946b3467636ff2bb58594cb4652fc63d8bdfee2488ed562e2a3e50 fee_quoter: ../../../contracts/solc/v0.8.24/FeeQuoter/FeeQuoter.abi ../../../contracts/solc/v0.8.24/FeeQuoter/FeeQuoter.bin 503823a939ff99fe3bdaaef7a89cd4bbe475e260d3921335dbf9c80d4f584b76 -lbtc_adapter: ../../../contracts/solc/v0.8.24/CLAdapter/CLAdapter.abi ../../../contracts/solc/v0.8.24/CLAdapter/CLAdapter.bin adcf4e614dd44310e8a3ccf54eed7ed0a0e9f731ed0318cfc28e13e84015e66f -lbtc_token_pool: ../../../contracts/solc/v0.8.24/LombardTokenPool/LombardTokenPool.abi ../../../contracts/solc/v0.8.24/CLAdapter/LombardTokenPool.bin a24dc294164ec8332f7aed64aadc20f18d35be5ded4d612283d269fb6f0e68ba +lbtc_adapter: ../../../contracts/solc/v0.8.24/CLAdapter/CLAdapter.abi ../../../contracts/solc/v0.8.24/CLAdapter/CLAdapter.bin 87b427226c055214e0f1b62d4ee24f294c3758dd0ecf7ceb10868021cdf2108c +lbtc_token_pool: ../../../contracts/solc/v0.8.24/LombardTokenPool/LombardTokenPool.abi ../../../contracts/solc/v0.8.24/LombardTokenPool/LombardTokenPool.bin fcef57b5a0c69a30345188c6be2a89bcf7b77f39fef04349ed1010fb3e947920 lock_release_token_pool: ../../../contracts/solc/v0.8.24/LockReleaseTokenPool/LockReleaseTokenPool.abi ../../../contracts/solc/v0.8.24/LockReleaseTokenPool/LockReleaseTokenPool.bin 1067f557abeb5570f1da7f050ea982ffad0f35dc064e668a8a0e6af128df490c lock_release_token_pool_and_proxy: ../../../contracts/solc/v0.8.24/LockReleaseTokenPoolAndProxy/LockReleaseTokenPoolAndProxy.abi ../../../contracts/solc/v0.8.24/LockReleaseTokenPoolAndProxy/LockReleaseTokenPoolAndProxy.bin e632b08be0fbd1d013e8b3a9d75293d0d532b83071c531ff2be1deec1fa48ec1 maybe_revert_message_receiver: ../../../contracts/solc/v0.8.24/MaybeRevertMessageReceiver/MaybeRevertMessageReceiver.abi ../../../contracts/solc/v0.8.24/MaybeRevertMessageReceiver/MaybeRevertMessageReceiver.bin d73956c26232ebcc4a5444429fa99cbefed960e323be9b5a24925885c2e477d5