diff --git a/core/gethwrappers/ccip/generated/ccipClient/ccipClient.go b/core/gethwrappers/ccip/generated/ccipClient/ccipClient.go index 5167ea5517..2d5a4f6d02 100644 --- a/core/gethwrappers/ccip/generated/ccipClient/ccipClient.go +++ b/core/gethwrappers/ccip/generated/ccipClient/ccipClient.go @@ -57,7 +57,7 @@ type ClientEVMTokenAmount struct { var CCIPClientMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"router\",\"type\":\"address\"},{\"internalType\":\"contractIERC20\",\"name\":\"feeToken\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"chainSelector\",\"type\":\"uint64\"}],\"name\":\"InvalidChain\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"recipient\",\"type\":\"bytes\"}],\"name\":\"InvalidRecipient\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"router\",\"type\":\"address\"}],\"name\":\"InvalidRouter\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"sender\",\"type\":\"bytes\"}],\"name\":\"InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"}],\"name\":\"MessageNotFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlySelf\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddressNotAllowed\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"destChainSelector\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"recipient\",\"type\":\"bytes\"}],\"name\":\"ApprovedSenderAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"destChainSelector\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"recipient\",\"type\":\"bytes\"}],\"name\":\"ApprovedSenderRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"oldRouter\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newRouter\",\"type\":\"address\"}],\"name\":\"CCIPRouterModified\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"remoteChainSelector\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"recipient\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"extraArgsBytes\",\"type\":\"bytes\"}],\"name\":\"ChainAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"removeChainSelector\",\"type\":\"uint64\"}],\"name\":\"ChainRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"oldFeeToken\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newFeeToken\",\"type\":\"address\"}],\"name\":\"FeeTokenUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"tokenReceiver\",\"type\":\"address\"}],\"name\":\"MessageAbandoned\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"reason\",\"type\":\"bytes\"}],\"name\":\"MessageFailed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"}],\"name\":\"MessageRecovered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"}],\"name\":\"MessageSent\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"}],\"name\":\"MessageSucceeded\",\"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\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokensWithdrawnByOwner\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"abandonFailedMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"acceptOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"chainSelector\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"allowed\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"recipient\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"extraArgsBytes\",\"type\":\"bytes\"}],\"internalType\":\"structCCIPBase.ChainUpdate[]\",\"name\":\"chains\",\"type\":\"tuple[]\"}],\"name\":\"applyChainUpdates\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"sourceChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"sender\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"structClient.EVMTokenAmount[]\",\"name\":\"destTokenAmounts\",\"type\":\"tuple[]\"}],\"internalType\":\"structClient.Any2EVMMessage\",\"name\":\"message\",\"type\":\"tuple\"}],\"name\":\"ccipReceive\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"destChainSelector\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"structClient.EVMTokenAmount[]\",\"name\":\"tokenAmounts\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"ccipSend\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"}],\"name\":\"getMessageContents\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"sourceChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"sender\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"structClient.EVMTokenAmount[]\",\"name\":\"destTokenAmounts\",\"type\":\"tuple[]\"}],\"internalType\":\"structClient.Any2EVMMessage\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"}],\"name\":\"getMessageStatus\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRouter\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"sourceChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"senderAddr\",\"type\":\"bytes\"}],\"name\":\"isApprovedSender\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"sourceChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"sender\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"structClient.EVMTokenAmount[]\",\"name\":\"destTokenAmounts\",\"type\":\"tuple[]\"}],\"internalType\":\"structClient.Any2EVMMessage\",\"name\":\"message\",\"type\":\"tuple\"}],\"name\":\"processMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"}],\"name\":\"retryFailedMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"destChainSelector\",\"type\":\"uint64\"}],\"name\":\"s_chainConfigs\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"recipient\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"extraArgsBytes\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"s_feeToken\",\"outputs\":[{\"internalType\":\"contractIERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"destChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"sender\",\"type\":\"bytes\"}],\"internalType\":\"structCCIPBase.ApprovedSenderUpdate[]\",\"name\":\"adds\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"uint64\",\"name\":\"destChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"sender\",\"type\":\"bytes\"}],\"internalType\":\"structCCIPBase.ApprovedSenderUpdate[]\",\"name\":\"removes\",\"type\":\"tuple[]\"}],\"name\":\"updateApprovedSenders\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"updateFeeToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newRouter\",\"type\":\"address\"}],\"name\":\"updateRouter\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"addresspayable\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdrawNativeToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdrawTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}]", - Bin: "0x60806040523480156200001157600080fd5b50604051620043da380380620043da8339810160408190526200003491620005b9565b818033806000816200008d5760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f7420736574206f776e657220746f207a65726f000000000000000060448201526064015b60405180910390fd5b600080546001600160a01b0319166001600160a01b0384811691909117909155811615620000c057620000c08162000131565b5050506001600160a01b038116620000eb576040516342bcdf7f60e11b815260040160405180910390fd5b600280546001600160a01b039283166001600160a01b03199182168117909255600880549386169390911683179055620001299250600019620001dc565b5050620006b6565b336001600160a01b038216036200018b5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c66000000000000000000604482015260640162000084565b600180546001600160a01b0319166001600160a01b0383811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b8015806200025a5750604051636eb1769f60e11b81523060048201526001600160a01b03838116602483015284169063dd62ed3e90604401602060405180830381865afa15801562000232573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002589190620005f8565b155b620002ce5760405162461bcd60e51b815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527f20746f206e6f6e2d7a65726f20616c6c6f77616e636500000000000000000000606482015260840162000084565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b0390811663095ea7b360e01b17909152620003269185916200032b16565b505050565b6040805180820190915260208082527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564908201526000906200037a906001600160a01b038516908490620003fc565b8051909150156200032657808060200190518101906200039b919062000612565b620003265760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840162000084565b60606200040d848460008562000415565b949350505050565b606082471015620004785760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b606482015260840162000084565b600080866001600160a01b0316858760405162000496919062000663565b60006040518083038185875af1925050503d8060008114620004d5576040519150601f19603f3d011682016040523d82523d6000602084013e620004da565b606091505b509092509050620004ee87838387620004f9565b979650505050505050565b606083156200056d57825160000362000565576001600160a01b0385163b620005655760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640162000084565b50816200040d565b6200040d8383815115620005845781518083602001fd5b8060405162461bcd60e51b815260040162000084919062000681565b6001600160a01b0381168114620005b657600080fd5b50565b60008060408385031215620005cd57600080fd5b8251620005da81620005a0565b6020840151909250620005ed81620005a0565b809150509250929050565b6000602082840312156200060b57600080fd5b5051919050565b6000602082840312156200062557600080fd5b815180151581146200063657600080fd5b9392505050565b60005b838110156200065a57818101518382015260200162000640565b50506000910152565b60008251620006778184602087016200063d565b9190910192915050565b6020815260008251806020840152620006a28160408501602087016200063d565b601f01601f19169190910160400192915050565b613d1480620006c66000396000f3fe6080604052600436106101635760003560e01c80638da5cb5b116100c0578063cf6730f811610074578063e89b448511610059578063e89b4485146103fb578063f2fde38b1461040e578063ff2deec31461042e57600080fd5b8063cf6730f8146103bb578063e4ca8754146103db57600080fd5b8063b0f479a1116100a5578063b0f479a114610350578063c851cc321461037b578063c89245d51461039b57600080fd5b80638da5cb5b146102e45780639fe74e261461033057600080fd5b80636939cd971161011757806379ba5097116100fc57806379ba50971461028f5780638462a2b9146102a457806385572ffb146102c457600080fd5b80636939cd97146102425780636d62d6331461026f57600080fd5b80635075a9d4116101485780635075a9d4146101d2578063536c6bfa146102005780635e35359e1461022257600080fd5b80630e958d6b1461016f57806335f170ef146101a457600080fd5b3661016a57005b600080fd5b34801561017b57600080fd5b5061018f61018a366004612db3565b61045b565b60405190151581526020015b60405180910390f35b3480156101b057600080fd5b506101c46101bf366004612e38565b6104a6565b60405161019b929190612ec3565b3480156101de57600080fd5b506101f26101ed366004612ef1565b6105d2565b60405190815260200161019b565b34801561020c57600080fd5b5061022061021b366004612f2c565b6105e5565b005b34801561022e57600080fd5b5061022061023d366004612f58565b610649565b34801561024e57600080fd5b5061026261025d366004612ef1565b6106de565b60405161019b9190612ff6565b34801561027b57600080fd5b5061022061028a36600461308a565b6108e9565b34801561029b57600080fd5b50610220610c03565b3480156102b057600080fd5b506102206102bf366004613106565b610d00565b3480156102d057600080fd5b506102206102df366004613172565b611041565b3480156102f057600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff165b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161019b565b34801561033c57600080fd5b5061022061034b3660046131ad565b61124a565b34801561035c57600080fd5b5060025473ffffffffffffffffffffffffffffffffffffffff1661030b565b34801561038757600080fd5b506102206103963660046131ef565b6115db565b3480156103a757600080fd5b506102206103b63660046131ef565b6116a7565b3480156103c757600080fd5b506102206103d6366004613172565b611811565b3480156103e757600080fd5b506102206103f6366004612ef1565b6119ca565b6101f2610409366004613341565b611c34565b34801561041a57600080fd5b506102206104293660046131ef565b6121de565b34801561043a57600080fd5b5060085461030b9073ffffffffffffffffffffffffffffffffffffffff1681565b67ffffffffffffffff8316600090815260036020526040808220905160029091019061048a908590859061344e565b9081526040519081900360200190205460ff1690509392505050565b6003602052600090815260409020805481906104c19061345e565b80601f01602080910402602001604051908101604052809291908181526020018280546104ed9061345e565b801561053a5780601f1061050f5761010080835404028352916020019161053a565b820191906000526020600020905b81548152906001019060200180831161051d57829003601f168201915b50505050509080600101805461054f9061345e565b80601f016020809104026020016040519081016040528092919081815260200182805461057b9061345e565b80156105c85780601f1061059d576101008083540402835291602001916105c8565b820191906000526020600020905b8154815290600101906020018083116105ab57829003601f168201915b5050505050905082565b60006105df6005836121f2565b92915050565b6105ed612205565b6105f78282612288565b60405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907f6832d9be2410a86571981e1e60fd4c1f9ea2a1034d6102a2b7d6c5e480adf02e9060200160405180910390a35050565b610651612205565b61067273ffffffffffffffffffffffffffffffffffffffff841683836123e2565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f6832d9be2410a86571981e1e60fd4c1f9ea2a1034d6102a2b7d6c5e480adf02e836040516106d191815260200190565b60405180910390a3505050565b6040805160a08082018352600080835260208084018290526060848601819052808501819052608085015285825260048152908490208451928301855280548352600181015467ffffffffffffffff169183019190915260028101805493949293919284019161074d9061345e565b80601f01602080910402602001604051908101604052809291908181526020018280546107799061345e565b80156107c65780601f1061079b576101008083540402835291602001916107c6565b820191906000526020600020905b8154815290600101906020018083116107a957829003601f168201915b505050505081526020016003820180546107df9061345e565b80601f016020809104026020016040519081016040528092919081815260200182805461080b9061345e565b80156108585780601f1061082d57610100808354040283529160200191610858565b820191906000526020600020905b81548152906001019060200180831161083b57829003601f168201915b5050505050815260200160048201805480602002602001604051908101604052809291908181526020016000905b828210156108db5760008481526020908190206040805180820190915260028502909101805473ffffffffffffffffffffffffffffffffffffffff168252600190810154828401529083529092019101610886565b505050915250909392505050565b6108f1612205565b60016108fe6005846121f2565b1461093d576040517fb6e78260000000000000000000000000000000000000000000000000000000008152600481018390526024015b60405180910390fd5b61094d8260025b600591906124b6565b506000828152600460209081526040808320815160a08101835281548152600182015467ffffffffffffffff169381019390935260028101805491928401916109959061345e565b80601f01602080910402602001604051908101604052809291908181526020018280546109c19061345e565b8015610a0e5780601f106109e357610100808354040283529160200191610a0e565b820191906000526020600020905b8154815290600101906020018083116109f157829003601f168201915b50505050508152602001600382018054610a279061345e565b80601f0160208091040260200160405190810160405280929190818152602001828054610a539061345e565b8015610aa05780601f10610a7557610100808354040283529160200191610aa0565b820191906000526020600020905b815481529060010190602001808311610a8357829003601f168201915b5050505050815260200160048201805480602002602001604051908101604052809291908181526020016000905b82821015610b235760008481526020908190206040805180820190915260028502909101805473ffffffffffffffffffffffffffffffffffffffff168252600190810154828401529083529092019101610ace565b5050505081525050905060005b816080015151811015610bb257610baa8383608001518381518110610b5757610b576134b1565b60200260200101516020015184608001518481518110610b7957610b796134b1565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff166123e29092919063ffffffff16565b600101610b30565b5060405173ffffffffffffffffffffffffffffffffffffffff8316815283907fd5038100bd3dc9631d3c3f4f61a3e53e9d466f40c47af9897292c7b35e32a9579060200160405180910390a2505050565b60015473ffffffffffffffffffffffffffffffffffffffff163314610c84576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4d7573742062652070726f706f736564206f776e6572000000000000000000006044820152606401610934565b60008054337fffffffffffffffffffffffff00000000000000000000000000000000000000008083168217845560018054909116905560405173ffffffffffffffffffffffffffffffffffffffff90921692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a350565b610d08612205565b60005b81811015610e9b5760036000848484818110610d2957610d296134b1565b9050602002810190610d3b91906134e0565b610d49906020810190612e38565b67ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020600201838383818110610d8057610d806134b1565b9050602002810190610d9291906134e0565b610da090602081019061351e565b604051610dae92919061344e565b90815260405190819003602001902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055828282818110610df557610df56134b1565b9050602002810190610e0791906134e0565b610e1590602081019061351e565b604051610e2392919061344e565b6040518091039020838383818110610e3d57610e3d6134b1565b9050602002810190610e4f91906134e0565b610e5d906020810190612e38565b67ffffffffffffffff167f021290bab0d93f4d9a243bd430e45dd4bc8238451e9abbba6fab4463677dfce960405160405180910390a3600101610d0b565b5060005b8381101561103a57600160036000878785818110610ebf57610ebf6134b1565b9050602002810190610ed191906134e0565b610edf906020810190612e38565b67ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020600201868684818110610f1657610f166134b1565b9050602002810190610f2891906134e0565b610f3690602081019061351e565b604051610f4492919061344e565b90815260405190819003602001902080549115157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00909216919091179055848482818110610f9457610f946134b1565b9050602002810190610fa691906134e0565b610fb490602081019061351e565b604051610fc292919061344e565b6040518091039020858583818110610fdc57610fdc6134b1565b9050602002810190610fee91906134e0565b610ffc906020810190612e38565b67ffffffffffffffff167f72d9f73bb7cb11065e15df29d61e803a0eba356d509a7025a6f51ebdea07f9e760405160405180910390a3600101610e9f565b5050505050565b60025473ffffffffffffffffffffffffffffffffffffffff163314611094576040517fd7f73334000000000000000000000000000000000000000000000000000000008152336004820152602401610934565b6110a46040820160208301612e38565b67ffffffffffffffff81166000908152600360205260409020805481906110ca9061345e565b9050600003611111576040517fd79f2ea400000000000000000000000000000000000000000000000000000000815267ffffffffffffffff83166004820152602401610934565b6040517fcf6730f8000000000000000000000000000000000000000000000000000000008152309063cf6730f89061114d908690600401613685565b600060405180830381600087803b15801561116757600080fd5b505af1925050508015611178575060015b611218573d8080156111a6576040519150601f19603f3d011682016040523d82523d6000602084013e6111ab565b606091505b506111b884356001610944565b508335600090815260046020526040902084906111d58282613a5f565b50506040518435907f55bc02a9ef6f146737edeeb425738006f67f077e7138de3bf84a15bde1a5b56f9061120a908490613b59565b60405180910390a250505050565b6040518335907fdf6958669026659bac75ba986685e11a7d271284989f565f2802522663e9a70f90600090a25b505050565b611252612205565b60005b818110156112455782828281811061126f5761126f6134b1565b90506020028101906112819190613b6c565b611292906040810190602001613bae565b61135e57600360008484848181106112ac576112ac6134b1565b90506020028101906112be9190613b6c565b6112cc906020810190612e38565b67ffffffffffffffff168152602081019190915260400160009081206112f191612d4f565b828282818110611303576113036134b1565b90506020028101906113159190613b6c565b611323906020810190612e38565b67ffffffffffffffff167f5204aec90a3c794d8e90fded8b46ae9c7c552803e7e832e0c1d358396d85991660405160405180910390a26115d3565b828282818110611370576113706134b1565b90506020028101906113829190613b6c565b61139090604081019061351e565b90506000036113cb576040517f8579befe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600360008585858181106113e3576113e36134b1565b90506020028101906113f59190613b6c565b611403906020810190612e38565b67ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000209050838383818110611439576114396134b1565b905060200281019061144b9190613b6c565b61145990604081019061351e565b82916114669190836137e3565b50838383818110611479576114796134b1565b905060200281019061148b9190613b6c565b61149990606081019061351e565b1590506114e4578383838181106114b2576114b26134b1565b90506020028101906114c49190613b6c565b6114d290606081019061351e565b60018301916114e29190836137e3565b505b8383838181106114f6576114f66134b1565b90506020028101906115089190613b6c565b61151690604081019061351e565b60405161152492919061344e565b604051809103902084848481811061153e5761153e6134b1565b90506020028101906115509190613b6c565b61155e906020810190612e38565b67ffffffffffffffff167f1ced5bcae649ed29cebfa0010298ad6794bf3822e8cb754a6eee5353a9a8721286868681811061159b5761159b6134b1565b90506020028101906115ad9190613b6c565b6115bb90606081019061351e565b6040516115c9929190613bcb565b60405180910390a3505b600101611255565b6115e3612205565b73ffffffffffffffffffffffffffffffffffffffff8116611630576040517f8579befe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f3672b589036f39ac008505b790fcb05d484d70b65680ec64c089a3c173fdc4c890600090a35050565b6116af612205565b60085473ffffffffffffffffffffffffffffffffffffffff1615611710576117106116ef60025473ffffffffffffffffffffffffffffffffffffffff1690565b60085473ffffffffffffffffffffffffffffffffffffffff169060006124cb565b6008805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093551690156117bd576117bd61177d60025473ffffffffffffffffffffffffffffffffffffffff1690565b60085473ffffffffffffffffffffffffffffffffffffffff16907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61264d565b6040805173ffffffffffffffffffffffffffffffffffffffff8084168252841660208201527f91a03e1d689caf891fe531c01e290f7b718f9c6a3af6726d6d837d2b7bd82e67910160405180910390a15050565b33301461184a576040517f14d4a4e800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61185a6040820160208301612e38565b611867604083018361351e565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525067ffffffffffffffff8616815260036020526040902080549093506118be9250905061345e565b159050806119145750600360008367ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020600201816040516118ff9190613bdf565b9081526040519081900360200190205460ff16155b1561194d57806040517f5075bb380000000000000000000000000000000000000000000000000000000081526004016109349190613b59565b61195d6040840160208501612e38565b67ffffffffffffffff81166000908152600360205260409020805481906119839061345e565b905060000361103a576040517fd79f2ea400000000000000000000000000000000000000000000000000000000815267ffffffffffffffff83166004820152602401610934565b60016119d76005836121f2565b14611a11576040517fb6e7826000000000000000000000000000000000000000000000000000000000815260048101829052602401610934565b611a1c816000610944565b506000818152600460209081526040808320815160a08101835281548152600182015467ffffffffffffffff16938101939093526002810180549192840191611a649061345e565b80601f0160208091040260200160405190810160405280929190818152602001828054611a909061345e565b8015611add5780601f10611ab257610100808354040283529160200191611add565b820191906000526020600020905b815481529060010190602001808311611ac057829003601f168201915b50505050508152602001600382018054611af69061345e565b80601f0160208091040260200160405190810160405280929190818152602001828054611b229061345e565b8015611b6f5780601f10611b4457610100808354040283529160200191611b6f565b820191906000526020600020905b815481529060010190602001808311611b5257829003601f168201915b5050505050815260200160048201805480602002602001604051908101604052809291908181526020016000905b82821015611bf25760008481526020908190206040805180820190915260028502909101805473ffffffffffffffffffffffffffffffffffffffff168252600190810154828401529083529092019101611b9d565b50505050815250509050611c0581612751565b60405182907fef3bf8c64bc480286c4f3503b870ceb23e648d2d902e31fb7bb46680da6de8ad90600090a25050565b67ffffffffffffffff8316600090815260036020526040812080548591908190611c5d9061345e565b9050600003611ca4576040517fd79f2ea400000000000000000000000000000000000000000000000000000000815267ffffffffffffffff83166004820152602401610934565b6040805160a08101825267ffffffffffffffff8816600090815260036020529182208054829190611cd49061345e565b80601f0160208091040260200160405190810160405280929190818152602001828054611d009061345e565b8015611d4d5780601f10611d2257610100808354040283529160200191611d4d565b820191906000526020600020905b815481529060010190602001808311611d3057829003601f168201915b5050509183525050602080820188905260408083018a905260085473ffffffffffffffffffffffffffffffffffffffff16606084015267ffffffffffffffff8b166000908152600390925290206001018054608090920191611dae9061345e565b80601f0160208091040260200160405190810160405280929190818152602001828054611dda9061345e565b8015611e275780601f10611dfc57610100808354040283529160200191611e27565b820191906000526020600020905b815481529060010190602001808311611e0a57829003601f168201915b5050505050815250905060005b8651811015611f8457611ea43330898481518110611e5457611e546134b1565b6020026020010151602001518a8581518110611e7257611e726134b1565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff166127c3909392919063ffffffff16565b600854875173ffffffffffffffffffffffffffffffffffffffff90911690889083908110611ed457611ed46134b1565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff1614611f7c576002548751611f7c9173ffffffffffffffffffffffffffffffffffffffff1690899084908110611f2d57611f2d6134b1565b602002602001015160200151898481518110611f4b57611f4b6134b1565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff166124cb9092919063ffffffff16565b600101611e34565b506002546040517f20487ded00000000000000000000000000000000000000000000000000000000815260009173ffffffffffffffffffffffffffffffffffffffff16906320487ded90611fde908b908690600401613bf1565b602060405180830381865afa158015611ffb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061201f9190613cbe565b60085490915073ffffffffffffffffffffffffffffffffffffffff16158015906120d857506008546040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152829173ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa1580156120b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120d69190613cbe565b105b15612102576008546121029073ffffffffffffffffffffffffffffffffffffffff163330846127c3565b60025460085473ffffffffffffffffffffffffffffffffffffffff918216916396f4e9f9911615612134576000612136565b825b8a856040518463ffffffff1660e01b8152600401612155929190613bf1565b60206040518083038185885af1158015612173573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906121989190613cbe565b94507f54791b38f3859327992a1ca0590ad3c0f08feba98d1a4f56ab0dca74d203392a856040516121cb91815260200190565b60405180910390a1505050509392505050565b6121e6612205565b6121ef81612821565b50565b60006121fe8383612916565b9392505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314612286576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4f6e6c792063616c6c61626c65206279206f776e6572000000000000000000006044820152606401610934565b565b804710156122f2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610934565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d806000811461234c576040519150601f19603f3d011682016040523d82523d6000602084013e612351565b606091505b5050905080611245576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610934565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526112459084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526129a0565b60006124c3848484612aac565b949350505050565b80158061256b57506040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff838116602483015284169063dd62ed3e90604401602060405180830381865afa158015612545573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125699190613cbe565b155b6125f7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527f20746f206e6f6e2d7a65726f20616c6c6f77616e6365000000000000000000006064820152608401610934565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526112459084907f095ea7b30000000000000000000000000000000000000000000000000000000090606401612434565b6040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff8381166024830152600091839186169063dd62ed3e90604401602060405180830381865afa1580156126c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126e89190613cbe565b6126f29190613cd7565b60405173ffffffffffffffffffffffffffffffffffffffff851660248201526044810182905290915061274b9085907f095ea7b30000000000000000000000000000000000000000000000000000000090606401612434565b50505050565b612759612205565b6040517fcf6730f8000000000000000000000000000000000000000000000000000000008152309063cf6730f890612795908490600401612ff6565b600060405180830381600087803b1580156127af57600080fd5b505af115801561103a573d6000803e3d6000fd5b60405173ffffffffffffffffffffffffffffffffffffffff8085166024830152831660448201526064810182905261274b9085907f23b872dd0000000000000000000000000000000000000000000000000000000090608401612434565b3373ffffffffffffffffffffffffffffffffffffffff8216036128a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c660000000000000000006044820152606401610934565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b60008181526002830160205260408120548015158061293a575061293a8484612ac9565b6121fe576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f456e756d657261626c654d61703a206e6f6e6578697374656e74206b657900006044820152606401610934565b6000612a02826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16612ad59092919063ffffffff16565b8051909150156112455780806020019051810190612a209190613cea565b611245576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610934565b600082815260028401602052604081208290556124c38484612ae4565b60006121fe8383612af0565b60606124c38484600085612b08565b60006121fe8383612c21565b600081815260018301602052604081205415156121fe565b606082471015612b9a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610934565b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051612bc39190613bdf565b60006040518083038185875af1925050503d8060008114612c00576040519150601f19603f3d011682016040523d82523d6000602084013e612c05565b606091505b5091509150612c1687838387612c70565b979650505050505050565b6000818152600183016020526040812054612c68575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556105df565b5060006105df565b60608315612d06578251600003612cff5773ffffffffffffffffffffffffffffffffffffffff85163b612cff576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610934565b50816124c3565b6124c38383815115612d1b5781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109349190613b59565b508054612d5b9061345e565b6000825580601f10612d6b575050565b601f0160209004906000526020600020908101906121ef91905b80821115612d995760008155600101612d85565b5090565b67ffffffffffffffff811681146121ef57600080fd5b600080600060408486031215612dc857600080fd5b8335612dd381612d9d565b9250602084013567ffffffffffffffff80821115612df057600080fd5b818601915086601f830112612e0457600080fd5b813581811115612e1357600080fd5b876020828501011115612e2557600080fd5b6020830194508093505050509250925092565b600060208284031215612e4a57600080fd5b81356121fe81612d9d565b60005b83811015612e70578181015183820152602001612e58565b50506000910152565b60008151808452612e91816020860160208601612e55565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b604081526000612ed66040830185612e79565b8281036020840152612ee88185612e79565b95945050505050565b600060208284031215612f0357600080fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff811681146121ef57600080fd5b60008060408385031215612f3f57600080fd5b8235612f4a81612f0a565b946020939093013593505050565b600080600060608486031215612f6d57600080fd5b8335612f7881612f0a565b92506020840135612f8881612f0a565b929592945050506040919091013590565b60008151808452602080850194506020840160005b83811015612feb578151805173ffffffffffffffffffffffffffffffffffffffff1688528301518388015260409096019590820190600101612fae565b509495945050505050565b602081528151602082015267ffffffffffffffff60208301511660408201526000604083015160a0606084015261303060c0840182612e79565b905060608401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08085840301608086015261306c8383612e79565b925060808601519150808584030160a086015250612ee88282612f99565b6000806040838503121561309d57600080fd5b8235915060208301356130af81612f0a565b809150509250929050565b60008083601f8401126130cc57600080fd5b50813567ffffffffffffffff8111156130e457600080fd5b6020830191508360208260051b85010111156130ff57600080fd5b9250929050565b6000806000806040858703121561311c57600080fd5b843567ffffffffffffffff8082111561313457600080fd5b613140888389016130ba565b9096509450602087013591508082111561315957600080fd5b50613166878288016130ba565b95989497509550505050565b60006020828403121561318457600080fd5b813567ffffffffffffffff81111561319b57600080fd5b820160a081850312156121fe57600080fd5b600080602083850312156131c057600080fd5b823567ffffffffffffffff8111156131d757600080fd5b6131e3858286016130ba565b90969095509350505050565b60006020828403121561320157600080fd5b81356121fe81612f0a565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff8111828210171561325e5761325e61320c565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156132ab576132ab61320c565b604052919050565b600082601f8301126132c457600080fd5b813567ffffffffffffffff8111156132de576132de61320c565b61330f60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601613264565b81815284602083860101111561332457600080fd5b816020850160208301376000918101602001919091529392505050565b60008060006060848603121561335657600080fd5b833561336181612d9d565b925060208481013567ffffffffffffffff8082111561337f57600080fd5b818701915087601f83011261339357600080fd5b8135818111156133a5576133a561320c565b6133b3848260051b01613264565b81815260069190911b8301840190848101908a8311156133d257600080fd5b938501935b8285101561341e576040858c0312156133f05760008081fd5b6133f861323b565b853561340381612f0a565b815285870135878201528252604090940193908501906133d7565b96505050604087013592508083111561343657600080fd5b5050613444868287016132b3565b9150509250925092565b8183823760009101908152919050565b600181811c9082168061347257607f821691505b6020821081036134ab577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc183360301811261351457600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261355357600080fd5b83018035915067ffffffffffffffff82111561356e57600080fd5b6020019150368190038213156130ff57600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126135b857600080fd5b830160208101925035905067ffffffffffffffff8111156135d857600080fd5b8036038213156130ff57600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b8183526000602080850194508260005b85811015612feb57813561365381612f0a565b73ffffffffffffffffffffffffffffffffffffffff168752818301358388015260409687019690910190600101613640565b6020815281356020820152600060208301356136a081612d9d565b67ffffffffffffffff80821660408501526136be6040860186613583565b925060a060608601526136d560c0860184836135e7565b9250506136e56060860186613583565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08087860301608088015261371b8583856135e7565b9450608088013592507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe188360301831261375457600080fd5b6020928801928301923591508382111561376d57600080fd5b8160061b360383131561377f57600080fd5b8685030160a0870152612c16848284613630565b601f821115611245576000816000526020600020601f850160051c810160208610156137bc5750805b601f850160051c820191505b818110156137db578281556001016137c8565b505050505050565b67ffffffffffffffff8311156137fb576137fb61320c565b61380f83613809835461345e565b83613793565b6000601f841160018114613861576000851561382b5750838201355b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b1c1916600186901b17835561103a565b6000838152602090207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0861690835b828110156138b05786850135825560209485019460019092019101613890565b50868210156138eb577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88860031b161c19848701351681555b505060018560011b0183555050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b813561393781612f0a565b73ffffffffffffffffffffffffffffffffffffffff81167fffffffffffffffffffffffff000000000000000000000000000000000000000083541617825550602082013560018201555050565b6801000000000000000083111561399d5761399d61320c565b805483825580841015613a2a5760017f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80831683146139de576139de6138fd565b80861686146139ef576139ef6138fd565b5060008360005260206000208360011b81018760011b820191505b80821015613a25578282558284830155600282019150613a0a565b505050505b5060008181526020812083915b858110156137db57613a49838361392c565b6040929092019160029190910190600101613a37565b81358155600181016020830135613a7581612d9d565b67ffffffffffffffff8082167fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000845416178355613ab5604086018661351e565b93509150613ac78383600287016137e3565b613ad4606086018661351e565b93509150613ae68383600387016137e3565b608085013592507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1853603018312613b1d57600080fd5b918401918235915080821115613b3257600080fd5b506020820191508060061b3603821315613b4b57600080fd5b61274b818360048601613984565b6020815260006121fe6020830184612e79565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8183360301811261351457600080fd5b80151581146121ef57600080fd5b600060208284031215613bc057600080fd5b81356121fe81613ba0565b6020815260006124c36020830184866135e7565b60008251613514818460208701612e55565b67ffffffffffffffff83168152604060208201526000825160a06040840152613c1d60e0840182612e79565b905060208401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc080858403016060860152613c598383612e79565b92506040860151915080858403016080860152613c768383612f99565b925073ffffffffffffffffffffffffffffffffffffffff60608701511660a086015260808601519150808584030160c086015250613cb48282612e79565b9695505050505050565b600060208284031215613cd057600080fd5b5051919050565b808201808211156105df576105df6138fd565b600060208284031215613cfc57600080fd5b81516121fe81613ba056fea164736f6c6343000818000a", + Bin: "0x60806040523480156200001157600080fd5b50604051620043de380380620043de8339810160408190526200003491620005b9565b818033806000816200008d5760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f7420736574206f776e657220746f207a65726f000000000000000060448201526064015b60405180910390fd5b600080546001600160a01b0319166001600160a01b0384811691909117909155811615620000c057620000c08162000131565b5050506001600160a01b038116620000eb576040516342bcdf7f60e11b815260040160405180910390fd5b600280546001600160a01b039283166001600160a01b03199182168117909255600880549386169390911683179055620001299250600019620001dc565b5050620006b6565b336001600160a01b038216036200018b5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c66000000000000000000604482015260640162000084565b600180546001600160a01b0319166001600160a01b0383811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b8015806200025a5750604051636eb1769f60e11b81523060048201526001600160a01b03838116602483015284169063dd62ed3e90604401602060405180830381865afa15801562000232573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002589190620005f8565b155b620002ce5760405162461bcd60e51b815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527f20746f206e6f6e2d7a65726f20616c6c6f77616e636500000000000000000000606482015260840162000084565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b0390811663095ea7b360e01b17909152620003269185916200032b16565b505050565b6040805180820190915260208082527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564908201526000906200037a906001600160a01b038516908490620003fc565b8051909150156200032657808060200190518101906200039b919062000612565b620003265760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840162000084565b60606200040d848460008562000415565b949350505050565b606082471015620004785760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b606482015260840162000084565b600080866001600160a01b0316858760405162000496919062000663565b60006040518083038185875af1925050503d8060008114620004d5576040519150601f19603f3d011682016040523d82523d6000602084013e620004da565b606091505b509092509050620004ee87838387620004f9565b979650505050505050565b606083156200056d57825160000362000565576001600160a01b0385163b620005655760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640162000084565b50816200040d565b6200040d8383815115620005845781518083602001fd5b8060405162461bcd60e51b815260040162000084919062000681565b6001600160a01b0381168114620005b657600080fd5b50565b60008060408385031215620005cd57600080fd5b8251620005da81620005a0565b6020840151909250620005ed81620005a0565b809150509250929050565b6000602082840312156200060b57600080fd5b5051919050565b6000602082840312156200062557600080fd5b815180151581146200063657600080fd5b9392505050565b60005b838110156200065a57818101518382015260200162000640565b50506000910152565b60008251620006778184602087016200063d565b9190910192915050565b6020815260008251806020840152620006a28160408501602087016200063d565b601f01601f19169190910160400192915050565b613d1880620006c66000396000f3fe6080604052600436106101635760003560e01c80638da5cb5b116100c0578063cf6730f811610074578063e89b448511610059578063e89b4485146103fb578063f2fde38b1461040e578063ff2deec31461042e57600080fd5b8063cf6730f8146103bb578063e4ca8754146103db57600080fd5b8063b0f479a1116100a5578063b0f479a114610350578063c851cc321461037b578063c89245d51461039b57600080fd5b80638da5cb5b146102e45780639fe74e261461033057600080fd5b80636939cd971161011757806379ba5097116100fc57806379ba50971461028f5780638462a2b9146102a457806385572ffb146102c457600080fd5b80636939cd97146102425780636d62d6331461026f57600080fd5b80635075a9d4116101485780635075a9d4146101d2578063536c6bfa146102005780635e35359e1461022257600080fd5b80630e958d6b1461016f57806335f170ef146101a457600080fd5b3661016a57005b600080fd5b34801561017b57600080fd5b5061018f61018a366004612db7565b61045b565b60405190151581526020015b60405180910390f35b3480156101b057600080fd5b506101c46101bf366004612e3c565b6104a6565b60405161019b929190612ec7565b3480156101de57600080fd5b506101f26101ed366004612ef5565b6105d2565b60405190815260200161019b565b34801561020c57600080fd5b5061022061021b366004612f30565b6105e5565b005b34801561022e57600080fd5b5061022061023d366004612f5c565b610649565b34801561024e57600080fd5b5061026261025d366004612ef5565b6106de565b60405161019b9190612ffa565b34801561027b57600080fd5b5061022061028a36600461308e565b6108e9565b34801561029b57600080fd5b50610220610c03565b3480156102b057600080fd5b506102206102bf36600461310a565b610d00565b3480156102d057600080fd5b506102206102df366004613176565b611041565b3480156102f057600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff165b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161019b565b34801561033c57600080fd5b5061022061034b3660046131b1565b61124a565b34801561035c57600080fd5b5060025473ffffffffffffffffffffffffffffffffffffffff1661030b565b34801561038757600080fd5b506102206103963660046131f3565b6115db565b3480156103a757600080fd5b506102206103b63660046131f3565b6116a7565b3480156103c757600080fd5b506102206103d6366004613176565b611811565b3480156103e757600080fd5b506102206103f6366004612ef5565b6119ca565b6101f2610409366004613345565b611c34565b34801561041a57600080fd5b506102206104293660046131f3565b6121e2565b34801561043a57600080fd5b5060085461030b9073ffffffffffffffffffffffffffffffffffffffff1681565b67ffffffffffffffff8316600090815260036020526040808220905160029091019061048a9085908590613452565b9081526040519081900360200190205460ff1690509392505050565b6003602052600090815260409020805481906104c190613462565b80601f01602080910402602001604051908101604052809291908181526020018280546104ed90613462565b801561053a5780601f1061050f5761010080835404028352916020019161053a565b820191906000526020600020905b81548152906001019060200180831161051d57829003601f168201915b50505050509080600101805461054f90613462565b80601f016020809104026020016040519081016040528092919081815260200182805461057b90613462565b80156105c85780601f1061059d576101008083540402835291602001916105c8565b820191906000526020600020905b8154815290600101906020018083116105ab57829003601f168201915b5050505050905082565b60006105df6005836121f6565b92915050565b6105ed612209565b6105f7828261228c565b60405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907f6832d9be2410a86571981e1e60fd4c1f9ea2a1034d6102a2b7d6c5e480adf02e9060200160405180910390a35050565b610651612209565b61067273ffffffffffffffffffffffffffffffffffffffff841683836123e6565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f6832d9be2410a86571981e1e60fd4c1f9ea2a1034d6102a2b7d6c5e480adf02e836040516106d191815260200190565b60405180910390a3505050565b6040805160a08082018352600080835260208084018290526060848601819052808501819052608085015285825260048152908490208451928301855280548352600181015467ffffffffffffffff169183019190915260028101805493949293919284019161074d90613462565b80601f016020809104026020016040519081016040528092919081815260200182805461077990613462565b80156107c65780601f1061079b576101008083540402835291602001916107c6565b820191906000526020600020905b8154815290600101906020018083116107a957829003601f168201915b505050505081526020016003820180546107df90613462565b80601f016020809104026020016040519081016040528092919081815260200182805461080b90613462565b80156108585780601f1061082d57610100808354040283529160200191610858565b820191906000526020600020905b81548152906001019060200180831161083b57829003601f168201915b5050505050815260200160048201805480602002602001604051908101604052809291908181526020016000905b828210156108db5760008481526020908190206040805180820190915260028502909101805473ffffffffffffffffffffffffffffffffffffffff168252600190810154828401529083529092019101610886565b505050915250909392505050565b6108f1612209565b60016108fe6005846121f6565b1461093d576040517fb6e78260000000000000000000000000000000000000000000000000000000008152600481018390526024015b60405180910390fd5b61094d8260025b600591906124ba565b506000828152600460209081526040808320815160a08101835281548152600182015467ffffffffffffffff1693810193909352600281018054919284019161099590613462565b80601f01602080910402602001604051908101604052809291908181526020018280546109c190613462565b8015610a0e5780601f106109e357610100808354040283529160200191610a0e565b820191906000526020600020905b8154815290600101906020018083116109f157829003601f168201915b50505050508152602001600382018054610a2790613462565b80601f0160208091040260200160405190810160405280929190818152602001828054610a5390613462565b8015610aa05780601f10610a7557610100808354040283529160200191610aa0565b820191906000526020600020905b815481529060010190602001808311610a8357829003601f168201915b5050505050815260200160048201805480602002602001604051908101604052809291908181526020016000905b82821015610b235760008481526020908190206040805180820190915260028502909101805473ffffffffffffffffffffffffffffffffffffffff168252600190810154828401529083529092019101610ace565b5050505081525050905060005b816080015151811015610bb257610baa8383608001518381518110610b5757610b576134b5565b60200260200101516020015184608001518481518110610b7957610b796134b5565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff166123e69092919063ffffffff16565b600101610b30565b5060405173ffffffffffffffffffffffffffffffffffffffff8316815283907fd5038100bd3dc9631d3c3f4f61a3e53e9d466f40c47af9897292c7b35e32a9579060200160405180910390a2505050565b60015473ffffffffffffffffffffffffffffffffffffffff163314610c84576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4d7573742062652070726f706f736564206f776e6572000000000000000000006044820152606401610934565b60008054337fffffffffffffffffffffffff00000000000000000000000000000000000000008083168217845560018054909116905560405173ffffffffffffffffffffffffffffffffffffffff90921692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a350565b610d08612209565b60005b81811015610e9b5760036000848484818110610d2957610d296134b5565b9050602002810190610d3b91906134e4565b610d49906020810190612e3c565b67ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020600201838383818110610d8057610d806134b5565b9050602002810190610d9291906134e4565b610da0906020810190613522565b604051610dae929190613452565b90815260405190819003602001902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055828282818110610df557610df56134b5565b9050602002810190610e0791906134e4565b610e15906020810190613522565b604051610e23929190613452565b6040518091039020838383818110610e3d57610e3d6134b5565b9050602002810190610e4f91906134e4565b610e5d906020810190612e3c565b67ffffffffffffffff167f021290bab0d93f4d9a243bd430e45dd4bc8238451e9abbba6fab4463677dfce960405160405180910390a3600101610d0b565b5060005b8381101561103a57600160036000878785818110610ebf57610ebf6134b5565b9050602002810190610ed191906134e4565b610edf906020810190612e3c565b67ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020600201868684818110610f1657610f166134b5565b9050602002810190610f2891906134e4565b610f36906020810190613522565b604051610f44929190613452565b90815260405190819003602001902080549115157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00909216919091179055848482818110610f9457610f946134b5565b9050602002810190610fa691906134e4565b610fb4906020810190613522565b604051610fc2929190613452565b6040518091039020858583818110610fdc57610fdc6134b5565b9050602002810190610fee91906134e4565b610ffc906020810190612e3c565b67ffffffffffffffff167f72d9f73bb7cb11065e15df29d61e803a0eba356d509a7025a6f51ebdea07f9e760405160405180910390a3600101610e9f565b5050505050565b60025473ffffffffffffffffffffffffffffffffffffffff163314611094576040517fd7f73334000000000000000000000000000000000000000000000000000000008152336004820152602401610934565b6110a46040820160208301612e3c565b67ffffffffffffffff81166000908152600360205260409020805481906110ca90613462565b9050600003611111576040517fd79f2ea400000000000000000000000000000000000000000000000000000000815267ffffffffffffffff83166004820152602401610934565b6040517fcf6730f8000000000000000000000000000000000000000000000000000000008152309063cf6730f89061114d908690600401613689565b600060405180830381600087803b15801561116757600080fd5b505af1925050508015611178575060015b611218573d8080156111a6576040519150601f19603f3d011682016040523d82523d6000602084013e6111ab565b606091505b506111b884356001610944565b508335600090815260046020526040902084906111d58282613a63565b50506040518435907f55bc02a9ef6f146737edeeb425738006f67f077e7138de3bf84a15bde1a5b56f9061120a908490613b5d565b60405180910390a250505050565b6040518335907fdf6958669026659bac75ba986685e11a7d271284989f565f2802522663e9a70f90600090a25b505050565b611252612209565b60005b818110156112455782828281811061126f5761126f6134b5565b90506020028101906112819190613b70565b611292906040810190602001613bb2565b61135e57600360008484848181106112ac576112ac6134b5565b90506020028101906112be9190613b70565b6112cc906020810190612e3c565b67ffffffffffffffff168152602081019190915260400160009081206112f191612d53565b828282818110611303576113036134b5565b90506020028101906113159190613b70565b611323906020810190612e3c565b67ffffffffffffffff167f5204aec90a3c794d8e90fded8b46ae9c7c552803e7e832e0c1d358396d85991660405160405180910390a26115d3565b828282818110611370576113706134b5565b90506020028101906113829190613b70565b611390906040810190613522565b90506000036113cb576040517f8579befe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600360008585858181106113e3576113e36134b5565b90506020028101906113f59190613b70565b611403906020810190612e3c565b67ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000209050838383818110611439576114396134b5565b905060200281019061144b9190613b70565b611459906040810190613522565b82916114669190836137e7565b50838383818110611479576114796134b5565b905060200281019061148b9190613b70565b611499906060810190613522565b1590506114e4578383838181106114b2576114b26134b5565b90506020028101906114c49190613b70565b6114d2906060810190613522565b60018301916114e29190836137e7565b505b8383838181106114f6576114f66134b5565b90506020028101906115089190613b70565b611516906040810190613522565b604051611524929190613452565b604051809103902084848481811061153e5761153e6134b5565b90506020028101906115509190613b70565b61155e906020810190612e3c565b67ffffffffffffffff167f1ced5bcae649ed29cebfa0010298ad6794bf3822e8cb754a6eee5353a9a8721286868681811061159b5761159b6134b5565b90506020028101906115ad9190613b70565b6115bb906060810190613522565b6040516115c9929190613bcf565b60405180910390a3505b600101611255565b6115e3612209565b73ffffffffffffffffffffffffffffffffffffffff8116611630576040517f8579befe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f3672b589036f39ac008505b790fcb05d484d70b65680ec64c089a3c173fdc4c890600090a35050565b6116af612209565b60085473ffffffffffffffffffffffffffffffffffffffff1615611710576117106116ef60025473ffffffffffffffffffffffffffffffffffffffff1690565b60085473ffffffffffffffffffffffffffffffffffffffff169060006124cf565b6008805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093551690156117bd576117bd61177d60025473ffffffffffffffffffffffffffffffffffffffff1690565b60085473ffffffffffffffffffffffffffffffffffffffff16907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff612651565b6040805173ffffffffffffffffffffffffffffffffffffffff8084168252841660208201527f91a03e1d689caf891fe531c01e290f7b718f9c6a3af6726d6d837d2b7bd82e67910160405180910390a15050565b33301461184a576040517f14d4a4e800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61185a6040820160208301612e3c565b6118676040830183613522565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525067ffffffffffffffff8616815260036020526040902080549093506118be92509050613462565b159050806119145750600360008367ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020600201816040516118ff9190613be3565b9081526040519081900360200190205460ff16155b1561194d57806040517f5075bb380000000000000000000000000000000000000000000000000000000081526004016109349190613b5d565b61195d6040840160208501612e3c565b67ffffffffffffffff811660009081526003602052604090208054819061198390613462565b905060000361103a576040517fd79f2ea400000000000000000000000000000000000000000000000000000000815267ffffffffffffffff83166004820152602401610934565b60016119d76005836121f6565b14611a11576040517fb6e7826000000000000000000000000000000000000000000000000000000000815260048101829052602401610934565b611a1c816000610944565b506000818152600460209081526040808320815160a08101835281548152600182015467ffffffffffffffff16938101939093526002810180549192840191611a6490613462565b80601f0160208091040260200160405190810160405280929190818152602001828054611a9090613462565b8015611add5780601f10611ab257610100808354040283529160200191611add565b820191906000526020600020905b815481529060010190602001808311611ac057829003601f168201915b50505050508152602001600382018054611af690613462565b80601f0160208091040260200160405190810160405280929190818152602001828054611b2290613462565b8015611b6f5780601f10611b4457610100808354040283529160200191611b6f565b820191906000526020600020905b815481529060010190602001808311611b5257829003601f168201915b5050505050815260200160048201805480602002602001604051908101604052809291908181526020016000905b82821015611bf25760008481526020908190206040805180820190915260028502909101805473ffffffffffffffffffffffffffffffffffffffff168252600190810154828401529083529092019101611b9d565b50505050815250509050611c0581612755565b60405182907fef3bf8c64bc480286c4f3503b870ceb23e648d2d902e31fb7bb46680da6de8ad90600090a25050565b67ffffffffffffffff8316600090815260036020526040812080548591908190611c5d90613462565b9050600003611ca4576040517fd79f2ea400000000000000000000000000000000000000000000000000000000815267ffffffffffffffff83166004820152602401610934565b6040805160a08101825267ffffffffffffffff8816600090815260036020529182208054829190611cd490613462565b80601f0160208091040260200160405190810160405280929190818152602001828054611d0090613462565b8015611d4d5780601f10611d2257610100808354040283529160200191611d4d565b820191906000526020600020905b815481529060010190602001808311611d3057829003601f168201915b5050509183525050602080820188905260408083018a905260085473ffffffffffffffffffffffffffffffffffffffff16606084015267ffffffffffffffff8b166000908152600390925290206001018054608090920191611dae90613462565b80601f0160208091040260200160405190810160405280929190818152602001828054611dda90613462565b8015611e275780601f10611dfc57610100808354040283529160200191611e27565b820191906000526020600020905b815481529060010190602001808311611e0a57829003601f168201915b5050509190925250506002546040517f20487ded00000000000000000000000000000000000000000000000000000000815291925060009173ffffffffffffffffffffffffffffffffffffffff909116906320487ded90611e8e908b908690600401613bf5565b602060405180830381865afa158015611eab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ecf9190613cc2565b60085490915073ffffffffffffffffffffffffffffffffffffffff1615801590611f8857506008546040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152829173ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa158015611f62573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f869190613cc2565b105b15611fb257600854611fb29073ffffffffffffffffffffffffffffffffffffffff163330846127c7565b60005b87518110156121055761202533308a8481518110611fd557611fd56134b5565b6020026020010151602001518b8581518110611ff357611ff36134b5565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff166127c7909392919063ffffffff16565b600854885173ffffffffffffffffffffffffffffffffffffffff90911690899083908110612055576120556134b5565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff16146120fd5760025488516120fd9173ffffffffffffffffffffffffffffffffffffffff16908a90849081106120ae576120ae6134b5565b6020026020010151602001518a84815181106120cc576120cc6134b5565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff166124cf9092919063ffffffff16565b600101611fb5565b5060025460085473ffffffffffffffffffffffffffffffffffffffff918216916396f4e9f991161561213857600061213a565b825b8a856040518463ffffffff1660e01b8152600401612159929190613bf5565b60206040518083038185885af1158015612177573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061219c9190613cc2565b94507f54791b38f3859327992a1ca0590ad3c0f08feba98d1a4f56ab0dca74d203392a856040516121cf91815260200190565b60405180910390a1505050509392505050565b6121ea612209565b6121f381612825565b50565b6000612202838361291a565b9392505050565b60005473ffffffffffffffffffffffffffffffffffffffff16331461228a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4f6e6c792063616c6c61626c65206279206f776e6572000000000000000000006044820152606401610934565b565b804710156122f6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610934565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114612350576040519150601f19603f3d011682016040523d82523d6000602084013e612355565b606091505b5050905080611245576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610934565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526112459084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526129a4565b60006124c7848484612ab0565b949350505050565b80158061256f57506040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff838116602483015284169063dd62ed3e90604401602060405180830381865afa158015612549573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061256d9190613cc2565b155b6125fb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527f20746f206e6f6e2d7a65726f20616c6c6f77616e6365000000000000000000006064820152608401610934565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526112459084907f095ea7b30000000000000000000000000000000000000000000000000000000090606401612438565b6040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff8381166024830152600091839186169063dd62ed3e90604401602060405180830381865afa1580156126c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126ec9190613cc2565b6126f69190613cdb565b60405173ffffffffffffffffffffffffffffffffffffffff851660248201526044810182905290915061274f9085907f095ea7b30000000000000000000000000000000000000000000000000000000090606401612438565b50505050565b61275d612209565b6040517fcf6730f8000000000000000000000000000000000000000000000000000000008152309063cf6730f890612799908490600401612ffa565b600060405180830381600087803b1580156127b357600080fd5b505af115801561103a573d6000803e3d6000fd5b60405173ffffffffffffffffffffffffffffffffffffffff8085166024830152831660448201526064810182905261274f9085907f23b872dd0000000000000000000000000000000000000000000000000000000090608401612438565b3373ffffffffffffffffffffffffffffffffffffffff8216036128a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c660000000000000000006044820152606401610934565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b60008181526002830160205260408120548015158061293e575061293e8484612acd565b612202576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f456e756d657261626c654d61703a206e6f6e6578697374656e74206b657900006044820152606401610934565b6000612a06826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16612ad99092919063ffffffff16565b8051909150156112455780806020019051810190612a249190613cee565b611245576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610934565b600082815260028401602052604081208290556124c78484612ae8565b60006122028383612af4565b60606124c78484600085612b0c565b60006122028383612c25565b60008181526001830160205260408120541515612202565b606082471015612b9e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610934565b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051612bc79190613be3565b60006040518083038185875af1925050503d8060008114612c04576040519150601f19603f3d011682016040523d82523d6000602084013e612c09565b606091505b5091509150612c1a87838387612c74565b979650505050505050565b6000818152600183016020526040812054612c6c575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556105df565b5060006105df565b60608315612d0a578251600003612d035773ffffffffffffffffffffffffffffffffffffffff85163b612d03576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610934565b50816124c7565b6124c78383815115612d1f5781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109349190613b5d565b508054612d5f90613462565b6000825580601f10612d6f575050565b601f0160209004906000526020600020908101906121f391905b80821115612d9d5760008155600101612d89565b5090565b67ffffffffffffffff811681146121f357600080fd5b600080600060408486031215612dcc57600080fd5b8335612dd781612da1565b9250602084013567ffffffffffffffff80821115612df457600080fd5b818601915086601f830112612e0857600080fd5b813581811115612e1757600080fd5b876020828501011115612e2957600080fd5b6020830194508093505050509250925092565b600060208284031215612e4e57600080fd5b813561220281612da1565b60005b83811015612e74578181015183820152602001612e5c565b50506000910152565b60008151808452612e95816020860160208601612e59565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b604081526000612eda6040830185612e7d565b8281036020840152612eec8185612e7d565b95945050505050565b600060208284031215612f0757600080fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff811681146121f357600080fd5b60008060408385031215612f4357600080fd5b8235612f4e81612f0e565b946020939093013593505050565b600080600060608486031215612f7157600080fd5b8335612f7c81612f0e565b92506020840135612f8c81612f0e565b929592945050506040919091013590565b60008151808452602080850194506020840160005b83811015612fef578151805173ffffffffffffffffffffffffffffffffffffffff1688528301518388015260409096019590820190600101612fb2565b509495945050505050565b602081528151602082015267ffffffffffffffff60208301511660408201526000604083015160a0606084015261303460c0840182612e7d565b905060608401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0808584030160808601526130708383612e7d565b925060808601519150808584030160a086015250612eec8282612f9d565b600080604083850312156130a157600080fd5b8235915060208301356130b381612f0e565b809150509250929050565b60008083601f8401126130d057600080fd5b50813567ffffffffffffffff8111156130e857600080fd5b6020830191508360208260051b850101111561310357600080fd5b9250929050565b6000806000806040858703121561312057600080fd5b843567ffffffffffffffff8082111561313857600080fd5b613144888389016130be565b9096509450602087013591508082111561315d57600080fd5b5061316a878288016130be565b95989497509550505050565b60006020828403121561318857600080fd5b813567ffffffffffffffff81111561319f57600080fd5b820160a0818503121561220257600080fd5b600080602083850312156131c457600080fd5b823567ffffffffffffffff8111156131db57600080fd5b6131e7858286016130be565b90969095509350505050565b60006020828403121561320557600080fd5b813561220281612f0e565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff8111828210171561326257613262613210565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156132af576132af613210565b604052919050565b600082601f8301126132c857600080fd5b813567ffffffffffffffff8111156132e2576132e2613210565b61331360207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601613268565b81815284602083860101111561332857600080fd5b816020850160208301376000918101602001919091529392505050565b60008060006060848603121561335a57600080fd5b833561336581612da1565b925060208481013567ffffffffffffffff8082111561338357600080fd5b818701915087601f83011261339757600080fd5b8135818111156133a9576133a9613210565b6133b7848260051b01613268565b81815260069190911b8301840190848101908a8311156133d657600080fd5b938501935b82851015613422576040858c0312156133f45760008081fd5b6133fc61323f565b853561340781612f0e565b815285870135878201528252604090940193908501906133db565b96505050604087013592508083111561343a57600080fd5b5050613448868287016132b7565b9150509250925092565b8183823760009101908152919050565b600181811c9082168061347657607f821691505b6020821081036134af577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc183360301811261351857600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261355757600080fd5b83018035915067ffffffffffffffff82111561357257600080fd5b60200191503681900382131561310357600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126135bc57600080fd5b830160208101925035905067ffffffffffffffff8111156135dc57600080fd5b80360382131561310357600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b8183526000602080850194508260005b85811015612fef57813561365781612f0e565b73ffffffffffffffffffffffffffffffffffffffff168752818301358388015260409687019690910190600101613644565b6020815281356020820152600060208301356136a481612da1565b67ffffffffffffffff80821660408501526136c26040860186613587565b925060a060608601526136d960c0860184836135eb565b9250506136e96060860186613587565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08087860301608088015261371f8583856135eb565b9450608088013592507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe188360301831261375857600080fd5b6020928801928301923591508382111561377157600080fd5b8160061b360383131561378357600080fd5b8685030160a0870152612c1a848284613634565b601f821115611245576000816000526020600020601f850160051c810160208610156137c05750805b601f850160051c820191505b818110156137df578281556001016137cc565b505050505050565b67ffffffffffffffff8311156137ff576137ff613210565b6138138361380d8354613462565b83613797565b6000601f841160018114613865576000851561382f5750838201355b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b1c1916600186901b17835561103a565b6000838152602090207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0861690835b828110156138b45786850135825560209485019460019092019101613894565b50868210156138ef577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88860031b161c19848701351681555b505060018560011b0183555050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b813561393b81612f0e565b73ffffffffffffffffffffffffffffffffffffffff81167fffffffffffffffffffffffff000000000000000000000000000000000000000083541617825550602082013560018201555050565b680100000000000000008311156139a1576139a1613210565b805483825580841015613a2e5760017f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80831683146139e2576139e2613901565b80861686146139f3576139f3613901565b5060008360005260206000208360011b81018760011b820191505b80821015613a29578282558284830155600282019150613a0e565b505050505b5060008181526020812083915b858110156137df57613a4d8383613930565b6040929092019160029190910190600101613a3b565b81358155600181016020830135613a7981612da1565b67ffffffffffffffff8082167fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000845416178355613ab96040860186613522565b93509150613acb8383600287016137e7565b613ad86060860186613522565b93509150613aea8383600387016137e7565b608085013592507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1853603018312613b2157600080fd5b918401918235915080821115613b3657600080fd5b506020820191508060061b3603821315613b4f57600080fd5b61274f818360048601613988565b6020815260006122026020830184612e7d565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8183360301811261351857600080fd5b80151581146121f357600080fd5b600060208284031215613bc457600080fd5b813561220281613ba4565b6020815260006124c76020830184866135eb565b60008251613518818460208701612e59565b67ffffffffffffffff83168152604060208201526000825160a06040840152613c2160e0840182612e7d565b905060208401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc080858403016060860152613c5d8383612e7d565b92506040860151915080858403016080860152613c7a8383612f9d565b925073ffffffffffffffffffffffffffffffffffffffff60608701511660a086015260808601519150808584030160c086015250613cb88282612e7d565b9695505050505050565b600060208284031215613cd457600080fd5b5051919050565b808201808211156105df576105df613901565b600060208284031215613d0057600080fd5b815161220281613ba456fea164736f6c6343000818000a", } var CCIPClientABI = CCIPClientMetaData.ABI diff --git a/core/gethwrappers/ccip/generated/ccipClientWithACK/ccipClientWithACK.go b/core/gethwrappers/ccip/generated/ccipClientWithACK/ccipClientWithACK.go index 99da9a0a1d..e422a70d4b 100644 --- a/core/gethwrappers/ccip/generated/ccipClientWithACK/ccipClientWithACK.go +++ b/core/gethwrappers/ccip/generated/ccipClientWithACK/ccipClientWithACK.go @@ -57,7 +57,7 @@ type ClientEVMTokenAmount struct { var CCIPClientWithACKMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"router\",\"type\":\"address\"},{\"internalType\":\"contractIERC20\",\"name\":\"feeToken\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"CannotAcknowledgeUnsentMessage\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidAckMessageHeader\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"chainSelector\",\"type\":\"uint64\"}],\"name\":\"InvalidChain\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"recipient\",\"type\":\"bytes\"}],\"name\":\"InvalidRecipient\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"router\",\"type\":\"address\"}],\"name\":\"InvalidRouter\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"sender\",\"type\":\"bytes\"}],\"name\":\"InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"}],\"name\":\"MessageAlreadyAcknowledged\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"}],\"name\":\"MessageNotFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlySelf\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddressNotAllowed\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"destChainSelector\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"recipient\",\"type\":\"bytes\"}],\"name\":\"ApprovedSenderAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"destChainSelector\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"recipient\",\"type\":\"bytes\"}],\"name\":\"ApprovedSenderRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"oldRouter\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newRouter\",\"type\":\"address\"}],\"name\":\"CCIPRouterModified\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"remoteChainSelector\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"recipient\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"extraArgsBytes\",\"type\":\"bytes\"}],\"name\":\"ChainAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"removeChainSelector\",\"type\":\"uint64\"}],\"name\":\"ChainRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"oldToken\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newToken\",\"type\":\"address\"}],\"name\":\"FeeTokenUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"tokenReceiver\",\"type\":\"address\"}],\"name\":\"MessageAbandoned\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"}],\"name\":\"MessageAckReceived\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"incomingMessageId\",\"type\":\"bytes32\"}],\"name\":\"MessageAckSent\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"reason\",\"type\":\"bytes\"}],\"name\":\"MessageFailed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"}],\"name\":\"MessageRecovered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"incomingMessageId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"ACKMessageId\",\"type\":\"bytes32\"}],\"name\":\"MessageSent\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"}],\"name\":\"MessageSucceeded\",\"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\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokensWithdrawnByOwner\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ACK_MESSAGE_HEADER\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"abandonFailedMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"acceptOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"chainSelector\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"allowed\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"recipient\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"extraArgsBytes\",\"type\":\"bytes\"}],\"internalType\":\"structCCIPBase.ChainUpdate[]\",\"name\":\"chains\",\"type\":\"tuple[]\"}],\"name\":\"applyChainUpdates\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"sourceChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"sender\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"structClient.EVMTokenAmount[]\",\"name\":\"destTokenAmounts\",\"type\":\"tuple[]\"}],\"internalType\":\"structClient.Any2EVMMessage\",\"name\":\"message\",\"type\":\"tuple\"}],\"name\":\"ccipReceive\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"destChainSelector\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"structClient.EVMTokenAmount[]\",\"name\":\"tokenAmounts\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"ccipSend\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"}],\"name\":\"getMessageContents\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"sourceChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"sender\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"structClient.EVMTokenAmount[]\",\"name\":\"destTokenAmounts\",\"type\":\"tuple[]\"}],\"internalType\":\"structClient.Any2EVMMessage\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"}],\"name\":\"getMessageStatus\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRouter\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"sourceChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"senderAddr\",\"type\":\"bytes\"}],\"name\":\"isApprovedSender\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"sourceChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"sender\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"structClient.EVMTokenAmount[]\",\"name\":\"destTokenAmounts\",\"type\":\"tuple[]\"}],\"internalType\":\"structClient.Any2EVMMessage\",\"name\":\"message\",\"type\":\"tuple\"}],\"name\":\"processMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"}],\"name\":\"retryFailedMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"destChainSelector\",\"type\":\"uint64\"}],\"name\":\"s_chainConfigs\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"recipient\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"extraArgsBytes\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"s_feeToken\",\"outputs\":[{\"internalType\":\"contractIERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"}],\"name\":\"s_messageStatus\",\"outputs\":[{\"internalType\":\"enumCCIPReceiverWithACK.MessageStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"destChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"sender\",\"type\":\"bytes\"}],\"internalType\":\"structCCIPBase.ApprovedSenderUpdate[]\",\"name\":\"adds\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"uint64\",\"name\":\"destChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"sender\",\"type\":\"bytes\"}],\"internalType\":\"structCCIPBase.ApprovedSenderUpdate[]\",\"name\":\"removes\",\"type\":\"tuple[]\"}],\"name\":\"updateApprovedSenders\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"updateFeeToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newRouter\",\"type\":\"address\"}],\"name\":\"updateRouter\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"addresspayable\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdrawNativeToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdrawTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}]", - Bin: "0x60806040523480156200001157600080fd5b5060405162004aea38038062004aea833981016040819052620000349162000569565b8181818033806000816200008f5760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f7420736574206f776e657220746f207a65726f000000000000000060448201526064015b60405180910390fd5b600080546001600160a01b0319166001600160a01b0384811691909117909155811615620000c257620000c28162000145565b5050506001600160a01b038116620000ed576040516342bcdf7f60e11b815260040160405180910390fd5b600280546001600160a01b039283166001600160a01b0319918216179091556008805492851692909116821790551590506200013b576200013b6001600160a01b03821683600019620001f0565b505050506200068e565b336001600160a01b038216036200019f5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c66000000000000000000604482015260640162000086565b600180546001600160a01b0319166001600160a01b0383811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b604051636eb1769f60e11b81523060048201526001600160a01b038381166024830152600091839186169063dd62ed3e90604401602060405180830381865afa15801562000242573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002689190620005a8565b620002749190620005c2565b604080516001600160a01b038616602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b0390811663095ea7b360e01b17909152919250620002d091869190620002d616565b50505050565b6040805180820190915260208082527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65649082015260009062000325906001600160a01b038516908490620003ac565b805190915015620003a75780806020019051810190620003469190620005ea565b620003a75760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840162000086565b505050565b6060620003bd8484600085620003c5565b949350505050565b606082471015620004285760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b606482015260840162000086565b600080866001600160a01b031685876040516200044691906200063b565b60006040518083038185875af1925050503d806000811462000485576040519150601f19603f3d011682016040523d82523d6000602084013e6200048a565b606091505b5090925090506200049e87838387620004a9565b979650505050505050565b606083156200051d57825160000362000515576001600160a01b0385163b620005155760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640162000086565b5081620003bd565b620003bd8383815115620005345781518083602001fd5b8060405162461bcd60e51b815260040162000086919062000659565b6001600160a01b03811681146200056657600080fd5b50565b600080604083850312156200057d57600080fd5b82516200058a8162000550565b60208401519092506200059d8162000550565b809150509250929050565b600060208284031215620005bb57600080fd5b5051919050565b80820180821115620005e457634e487b7160e01b600052601160045260246000fd5b92915050565b600060208284031215620005fd57600080fd5b815180151581146200060e57600080fd5b9392505050565b60005b838110156200063257818101518382015260200162000618565b50506000910152565b600082516200064f81846020870162000615565b9190910192915050565b60208152600082518060208401526200067a81604085016020870162000615565b601f01601f19169190910160400192915050565b61444c806200069e6000396000f3fe6080604052600436106101795760003560e01c806385572ffb116100cb578063c89245d51161007f578063e89b448511610059578063e89b4485146104a8578063f2fde38b146104bb578063ff2deec3146104db57600080fd5b8063c89245d514610448578063cf6730f814610468578063e4ca87541461048857600080fd5b80639fe74e26116100b05780639fe74e26146103dd578063b0f479a1146103fd578063c851cc321461042857600080fd5b806385572ffb146103715780638da5cb5b1461039157600080fd5b80635e35359e1161012d5780636fef519e116101075780636fef519e146102e657806379ba50971461033c5780638462a2b91461035157600080fd5b80635e35359e146102795780636939cd97146102995780636d62d633146102c657600080fd5b806335f170ef1161015e57806335f170ef146101fb5780635075a9d414610229578063536c6bfa1461025757600080fd5b806305bfe982146101855780630e958d6b146101cb57600080fd5b3661018057005b600080fd5b34801561019157600080fd5b506101b56101a03660046132e5565b60096020526000908152604090205460ff1681565b6040516101c2919061332d565b60405180910390f35b3480156101d757600080fd5b506101eb6101e6366004613384565b610508565b60405190151581526020016101c2565b34801561020757600080fd5b5061021b610216366004613409565b610553565b6040516101c2929190613494565b34801561023557600080fd5b506102496102443660046132e5565b61067f565b6040519081526020016101c2565b34801561026357600080fd5b506102776102723660046134e4565b610692565b005b34801561028557600080fd5b50610277610294366004613510565b6106f6565b3480156102a557600080fd5b506102b96102b43660046132e5565b61078b565b6040516101c291906135ae565b3480156102d257600080fd5b506102776102e1366004613642565b610996565b3480156102f257600080fd5b5061032f6040518060400160405280601581526020017f4d4553534147455f41434b4e4f574c45444745445f000000000000000000000081525081565b6040516101c29190613672565b34801561034857600080fd5b50610277610cb0565b34801561035d57600080fd5b5061027761036c3660046136d1565b610dad565b34801561037d57600080fd5b5061027761038c36600461373d565b6110ee565b34801561039d57600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff165b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101c2565b3480156103e957600080fd5b506102776103f8366004613778565b6112f7565b34801561040957600080fd5b5060025473ffffffffffffffffffffffffffffffffffffffff166103b8565b34801561043457600080fd5b506102776104433660046137ba565b611688565b34801561045457600080fd5b506102776104633660046137ba565b611754565b34801561047457600080fd5b5061027761048336600461373d565b6118c8565b34801561049457600080fd5b506102776104a33660046132e5565b611c16565b6102496104b636600461393d565b611e80565b3480156104c757600080fd5b506102776104d63660046137ba565b6123b6565b3480156104e757600080fd5b506008546103b89073ffffffffffffffffffffffffffffffffffffffff1681565b67ffffffffffffffff831660009081526003602052604080822090516002909101906105379085908590613a4a565b9081526040519081900360200190205460ff1690509392505050565b60036020526000908152604090208054819061056e90613a5a565b80601f016020809104026020016040519081016040528092919081815260200182805461059a90613a5a565b80156105e75780601f106105bc576101008083540402835291602001916105e7565b820191906000526020600020905b8154815290600101906020018083116105ca57829003601f168201915b5050505050908060010180546105fc90613a5a565b80601f016020809104026020016040519081016040528092919081815260200182805461062890613a5a565b80156106755780601f1061064a57610100808354040283529160200191610675565b820191906000526020600020905b81548152906001019060200180831161065857829003601f168201915b5050505050905082565b600061068c6005836123ca565b92915050565b61069a6123dd565b6106a48282612460565b60405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907f6832d9be2410a86571981e1e60fd4c1f9ea2a1034d6102a2b7d6c5e480adf02e9060200160405180910390a35050565b6106fe6123dd565b61071f73ffffffffffffffffffffffffffffffffffffffff841683836125ba565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f6832d9be2410a86571981e1e60fd4c1f9ea2a1034d6102a2b7d6c5e480adf02e8360405161077e91815260200190565b60405180910390a3505050565b6040805160a08082018352600080835260208084018290526060848601819052808501819052608085015285825260048152908490208451928301855280548352600181015467ffffffffffffffff16918301919091526002810180549394929391928401916107fa90613a5a565b80601f016020809104026020016040519081016040528092919081815260200182805461082690613a5a565b80156108735780601f1061084857610100808354040283529160200191610873565b820191906000526020600020905b81548152906001019060200180831161085657829003601f168201915b5050505050815260200160038201805461088c90613a5a565b80601f01602080910402602001604051908101604052809291908181526020018280546108b890613a5a565b80156109055780601f106108da57610100808354040283529160200191610905565b820191906000526020600020905b8154815290600101906020018083116108e857829003601f168201915b5050505050815260200160048201805480602002602001604051908101604052809291908181526020016000905b828210156109885760008481526020908190206040805180820190915260028502909101805473ffffffffffffffffffffffffffffffffffffffff168252600190810154828401529083529092019101610933565b505050915250909392505050565b61099e6123dd565b60016109ab6005846123ca565b146109ea576040517fb6e78260000000000000000000000000000000000000000000000000000000008152600481018390526024015b60405180910390fd5b6109fa8260025b6005919061268e565b506000828152600460209081526040808320815160a08101835281548152600182015467ffffffffffffffff16938101939093526002810180549192840191610a4290613a5a565b80601f0160208091040260200160405190810160405280929190818152602001828054610a6e90613a5a565b8015610abb5780601f10610a9057610100808354040283529160200191610abb565b820191906000526020600020905b815481529060010190602001808311610a9e57829003601f168201915b50505050508152602001600382018054610ad490613a5a565b80601f0160208091040260200160405190810160405280929190818152602001828054610b0090613a5a565b8015610b4d5780601f10610b2257610100808354040283529160200191610b4d565b820191906000526020600020905b815481529060010190602001808311610b3057829003601f168201915b5050505050815260200160048201805480602002602001604051908101604052809291908181526020016000905b82821015610bd05760008481526020908190206040805180820190915260028502909101805473ffffffffffffffffffffffffffffffffffffffff168252600190810154828401529083529092019101610b7b565b5050505081525050905060005b816080015151811015610c5f57610c578383608001518381518110610c0457610c04613aad565b60200260200101516020015184608001518481518110610c2657610c26613aad565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff166125ba9092919063ffffffff16565b600101610bdd565b5060405173ffffffffffffffffffffffffffffffffffffffff8316815283907fd5038100bd3dc9631d3c3f4f61a3e53e9d466f40c47af9897292c7b35e32a9579060200160405180910390a2505050565b60015473ffffffffffffffffffffffffffffffffffffffff163314610d31576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4d7573742062652070726f706f736564206f776e65720000000000000000000060448201526064016109e1565b60008054337fffffffffffffffffffffffff00000000000000000000000000000000000000008083168217845560018054909116905560405173ffffffffffffffffffffffffffffffffffffffff90921692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a350565b610db56123dd565b60005b81811015610f485760036000848484818110610dd657610dd6613aad565b9050602002810190610de89190613adc565b610df6906020810190613409565b67ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020600201838383818110610e2d57610e2d613aad565b9050602002810190610e3f9190613adc565b610e4d906020810190613b1a565b604051610e5b929190613a4a565b90815260405190819003602001902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055828282818110610ea257610ea2613aad565b9050602002810190610eb49190613adc565b610ec2906020810190613b1a565b604051610ed0929190613a4a565b6040518091039020838383818110610eea57610eea613aad565b9050602002810190610efc9190613adc565b610f0a906020810190613409565b67ffffffffffffffff167f021290bab0d93f4d9a243bd430e45dd4bc8238451e9abbba6fab4463677dfce960405160405180910390a3600101610db8565b5060005b838110156110e757600160036000878785818110610f6c57610f6c613aad565b9050602002810190610f7e9190613adc565b610f8c906020810190613409565b67ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020600201868684818110610fc357610fc3613aad565b9050602002810190610fd59190613adc565b610fe3906020810190613b1a565b604051610ff1929190613a4a565b90815260405190819003602001902080549115157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0090921691909117905584848281811061104157611041613aad565b90506020028101906110539190613adc565b611061906020810190613b1a565b60405161106f929190613a4a565b604051809103902085858381811061108957611089613aad565b905060200281019061109b9190613adc565b6110a9906020810190613409565b67ffffffffffffffff167f72d9f73bb7cb11065e15df29d61e803a0eba356d509a7025a6f51ebdea07f9e760405160405180910390a3600101610f4c565b5050505050565b60025473ffffffffffffffffffffffffffffffffffffffff163314611141576040517fd7f733340000000000000000000000000000000000000000000000000000000081523360048201526024016109e1565b6111516040820160208301613409565b67ffffffffffffffff811660009081526003602052604090208054819061117790613a5a565b90506000036111be576040517fd79f2ea400000000000000000000000000000000000000000000000000000000815267ffffffffffffffff831660048201526024016109e1565b6040517fcf6730f8000000000000000000000000000000000000000000000000000000008152309063cf6730f8906111fa908690600401613c81565b600060405180830381600087803b15801561121457600080fd5b505af1925050508015611225575060015b6112c5573d808015611253576040519150601f19603f3d011682016040523d82523d6000602084013e611258565b606091505b50611265843560016109f1565b50833560009081526004602052604090208490611282828261405b565b50506040518435907f55bc02a9ef6f146737edeeb425738006f67f077e7138de3bf84a15bde1a5b56f906112b7908490613672565b60405180910390a250505050565b6040518335907fdf6958669026659bac75ba986685e11a7d271284989f565f2802522663e9a70f90600090a25b505050565b6112ff6123dd565b60005b818110156112f25782828281811061131c5761131c613aad565b905060200281019061132e9190614155565b61133f906040810190602001614197565b61140b576003600084848481811061135957611359613aad565b905060200281019061136b9190614155565b611379906020810190613409565b67ffffffffffffffff1681526020810191909152604001600090812061139e91613297565b8282828181106113b0576113b0613aad565b90506020028101906113c29190614155565b6113d0906020810190613409565b67ffffffffffffffff167f5204aec90a3c794d8e90fded8b46ae9c7c552803e7e832e0c1d358396d85991660405160405180910390a2611680565b82828281811061141d5761141d613aad565b905060200281019061142f9190614155565b61143d906040810190613b1a565b9050600003611478576040517f8579befe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006003600085858581811061149057611490613aad565b90506020028101906114a29190614155565b6114b0906020810190613409565b67ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002090508383838181106114e6576114e6613aad565b90506020028101906114f89190614155565b611506906040810190613b1a565b8291611513919083613ddf565b5083838381811061152657611526613aad565b90506020028101906115389190614155565b611546906060810190613b1a565b1590506115915783838381811061155f5761155f613aad565b90506020028101906115719190614155565b61157f906060810190613b1a565b600183019161158f919083613ddf565b505b8383838181106115a3576115a3613aad565b90506020028101906115b59190614155565b6115c3906040810190613b1a565b6040516115d1929190613a4a565b60405180910390208484848181106115eb576115eb613aad565b90506020028101906115fd9190614155565b61160b906020810190613409565b67ffffffffffffffff167f1ced5bcae649ed29cebfa0010298ad6794bf3822e8cb754a6eee5353a9a8721286868681811061164857611648613aad565b905060200281019061165a9190614155565b611668906060810190613b1a565b6040516116769291906141b4565b60405180910390a3505b600101611302565b6116906123dd565b73ffffffffffffffffffffffffffffffffffffffff81166116dd576040517f8579befe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f3672b589036f39ac008505b790fcb05d484d70b65680ec64c089a3c173fdc4c890600090a35050565b61175c6123dd565b60085473ffffffffffffffffffffffffffffffffffffffff16156117bd576117bd61179c60025473ffffffffffffffffffffffffffffffffffffffff1690565b60085473ffffffffffffffffffffffffffffffffffffffff169060006126a3565b6008805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff00000000000000000000000000000000000000008316811790935516901561186a5761186a61182a60025473ffffffffffffffffffffffffffffffffffffffff1690565b60085473ffffffffffffffffffffffffffffffffffffffff16907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff612825565b8173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f91a03e1d689caf891fe531c01e290f7b718f9c6a3af6726d6d837d2b7bd82e6760405160405180910390a35050565b333014611901576040517f14d4a4e800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6119116040820160208301613409565b61191e6040830183613b1a565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525067ffffffffffffffff86168152600360205260409020805490935061197592509050613a5a565b159050806119cb5750600360008367ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020600201816040516119b691906141c8565b9081526040519081900360200190205460ff16155b15611a0457806040517f5075bb380000000000000000000000000000000000000000000000000000000081526004016109e19190613672565b6000611a136060850185613b1a565b810190611a2091906141da565b9050600081604001516001811115611a3a57611a3a6132fe565b03611a4d57611a4884612923565b611c10565b600181604001516001811115611a6557611a656132fe565b03611c10576000808260200151806020019051810190611a859190614286565b915091506040518060400160405280601581526020017f4d4553534147455f41434b4e4f574c45444745445f0000000000000000000000815250604051602001611acf9190613672565b6040516020818303038152906040528051906020012082604051602001611af69190613672565b6040516020818303038152906040528051906020012014611b43576040517fae15168d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600160008281526009602052604090205460ff166002811115611b6857611b686132fe565b14611ba2576040517f3ec87700000000000000000000000000000000000000000000000000000000008152600481018290526024016109e1565b60008181526009602090815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600217905590518281527fef0cb160d3dc564cde61ae97d9981f9c4d92ace727a2ec202b18b223ea832a79910160405180910390a150505b50505050565b6001611c236005836123ca565b14611c5d576040517fb6e78260000000000000000000000000000000000000000000000000000000008152600481018290526024016109e1565b611c688160006109f1565b506000818152600460209081526040808320815160a08101835281548152600182015467ffffffffffffffff16938101939093526002810180549192840191611cb090613a5a565b80601f0160208091040260200160405190810160405280929190818152602001828054611cdc90613a5a565b8015611d295780601f10611cfe57610100808354040283529160200191611d29565b820191906000526020600020905b815481529060010190602001808311611d0c57829003601f168201915b50505050508152602001600382018054611d4290613a5a565b80601f0160208091040260200160405190810160405280929190818152602001828054611d6e90613a5a565b8015611dbb5780601f10611d9057610100808354040283529160200191611dbb565b820191906000526020600020905b815481529060010190602001808311611d9e57829003601f168201915b5050505050815260200160048201805480602002602001604051908101604052809291908181526020016000905b82821015611e3e5760008481526020908190206040805180820190915260028502909101805473ffffffffffffffffffffffffffffffffffffffff168252600190810154828401529083529092019101611de9565b50505050815250509050611e5181612c99565b60405182907fef3bf8c64bc480286c4f3503b870ceb23e648d2d902e31fb7bb46680da6de8ad90600090a25050565b67ffffffffffffffff8316600090815260036020526040812080548591908190611ea990613a5a565b9050600003611ef0576040517fd79f2ea400000000000000000000000000000000000000000000000000000000815267ffffffffffffffff831660048201526024016109e1565b6040805160a08101825267ffffffffffffffff8816600090815260036020529182208054829190611f2090613a5a565b80601f0160208091040260200160405190810160405280929190818152602001828054611f4c90613a5a565b8015611f995780601f10611f6e57610100808354040283529160200191611f99565b820191906000526020600020905b815481529060010190602001808311611f7c57829003601f168201915b5050509183525050602080820188905260408083018a905260085473ffffffffffffffffffffffffffffffffffffffff16606084015267ffffffffffffffff8b166000908152600390925290206001018054608090920191611ffa90613a5a565b80601f016020809104026020016040519081016040528092919081815260200182805461202690613a5a565b80156120735780601f1061204857610100808354040283529160200191612073565b820191906000526020600020905b81548152906001019060200180831161205657829003601f168201915b5050505050815250905060005b86518110156121d0576120f033308984815181106120a0576120a0613aad565b6020026020010151602001518a85815181106120be576120be613aad565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff16612d0b909392919063ffffffff16565b600854875173ffffffffffffffffffffffffffffffffffffffff9091169088908390811061212057612120613aad565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff16146121c85760025487516121c89173ffffffffffffffffffffffffffffffffffffffff169089908490811061217957612179613aad565b60200260200101516020015189848151811061219757612197613aad565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff166126a39092919063ffffffff16565b600101612080565b506002546040517f20487ded00000000000000000000000000000000000000000000000000000000815260009173ffffffffffffffffffffffffffffffffffffffff16906320487ded9061222a908b908690600401614307565b602060405180830381865afa158015612247573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061226b91906143d4565b60085490915073ffffffffffffffffffffffffffffffffffffffff16156122b1576008546122b19073ffffffffffffffffffffffffffffffffffffffff16333084612d0b565b60025460085473ffffffffffffffffffffffffffffffffffffffff918216916396f4e9f99116156122e35760006122e5565b825b8a856040518463ffffffff1660e01b8152600401612304929190614307565b60206040518083038185885af1158015612322573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061234791906143d4565b60008181526009602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055519196509086907f9102b9031c3c59d8320bf14d84d7d7a3434366b91032fad1c87579cfc62b2372908390a3505050509392505050565b6123be6123dd565b6123c781612d69565b50565b60006123d68383612e5e565b9392505050565b60005473ffffffffffffffffffffffffffffffffffffffff16331461245e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4f6e6c792063616c6c61626c65206279206f776e65720000000000000000000060448201526064016109e1565b565b804710156124ca576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016109e1565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114612524576040519150601f19603f3d011682016040523d82523d6000602084013e612529565b606091505b50509050806112f2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016109e1565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526112f29084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152612ee8565b600061269b848484612ff4565b949350505050565b80158061274357506040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff838116602483015284169063dd62ed3e90604401602060405180830381865afa15801561271d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061274191906143d4565b155b6127cf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527f20746f206e6f6e2d7a65726f20616c6c6f77616e63650000000000000000000060648201526084016109e1565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526112f29084907f095ea7b3000000000000000000000000000000000000000000000000000000009060640161260c565b6040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff8381166024830152600091839186169063dd62ed3e90604401602060405180830381865afa15801561289c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128c091906143d4565b6128ca91906143ed565b60405173ffffffffffffffffffffffffffffffffffffffff8516602482015260448101829052909150611c109085907f095ea7b3000000000000000000000000000000000000000000000000000000009060640161260c565b6040805160008082526020820190925281612960565b60408051808201909152600080825260208201528152602001906001900390816129395790505b50905060006040518060a001604052808480604001906129809190613b1a565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505090825250604080518082018252601581527f4d4553534147455f41434b4e4f574c45444745445f0000000000000000000000602082810191909152915192820192612a019288359101614400565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152918152908252602082810186905260085473ffffffffffffffffffffffffffffffffffffffff1683830152606090920191600391600091612a71918901908901613409565b67ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206001018054612aa190613a5a565b80601f0160208091040260200160405190810160405280929190818152602001828054612acd90613a5a565b8015612b1a5780601f10612aef57610100808354040283529160200191612b1a565b820191906000526020600020905b815481529060010190602001808311612afd57829003601f168201915b50505091909252505060025490915060009073ffffffffffffffffffffffffffffffffffffffff166320487ded612b576040870160208801613409565b846040518363ffffffff1660e01b8152600401612b75929190614307565b602060405180830381865afa158015612b92573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bb691906143d4565b60025460085491925060009173ffffffffffffffffffffffffffffffffffffffff918216916396f4e9f9911615612bee576000612bf0565b835b612c006040890160208a01613409565b866040518463ffffffff1660e01b8152600401612c1e929190614307565b60206040518083038185885af1158015612c3c573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612c6191906143d4565b60405190915081908635907f9102b9031c3c59d8320bf14d84d7d7a3434366b91032fad1c87579cfc62b237290600090a35050505050565b612ca16123dd565b6040517fcf6730f8000000000000000000000000000000000000000000000000000000008152309063cf6730f890612cdd9084906004016135ae565b600060405180830381600087803b158015612cf757600080fd5b505af11580156110e7573d6000803e3d6000fd5b60405173ffffffffffffffffffffffffffffffffffffffff80851660248301528316604482015260648101829052611c109085907f23b872dd000000000000000000000000000000000000000000000000000000009060840161260c565b3373ffffffffffffffffffffffffffffffffffffffff821603612de8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c6600000000000000000060448201526064016109e1565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b600081815260028301602052604081205480151580612e825750612e828484613011565b6123d6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f456e756d657261626c654d61703a206e6f6e6578697374656e74206b6579000060448201526064016109e1565b6000612f4a826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff1661301d9092919063ffffffff16565b8051909150156112f25780806020019051810190612f689190614422565b6112f2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016109e1565b6000828152600284016020526040812082905561269b848461302c565b60006123d68383613038565b606061269b8484600085613050565b60006123d68383613169565b600081815260018301602052604081205415156123d6565b6060824710156130e2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016109e1565b6000808673ffffffffffffffffffffffffffffffffffffffff16858760405161310b91906141c8565b60006040518083038185875af1925050503d8060008114613148576040519150601f19603f3d011682016040523d82523d6000602084013e61314d565b606091505b509150915061315e878383876131b8565b979650505050505050565b60008181526001830160205260408120546131b05750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561068c565b50600061068c565b6060831561324e5782516000036132475773ffffffffffffffffffffffffffffffffffffffff85163b613247576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016109e1565b508161269b565b61269b83838151156132635781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109e19190613672565b5080546132a390613a5a565b6000825580601f106132b3575050565b601f0160209004906000526020600020908101906123c791905b808211156132e157600081556001016132cd565b5090565b6000602082840312156132f757600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b6020810160038310613368577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b67ffffffffffffffff811681146123c757600080fd5b60008060006040848603121561339957600080fd5b83356133a48161336e565b9250602084013567ffffffffffffffff808211156133c157600080fd5b818601915086601f8301126133d557600080fd5b8135818111156133e457600080fd5b8760208285010111156133f657600080fd5b6020830194508093505050509250925092565b60006020828403121561341b57600080fd5b81356123d68161336e565b60005b83811015613441578181015183820152602001613429565b50506000910152565b60008151808452613462816020860160208601613426565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6040815260006134a7604083018561344a565b82810360208401526134b9818561344a565b95945050505050565b73ffffffffffffffffffffffffffffffffffffffff811681146123c757600080fd5b600080604083850312156134f757600080fd5b8235613502816134c2565b946020939093013593505050565b60008060006060848603121561352557600080fd5b8335613530816134c2565b92506020840135613540816134c2565b929592945050506040919091013590565b60008151808452602080850194506020840160005b838110156135a3578151805173ffffffffffffffffffffffffffffffffffffffff1688528301518388015260409096019590820190600101613566565b509495945050505050565b602081528151602082015267ffffffffffffffff60208301511660408201526000604083015160a060608401526135e860c084018261344a565b905060608401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe080858403016080860152613624838361344a565b925060808601519150808584030160a0860152506134b98282613551565b6000806040838503121561365557600080fd5b823591506020830135613667816134c2565b809150509250929050565b6020815260006123d6602083018461344a565b60008083601f84011261369757600080fd5b50813567ffffffffffffffff8111156136af57600080fd5b6020830191508360208260051b85010111156136ca57600080fd5b9250929050565b600080600080604085870312156136e757600080fd5b843567ffffffffffffffff808211156136ff57600080fd5b61370b88838901613685565b9096509450602087013591508082111561372457600080fd5b5061373187828801613685565b95989497509550505050565b60006020828403121561374f57600080fd5b813567ffffffffffffffff81111561376657600080fd5b820160a081850312156123d657600080fd5b6000806020838503121561378b57600080fd5b823567ffffffffffffffff8111156137a257600080fd5b6137ae85828601613685565b90969095509350505050565b6000602082840312156137cc57600080fd5b81356123d6816134c2565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715613829576138296137d7565b60405290565b6040516060810167ffffffffffffffff81118282101715613829576138296137d7565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715613899576138996137d7565b604052919050565b600067ffffffffffffffff8211156138bb576138bb6137d7565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f8301126138f857600080fd5b813561390b613906826138a1565b613852565b81815284602083860101111561392057600080fd5b816020850160208301376000918101602001919091529392505050565b60008060006060848603121561395257600080fd5b833561395d8161336e565b925060208481013567ffffffffffffffff8082111561397b57600080fd5b818701915087601f83011261398f57600080fd5b8135818111156139a1576139a16137d7565b6139af848260051b01613852565b81815260069190911b8301840190848101908a8311156139ce57600080fd5b938501935b82851015613a1a576040858c0312156139ec5760008081fd5b6139f4613806565b85356139ff816134c2565b815285870135878201528252604090940193908501906139d3565b965050506040870135925080831115613a3257600080fd5b5050613a40868287016138e7565b9150509250925092565b8183823760009101908152919050565b600181811c90821680613a6e57607f821691505b602082108103613aa7577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc1833603018112613b1057600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613b4f57600080fd5b83018035915067ffffffffffffffff821115613b6a57600080fd5b6020019150368190038213156136ca57600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613bb457600080fd5b830160208101925035905067ffffffffffffffff811115613bd457600080fd5b8036038213156136ca57600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b8183526000602080850194508260005b858110156135a3578135613c4f816134c2565b73ffffffffffffffffffffffffffffffffffffffff168752818301358388015260409687019690910190600101613c3c565b602081528135602082015260006020830135613c9c8161336e565b67ffffffffffffffff8082166040850152613cba6040860186613b7f565b925060a06060860152613cd160c086018483613be3565b925050613ce16060860186613b7f565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe080878603016080880152613d17858385613be3565b9450608088013592507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1883603018312613d5057600080fd5b60209288019283019235915083821115613d6957600080fd5b8160061b3603831315613d7b57600080fd5b8685030160a087015261315e848284613c2c565b601f8211156112f2576000816000526020600020601f850160051c81016020861015613db85750805b601f850160051c820191505b81811015613dd757828155600101613dc4565b505050505050565b67ffffffffffffffff831115613df757613df76137d7565b613e0b83613e058354613a5a565b83613d8f565b6000601f841160018114613e5d5760008515613e275750838201355b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b1c1916600186901b1783556110e7565b6000838152602090207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0861690835b82811015613eac5786850135825560209485019460019092019101613e8c565b5086821015613ee7577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88860031b161c19848701351681555b505060018560011b0183555050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8135613f33816134c2565b73ffffffffffffffffffffffffffffffffffffffff81167fffffffffffffffffffffffff000000000000000000000000000000000000000083541617825550602082013560018201555050565b68010000000000000000831115613f9957613f996137d7565b8054838255808410156140265760017f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8083168314613fda57613fda613ef9565b8086168614613feb57613feb613ef9565b5060008360005260206000208360011b81018760011b820191505b80821015614021578282558284830155600282019150614006565b505050505b5060008181526020812083915b85811015613dd7576140458383613f28565b6040929092019160029190910190600101614033565b813581556001810160208301356140718161336e565b67ffffffffffffffff8082167fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000008454161783556140b16040860186613b1a565b935091506140c3838360028701613ddf565b6140d06060860186613b1a565b935091506140e2838360038701613ddf565b608085013592507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe185360301831261411957600080fd5b91840191823591508082111561412e57600080fd5b506020820191508060061b360382131561414757600080fd5b611c10818360048601613f80565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81833603018112613b1057600080fd5b80151581146123c757600080fd5b6000602082840312156141a957600080fd5b81356123d681614189565b60208152600061269b602083018486613be3565b60008251613b10818460208701613426565b6000602082840312156141ec57600080fd5b813567ffffffffffffffff8082111561420457600080fd5b908301906060828603121561421857600080fd5b61422061382f565b82358281111561422f57600080fd5b61423b878286016138e7565b82525060208301358281111561425057600080fd5b61425c878286016138e7565b602083015250604083013592506002831061427657600080fd5b6040810192909252509392505050565b6000806040838503121561429957600080fd5b825167ffffffffffffffff8111156142b057600080fd5b8301601f810185136142c157600080fd5b80516142cf613906826138a1565b8181528660208385010111156142e457600080fd5b6142f5826020830160208601613426565b60209590950151949694955050505050565b67ffffffffffffffff83168152604060208201526000825160a0604084015261433360e084018261344a565b905060208401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08085840301606086015261436f838361344a565b9250604086015191508085840301608086015261438c8383613551565b925073ffffffffffffffffffffffffffffffffffffffff60608701511660a086015260808601519150808584030160c0860152506143ca828261344a565b9695505050505050565b6000602082840312156143e657600080fd5b5051919050565b8082018082111561068c5761068c613ef9565b604081526000614413604083018561344a565b90508260208301529392505050565b60006020828403121561443457600080fd5b81516123d68161418956fea164736f6c6343000818000a", + Bin: "0x60806040523480156200001157600080fd5b5060405162004b8b38038062004b8b833981016040819052620000349162000569565b8181818033806000816200008f5760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f7420736574206f776e657220746f207a65726f000000000000000060448201526064015b60405180910390fd5b600080546001600160a01b0319166001600160a01b0384811691909117909155811615620000c257620000c28162000145565b5050506001600160a01b038116620000ed576040516342bcdf7f60e11b815260040160405180910390fd5b600280546001600160a01b039283166001600160a01b0319918216179091556008805492851692909116821790551590506200013b576200013b6001600160a01b03821683600019620001f0565b505050506200068e565b336001600160a01b038216036200019f5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c66000000000000000000604482015260640162000086565b600180546001600160a01b0319166001600160a01b0383811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b604051636eb1769f60e11b81523060048201526001600160a01b038381166024830152600091839186169063dd62ed3e90604401602060405180830381865afa15801562000242573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002689190620005a8565b620002749190620005c2565b604080516001600160a01b038616602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b0390811663095ea7b360e01b17909152919250620002d091869190620002d616565b50505050565b6040805180820190915260208082527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65649082015260009062000325906001600160a01b038516908490620003ac565b805190915015620003a75780806020019051810190620003469190620005ea565b620003a75760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840162000086565b505050565b6060620003bd8484600085620003c5565b949350505050565b606082471015620004285760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b606482015260840162000086565b600080866001600160a01b031685876040516200044691906200063b565b60006040518083038185875af1925050503d806000811462000485576040519150601f19603f3d011682016040523d82523d6000602084013e6200048a565b606091505b5090925090506200049e87838387620004a9565b979650505050505050565b606083156200051d57825160000362000515576001600160a01b0385163b620005155760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640162000086565b5081620003bd565b620003bd8383815115620005345781518083602001fd5b8060405162461bcd60e51b815260040162000086919062000659565b6001600160a01b03811681146200056657600080fd5b50565b600080604083850312156200057d57600080fd5b82516200058a8162000550565b60208401519092506200059d8162000550565b809150509250929050565b600060208284031215620005bb57600080fd5b5051919050565b80820180821115620005e457634e487b7160e01b600052601160045260246000fd5b92915050565b600060208284031215620005fd57600080fd5b815180151581146200060e57600080fd5b9392505050565b60005b838110156200063257818101518382015260200162000618565b50506000910152565b600082516200064f81846020870162000615565b9190910192915050565b60208152600082518060208401526200067a81604085016020870162000615565b601f01601f19169190910160400192915050565b6144ed806200069e6000396000f3fe6080604052600436106101795760003560e01c806385572ffb116100cb578063c89245d51161007f578063e89b448511610059578063e89b4485146104a8578063f2fde38b146104bb578063ff2deec3146104db57600080fd5b8063c89245d514610448578063cf6730f814610468578063e4ca87541461048857600080fd5b80639fe74e26116100b05780639fe74e26146103dd578063b0f479a1146103fd578063c851cc321461042857600080fd5b806385572ffb146103715780638da5cb5b1461039157600080fd5b80635e35359e1161012d5780636fef519e116101075780636fef519e146102e657806379ba50971461033c5780638462a2b91461035157600080fd5b80635e35359e146102795780636939cd97146102995780636d62d633146102c657600080fd5b806335f170ef1161015e57806335f170ef146101fb5780635075a9d414610229578063536c6bfa1461025757600080fd5b806305bfe982146101855780630e958d6b146101cb57600080fd5b3661018057005b600080fd5b34801561019157600080fd5b506101b56101a0366004613386565b60096020526000908152604090205460ff1681565b6040516101c291906133ce565b60405180910390f35b3480156101d757600080fd5b506101eb6101e6366004613425565b610508565b60405190151581526020016101c2565b34801561020757600080fd5b5061021b6102163660046134aa565b610553565b6040516101c2929190613535565b34801561023557600080fd5b50610249610244366004613386565b61067f565b6040519081526020016101c2565b34801561026357600080fd5b50610277610272366004613585565b610692565b005b34801561028557600080fd5b506102776102943660046135b1565b6106f6565b3480156102a557600080fd5b506102b96102b4366004613386565b61078b565b6040516101c2919061364f565b3480156102d257600080fd5b506102776102e13660046136e3565b610996565b3480156102f257600080fd5b5061032f6040518060400160405280601581526020017f4d4553534147455f41434b4e4f574c45444745445f000000000000000000000081525081565b6040516101c29190613713565b34801561034857600080fd5b50610277610cb0565b34801561035d57600080fd5b5061027761036c366004613772565b610dad565b34801561037d57600080fd5b5061027761038c3660046137de565b6110ee565b34801561039d57600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff165b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101c2565b3480156103e957600080fd5b506102776103f8366004613819565b6112f7565b34801561040957600080fd5b5060025473ffffffffffffffffffffffffffffffffffffffff166103b8565b34801561043457600080fd5b5061027761044336600461385b565b611688565b34801561045457600080fd5b5061027761046336600461385b565b611754565b34801561047457600080fd5b506102776104833660046137de565b6118c8565b34801561049457600080fd5b506102776104a3366004613386565b611c16565b6102496104b63660046139de565b611e80565b3480156104c757600080fd5b506102776104d636600461385b565b612457565b3480156104e757600080fd5b506008546103b89073ffffffffffffffffffffffffffffffffffffffff1681565b67ffffffffffffffff831660009081526003602052604080822090516002909101906105379085908590613aeb565b9081526040519081900360200190205460ff1690509392505050565b60036020526000908152604090208054819061056e90613afb565b80601f016020809104026020016040519081016040528092919081815260200182805461059a90613afb565b80156105e75780601f106105bc576101008083540402835291602001916105e7565b820191906000526020600020905b8154815290600101906020018083116105ca57829003601f168201915b5050505050908060010180546105fc90613afb565b80601f016020809104026020016040519081016040528092919081815260200182805461062890613afb565b80156106755780601f1061064a57610100808354040283529160200191610675565b820191906000526020600020905b81548152906001019060200180831161065857829003601f168201915b5050505050905082565b600061068c60058361246b565b92915050565b61069a61247e565b6106a48282612501565b60405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907f6832d9be2410a86571981e1e60fd4c1f9ea2a1034d6102a2b7d6c5e480adf02e9060200160405180910390a35050565b6106fe61247e565b61071f73ffffffffffffffffffffffffffffffffffffffff8416838361265b565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f6832d9be2410a86571981e1e60fd4c1f9ea2a1034d6102a2b7d6c5e480adf02e8360405161077e91815260200190565b60405180910390a3505050565b6040805160a08082018352600080835260208084018290526060848601819052808501819052608085015285825260048152908490208451928301855280548352600181015467ffffffffffffffff16918301919091526002810180549394929391928401916107fa90613afb565b80601f016020809104026020016040519081016040528092919081815260200182805461082690613afb565b80156108735780601f1061084857610100808354040283529160200191610873565b820191906000526020600020905b81548152906001019060200180831161085657829003601f168201915b5050505050815260200160038201805461088c90613afb565b80601f01602080910402602001604051908101604052809291908181526020018280546108b890613afb565b80156109055780601f106108da57610100808354040283529160200191610905565b820191906000526020600020905b8154815290600101906020018083116108e857829003601f168201915b5050505050815260200160048201805480602002602001604051908101604052809291908181526020016000905b828210156109885760008481526020908190206040805180820190915260028502909101805473ffffffffffffffffffffffffffffffffffffffff168252600190810154828401529083529092019101610933565b505050915250909392505050565b61099e61247e565b60016109ab60058461246b565b146109ea576040517fb6e78260000000000000000000000000000000000000000000000000000000008152600481018390526024015b60405180910390fd5b6109fa8260025b6005919061272f565b506000828152600460209081526040808320815160a08101835281548152600182015467ffffffffffffffff16938101939093526002810180549192840191610a4290613afb565b80601f0160208091040260200160405190810160405280929190818152602001828054610a6e90613afb565b8015610abb5780601f10610a9057610100808354040283529160200191610abb565b820191906000526020600020905b815481529060010190602001808311610a9e57829003601f168201915b50505050508152602001600382018054610ad490613afb565b80601f0160208091040260200160405190810160405280929190818152602001828054610b0090613afb565b8015610b4d5780601f10610b2257610100808354040283529160200191610b4d565b820191906000526020600020905b815481529060010190602001808311610b3057829003601f168201915b5050505050815260200160048201805480602002602001604051908101604052809291908181526020016000905b82821015610bd05760008481526020908190206040805180820190915260028502909101805473ffffffffffffffffffffffffffffffffffffffff168252600190810154828401529083529092019101610b7b565b5050505081525050905060005b816080015151811015610c5f57610c578383608001518381518110610c0457610c04613b4e565b60200260200101516020015184608001518481518110610c2657610c26613b4e565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff1661265b9092919063ffffffff16565b600101610bdd565b5060405173ffffffffffffffffffffffffffffffffffffffff8316815283907fd5038100bd3dc9631d3c3f4f61a3e53e9d466f40c47af9897292c7b35e32a9579060200160405180910390a2505050565b60015473ffffffffffffffffffffffffffffffffffffffff163314610d31576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4d7573742062652070726f706f736564206f776e65720000000000000000000060448201526064016109e1565b60008054337fffffffffffffffffffffffff00000000000000000000000000000000000000008083168217845560018054909116905560405173ffffffffffffffffffffffffffffffffffffffff90921692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a350565b610db561247e565b60005b81811015610f485760036000848484818110610dd657610dd6613b4e565b9050602002810190610de89190613b7d565b610df69060208101906134aa565b67ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020600201838383818110610e2d57610e2d613b4e565b9050602002810190610e3f9190613b7d565b610e4d906020810190613bbb565b604051610e5b929190613aeb565b90815260405190819003602001902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055828282818110610ea257610ea2613b4e565b9050602002810190610eb49190613b7d565b610ec2906020810190613bbb565b604051610ed0929190613aeb565b6040518091039020838383818110610eea57610eea613b4e565b9050602002810190610efc9190613b7d565b610f0a9060208101906134aa565b67ffffffffffffffff167f021290bab0d93f4d9a243bd430e45dd4bc8238451e9abbba6fab4463677dfce960405160405180910390a3600101610db8565b5060005b838110156110e757600160036000878785818110610f6c57610f6c613b4e565b9050602002810190610f7e9190613b7d565b610f8c9060208101906134aa565b67ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020600201868684818110610fc357610fc3613b4e565b9050602002810190610fd59190613b7d565b610fe3906020810190613bbb565b604051610ff1929190613aeb565b90815260405190819003602001902080549115157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0090921691909117905584848281811061104157611041613b4e565b90506020028101906110539190613b7d565b611061906020810190613bbb565b60405161106f929190613aeb565b604051809103902085858381811061108957611089613b4e565b905060200281019061109b9190613b7d565b6110a99060208101906134aa565b67ffffffffffffffff167f72d9f73bb7cb11065e15df29d61e803a0eba356d509a7025a6f51ebdea07f9e760405160405180910390a3600101610f4c565b5050505050565b60025473ffffffffffffffffffffffffffffffffffffffff163314611141576040517fd7f733340000000000000000000000000000000000000000000000000000000081523360048201526024016109e1565b61115160408201602083016134aa565b67ffffffffffffffff811660009081526003602052604090208054819061117790613afb565b90506000036111be576040517fd79f2ea400000000000000000000000000000000000000000000000000000000815267ffffffffffffffff831660048201526024016109e1565b6040517fcf6730f8000000000000000000000000000000000000000000000000000000008152309063cf6730f8906111fa908690600401613d22565b600060405180830381600087803b15801561121457600080fd5b505af1925050508015611225575060015b6112c5573d808015611253576040519150601f19603f3d011682016040523d82523d6000602084013e611258565b606091505b50611265843560016109f1565b5083356000908152600460205260409020849061128282826140fc565b50506040518435907f55bc02a9ef6f146737edeeb425738006f67f077e7138de3bf84a15bde1a5b56f906112b7908490613713565b60405180910390a250505050565b6040518335907fdf6958669026659bac75ba986685e11a7d271284989f565f2802522663e9a70f90600090a25b505050565b6112ff61247e565b60005b818110156112f25782828281811061131c5761131c613b4e565b905060200281019061132e91906141f6565b61133f906040810190602001614238565b61140b576003600084848481811061135957611359613b4e565b905060200281019061136b91906141f6565b6113799060208101906134aa565b67ffffffffffffffff1681526020810191909152604001600090812061139e91613338565b8282828181106113b0576113b0613b4e565b90506020028101906113c291906141f6565b6113d09060208101906134aa565b67ffffffffffffffff167f5204aec90a3c794d8e90fded8b46ae9c7c552803e7e832e0c1d358396d85991660405160405180910390a2611680565b82828281811061141d5761141d613b4e565b905060200281019061142f91906141f6565b61143d906040810190613bbb565b9050600003611478576040517f8579befe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006003600085858581811061149057611490613b4e565b90506020028101906114a291906141f6565b6114b09060208101906134aa565b67ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002090508383838181106114e6576114e6613b4e565b90506020028101906114f891906141f6565b611506906040810190613bbb565b8291611513919083613e80565b5083838381811061152657611526613b4e565b905060200281019061153891906141f6565b611546906060810190613bbb565b1590506115915783838381811061155f5761155f613b4e565b905060200281019061157191906141f6565b61157f906060810190613bbb565b600183019161158f919083613e80565b505b8383838181106115a3576115a3613b4e565b90506020028101906115b591906141f6565b6115c3906040810190613bbb565b6040516115d1929190613aeb565b60405180910390208484848181106115eb576115eb613b4e565b90506020028101906115fd91906141f6565b61160b9060208101906134aa565b67ffffffffffffffff167f1ced5bcae649ed29cebfa0010298ad6794bf3822e8cb754a6eee5353a9a8721286868681811061164857611648613b4e565b905060200281019061165a91906141f6565b611668906060810190613bbb565b604051611676929190614255565b60405180910390a3505b600101611302565b61169061247e565b73ffffffffffffffffffffffffffffffffffffffff81166116dd576040517f8579befe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f3672b589036f39ac008505b790fcb05d484d70b65680ec64c089a3c173fdc4c890600090a35050565b61175c61247e565b60085473ffffffffffffffffffffffffffffffffffffffff16156117bd576117bd61179c60025473ffffffffffffffffffffffffffffffffffffffff1690565b60085473ffffffffffffffffffffffffffffffffffffffff16906000612744565b6008805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff00000000000000000000000000000000000000008316811790935516901561186a5761186a61182a60025473ffffffffffffffffffffffffffffffffffffffff1690565b60085473ffffffffffffffffffffffffffffffffffffffff16907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6128c6565b8173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f91a03e1d689caf891fe531c01e290f7b718f9c6a3af6726d6d837d2b7bd82e6760405160405180910390a35050565b333014611901576040517f14d4a4e800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61191160408201602083016134aa565b61191e6040830183613bbb565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525067ffffffffffffffff86168152600360205260409020805490935061197592509050613afb565b159050806119cb5750600360008367ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020600201816040516119b69190614269565b9081526040519081900360200190205460ff16155b15611a0457806040517f5075bb380000000000000000000000000000000000000000000000000000000081526004016109e19190613713565b6000611a136060850185613bbb565b810190611a20919061427b565b9050600081604001516001811115611a3a57611a3a61339f565b03611a4d57611a48846129c4565b611c10565b600181604001516001811115611a6557611a6561339f565b03611c10576000808260200151806020019051810190611a859190614327565b915091506040518060400160405280601581526020017f4d4553534147455f41434b4e4f574c45444745445f0000000000000000000000815250604051602001611acf9190613713565b6040516020818303038152906040528051906020012082604051602001611af69190613713565b6040516020818303038152906040528051906020012014611b43576040517fae15168d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600160008281526009602052604090205460ff166002811115611b6857611b6861339f565b14611ba2576040517f3ec87700000000000000000000000000000000000000000000000000000000008152600481018290526024016109e1565b60008181526009602090815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600217905590518281527fef0cb160d3dc564cde61ae97d9981f9c4d92ace727a2ec202b18b223ea832a79910160405180910390a150505b50505050565b6001611c2360058361246b565b14611c5d576040517fb6e78260000000000000000000000000000000000000000000000000000000008152600481018290526024016109e1565b611c688160006109f1565b506000818152600460209081526040808320815160a08101835281548152600182015467ffffffffffffffff16938101939093526002810180549192840191611cb090613afb565b80601f0160208091040260200160405190810160405280929190818152602001828054611cdc90613afb565b8015611d295780601f10611cfe57610100808354040283529160200191611d29565b820191906000526020600020905b815481529060010190602001808311611d0c57829003601f168201915b50505050508152602001600382018054611d4290613afb565b80601f0160208091040260200160405190810160405280929190818152602001828054611d6e90613afb565b8015611dbb5780601f10611d9057610100808354040283529160200191611dbb565b820191906000526020600020905b815481529060010190602001808311611d9e57829003601f168201915b5050505050815260200160048201805480602002602001604051908101604052809291908181526020016000905b82821015611e3e5760008481526020908190206040805180820190915260028502909101805473ffffffffffffffffffffffffffffffffffffffff168252600190810154828401529083529092019101611de9565b50505050815250509050611e5181612d3a565b60405182907fef3bf8c64bc480286c4f3503b870ceb23e648d2d902e31fb7bb46680da6de8ad90600090a25050565b67ffffffffffffffff8316600090815260036020526040812080548591908190611ea990613afb565b9050600003611ef0576040517fd79f2ea400000000000000000000000000000000000000000000000000000000815267ffffffffffffffff831660048201526024016109e1565b6040805160a08101825267ffffffffffffffff8816600090815260036020529182208054829190611f2090613afb565b80601f0160208091040260200160405190810160405280929190818152602001828054611f4c90613afb565b8015611f995780601f10611f6e57610100808354040283529160200191611f99565b820191906000526020600020905b815481529060010190602001808311611f7c57829003601f168201915b5050509183525050602080820188905260408083018a905260085473ffffffffffffffffffffffffffffffffffffffff16606084015267ffffffffffffffff8b166000908152600390925290206001018054608090920191611ffa90613afb565b80601f016020809104026020016040519081016040528092919081815260200182805461202690613afb565b80156120735780601f1061204857610100808354040283529160200191612073565b820191906000526020600020905b81548152906001019060200180831161205657829003601f168201915b5050509190925250506002546040517f20487ded00000000000000000000000000000000000000000000000000000000815291925060009173ffffffffffffffffffffffffffffffffffffffff909116906320487ded906120da908b9086906004016143a8565b602060405180830381865afa1580156120f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061211b9190614475565b60085490915073ffffffffffffffffffffffffffffffffffffffff16158015906121d457506008546040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152829173ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa1580156121ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121d29190614475565b105b156121fe576008546121fe9073ffffffffffffffffffffffffffffffffffffffff16333084612dac565b60005b87518110156123515761227133308a848151811061222157612221613b4e565b6020026020010151602001518b858151811061223f5761223f613b4e565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff16612dac909392919063ffffffff16565b600854885173ffffffffffffffffffffffffffffffffffffffff909116908990839081106122a1576122a1613b4e565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff16146123495760025488516123499173ffffffffffffffffffffffffffffffffffffffff16908a90849081106122fa576122fa613b4e565b6020026020010151602001518a848151811061231857612318613b4e565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff166127449092919063ffffffff16565b600101612201565b5060025460085473ffffffffffffffffffffffffffffffffffffffff918216916396f4e9f9911615612384576000612386565b825b8a856040518463ffffffff1660e01b81526004016123a59291906143a8565b60206040518083038185885af11580156123c3573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906123e89190614475565b60008181526009602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055519196509086907f9102b9031c3c59d8320bf14d84d7d7a3434366b91032fad1c87579cfc62b2372908390a3505050509392505050565b61245f61247e565b61246881612e0a565b50565b60006124778383612eff565b9392505050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146124ff576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4f6e6c792063616c6c61626c65206279206f776e65720000000000000000000060448201526064016109e1565b565b8047101561256b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016109e1565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d80600081146125c5576040519150601f19603f3d011682016040523d82523d6000602084013e6125ca565b606091505b50509050806112f2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016109e1565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526112f29084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152612f89565b600061273c848484613095565b949350505050565b8015806127e457506040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff838116602483015284169063dd62ed3e90604401602060405180830381865afa1580156127be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127e29190614475565b155b612870576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527f20746f206e6f6e2d7a65726f20616c6c6f77616e63650000000000000000000060648201526084016109e1565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526112f29084907f095ea7b300000000000000000000000000000000000000000000000000000000906064016126ad565b6040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff8381166024830152600091839186169063dd62ed3e90604401602060405180830381865afa15801561293d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129619190614475565b61296b919061448e565b60405173ffffffffffffffffffffffffffffffffffffffff8516602482015260448101829052909150611c109085907f095ea7b300000000000000000000000000000000000000000000000000000000906064016126ad565b6040805160008082526020820190925281612a01565b60408051808201909152600080825260208201528152602001906001900390816129da5790505b50905060006040518060a00160405280848060400190612a219190613bbb565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505090825250604080518082018252601581527f4d4553534147455f41434b4e4f574c45444745445f0000000000000000000000602082810191909152915192820192612aa292883591016144a1565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152918152908252602082810186905260085473ffffffffffffffffffffffffffffffffffffffff1683830152606090920191600391600091612b129189019089016134aa565b67ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206001018054612b4290613afb565b80601f0160208091040260200160405190810160405280929190818152602001828054612b6e90613afb565b8015612bbb5780601f10612b9057610100808354040283529160200191612bbb565b820191906000526020600020905b815481529060010190602001808311612b9e57829003601f168201915b50505091909252505060025490915060009073ffffffffffffffffffffffffffffffffffffffff166320487ded612bf860408701602088016134aa565b846040518363ffffffff1660e01b8152600401612c169291906143a8565b602060405180830381865afa158015612c33573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c579190614475565b60025460085491925060009173ffffffffffffffffffffffffffffffffffffffff918216916396f4e9f9911615612c8f576000612c91565b835b612ca16040890160208a016134aa565b866040518463ffffffff1660e01b8152600401612cbf9291906143a8565b60206040518083038185885af1158015612cdd573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612d029190614475565b60405190915081908635907f9102b9031c3c59d8320bf14d84d7d7a3434366b91032fad1c87579cfc62b237290600090a35050505050565b612d4261247e565b6040517fcf6730f8000000000000000000000000000000000000000000000000000000008152309063cf6730f890612d7e90849060040161364f565b600060405180830381600087803b158015612d9857600080fd5b505af11580156110e7573d6000803e3d6000fd5b60405173ffffffffffffffffffffffffffffffffffffffff80851660248301528316604482015260648101829052611c109085907f23b872dd00000000000000000000000000000000000000000000000000000000906084016126ad565b3373ffffffffffffffffffffffffffffffffffffffff821603612e89576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c6600000000000000000060448201526064016109e1565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b600081815260028301602052604081205480151580612f235750612f2384846130b2565b612477576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f456e756d657261626c654d61703a206e6f6e6578697374656e74206b6579000060448201526064016109e1565b6000612feb826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166130be9092919063ffffffff16565b8051909150156112f2578080602001905181019061300991906144c3565b6112f2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016109e1565b6000828152600284016020526040812082905561273c84846130cd565b600061247783836130d9565b606061273c84846000856130f1565b6000612477838361320a565b60008181526001830160205260408120541515612477565b606082471015613183576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016109e1565b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516131ac9190614269565b60006040518083038185875af1925050503d80600081146131e9576040519150601f19603f3d011682016040523d82523d6000602084013e6131ee565b606091505b50915091506131ff87838387613259565b979650505050505050565b60008181526001830160205260408120546132515750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561068c565b50600061068c565b606083156132ef5782516000036132e85773ffffffffffffffffffffffffffffffffffffffff85163b6132e8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016109e1565b508161273c565b61273c83838151156133045781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109e19190613713565b50805461334490613afb565b6000825580601f10613354575050565b601f01602090049060005260206000209081019061246891905b80821115613382576000815560010161336e565b5090565b60006020828403121561339857600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b6020810160038310613409577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b67ffffffffffffffff8116811461246857600080fd5b60008060006040848603121561343a57600080fd5b83356134458161340f565b9250602084013567ffffffffffffffff8082111561346257600080fd5b818601915086601f83011261347657600080fd5b81358181111561348557600080fd5b87602082850101111561349757600080fd5b6020830194508093505050509250925092565b6000602082840312156134bc57600080fd5b81356124778161340f565b60005b838110156134e25781810151838201526020016134ca565b50506000910152565b600081518084526135038160208601602086016134c7565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60408152600061354860408301856134eb565b828103602084015261355a81856134eb565b95945050505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461246857600080fd5b6000806040838503121561359857600080fd5b82356135a381613563565b946020939093013593505050565b6000806000606084860312156135c657600080fd5b83356135d181613563565b925060208401356135e181613563565b929592945050506040919091013590565b60008151808452602080850194506020840160005b83811015613644578151805173ffffffffffffffffffffffffffffffffffffffff1688528301518388015260409096019590820190600101613607565b509495945050505050565b602081528151602082015267ffffffffffffffff60208301511660408201526000604083015160a0606084015261368960c08401826134eb565b905060608401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0808584030160808601526136c583836134eb565b925060808601519150808584030160a08601525061355a82826135f2565b600080604083850312156136f657600080fd5b82359150602083013561370881613563565b809150509250929050565b60208152600061247760208301846134eb565b60008083601f84011261373857600080fd5b50813567ffffffffffffffff81111561375057600080fd5b6020830191508360208260051b850101111561376b57600080fd5b9250929050565b6000806000806040858703121561378857600080fd5b843567ffffffffffffffff808211156137a057600080fd5b6137ac88838901613726565b909650945060208701359150808211156137c557600080fd5b506137d287828801613726565b95989497509550505050565b6000602082840312156137f057600080fd5b813567ffffffffffffffff81111561380757600080fd5b820160a0818503121561247757600080fd5b6000806020838503121561382c57600080fd5b823567ffffffffffffffff81111561384357600080fd5b61384f85828601613726565b90969095509350505050565b60006020828403121561386d57600080fd5b813561247781613563565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff811182821017156138ca576138ca613878565b60405290565b6040516060810167ffffffffffffffff811182821017156138ca576138ca613878565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561393a5761393a613878565b604052919050565b600067ffffffffffffffff82111561395c5761395c613878565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f83011261399957600080fd5b81356139ac6139a782613942565b6138f3565b8181528460208386010111156139c157600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000606084860312156139f357600080fd5b83356139fe8161340f565b925060208481013567ffffffffffffffff80821115613a1c57600080fd5b818701915087601f830112613a3057600080fd5b813581811115613a4257613a42613878565b613a50848260051b016138f3565b81815260069190911b8301840190848101908a831115613a6f57600080fd5b938501935b82851015613abb576040858c031215613a8d5760008081fd5b613a956138a7565b8535613aa081613563565b81528587013587820152825260409094019390850190613a74565b965050506040870135925080831115613ad357600080fd5b5050613ae186828701613988565b9150509250925092565b8183823760009101908152919050565b600181811c90821680613b0f57607f821691505b602082108103613b48577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc1833603018112613bb157600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613bf057600080fd5b83018035915067ffffffffffffffff821115613c0b57600080fd5b60200191503681900382131561376b57600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613c5557600080fd5b830160208101925035905067ffffffffffffffff811115613c7557600080fd5b80360382131561376b57600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b8183526000602080850194508260005b85811015613644578135613cf081613563565b73ffffffffffffffffffffffffffffffffffffffff168752818301358388015260409687019690910190600101613cdd565b602081528135602082015260006020830135613d3d8161340f565b67ffffffffffffffff8082166040850152613d5b6040860186613c20565b925060a06060860152613d7260c086018483613c84565b925050613d826060860186613c20565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe080878603016080880152613db8858385613c84565b9450608088013592507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1883603018312613df157600080fd5b60209288019283019235915083821115613e0a57600080fd5b8160061b3603831315613e1c57600080fd5b8685030160a08701526131ff848284613ccd565b601f8211156112f2576000816000526020600020601f850160051c81016020861015613e595750805b601f850160051c820191505b81811015613e7857828155600101613e65565b505050505050565b67ffffffffffffffff831115613e9857613e98613878565b613eac83613ea68354613afb565b83613e30565b6000601f841160018114613efe5760008515613ec85750838201355b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b1c1916600186901b1783556110e7565b6000838152602090207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0861690835b82811015613f4d5786850135825560209485019460019092019101613f2d565b5086821015613f88577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88860031b161c19848701351681555b505060018560011b0183555050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8135613fd481613563565b73ffffffffffffffffffffffffffffffffffffffff81167fffffffffffffffffffffffff000000000000000000000000000000000000000083541617825550602082013560018201555050565b6801000000000000000083111561403a5761403a613878565b8054838255808410156140c75760017f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808316831461407b5761407b613f9a565b808616861461408c5761408c613f9a565b5060008360005260206000208360011b81018760011b820191505b808210156140c25782825582848301556002820191506140a7565b505050505b5060008181526020812083915b85811015613e78576140e68383613fc9565b60409290920191600291909101906001016140d4565b813581556001810160208301356141128161340f565b67ffffffffffffffff8082167fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000008454161783556141526040860186613bbb565b93509150614164838360028701613e80565b6141716060860186613bbb565b93509150614183838360038701613e80565b608085013592507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18536030183126141ba57600080fd5b9184019182359150808211156141cf57600080fd5b506020820191508060061b36038213156141e857600080fd5b611c10818360048601614021565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81833603018112613bb157600080fd5b801515811461246857600080fd5b60006020828403121561424a57600080fd5b81356124778161422a565b60208152600061273c602083018486613c84565b60008251613bb18184602087016134c7565b60006020828403121561428d57600080fd5b813567ffffffffffffffff808211156142a557600080fd5b90830190606082860312156142b957600080fd5b6142c16138d0565b8235828111156142d057600080fd5b6142dc87828601613988565b8252506020830135828111156142f157600080fd5b6142fd87828601613988565b602083015250604083013592506002831061431757600080fd5b6040810192909252509392505050565b6000806040838503121561433a57600080fd5b825167ffffffffffffffff81111561435157600080fd5b8301601f8101851361436257600080fd5b80516143706139a782613942565b81815286602083850101111561438557600080fd5b6143968260208301602086016134c7565b60209590950151949694955050505050565b67ffffffffffffffff83168152604060208201526000825160a060408401526143d460e08401826134eb565b905060208401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08085840301606086015261441083836134eb565b9250604086015191508085840301608086015261442d83836135f2565b925073ffffffffffffffffffffffffffffffffffffffff60608701511660a086015260808601519150808584030160c08601525061446b82826134eb565b9695505050505050565b60006020828403121561448757600080fd5b5051919050565b8082018082111561068c5761068c613f9a565b6040815260006144b460408301856134eb565b90508260208301529392505050565b6000602082840312156144d557600080fd5b81516124778161422a56fea164736f6c6343000818000a", } var CCIPClientWithACKABI = CCIPClientWithACKMetaData.ABI diff --git a/core/gethwrappers/ccip/generated/ping_pong_demo/ping_pong_demo.go b/core/gethwrappers/ccip/generated/ping_pong_demo/ping_pong_demo.go index c0d5b71cc9..6735d0479c 100644 --- a/core/gethwrappers/ccip/generated/ping_pong_demo/ping_pong_demo.go +++ b/core/gethwrappers/ccip/generated/ping_pong_demo/ping_pong_demo.go @@ -57,7 +57,7 @@ type ClientEVMTokenAmount struct { var PingPongDemoMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"router\",\"type\":\"address\"},{\"internalType\":\"contractIERC20\",\"name\":\"feeToken\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"chainSelector\",\"type\":\"uint64\"}],\"name\":\"InvalidChain\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"recipient\",\"type\":\"bytes\"}],\"name\":\"InvalidRecipient\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"router\",\"type\":\"address\"}],\"name\":\"InvalidRouter\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"sender\",\"type\":\"bytes\"}],\"name\":\"InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"}],\"name\":\"MessageNotFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlySelf\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddressNotAllowed\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"destChainSelector\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"recipient\",\"type\":\"bytes\"}],\"name\":\"ApprovedSenderAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"destChainSelector\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"recipient\",\"type\":\"bytes\"}],\"name\":\"ApprovedSenderRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"oldRouter\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newRouter\",\"type\":\"address\"}],\"name\":\"CCIPRouterModified\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"remoteChainSelector\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"recipient\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"extraArgsBytes\",\"type\":\"bytes\"}],\"name\":\"ChainAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"removeChainSelector\",\"type\":\"uint64\"}],\"name\":\"ChainRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"oldFeeToken\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newFeeToken\",\"type\":\"address\"}],\"name\":\"FeeTokenUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"tokenReceiver\",\"type\":\"address\"}],\"name\":\"MessageAbandoned\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"reason\",\"type\":\"bytes\"}],\"name\":\"MessageFailed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"}],\"name\":\"MessageRecovered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"}],\"name\":\"MessageSent\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"}],\"name\":\"MessageSucceeded\",\"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\":\"uint256\",\"name\":\"pingPongCount\",\"type\":\"uint256\"}],\"name\":\"Ping\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"pingPongCount\",\"type\":\"uint256\"}],\"name\":\"Pong\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokensWithdrawnByOwner\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"abandonFailedMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"acceptOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"chainSelector\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"allowed\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"recipient\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"extraArgsBytes\",\"type\":\"bytes\"}],\"internalType\":\"structCCIPBase.ChainUpdate[]\",\"name\":\"chains\",\"type\":\"tuple[]\"}],\"name\":\"applyChainUpdates\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"sourceChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"sender\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"structClient.EVMTokenAmount[]\",\"name\":\"destTokenAmounts\",\"type\":\"tuple[]\"}],\"internalType\":\"structClient.Any2EVMMessage\",\"name\":\"message\",\"type\":\"tuple\"}],\"name\":\"ccipReceive\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"destChainSelector\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"structClient.EVMTokenAmount[]\",\"name\":\"tokenAmounts\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"ccipSend\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getCounterpartAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getCounterpartChainSelector\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"}],\"name\":\"getMessageContents\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"sourceChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"sender\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"structClient.EVMTokenAmount[]\",\"name\":\"destTokenAmounts\",\"type\":\"tuple[]\"}],\"internalType\":\"structClient.Any2EVMMessage\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"}],\"name\":\"getMessageStatus\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRouter\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"sourceChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"senderAddr\",\"type\":\"bytes\"}],\"name\":\"isApprovedSender\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isPaused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"sourceChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"sender\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"structClient.EVMTokenAmount[]\",\"name\":\"destTokenAmounts\",\"type\":\"tuple[]\"}],\"internalType\":\"structClient.Any2EVMMessage\",\"name\":\"message\",\"type\":\"tuple\"}],\"name\":\"processMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"}],\"name\":\"retryFailedMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"destChainSelector\",\"type\":\"uint64\"}],\"name\":\"s_chainConfigs\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"recipient\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"extraArgsBytes\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"s_feeToken\",\"outputs\":[{\"internalType\":\"contractIERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"counterpartChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"counterpartAddress\",\"type\":\"address\"}],\"name\":\"setCounterpart\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"counterpartAddress\",\"type\":\"address\"}],\"name\":\"setCounterpartAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"counterpartChainSelector\",\"type\":\"uint64\"}],\"name\":\"setCounterpartChainSelector\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"pause\",\"type\":\"bool\"}],\"name\":\"setPaused\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"startPingPong\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"typeAndVersion\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"destChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"sender\",\"type\":\"bytes\"}],\"internalType\":\"structCCIPBase.ApprovedSenderUpdate[]\",\"name\":\"adds\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"uint64\",\"name\":\"destChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"sender\",\"type\":\"bytes\"}],\"internalType\":\"structCCIPBase.ApprovedSenderUpdate[]\",\"name\":\"removes\",\"type\":\"tuple[]\"}],\"name\":\"updateApprovedSenders\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"updateFeeToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newRouter\",\"type\":\"address\"}],\"name\":\"updateRouter\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"addresspayable\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdrawNativeToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdrawTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}]", - Bin: "0x60806040523480156200001157600080fd5b5060405162004bda38038062004bda8339810160408190526200003491620005bd565b8181818033806000816200008f5760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f7420736574206f776e657220746f207a65726f000000000000000060448201526064015b60405180910390fd5b600080546001600160a01b0319166001600160a01b0384811691909117909155811615620000c257620000c28162000135565b5050506001600160a01b038116620000ed576040516342bcdf7f60e11b815260040160405180910390fd5b600280546001600160a01b039283166001600160a01b031991821681179092556008805493861693909116831790556200012b9250600019620001e0565b50505050620006ba565b336001600160a01b038216036200018f5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c66000000000000000000604482015260640162000086565b600180546001600160a01b0319166001600160a01b0383811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b8015806200025e5750604051636eb1769f60e11b81523060048201526001600160a01b03838116602483015284169063dd62ed3e90604401602060405180830381865afa15801562000236573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200025c9190620005fc565b155b620002d25760405162461bcd60e51b815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527f20746f206e6f6e2d7a65726f20616c6c6f77616e636500000000000000000000606482015260840162000086565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b0390811663095ea7b360e01b179091526200032a9185916200032f16565b505050565b6040805180820190915260208082527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564908201526000906200037e906001600160a01b03851690849062000400565b8051909150156200032a57808060200190518101906200039f919062000616565b6200032a5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840162000086565b606062000411848460008562000419565b949350505050565b6060824710156200047c5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b606482015260840162000086565b600080866001600160a01b031685876040516200049a919062000667565b60006040518083038185875af1925050503d8060008114620004d9576040519150601f19603f3d011682016040523d82523d6000602084013e620004de565b606091505b509092509050620004f287838387620004fd565b979650505050505050565b606083156200057157825160000362000569576001600160a01b0385163b620005695760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640162000086565b508162000411565b620004118383815115620005885781518083602001fd5b8060405162461bcd60e51b815260040162000086919062000685565b6001600160a01b0381168114620005ba57600080fd5b50565b60008060408385031215620005d157600080fd5b8251620005de81620005a4565b6020840151909250620005f181620005a4565b809150509250929050565b6000602082840312156200060f57600080fd5b5051919050565b6000602082840312156200062957600080fd5b815180151581146200063a57600080fd5b9392505050565b60005b838110156200065e57818101518382015260200162000644565b50506000910152565b600082516200067b81846020870162000641565b9190910192915050565b6020815260008251806020840152620006a681604085016020870162000641565b601f01601f19169190910160400192915050565b61451080620006ca6000396000f3fe6080604052600436106101c65760003560e01c806385572ffb116100f7578063bee518a411610095578063e4ca875411610064578063e4ca8754146105c5578063e89b4485146105e5578063f2fde38b146105f8578063ff2deec31461061857600080fd5b8063bee518a41461051a578063c851cc3214610565578063c89245d514610585578063cf6730f8146105a557600080fd5b80639fe74e26116100d15780639fe74e261461047f578063b0f479a11461049f578063b187bd26146104ca578063b5a11011146104fa57600080fd5b806385572ffb146104145780638da5cb5b146104345780639d2aede51461045f57600080fd5b80635075a9d4116101645780636939cd971161013e5780636939cd97146103925780636d62d633146103bf57806379ba5097146103df5780638462a2b9146103f457600080fd5b80635075a9d414610324578063536c6bfa146103525780635e35359e1461037257600080fd5b80631892b906116101a05780631892b906146102755780632874d8bf146102955780632b6e5d63146102aa57806335f170ef146102f657600080fd5b80630e958d6b146101d257806316c38b3c14610207578063181f5a771461022957600080fd5b366101cd57005b600080fd5b3480156101de57600080fd5b506101f26101ed36600461346f565b610645565b60405190151581526020015b60405180910390f35b34801561021357600080fd5b50610227610222366004613502565b610690565b005b34801561023557600080fd5b50604080518082018252601281527f50696e67506f6e6744656d6f20312e332e300000000000000000000000000000602082015290516101fe919061358d565b34801561028157600080fd5b506102276102903660046135a0565b6106e2565b3480156102a157600080fd5b5061022761073d565b3480156102b657600080fd5b5060095473ffffffffffffffffffffffffffffffffffffffff165b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101fe565b34801561030257600080fd5b506103166103113660046135a0565b610779565b6040516101fe9291906135bd565b34801561033057600080fd5b5061034461033f3660046135eb565b6108a5565b6040519081526020016101fe565b34801561035e57600080fd5b5061022761036d366004613626565b6108b8565b34801561037e57600080fd5b5061022761038d366004613652565b61091c565b34801561039e57600080fd5b506103b26103ad3660046135eb565b6109b1565b6040516101fe91906136f0565b3480156103cb57600080fd5b506102276103da366004613784565b610bbc565b3480156103eb57600080fd5b50610227610ed6565b34801561040057600080fd5b5061022761040f366004613800565b610fd3565b34801561042057600080fd5b5061022761042f36600461386c565b611314565b34801561044057600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff166102d1565b34801561046b57600080fd5b5061022761047a3660046138a7565b61151d565b34801561048b57600080fd5b5061022761049a3660046138c4565b6115e2565b3480156104ab57600080fd5b5060025473ffffffffffffffffffffffffffffffffffffffff166102d1565b3480156104d657600080fd5b5060095474010000000000000000000000000000000000000000900460ff166101f2565b34801561050657600080fd5b50610227610515366004613906565b611973565b34801561052657600080fd5b5060085474010000000000000000000000000000000000000000900467ffffffffffffffff1660405167ffffffffffffffff90911681526020016101fe565b34801561057157600080fd5b506102276105803660046138a7565b611b19565b34801561059157600080fd5b506102276105a03660046138a7565b611be5565b3480156105b157600080fd5b506102276105c036600461386c565b611d4f565b3480156105d157600080fd5b506102276105e03660046135eb565b611f64565b6103446105f3366004613a69565b6121ce565b34801561060457600080fd5b506102276106133660046138a7565b612778565b34801561062457600080fd5b506008546102d19073ffffffffffffffffffffffffffffffffffffffff1681565b67ffffffffffffffff831660009081526003602052604080822090516002909101906106749085908590613b76565b9081526040519081900360200190205460ff1690509392505050565b61069861278c565b6009805491151574010000000000000000000000000000000000000000027fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff909216919091179055565b6106ea61278c565b6008805467ffffffffffffffff90921674010000000000000000000000000000000000000000027fffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffff909216919091179055565b61074561278c565b600980547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff169055610777600161280d565b565b60036020526000908152604090208054819061079490613b86565b80601f01602080910402602001604051908101604052809291908181526020018280546107c090613b86565b801561080d5780601f106107e25761010080835404028352916020019161080d565b820191906000526020600020905b8154815290600101906020018083116107f057829003601f168201915b50505050509080600101805461082290613b86565b80601f016020809104026020016040519081016040528092919081815260200182805461084e90613b86565b801561089b5780601f106108705761010080835404028352916020019161089b565b820191906000526020600020905b81548152906001019060200180831161087e57829003601f168201915b5050505050905082565b60006108b2600583612931565b92915050565b6108c061278c565b6108ca8282612944565b60405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907f6832d9be2410a86571981e1e60fd4c1f9ea2a1034d6102a2b7d6c5e480adf02e9060200160405180910390a35050565b61092461278c565b61094573ffffffffffffffffffffffffffffffffffffffff84168383612a9e565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f6832d9be2410a86571981e1e60fd4c1f9ea2a1034d6102a2b7d6c5e480adf02e836040516109a491815260200190565b60405180910390a3505050565b6040805160a08082018352600080835260208084018290526060848601819052808501819052608085015285825260048152908490208451928301855280548352600181015467ffffffffffffffff1691830191909152600281018054939492939192840191610a2090613b86565b80601f0160208091040260200160405190810160405280929190818152602001828054610a4c90613b86565b8015610a995780601f10610a6e57610100808354040283529160200191610a99565b820191906000526020600020905b815481529060010190602001808311610a7c57829003601f168201915b50505050508152602001600382018054610ab290613b86565b80601f0160208091040260200160405190810160405280929190818152602001828054610ade90613b86565b8015610b2b5780601f10610b0057610100808354040283529160200191610b2b565b820191906000526020600020905b815481529060010190602001808311610b0e57829003601f168201915b5050505050815260200160048201805480602002602001604051908101604052809291908181526020016000905b82821015610bae5760008481526020908190206040805180820190915260028502909101805473ffffffffffffffffffffffffffffffffffffffff168252600190810154828401529083529092019101610b59565b505050915250909392505050565b610bc461278c565b6001610bd1600584612931565b14610c10576040517fb6e78260000000000000000000000000000000000000000000000000000000008152600481018390526024015b60405180910390fd5b610c208260025b60059190612b72565b506000828152600460209081526040808320815160a08101835281548152600182015467ffffffffffffffff16938101939093526002810180549192840191610c6890613b86565b80601f0160208091040260200160405190810160405280929190818152602001828054610c9490613b86565b8015610ce15780601f10610cb657610100808354040283529160200191610ce1565b820191906000526020600020905b815481529060010190602001808311610cc457829003601f168201915b50505050508152602001600382018054610cfa90613b86565b80601f0160208091040260200160405190810160405280929190818152602001828054610d2690613b86565b8015610d735780601f10610d4857610100808354040283529160200191610d73565b820191906000526020600020905b815481529060010190602001808311610d5657829003601f168201915b5050505050815260200160048201805480602002602001604051908101604052809291908181526020016000905b82821015610df65760008481526020908190206040805180820190915260028502909101805473ffffffffffffffffffffffffffffffffffffffff168252600190810154828401529083529092019101610da1565b5050505081525050905060005b816080015151811015610e8557610e7d8383608001518381518110610e2a57610e2a613bd9565b60200260200101516020015184608001518481518110610e4c57610e4c613bd9565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff16612a9e9092919063ffffffff16565b600101610e03565b5060405173ffffffffffffffffffffffffffffffffffffffff8316815283907fd5038100bd3dc9631d3c3f4f61a3e53e9d466f40c47af9897292c7b35e32a9579060200160405180910390a2505050565b60015473ffffffffffffffffffffffffffffffffffffffff163314610f57576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4d7573742062652070726f706f736564206f776e6572000000000000000000006044820152606401610c07565b60008054337fffffffffffffffffffffffff00000000000000000000000000000000000000008083168217845560018054909116905560405173ffffffffffffffffffffffffffffffffffffffff90921692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a350565b610fdb61278c565b60005b8181101561116e5760036000848484818110610ffc57610ffc613bd9565b905060200281019061100e9190613c08565b61101c9060208101906135a0565b67ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060020183838381811061105357611053613bd9565b90506020028101906110659190613c08565b611073906020810190613c46565b604051611081929190613b76565b90815260405190819003602001902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690558282828181106110c8576110c8613bd9565b90506020028101906110da9190613c08565b6110e8906020810190613c46565b6040516110f6929190613b76565b604051809103902083838381811061111057611110613bd9565b90506020028101906111229190613c08565b6111309060208101906135a0565b67ffffffffffffffff167f021290bab0d93f4d9a243bd430e45dd4bc8238451e9abbba6fab4463677dfce960405160405180910390a3600101610fde565b5060005b8381101561130d5760016003600087878581811061119257611192613bd9565b90506020028101906111a49190613c08565b6111b29060208101906135a0565b67ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206002018686848181106111e9576111e9613bd9565b90506020028101906111fb9190613c08565b611209906020810190613c46565b604051611217929190613b76565b90815260405190819003602001902080549115157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0090921691909117905584848281811061126757611267613bd9565b90506020028101906112799190613c08565b611287906020810190613c46565b604051611295929190613b76565b60405180910390208585838181106112af576112af613bd9565b90506020028101906112c19190613c08565b6112cf9060208101906135a0565b67ffffffffffffffff167f72d9f73bb7cb11065e15df29d61e803a0eba356d509a7025a6f51ebdea07f9e760405160405180910390a3600101611172565b5050505050565b60025473ffffffffffffffffffffffffffffffffffffffff163314611367576040517fd7f73334000000000000000000000000000000000000000000000000000000008152336004820152602401610c07565b61137760408201602083016135a0565b67ffffffffffffffff811660009081526003602052604090208054819061139d90613b86565b90506000036113e4576040517fd79f2ea400000000000000000000000000000000000000000000000000000000815267ffffffffffffffff83166004820152602401610c07565b6040517fcf6730f8000000000000000000000000000000000000000000000000000000008152309063cf6730f890611420908690600401613dad565b600060405180830381600087803b15801561143a57600080fd5b505af192505050801561144b575060015b6114eb573d808015611479576040519150601f19603f3d011682016040523d82523d6000602084013e61147e565b606091505b5061148b84356001610c17565b508335600090815260046020526040902084906114a8828261417f565b50506040518435907f55bc02a9ef6f146737edeeb425738006f67f077e7138de3bf84a15bde1a5b56f906114dd90849061358d565b60405180910390a250505050565b6040518335907fdf6958669026659bac75ba986685e11a7d271284989f565f2802522663e9a70f90600090a25b505050565b61152561278c565b600980547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff831690811790915560408051602081019290925201604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001815291815260085474010000000000000000000000000000000000000000900467ffffffffffffffff166000908152600360205220906115de9082614279565b5050565b6115ea61278c565b60005b818110156115185782828281811061160757611607613bd9565b90506020028101906116199190614393565b61162a906040810190602001613502565b6116f6576003600084848481811061164457611644613bd9565b90506020028101906116569190614393565b6116649060208101906135a0565b67ffffffffffffffff168152602081019190915260400160009081206116899161340b565b82828281811061169b5761169b613bd9565b90506020028101906116ad9190614393565b6116bb9060208101906135a0565b67ffffffffffffffff167f5204aec90a3c794d8e90fded8b46ae9c7c552803e7e832e0c1d358396d85991660405160405180910390a261196b565b82828281811061170857611708613bd9565b905060200281019061171a9190614393565b611728906040810190613c46565b9050600003611763576040517f8579befe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006003600085858581811061177b5761177b613bd9565b905060200281019061178d9190614393565b61179b9060208101906135a0565b67ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002090508383838181106117d1576117d1613bd9565b90506020028101906117e39190614393565b6117f1906040810190613c46565b82916117fe919083613f03565b5083838381811061181157611811613bd9565b90506020028101906118239190614393565b611831906060810190613c46565b15905061187c5783838381811061184a5761184a613bd9565b905060200281019061185c9190614393565b61186a906060810190613c46565b600183019161187a919083613f03565b505b83838381811061188e5761188e613bd9565b90506020028101906118a09190614393565b6118ae906040810190613c46565b6040516118bc929190613b76565b60405180910390208484848181106118d6576118d6613bd9565b90506020028101906118e89190614393565b6118f69060208101906135a0565b67ffffffffffffffff167f1ced5bcae649ed29cebfa0010298ad6794bf3822e8cb754a6eee5353a9a8721286868681811061193357611933613bd9565b90506020028101906119459190614393565b611953906060810190613c46565b6040516119619291906143c7565b60405180910390a3505b6001016115ed565b61197b61278c565b600880547fffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000067ffffffffffffffff851690810291909117909155600980547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff841690811790915560009182526003602090815260409283902083519182019290925260019260029092019101604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052611a6c916143db565b908152604080516020928190038301812080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169415159490941790935573ffffffffffffffffffffffffffffffffffffffff84169183019190915201604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291815267ffffffffffffffff84166000908152600360205220906115189082614279565b611b2161278c565b73ffffffffffffffffffffffffffffffffffffffff8116611b6e576040517f8579befe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f3672b589036f39ac008505b790fcb05d484d70b65680ec64c089a3c173fdc4c890600090a35050565b611bed61278c565b60085473ffffffffffffffffffffffffffffffffffffffff1615611c4e57611c4e611c2d60025473ffffffffffffffffffffffffffffffffffffffff1690565b60085473ffffffffffffffffffffffffffffffffffffffff16906000612b87565b6008805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff000000000000000000000000000000000000000083168117909355169015611cfb57611cfb611cbb60025473ffffffffffffffffffffffffffffffffffffffff1690565b60085473ffffffffffffffffffffffffffffffffffffffff16907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff612d09565b6040805173ffffffffffffffffffffffffffffffffffffffff8084168252841660208201527f91a03e1d689caf891fe531c01e290f7b718f9c6a3af6726d6d837d2b7bd82e67910160405180910390a15050565b333014611d88576040517f14d4a4e800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611d9860408201602083016135a0565b611da56040830183613c46565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525067ffffffffffffffff861681526003602052604090208054909350611dfc92509050613b86565b15905080611e525750600360008367ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060020181604051611e3d91906143db565b9081526040519081900360200190205460ff16155b15611e8b57806040517f5075bb38000000000000000000000000000000000000000000000000000000008152600401610c07919061358d565b611e9b60408401602085016135a0565b67ffffffffffffffff8116600090815260036020526040902080548190611ec190613b86565b9050600003611f08576040517fd79f2ea400000000000000000000000000000000000000000000000000000000815267ffffffffffffffff83166004820152602401610c07565b6000611f176060870187613c46565b810190611f2491906135eb565b60095490915074010000000000000000000000000000000000000000900460ff16611f5c57611f5c611f578260016143ed565b61280d565b505050505050565b6001611f71600583612931565b14611fab576040517fb6e7826000000000000000000000000000000000000000000000000000000000815260048101829052602401610c07565b611fb6816000610c17565b506000818152600460209081526040808320815160a08101835281548152600182015467ffffffffffffffff16938101939093526002810180549192840191611ffe90613b86565b80601f016020809104026020016040519081016040528092919081815260200182805461202a90613b86565b80156120775780601f1061204c57610100808354040283529160200191612077565b820191906000526020600020905b81548152906001019060200180831161205a57829003601f168201915b5050505050815260200160038201805461209090613b86565b80601f01602080910402602001604051908101604052809291908181526020018280546120bc90613b86565b80156121095780601f106120de57610100808354040283529160200191612109565b820191906000526020600020905b8154815290600101906020018083116120ec57829003601f168201915b5050505050815260200160048201805480602002602001604051908101604052809291908181526020016000905b8282101561218c5760008481526020908190206040805180820190915260028502909101805473ffffffffffffffffffffffffffffffffffffffff168252600190810154828401529083529092019101612137565b5050505081525050905061219f81612e0d565b60405182907fef3bf8c64bc480286c4f3503b870ceb23e648d2d902e31fb7bb46680da6de8ad90600090a25050565b67ffffffffffffffff83166000908152600360205260408120805485919081906121f790613b86565b905060000361223e576040517fd79f2ea400000000000000000000000000000000000000000000000000000000815267ffffffffffffffff83166004820152602401610c07565b6040805160a08101825267ffffffffffffffff881660009081526003602052918220805482919061226e90613b86565b80601f016020809104026020016040519081016040528092919081815260200182805461229a90613b86565b80156122e75780601f106122bc576101008083540402835291602001916122e7565b820191906000526020600020905b8154815290600101906020018083116122ca57829003601f168201915b5050509183525050602080820188905260408083018a905260085473ffffffffffffffffffffffffffffffffffffffff16606084015267ffffffffffffffff8b16600090815260039092529020600101805460809092019161234890613b86565b80601f016020809104026020016040519081016040528092919081815260200182805461237490613b86565b80156123c15780601f10612396576101008083540402835291602001916123c1565b820191906000526020600020905b8154815290600101906020018083116123a457829003601f168201915b5050505050815250905060005b865181101561251e5761243e33308984815181106123ee576123ee613bd9565b6020026020010151602001518a858151811061240c5761240c613bd9565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff16612e7f909392919063ffffffff16565b600854875173ffffffffffffffffffffffffffffffffffffffff9091169088908390811061246e5761246e613bd9565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff16146125165760025487516125169173ffffffffffffffffffffffffffffffffffffffff16908990849081106124c7576124c7613bd9565b6020026020010151602001518984815181106124e5576124e5613bd9565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff16612b879092919063ffffffff16565b6001016123ce565b506002546040517f20487ded00000000000000000000000000000000000000000000000000000000815260009173ffffffffffffffffffffffffffffffffffffffff16906320487ded90612578908b908690600401614400565b602060405180830381865afa158015612595573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125b991906144cd565b60085490915073ffffffffffffffffffffffffffffffffffffffff161580159061267257506008546040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152829173ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa15801561264c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061267091906144cd565b105b1561269c5760085461269c9073ffffffffffffffffffffffffffffffffffffffff16333084612e7f565b60025460085473ffffffffffffffffffffffffffffffffffffffff918216916396f4e9f99116156126ce5760006126d0565b825b8a856040518463ffffffff1660e01b81526004016126ef929190614400565b60206040518083038185885af115801561270d573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061273291906144cd565b94507f54791b38f3859327992a1ca0590ad3c0f08feba98d1a4f56ab0dca74d203392a8560405161276591815260200190565b60405180910390a1505050509392505050565b61278061278c565b61278981612edd565b50565b60005473ffffffffffffffffffffffffffffffffffffffff163314610777576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4f6e6c792063616c6c61626c65206279206f776e6572000000000000000000006044820152606401610c07565b80600116600103612850576040518181527f48257dc961b6f792c2b78a080dacfed693b660960a702de21cee364e20270e2f9060200160405180910390a1612884565b6040518181527f58b69f57828e6962d216502094c54f6562f3bf082ba758966c3454f9e37b15259060200160405180910390a15b60008160405160200161289991815260200190565b604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0018152600854600080855260208501909352909350611518927401000000000000000000000000000000000000000090910467ffffffffffffffff169161292a565b60408051808201909152600080825260208201528152602001906001900390816129035790505b50836121ce565b600061293d8383612fd2565b9392505050565b804710156129ae576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610c07565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114612a08576040519150601f19603f3d011682016040523d82523d6000602084013e612a0d565b606091505b5050905080611518576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610c07565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526115189084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915261305c565b6000612b7f848484613168565b949350505050565b801580612c2757506040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff838116602483015284169063dd62ed3e90604401602060405180830381865afa158015612c01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c2591906144cd565b155b612cb3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527f20746f206e6f6e2d7a65726f20616c6c6f77616e6365000000000000000000006064820152608401610c07565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526115189084907f095ea7b30000000000000000000000000000000000000000000000000000000090606401612af0565b6040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff8381166024830152600091839186169063dd62ed3e90604401602060405180830381865afa158015612d80573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612da491906144cd565b612dae91906143ed565b60405173ffffffffffffffffffffffffffffffffffffffff8516602482015260448101829052909150612e079085907f095ea7b30000000000000000000000000000000000000000000000000000000090606401612af0565b50505050565b612e1561278c565b6040517fcf6730f8000000000000000000000000000000000000000000000000000000008152309063cf6730f890612e519084906004016136f0565b600060405180830381600087803b158015612e6b57600080fd5b505af115801561130d573d6000803e3d6000fd5b60405173ffffffffffffffffffffffffffffffffffffffff80851660248301528316604482015260648101829052612e079085907f23b872dd0000000000000000000000000000000000000000000000000000000090608401612af0565b3373ffffffffffffffffffffffffffffffffffffffff821603612f5c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c660000000000000000006044820152606401610c07565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b600081815260028301602052604081205480151580612ff65750612ff68484613185565b61293d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f456e756d657261626c654d61703a206e6f6e6578697374656e74206b657900006044820152606401610c07565b60006130be826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166131919092919063ffffffff16565b80519091501561151857808060200190518101906130dc91906144e6565b611518576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610c07565b60008281526002840160205260408120829055612b7f84846131a0565b600061293d83836131ac565b6060612b7f84846000856131c4565b600061293d83836132dd565b6000818152600183016020526040812054151561293d565b606082471015613256576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610c07565b6000808673ffffffffffffffffffffffffffffffffffffffff16858760405161327f91906143db565b60006040518083038185875af1925050503d80600081146132bc576040519150601f19603f3d011682016040523d82523d6000602084013e6132c1565b606091505b50915091506132d28783838761332c565b979650505050505050565b6000818152600183016020526040812054613324575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556108b2565b5060006108b2565b606083156133c25782516000036133bb5773ffffffffffffffffffffffffffffffffffffffff85163b6133bb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610c07565b5081612b7f565b612b7f83838151156133d75781518083602001fd5b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c07919061358d565b50805461341790613b86565b6000825580601f10613427575050565b601f01602090049060005260206000209081019061278991905b808211156134555760008155600101613441565b5090565b67ffffffffffffffff8116811461278957600080fd5b60008060006040848603121561348457600080fd5b833561348f81613459565b9250602084013567ffffffffffffffff808211156134ac57600080fd5b818601915086601f8301126134c057600080fd5b8135818111156134cf57600080fd5b8760208285010111156134e157600080fd5b6020830194508093505050509250925092565b801515811461278957600080fd5b60006020828403121561351457600080fd5b813561293d816134f4565b60005b8381101561353a578181015183820152602001613522565b50506000910152565b6000815180845261355b81602086016020860161351f565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061293d6020830184613543565b6000602082840312156135b257600080fd5b813561293d81613459565b6040815260006135d06040830185613543565b82810360208401526135e28185613543565b95945050505050565b6000602082840312156135fd57600080fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff8116811461278957600080fd5b6000806040838503121561363957600080fd5b823561364481613604565b946020939093013593505050565b60008060006060848603121561366757600080fd5b833561367281613604565b9250602084013561368281613604565b929592945050506040919091013590565b60008151808452602080850194506020840160005b838110156136e5578151805173ffffffffffffffffffffffffffffffffffffffff16885283015183880152604090960195908201906001016136a8565b509495945050505050565b602081528151602082015267ffffffffffffffff60208301511660408201526000604083015160a0606084015261372a60c0840182613543565b905060608401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0808584030160808601526137668383613543565b925060808601519150808584030160a0860152506135e28282613693565b6000806040838503121561379757600080fd5b8235915060208301356137a981613604565b809150509250929050565b60008083601f8401126137c657600080fd5b50813567ffffffffffffffff8111156137de57600080fd5b6020830191508360208260051b85010111156137f957600080fd5b9250929050565b6000806000806040858703121561381657600080fd5b843567ffffffffffffffff8082111561382e57600080fd5b61383a888389016137b4565b9096509450602087013591508082111561385357600080fd5b50613860878288016137b4565b95989497509550505050565b60006020828403121561387e57600080fd5b813567ffffffffffffffff81111561389557600080fd5b820160a0818503121561293d57600080fd5b6000602082840312156138b957600080fd5b813561293d81613604565b600080602083850312156138d757600080fd5b823567ffffffffffffffff8111156138ee57600080fd5b6138fa858286016137b4565b90969095509350505050565b6000806040838503121561391957600080fd5b823561392481613459565b915060208301356137a981613604565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff8111828210171561398657613986613934565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156139d3576139d3613934565b604052919050565b600082601f8301126139ec57600080fd5b813567ffffffffffffffff811115613a0657613a06613934565b613a3760207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160161398c565b818152846020838601011115613a4c57600080fd5b816020850160208301376000918101602001919091529392505050565b600080600060608486031215613a7e57600080fd5b8335613a8981613459565b925060208481013567ffffffffffffffff80821115613aa757600080fd5b818701915087601f830112613abb57600080fd5b813581811115613acd57613acd613934565b613adb848260051b0161398c565b81815260069190911b8301840190848101908a831115613afa57600080fd5b938501935b82851015613b46576040858c031215613b185760008081fd5b613b20613963565b8535613b2b81613604565b81528587013587820152825260409094019390850190613aff565b965050506040870135925080831115613b5e57600080fd5b5050613b6c868287016139db565b9150509250925092565b8183823760009101908152919050565b600181811c90821680613b9a57607f821691505b602082108103613bd3577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc1833603018112613c3c57600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613c7b57600080fd5b83018035915067ffffffffffffffff821115613c9657600080fd5b6020019150368190038213156137f957600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613ce057600080fd5b830160208101925035905067ffffffffffffffff811115613d0057600080fd5b8036038213156137f957600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b8183526000602080850194508260005b858110156136e5578135613d7b81613604565b73ffffffffffffffffffffffffffffffffffffffff168752818301358388015260409687019690910190600101613d68565b602081528135602082015260006020830135613dc881613459565b67ffffffffffffffff8082166040850152613de66040860186613cab565b925060a06060860152613dfd60c086018483613d0f565b925050613e0d6060860186613cab565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe080878603016080880152613e43858385613d0f565b9450608088013592507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1883603018312613e7c57600080fd5b60209288019283019235915083821115613e9557600080fd5b8160061b3603831315613ea757600080fd5b8685030160a08701526132d2848284613d58565b601f821115611518576000816000526020600020601f850160051c81016020861015613ee45750805b601f850160051c820191505b81811015611f5c57828155600101613ef0565b67ffffffffffffffff831115613f1b57613f1b613934565b613f2f83613f298354613b86565b83613ebb565b6000601f841160018114613f815760008515613f4b5750838201355b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b1c1916600186901b17835561130d565b6000838152602090207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0861690835b82811015613fd05786850135825560209485019460019092019101613fb0565b508682101561400b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88860031b161c19848701351681555b505060018560011b0183555050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b813561405781613604565b73ffffffffffffffffffffffffffffffffffffffff81167fffffffffffffffffffffffff000000000000000000000000000000000000000083541617825550602082013560018201555050565b680100000000000000008311156140bd576140bd613934565b80548382558084101561414a5760017f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80831683146140fe576140fe61401d565b808616861461410f5761410f61401d565b5060008360005260206000208360011b81018760011b820191505b8082101561414557828255828483015560028201915061412a565b505050505b5060008181526020812083915b85811015611f5c57614169838361404c565b6040929092019160029190910190600101614157565b8135815560018101602083013561419581613459565b67ffffffffffffffff8082167fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000008454161783556141d56040860186613c46565b935091506141e7838360028701613f03565b6141f46060860186613c46565b93509150614206838360038701613f03565b608085013592507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe185360301831261423d57600080fd5b91840191823591508082111561425257600080fd5b506020820191508060061b360382131561426b57600080fd5b612e078183600486016140a4565b815167ffffffffffffffff81111561429357614293613934565b6142a7816142a18454613b86565b84613ebb565b602080601f8311600181146142fa57600084156142c45750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b178555611f5c565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b8281101561434757888601518255948401946001909101908401614328565b508582101561438357878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81833603018112613c3c57600080fd5b602081526000612b7f602083018486613d0f565b60008251613c3c81846020870161351f565b808201808211156108b2576108b261401d565b67ffffffffffffffff83168152604060208201526000825160a0604084015261442c60e0840182613543565b905060208401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0808584030160608601526144688383613543565b925060408601519150808584030160808601526144858383613693565b925073ffffffffffffffffffffffffffffffffffffffff60608701511660a086015260808601519150808584030160c0860152506144c38282613543565b9695505050505050565b6000602082840312156144df57600080fd5b5051919050565b6000602082840312156144f857600080fd5b815161293d816134f456fea164736f6c6343000818000a", + Bin: "0x60806040523480156200001157600080fd5b5060405162004bde38038062004bde8339810160408190526200003491620005bd565b8181818033806000816200008f5760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f7420736574206f776e657220746f207a65726f000000000000000060448201526064015b60405180910390fd5b600080546001600160a01b0319166001600160a01b0384811691909117909155811615620000c257620000c28162000135565b5050506001600160a01b038116620000ed576040516342bcdf7f60e11b815260040160405180910390fd5b600280546001600160a01b039283166001600160a01b031991821681179092556008805493861693909116831790556200012b9250600019620001e0565b50505050620006ba565b336001600160a01b038216036200018f5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c66000000000000000000604482015260640162000086565b600180546001600160a01b0319166001600160a01b0383811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b8015806200025e5750604051636eb1769f60e11b81523060048201526001600160a01b03838116602483015284169063dd62ed3e90604401602060405180830381865afa15801562000236573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200025c9190620005fc565b155b620002d25760405162461bcd60e51b815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527f20746f206e6f6e2d7a65726f20616c6c6f77616e636500000000000000000000606482015260840162000086565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b0390811663095ea7b360e01b179091526200032a9185916200032f16565b505050565b6040805180820190915260208082527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564908201526000906200037e906001600160a01b03851690849062000400565b8051909150156200032a57808060200190518101906200039f919062000616565b6200032a5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840162000086565b606062000411848460008562000419565b949350505050565b6060824710156200047c5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b606482015260840162000086565b600080866001600160a01b031685876040516200049a919062000667565b60006040518083038185875af1925050503d8060008114620004d9576040519150601f19603f3d011682016040523d82523d6000602084013e620004de565b606091505b509092509050620004f287838387620004fd565b979650505050505050565b606083156200057157825160000362000569576001600160a01b0385163b620005695760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640162000086565b508162000411565b620004118383815115620005885781518083602001fd5b8060405162461bcd60e51b815260040162000086919062000685565b6001600160a01b0381168114620005ba57600080fd5b50565b60008060408385031215620005d157600080fd5b8251620005de81620005a4565b6020840151909250620005f181620005a4565b809150509250929050565b6000602082840312156200060f57600080fd5b5051919050565b6000602082840312156200062957600080fd5b815180151581146200063a57600080fd5b9392505050565b60005b838110156200065e57818101518382015260200162000644565b50506000910152565b600082516200067b81846020870162000641565b9190910192915050565b6020815260008251806020840152620006a681604085016020870162000641565b601f01601f19169190910160400192915050565b61451480620006ca6000396000f3fe6080604052600436106101c65760003560e01c806385572ffb116100f7578063bee518a411610095578063e4ca875411610064578063e4ca8754146105c5578063e89b4485146105e5578063f2fde38b146105f8578063ff2deec31461061857600080fd5b8063bee518a41461051a578063c851cc3214610565578063c89245d514610585578063cf6730f8146105a557600080fd5b80639fe74e26116100d15780639fe74e261461047f578063b0f479a11461049f578063b187bd26146104ca578063b5a11011146104fa57600080fd5b806385572ffb146104145780638da5cb5b146104345780639d2aede51461045f57600080fd5b80635075a9d4116101645780636939cd971161013e5780636939cd97146103925780636d62d633146103bf57806379ba5097146103df5780638462a2b9146103f457600080fd5b80635075a9d414610324578063536c6bfa146103525780635e35359e1461037257600080fd5b80631892b906116101a05780631892b906146102755780632874d8bf146102955780632b6e5d63146102aa57806335f170ef146102f657600080fd5b80630e958d6b146101d257806316c38b3c14610207578063181f5a771461022957600080fd5b366101cd57005b600080fd5b3480156101de57600080fd5b506101f26101ed366004613473565b610645565b60405190151581526020015b60405180910390f35b34801561021357600080fd5b50610227610222366004613506565b610690565b005b34801561023557600080fd5b50604080518082018252601281527f50696e67506f6e6744656d6f20312e332e300000000000000000000000000000602082015290516101fe9190613591565b34801561028157600080fd5b506102276102903660046135a4565b6106e2565b3480156102a157600080fd5b5061022761073d565b3480156102b657600080fd5b5060095473ffffffffffffffffffffffffffffffffffffffff165b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101fe565b34801561030257600080fd5b506103166103113660046135a4565b610779565b6040516101fe9291906135c1565b34801561033057600080fd5b5061034461033f3660046135ef565b6108a5565b6040519081526020016101fe565b34801561035e57600080fd5b5061022761036d36600461362a565b6108b8565b34801561037e57600080fd5b5061022761038d366004613656565b61091c565b34801561039e57600080fd5b506103b26103ad3660046135ef565b6109b1565b6040516101fe91906136f4565b3480156103cb57600080fd5b506102276103da366004613788565b610bbc565b3480156103eb57600080fd5b50610227610ed6565b34801561040057600080fd5b5061022761040f366004613804565b610fd3565b34801561042057600080fd5b5061022761042f366004613870565b611314565b34801561044057600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff166102d1565b34801561046b57600080fd5b5061022761047a3660046138ab565b61151d565b34801561048b57600080fd5b5061022761049a3660046138c8565b6115e2565b3480156104ab57600080fd5b5060025473ffffffffffffffffffffffffffffffffffffffff166102d1565b3480156104d657600080fd5b5060095474010000000000000000000000000000000000000000900460ff166101f2565b34801561050657600080fd5b5061022761051536600461390a565b611973565b34801561052657600080fd5b5060085474010000000000000000000000000000000000000000900467ffffffffffffffff1660405167ffffffffffffffff90911681526020016101fe565b34801561057157600080fd5b506102276105803660046138ab565b611b19565b34801561059157600080fd5b506102276105a03660046138ab565b611be5565b3480156105b157600080fd5b506102276105c0366004613870565b611d4f565b3480156105d157600080fd5b506102276105e03660046135ef565b611f64565b6103446105f3366004613a6d565b6121ce565b34801561060457600080fd5b506102276106133660046138ab565b61277c565b34801561062457600080fd5b506008546102d19073ffffffffffffffffffffffffffffffffffffffff1681565b67ffffffffffffffff831660009081526003602052604080822090516002909101906106749085908590613b7a565b9081526040519081900360200190205460ff1690509392505050565b610698612790565b6009805491151574010000000000000000000000000000000000000000027fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff909216919091179055565b6106ea612790565b6008805467ffffffffffffffff90921674010000000000000000000000000000000000000000027fffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffff909216919091179055565b610745612790565b600980547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1690556107776001612811565b565b60036020526000908152604090208054819061079490613b8a565b80601f01602080910402602001604051908101604052809291908181526020018280546107c090613b8a565b801561080d5780601f106107e25761010080835404028352916020019161080d565b820191906000526020600020905b8154815290600101906020018083116107f057829003601f168201915b50505050509080600101805461082290613b8a565b80601f016020809104026020016040519081016040528092919081815260200182805461084e90613b8a565b801561089b5780601f106108705761010080835404028352916020019161089b565b820191906000526020600020905b81548152906001019060200180831161087e57829003601f168201915b5050505050905082565b60006108b2600583612935565b92915050565b6108c0612790565b6108ca8282612948565b60405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907f6832d9be2410a86571981e1e60fd4c1f9ea2a1034d6102a2b7d6c5e480adf02e9060200160405180910390a35050565b610924612790565b61094573ffffffffffffffffffffffffffffffffffffffff84168383612aa2565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f6832d9be2410a86571981e1e60fd4c1f9ea2a1034d6102a2b7d6c5e480adf02e836040516109a491815260200190565b60405180910390a3505050565b6040805160a08082018352600080835260208084018290526060848601819052808501819052608085015285825260048152908490208451928301855280548352600181015467ffffffffffffffff1691830191909152600281018054939492939192840191610a2090613b8a565b80601f0160208091040260200160405190810160405280929190818152602001828054610a4c90613b8a565b8015610a995780601f10610a6e57610100808354040283529160200191610a99565b820191906000526020600020905b815481529060010190602001808311610a7c57829003601f168201915b50505050508152602001600382018054610ab290613b8a565b80601f0160208091040260200160405190810160405280929190818152602001828054610ade90613b8a565b8015610b2b5780601f10610b0057610100808354040283529160200191610b2b565b820191906000526020600020905b815481529060010190602001808311610b0e57829003601f168201915b5050505050815260200160048201805480602002602001604051908101604052809291908181526020016000905b82821015610bae5760008481526020908190206040805180820190915260028502909101805473ffffffffffffffffffffffffffffffffffffffff168252600190810154828401529083529092019101610b59565b505050915250909392505050565b610bc4612790565b6001610bd1600584612935565b14610c10576040517fb6e78260000000000000000000000000000000000000000000000000000000008152600481018390526024015b60405180910390fd5b610c208260025b60059190612b76565b506000828152600460209081526040808320815160a08101835281548152600182015467ffffffffffffffff16938101939093526002810180549192840191610c6890613b8a565b80601f0160208091040260200160405190810160405280929190818152602001828054610c9490613b8a565b8015610ce15780601f10610cb657610100808354040283529160200191610ce1565b820191906000526020600020905b815481529060010190602001808311610cc457829003601f168201915b50505050508152602001600382018054610cfa90613b8a565b80601f0160208091040260200160405190810160405280929190818152602001828054610d2690613b8a565b8015610d735780601f10610d4857610100808354040283529160200191610d73565b820191906000526020600020905b815481529060010190602001808311610d5657829003601f168201915b5050505050815260200160048201805480602002602001604051908101604052809291908181526020016000905b82821015610df65760008481526020908190206040805180820190915260028502909101805473ffffffffffffffffffffffffffffffffffffffff168252600190810154828401529083529092019101610da1565b5050505081525050905060005b816080015151811015610e8557610e7d8383608001518381518110610e2a57610e2a613bdd565b60200260200101516020015184608001518481518110610e4c57610e4c613bdd565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff16612aa29092919063ffffffff16565b600101610e03565b5060405173ffffffffffffffffffffffffffffffffffffffff8316815283907fd5038100bd3dc9631d3c3f4f61a3e53e9d466f40c47af9897292c7b35e32a9579060200160405180910390a2505050565b60015473ffffffffffffffffffffffffffffffffffffffff163314610f57576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4d7573742062652070726f706f736564206f776e6572000000000000000000006044820152606401610c07565b60008054337fffffffffffffffffffffffff00000000000000000000000000000000000000008083168217845560018054909116905560405173ffffffffffffffffffffffffffffffffffffffff90921692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a350565b610fdb612790565b60005b8181101561116e5760036000848484818110610ffc57610ffc613bdd565b905060200281019061100e9190613c0c565b61101c9060208101906135a4565b67ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060020183838381811061105357611053613bdd565b90506020028101906110659190613c0c565b611073906020810190613c4a565b604051611081929190613b7a565b90815260405190819003602001902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690558282828181106110c8576110c8613bdd565b90506020028101906110da9190613c0c565b6110e8906020810190613c4a565b6040516110f6929190613b7a565b604051809103902083838381811061111057611110613bdd565b90506020028101906111229190613c0c565b6111309060208101906135a4565b67ffffffffffffffff167f021290bab0d93f4d9a243bd430e45dd4bc8238451e9abbba6fab4463677dfce960405160405180910390a3600101610fde565b5060005b8381101561130d5760016003600087878581811061119257611192613bdd565b90506020028101906111a49190613c0c565b6111b29060208101906135a4565b67ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206002018686848181106111e9576111e9613bdd565b90506020028101906111fb9190613c0c565b611209906020810190613c4a565b604051611217929190613b7a565b90815260405190819003602001902080549115157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0090921691909117905584848281811061126757611267613bdd565b90506020028101906112799190613c0c565b611287906020810190613c4a565b604051611295929190613b7a565b60405180910390208585838181106112af576112af613bdd565b90506020028101906112c19190613c0c565b6112cf9060208101906135a4565b67ffffffffffffffff167f72d9f73bb7cb11065e15df29d61e803a0eba356d509a7025a6f51ebdea07f9e760405160405180910390a3600101611172565b5050505050565b60025473ffffffffffffffffffffffffffffffffffffffff163314611367576040517fd7f73334000000000000000000000000000000000000000000000000000000008152336004820152602401610c07565b61137760408201602083016135a4565b67ffffffffffffffff811660009081526003602052604090208054819061139d90613b8a565b90506000036113e4576040517fd79f2ea400000000000000000000000000000000000000000000000000000000815267ffffffffffffffff83166004820152602401610c07565b6040517fcf6730f8000000000000000000000000000000000000000000000000000000008152309063cf6730f890611420908690600401613db1565b600060405180830381600087803b15801561143a57600080fd5b505af192505050801561144b575060015b6114eb573d808015611479576040519150601f19603f3d011682016040523d82523d6000602084013e61147e565b606091505b5061148b84356001610c17565b508335600090815260046020526040902084906114a88282614183565b50506040518435907f55bc02a9ef6f146737edeeb425738006f67f077e7138de3bf84a15bde1a5b56f906114dd908490613591565b60405180910390a250505050565b6040518335907fdf6958669026659bac75ba986685e11a7d271284989f565f2802522663e9a70f90600090a25b505050565b611525612790565b600980547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff831690811790915560408051602081019290925201604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001815291815260085474010000000000000000000000000000000000000000900467ffffffffffffffff166000908152600360205220906115de908261427d565b5050565b6115ea612790565b60005b818110156115185782828281811061160757611607613bdd565b90506020028101906116199190614397565b61162a906040810190602001613506565b6116f6576003600084848481811061164457611644613bdd565b90506020028101906116569190614397565b6116649060208101906135a4565b67ffffffffffffffff168152602081019190915260400160009081206116899161340f565b82828281811061169b5761169b613bdd565b90506020028101906116ad9190614397565b6116bb9060208101906135a4565b67ffffffffffffffff167f5204aec90a3c794d8e90fded8b46ae9c7c552803e7e832e0c1d358396d85991660405160405180910390a261196b565b82828281811061170857611708613bdd565b905060200281019061171a9190614397565b611728906040810190613c4a565b9050600003611763576040517f8579befe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006003600085858581811061177b5761177b613bdd565b905060200281019061178d9190614397565b61179b9060208101906135a4565b67ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002090508383838181106117d1576117d1613bdd565b90506020028101906117e39190614397565b6117f1906040810190613c4a565b82916117fe919083613f07565b5083838381811061181157611811613bdd565b90506020028101906118239190614397565b611831906060810190613c4a565b15905061187c5783838381811061184a5761184a613bdd565b905060200281019061185c9190614397565b61186a906060810190613c4a565b600183019161187a919083613f07565b505b83838381811061188e5761188e613bdd565b90506020028101906118a09190614397565b6118ae906040810190613c4a565b6040516118bc929190613b7a565b60405180910390208484848181106118d6576118d6613bdd565b90506020028101906118e89190614397565b6118f69060208101906135a4565b67ffffffffffffffff167f1ced5bcae649ed29cebfa0010298ad6794bf3822e8cb754a6eee5353a9a8721286868681811061193357611933613bdd565b90506020028101906119459190614397565b611953906060810190613c4a565b6040516119619291906143cb565b60405180910390a3505b6001016115ed565b61197b612790565b600880547fffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000067ffffffffffffffff851690810291909117909155600980547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff841690811790915560009182526003602090815260409283902083519182019290925260019260029092019101604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052611a6c916143df565b908152604080516020928190038301812080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169415159490941790935573ffffffffffffffffffffffffffffffffffffffff84169183019190915201604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291815267ffffffffffffffff8416600090815260036020522090611518908261427d565b611b21612790565b73ffffffffffffffffffffffffffffffffffffffff8116611b6e576040517f8579befe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f3672b589036f39ac008505b790fcb05d484d70b65680ec64c089a3c173fdc4c890600090a35050565b611bed612790565b60085473ffffffffffffffffffffffffffffffffffffffff1615611c4e57611c4e611c2d60025473ffffffffffffffffffffffffffffffffffffffff1690565b60085473ffffffffffffffffffffffffffffffffffffffff16906000612b8b565b6008805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff000000000000000000000000000000000000000083168117909355169015611cfb57611cfb611cbb60025473ffffffffffffffffffffffffffffffffffffffff1690565b60085473ffffffffffffffffffffffffffffffffffffffff16907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff612d0d565b6040805173ffffffffffffffffffffffffffffffffffffffff8084168252841660208201527f91a03e1d689caf891fe531c01e290f7b718f9c6a3af6726d6d837d2b7bd82e67910160405180910390a15050565b333014611d88576040517f14d4a4e800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611d9860408201602083016135a4565b611da56040830183613c4a565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525067ffffffffffffffff861681526003602052604090208054909350611dfc92509050613b8a565b15905080611e525750600360008367ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060020181604051611e3d91906143df565b9081526040519081900360200190205460ff16155b15611e8b57806040517f5075bb38000000000000000000000000000000000000000000000000000000008152600401610c079190613591565b611e9b60408401602085016135a4565b67ffffffffffffffff8116600090815260036020526040902080548190611ec190613b8a565b9050600003611f08576040517fd79f2ea400000000000000000000000000000000000000000000000000000000815267ffffffffffffffff83166004820152602401610c07565b6000611f176060870187613c4a565b810190611f2491906135ef565b60095490915074010000000000000000000000000000000000000000900460ff16611f5c57611f5c611f578260016143f1565b612811565b505050505050565b6001611f71600583612935565b14611fab576040517fb6e7826000000000000000000000000000000000000000000000000000000000815260048101829052602401610c07565b611fb6816000610c17565b506000818152600460209081526040808320815160a08101835281548152600182015467ffffffffffffffff16938101939093526002810180549192840191611ffe90613b8a565b80601f016020809104026020016040519081016040528092919081815260200182805461202a90613b8a565b80156120775780601f1061204c57610100808354040283529160200191612077565b820191906000526020600020905b81548152906001019060200180831161205a57829003601f168201915b5050505050815260200160038201805461209090613b8a565b80601f01602080910402602001604051908101604052809291908181526020018280546120bc90613b8a565b80156121095780601f106120de57610100808354040283529160200191612109565b820191906000526020600020905b8154815290600101906020018083116120ec57829003601f168201915b5050505050815260200160048201805480602002602001604051908101604052809291908181526020016000905b8282101561218c5760008481526020908190206040805180820190915260028502909101805473ffffffffffffffffffffffffffffffffffffffff168252600190810154828401529083529092019101612137565b5050505081525050905061219f81612e11565b60405182907fef3bf8c64bc480286c4f3503b870ceb23e648d2d902e31fb7bb46680da6de8ad90600090a25050565b67ffffffffffffffff83166000908152600360205260408120805485919081906121f790613b8a565b905060000361223e576040517fd79f2ea400000000000000000000000000000000000000000000000000000000815267ffffffffffffffff83166004820152602401610c07565b6040805160a08101825267ffffffffffffffff881660009081526003602052918220805482919061226e90613b8a565b80601f016020809104026020016040519081016040528092919081815260200182805461229a90613b8a565b80156122e75780601f106122bc576101008083540402835291602001916122e7565b820191906000526020600020905b8154815290600101906020018083116122ca57829003601f168201915b5050509183525050602080820188905260408083018a905260085473ffffffffffffffffffffffffffffffffffffffff16606084015267ffffffffffffffff8b16600090815260039092529020600101805460809092019161234890613b8a565b80601f016020809104026020016040519081016040528092919081815260200182805461237490613b8a565b80156123c15780601f10612396576101008083540402835291602001916123c1565b820191906000526020600020905b8154815290600101906020018083116123a457829003601f168201915b5050509190925250506002546040517f20487ded00000000000000000000000000000000000000000000000000000000815291925060009173ffffffffffffffffffffffffffffffffffffffff909116906320487ded90612428908b908690600401614404565b602060405180830381865afa158015612445573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061246991906144d1565b60085490915073ffffffffffffffffffffffffffffffffffffffff161580159061252257506008546040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152829173ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa1580156124fc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061252091906144d1565b105b1561254c5760085461254c9073ffffffffffffffffffffffffffffffffffffffff16333084612e83565b60005b875181101561269f576125bf33308a848151811061256f5761256f613bdd565b6020026020010151602001518b858151811061258d5761258d613bdd565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff16612e83909392919063ffffffff16565b600854885173ffffffffffffffffffffffffffffffffffffffff909116908990839081106125ef576125ef613bdd565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff16146126975760025488516126979173ffffffffffffffffffffffffffffffffffffffff16908a908490811061264857612648613bdd565b6020026020010151602001518a848151811061266657612666613bdd565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff16612b8b9092919063ffffffff16565b60010161254f565b5060025460085473ffffffffffffffffffffffffffffffffffffffff918216916396f4e9f99116156126d25760006126d4565b825b8a856040518463ffffffff1660e01b81526004016126f3929190614404565b60206040518083038185885af1158015612711573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061273691906144d1565b94507f54791b38f3859327992a1ca0590ad3c0f08feba98d1a4f56ab0dca74d203392a8560405161276991815260200190565b60405180910390a1505050509392505050565b612784612790565b61278d81612ee1565b50565b60005473ffffffffffffffffffffffffffffffffffffffff163314610777576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4f6e6c792063616c6c61626c65206279206f776e6572000000000000000000006044820152606401610c07565b80600116600103612854576040518181527f48257dc961b6f792c2b78a080dacfed693b660960a702de21cee364e20270e2f9060200160405180910390a1612888565b6040518181527f58b69f57828e6962d216502094c54f6562f3bf082ba758966c3454f9e37b15259060200160405180910390a15b60008160405160200161289d91815260200190565b604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0018152600854600080855260208501909352909350611518927401000000000000000000000000000000000000000090910467ffffffffffffffff169161292e565b60408051808201909152600080825260208201528152602001906001900390816129075790505b50836121ce565b60006129418383612fd6565b9392505050565b804710156129b2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610c07565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114612a0c576040519150601f19603f3d011682016040523d82523d6000602084013e612a11565b606091505b5050905080611518576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610c07565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526115189084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152613060565b6000612b8384848461316c565b949350505050565b801580612c2b57506040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff838116602483015284169063dd62ed3e90604401602060405180830381865afa158015612c05573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c2991906144d1565b155b612cb7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527f20746f206e6f6e2d7a65726f20616c6c6f77616e6365000000000000000000006064820152608401610c07565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526115189084907f095ea7b30000000000000000000000000000000000000000000000000000000090606401612af4565b6040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff8381166024830152600091839186169063dd62ed3e90604401602060405180830381865afa158015612d84573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612da891906144d1565b612db291906143f1565b60405173ffffffffffffffffffffffffffffffffffffffff8516602482015260448101829052909150612e0b9085907f095ea7b30000000000000000000000000000000000000000000000000000000090606401612af4565b50505050565b612e19612790565b6040517fcf6730f8000000000000000000000000000000000000000000000000000000008152309063cf6730f890612e559084906004016136f4565b600060405180830381600087803b158015612e6f57600080fd5b505af115801561130d573d6000803e3d6000fd5b60405173ffffffffffffffffffffffffffffffffffffffff80851660248301528316604482015260648101829052612e0b9085907f23b872dd0000000000000000000000000000000000000000000000000000000090608401612af4565b3373ffffffffffffffffffffffffffffffffffffffff821603612f60576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c660000000000000000006044820152606401610c07565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b600081815260028301602052604081205480151580612ffa5750612ffa8484613189565b612941576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f456e756d657261626c654d61703a206e6f6e6578697374656e74206b657900006044820152606401610c07565b60006130c2826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166131959092919063ffffffff16565b80519091501561151857808060200190518101906130e091906144ea565b611518576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610c07565b60008281526002840160205260408120829055612b8384846131a4565b600061294183836131b0565b6060612b8384846000856131c8565b600061294183836132e1565b60008181526001830160205260408120541515612941565b60608247101561325a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610c07565b6000808673ffffffffffffffffffffffffffffffffffffffff16858760405161328391906143df565b60006040518083038185875af1925050503d80600081146132c0576040519150601f19603f3d011682016040523d82523d6000602084013e6132c5565b606091505b50915091506132d687838387613330565b979650505050505050565b6000818152600183016020526040812054613328575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556108b2565b5060006108b2565b606083156133c65782516000036133bf5773ffffffffffffffffffffffffffffffffffffffff85163b6133bf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610c07565b5081612b83565b612b8383838151156133db5781518083602001fd5b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c079190613591565b50805461341b90613b8a565b6000825580601f1061342b575050565b601f01602090049060005260206000209081019061278d91905b808211156134595760008155600101613445565b5090565b67ffffffffffffffff8116811461278d57600080fd5b60008060006040848603121561348857600080fd5b83356134938161345d565b9250602084013567ffffffffffffffff808211156134b057600080fd5b818601915086601f8301126134c457600080fd5b8135818111156134d357600080fd5b8760208285010111156134e557600080fd5b6020830194508093505050509250925092565b801515811461278d57600080fd5b60006020828403121561351857600080fd5b8135612941816134f8565b60005b8381101561353e578181015183820152602001613526565b50506000910152565b6000815180845261355f816020860160208601613523565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006129416020830184613547565b6000602082840312156135b657600080fd5b81356129418161345d565b6040815260006135d46040830185613547565b82810360208401526135e68185613547565b95945050505050565b60006020828403121561360157600080fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff8116811461278d57600080fd5b6000806040838503121561363d57600080fd5b823561364881613608565b946020939093013593505050565b60008060006060848603121561366b57600080fd5b833561367681613608565b9250602084013561368681613608565b929592945050506040919091013590565b60008151808452602080850194506020840160005b838110156136e9578151805173ffffffffffffffffffffffffffffffffffffffff16885283015183880152604090960195908201906001016136ac565b509495945050505050565b602081528151602082015267ffffffffffffffff60208301511660408201526000604083015160a0606084015261372e60c0840182613547565b905060608401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08085840301608086015261376a8383613547565b925060808601519150808584030160a0860152506135e68282613697565b6000806040838503121561379b57600080fd5b8235915060208301356137ad81613608565b809150509250929050565b60008083601f8401126137ca57600080fd5b50813567ffffffffffffffff8111156137e257600080fd5b6020830191508360208260051b85010111156137fd57600080fd5b9250929050565b6000806000806040858703121561381a57600080fd5b843567ffffffffffffffff8082111561383257600080fd5b61383e888389016137b8565b9096509450602087013591508082111561385757600080fd5b50613864878288016137b8565b95989497509550505050565b60006020828403121561388257600080fd5b813567ffffffffffffffff81111561389957600080fd5b820160a0818503121561294157600080fd5b6000602082840312156138bd57600080fd5b813561294181613608565b600080602083850312156138db57600080fd5b823567ffffffffffffffff8111156138f257600080fd5b6138fe858286016137b8565b90969095509350505050565b6000806040838503121561391d57600080fd5b82356139288161345d565b915060208301356137ad81613608565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff8111828210171561398a5761398a613938565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156139d7576139d7613938565b604052919050565b600082601f8301126139f057600080fd5b813567ffffffffffffffff811115613a0a57613a0a613938565b613a3b60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601613990565b818152846020838601011115613a5057600080fd5b816020850160208301376000918101602001919091529392505050565b600080600060608486031215613a8257600080fd5b8335613a8d8161345d565b925060208481013567ffffffffffffffff80821115613aab57600080fd5b818701915087601f830112613abf57600080fd5b813581811115613ad157613ad1613938565b613adf848260051b01613990565b81815260069190911b8301840190848101908a831115613afe57600080fd5b938501935b82851015613b4a576040858c031215613b1c5760008081fd5b613b24613967565b8535613b2f81613608565b81528587013587820152825260409094019390850190613b03565b965050506040870135925080831115613b6257600080fd5b5050613b70868287016139df565b9150509250925092565b8183823760009101908152919050565b600181811c90821680613b9e57607f821691505b602082108103613bd7577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc1833603018112613c4057600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613c7f57600080fd5b83018035915067ffffffffffffffff821115613c9a57600080fd5b6020019150368190038213156137fd57600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613ce457600080fd5b830160208101925035905067ffffffffffffffff811115613d0457600080fd5b8036038213156137fd57600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b8183526000602080850194508260005b858110156136e9578135613d7f81613608565b73ffffffffffffffffffffffffffffffffffffffff168752818301358388015260409687019690910190600101613d6c565b602081528135602082015260006020830135613dcc8161345d565b67ffffffffffffffff8082166040850152613dea6040860186613caf565b925060a06060860152613e0160c086018483613d13565b925050613e116060860186613caf565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe080878603016080880152613e47858385613d13565b9450608088013592507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1883603018312613e8057600080fd5b60209288019283019235915083821115613e9957600080fd5b8160061b3603831315613eab57600080fd5b8685030160a08701526132d6848284613d5c565b601f821115611518576000816000526020600020601f850160051c81016020861015613ee85750805b601f850160051c820191505b81811015611f5c57828155600101613ef4565b67ffffffffffffffff831115613f1f57613f1f613938565b613f3383613f2d8354613b8a565b83613ebf565b6000601f841160018114613f855760008515613f4f5750838201355b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b1c1916600186901b17835561130d565b6000838152602090207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0861690835b82811015613fd45786850135825560209485019460019092019101613fb4565b508682101561400f577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88860031b161c19848701351681555b505060018560011b0183555050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b813561405b81613608565b73ffffffffffffffffffffffffffffffffffffffff81167fffffffffffffffffffffffff000000000000000000000000000000000000000083541617825550602082013560018201555050565b680100000000000000008311156140c1576140c1613938565b80548382558084101561414e5760017f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808316831461410257614102614021565b808616861461411357614113614021565b5060008360005260206000208360011b81018760011b820191505b8082101561414957828255828483015560028201915061412e565b505050505b5060008181526020812083915b85811015611f5c5761416d8383614050565b604092909201916002919091019060010161415b565b813581556001810160208301356141998161345d565b67ffffffffffffffff8082167fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000008454161783556141d96040860186613c4a565b935091506141eb838360028701613f07565b6141f86060860186613c4a565b9350915061420a838360038701613f07565b608085013592507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe185360301831261424157600080fd5b91840191823591508082111561425657600080fd5b506020820191508060061b360382131561426f57600080fd5b612e0b8183600486016140a8565b815167ffffffffffffffff81111561429757614297613938565b6142ab816142a58454613b8a565b84613ebf565b602080601f8311600181146142fe57600084156142c85750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b178555611f5c565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b8281101561434b5788860151825594840194600190910190840161432c565b508582101561438757878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81833603018112613c4057600080fd5b602081526000612b83602083018486613d13565b60008251613c40818460208701613523565b808201808211156108b2576108b2614021565b67ffffffffffffffff83168152604060208201526000825160a0604084015261443060e0840182613547565b905060208401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08085840301606086015261446c8383613547565b925060408601519150808584030160808601526144898383613697565b925073ffffffffffffffffffffffffffffffffffffffff60608701511660a086015260808601519150808584030160c0860152506144c78282613547565b9695505050505050565b6000602082840312156144e357600080fd5b5051919050565b6000602082840312156144fc57600080fd5b8151612941816134f856fea164736f6c6343000818000a", } var PingPongDemoABI = PingPongDemoMetaData.ABI diff --git a/core/gethwrappers/ccip/generated/self_funded_ping_pong/self_funded_ping_pong.go b/core/gethwrappers/ccip/generated/self_funded_ping_pong/self_funded_ping_pong.go index b1689599be..1336ceafb0 100644 --- a/core/gethwrappers/ccip/generated/self_funded_ping_pong/self_funded_ping_pong.go +++ b/core/gethwrappers/ccip/generated/self_funded_ping_pong/self_funded_ping_pong.go @@ -57,7 +57,7 @@ type ClientEVMTokenAmount struct { var SelfFundedPingPongMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"router\",\"type\":\"address\"},{\"internalType\":\"contractIERC20\",\"name\":\"feeToken\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"roundTripsBeforeFunding\",\"type\":\"uint8\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"chainSelector\",\"type\":\"uint64\"}],\"name\":\"InvalidChain\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"recipient\",\"type\":\"bytes\"}],\"name\":\"InvalidRecipient\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"router\",\"type\":\"address\"}],\"name\":\"InvalidRouter\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"sender\",\"type\":\"bytes\"}],\"name\":\"InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"}],\"name\":\"MessageNotFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlySelf\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddressNotAllowed\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"destChainSelector\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"recipient\",\"type\":\"bytes\"}],\"name\":\"ApprovedSenderAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"destChainSelector\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"recipient\",\"type\":\"bytes\"}],\"name\":\"ApprovedSenderRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"oldRouter\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newRouter\",\"type\":\"address\"}],\"name\":\"CCIPRouterModified\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"remoteChainSelector\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"recipient\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"extraArgsBytes\",\"type\":\"bytes\"}],\"name\":\"ChainAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"removeChainSelector\",\"type\":\"uint64\"}],\"name\":\"ChainRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"countIncrBeforeFunding\",\"type\":\"uint8\"}],\"name\":\"CountIncrBeforeFundingSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"oldFeeToken\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newFeeToken\",\"type\":\"address\"}],\"name\":\"FeeTokenUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"Funded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"tokenReceiver\",\"type\":\"address\"}],\"name\":\"MessageAbandoned\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"reason\",\"type\":\"bytes\"}],\"name\":\"MessageFailed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"}],\"name\":\"MessageRecovered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"}],\"name\":\"MessageSent\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"}],\"name\":\"MessageSucceeded\",\"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\":\"uint256\",\"name\":\"pingPongCount\",\"type\":\"uint256\"}],\"name\":\"Ping\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"pingPongCount\",\"type\":\"uint256\"}],\"name\":\"Pong\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokensWithdrawnByOwner\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"abandonFailedMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"acceptOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"chainSelector\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"allowed\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"recipient\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"extraArgsBytes\",\"type\":\"bytes\"}],\"internalType\":\"structCCIPBase.ChainUpdate[]\",\"name\":\"chains\",\"type\":\"tuple[]\"}],\"name\":\"applyChainUpdates\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"sourceChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"sender\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"structClient.EVMTokenAmount[]\",\"name\":\"destTokenAmounts\",\"type\":\"tuple[]\"}],\"internalType\":\"structClient.Any2EVMMessage\",\"name\":\"message\",\"type\":\"tuple\"}],\"name\":\"ccipReceive\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"destChainSelector\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"structClient.EVMTokenAmount[]\",\"name\":\"tokenAmounts\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"ccipSend\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"pingPongCount\",\"type\":\"uint256\"}],\"name\":\"fundPingPong\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getCountIncrBeforeFunding\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getCounterpartAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getCounterpartChainSelector\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"}],\"name\":\"getMessageContents\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"sourceChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"sender\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"structClient.EVMTokenAmount[]\",\"name\":\"destTokenAmounts\",\"type\":\"tuple[]\"}],\"internalType\":\"structClient.Any2EVMMessage\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"}],\"name\":\"getMessageStatus\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRouter\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"sourceChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"senderAddr\",\"type\":\"bytes\"}],\"name\":\"isApprovedSender\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isPaused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"sourceChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"sender\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"structClient.EVMTokenAmount[]\",\"name\":\"destTokenAmounts\",\"type\":\"tuple[]\"}],\"internalType\":\"structClient.Any2EVMMessage\",\"name\":\"message\",\"type\":\"tuple\"}],\"name\":\"processMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"}],\"name\":\"retryFailedMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"destChainSelector\",\"type\":\"uint64\"}],\"name\":\"s_chainConfigs\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"recipient\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"extraArgsBytes\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"s_feeToken\",\"outputs\":[{\"internalType\":\"contractIERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"countIncrBeforeFunding\",\"type\":\"uint8\"}],\"name\":\"setCountIncrBeforeFunding\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"counterpartChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"counterpartAddress\",\"type\":\"address\"}],\"name\":\"setCounterpart\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"counterpartAddress\",\"type\":\"address\"}],\"name\":\"setCounterpartAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"counterpartChainSelector\",\"type\":\"uint64\"}],\"name\":\"setCounterpartChainSelector\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"pause\",\"type\":\"bool\"}],\"name\":\"setPaused\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"startPingPong\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"typeAndVersion\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"destChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"sender\",\"type\":\"bytes\"}],\"internalType\":\"structCCIPBase.ApprovedSenderUpdate[]\",\"name\":\"adds\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"uint64\",\"name\":\"destChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"sender\",\"type\":\"bytes\"}],\"internalType\":\"structCCIPBase.ApprovedSenderUpdate[]\",\"name\":\"removes\",\"type\":\"tuple[]\"}],\"name\":\"updateApprovedSenders\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"updateFeeToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newRouter\",\"type\":\"address\"}],\"name\":\"updateRouter\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"addresspayable\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdrawNativeToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdrawTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}]", - Bin: "0x60806040523480156200001157600080fd5b50604051620050f1380380620050f18339810160408190526200003491620005eb565b8282818181803380600081620000915760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f7420736574206f776e657220746f207a65726f000000000000000060448201526064015b60405180910390fd5b600080546001600160a01b0319166001600160a01b0384811691909117909155811615620000c457620000c48162000163565b5050506001600160a01b038116620000ef576040516342bcdf7f60e11b815260040160405180910390fd5b600280546001600160a01b039283166001600160a01b031991821681179092556008805493861693909116831790556200012d92506000196200020e565b5050505080600262000140919062000644565b600960156101000a81548160ff021916908360ff16021790555050505062000734565b336001600160a01b03821603620001bd5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c66000000000000000000604482015260640162000088565b600180546001600160a01b0319166001600160a01b0383811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b8015806200028c5750604051636eb1769f60e11b81523060048201526001600160a01b03838116602483015284169063dd62ed3e90604401602060405180830381865afa15801562000264573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200028a919062000676565b155b620003005760405162461bcd60e51b815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527f20746f206e6f6e2d7a65726f20616c6c6f77616e636500000000000000000000606482015260840162000088565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b0390811663095ea7b360e01b17909152620003589185916200035d16565b505050565b6040805180820190915260208082527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656490820152600090620003ac906001600160a01b0385169084906200042e565b805190915015620003585780806020019051810190620003cd919062000690565b620003585760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840162000088565b60606200043f848460008562000447565b949350505050565b606082471015620004aa5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b606482015260840162000088565b600080866001600160a01b03168587604051620004c89190620006e1565b60006040518083038185875af1925050503d806000811462000507576040519150601f19603f3d011682016040523d82523d6000602084013e6200050c565b606091505b50909250905062000520878383876200052b565b979650505050505050565b606083156200059f57825160000362000597576001600160a01b0385163b620005975760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640162000088565b50816200043f565b6200043f8383815115620005b65781518083602001fd5b8060405162461bcd60e51b8152600401620000889190620006ff565b6001600160a01b0381168114620005e857600080fd5b50565b6000806000606084860312156200060157600080fd5b83516200060e81620005d2565b60208501519093506200062181620005d2565b604085015190925060ff811681146200063957600080fd5b809150509250925092565b60ff81811683821602908116908181146200066f57634e487b7160e01b600052601160045260246000fd5b5092915050565b6000602082840312156200068957600080fd5b5051919050565b600060208284031215620006a357600080fd5b81518015158114620006b457600080fd5b9392505050565b60005b83811015620006d8578181015183820152602001620006be565b50506000910152565b60008251620006f5818460208701620006bb565b9190910192915050565b602081526000825180602084015262000720816040850160208701620006bb565b601f01601f19169190910160400192915050565b6149ad80620007446000396000f3fe6080604052600436106101e75760003560e01c80638f491cba11610102578063c89245d511610095578063e89b448511610064578063e89b44851461066e578063ef686d8e14610681578063f2fde38b146106a1578063ff2deec3146106c157600080fd5b8063c89245d5146105d0578063cf6730f8146105f0578063e4ca875414610610578063e6c725f51461063057600080fd5b8063b187bd26116100d1578063b187bd2614610515578063b5a1101114610545578063bee518a414610565578063c851cc32146105b057600080fd5b80638f491cba1461048a5780639d2aede5146104aa5780639fe74e26146104ca578063b0f479a1146104ea57600080fd5b8063536c6bfa1161017a57806379ba50971161014957806379ba50971461040a5780638462a2b91461041f57806385572ffb1461043f5780638da5cb5b1461045f57600080fd5b8063536c6bfa1461037d5780635e35359e1461039d5780636939cd97146103bd5780636d62d633146103ea57600080fd5b80632874d8bf116101b65780632874d8bf146102c05780632b6e5d63146102d557806335f170ef146103215780635075a9d41461034f57600080fd5b80630e958d6b146101f357806316c38b3c14610228578063181f5a771461024a5780631892b906146102a057600080fd5b366101ee57005b600080fd5b3480156101ff57600080fd5b5061021361020e366004613891565b6106ee565b60405190151581526020015b60405180910390f35b34801561023457600080fd5b50610248610243366004613924565b610739565b005b34801561025657600080fd5b506102936040518060400160405280601881526020017f53656c6646756e64656450696e67506f6e6720312e322e30000000000000000081525081565b60405161021f91906139af565b3480156102ac57600080fd5b506102486102bb3660046139c2565b61078b565b3480156102cc57600080fd5b506102486107e6565b3480156102e157600080fd5b5060095473ffffffffffffffffffffffffffffffffffffffff165b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161021f565b34801561032d57600080fd5b5061034161033c3660046139c2565b610822565b60405161021f9291906139df565b34801561035b57600080fd5b5061036f61036a366004613a0d565b61094e565b60405190815260200161021f565b34801561038957600080fd5b50610248610398366004613a48565b610961565b3480156103a957600080fd5b506102486103b8366004613a74565b6109c5565b3480156103c957600080fd5b506103dd6103d8366004613a0d565b610a5a565b60405161021f9190613b12565b3480156103f657600080fd5b50610248610405366004613ba6565b610c65565b34801561041657600080fd5b50610248610f7f565b34801561042b57600080fd5b5061024861043a366004613c22565b61107c565b34801561044b57600080fd5b5061024861045a366004613c8e565b6113bd565b34801561046b57600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff166102fc565b34801561049657600080fd5b506102486104a5366004613a0d565b6115c6565b3480156104b657600080fd5b506102486104c5366004613cc9565b6117a1565b3480156104d657600080fd5b506102486104e5366004613ce6565b611866565b3480156104f657600080fd5b5060025473ffffffffffffffffffffffffffffffffffffffff166102fc565b34801561052157600080fd5b5060095474010000000000000000000000000000000000000000900460ff16610213565b34801561055157600080fd5b50610248610560366004613d28565b611bf7565b34801561057157600080fd5b5060085474010000000000000000000000000000000000000000900467ffffffffffffffff1660405167ffffffffffffffff909116815260200161021f565b3480156105bc57600080fd5b506102486105cb366004613cc9565b611d9d565b3480156105dc57600080fd5b506102486105eb366004613cc9565b611e69565b3480156105fc57600080fd5b5061024861060b366004613c8e565b611fd3565b34801561061c57600080fd5b5061024861062b366004613a0d565b6121e8565b34801561063c57600080fd5b506009547501000000000000000000000000000000000000000000900460ff1660405160ff909116815260200161021f565b61036f61067c366004613e8b565b612452565b34801561068d57600080fd5b5061024861069c366004613f98565b6129fc565b3480156106ad57600080fd5b506102486106bc366004613cc9565b612a85565b3480156106cd57600080fd5b506008546102fc9073ffffffffffffffffffffffffffffffffffffffff1681565b67ffffffffffffffff8316600090815260036020526040808220905160029091019061071d9085908590613fbb565b9081526040519081900360200190205460ff1690509392505050565b610741612a96565b6009805491151574010000000000000000000000000000000000000000027fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff909216919091179055565b610793612a96565b6008805467ffffffffffffffff90921674010000000000000000000000000000000000000000027fffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffff909216919091179055565b6107ee612a96565b600980547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1690556108206001612b17565b565b60036020526000908152604090208054819061083d90613fcb565b80601f016020809104026020016040519081016040528092919081815260200182805461086990613fcb565b80156108b65780601f1061088b576101008083540402835291602001916108b6565b820191906000526020600020905b81548152906001019060200180831161089957829003601f168201915b5050505050908060010180546108cb90613fcb565b80601f01602080910402602001604051908101604052809291908181526020018280546108f790613fcb565b80156109445780601f1061091957610100808354040283529160200191610944565b820191906000526020600020905b81548152906001019060200180831161092757829003601f168201915b5050505050905082565b600061095b600583612d53565b92915050565b610969612a96565b6109738282612d66565b60405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907f6832d9be2410a86571981e1e60fd4c1f9ea2a1034d6102a2b7d6c5e480adf02e9060200160405180910390a35050565b6109cd612a96565b6109ee73ffffffffffffffffffffffffffffffffffffffff84168383612ec0565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f6832d9be2410a86571981e1e60fd4c1f9ea2a1034d6102a2b7d6c5e480adf02e83604051610a4d91815260200190565b60405180910390a3505050565b6040805160a08082018352600080835260208084018290526060848601819052808501819052608085015285825260048152908490208451928301855280548352600181015467ffffffffffffffff1691830191909152600281018054939492939192840191610ac990613fcb565b80601f0160208091040260200160405190810160405280929190818152602001828054610af590613fcb565b8015610b425780601f10610b1757610100808354040283529160200191610b42565b820191906000526020600020905b815481529060010190602001808311610b2557829003601f168201915b50505050508152602001600382018054610b5b90613fcb565b80601f0160208091040260200160405190810160405280929190818152602001828054610b8790613fcb565b8015610bd45780601f10610ba957610100808354040283529160200191610bd4565b820191906000526020600020905b815481529060010190602001808311610bb757829003601f168201915b5050505050815260200160048201805480602002602001604051908101604052809291908181526020016000905b82821015610c575760008481526020908190206040805180820190915260028502909101805473ffffffffffffffffffffffffffffffffffffffff168252600190810154828401529083529092019101610c02565b505050915250909392505050565b610c6d612a96565b6001610c7a600584612d53565b14610cb9576040517fb6e78260000000000000000000000000000000000000000000000000000000008152600481018390526024015b60405180910390fd5b610cc98260025b60059190612f94565b506000828152600460209081526040808320815160a08101835281548152600182015467ffffffffffffffff16938101939093526002810180549192840191610d1190613fcb565b80601f0160208091040260200160405190810160405280929190818152602001828054610d3d90613fcb565b8015610d8a5780601f10610d5f57610100808354040283529160200191610d8a565b820191906000526020600020905b815481529060010190602001808311610d6d57829003601f168201915b50505050508152602001600382018054610da390613fcb565b80601f0160208091040260200160405190810160405280929190818152602001828054610dcf90613fcb565b8015610e1c5780601f10610df157610100808354040283529160200191610e1c565b820191906000526020600020905b815481529060010190602001808311610dff57829003601f168201915b5050505050815260200160048201805480602002602001604051908101604052809291908181526020016000905b82821015610e9f5760008481526020908190206040805180820190915260028502909101805473ffffffffffffffffffffffffffffffffffffffff168252600190810154828401529083529092019101610e4a565b5050505081525050905060005b816080015151811015610f2e57610f268383608001518381518110610ed357610ed361401e565b60200260200101516020015184608001518481518110610ef557610ef561401e565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff16612ec09092919063ffffffff16565b600101610eac565b5060405173ffffffffffffffffffffffffffffffffffffffff8316815283907fd5038100bd3dc9631d3c3f4f61a3e53e9d466f40c47af9897292c7b35e32a9579060200160405180910390a2505050565b60015473ffffffffffffffffffffffffffffffffffffffff163314611000576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4d7573742062652070726f706f736564206f776e6572000000000000000000006044820152606401610cb0565b60008054337fffffffffffffffffffffffff00000000000000000000000000000000000000008083168217845560018054909116905560405173ffffffffffffffffffffffffffffffffffffffff90921692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a350565b611084612a96565b60005b8181101561121757600360008484848181106110a5576110a561401e565b90506020028101906110b7919061404d565b6110c59060208101906139c2565b67ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206002018383838181106110fc576110fc61401e565b905060200281019061110e919061404d565b61111c90602081019061408b565b60405161112a929190613fbb565b90815260405190819003602001902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690558282828181106111715761117161401e565b9050602002810190611183919061404d565b61119190602081019061408b565b60405161119f929190613fbb565b60405180910390208383838181106111b9576111b961401e565b90506020028101906111cb919061404d565b6111d99060208101906139c2565b67ffffffffffffffff167f021290bab0d93f4d9a243bd430e45dd4bc8238451e9abbba6fab4463677dfce960405160405180910390a3600101611087565b5060005b838110156113b65760016003600087878581811061123b5761123b61401e565b905060200281019061124d919061404d565b61125b9060208101906139c2565b67ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206002018686848181106112925761129261401e565b90506020028101906112a4919061404d565b6112b290602081019061408b565b6040516112c0929190613fbb565b90815260405190819003602001902080549115157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff009092169190911790558484828181106113105761131061401e565b9050602002810190611322919061404d565b61133090602081019061408b565b60405161133e929190613fbb565b60405180910390208585838181106113585761135861401e565b905060200281019061136a919061404d565b6113789060208101906139c2565b67ffffffffffffffff167f72d9f73bb7cb11065e15df29d61e803a0eba356d509a7025a6f51ebdea07f9e760405160405180910390a360010161121b565b5050505050565b60025473ffffffffffffffffffffffffffffffffffffffff163314611410576040517fd7f73334000000000000000000000000000000000000000000000000000000008152336004820152602401610cb0565b61142060408201602083016139c2565b67ffffffffffffffff811660009081526003602052604090208054819061144690613fcb565b905060000361148d576040517fd79f2ea400000000000000000000000000000000000000000000000000000000815267ffffffffffffffff83166004820152602401610cb0565b6040517fcf6730f8000000000000000000000000000000000000000000000000000000008152309063cf6730f8906114c99086906004016141f2565b600060405180830381600087803b1580156114e357600080fd5b505af19250505080156114f4575060015b611594573d808015611522576040519150601f19603f3d011682016040523d82523d6000602084013e611527565b606091505b5061153484356001610cc0565b5083356000908152600460205260409020849061155182826145c4565b50506040518435907f55bc02a9ef6f146737edeeb425738006f67f077e7138de3bf84a15bde1a5b56f906115869084906139af565b60405180910390a250505050565b6040518335907fdf6958669026659bac75ba986685e11a7d271284989f565f2802522663e9a70f90600090a25b505050565b6009547501000000000000000000000000000000000000000000900460ff16158061160e57506009547501000000000000000000000000000000000000000000900460ff1681105b156116165750565b600954600190611642907501000000000000000000000000000000000000000000900460ff16836146be565b1161179e5760025473ffffffffffffffffffffffffffffffffffffffff166008546040517fa8d87a3b0000000000000000000000000000000000000000000000000000000081527401000000000000000000000000000000000000000090910467ffffffffffffffff16600482015273ffffffffffffffffffffffffffffffffffffffff919091169063a8d87a3b90602401602060405180830381865afa1580156116f1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061171591906146f9565b73ffffffffffffffffffffffffffffffffffffffff1663eff7cc486040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561175c57600080fd5b505af1158015611770573d6000803e3d6000fd5b50506040517f302777af5d26fab9dd5120c5f1307c65193ebc51daf33244ada4365fab10602c925060009150a15b50565b6117a9612a96565b600980547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff831690811790915560408051602081019290925201604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001815291815260085474010000000000000000000000000000000000000000900467ffffffffffffffff166000908152600360205220906118629082614716565b5050565b61186e612a96565b60005b818110156115c15782828281811061188b5761188b61401e565b905060200281019061189d9190614830565b6118ae906040810190602001613924565b61197a57600360008484848181106118c8576118c861401e565b90506020028101906118da9190614830565b6118e89060208101906139c2565b67ffffffffffffffff1681526020810191909152604001600090812061190d9161382d565b82828281811061191f5761191f61401e565b90506020028101906119319190614830565b61193f9060208101906139c2565b67ffffffffffffffff167f5204aec90a3c794d8e90fded8b46ae9c7c552803e7e832e0c1d358396d85991660405160405180910390a2611bef565b82828281811061198c5761198c61401e565b905060200281019061199e9190614830565b6119ac90604081019061408b565b90506000036119e7576040517f8579befe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600360008585858181106119ff576119ff61401e565b9050602002810190611a119190614830565b611a1f9060208101906139c2565b67ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000209050838383818110611a5557611a5561401e565b9050602002810190611a679190614830565b611a7590604081019061408b565b8291611a82919083614348565b50838383818110611a9557611a9561401e565b9050602002810190611aa79190614830565b611ab590606081019061408b565b159050611b0057838383818110611ace57611ace61401e565b9050602002810190611ae09190614830565b611aee90606081019061408b565b6001830191611afe919083614348565b505b838383818110611b1257611b1261401e565b9050602002810190611b249190614830565b611b3290604081019061408b565b604051611b40929190613fbb565b6040518091039020848484818110611b5a57611b5a61401e565b9050602002810190611b6c9190614830565b611b7a9060208101906139c2565b67ffffffffffffffff167f1ced5bcae649ed29cebfa0010298ad6794bf3822e8cb754a6eee5353a9a87212868686818110611bb757611bb761401e565b9050602002810190611bc99190614830565b611bd790606081019061408b565b604051611be5929190614864565b60405180910390a3505b600101611871565b611bff612a96565b600880547fffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000067ffffffffffffffff851690810291909117909155600980547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff841690811790915560009182526003602090815260409283902083519182019290925260019260029092019101604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052611cf091614878565b908152604080516020928190038301812080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169415159490941790935573ffffffffffffffffffffffffffffffffffffffff84169183019190915201604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291815267ffffffffffffffff84166000908152600360205220906115c19082614716565b611da5612a96565b73ffffffffffffffffffffffffffffffffffffffff8116611df2576040517f8579befe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f3672b589036f39ac008505b790fcb05d484d70b65680ec64c089a3c173fdc4c890600090a35050565b611e71612a96565b60085473ffffffffffffffffffffffffffffffffffffffff1615611ed257611ed2611eb160025473ffffffffffffffffffffffffffffffffffffffff1690565b60085473ffffffffffffffffffffffffffffffffffffffff16906000612fa9565b6008805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff000000000000000000000000000000000000000083168117909355169015611f7f57611f7f611f3f60025473ffffffffffffffffffffffffffffffffffffffff1690565b60085473ffffffffffffffffffffffffffffffffffffffff16907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61312b565b6040805173ffffffffffffffffffffffffffffffffffffffff8084168252841660208201527f91a03e1d689caf891fe531c01e290f7b718f9c6a3af6726d6d837d2b7bd82e67910160405180910390a15050565b33301461200c576040517f14d4a4e800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61201c60408201602083016139c2565b612029604083018361408b565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525067ffffffffffffffff86168152600360205260409020805490935061208092509050613fcb565b159050806120d65750600360008367ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020600201816040516120c19190614878565b9081526040519081900360200190205460ff16155b1561210f57806040517f5075bb38000000000000000000000000000000000000000000000000000000008152600401610cb091906139af565b61211f60408401602085016139c2565b67ffffffffffffffff811660009081526003602052604090208054819061214590613fcb565b905060000361218c576040517fd79f2ea400000000000000000000000000000000000000000000000000000000815267ffffffffffffffff83166004820152602401610cb0565b600061219b606087018761408b565b8101906121a89190613a0d565b60095490915074010000000000000000000000000000000000000000900460ff166121e0576121e06121db82600161488a565b612b17565b505050505050565b60016121f5600583612d53565b1461222f576040517fb6e7826000000000000000000000000000000000000000000000000000000000815260048101829052602401610cb0565b61223a816000610cc0565b506000818152600460209081526040808320815160a08101835281548152600182015467ffffffffffffffff1693810193909352600281018054919284019161228290613fcb565b80601f01602080910402602001604051908101604052809291908181526020018280546122ae90613fcb565b80156122fb5780601f106122d0576101008083540402835291602001916122fb565b820191906000526020600020905b8154815290600101906020018083116122de57829003601f168201915b5050505050815260200160038201805461231490613fcb565b80601f016020809104026020016040519081016040528092919081815260200182805461234090613fcb565b801561238d5780601f106123625761010080835404028352916020019161238d565b820191906000526020600020905b81548152906001019060200180831161237057829003601f168201915b5050505050815260200160048201805480602002602001604051908101604052809291908181526020016000905b828210156124105760008481526020908190206040805180820190915260028502909101805473ffffffffffffffffffffffffffffffffffffffff1682526001908101548284015290835290920191016123bb565b505050508152505090506124238161322f565b60405182907fef3bf8c64bc480286c4f3503b870ceb23e648d2d902e31fb7bb46680da6de8ad90600090a25050565b67ffffffffffffffff831660009081526003602052604081208054859190819061247b90613fcb565b90506000036124c2576040517fd79f2ea400000000000000000000000000000000000000000000000000000000815267ffffffffffffffff83166004820152602401610cb0565b6040805160a08101825267ffffffffffffffff88166000908152600360205291822080548291906124f290613fcb565b80601f016020809104026020016040519081016040528092919081815260200182805461251e90613fcb565b801561256b5780601f106125405761010080835404028352916020019161256b565b820191906000526020600020905b81548152906001019060200180831161254e57829003601f168201915b5050509183525050602080820188905260408083018a905260085473ffffffffffffffffffffffffffffffffffffffff16606084015267ffffffffffffffff8b1660009081526003909252902060010180546080909201916125cc90613fcb565b80601f01602080910402602001604051908101604052809291908181526020018280546125f890613fcb565b80156126455780601f1061261a57610100808354040283529160200191612645565b820191906000526020600020905b81548152906001019060200180831161262857829003601f168201915b5050505050815250905060005b86518110156127a2576126c233308984815181106126725761267261401e565b6020026020010151602001518a85815181106126905761269061401e565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff166132a1909392919063ffffffff16565b600854875173ffffffffffffffffffffffffffffffffffffffff909116908890839081106126f2576126f261401e565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff161461279a57600254875161279a9173ffffffffffffffffffffffffffffffffffffffff169089908490811061274b5761274b61401e565b6020026020010151602001518984815181106127695761276961401e565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff16612fa99092919063ffffffff16565b600101612652565b506002546040517f20487ded00000000000000000000000000000000000000000000000000000000815260009173ffffffffffffffffffffffffffffffffffffffff16906320487ded906127fc908b90869060040161489d565b602060405180830381865afa158015612819573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061283d919061496a565b60085490915073ffffffffffffffffffffffffffffffffffffffff16158015906128f657506008546040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152829173ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa1580156128d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128f4919061496a565b105b15612920576008546129209073ffffffffffffffffffffffffffffffffffffffff163330846132a1565b60025460085473ffffffffffffffffffffffffffffffffffffffff918216916396f4e9f9911615612952576000612954565b825b8a856040518463ffffffff1660e01b815260040161297392919061489d565b60206040518083038185885af1158015612991573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906129b6919061496a565b94507f54791b38f3859327992a1ca0590ad3c0f08feba98d1a4f56ab0dca74d203392a856040516129e991815260200190565b60405180910390a1505050509392505050565b612a04612a96565b600980547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff16750100000000000000000000000000000000000000000060ff8416908102919091179091556040519081527f4768dbf8645b24c54f2887651545d24f748c0d0d1d4c689eb810fb19f0befcf39060200160405180910390a150565b612a8d612a96565b61179e816132ff565b60005473ffffffffffffffffffffffffffffffffffffffff163314610820576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4f6e6c792063616c6c61626c65206279206f776e6572000000000000000000006044820152606401610cb0565b80600116600103612b5a576040518181527f48257dc961b6f792c2b78a080dacfed693b660960a702de21cee364e20270e2f9060200160405180910390a1612b8e565b6040518181527f58b69f57828e6962d216502094c54f6562f3bf082ba758966c3454f9e37b15259060200160405180910390a15b612b97816115c6565b6040805160a0810190915260095473ffffffffffffffffffffffffffffffffffffffff1660c08201526000908060e08101604051602081830303815290604052815260200183604051602001612bef91815260200190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905281526020016000604051908082528060200260200182016040528015612c6957816020015b6040805180820190915260008082526020820152815260200190600190039081612c425790505b50815260085473ffffffffffffffffffffffffffffffffffffffff1660208083019190915260408051918201815260008252909101529050612cc060025473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff166396f4e9f9600860149054906101000a900467ffffffffffffffff16836040518363ffffffff1660e01b8152600401612d1092919061489d565b6020604051808303816000875af1158015612d2f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115c1919061496a565b6000612d5f83836133f4565b9392505050565b80471015612dd0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610cb0565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114612e2a576040519150601f19603f3d011682016040523d82523d6000602084013e612e2f565b606091505b50509050806115c1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610cb0565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526115c19084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915261347e565b6000612fa184848461358a565b949350505050565b80158061304957506040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff838116602483015284169063dd62ed3e90604401602060405180830381865afa158015613023573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613047919061496a565b155b6130d5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527f20746f206e6f6e2d7a65726f20616c6c6f77616e6365000000000000000000006064820152608401610cb0565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526115c19084907f095ea7b30000000000000000000000000000000000000000000000000000000090606401612f12565b6040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff8381166024830152600091839186169063dd62ed3e90604401602060405180830381865afa1580156131a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131c6919061496a565b6131d0919061488a565b60405173ffffffffffffffffffffffffffffffffffffffff85166024820152604481018290529091506132299085907f095ea7b30000000000000000000000000000000000000000000000000000000090606401612f12565b50505050565b613237612a96565b6040517fcf6730f8000000000000000000000000000000000000000000000000000000008152309063cf6730f890613273908490600401613b12565b600060405180830381600087803b15801561328d57600080fd5b505af11580156113b6573d6000803e3d6000fd5b60405173ffffffffffffffffffffffffffffffffffffffff808516602483015283166044820152606481018290526132299085907f23b872dd0000000000000000000000000000000000000000000000000000000090608401612f12565b3373ffffffffffffffffffffffffffffffffffffffff82160361337e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c660000000000000000006044820152606401610cb0565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b600081815260028301602052604081205480151580613418575061341884846135a7565b612d5f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f456e756d657261626c654d61703a206e6f6e6578697374656e74206b657900006044820152606401610cb0565b60006134e0826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166135b39092919063ffffffff16565b8051909150156115c157808060200190518101906134fe9190614983565b6115c1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610cb0565b60008281526002840160205260408120829055612fa184846135c2565b6000612d5f83836135ce565b6060612fa184846000856135e6565b6000612d5f83836136ff565b60008181526001830160205260408120541515612d5f565b606082471015613678576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610cb0565b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516136a19190614878565b60006040518083038185875af1925050503d80600081146136de576040519150601f19603f3d011682016040523d82523d6000602084013e6136e3565b606091505b50915091506136f48783838761374e565b979650505050505050565b60008181526001830160205260408120546137465750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561095b565b50600061095b565b606083156137e45782516000036137dd5773ffffffffffffffffffffffffffffffffffffffff85163b6137dd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610cb0565b5081612fa1565b612fa183838151156137f95781518083602001fd5b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cb091906139af565b50805461383990613fcb565b6000825580601f10613849575050565b601f01602090049060005260206000209081019061179e91905b808211156138775760008155600101613863565b5090565b67ffffffffffffffff8116811461179e57600080fd5b6000806000604084860312156138a657600080fd5b83356138b18161387b565b9250602084013567ffffffffffffffff808211156138ce57600080fd5b818601915086601f8301126138e257600080fd5b8135818111156138f157600080fd5b87602082850101111561390357600080fd5b6020830194508093505050509250925092565b801515811461179e57600080fd5b60006020828403121561393657600080fd5b8135612d5f81613916565b60005b8381101561395c578181015183820152602001613944565b50506000910152565b6000815180845261397d816020860160208601613941565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000612d5f6020830184613965565b6000602082840312156139d457600080fd5b8135612d5f8161387b565b6040815260006139f26040830185613965565b8281036020840152613a048185613965565b95945050505050565b600060208284031215613a1f57600080fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff8116811461179e57600080fd5b60008060408385031215613a5b57600080fd5b8235613a6681613a26565b946020939093013593505050565b600080600060608486031215613a8957600080fd5b8335613a9481613a26565b92506020840135613aa481613a26565b929592945050506040919091013590565b60008151808452602080850194506020840160005b83811015613b07578151805173ffffffffffffffffffffffffffffffffffffffff1688528301518388015260409096019590820190600101613aca565b509495945050505050565b602081528151602082015267ffffffffffffffff60208301511660408201526000604083015160a06060840152613b4c60c0840182613965565b905060608401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe080858403016080860152613b888383613965565b925060808601519150808584030160a086015250613a048282613ab5565b60008060408385031215613bb957600080fd5b823591506020830135613bcb81613a26565b809150509250929050565b60008083601f840112613be857600080fd5b50813567ffffffffffffffff811115613c0057600080fd5b6020830191508360208260051b8501011115613c1b57600080fd5b9250929050565b60008060008060408587031215613c3857600080fd5b843567ffffffffffffffff80821115613c5057600080fd5b613c5c88838901613bd6565b90965094506020870135915080821115613c7557600080fd5b50613c8287828801613bd6565b95989497509550505050565b600060208284031215613ca057600080fd5b813567ffffffffffffffff811115613cb757600080fd5b820160a08185031215612d5f57600080fd5b600060208284031215613cdb57600080fd5b8135612d5f81613a26565b60008060208385031215613cf957600080fd5b823567ffffffffffffffff811115613d1057600080fd5b613d1c85828601613bd6565b90969095509350505050565b60008060408385031215613d3b57600080fd5b8235613d468161387b565b91506020830135613bcb81613a26565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715613da857613da8613d56565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715613df557613df5613d56565b604052919050565b600082601f830112613e0e57600080fd5b813567ffffffffffffffff811115613e2857613e28613d56565b613e5960207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601613dae565b818152846020838601011115613e6e57600080fd5b816020850160208301376000918101602001919091529392505050565b600080600060608486031215613ea057600080fd5b8335613eab8161387b565b925060208481013567ffffffffffffffff80821115613ec957600080fd5b818701915087601f830112613edd57600080fd5b813581811115613eef57613eef613d56565b613efd848260051b01613dae565b81815260069190911b8301840190848101908a831115613f1c57600080fd5b938501935b82851015613f68576040858c031215613f3a5760008081fd5b613f42613d85565b8535613f4d81613a26565b81528587013587820152825260409094019390850190613f21565b965050506040870135925080831115613f8057600080fd5b5050613f8e86828701613dfd565b9150509250925092565b600060208284031215613faa57600080fd5b813560ff81168114612d5f57600080fd5b8183823760009101908152919050565b600181811c90821680613fdf57607f821691505b602082108103614018577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc183360301811261408157600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126140c057600080fd5b83018035915067ffffffffffffffff8211156140db57600080fd5b602001915036819003821315613c1b57600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261412557600080fd5b830160208101925035905067ffffffffffffffff81111561414557600080fd5b803603821315613c1b57600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b8183526000602080850194508260005b85811015613b075781356141c081613a26565b73ffffffffffffffffffffffffffffffffffffffff1687528183013583880152604096870196909101906001016141ad565b60208152813560208201526000602083013561420d8161387b565b67ffffffffffffffff808216604085015261422b60408601866140f0565b925060a0606086015261424260c086018483614154565b92505061425260608601866140f0565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe080878603016080880152614288858385614154565b9450608088013592507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18836030183126142c157600080fd5b602092880192830192359150838211156142da57600080fd5b8160061b36038313156142ec57600080fd5b8685030160a08701526136f484828461419d565b601f8211156115c1576000816000526020600020601f850160051c810160208610156143295750805b601f850160051c820191505b818110156121e057828155600101614335565b67ffffffffffffffff83111561436057614360613d56565b6143748361436e8354613fcb565b83614300565b6000601f8411600181146143c657600085156143905750838201355b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b1c1916600186901b1783556113b6565b6000838152602090207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0861690835b8281101561441557868501358255602094850194600190920191016143f5565b5086821015614450577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88860031b161c19848701351681555b505060018560011b0183555050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b813561449c81613a26565b73ffffffffffffffffffffffffffffffffffffffff81167fffffffffffffffffffffffff000000000000000000000000000000000000000083541617825550602082013560018201555050565b6801000000000000000083111561450257614502613d56565b80548382558084101561458f5760017f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808316831461454357614543614462565b808616861461455457614554614462565b5060008360005260206000208360011b81018760011b820191505b8082101561458a57828255828483015560028201915061456f565b505050505b5060008181526020812083915b858110156121e0576145ae8383614491565b604092909201916002919091019060010161459c565b813581556001810160208301356145da8161387b565b67ffffffffffffffff8082167fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000084541617835561461a604086018661408b565b9350915061462c838360028701614348565b614639606086018661408b565b9350915061464b838360038701614348565b608085013592507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe185360301831261468257600080fd5b91840191823591508082111561469757600080fd5b506020820191508060061b36038213156146b057600080fd5b6132298183600486016144e9565b6000826146f4577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500690565b60006020828403121561470b57600080fd5b8151612d5f81613a26565b815167ffffffffffffffff81111561473057614730613d56565b6147448161473e8454613fcb565b84614300565b602080601f83116001811461479757600084156147615750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b1785556121e0565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b828110156147e4578886015182559484019460019091019084016147c5565b508582101561482057878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8183360301811261408157600080fd5b602081526000612fa1602083018486614154565b60008251614081818460208701613941565b8082018082111561095b5761095b614462565b67ffffffffffffffff83168152604060208201526000825160a060408401526148c960e0840182613965565b905060208401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0808584030160608601526149058383613965565b925060408601519150808584030160808601526149228383613ab5565b925073ffffffffffffffffffffffffffffffffffffffff60608701511660a086015260808601519150808584030160c0860152506149608282613965565b9695505050505050565b60006020828403121561497c57600080fd5b5051919050565b60006020828403121561499557600080fd5b8151612d5f8161391656fea164736f6c6343000818000a", + Bin: "0x60806040523480156200001157600080fd5b50604051620050f5380380620050f58339810160408190526200003491620005eb565b8282818181803380600081620000915760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f7420736574206f776e657220746f207a65726f000000000000000060448201526064015b60405180910390fd5b600080546001600160a01b0319166001600160a01b0384811691909117909155811615620000c457620000c48162000163565b5050506001600160a01b038116620000ef576040516342bcdf7f60e11b815260040160405180910390fd5b600280546001600160a01b039283166001600160a01b031991821681179092556008805493861693909116831790556200012d92506000196200020e565b5050505080600262000140919062000644565b600960156101000a81548160ff021916908360ff16021790555050505062000734565b336001600160a01b03821603620001bd5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c66000000000000000000604482015260640162000088565b600180546001600160a01b0319166001600160a01b0383811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b8015806200028c5750604051636eb1769f60e11b81523060048201526001600160a01b03838116602483015284169063dd62ed3e90604401602060405180830381865afa15801562000264573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200028a919062000676565b155b620003005760405162461bcd60e51b815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527f20746f206e6f6e2d7a65726f20616c6c6f77616e636500000000000000000000606482015260840162000088565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b0390811663095ea7b360e01b17909152620003589185916200035d16565b505050565b6040805180820190915260208082527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656490820152600090620003ac906001600160a01b0385169084906200042e565b805190915015620003585780806020019051810190620003cd919062000690565b620003585760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840162000088565b60606200043f848460008562000447565b949350505050565b606082471015620004aa5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b606482015260840162000088565b600080866001600160a01b03168587604051620004c89190620006e1565b60006040518083038185875af1925050503d806000811462000507576040519150601f19603f3d011682016040523d82523d6000602084013e6200050c565b606091505b50909250905062000520878383876200052b565b979650505050505050565b606083156200059f57825160000362000597576001600160a01b0385163b620005975760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640162000088565b50816200043f565b6200043f8383815115620005b65781518083602001fd5b8060405162461bcd60e51b8152600401620000889190620006ff565b6001600160a01b0381168114620005e857600080fd5b50565b6000806000606084860312156200060157600080fd5b83516200060e81620005d2565b60208501519093506200062181620005d2565b604085015190925060ff811681146200063957600080fd5b809150509250925092565b60ff81811683821602908116908181146200066f57634e487b7160e01b600052601160045260246000fd5b5092915050565b6000602082840312156200068957600080fd5b5051919050565b600060208284031215620006a357600080fd5b81518015158114620006b457600080fd5b9392505050565b60005b83811015620006d8578181015183820152602001620006be565b50506000910152565b60008251620006f5818460208701620006bb565b9190910192915050565b602081526000825180602084015262000720816040850160208701620006bb565b601f01601f19169190910160400192915050565b6149b180620007446000396000f3fe6080604052600436106101e75760003560e01c80638f491cba11610102578063c89245d511610095578063e89b448511610064578063e89b44851461066e578063ef686d8e14610681578063f2fde38b146106a1578063ff2deec3146106c157600080fd5b8063c89245d5146105d0578063cf6730f8146105f0578063e4ca875414610610578063e6c725f51461063057600080fd5b8063b187bd26116100d1578063b187bd2614610515578063b5a1101114610545578063bee518a414610565578063c851cc32146105b057600080fd5b80638f491cba1461048a5780639d2aede5146104aa5780639fe74e26146104ca578063b0f479a1146104ea57600080fd5b8063536c6bfa1161017a57806379ba50971161014957806379ba50971461040a5780638462a2b91461041f57806385572ffb1461043f5780638da5cb5b1461045f57600080fd5b8063536c6bfa1461037d5780635e35359e1461039d5780636939cd97146103bd5780636d62d633146103ea57600080fd5b80632874d8bf116101b65780632874d8bf146102c05780632b6e5d63146102d557806335f170ef146103215780635075a9d41461034f57600080fd5b80630e958d6b146101f357806316c38b3c14610228578063181f5a771461024a5780631892b906146102a057600080fd5b366101ee57005b600080fd5b3480156101ff57600080fd5b5061021361020e366004613895565b6106ee565b60405190151581526020015b60405180910390f35b34801561023457600080fd5b50610248610243366004613928565b610739565b005b34801561025657600080fd5b506102936040518060400160405280601881526020017f53656c6646756e64656450696e67506f6e6720312e322e30000000000000000081525081565b60405161021f91906139b3565b3480156102ac57600080fd5b506102486102bb3660046139c6565b61078b565b3480156102cc57600080fd5b506102486107e6565b3480156102e157600080fd5b5060095473ffffffffffffffffffffffffffffffffffffffff165b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161021f565b34801561032d57600080fd5b5061034161033c3660046139c6565b610822565b60405161021f9291906139e3565b34801561035b57600080fd5b5061036f61036a366004613a11565b61094e565b60405190815260200161021f565b34801561038957600080fd5b50610248610398366004613a4c565b610961565b3480156103a957600080fd5b506102486103b8366004613a78565b6109c5565b3480156103c957600080fd5b506103dd6103d8366004613a11565b610a5a565b60405161021f9190613b16565b3480156103f657600080fd5b50610248610405366004613baa565b610c65565b34801561041657600080fd5b50610248610f7f565b34801561042b57600080fd5b5061024861043a366004613c26565b61107c565b34801561044b57600080fd5b5061024861045a366004613c92565b6113bd565b34801561046b57600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff166102fc565b34801561049657600080fd5b506102486104a5366004613a11565b6115c6565b3480156104b657600080fd5b506102486104c5366004613ccd565b6117a1565b3480156104d657600080fd5b506102486104e5366004613cea565b611866565b3480156104f657600080fd5b5060025473ffffffffffffffffffffffffffffffffffffffff166102fc565b34801561052157600080fd5b5060095474010000000000000000000000000000000000000000900460ff16610213565b34801561055157600080fd5b50610248610560366004613d2c565b611bf7565b34801561057157600080fd5b5060085474010000000000000000000000000000000000000000900467ffffffffffffffff1660405167ffffffffffffffff909116815260200161021f565b3480156105bc57600080fd5b506102486105cb366004613ccd565b611d9d565b3480156105dc57600080fd5b506102486105eb366004613ccd565b611e69565b3480156105fc57600080fd5b5061024861060b366004613c92565b611fd3565b34801561061c57600080fd5b5061024861062b366004613a11565b6121e8565b34801561063c57600080fd5b506009547501000000000000000000000000000000000000000000900460ff1660405160ff909116815260200161021f565b61036f61067c366004613e8f565b612452565b34801561068d57600080fd5b5061024861069c366004613f9c565b612a00565b3480156106ad57600080fd5b506102486106bc366004613ccd565b612a89565b3480156106cd57600080fd5b506008546102fc9073ffffffffffffffffffffffffffffffffffffffff1681565b67ffffffffffffffff8316600090815260036020526040808220905160029091019061071d9085908590613fbf565b9081526040519081900360200190205460ff1690509392505050565b610741612a9a565b6009805491151574010000000000000000000000000000000000000000027fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff909216919091179055565b610793612a9a565b6008805467ffffffffffffffff90921674010000000000000000000000000000000000000000027fffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffff909216919091179055565b6107ee612a9a565b600980547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1690556108206001612b1b565b565b60036020526000908152604090208054819061083d90613fcf565b80601f016020809104026020016040519081016040528092919081815260200182805461086990613fcf565b80156108b65780601f1061088b576101008083540402835291602001916108b6565b820191906000526020600020905b81548152906001019060200180831161089957829003601f168201915b5050505050908060010180546108cb90613fcf565b80601f01602080910402602001604051908101604052809291908181526020018280546108f790613fcf565b80156109445780601f1061091957610100808354040283529160200191610944565b820191906000526020600020905b81548152906001019060200180831161092757829003601f168201915b5050505050905082565b600061095b600583612d57565b92915050565b610969612a9a565b6109738282612d6a565b60405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907f6832d9be2410a86571981e1e60fd4c1f9ea2a1034d6102a2b7d6c5e480adf02e9060200160405180910390a35050565b6109cd612a9a565b6109ee73ffffffffffffffffffffffffffffffffffffffff84168383612ec4565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f6832d9be2410a86571981e1e60fd4c1f9ea2a1034d6102a2b7d6c5e480adf02e83604051610a4d91815260200190565b60405180910390a3505050565b6040805160a08082018352600080835260208084018290526060848601819052808501819052608085015285825260048152908490208451928301855280548352600181015467ffffffffffffffff1691830191909152600281018054939492939192840191610ac990613fcf565b80601f0160208091040260200160405190810160405280929190818152602001828054610af590613fcf565b8015610b425780601f10610b1757610100808354040283529160200191610b42565b820191906000526020600020905b815481529060010190602001808311610b2557829003601f168201915b50505050508152602001600382018054610b5b90613fcf565b80601f0160208091040260200160405190810160405280929190818152602001828054610b8790613fcf565b8015610bd45780601f10610ba957610100808354040283529160200191610bd4565b820191906000526020600020905b815481529060010190602001808311610bb757829003601f168201915b5050505050815260200160048201805480602002602001604051908101604052809291908181526020016000905b82821015610c575760008481526020908190206040805180820190915260028502909101805473ffffffffffffffffffffffffffffffffffffffff168252600190810154828401529083529092019101610c02565b505050915250909392505050565b610c6d612a9a565b6001610c7a600584612d57565b14610cb9576040517fb6e78260000000000000000000000000000000000000000000000000000000008152600481018390526024015b60405180910390fd5b610cc98260025b60059190612f98565b506000828152600460209081526040808320815160a08101835281548152600182015467ffffffffffffffff16938101939093526002810180549192840191610d1190613fcf565b80601f0160208091040260200160405190810160405280929190818152602001828054610d3d90613fcf565b8015610d8a5780601f10610d5f57610100808354040283529160200191610d8a565b820191906000526020600020905b815481529060010190602001808311610d6d57829003601f168201915b50505050508152602001600382018054610da390613fcf565b80601f0160208091040260200160405190810160405280929190818152602001828054610dcf90613fcf565b8015610e1c5780601f10610df157610100808354040283529160200191610e1c565b820191906000526020600020905b815481529060010190602001808311610dff57829003601f168201915b5050505050815260200160048201805480602002602001604051908101604052809291908181526020016000905b82821015610e9f5760008481526020908190206040805180820190915260028502909101805473ffffffffffffffffffffffffffffffffffffffff168252600190810154828401529083529092019101610e4a565b5050505081525050905060005b816080015151811015610f2e57610f268383608001518381518110610ed357610ed3614022565b60200260200101516020015184608001518481518110610ef557610ef5614022565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff16612ec49092919063ffffffff16565b600101610eac565b5060405173ffffffffffffffffffffffffffffffffffffffff8316815283907fd5038100bd3dc9631d3c3f4f61a3e53e9d466f40c47af9897292c7b35e32a9579060200160405180910390a2505050565b60015473ffffffffffffffffffffffffffffffffffffffff163314611000576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4d7573742062652070726f706f736564206f776e6572000000000000000000006044820152606401610cb0565b60008054337fffffffffffffffffffffffff00000000000000000000000000000000000000008083168217845560018054909116905560405173ffffffffffffffffffffffffffffffffffffffff90921692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a350565b611084612a9a565b60005b8181101561121757600360008484848181106110a5576110a5614022565b90506020028101906110b79190614051565b6110c59060208101906139c6565b67ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206002018383838181106110fc576110fc614022565b905060200281019061110e9190614051565b61111c90602081019061408f565b60405161112a929190613fbf565b90815260405190819003602001902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905582828281811061117157611171614022565b90506020028101906111839190614051565b61119190602081019061408f565b60405161119f929190613fbf565b60405180910390208383838181106111b9576111b9614022565b90506020028101906111cb9190614051565b6111d99060208101906139c6565b67ffffffffffffffff167f021290bab0d93f4d9a243bd430e45dd4bc8238451e9abbba6fab4463677dfce960405160405180910390a3600101611087565b5060005b838110156113b65760016003600087878581811061123b5761123b614022565b905060200281019061124d9190614051565b61125b9060208101906139c6565b67ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060020186868481811061129257611292614022565b90506020028101906112a49190614051565b6112b290602081019061408f565b6040516112c0929190613fbf565b90815260405190819003602001902080549115157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0090921691909117905584848281811061131057611310614022565b90506020028101906113229190614051565b61133090602081019061408f565b60405161133e929190613fbf565b604051809103902085858381811061135857611358614022565b905060200281019061136a9190614051565b6113789060208101906139c6565b67ffffffffffffffff167f72d9f73bb7cb11065e15df29d61e803a0eba356d509a7025a6f51ebdea07f9e760405160405180910390a360010161121b565b5050505050565b60025473ffffffffffffffffffffffffffffffffffffffff163314611410576040517fd7f73334000000000000000000000000000000000000000000000000000000008152336004820152602401610cb0565b61142060408201602083016139c6565b67ffffffffffffffff811660009081526003602052604090208054819061144690613fcf565b905060000361148d576040517fd79f2ea400000000000000000000000000000000000000000000000000000000815267ffffffffffffffff83166004820152602401610cb0565b6040517fcf6730f8000000000000000000000000000000000000000000000000000000008152309063cf6730f8906114c99086906004016141f6565b600060405180830381600087803b1580156114e357600080fd5b505af19250505080156114f4575060015b611594573d808015611522576040519150601f19603f3d011682016040523d82523d6000602084013e611527565b606091505b5061153484356001610cc0565b5083356000908152600460205260409020849061155182826145c8565b50506040518435907f55bc02a9ef6f146737edeeb425738006f67f077e7138de3bf84a15bde1a5b56f906115869084906139b3565b60405180910390a250505050565b6040518335907fdf6958669026659bac75ba986685e11a7d271284989f565f2802522663e9a70f90600090a25b505050565b6009547501000000000000000000000000000000000000000000900460ff16158061160e57506009547501000000000000000000000000000000000000000000900460ff1681105b156116165750565b600954600190611642907501000000000000000000000000000000000000000000900460ff16836146c2565b1161179e5760025473ffffffffffffffffffffffffffffffffffffffff166008546040517fa8d87a3b0000000000000000000000000000000000000000000000000000000081527401000000000000000000000000000000000000000090910467ffffffffffffffff16600482015273ffffffffffffffffffffffffffffffffffffffff919091169063a8d87a3b90602401602060405180830381865afa1580156116f1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061171591906146fd565b73ffffffffffffffffffffffffffffffffffffffff1663eff7cc486040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561175c57600080fd5b505af1158015611770573d6000803e3d6000fd5b50506040517f302777af5d26fab9dd5120c5f1307c65193ebc51daf33244ada4365fab10602c925060009150a15b50565b6117a9612a9a565b600980547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff831690811790915560408051602081019290925201604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001815291815260085474010000000000000000000000000000000000000000900467ffffffffffffffff16600090815260036020522090611862908261471a565b5050565b61186e612a9a565b60005b818110156115c15782828281811061188b5761188b614022565b905060200281019061189d9190614834565b6118ae906040810190602001613928565b61197a57600360008484848181106118c8576118c8614022565b90506020028101906118da9190614834565b6118e89060208101906139c6565b67ffffffffffffffff1681526020810191909152604001600090812061190d91613831565b82828281811061191f5761191f614022565b90506020028101906119319190614834565b61193f9060208101906139c6565b67ffffffffffffffff167f5204aec90a3c794d8e90fded8b46ae9c7c552803e7e832e0c1d358396d85991660405160405180910390a2611bef565b82828281811061198c5761198c614022565b905060200281019061199e9190614834565b6119ac90604081019061408f565b90506000036119e7576040517f8579befe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600360008585858181106119ff576119ff614022565b9050602002810190611a119190614834565b611a1f9060208101906139c6565b67ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000209050838383818110611a5557611a55614022565b9050602002810190611a679190614834565b611a7590604081019061408f565b8291611a8291908361434c565b50838383818110611a9557611a95614022565b9050602002810190611aa79190614834565b611ab590606081019061408f565b159050611b0057838383818110611ace57611ace614022565b9050602002810190611ae09190614834565b611aee90606081019061408f565b6001830191611afe91908361434c565b505b838383818110611b1257611b12614022565b9050602002810190611b249190614834565b611b3290604081019061408f565b604051611b40929190613fbf565b6040518091039020848484818110611b5a57611b5a614022565b9050602002810190611b6c9190614834565b611b7a9060208101906139c6565b67ffffffffffffffff167f1ced5bcae649ed29cebfa0010298ad6794bf3822e8cb754a6eee5353a9a87212868686818110611bb757611bb7614022565b9050602002810190611bc99190614834565b611bd790606081019061408f565b604051611be5929190614868565b60405180910390a3505b600101611871565b611bff612a9a565b600880547fffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000067ffffffffffffffff851690810291909117909155600980547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff841690811790915560009182526003602090815260409283902083519182019290925260019260029092019101604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052611cf09161487c565b908152604080516020928190038301812080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169415159490941790935573ffffffffffffffffffffffffffffffffffffffff84169183019190915201604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291815267ffffffffffffffff84166000908152600360205220906115c1908261471a565b611da5612a9a565b73ffffffffffffffffffffffffffffffffffffffff8116611df2576040517f8579befe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f3672b589036f39ac008505b790fcb05d484d70b65680ec64c089a3c173fdc4c890600090a35050565b611e71612a9a565b60085473ffffffffffffffffffffffffffffffffffffffff1615611ed257611ed2611eb160025473ffffffffffffffffffffffffffffffffffffffff1690565b60085473ffffffffffffffffffffffffffffffffffffffff16906000612fad565b6008805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff000000000000000000000000000000000000000083168117909355169015611f7f57611f7f611f3f60025473ffffffffffffffffffffffffffffffffffffffff1690565b60085473ffffffffffffffffffffffffffffffffffffffff16907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61312f565b6040805173ffffffffffffffffffffffffffffffffffffffff8084168252841660208201527f91a03e1d689caf891fe531c01e290f7b718f9c6a3af6726d6d837d2b7bd82e67910160405180910390a15050565b33301461200c576040517f14d4a4e800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61201c60408201602083016139c6565b612029604083018361408f565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525067ffffffffffffffff86168152600360205260409020805490935061208092509050613fcf565b159050806120d65750600360008367ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020600201816040516120c1919061487c565b9081526040519081900360200190205460ff16155b1561210f57806040517f5075bb38000000000000000000000000000000000000000000000000000000008152600401610cb091906139b3565b61211f60408401602085016139c6565b67ffffffffffffffff811660009081526003602052604090208054819061214590613fcf565b905060000361218c576040517fd79f2ea400000000000000000000000000000000000000000000000000000000815267ffffffffffffffff83166004820152602401610cb0565b600061219b606087018761408f565b8101906121a89190613a11565b60095490915074010000000000000000000000000000000000000000900460ff166121e0576121e06121db82600161488e565b612b1b565b505050505050565b60016121f5600583612d57565b1461222f576040517fb6e7826000000000000000000000000000000000000000000000000000000000815260048101829052602401610cb0565b61223a816000610cc0565b506000818152600460209081526040808320815160a08101835281548152600182015467ffffffffffffffff1693810193909352600281018054919284019161228290613fcf565b80601f01602080910402602001604051908101604052809291908181526020018280546122ae90613fcf565b80156122fb5780601f106122d0576101008083540402835291602001916122fb565b820191906000526020600020905b8154815290600101906020018083116122de57829003601f168201915b5050505050815260200160038201805461231490613fcf565b80601f016020809104026020016040519081016040528092919081815260200182805461234090613fcf565b801561238d5780601f106123625761010080835404028352916020019161238d565b820191906000526020600020905b81548152906001019060200180831161237057829003601f168201915b5050505050815260200160048201805480602002602001604051908101604052809291908181526020016000905b828210156124105760008481526020908190206040805180820190915260028502909101805473ffffffffffffffffffffffffffffffffffffffff1682526001908101548284015290835290920191016123bb565b5050505081525050905061242381613233565b60405182907fef3bf8c64bc480286c4f3503b870ceb23e648d2d902e31fb7bb46680da6de8ad90600090a25050565b67ffffffffffffffff831660009081526003602052604081208054859190819061247b90613fcf565b90506000036124c2576040517fd79f2ea400000000000000000000000000000000000000000000000000000000815267ffffffffffffffff83166004820152602401610cb0565b6040805160a08101825267ffffffffffffffff88166000908152600360205291822080548291906124f290613fcf565b80601f016020809104026020016040519081016040528092919081815260200182805461251e90613fcf565b801561256b5780601f106125405761010080835404028352916020019161256b565b820191906000526020600020905b81548152906001019060200180831161254e57829003601f168201915b5050509183525050602080820188905260408083018a905260085473ffffffffffffffffffffffffffffffffffffffff16606084015267ffffffffffffffff8b1660009081526003909252902060010180546080909201916125cc90613fcf565b80601f01602080910402602001604051908101604052809291908181526020018280546125f890613fcf565b80156126455780601f1061261a57610100808354040283529160200191612645565b820191906000526020600020905b81548152906001019060200180831161262857829003601f168201915b5050509190925250506002546040517f20487ded00000000000000000000000000000000000000000000000000000000815291925060009173ffffffffffffffffffffffffffffffffffffffff909116906320487ded906126ac908b9086906004016148a1565b602060405180830381865afa1580156126c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126ed919061496e565b60085490915073ffffffffffffffffffffffffffffffffffffffff16158015906127a657506008546040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152829173ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa158015612780573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127a4919061496e565b105b156127d0576008546127d09073ffffffffffffffffffffffffffffffffffffffff163330846132a5565b60005b87518110156129235761284333308a84815181106127f3576127f3614022565b6020026020010151602001518b858151811061281157612811614022565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff166132a5909392919063ffffffff16565b600854885173ffffffffffffffffffffffffffffffffffffffff9091169089908390811061287357612873614022565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff161461291b57600254885161291b9173ffffffffffffffffffffffffffffffffffffffff16908a90849081106128cc576128cc614022565b6020026020010151602001518a84815181106128ea576128ea614022565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff16612fad9092919063ffffffff16565b6001016127d3565b5060025460085473ffffffffffffffffffffffffffffffffffffffff918216916396f4e9f9911615612956576000612958565b825b8a856040518463ffffffff1660e01b81526004016129779291906148a1565b60206040518083038185885af1158015612995573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906129ba919061496e565b94507f54791b38f3859327992a1ca0590ad3c0f08feba98d1a4f56ab0dca74d203392a856040516129ed91815260200190565b60405180910390a1505050509392505050565b612a08612a9a565b600980547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff16750100000000000000000000000000000000000000000060ff8416908102919091179091556040519081527f4768dbf8645b24c54f2887651545d24f748c0d0d1d4c689eb810fb19f0befcf39060200160405180910390a150565b612a91612a9a565b61179e81613303565b60005473ffffffffffffffffffffffffffffffffffffffff163314610820576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4f6e6c792063616c6c61626c65206279206f776e6572000000000000000000006044820152606401610cb0565b80600116600103612b5e576040518181527f48257dc961b6f792c2b78a080dacfed693b660960a702de21cee364e20270e2f9060200160405180910390a1612b92565b6040518181527f58b69f57828e6962d216502094c54f6562f3bf082ba758966c3454f9e37b15259060200160405180910390a15b612b9b816115c6565b6040805160a0810190915260095473ffffffffffffffffffffffffffffffffffffffff1660c08201526000908060e08101604051602081830303815290604052815260200183604051602001612bf391815260200190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905281526020016000604051908082528060200260200182016040528015612c6d57816020015b6040805180820190915260008082526020820152815260200190600190039081612c465790505b50815260085473ffffffffffffffffffffffffffffffffffffffff1660208083019190915260408051918201815260008252909101529050612cc460025473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff166396f4e9f9600860149054906101000a900467ffffffffffffffff16836040518363ffffffff1660e01b8152600401612d149291906148a1565b6020604051808303816000875af1158015612d33573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115c1919061496e565b6000612d6383836133f8565b9392505050565b80471015612dd4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610cb0565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114612e2e576040519150601f19603f3d011682016040523d82523d6000602084013e612e33565b606091505b50509050806115c1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610cb0565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526115c19084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152613482565b6000612fa584848461358e565b949350505050565b80158061304d57506040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff838116602483015284169063dd62ed3e90604401602060405180830381865afa158015613027573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061304b919061496e565b155b6130d9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527f20746f206e6f6e2d7a65726f20616c6c6f77616e6365000000000000000000006064820152608401610cb0565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526115c19084907f095ea7b30000000000000000000000000000000000000000000000000000000090606401612f16565b6040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff8381166024830152600091839186169063dd62ed3e90604401602060405180830381865afa1580156131a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131ca919061496e565b6131d4919061488e565b60405173ffffffffffffffffffffffffffffffffffffffff851660248201526044810182905290915061322d9085907f095ea7b30000000000000000000000000000000000000000000000000000000090606401612f16565b50505050565b61323b612a9a565b6040517fcf6730f8000000000000000000000000000000000000000000000000000000008152309063cf6730f890613277908490600401613b16565b600060405180830381600087803b15801561329157600080fd5b505af11580156113b6573d6000803e3d6000fd5b60405173ffffffffffffffffffffffffffffffffffffffff8085166024830152831660448201526064810182905261322d9085907f23b872dd0000000000000000000000000000000000000000000000000000000090608401612f16565b3373ffffffffffffffffffffffffffffffffffffffff821603613382576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c660000000000000000006044820152606401610cb0565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b60008181526002830160205260408120548015158061341c575061341c84846135ab565b612d63576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f456e756d657261626c654d61703a206e6f6e6578697374656e74206b657900006044820152606401610cb0565b60006134e4826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166135b79092919063ffffffff16565b8051909150156115c157808060200190518101906135029190614987565b6115c1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610cb0565b60008281526002840160205260408120829055612fa584846135c6565b6000612d6383836135d2565b6060612fa584846000856135ea565b6000612d638383613703565b60008181526001830160205260408120541515612d63565b60608247101561367c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610cb0565b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516136a5919061487c565b60006040518083038185875af1925050503d80600081146136e2576040519150601f19603f3d011682016040523d82523d6000602084013e6136e7565b606091505b50915091506136f887838387613752565b979650505050505050565b600081815260018301602052604081205461374a5750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561095b565b50600061095b565b606083156137e85782516000036137e15773ffffffffffffffffffffffffffffffffffffffff85163b6137e1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610cb0565b5081612fa5565b612fa583838151156137fd5781518083602001fd5b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cb091906139b3565b50805461383d90613fcf565b6000825580601f1061384d575050565b601f01602090049060005260206000209081019061179e91905b8082111561387b5760008155600101613867565b5090565b67ffffffffffffffff8116811461179e57600080fd5b6000806000604084860312156138aa57600080fd5b83356138b58161387f565b9250602084013567ffffffffffffffff808211156138d257600080fd5b818601915086601f8301126138e657600080fd5b8135818111156138f557600080fd5b87602082850101111561390757600080fd5b6020830194508093505050509250925092565b801515811461179e57600080fd5b60006020828403121561393a57600080fd5b8135612d638161391a565b60005b83811015613960578181015183820152602001613948565b50506000910152565b60008151808452613981816020860160208601613945565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000612d636020830184613969565b6000602082840312156139d857600080fd5b8135612d638161387f565b6040815260006139f66040830185613969565b8281036020840152613a088185613969565b95945050505050565b600060208284031215613a2357600080fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff8116811461179e57600080fd5b60008060408385031215613a5f57600080fd5b8235613a6a81613a2a565b946020939093013593505050565b600080600060608486031215613a8d57600080fd5b8335613a9881613a2a565b92506020840135613aa881613a2a565b929592945050506040919091013590565b60008151808452602080850194506020840160005b83811015613b0b578151805173ffffffffffffffffffffffffffffffffffffffff1688528301518388015260409096019590820190600101613ace565b509495945050505050565b602081528151602082015267ffffffffffffffff60208301511660408201526000604083015160a06060840152613b5060c0840182613969565b905060608401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe080858403016080860152613b8c8383613969565b925060808601519150808584030160a086015250613a088282613ab9565b60008060408385031215613bbd57600080fd5b823591506020830135613bcf81613a2a565b809150509250929050565b60008083601f840112613bec57600080fd5b50813567ffffffffffffffff811115613c0457600080fd5b6020830191508360208260051b8501011115613c1f57600080fd5b9250929050565b60008060008060408587031215613c3c57600080fd5b843567ffffffffffffffff80821115613c5457600080fd5b613c6088838901613bda565b90965094506020870135915080821115613c7957600080fd5b50613c8687828801613bda565b95989497509550505050565b600060208284031215613ca457600080fd5b813567ffffffffffffffff811115613cbb57600080fd5b820160a08185031215612d6357600080fd5b600060208284031215613cdf57600080fd5b8135612d6381613a2a565b60008060208385031215613cfd57600080fd5b823567ffffffffffffffff811115613d1457600080fd5b613d2085828601613bda565b90969095509350505050565b60008060408385031215613d3f57600080fd5b8235613d4a8161387f565b91506020830135613bcf81613a2a565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715613dac57613dac613d5a565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715613df957613df9613d5a565b604052919050565b600082601f830112613e1257600080fd5b813567ffffffffffffffff811115613e2c57613e2c613d5a565b613e5d60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601613db2565b818152846020838601011115613e7257600080fd5b816020850160208301376000918101602001919091529392505050565b600080600060608486031215613ea457600080fd5b8335613eaf8161387f565b925060208481013567ffffffffffffffff80821115613ecd57600080fd5b818701915087601f830112613ee157600080fd5b813581811115613ef357613ef3613d5a565b613f01848260051b01613db2565b81815260069190911b8301840190848101908a831115613f2057600080fd5b938501935b82851015613f6c576040858c031215613f3e5760008081fd5b613f46613d89565b8535613f5181613a2a565b81528587013587820152825260409094019390850190613f25565b965050506040870135925080831115613f8457600080fd5b5050613f9286828701613e01565b9150509250925092565b600060208284031215613fae57600080fd5b813560ff81168114612d6357600080fd5b8183823760009101908152919050565b600181811c90821680613fe357607f821691505b60208210810361401c577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc183360301811261408557600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126140c457600080fd5b83018035915067ffffffffffffffff8211156140df57600080fd5b602001915036819003821315613c1f57600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261412957600080fd5b830160208101925035905067ffffffffffffffff81111561414957600080fd5b803603821315613c1f57600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b8183526000602080850194508260005b85811015613b0b5781356141c481613a2a565b73ffffffffffffffffffffffffffffffffffffffff1687528183013583880152604096870196909101906001016141b1565b6020815281356020820152600060208301356142118161387f565b67ffffffffffffffff808216604085015261422f60408601866140f4565b925060a0606086015261424660c086018483614158565b92505061425660608601866140f4565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08087860301608088015261428c858385614158565b9450608088013592507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18836030183126142c557600080fd5b602092880192830192359150838211156142de57600080fd5b8160061b36038313156142f057600080fd5b8685030160a08701526136f88482846141a1565b601f8211156115c1576000816000526020600020601f850160051c8101602086101561432d5750805b601f850160051c820191505b818110156121e057828155600101614339565b67ffffffffffffffff83111561436457614364613d5a565b614378836143728354613fcf565b83614304565b6000601f8411600181146143ca57600085156143945750838201355b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b1c1916600186901b1783556113b6565b6000838152602090207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0861690835b8281101561441957868501358255602094850194600190920191016143f9565b5086821015614454577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88860031b161c19848701351681555b505060018560011b0183555050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b81356144a081613a2a565b73ffffffffffffffffffffffffffffffffffffffff81167fffffffffffffffffffffffff000000000000000000000000000000000000000083541617825550602082013560018201555050565b6801000000000000000083111561450657614506613d5a565b8054838255808410156145935760017f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808316831461454757614547614466565b808616861461455857614558614466565b5060008360005260206000208360011b81018760011b820191505b8082101561458e578282558284830155600282019150614573565b505050505b5060008181526020812083915b858110156121e0576145b28383614495565b60409290920191600291909101906001016145a0565b813581556001810160208301356145de8161387f565b67ffffffffffffffff8082167fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000084541617835561461e604086018661408f565b9350915061463083836002870161434c565b61463d606086018661408f565b9350915061464f83836003870161434c565b608085013592507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe185360301831261468657600080fd5b91840191823591508082111561469b57600080fd5b506020820191508060061b36038213156146b457600080fd5b61322d8183600486016144ed565b6000826146f8577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500690565b60006020828403121561470f57600080fd5b8151612d6381613a2a565b815167ffffffffffffffff81111561473457614734613d5a565b614748816147428454613fcf565b84614304565b602080601f83116001811461479b57600084156147655750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b1785556121e0565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b828110156147e8578886015182559484019460019091019084016147c9565b508582101561482457878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8183360301811261408557600080fd5b602081526000612fa5602083018486614158565b60008251614085818460208701613945565b8082018082111561095b5761095b614466565b67ffffffffffffffff83168152604060208201526000825160a060408401526148cd60e0840182613969565b905060208401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0808584030160608601526149098383613969565b925060408601519150808584030160808601526149268383613ab9565b925073ffffffffffffffffffffffffffffffffffffffff60608701511660a086015260808601519150808584030160c0860152506149648282613969565b9695505050505050565b60006020828403121561498057600080fd5b5051919050565b60006020828403121561499957600080fd5b8151612d638161391a56fea164736f6c6343000818000a", } var SelfFundedPingPongABI = SelfFundedPingPongMetaData.ABI 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 7815717d7f..ab34f1f8cf 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 @@ -5,8 +5,8 @@ burn_from_mint_token_pool: ../../../contracts/solc/v0.8.24/BurnFromMintTokenPool burn_mint_token_pool: ../../../contracts/solc/v0.8.24/BurnMintTokenPool/BurnMintTokenPool.abi ../../../contracts/solc/v0.8.24/BurnMintTokenPool/BurnMintTokenPool.bin fee3f82935ce7a26c65e12f19a472a4fccdae62755abdb42d8b0a01f0f06981a burn_mint_token_pool_and_proxy: ../../../contracts/solc/v0.8.24/BurnMintTokenPoolAndProxy/BurnMintTokenPoolAndProxy.abi ../../../contracts/solc/v0.8.24/BurnMintTokenPoolAndProxy/BurnMintTokenPoolAndProxy.bin c7efa00d2be62a97a814730c8e13aa70794ebfdd38a9f3b3c11554a5dfd70478 burn_with_from_mint_token_pool: ../../../contracts/solc/v0.8.24/BurnWithFromMintTokenPool/BurnWithFromMintTokenPool.abi ../../../contracts/solc/v0.8.24/BurnWithFromMintTokenPool/BurnWithFromMintTokenPool.bin a0728e186af74968101135a58a483320ced9ab79b22b1b24ac6994254ee79097 -ccipClient: ../../../contracts/solc/v0.8.24/CCIPClient/CCIPClient.abi ../../../contracts/solc/v0.8.24/CCIPClient/CCIPClient.bin 78bd19051a85a8417f317e257d5280e1421ae4aeee8361740948385eb41e1584 -ccipClientWithACK: ../../../contracts/solc/v0.8.24/CCIPClientWithACK/CCIPClientWithACK.abi ../../../contracts/solc/v0.8.24/CCIPClientWithACK/CCIPClientWithACK.bin 446a05c235e14f263764f126ce06602c7035aab4bb984b204d40c89646cd7b09 +ccipClient: ../../../contracts/solc/v0.8.24/CCIPClient/CCIPClient.abi ../../../contracts/solc/v0.8.24/CCIPClient/CCIPClient.bin 4932475a952db4147b70dab5d4e21c38bd0c7c8af1698bbe85d6759f0e0e3b53 +ccipClientWithACK: ../../../contracts/solc/v0.8.24/CCIPClientWithACK/CCIPClientWithACK.abi ../../../contracts/solc/v0.8.24/CCIPClientWithACK/CCIPClientWithACK.bin cb4576ac3190fd904ead1857cedf53456daf68f733560d165187f3742748d1cd ccipReceiver: ../../../contracts/solc/v0.8.24/CCIPReceiver/CCIPReceiver.abi ../../../contracts/solc/v0.8.24/CCIPReceiver/CCIPReceiver.bin 0d7d496ff6aaf37fcf8db25c708b6977c841650027a2028c864f7a0e17fa7b08 ccipReceiverWithACK: ../../../contracts/solc/v0.8.24/CCIPReceiverWithACK/CCIPReceiverWithACK.abi ../../../contracts/solc/v0.8.24/CCIPReceiverWithACK/CCIPReceiverWithACK.bin e6bfb15f1f320cceb76435f49b43c90bfcfc69b4561c811c4b938a6356a23566 ccipSender: ../../../contracts/solc/v0.8.24/CCIPSender/CCIPSender.abi ../../../contracts/solc/v0.8.24/CCIPSender/CCIPSender.bin e142b529faf36c9dbc55be72947493f235e1d6ac2d76658a2273ac8e53ac4f5e @@ -29,12 +29,12 @@ mock_v3_aggregator_contract: ../../../contracts/solc/v0.8.24/MockV3Aggregator/Mo multi_aggregate_rate_limiter: ../../../contracts/solc/v0.8.24/MultiAggregateRateLimiter/MultiAggregateRateLimiter.abi ../../../contracts/solc/v0.8.24/MultiAggregateRateLimiter/MultiAggregateRateLimiter.bin abb0ecb1ed8621f26e43b39f5fa25f3d0b6d6c184fa37c404c4389605ecb74e7 nonce_manager: ../../../contracts/solc/v0.8.24/NonceManager/NonceManager.abi ../../../contracts/solc/v0.8.24/NonceManager/NonceManager.bin 78b58f4f192db7496e2b6de805d6a2c918b98d4fa62f3c7ed145ef3b5657a40d ocr3_config_encoder: ../../../contracts/solc/v0.8.24/IOCR3ConfigEncoder/IOCR3ConfigEncoder.abi ../../../contracts/solc/v0.8.24/IOCR3ConfigEncoder/IOCR3ConfigEncoder.bin e21180898e1ad54a045ee20add85a2793c681425ea06f66d1a9e5cab128b6487 -ping_pong_demo: ../../../contracts/solc/v0.8.24/PingPongDemo/PingPongDemo.abi ../../../contracts/solc/v0.8.24/PingPongDemo/PingPongDemo.bin e468bfda33b1726ce175b748383045773022ecbb0dfc7b53f452adba3d7a1307 +ping_pong_demo: ../../../contracts/solc/v0.8.24/PingPongDemo/PingPongDemo.abi ../../../contracts/solc/v0.8.24/PingPongDemo/PingPongDemo.bin b883c345ea43c1cfa7fcfd1bc8aeb3de8f75b41b2b4f5e2b4f1a33965831264b price_registry: ../../../contracts/solc/v0.8.24/PriceRegistry/PriceRegistry.abi ../../../contracts/solc/v0.8.24/PriceRegistry/PriceRegistry.bin 0b3e253684d7085aa11f9179b71453b9db9d11cabea41605d5b4ac4128f85bfb registry_module_owner_custom: ../../../contracts/solc/v0.8.24/RegistryModuleOwnerCustom/RegistryModuleOwnerCustom.abi ../../../contracts/solc/v0.8.24/RegistryModuleOwnerCustom/RegistryModuleOwnerCustom.bin cbe7698bfd811b485ac3856daf073a7bdebeefdf2583403ca4a19d5b7e2d4ae8 report_codec: ../../../contracts/solc/v0.8.24/ReportCodec/ReportCodec.abi ../../../contracts/solc/v0.8.24/ReportCodec/ReportCodec.bin c07af8433bf8dbc7981725b18922a9c4e2dea068dd204bc62adc0e926cb499c3 router: ../../../contracts/solc/v0.8.24/Router/Router.abi ../../../contracts/solc/v0.8.24/Router/Router.bin 42576577e81beea9a069bd9229caaa9a71227fbaef3871a1a2e69fd218216290 -self_funded_ping_pong: ../../../contracts/solc/v0.8.24/SelfFundedPingPong/SelfFundedPingPong.abi ../../../contracts/solc/v0.8.24/SelfFundedPingPong/SelfFundedPingPong.bin 4a23adcd2bd9869f48824c0da4896f3d6a8be9f95acf691e312de60a397d0a33 +self_funded_ping_pong: ../../../contracts/solc/v0.8.24/SelfFundedPingPong/SelfFundedPingPong.abi ../../../contracts/solc/v0.8.24/SelfFundedPingPong/SelfFundedPingPong.bin ed68491cdc4c9a119682ab563a67705915f06599dd9de28516039d419904c896 token_admin_registry: ../../../contracts/solc/v0.8.24/TokenAdminRegistry/TokenAdminRegistry.abi ../../../contracts/solc/v0.8.24/TokenAdminRegistry/TokenAdminRegistry.bin fb06d2cf5f7476e512c6fb7aab8eab43545efd7f0f6ca133c64ff4e3963902c4 token_pool: ../../../contracts/solc/v0.8.24/TokenPool/TokenPool.abi ../../../contracts/solc/v0.8.24/TokenPool/TokenPool.bin 47a83e91b28ad1381a2a5882e2adfe168809a63a8f533ab1631f174550c64bed usdc_token_pool: ../../../contracts/solc/v0.8.24/USDCTokenPool/USDCTokenPool.abi ../../../contracts/solc/v0.8.24/USDCTokenPool/USDCTokenPool.bin 48caf06855a2f60455364d384e5fb2e6ecdf0a9ce4c1fc706b54b9885df76695