0 txs
8 calls
constructor
constructor(address _provider)
functions
addressRegistry
viewfunction addressRegistry() view returns (address)
CONVEX_DEPOSIT_TOKEN
viewfunction CONVEX_DEPOSIT_TOKEN() view returns (address)
CURVE_LP
viewfunction CURVE_LP() view returns (address)
getAddressForFNFT
viewfunction getAddressForFNFT(uint256 fnftId) view returns (address smartWallAdd)
getAddressRegistry
viewfunction getAddressRegistry() view returns (address)
getAsset
purefunction getAsset(uint256) pure returns (address)
getCustomMetadata
viewfunction getCustomMetadata(uint256) view returns (string)
getOutputDisplayValues
viewfunction getOutputDisplayValues(uint256 fnftId) view returns (bytes displayData)
getValue
viewfunction getValue(uint256 fnftId) view returns (uint256)
handleFNFTRemaps
purefunction handleFNFTRemaps(uint256, uint256[], address, bool) pure
kekIds
viewfunction kekIds(uint256) view returns (bytes32)
METADATA
viewfunction METADATA() view returns (string)
owner
viewfunction owner() view returns (address)
REWARDS
viewfunction REWARDS() view returns (address)
STAKING_ADDRESS
viewfunction STAKING_ADDRESS() view returns (address)
STAKING_TOKEN
viewfunction STAKING_TOKEN() view returns (address)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
TEMPLATE
viewfunction TEMPLATE() view returns (address)
TOKEN
viewfunction TOKEN() view returns (address)
handleAdditionalDeposit
nonpayablefunction handleAdditionalDeposit(uint256 fnftId, uint256 amountToDeposit, uint256, address caller)
handleSplitOperation
nonpayablefunction handleSplitOperation(uint256 fnftId, uint256[] proportions, uint256 quantity, address caller)
handleTimelockExtensions
nonpayablefunction handleTimelockExtensions(uint256 fnftId, uint256 expiration, address caller)
lockTokens
nonpayablefunction lockTokens(uint256 endTime, uint256 amountToLock) returns (uint256 fnftId)
receiveRevestOutput
nonpayablefunction receiveRevestOutput(uint256 fnftId, address, address caller, uint256)
receiveSecondaryCallback
payablefunction receiveSecondaryCallback(uint256 fnftId, address owner, uint256 quantity, tuple config, bytes args) payable
renounceOwnership
nonpayablefunction renounceOwnership()
rescueERC20
nonpayablefunction rescueERC20(address token)
rescueNativeFunds
nonpayablefunction rescueNativeFunds()
setAddressRegistry
nonpayablefunction setAddressRegistry(address addressRegistry_)
setMetadata
nonpayablefunction setMetadata(string _meta)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
triggerOutputReceiverUpdate
nonpayablefunction triggerOutputReceiverUpdate(uint256 fnftId, bytes)
events
DepositERC1155OutputReceiver
event DepositERC1155OutputReceiver(address indexed mintTo, address indexed token, uint256 tokenId, uint256 amountTokens, uint256 indexed fnftId, bytes extraData)
DepositERC20OutputReceiver
event DepositERC20OutputReceiver(address indexed mintTo, address indexed token, uint256 amountTokens, uint256 indexed fnftId, bytes extraData)
DepositERC721OutputReceiver
event DepositERC721OutputReceiver(address indexed mintTo, address indexed token, uint256[] tokenIds, uint256 indexed fnftId, bytes extraData)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
WithdrawERC1155OutputReceiver
event WithdrawERC1155OutputReceiver(address indexed caller, address indexed token, uint256 tokenId, uint256 amountTokens, uint256 indexed fnftId, bytes extraData)
WithdrawERC20OutputReceiver
event WithdrawERC20OutputReceiver(address indexed caller, address indexed token, uint256 amountTokens, uint256 indexed fnftId, bytes extraData)
WithdrawERC721OutputReceiver
event WithdrawERC721OutputReceiver(address indexed caller, address indexed token, uint256[] tokenIds, uint256 indexed fnftId, bytes extraData)
errors
No errors.
creation bytecode
0x610120604052605160a0818152906200651a60c03980516200002a9160039160209091019062000119565b503480156200003857600080fd5b506040516200656b3803806200656b8339810160408190526200005b91620001cd565b6200006633620000c9565b60018055600280546001600160a01b0319166001600160a01b0383161790556040516000906200009690620001a8565b604051809103906000f080158015620000b3573d6000803e3d6000fd5b506001600160a01b0316608052506200023c9050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b8280546200012790620001ff565b90600052602060002090601f0160209004810192826200014b576000855562000196565b82601f106200016657805160ff191683800117855562000196565b8280016001018555821562000196579182015b828111156200019657825182559160200191906001019062000179565b50620001a4929150620001b6565b5090565b6122f2806200422883390190565b5b80821115620001a45760008155600101620001b7565b600060208284031215620001e057600080fd5b81516001600160a01b0381168114620001f857600080fd5b9392505050565b600181811c908216806200021457607f821691505b602082108114156200023657634e487b7160e01b600052602260045260246000fd5b50919050565b608051613f9f62000289600039600081816104490152818161084801528181610a6801528181610cdf01528181611209015281816117430152818161190d0152611c120152613f9f6000f3fe6080604052600436106101e35760003560e01c80638bfd917411610102578063c0034e0c11610095578063f2fde38b11610064578063f2fde38b146105eb578063f3ad65f41461060b578063f443faeb146103ef578063f48fe0501461062b57600080fd5b8063c0034e0c1461054f578063ccec371614610577578063d255141214610597578063eac8f5b8146105b757600080fd5b80638ecacb1b116100d15780638ecacb1b146104cf578063a49a1e7d146104ef578063aca1c6651461050f578063ba156bcb1461052f57600080fd5b80638bfd9174146104375780638c20570b1461046b5780638d9d6705146104935780638da5cb5b146104b157600080fd5b806327c7812c1161017a578063715018a611610149578063715018a6146103b957806376da63f3146103ce57806382bfefc8146103ef57806389158d8e1461041757600080fd5b806327c7812c1461033757806338c3df07146103575780634c2388511461036c578063644bf7d81461039957600080fd5b8063109bbf05116101b6578063109bbf05146102a25780631355f7ab146102ca57806316f49e8a146102ea5780631d1457211461031757600080fd5b806301ffc9a7146101e85780630479d6441461021d578063063c27f81461025d5780630ff4c91614610274575b600080fd5b3480156101f457600080fd5b50610208610203366004613011565b610640565b60405190151581526020015b60405180910390f35b34801561022957600080fd5b50610245734659d5ff63a1e1edd6d5dd9cc315e063c95947d081565b6040516001600160a01b039091168152602001610214565b34801561026957600080fd5b50610272610771565b005b34801561028057600080fd5b5061029461028f366004613053565b6107ff565b604051908152602001610214565b3480156102ae57600080fd5b5061024573c07e540dbfeccf7431ea2478eb28a03918c1c30e81565b3480156102d657600080fd5b506102726102e536600461308c565b610907565b3480156102f657600080fd5b5061030a610305366004613053565b610b47565b604051610214919061311d565b34801561032357600080fd5b50610272610332366004613130565b610bdb565b34801561034357600080fd5b50610272610352366004613171565b610dc6565b34801561036357600080fd5b5061030a610e5a565b34801561037857600080fd5b50610294610387366004613053565b60046020526000908152604090205481565b3480156103a557600080fd5b506102726103b43660046132c0565b610ee8565b3480156103c557600080fd5b50610272610f30565b3480156103da57600080fd5b506102726103e9366004613321565b50505050565b3480156103fb57600080fd5b5061024573f43211935c781d5ca1a41d2041f397b8a7366c7a81565b34801561042357600080fd5b50610294610432366004613379565b610f96565b34801561044357600080fd5b506102457f000000000000000000000000000000000000000000000000000000000000000081565b34801561047757600080fd5b5061024573a537d64881b84faffb9ae43c951eebf368b71cda81565b34801561049f57600080fd5b506002546001600160a01b0316610245565b3480156104bd57600080fd5b506000546001600160a01b0316610245565b3480156104db57600080fd5b5061030a6104ea366004613053565b6113d3565b3480156104fb57600080fd5b5061027261050a3660046133fc565b6115c2565b34801561051b57600080fd5b5061027261052a366004613445565b611633565b34801561053b57600080fd5b5061024561054a366004613053565b6118e0565b34801561055b57600080fd5b50610245733465b8211278505ae9c6b5ba08ecd9af951a689681565b34801561058357600080fd5b50610272610592366004613171565b611935565b3480156105a357600080fd5b506102726105b23660046134ad565b611a29565b3480156105c357600080fd5b506102456105d2366004613053565b5073f43211935c781d5ca1a41d2041f397b8a7366c7a90565b3480156105f757600080fd5b50610272610606366004613171565b611cbd565b34801561061757600080fd5b50600254610245906001600160a01b031681565b6102726106393660046134f4565b5050505050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fd1a3af5a0000000000000000000000000000000000000000000000000000000014806106d357507fffffffff0000000000000000000000000000000000000000000000000000000082167f4291039a00000000000000000000000000000000000000000000000000000000145b8061071f57507fffffffff0000000000000000000000000000000000000000000000000000000082167f789bc37900000000000000000000000000000000000000000000000000000000145b8061076b57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6000546001600160a01b031633146107d05760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b60405133904780156108fc02916000818181858888f193505050501580156107fc573d6000803e3d6000fd5b50565b6040805173f43211935c781d5ca1a41d2041f397b8a7366c7a6020820152908101829052600090734659d5ff63a1e1edd6d5dd9cc315e063c95947d090634b0ee02a90610887907f0000000000000000000000000000000000000000000000000000000000000000906060015b60405160208183030381529060405280519060200120611d9c565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa1580156108e3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061076b9190613618565b600260009054906101000a90046001600160a01b03166001600160a01b031663f97e7d746040518163ffffffff1660e01b8152600401602060405180830381865afa15801561095a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061097e9190613631565b6001600160a01b0316336001600160a01b0316146109de5760405162461bcd60e51b815260206004820152601460248201527f556e617574686f72697a6564204163636573732100000000000000000000000060448201526064016107c7565b6303c267006109ed428461367d565b1115610a3b5760405162461bcd60e51b815260206004820152601560248201527f4d6178206c6f636b75702069732032207965617273000000000000000000000060448201526064016107c7565b6040805173f43211935c781d5ca1a41d2041f397b8a7366c7a6020820152908101849052600090610aa7907f0000000000000000000000000000000000000000000000000000000000000000906060015b60405160208183030381529060405280519060200120611e1f565b6000858152600460208190526040918290205491517f3c0672bb00000000000000000000000000000000000000000000000000000000815290810186905260248101919091526001600160a01b0384811660448301529192508291821690633c0672bb90606401600060405180830381600087803b158015610b2857600080fd5b505af1158015610b3c573d6000803e3d6000fd5b505050505050505050565b606060038054610b5690613694565b80601f0160208091040260200160405190810160405280929190818152602001828054610b8290613694565b8015610bcf5780601f10610ba457610100808354040283529160200191610bcf565b820191906000526020600020905b815481529060010190602001808311610bb257829003601f168201915b50505050509050919050565b600260009054906101000a90046001600160a01b03166001600160a01b031663f97e7d746040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c2e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c529190613631565b6001600160a01b0316336001600160a01b031614610cb25760405162461bcd60e51b815260206004820152601460248201527f556e617574686f72697a6564204163636573732100000000000000000000000060448201526064016107c7565b6040805173f43211935c781d5ca1a41d2041f397b8a7366c7a6020820152908101859052600090610d07907f000000000000000000000000000000000000000000000000000000000000000090606001610a8c565b905080610d2a73f43211935c781d5ca1a41d2041f397b8a7366c7a848388611ed6565b6000868152600460208190526040918290205491517f5aff427d00000000000000000000000000000000000000000000000000000000815290810187905260248101919091526001600160a01b038481166044830152821690635aff427d90606401600060405180830381600087803b158015610da657600080fd5b505af1158015610dba573d6000803e3d6000fd5b50505050505050505050565b6000546001600160a01b03163314610e205760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016107c7565b600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b60038054610e6790613694565b80601f0160208091040260200160405190810160405280929190818152602001828054610e9390613694565b8015610ee05780601f10610eb557610100808354040283529160200191610ee0565b820191906000526020600020905b815481529060010190602001808311610ec357829003601f168201915b505050505081565b60405162461bcd60e51b815260206004820152600e60248201527f4e6f74206170706c696361626c6500000000000000000000000000000000000060448201526064016107c7565b6000546001600160a01b03163314610f8a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016107c7565b610f946000611f87565b565b600060026001541415610feb5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016107c7565b6002600190815560408051610120810182526000808252818301819052606082018190526080820181905260a08201819052610100820181905260e0820184905260c0820184905230602083015282518481528084019093529092909190816020016020820280368337019050509050338160008151811061106f5761106f6136e8565b6001600160a01b0392909216602092830291909101909101526040805160018082528183019092526000918160200160208202803683370190505090506001816000815181106110c1576110c16136e8565b6020026020010181815250506000600260009054906101000a90046001600160a01b03166001600160a01b031663f97e7d746040518163ffffffff1660e01b8152600401602060405180830381865afa158015611122573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111469190613631565b6040517f5a7c08f00000000000000000000000000000000000000000000000000000000081529091506001600160a01b03821690635a7c08f090611194908a90879087908a9060040161378d565b6020604051808303816000875af11580156111b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111d79190613618565b6040805173f43211935c781d5ca1a41d2041f397b8a7366c7a60208201529081018290529095506000945061123493507f000000000000000000000000000000000000000000000000000000000000000092506060019050610a8c565b90508061125773f43211935c781d5ca1a41d2041f397b8a7366c7a338387611ed6565b6040517f3c4f8dd800000000000000000000000000000000000000000000000000000000815260048101859052602481018690523360448201526001600160a01b03821690633c4f8dd8906064016020604051808303816000875af11580156112c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112e89190613618565b6004600085815260200190815260200160002081905550806001600160a01b0316633ff5b85f6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561133a57600080fd5b505af115801561134e573d6000803e3d6000fd5b5050604080516001600160a01b038616602082015286935073f43211935c781d5ca1a41d2041f397b8a7366c7a925033917f5bed1f834b92cc21cec09497afa47d36952b8a037e988eca6e9ecffeb497b2279189910160408051601f19818403018152908290526113bf929161382b565b60405180910390a450506001805592915050565b60606000806113e184611fef565b915091506000815167ffffffffffffffff8111156114015761140161318e565b60405190808252806020026020018201604052801561143457816020015b606081526020019060019003908161141f5790505b5082519091501580159061153f5760005b845181101561153d576000858281518110611462576114626136e8565b6020026020010151905060006114778261267d565b6040516020016114879190613844565b604051602081830303815290604052905060006114bd8785815181106114af576114af6136e8565b602002602001015184612723565b6114c6846127a2565b6040516020016114d7929190613885565b604051602081830303815290604052905081816040516020016114fb929190613907565b60405160208183030381529060405286858151811061151c5761151c6136e8565b6020026020010181905250505050808061153590613936565b915050611445565b505b600061154a876118e0565b905060006303c26700611560620151804261399e565b61156d90620151806139b2565b61157791906139ef565b90508184848373f43211935c781d5ca1a41d2041f397b8a7366c7a6040516020016115a6959493929190613a07565b6040516020818303038152906040529650505050505050919050565b6000546001600160a01b0316331461161c5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016107c7565b805161162f906003906020840190612f78565b5050565b600254604080517f54f2f7af00000000000000000000000000000000000000000000000000000000815290516000926001600160a01b0316916354f2f7af9160048083019260209291908290030181865afa158015611696573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116ba9190613631565b9050336001600160a01b038216146117165760405162461bcd60e51b81526004016107c79060208082526004908201527f4530313600000000000000000000000000000000000000000000000000000000604082015260600190565b6040805173f43211935c781d5ca1a41d2041f397b8a7366c7a602082015290810186905260009061176b907f000000000000000000000000000000000000000000000000000000000000000090606001610a8c565b60008781526004602081905260408083205490517f1b258d50000000000000000000000000000000000000000000000000000000008152918201526001600160a01b0387811660248301529293508392831690631b258d50906044016020604051808303816000875af11580156117e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061180a9190613618565b9050816001600160a01b0316633ff5b85f6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561184757600080fd5b505af115801561185b573d6000803e3d6000fd5b5050604080516001600160a01b0387811660208301528c945073f43211935c781d5ca1a41d2041f397b8a7366c7a93508a16917ff2b6e7f64080f438239b56473f2cd92b33165c88688fd898e1d99082bd0eb9549186910160408051601f19818403018152908290526118ce929161382b565b60405180910390a45050505050505050565b6040805173f43211935c781d5ca1a41d2041f397b8a7366c7a602082015290810182905260009061076b907f00000000000000000000000000000000000000000000000000000000000000009060600161086c565b6000546001600160a01b0316331461198f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016107c7565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038316906370a0823190602401602060405180830381865afa1580156119ef573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a139190613618565b905061162f6001600160a01b0383163383612840565b60026001541415611a7c5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016107c7565b6002600181905554604080517fd59e296e000000000000000000000000000000000000000000000000000000008152905184926001600160a01b031691600091839163d59e296e9160048083019260209291908290030181865afa158015611ae8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b0c9190613631565b6040517f2b04e840000000000000000000000000000000000000000000000000000000008152336004820152602481018590526001600160a01b039190911690632b04e84090604401602060405180830381865afa158015611b72573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b969190613618565b11611be55760405162461bcd60e51b81526004016107c79060208082526004908201527f4530363400000000000000000000000000000000000000000000000000000000604082015260600190565b6040805173f43211935c781d5ca1a41d2041f397b8a7366c7a6020820152908101859052600090611c3a907f000000000000000000000000000000000000000000000000000000000000000090606001610a8c565b6040517fef5cfb8c00000000000000000000000000000000000000000000000000000000815233600482015290915081906001600160a01b0382169063ef5cfb8c90602401600060405180830381600087803b158015611c9957600080fd5b505af1158015611cad573d6000803e3d6000fd5b5050600180555050505050505050565b6000546001600160a01b03163314611d175760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016107c7565b6001600160a01b038116611d935760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016107c7565b6107fc81611f87565b6000611e188383306040517f3d602d80600a3d3981f3363d3d373d3d3d363d730000000000000000000000008152606093841b60148201527f5af43d82803e903d91602b57fd5bf3ff000000000000000000000000000000006028820152921b6038830152604c8201526037808220606c830152605591012090565b9392505050565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528360601b60148201527f5af43d82803e903d91602b57fd5bf300000000000000000000000000000000006028820152826037826000f59150506001600160a01b03811661076b5760405162461bcd60e51b815260206004820152601760248201527f455243313136373a2063726561746532206661696c656400000000000000000060448201526064016107c7565b6040516001600160a01b03808516602483015283166044820152606481018290526103e99085907f23b872dd00000000000000000000000000000000000000000000000000000000906084015b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915261288e565b600080546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6060806000611ffd846118e0565b9050600073a537d64881b84faffb9ae43c951eebf368b71cda6001600160a01b03166312edb24c6040518163ffffffff1660e01b8152600401600060405180830381865afa158015612053573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261207b9190810190613abe565b6040517e8cc2620000000000000000000000000000000000000000000000000000000081526001600160a01b038416600482015290915060009073a537d64881b84faffb9ae43c951eebf368b71cda90628cc26290602401600060405180830381865afa1580156120f0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526121189190810190613b4d565b6040517fb277e8f00000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152909150600090734659d5ff63a1e1edd6d5dd9cc315e063c95947d09063b277e8f090602401600060405180830381865afa15801561218f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526121b79190810190613c70565b90506000733465b8211278505ae9c6b5ba08ecd9af951a68966001600160a01b031663857cb94a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561220d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122319190613618565b9050815181855161224291906139ef565b61224c91906139ef565b67ffffffffffffffff8111156122645761226461318e565b60405190808252806020026020018201604052801561228d578160200160208202803683370190505b509650815181855161229f91906139ef565b6122a991906139ef565b67ffffffffffffffff8111156122c1576122c161318e565b6040519080825280602002602001820160405280156122ea578160200160208202803683370190505b50955060005b84518110156124395784818151811061230b5761230b6136e8565b6020026020010151888281518110612325576123256136e8565b60200260200101906001600160a01b031690816001600160a01b031681525050848181518110612357576123576136e8565b60209081029190910101516040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b038881166004830152909116906370a0823190602401602060405180830381865afa1580156123c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123e69190613618565b8482815181106123f8576123f86136e8565b602002602001015161240a91906139ef565b87828151811061241c5761241c6136e8565b60209081029190910101528061243181613936565b9150506122f0565b506040517fdc01f60d0000000000000000000000000000000000000000000000000000000081526001600160a01b0386166004820152600090733465b8211278505ae9c6b5ba08ecd9af951a68969063dc01f60d90602401600060405180830381865afa1580156124ae573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526124d69190810190613c70565b905060005b8151811015612599578181815181106124f6576124f66136e8565b6020026020010151600001518987518361251091906139ef565b81518110612520576125206136e8565b60200260200101906001600160a01b031690816001600160a01b031681525050818181518110612552576125526136e8565b6020026020010151602001518887518361256c91906139ef565b8151811061257c5761257c6136e8565b60209081029190910101528061259181613936565b9150506124db565b5060005b8351811015612671578381815181106125b8576125b86136e8565b60200260200101516000015189848851846125d391906139ef565b6125dd91906139ef565b815181106125ed576125ed6136e8565b60200260200101906001600160a01b031690816001600160a01b03168152505083818151811061261f5761261f6136e8565b602002602001015160200151888488518461263a91906139ef565b61264491906139ef565b81518110612654576126546136e8565b60209081029190910101528061266981613936565b91505061259d565b50505050505050915091565b6060816001600160a01b03166306fdde036040518163ffffffff1660e01b8152600401600060405180830381865afa9250505080156126de57506040513d6000823e601f3d908101601f191682016040526126db9190810190613cb9565b60015b61271b57505060408051808201909152600d81527f556e6b6e6f776e20546f6b656e00000000000000000000000000000000000000602082015290565b90505b919050565b60606000826001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015612781575060408051601f3d908101601f1916820190925261277e91810190613d27565b60015b61278d57506012612790565b90505b61279a8482612973565b949350505050565b6060816001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa92505050801561280357506040513d6000823e601f3d908101601f191682016040526128009190810190613cb9565b60015b61271b57505060408051808201909152600381527f3f3f3f0000000000000000000000000000000000000000000000000000000000602082015290565b6040516001600160a01b0383166024820152604481018290526128899084907fa9059cbb0000000000000000000000000000000000000000000000000000000090606401611f23565b505050565b60006128e3826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316612b289092919063ffffffff16565b80519091501561288957808060200190518101906129019190613d4a565b6128895760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016107c7565b6060600061298283600a613e87565b9050836000805b82156129e85760ff8116156129aa57806129a281613e96565b9150506129c8565b6129b5600a84613eb6565b156129c857806129c481613e96565b9150505b816129d281613e96565b92506129e19050600a8461399e565b9250612989565b6040805160e081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c081019190915260ff8716612a2f8385613eca565b60ff1610612a6157612a41858961399e565b8152612a4d8784613eca565b60ff16604082018190526020820152612b06565b612a6b8284613eca565b612a7690600a613e87565b612a80908961399e565b815287851115612ad55760026080820152612a9b8388613eca565b612aa6906002613eed565b60ff1660a08201819052612aba9083613eed565b60ff16604082018190526020820152600160c0820152612b06565b612ae0826001613eed565b60ff166040820152612af28784613eca565b612afd906001613eed565b60ff1660608201525b604081015160ff166020820152612b1c81612b37565b98975050505050505050565b606061279a8484600085612e00565b60606000826020015160ff1667ffffffffffffffff811115612b5b57612b5b61318e565b6040519080825280601f01601f191660200182016040528015612b85576020820181803683370190505b5090508260c0015115612c59577f300000000000000000000000000000000000000000000000000000000000000081600081518110612bc657612bc66136e8565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f2e0000000000000000000000000000000000000000000000000000000000000081600181518110612c2957612c296136e8565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053505b608083015160ff165b8360a0015160ff16811015612cc957603060f81b828281518110612c8857612c886136e8565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535080612cc181613936565b915050612c62565b505b82511561271b576000836060015160ff16118015612cf65750826060015160ff16836040015160ff16145b15612d73577f2e0000000000000000000000000000000000000000000000000000000000000081846040018051612d2c90613f12565b60ff169081905281518110612d4357612d436136e8565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053505b8251612d8190600a90613eb6565b612d8c9060306139ef565b60f81b81846040018051612d9f90613f12565b60ff169081905281518110612db657612db66136e8565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a83600001818151612df8919061399e565b905250612ccb565b606082471015612e785760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016107c7565b843b612ec65760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016107c7565b600080866001600160a01b03168587604051612ee29190613f4d565b60006040518083038185875af1925050503d8060008114612f1f576040519150601f19603f3d011682016040523d82523d6000602084013e612f24565b606091505b5091509150612f34828286612f3f565b979650505050505050565b60608315612f4e575081611e18565b825115612f5e5782518084602001fd5b8160405162461bcd60e51b81526004016107c7919061311d565b828054612f8490613694565b90600052602060002090601f016020900481019282612fa65760008555612fec565b82601f10612fbf57805160ff1916838001178555612fec565b82800160010185558215612fec579182015b82811115612fec578251825591602001919060010190612fd1565b50612ff8929150612ffc565b5090565b5b80821115612ff85760008155600101612ffd565b60006020828403121561302357600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611e1857600080fd5b60006020828403121561306557600080fd5b5035919050565b6001600160a01b03811681146107fc57600080fd5b803561271e8161306c565b6000806000606084860312156130a157600080fd5b833592506020840135915060408401356130ba8161306c565b809150509250925092565b60005b838110156130e05781810151838201526020016130c8565b838111156103e95750506000910152565b600081518084526131098160208601602086016130c5565b601f01601f19169290920160200192915050565b602081526000611e1860208301846130f1565b6000806000806080858703121561314657600080fd5b84359350602085013592506040850135915060608501356131668161306c565b939692955090935050565b60006020828403121561318357600080fd5b8135611e188161306c565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051610120810167ffffffffffffffff811182821017156131e1576131e161318e565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156132105761321061318e565b604052919050565b600067ffffffffffffffff8211156132325761323261318e565b5060051b60200190565b600082601f83011261324d57600080fd5b8135602061326261325d83613218565b6131e7565b82815260059290921b8401810191818101908684111561328157600080fd5b8286015b8481101561329c5780358352918301918301613285565b509695505050505050565b80151581146107fc57600080fd5b803561271e816132a7565b600080600080608085870312156132d657600080fd5b84359350602085013567ffffffffffffffff8111156132f457600080fd5b6133008782880161323c565b93505060408501356133118161306c565b91506060850135613166816132a7565b6000806000806080858703121561333757600080fd5b84359350602085013567ffffffffffffffff81111561335557600080fd5b6133618782880161323c565b9350506040850135915060608501356131668161306c565b6000806040838503121561338c57600080fd5b50508035926020909101359150565b600067ffffffffffffffff8211156133b5576133b561318e565b50601f01601f191660200190565b60006133d161325d8461339b565b90508281528383830111156133e557600080fd5b828260208301376000602084830101529392505050565b60006020828403121561340e57600080fd5b813567ffffffffffffffff81111561342557600080fd5b8201601f8101841361343657600080fd5b61279a848235602084016133c3565b6000806000806080858703121561345b57600080fd5b84359350602085013561346d8161306c565b9250604085013561347d8161306c565b9396929550929360600135925050565b600082601f83011261349e57600080fd5b611e18838335602085016133c3565b600080604083850312156134c057600080fd5b82359150602083013567ffffffffffffffff8111156134de57600080fd5b6134ea8582860161348d565b9150509250929050565b60008060008060008587036101a081121561350e57600080fd5b8635955060208701356135208161306c565b9450604087013593506101207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0820181131561355b57600080fd5b6135636131bd565b915061357160608901613081565b825261357f60808901613081565b602083015260a0880135604083015260c0880135606083015260e088013560808301526101008089013560a08401526135b9828a016132b5565b60c08401526135cb6101408a016132b5565b60e08401526135dd6101608a016132b5565b9083015250915061018086013567ffffffffffffffff8111156135ff57600080fd5b61360b8882890161348d565b9150509295509295909350565b60006020828403121561362a57600080fd5b5051919050565b60006020828403121561364357600080fd5b8151611e188161306c565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008282101561368f5761368f61364e565b500390565b600181811c908216806136a857607f821691505b602082108114156136e2577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6001600160a01b038082511683528060208301511660208401525060408101516040830152606081015160608301526080810151608083015260a081015160a083015260c0810151151560c083015260e081015161377960e084018215159052565b5061010081810151801515848301526103e9565b848152610180602080830182905285519183018290526000916101a084019187810191845b818110156137d75783516001600160a01b0316855293820193928201926001016137b2565b505084830360408601528651808452818801938201925060005b8181101561380d578451845293820193928201926001016137f1565b50505080925050506138226060830184613717565b95945050505050565b82815260406020820152600061279a60408301846130f1565b600082516138568184602087016130c5565b7f3a20000000000000000000000000000000000000000000000000000000000000920191825250600201919050565b600083516138978184602088016130c5565b7f205b00000000000000000000000000000000000000000000000000000000000090830190815283516138d18160028401602088016130c5565b7f5d20546f6b656e7320417661696c61626c65000000000000000000000000000060029290910191820152601401949350505050565b600083516139198184602088016130c5565b83519083019061392d8183602088016130c5565b01949350505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156139685761396861364e565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000826139ad576139ad61396f565b500490565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156139ea576139ea61364e565b500290565b60008219821115613a0257613a0261364e565b500190565b600060a082016001600160a01b0388168352602060a08185015281885180845260c08601915060c08160051b8701019350828a0160005b82811015613a8a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff40888703018452613a788683516130f1565b95509284019290840190600101613a3e565b505050508615156040850152509050836060830152613ab460808301846001600160a01b03169052565b9695505050505050565b60006020808385031215613ad157600080fd5b825167ffffffffffffffff811115613ae857600080fd5b8301601f81018513613af957600080fd5b8051613b0761325d82613218565b81815260059190911b82018301908381019087831115613b2657600080fd5b928401925b82841015612f34578351613b3e8161306c565b82529284019290840190613b2b565b60006020808385031215613b6057600080fd5b825167ffffffffffffffff811115613b7757600080fd5b8301601f81018513613b8857600080fd5b8051613b9661325d82613218565b81815260059190911b82018301908381019087831115613bb557600080fd5b928401925b82841015612f3457835182529284019290840190613bba565b6000613be161325d84613218565b8381529050602080820190600685901b840186811115613c0057600080fd5b845b81811015613c6557604080828a031215613c1c5760008081fd5b805181810181811067ffffffffffffffff82111715613c3d57613c3d61318e565b909152815190613c4c8261306c565b9081528184015184820152845292820192604001613c02565b505050509392505050565b600060208284031215613c8257600080fd5b815167ffffffffffffffff811115613c9957600080fd5b8201601f81018413613caa57600080fd5b61279a84825160208401613bd3565b600060208284031215613ccb57600080fd5b815167ffffffffffffffff811115613ce257600080fd5b8201601f81018413613cf357600080fd5b8051613d0161325d8261339b565b818152856020838501011115613d1657600080fd5b6138228260208301602086016130c5565b600060208284031215613d3957600080fd5b815160ff81168114611e1857600080fd5b600060208284031215613d5c57600080fd5b8151611e18816132a7565b600181815b80851115613dc057817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115613da657613da661364e565b80851615613db357918102915b93841c9390800290613d6c565b509250929050565b600082613dd75750600161076b565b81613de45750600061076b565b8160018114613dfa5760028114613e0457613e20565b600191505061076b565b60ff841115613e1557613e1561364e565b50506001821b61076b565b5060208310610133831016604e8410600b8410161715613e43575081810a61076b565b613e4d8383613d67565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115613e7f57613e7f61364e565b029392505050565b6000611e1860ff841683613dc8565b600060ff821660ff811415613ead57613ead61364e565b60010192915050565b600082613ec557613ec561396f565b500690565b600060ff821660ff841680821015613ee457613ee461364e565b90039392505050565b600060ff821660ff84168060ff03821115613f0a57613f0a61364e565b019392505050565b600060ff821680613f2557613f2561364e565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0192915050565b60008251613f5f8184602087016130c5565b919091019291505056fea26469706673582212204a77d9d7806d6b7f4c927f03cd3b2996c4ef37fc6b3c4c488c6f869695122d1664736f6c634300080a003360a060405234801561001057600080fd5b503360805260805161229861005a600039600081816102820152818161055c0152818161069901528181610c8601528181610d2f01528181610eb9015261126a01526122986000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c80635aff427d1161008c578063945c914211610066578063945c914214610204578063c0034e0c1461021f578063ef5cfb8c1461023a578063f443faeb1461024d57600080fd5b80635aff427d146101bb578063759cb53b146101ce5780638c20570b146101e957600080fd5b8063200ea222116100c8578063200ea222146101705780633c0672bb1461018b5780633c4f8dd8146101a05780633ff5b85f146101b357600080fd5b80630479d644146100ef578063109bbf05146101345780631b258d501461014f575b600080fd5b61010a734659d5ff63a1e1edd6d5dd9cc315e063c95947d081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61010a73c07e540dbfeccf7431ea2478eb28a03918c1c30e81565b61016261015d366004611eb8565b610268565b60405190815260200161012b565b61010a733432b6a60d23ca0dfca7761b7ab56459d9c964d081565b61019e610199366004611ee8565b610544565b005b6101626101ae366004611ee8565b61067f565b61019e610c6e565b61019e6101c9366004611ee8565b610d17565b61010a734e3fbd56cd56c3e72c1403e103b45db9da5b9d2b81565b61010a73a537d64881b84faffb9ae43c951eebf368b71cda81565b61010a73d533a949740bb3306d119cc777fa900ba034cd5281565b61010a733465b8211278505ae9c6b5ba08ecd9af951a689681565b61019e610248366004611f21565b610ea1565b61010a73f43211935c781d5ca1a41d2041f397b8a7366c7a81565b60003373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461030e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f556e617574686f72697a6564210000000000000000000000000000000000000060448201526064015b60405180910390fd5b6040517fe44b9fa50000000000000000000000000000000000000000000000000000000081526004810184905230602482015273a537d64881b84faffb9ae43c951eebf368b71cda9063e44b9fa5906044016020604051808303816000875af115801561037f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103a39190611f3e565b506040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152734659d5ff63a1e1edd6d5dd9cc315e063c95947d090633969dfb49082906370a0823190602401602060405180830381865afa158015610414573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104389190611f3e565b6040518263ffffffff1660e01b815260040161045691815260200190565b600060405180830381600087803b15801561047057600080fd5b505af1158015610484573d6000803e3d6000fd5b50506040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273f43211935c781d5ca1a41d2041f397b8a7366c7a92506370a082319150602401602060405180830381865afa1580156104f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105149190611f3e565b905061053573f43211935c781d5ca1a41d2041f397b8a7366c7a8383610f56565b61053e82610fe3565b92915050565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146105e3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f556e617574686f72697a656421000000000000000000000000000000000000006044820152606401610305565b6040517fd2fbdc0d000000000000000000000000000000000000000000000000000000008152600481018390526024810184905273a537d64881b84faffb9ae43c951eebf368b71cda9063d2fbdc0d906044015b600060405180830381600087803b15801561065157600080fd5b505af1158015610665573d6000803e3d6000fd5b5050505061067281610fe3565b61067a611268565b505050565b60003373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610720576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f556e617574686f72697a656421000000000000000000000000000000000000006044820152606401610305565b6040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273a537d64881b84faffb9ae43c951eebf368b71cda602482015260001990734659d5ff63a1e1edd6d5dd9cc315e063c95947d09063dd62ed3e90604401602060405180830381865afa1580156107a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107ca9190611f3e565b1461087b576040517f095ea7b300000000000000000000000000000000000000000000000000000000815273a537d64881b84faffb9ae43c951eebf368b71cda60048201526000196024820152734659d5ff63a1e1edd6d5dd9cc315e063c95947d09063095ea7b3906044016020604051808303816000875af1158015610855573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108799190611f57565b505b6040517fdd62ed3e000000000000000000000000000000000000000000000000000000008152306004820152734659d5ff63a1e1edd6d5dd9cc315e063c95947d060248201526000199073f43211935c781d5ca1a41d2041f397b8a7366c7a9063dd62ed3e90604401602060405180830381865afa158015610901573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109259190611f3e565b146109d6576040517f095ea7b3000000000000000000000000000000000000000000000000000000008152734659d5ff63a1e1edd6d5dd9cc315e063c95947d06004820152600019602482015273f43211935c781d5ca1a41d2041f397b8a7366c7a9063095ea7b3906044016020604051808303816000875af11580156109b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109d49190611f57565b505b6040517fdd62ed3e000000000000000000000000000000000000000000000000000000008152306004820152734659d5ff63a1e1edd6d5dd9cc315e063c95947d060248201526000199073c07e540dbfeccf7431ea2478eb28a03918c1c30e9063dd62ed3e90604401602060405180830381865afa158015610a5c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a809190611f3e565b14610b31576040517f095ea7b3000000000000000000000000000000000000000000000000000000008152734659d5ff63a1e1edd6d5dd9cc315e063c95947d06004820152600019602482015273c07e540dbfeccf7431ea2478eb28a03918c1c30e9063095ea7b3906044016020604051808303816000875af1158015610b0b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b2f9190611f57565b505b6040517f6e553f6500000000000000000000000000000000000000000000000000000000815260048101859052306024820152734659d5ff63a1e1edd6d5dd9cc315e063c95947d090636e553f6590604401600060405180830381600087803b158015610b9d57600080fd5b505af1158015610bb1573d6000803e3d6000fd5b5073a537d64881b84faffb9ae43c951eebf368b71cda92506317b18c899150869050610bdd4287611fa8565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b168152600481019290925260248201526044016020604051808303816000875af1158015610c38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c5c9190611f3e565b9050610c6782610fe3565b9392505050565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610d0d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f556e617574686f72697a656421000000000000000000000000000000000000006044820152606401610305565b610d15611268565b565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610db6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f556e617574686f72697a656421000000000000000000000000000000000000006044820152606401610305565b8215610e98576040517f6e553f6500000000000000000000000000000000000000000000000000000000815260048101849052306024820152734659d5ff63a1e1edd6d5dd9cc315e063c95947d090636e553f6590604401600060405180830381600087803b158015610e2857600080fd5b505af1158015610e3c573d6000803e3d6000fd5b50506040517fb85efd06000000000000000000000000000000000000000000000000000000008152600481018590526024810186905273a537d64881b84faffb9ae43c951eebf368b71cda925063b85efd069150604401610637565b61067281610fe3565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610f40576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f556e617574686f72697a656421000000000000000000000000000000000000006044820152606401610305565b610f4b6001826112a1565b610f53611268565b50565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905261067a908490611621565b733465b8211278505ae9c6b5ba08ecd9af951a689673ffffffffffffffffffffffffffffffffffffffff166302fb0c5e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611042573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110669190611f57565b15610f53576040517fd9f96e8d00000000000000000000000000000000000000000000000000000000815230600482015260009073a537d64881b84faffb9ae43c951eebf368b71cda9063d9f96e8d90602401602060405180830381865afa1580156110d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110fa9190611f3e565b6040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152909150600090733465b8211278505ae9c6b5ba08ecd9af951a6896906370a0823190602401602060405180830381865afa158015611168573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061118c9190611f3e565b905080821061124357733465b8211278505ae9c6b5ba08ecd9af951a68966347e7ef24846111ba8486611fa8565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff909216600483015260248201526044015b600060405180830381600087803b15801561122657600080fd5b505af115801561123a573d6000803e3d6000fd5b50505050505050565b733465b8211278505ae9c6b5ba08ecd9af951a689663f3fef3a3846111ba8585611fa8565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16ff5b811561155c576040517fc00007b000000000000000000000000000000000000000000000000000000000815230600482015273a537d64881b84faffb9ae43c951eebf368b71cda9063c00007b0906024016000604051808303816000875af1158015611311573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526113579190810190612061565b506040517f6b09169500000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff82166024820152734659d5ff63a1e1edd6d5dd9cc315e063c95947d090636b09169590604401600060405180830381600087803b1580156113d957600080fd5b505af11580156113ed573d6000803e3d6000fd5b50506040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000925073d533a949740bb3306d119cc777fa900ba034cd5291506370a0823190602401602060405180830381865afa15801561145c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114809190611f3e565b905080156114a7576114a773d533a949740bb3306d119cc777fa900ba034cd528383610f56565b6040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152734e3fbd56cd56c3e72c1403e103b45db9da5b9d2b906370a0823190602401602060405180830381865afa15801561150f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115339190611f3e565b9050801561155a5761155a734e3fbd56cd56c3e72c1403e103b45db9da5b9d2b8383610f56565b505b6115658161172d565b600073a537d64881b84faffb9ae43c951eebf368b71cda73ffffffffffffffffffffffffffffffffffffffff166312edb24c6040518163ffffffff1660e01b8152600401600060405180830381865afa1580156115c6573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261160c91908101906120ec565b90506116188183611873565b61067a826119ed565b6000611683826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16611cac9092919063ffffffff16565b80519091501561067a57808060200190518101906116a19190611f57565b61067a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610305565b6040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152600090733432b6a60d23ca0dfca7761b7ab56459d9c964d0906370a0823190602401602060405180830381865afa158015611798573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117bc9190611f3e565b9050801561186f576040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8316600482015260248101829052733432b6a60d23ca0dfca7761b7ab56459d9c964d09063a9059cbb906044016020604051808303816000875af115801561184b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061067a9190611f57565b5050565b60005b825181101561067a57733432b6a60d23ca0dfca7761b7ab56459d9c964d073ffffffffffffffffffffffffffffffffffffffff168382815181106118bc576118bc61217b565b602002602001015173ffffffffffffffffffffffffffffffffffffffff16146119db5760008382815181106118f3576118f361217b565b60209081029190910101516040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff909116906370a0823190602401602060405180830381865afa158015611969573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061198d9190611f3e565b905080156119d9576119d983828685815181106119ac576119ac61217b565b602002602001015173ffffffffffffffffffffffffffffffffffffffff16610f569092919063ffffffff16565b505b806119e5816121aa565b915050611876565b733465b8211278505ae9c6b5ba08ecd9af951a689673ffffffffffffffffffffffffffffffffffffffff166302fb0c5e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a4c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a709190611f57565b15610f53576040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152600090733465b8211278505ae9c6b5ba08ecd9af951a6896906370a0823190602401602060405180830381865afa158015611ae0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b049190611f3e565b6040517fd9f96e8d00000000000000000000000000000000000000000000000000000000815230600482015290915060009073a537d64881b84faffb9ae43c951eebf368b71cda9063d9f96e8d90602401602060405180830381865afa158015611b72573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b969190611f3e565b905081158015611ba65750600081115b15611c46576040517f47e7ef2400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052733465b8211278505ae9c6b5ba08ecd9af951a6896906347e7ef2490604401600060405180830381600087803b158015611c2d57600080fd5b505af1158015611c41573d6000803e3d6000fd5b505050505b6040517fc00007b000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152733465b8211278505ae9c6b5ba08ecd9af951a68969063c00007b09060240161120c565b6060611cbb8484600085611cc3565b949350505050565b606082471015611d55576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610305565b843b611dbd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610305565b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051611de691906121f5565b60006040518083038185875af1925050503d8060008114611e23576040519150601f19603f3d011682016040523d82523d6000602084013e611e28565b606091505b5091509150611e38828286611e43565b979650505050505050565b60608315611e52575081610c67565b825115611e625782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103059190612211565b73ffffffffffffffffffffffffffffffffffffffff81168114610f5357600080fd5b60008060408385031215611ecb57600080fd5b823591506020830135611edd81611e96565b809150509250929050565b600080600060608486031215611efd57600080fd5b83359250602084013591506040840135611f1681611e96565b809150509250925092565b600060208284031215611f3357600080fd5b8135610c6781611e96565b600060208284031215611f5057600080fd5b5051919050565b600060208284031215611f6957600080fd5b81518015158114610c6757600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082821015611fba57611fba611f79565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561203557612035611fbf565b604052919050565b600067ffffffffffffffff82111561205757612057611fbf565b5060051b60200190565b6000602080838503121561207457600080fd5b825167ffffffffffffffff81111561208b57600080fd5b8301601f8101851361209c57600080fd5b80516120af6120aa8261203d565b611fee565b81815260059190911b820183019083810190878311156120ce57600080fd5b928401925b82841015611e38578351825292840192908401906120d3565b600060208083850312156120ff57600080fd5b825167ffffffffffffffff81111561211657600080fd5b8301601f8101851361212757600080fd5b80516121356120aa8261203d565b81815260059190911b8201830190838101908783111561215457600080fd5b928401925b82841015611e3857835161216c81611e96565b82529284019290840190612159565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006000198214156121be576121be611f79565b5060010190565b60005b838110156121e05781810151838201526020016121c8565b838111156121ef576000848401525b50505050565b600082516122078184602087016121c5565b9190910192915050565b60208152600082518060208401526122308160408501602087016121c5565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fea26469706673582212202edb600d91ac482549c5ec75dcc8ae3beaf2439928beb793f57dcd987d64fd9664736f6c634300080a003368747470733a2f2f7265766573742e6d7970696e6174612e636c6f75642f697066732f516d524c65736637437a774c61704a53336157574d397753394871677658385a33367a516857536431754d466d70000000000000000000000000d2c6eb7527ab1e188638b86f2c14bbad5a431d78