4 txs
12 calls
constructor
constructor(address _erc20, address _trusted)
functions
getCollateralBalanceAndIndex
viewfunction getCollateralBalanceAndIndex(address _wNFTAddress, uint256 _wNFTTokenId, uint8 _collateralType, address _erc, uint256 _tokenId) view returns (uint256, uint256)
getOriginalURI
viewfunction getOriginalURI(address _wNFTAddress, uint256 _wNFTTokenId) view returns (string uri_)
getWrappedToken
viewfunction getWrappedToken(address _wNFTAddress, uint256 _wNFTTokenId) view returns (tuple)
lastWNFTId
viewfunction lastWNFTId(uint8) view returns (address contractAddress, uint256 tokenId)
MAX_COLLATERAL_SLOTS
viewfunction MAX_COLLATERAL_SLOTS() view returns (uint256)
owner
viewfunction owner() view returns (address)
protocolTechToken
viewfunction protocolTechToken() view returns (address)
protocolWhiteList
viewfunction protocolWhiteList() view returns (address)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
trustedOperator
viewfunction trustedOperator(address) view returns (bool)
wnftTypes
viewfunction wnftTypes(address) view returns (uint8)
addCollateral
payablefunction addCollateral(address _wNFTAddress, uint256 _wNFTTokenId, tuple[] _collateral) payable
chargeFees
nonpayablefunction chargeFees(address _wNFTAddress, uint256 _wNFTTokenId, address _from, address _to, bytes1 _feeType) returns (bool charged)
onERC1155BatchReceived
nonpayablefunction onERC1155BatchReceived(address, address, uint256[], uint256[], bytes) returns (bytes4)
onERC1155Received
nonpayablefunction onERC1155Received(address, address, uint256, uint256, bytes) returns (bytes4)
onERC721Received
nonpayablefunction onERC721Received(address, address, uint256, bytes) returns (bytes4)
renounceOwnership
nonpayablefunction renounceOwnership()
setMaxCollateralSlots
nonpayablefunction setMaxCollateralSlots(uint256 _count)
setTrustedOperatorStatus
nonpayablefunction setTrustedOperatorStatus(address _operator, bool _status)
setWhiteList
nonpayablefunction setWhiteList(address _wlAddress)
setWNFTId
nonpayablefunction setWNFTId(uint8 _assetOutType, address _wnftContract, uint256 _tokenId)
transferIn
nonpayablefunction transferIn(tuple _assetItem, address _from) returns (uint256 _transferedValue)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
unWrap
nonpayablefunction unWrap(address _wNFTAddress, uint256 _wNFTTokenId)
unWrap
nonpayablefunction unWrap(uint8 _wNFTType, address _wNFTAddress, uint256 _wNFTTokenId, bool _isEmergency)
unWrap
nonpayablefunction unWrap(uint8 _wNFTType, address _wNFTAddress, uint256 _wNFTTokenId)
wrap
payablefunction wrap(tuple _inData, tuple[] _collateral, address _wrappFor) payable returns (tuple)
wrapUnsafe
payablefunction wrapUnsafe(tuple _inData, tuple[] _collateral, address _wrappFor) payable returns (tuple)
events
CollateralAdded
event CollateralAdded(address indexed wrappedAddress, uint256 indexed wrappedId, uint8 assetType, address collateralAddress, uint256 collateralTokenId, uint256 collateralBalance)
EnvelopFee
event EnvelopFee(address indexed receiver, address indexed wNFTConatract, uint256 indexed wNFTTokenId, uint256 amount)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
PartialUnWrapp
event PartialUnWrapp(address indexed wrappedAddress, uint256 indexed wrappedId, uint256 lastCollateralIndex)
SuspiciousFail
event SuspiciousFail(address indexed wrappedAddress, uint256 indexed wrappedId, address indexed failedContractAddress)
UnWrappedV1
event UnWrappedV1(address indexed wrappedAddress, address indexed originalAddress, uint256 indexed wrappedId, uint256 originalTokenId, address beneficiary, uint256 nativeCollateralAmount, bytes2 rules)
WrappedV1
event WrappedV1(address indexed inAssetAddress, address indexed outAssetAddress, uint256 indexed inAssetTokenId, uint256 outTokenId, address wnftFirstOwner, uint256 nativeCollateralAmount, bytes2 rules)
errors
UnSupportedAsset
error UnSupportedAsset(((uint8 assetType, address contractAddress) asset, uint256 tokenId, uint256 amount) asset)
creation bytecode
0x608060405260196002553480156200001657600080fd5b506040516200604e3803806200604e8339810160408190526200003991620001bc565b6001600055816200004a336200014d565b6001600160a01b038116620000b15760405162461bcd60e51b8152602060048201526024808201527f50726f746f636f6c54656368546f6b656e2063616e74206265207a65726f2076604482015263616c756560e01b606482015260840160405180910390fd5b600380546001600160a01b0319166001600160a01b03831690811790915560408051632dceecbb60e21b8152905163b73bb2ec9160048082019260009290919082900301818387803b1580156200010757600080fd5b505af11580156200011c573d6000803e3d6000fd5b5050506001600160a01b039092166000908152600860205260409020805460ff1916600117905550620001f4915050565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b80516001600160a01b0381168114620001b757600080fd5b919050565b60008060408385031215620001d057600080fd5b620001db836200019f565b9150620001eb602084016200019f565b90509250929050565b615e4a80620002046000396000f3fe6080604052600436106101b75760003560e01c80638da5cb5b116100ec578063a50410401161008a578063f1551a9c11610064578063f1551a9c14610567578063f23a6e611461059c578063f2fde38b146105c8578063faf7d720146105e857600080fd5b8063a5041040146104fa578063bc197c811461051a578063c424d4f71461053a57600080fd5b8063980550ca116100c6578063980550ca146104845780639a251c291461049a5780639a7b0509146104ad578063a0c889f6146104da57600080fd5b80638da5cb5b1461042557806391ddb1461461044357806397da0ceb1461045657600080fd5b806339e899ee1161015957806351b5deec1161013357806351b5deec1461038357806366967cbb146103b3578063715018a6146103f05780637f6d4c931461040557600080fd5b806339e899ee1461032357806342fb01a8146103435780634d36d0851461036357600080fd5b80631fe438a2116101955780631fe438a214610262578063320a18dc14610284578063331758e6146102a45780633360aa3c146102c457600080fd5b806301ffc9a7146101bc57806310118ebb146101f1578063150b7a0214610229575b600080fd5b3480156101c857600080fd5b506101dc6101d7366004614cde565b610608565b60405190151581526020015b60405180910390f35b3480156101fd57600080fd5b50600454610211906001600160a01b031681565b6040516001600160a01b0390911681526020016101e8565b34801561023557600080fd5b50610249610244366004614e2a565b61063f565b6040516001600160e01b031990911681526020016101e8565b34801561026e57600080fd5b5061028261027d366004614ea3565b610650565b005b34801561029057600080fd5b5061028261029f366004614ee9565b610683565b3480156102b057600080fd5b50600354610211906001600160a01b031681565b3480156102d057600080fd5b506103046102df366004614f2a565b600560205260009081526040902080546001909101546001600160a01b039091169082565b604080516001600160a01b0390931683526020830191909152016101e8565b34801561032f57600080fd5b5061028261033e366004614f47565b61078b565b34801561034f57600080fd5b5061028261035e366004614f64565b6107b5565b610376610371366004615002565b6108af565b6040516101e891906150e9565b34801561038f57600080fd5b506101dc61039e366004614f47565b60086020526000908152604090205460ff1681565b3480156103bf57600080fd5b506103e36103ce366004614f47565b60066020526000908152604090205460ff1681565b6040516101e891906150f7565b3480156103fc57600080fd5b50610282610f07565b34801561041157600080fd5b506101dc61042036600461511b565b610f1b565b34801561043157600080fd5b506001546001600160a01b0316610211565b610282610451366004615183565b610fd6565b34801561046257600080fd5b50610476610471366004615252565b61104d565b6040519081526020016101e8565b34801561049057600080fd5b5061047660025481565b6103766104a8366004615002565b6110c2565b3480156104b957600080fd5b506104cd6104c836600461527f565b6114e9565b6040516101e891906152cf565b3480156104e657600080fd5b506102826104f5366004615302565b61160c565b34801561050657600080fd5b50610282610515366004614ee9565b611619565b34801561052657600080fd5b506102496105353660046153a4565b61162b565b34801561054657600080fd5b5061055a61055536600461527f565b61163d565b6040516101e8919061557c565b34801561057357600080fd5b50610587610582366004615649565b6119ae565b604080519283526020830191909152016101e8565b3480156105a857600080fd5b506102496105b73660046156a4565b63f23a6e6160e01b95945050505050565b3480156105d457600080fd5b506102826105e3366004614f47565b611b85565b3480156105f457600080fd5b5061028261060336600461527f565b611bfe565b60006001600160e01b03198216630271189760e51b148061063957506301ffc9a760e01b6001600160e01b03198316145b92915050565b630a85bd0160e11b5b949350505050565b610658611c2e565b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b61068b611c2e565b6001600160a01b0382166106d85760405162461bcd60e51b815260206004820152600f60248201526e4e6f207a65726f206164647265737360881b60448201526064015b60405180910390fd5b6040518060400160405280836001600160a01b03168152602001828152506005600085600781111561070c5761070c61507b565b600781111561071d5761071d61507b565b815260208082019290925260409081016000908120845181546001600160a01b0319166001600160a01b03918216178255948401516001918201559386168152600690925290208054859260ff19909116908360078111156107815761078161507b565b0217905550505050565b610793611c2e565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b6000806107c3868686611c88565b915091506107d18585611fa7565b6107da57600080fd5b6107eb85853330600360f81b6122db565b5060006107fd868660016000806119ae565b50905061080b8686866126c9565b610817575050506108a9565b6108248787858886612d0d565b6001600160a01b0386811660008181526007602090815260408083208a84529091529081902080546001820154600483015460089093015493518b96610100909304831695947fabb50c1815800da62a4637d3272d1584df1ee8cbd963d90fb44eb55b63acfcb59461089d941691899160f01b9061570c565b60405180910390a45050505b50505050565b6040805160a08101825260006060820181815260808301829052825260208201819052918101919091526108e1612e10565b6108eb8583612e69565b6109295760405162461bcd60e51b815260206004820152600f60248201526e15dc985c0818da1958dac819985a5b608a1b60448201526064016106cf565b60016109386020870187614f2a565b60078111156109495761094961507b565b14158015610975575060006109616020870187614f2a565b60078111156109725761097261507b565b14155b156109e55761099361098c3687900387018761573a565b33306131cc565b61099c86613829565b146109e55760405162461bcd60e51b81526020600482015260196024820152780537573706963696f757320617373657420666f72207772617603c1b60448201526064016106cf565b6001600560006109fd61012089016101008a01614f2a565b6007811115610a0e57610a0e61507b565b6007811115610a1f57610a1f61507b565b81526020019081526020016000206001016000828254610a3f919061576c565b90915550610b059050610a5a61012087016101008801614f2a565b60056000610a706101208a016101008b01614f2a565b6007811115610a8157610a8161507b565b6007811115610a9257610a9261507b565b815260208101919091526040016000908120546001600160a01b0316908590600590610ac66101208c016101008d01614f2a565b6007811115610ad757610ad761507b565b6007811115610ae857610ae861507b565b815260200190815260200160002060010154896101200135613860565b610bac60056000610b1e61012089016101008a01614f2a565b6007811115610b2f57610b2f61507b565b6007811115610b4057610b4061507b565b815260208101919091526040016000908120546001600160a01b031690600590610b726101208a016101008b01614f2a565b6007811115610b8357610b8361507b565b6007811115610b9457610b9461507b565b81526020019081526020016000206001015487613961565b610c5460056000610bc561012089016101008a01614f2a565b6007811115610bd657610bd661507b565b6007811115610be757610be761507b565b815260208101919091526040016000908120546001600160a01b031690600590610c196101208a016101008b01614f2a565b6007811115610c2a57610c2a61507b565b6007811115610c3b57610c3b61507b565b8152602001908152602001600020600101548686610fd6565b610d0160056000610c6d61012089016101008a01614f2a565b6007811115610c7e57610c7e61507b565b6007811115610c8f57610c8f61507b565b815260208101919091526040016000908120546001600160a01b031690600590610cc16101208a016101008b01614f2a565b6007811115610cd257610cd261507b565b6007811115610ce357610ce361507b565b8152602001908152602001600020600101543330600260f81b6122db565b50604085013560056000610d1d61012089016101008a01614f2a565b6007811115610d2e57610d2e61507b565b6007811115610d3f57610d3f61507b565b81526020808201929092526040908101600020546001600160a01b031691610d6b918901908901614f47565b6001600160a01b03167fa90a3b8dae41ae10a708d32fec7bf12da5c90879c98b9c4cca3c8fba91ddf49360056000610dab6101208c016101008d01614f2a565b6007811115610dbc57610dbc61507b565b6007811115610dcd57610dcd61507b565b81526020810191909152604001600020600101548634610df56101608d016101408e0161577f565b604051610e05949392919061570c565b60405180910390a46040805160a08101909152806060810180610e306101208a016101008b01614f2a565b6007811115610e4157610e4161507b565b815260200160056000610e5c6101208c016101008d01614f2a565b6007811115610e6d57610e6d61507b565b6007811115610e7e57610e7e61507b565b81526020808201929092526040016000908120546001600160a01b0316909252918352910190600590610eb96101208a016101008b01614f2a565b6007811115610eca57610eca61507b565b6007811115610edb57610edb61507b565b815260200190815260200160002060010154815260200186610120013581525090506106486001600055565b610f0f611c2e565b610f196000613bec565b565b6000336001600160a01b0387161480610f3357503330145b610f7f5760405162461bcd60e51b815260206004820152601860248201527f4f6e6c7920666f7220774e4654206f722077726170706572000000000000000060448201526064016106cf565b610f8c86868686866122db565b610fca5760405162461bcd60e51b815260206004820152600f60248201526e1199594818da185c99d94819985a5b608a1b60448201526064016106cf565b50600195945050505050565b80151580610fe45750600034115b156108a957610ff584848484613c3e565b6110415760405162461bcd60e51b815260206004820152601860248201527f466f7262696464656e2061646420636f6c6c61746572616c000000000000000060448201526064016106cf565b6108a984848484613e1a565b3360009081526008602052604081205460ff166110a35760405162461bcd60e51b81526020600482015260146024820152734f6e6c792074727573746564206164647265737360601b60448201526064016106cf565b6110ab612e10565b6110b68383306131cc565b90506106396001600055565b6040805160a081018252600060608201818152608083018290528252602080830182905282840182905233825260089052919091205460ff1661113e5760405162461bcd60e51b81526020600482015260146024820152734f6e6c792074727573746564206164647265737360601b60448201526064016106cf565b611146612e10565b61121261115b61012087016101008801614f2a565b600560006111716101208a016101008b01614f2a565b60078111156111825761118261507b565b60078111156111935761119361507b565b815260208101919091526040016000908120546001600160a01b03169085906005906111c76101208c016101008d01614f2a565b60078111156111d8576111d861507b565b60078111156111e9576111e961507b565b8152602001908152602001600020600101546001611207919061576c565b896101200135613860565b60016005600061122a61012089016101008a01614f2a565b600781111561123b5761123b61507b565b600781111561124c5761124c61507b565b8152602001908152602001600020600101600082825461126c919061576c565b9091555061128b905060056000610b1e61012089016101008a01614f2a565b60005b83811015610d0157611364600560006112af6101208a016101008b01614f2a565b60078111156112c0576112c061507b565b60078111156112d1576112d161507b565b815260208101919091526040016000908120546001600160a01b0316906005906113036101208b016101008c01614f2a565b60078111156113145761131461507b565b60078111156113255761132561507b565b815260200190815260200160002060010154878785818110611349576113496157a9565b90506080020180360381019061135f919061573a565b6141a4565b6005600061137a61012089016101008a01614f2a565b600781111561138b5761138b61507b565b600781111561139c5761139c61507b565b81526020019081526020016000206001015460056000886101000160208101906113c69190614f2a565b60078111156113d7576113d761507b565b60078111156113e8576113e861507b565b81526020810191909152604001600020546001600160a01b03167ff3d1350815c4f9db2be36c35f840bfb002835a83ff1c3d8f3a217b1e6227d5aa878785818110611435576114356157a9565b61144b9260206080909202019081019150614f2a565b600781111561145c5761145c61507b565b88888681811061146e5761146e6157a9565b6114879260406080909202019081019150602001614f47565b898987818110611499576114996157a9565b905060800201604001358a8a888181106114b5576114b56157a9565b905060800201606001356040516114cf94939291906157bf565b60405180910390a3806114e1816157e8565b91505061128e565b606060006114f7848461163d565b519050600381515160078111156115105761151061507b565b0361159c5780516020908101519082015160405163c87b56dd60e01b81526001600160a01b039092169163c87b56dd916115509160040190815260200190565b600060405180830381865afa15801561156d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526115959190810190615801565b9150611605565b600481515160078111156115b2576115b261507b565b036115f2578051602090810151908201516040516303a24d0760e21b81526001600160a01b0390921691630e89341c916115509160040190815260200190565b6040518060200160405280600081525091505b5092915050565b611614611c2e565b600255565b61162683838360006107b5565b505050565b63bc197c8160e01b5b95945050505050565b604080516101808101825260006101408201818152610160830182905260e083019081526101008301829052610120830182905282526060602083018190529282018190528282018390526080820183905260a082019290925260c08101919091526001600160a01b0383166000908152600760208181526040808420868552909152918290208251610180810190935280549091839160e0830191849183916101408601918491839160ff16908111156116fa576116fa61507b565b600781111561170b5761170b61507b565b8152905461010090046001600160a01b031660209182015290825260018301548282015260029092015460409182015291835260038401805483518184028101840190945280845293820193909160009084015b828210156117f6576000848152602090206040805160a08101909152600384029091018054829060608201908390829060ff1660078111156117a3576117a361507b565b60078111156117b4576117b461507b565b8152905461010090046001600160a01b03166020918201529082526001838101548383015260029093015460409092019190915291835292909201910161175f565b5050509082525060048201546001600160a01b0316602080830191909152600583018054604080518285028101850182528281529401939260009084015b828210156118965760008481526020908190206040805160608101825260038602909201805460f81b6001600160f81b0319168352600180820154848601526002909101546001600160a01b0316918301919091529083529092019101611834565b50505050815260200160068201805480602002602001604051908101604052809291908181526020016000905b8282101561190f5760008481526020908190206040805180820190915260028502909101805460f81b6001600160f81b03191682526001908101548284015290835290920191016118c3565b50505050815260200160078201805480602002602001604051908101604052809291908181526020016000905b8282101561198657600084815260209081902060408051808201909152908401546001600160a01b0381168252600160a01b900461ffff168183015282526001909201910161193c565b505050908252506008919091015460f01b6001600160f01b0319166020909101529392505050565b60008060005b6001600160a01b03881660009081526007602090815260408083208a8452909152902060030154811015611b79576001600160a01b0388811660009081526007602090815260408083208b8452909152902060030180549187169183908110611a1f57611a1f6157a9565b600091825260209091206003909102015461010090046001600160a01b0316148015611a9557506001600160a01b03881660009081526007602090815260408083208a84529091529020600301805485919083908110611a8157611a816157a9565b906000526020600020906003020160010154145b8015611b0d5750856007811115611aae57611aae61507b565b6001600160a01b03891660009081526007602090815260408083208b84529091529020600301805483908110611ae657611ae66157a9565b600091825260209091206003909102015460ff166007811115611b0b57611b0b61507b565b145b15611b67576001600160a01b03881660009081526007602090815260408083208a84529091529020600301805482908110611b4a57611b4a6157a9565b906000526020600020906003020160020154819250925050611b7b565b80611b71816157e8565b9150506119b4565b505b9550959350505050565b611b8d611c2e565b6001600160a01b038116611bf25760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106cf565b611bfb81613bec565b50565b6001600160a01b038216600090815260066020526040812054611c2a9160ff90911690849084906107b5565b5050565b6001546001600160a01b03163314610f195760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106cf565b600080611cb5600160f01b611c9d868661163d565b60c0015181166001600160f01b031990811691161490565b15611d025760405162461bcd60e51b815260206004820152601b60248201527f556e577261707020666f7262696464656e20627920617574686f72000000000060448201526064016106cf565b6003856007811115611d1657611d1661507b565b03611de3576040516331a9108f60e11b8152600481018490526001600160a01b03851690636352211e90602401602060405180830381865afa158015611d60573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d84919061586e565b91506001600160a01b0382163314611dde5760405162461bcd60e51b815260206004820152601860248201527f4f6e6c79206f776e65722063616e20756e77726170206974000000000000000060448201526064016106cf565b611f9f565b6004856007811115611df757611df761507b565b03611f405760405163bd85b03960e01b8152600481018490526001600160a01b0385169063bd85b03990602401602060405180830381865afa158015611e41573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e65919061588b565b604051627eeac760e11b815233600482018190526024820186905293509091506001600160a01b0385169062fdd58e90604401602060405180830381865afa158015611eb5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ed9919061588b565b8114611dde5760405162461bcd60e51b815260206004820152603060248201527f45524331313520756e7772617020617661696c61626c65206f6e6c7920666f7260448201526f20616c6c20746f74616c537570706c7960801b60648201526084016106cf565b6040805160a08101909152806060810180886007811115611f6357611f6361507b565b8152602001876001600160a01b03168152508152602001848152602001600081525060405163391102fb60e01b81526004016106cf91906150e9565b935093915050565b6000805b6001600160a01b03841660009081526007602090815260408083208684529091529020600601548110156122d1576001600160a01b03841660009081526007602090815260408083208684529091529020600601805482908110612011576120116157a9565b600091825260208220600291909102015460f81b6001600160f81b03191690036120c1576001600160a01b03841660009081526007602090815260408083208684529091529020600601805442919083908110612070576120706157a9565b90600052602060002090600202016001015411156120c15760405162461bcd60e51b815260206004820152600e60248201526d2a34b6b2a637b1b59032b93937b960911b60448201526064016106cf565b6001600160a01b038416600090815260076020908152604080832086845290915290206006018054829081106120f9576120f96157a9565b600091825260209091206002909102015460f81b6001600160f81b031916600160f81b036122bf5760005b6001600160a01b03851660009081526007602090815260408083208784529091529020600501548110156122bd576001600160a01b0385166000908152600760209081526040808320878452909152902060050180548290811061218a5761218a6157a9565b600091825260208220600391909102015460f81b6001600160f81b03191690036122ab576001600160a01b0385166000908152600760209081526040808320878452909152812060050180546122139188918891600291879081106121f1576121f16157a9565b600091825260208220600260039092020101546001600160a01b0316906119ae565b506001600160a01b038716600090815260076020908152604080832089845290915290206006018054919250829185908110612251576122516157a9565b90600052602060002090600202016001015411156122a95760405162461bcd60e51b81526020600482015260156024820152742a3930b739b332b92332b2a637b1b59032b93937b960591b60448201526064016106cf565b505b806122b5816157e8565b915050612124565b505b806122c9816157e8565b915050611fab565b5060019392505050565b60006001600160f81b0319821681036116345760005b6001600160a01b03871660009081526007602090815260408083208984529091529020600501548110156126bc576001600160a01b03871660009081526007602090815260408083208984529091529020600501805482908110612357576123576157a9565b600091825260208220600391909102015460f81b6001600160f81b03191690036126aa576003546004546001600160a01b0391821691161561245d576004546001600160a01b0389811660009081526007602090815260408083208c84529091529020600501805491909216916373cf00f691859081106123da576123da6157a9565b600091825260209091206003909102016002015460405160e083901b6001600160e01b03191681526001600160a01b039091166004820152602401608060405180830381865afa158015612432573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061245691906158a4565b6060015190505b6000806000836001600160a01b031663ce244ce1600760008e6001600160a01b03166001600160a01b0316815260200190815260200160002060008d815260200190815260200160002060050187815481106124bb576124bb6157a9565b9060005260206000209060030201600760008f6001600160a01b03166001600160a01b0316815260200190815260200160002060008e81526020019081526020016000206007018c8c6040518563ffffffff1660e01b81526004016125239493929190615928565b600060405180830381865afa158015612540573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526125689190810190615a40565b919450925090506000805b82518110156126a357306001600160a01b0316838281518110612598576125986157a9565b60200260200101516001600160a01b0316036125d2576125d28d8d8784815181106125c5576125c56157a9565b60200260200101516141a4565b6126288582815181106125e7576125e76157a9565b6020026020010151858381518110612601576126016157a9565b602002602001015185848151811061261b5761261b6157a9565b60200260200101516131cc565b91508b8d6001600160a01b0316848381518110612647576126476157a9565b60200260200101516001600160a01b03167f2e7d475f6480b44a6b26e0a71fd4bf4fbf7842b803ad204a4d23042a02bd73358560405161268991815260200190565b60405180910390a48061269b816157e8565b915050612573565b5050505050505b806126b4816157e8565b9150506122f1565b5060019695505050505050565b6001600160a01b038381166000908152600760209081526040808320868452909152812060040154909182913391161561272857506001600160a01b038086166000908152600760209081526040808320888452909152902060040154165b60005b6001600160a01b0387166000908152600760209081526040808320898452909152902060030154811015612b35576001600160a01b03871660009081526007602090815260408083208984529091528120600301805483908110612791576127916157a9565b600091825260209091206003909102015460ff1660078111156127b6576127b661507b565b14612a8b578415612889576001600160a01b0387166000908152600760209081526040808320898452909152902060030180546128829190839081106127fe576127fe6157a9565b600091825260209091206040805160a081019091526003909202018054829060608201908390829060ff16600781111561283a5761283a61507b565b600781111561284b5761284b61507b565b8152905461010090046001600160a01b031660209182015290825260018301549082015260029091015460409091015230846143f3565b925061294d565b6001600160a01b03871660009081526007602090815260408083208984529091529020600301805461294a9190839081106128c6576128c66157a9565b600091825260209091206040805160a081019091526003909202018054829060608201908390829060ff1660078111156129025761290261507b565b60078111156129135761291361507b565b8152905461010090046001600160a01b031660209182015290825260018301549082015260029091015460409091015230846131cc565b92505b6001600160a01b03871660009081526007602090815260408083208984529091529020600301805482908110612985576129856157a9565b9060005260206000209060030201600201548314612a23576001600160a01b038716600090815260076020908152604080832089845290915290206003018054829081106129d5576129d56157a9565b600091825260208220600390910201546040516001600160a01b0361010090920482169289928b16917ffca203c3f6987c2a1dae80f773c277d67920e7bce0cea9c07cd0eb8142e985ca9190a45b6001600160a01b03871660009081526007602090815260408083208984529091528120600301805483908110612a5b57612a5b6157a9565b60009182526020909120600390910201805460ff19166001836007811115612a8557612a8561507b565b02179055505b6103e85a11158015612ace57506001600160a01b0387166000908152600760209081526040808320898452909152902060030154612acb90600190615b89565b81105b15612b235785876001600160a01b03167fd66d44264f9d44e254da71183ff08098f38da4675285592ee80cdbd3b6f5153e83604051612b0f91815260200190565b60405180910390a360009350505050612d06565b80612b2d816157e8565b91505061272b565b5060016001600160a01b03871660009081526007602081815260408084208a85529091529091205460ff1690811115612b7057612b7061507b565b14158015612bb357506001600160a01b038616600090815260076020818152604080842089855290915282205460ff1690811115612bb057612bb061507b565b14155b15612cff5783612c60576001600160a01b038616600090815260076020818152604080842089855290915291829020825160a081019093528054612c5a9392839160608301918491839160ff90911690811115612c1257612c1261507b565b6007811115612c2357612c2361507b565b8152905461010090046001600160a01b031660209182015290825260018301549082015260029091015460409091015230836131cc565b50612cff565b6001600160a01b038616600090815260076020818152604080842089855290915291829020825160a081019093528054612cfd9392839160608301918491839160ff90911690811115612cb557612cb561507b565b6007811115612cc657612cc661507b565b8152905461010090046001600160a01b031660209182015290825260018301549082015260029091015460409091015230836143f3565b505b6001925050505b9392505050565b6003856007811115612d2157612d2161507b565b03612d8657604051630852cd8d60e31b8152600481018390526001600160a01b038516906342966c68906024015b600060405180830381600087803b158015612d6957600080fd5b505af1158015612d7d573d6000803e3d6000fd5b50505050612e09565b6004856007811115612d9a57612d9a61507b565b03612e0957604051637a94c56560e11b81526001600160a01b038481166004830152602482018490526044820183905285169063f5298aca90606401600060405180830381600087803b158015612df057600080fd5b505af1158015612e04573d6000803e3d6000fd5b505050505b5050505050565b600260005403612e625760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016106cf565b6002600055565b6000612e90600160f11b611c9d612e866040870160208801614f47565b604087013561163d565b158015612ea657506001600160a01b0382163014155b6004549091506001600160a01b031615610639576004546001600160a01b0316638f8b138e612edb6040860160208701614f47565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa158015612f1f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f439190615b9c565b15612f905760405162461bcd60e51b815260206004820152601a60248201527f574c3a41737365742064697361626c656420666f72207772617000000000000060448201526064016106cf565b6004546001600160a01b03166352cdc6a6612fb16040860160208701614f47565b612fc36101608701610140880161577f565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526001600160f01b0319166024820152604401602060405180830381865afa158015613016573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061303a9190615b9c565b6130985760405162461bcd60e51b815260206004820152602960248201527f574c3a536f6d652072756c6573206172652064697361626c656420666f7220746044820152681a1a5cc8185cdcd95d60ba1b60648201526084016106cf565b60005b6130a860a0850185615bb9565b9050811015611605576004546001600160a01b031663b6e306ac6130cf60a0870187615bb9565b848181106130df576130df6157a9565b90506060020160400160208101906130f79190614f47565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa15801561313b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061315f9190615b9c565b6131ba5760405162461bcd60e51b815260206004820152602660248201527f574c3a536f6d652061737365747320617265206e6f7420656e61626c656420666044820152656f722066656560d01b60648201526084016106cf565b806131c4816157e8565b91505061309b565b600080600185515160078111156131e5576131e561507b565b0361329f575060408085015190516001600160a01b0384168031926000928381818185875af1925050503d806000811461323b576040519150601f19603f3d011682016040523d82523d6000602084013e613240565b606091505b50509050806132835760405162461bcd60e51b815260206004820152600f60248201526e1d1c985b9cd9995c8819985a5b1959608a1b60448201526064016106cf565b613297826001600160a01b03861631615b89565b925050613821565b600285515160078111156132b5576132b561507b565b0361340b578451602001516040516370a0823160e01b81526001600160a01b038581166004830152909116906370a0823190602401602060405180830381865afa158015613307573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061332b919061588b565b9050306001600160a01b0385160361336457604085015185516020015161335f916001600160a01b039091169085906147c4565b613388565b6040850151855160200151613388916001600160a01b039091169086908690614827565b8451602001516040516370a0823160e01b81526001600160a01b038581166004830152839216906370a08231906024015b602060405180830381865afa1580156133d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133fa919061588b565b6134049190615b89565b9150613821565b600385515160078111156134215761342161507b565b1480156134ad57508451602090810151908601516040516331a9108f60e11b815260048101919091526001600160a01b03868116921690636352211e90602401602060405180830381865afa15801561347e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134a2919061586e565b6001600160a01b0316145b156136b7578451602001516040516370a0823160e01b81526001600160a01b038581166004830152909116906370a0823190602401602060405180830381865afa1580156134ff573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613523919061588b565b90508460000151602001516001600160a01b03166323b872dd858588602001516040518463ffffffff1660e01b815260040161356193929190615c01565b600060405180830381600087803b15801561357b57600080fd5b505af115801561358f573d6000803e3d6000fd5b50505050826001600160a01b03168560000151602001516001600160a01b0316636352211e87602001516040518263ffffffff1660e01b81526004016135d791815260200190565b602060405180830381865afa1580156135f4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613618919061586e565b6001600160a01b03161480156136a857508451602001516040516370a0823160e01b81526001600160a01b038581166004830152839216906370a0823190602401602060405180830381865afa158015613676573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061369a919061588b565b6136a49190615b89565b6001145b156136b257600191505b613821565b600485515160078111156136cd576136cd61507b565b0361380657845160209081015190860151604051627eeac760e11b81526001600160a01b038681166004830152602482019290925291169062fdd58e90604401602060405180830381865afa15801561372a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061374e919061588b565b90508460000151602001516001600160a01b031663f242432a8585886020015189604001516040518563ffffffff1660e01b81526004016137929493929190615c25565b600060405180830381600087803b1580156137ac57600080fd5b505af11580156137c0573d6000803e3d6000fd5b5050865160209081015190880151604051627eeac760e11b81526001600160a01b03888116600483015260248201929092528594509116915062fdd58e906044016133b9565b8460405163391102fb60e01b81526004016106cf91906150e9565b509392505050565b6000600361383a6020840184614f2a565b600781111561384b5761384b61507b565b0361385857506001919050565b506060013590565b60038560078111156138745761387461507b565b036138ae576040516340c10f1960e01b81526001600160a01b038481166004830152602482018490528516906340c10f1990604401612d4f565b60048560078111156138c2576138c261507b565b0361390357604051630ab714fb60e11b81526001600160a01b038481166004830152602482018490526044820183905285169063156e29f690606401612d4f565b6040805160a081019091528060608101808860078111156139265761392661507b565b8152602001876001600160a01b031681525081526020018381526020018281525060405163391102fb60e01b81526004016106cf91906150e9565b6001600160a01b0383166000908152600760209081526040808320858452909152902081906139908282615c5d565b50506001600160a01b0383166000908152600760209081526040808320858452909152902060040180546001600160a01b03191690556139d86101608201610140830161577f565b6001600160a01b03841660009081526007602090815260408083208684529091528120600801805461ffff191660f09390931c929092179091555b613a2060a0830183615bb9565b9050811015613aaf576001600160a01b03841660009081526007602090815260408083208684529091529020600501613a5c60a0840184615bb9565b83818110613a6c57613a6c6157a9565b835460018101855560009485526020909420606090910292909201926003029091019050613a9a8282615d00565b50508080613aa7906157e8565b915050613a13565b5060005b613ac060c0830183615d3f565b9050811015613b4f576001600160a01b03841660009081526007602090815260408083208684529091529020600601613afc60c0840184615d3f565b83818110613b0c57613b0c6157a9565b835460018101855560009485526020909420604090910292909201926002029091019050613b3a8282615d88565b50508080613b47906157e8565b915050613ab3565b5060005b613b6060e0830183615d3f565b90508110156108a9576001600160a01b038416600090815260076020818152604080842087855290915290912001613b9b60e0840184615d3f565b83818110613bab57613bab6157a9565b83546001810185556000948552602090942060409091029290920192919091019050613bd78282615db0565b50508080613be4906157e8565b915050613b53565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600060036001600160a01b03861660009081526006602052604090205460ff166007811115613c6f57613c6f61507b565b03613d2157604051634f558e7960e01b8152600481018590526001600160a01b03861690634f558e79906024015b602060405180830381865afa158015613cba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613cde9190615b9c565b613d1c5760405162461bcd60e51b815260206004820152600f60248201526e774e4654206e6f742065786973747360881b60448201526064016106cf565b613dfe565b60046001600160a01b03861660009081526006602052604090205460ff166007811115613d5057613d5061507b565b03613d8257604051634f558e7960e01b8152600481018590526001600160a01b03861690634f558e7990602401613c9d565b6040805160a0810182526001600160a01b03871660009081526006602052919091205481906060820190819060ff166007811115613dc257613dc261507b565b8152602001886001600160a01b03168152508152602001858152602001600081525060405163391102fb60e01b81526004016106cf91906150e9565b613e10600160f31b611c9d878761163d565b1595945050505050565b3415613ea4576040805160a08101909152613e5990859085908060608101806001815260006020918201819052918352820152346040909101526141a4565b826001600160a01b0385167ff3d1350815c4f9db2be36c35f840bfb002835a83ff1c3d8f3a217b1e6227d5aa600160008034604051613e9b94939291906157bf565b60405180910390a35b60005b81811015612e09576001838383818110613ec357613ec36157a9565b613ed99260206080909202019081019150614f2a565b6007811115613eea57613eea61507b565b14614192576004546001600160a01b031615614006576004546001600160a01b031663eb9ae17c848484818110613f2357613f236157a9565b613f3c9260406080909202019081019150602001614f47565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa158015613f80573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613fa49190615b9c565b6140065760405162461bcd60e51b815260206004820152602d60248201527f574c3a536f6d652061737365747320617265206e6f7420656e61626c6564206660448201526c1bdc8818dbdb1b185d195c985b609a1b60648201526084016106cf565b61403183838381811061401b5761401b6157a9565b90506080020180360381019061098c919061573a565b614051848484818110614046576140466157a9565b905060800201613829565b1461409a5760405162461bcd60e51b81526020600482015260196024820152780537573706963696f757320617373657420666f72207772617603c1b60448201526064016106cf565b6140b18585858585818110611349576113496157a9565b83856001600160a01b03167ff3d1350815c4f9db2be36c35f840bfb002835a83ff1c3d8f3a217b1e6227d5aa8585858181106140ef576140ef6157a9565b6141059260206080909202019081019150614f2a565b60078111156141165761411661507b565b868686818110614128576141286157a9565b6141419260406080909202019081019150602001614f47565b878787818110614153576141536157a9565b9050608002016040013588888881811061416f5761416f6157a9565b9050608002016060013560405161418994939291906157bf565b60405180910390a35b8061419c816157e8565b915050613ea7565b600281515160078111156141ba576141ba61507b565b14806141d95750600181515160078111156141d7576141d761507b565b145b15614227576020810151156142275760405162461bcd60e51b8152602060048201526014602482015273546f6b656e4964206d757374206265207a65726f60601b60448201526064016106cf565b6003815151600781111561423d5761423d61507b565b0361428a5760408101511561428a5760405162461bcd60e51b8152602060048201526013602482015272416d6f756e74206d757374206265207a65726f60681b60448201526064016106cf565b6001600160a01b038316600090815260076020908152604080832085845290915290206003015415806142d05750600381515160078111156142ce576142ce61507b565b145b156142e057611626838383614848565b6000614303848484600001516000015185600001516020015186602001516119ae565b915050600081118061437b57508015801561437b575081516020908101516001600160a01b038681166000908152600784526040808220888352909452928320600301805491909216929061435a5761435a6157a9565b600091825260209091206003909102015461010090046001600160a01b0316145b156143e8576040808301516001600160a01b0386166000908152600760209081528382208783529052919091206003018054839081106143bd576143bd6157a9565b906000526020600020906003020160020160008282546143dd919061576c565b909155506108a99050565b6108a9848484614848565b6000806001855151600781111561440c5761440c61507b565b03614481575060408085015190516001600160a01b0384168031926000928381818185875af1925050503d8060008114614462576040519150601f19603f3d011682016040523d82523d6000602084013e614467565b606091505b5050905081846001600160a01b0316316132979190615b89565b600285515160078111156144975761449761507b565b0361462157306001600160a01b0385160361456c5760008560000151602001516001600160a01b03168487604001516040516024016144eb9291906001600160a01b03929092168252602082015260400190565b60408051601f198184030181529181526020820180516001600160e01b031663a9059cbb60e01b179052516145209190615df8565b6000604051808303816000865af19150503d806000811461455d576040519150601f19603f3d011682016040523d82523d6000602084013e614562565b606091505b5050905050614615565b60008560000151602001516001600160a01b03168585886040015160405160240161459993929190615c01565b60408051601f198184030181529181526020820180516001600160e01b03166323b872dd60e01b179052516145ce9190615df8565b6000604051808303816000865af19150503d806000811461460b576040519150601f19603f3d011682016040523d82523d6000602084013e614610565b606091505b505050505b84604001519150613821565b600385515160078111156146375761463761507b565b036146ee5760008560000151602001516001600160a01b03168585886020015160405160240161466993929190615c01565b60408051601f198184030181529181526020820180516001600160e01b03166323b872dd60e01b1790525161469e9190615df8565b6000604051808303816000865af19150503d80600081146146db576040519150601f19603f3d011682016040523d82523d6000602084013e6146e0565b606091505b505090506001925050613821565b600485515160078111156147045761470461507b565b036138065760008560000151602001516001600160a01b031685858860200151896040015160405160240161473c9493929190615c25565b60408051601f198184030181529181526020820180516001600160e01b0316637921219560e11b179052516147719190615df8565b6000604051808303816000865af19150503d80600081146147ae576040519150601f19603f3d011682016040523d82523d6000602084013e6147b3565b606091505b505090508560400151925050613821565b6040516001600160a01b03831660248201526044810182905261162690849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152614ae6565b6108a9846323b872dd60e01b8585856040516024016147f093929190615c01565b6002546001600160a01b0384166000908152600760209081526040808320868452909152902060030154106148bf5760405162461bcd60e51b815260206004820152601d60248201527f546f6f206d75636820746f6b656e7320696e20636f6c6c61746572616c00000060448201526064016106cf565b60005b6001600160a01b0384166000908152600760209081526040808320868452909152902060060154811015614a3c576001600160a01b03841660009081526007602090815260408083208684529091529020600601805482908110614928576149286157a9565b600091825260209091206002909102015460f81b6001600160f81b031916600160f91b03614a2a576001600160a01b038416600090815260076020908152604080832086845290915290206003015461498290600161576c565b6001600160a01b038516600090815260076020908152604080832087845290915290206006018054839081106149ba576149ba6157a9565b9060005260206000209060020201600101541015614a2a5760405162461bcd60e51b815260206004820152602760248201527f546f6f206d75636820636f6c6c61746572616c20736c6f747320666f722074686044820152661a5cc81dd3919560ca1b60648201526084016106cf565b80614a34816157e8565b9150506148c2565b506001600160a01b038316600090815260076020818152604080842086855282528320600390810180546001818101835591865292909420855180519390920201805486959194929385939092849260ff1916918490811115614aa157614aa161507b565b021790555060209182015181546001600160a01b0390911661010002610100600160a81b03199091161790558201516001820155604090910151600290910155505050565b6000614b3b826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316614bbb9092919063ffffffff16565b9050805160001480614b5c575080806020019051810190614b5c9190615b9c565b6116265760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016106cf565b6060610648848460008585600080866001600160a01b03168587604051614be29190615df8565b60006040518083038185875af1925050503d8060008114614c1f576040519150601f19603f3d011682016040523d82523d6000602084013e614c24565b606091505b5091509150614c3587838387614c40565b979650505050505050565b60608315614caf578251600003614ca8576001600160a01b0385163b614ca85760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016106cf565b5081610648565b6106488383815115614cc45781518083602001fd5b8060405162461bcd60e51b81526004016106cf91906152cf565b600060208284031215614cf057600080fd5b81356001600160e01b031981168114612d0657600080fd5b6001600160a01b0381168114611bfb57600080fd5b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b0381118282101715614d5557614d55614d1d565b60405290565b604080519081016001600160401b0381118282101715614d5557614d55614d1d565b604051601f8201601f191681016001600160401b0381118282101715614da557614da5614d1d565b604052919050565b60006001600160401b03821115614dc657614dc6614d1d565b50601f01601f191660200190565b600082601f830112614de557600080fd5b8135614df8614df382614dad565b614d7d565b818152846020838601011115614e0d57600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060808587031215614e4057600080fd5b8435614e4b81614d08565b93506020850135614e5b81614d08565b92506040850135915060608501356001600160401b03811115614e7d57600080fd5b614e8987828801614dd4565b91505092959194509250565b8015158114611bfb57600080fd5b60008060408385031215614eb657600080fd5b8235614ec181614d08565b91506020830135614ed181614e95565b809150509250929050565b60088110611bfb57600080fd5b600080600060608486031215614efe57600080fd5b8335614f0981614edc565b92506020840135614f1981614d08565b929592945050506040919091013590565b600060208284031215614f3c57600080fd5b8135612d0681614edc565b600060208284031215614f5957600080fd5b8135612d0681614d08565b60008060008060808587031215614f7a57600080fd5b8435614f8581614edc565b93506020850135614f9581614d08565b9250604085013591506060850135614fac81614e95565b939692955090935050565b60008083601f840112614fc957600080fd5b5081356001600160401b03811115614fe057600080fd5b6020830191508360208260071b8501011115614ffb57600080fd5b9250929050565b6000806000806060858703121561501857600080fd5b84356001600160401b038082111561502f57600080fd5b90860190610160828903121561504457600080fd5b9094506020860135908082111561505a57600080fd5b5061506787828801614fb7565b9094509250506040850135614fac81614d08565b634e487b7160e01b600052602160045260246000fd5b600881106150af57634e487b7160e01b600052602160045260246000fd5b9052565b80516150c0838251615091565b6020908101516001600160a01b0316838201528101516040808401919091520151606090910152565b6080810161063982846150b3565b602081016106398284615091565b6001600160f81b031981168114611bfb57600080fd5b600080600080600060a0868803121561513357600080fd5b853561513e81614d08565b945060208601359350604086013561515581614d08565b9250606086013561516581614d08565b9150608086013561517581615105565b809150509295509295909350565b6000806000806060858703121561519957600080fd5b84356151a481614d08565b93506020850135925060408501356001600160401b038111156151c657600080fd5b6151d287828801614fb7565b95989497509550505050565b600081830360808112156151f157600080fd5b6151f9614d33565b9150604081121561520957600080fd5b50615212614d5b565b823561521d81614edc565b8152602083013561522d81614d08565b8060208301525080825250604082013560208201526060820135604082015292915050565b60008060a0838503121561526557600080fd5b61526f84846151de565b91506080830135614ed181614d08565b6000806040838503121561529257600080fd5b823561529d81614d08565b946020939093013593505050565b60005b838110156152c65781810151838201526020016152ae565b50506000910152565b60208152600082518060208401526152ee8160408501602087016152ab565b601f01601f19169190910160400192915050565b60006020828403121561531457600080fd5b5035919050565b60006001600160401b0382111561533457615334614d1d565b5060051b60200190565b600082601f83011261534f57600080fd5b8135602061535f614df38361531b565b82815260059290921b8401810191818101908684111561537e57600080fd5b8286015b848110156153995780358352918301918301615382565b509695505050505050565b600080600080600060a086880312156153bc57600080fd5b85356153c781614d08565b945060208601356153d781614d08565b935060408601356001600160401b03808211156153f357600080fd5b6153ff89838a0161533e565b9450606088013591508082111561541557600080fd5b61542189838a0161533e565b9350608088013591508082111561543757600080fd5b5061544488828901614dd4565b9150509295509295909350565b600081518084526020808501945080840160005b8381101561548b576154788783516150b3565b6080969096019590820190600101615465565b509495945050505050565b600081518084526020808501945080840160005b8381101561548b57815180516001600160f81b031916885283810151848901526040908101516001600160a01b031690880152606090960195908201906001016154aa565b600081518084526020808501945080840160005b8381101561548b57815180516001600160f81b03191688528301518388015260409096019590820190600101615503565b600081518084526020808501945080840160005b8381101561548b57815180516001600160a01b0316885283015161ffff168388015260409096019590820190600101615548565b6020815261558e6020820183516150b3565b600060208301516101408060a08501526155ac610160850183615451565b915060408501516155c860c08601826001600160a01b03169052565b506060850151601f19808685030160e08701526155e58483615496565b935060808701519150808685030161010087015261560384836154ef565b935060a087015191508086850301610120870152506156228382615534565b92505060c085015161563f828601826001600160f01b0319169052565b5090949350505050565b600080600080600060a0868803121561566157600080fd5b853561566c81614d08565b945060208601359350604086013561568381614edc565b9250606086013561569381614d08565b949793965091946080013592915050565b600080600080600060a086880312156156bc57600080fd5b85356156c781614d08565b945060208601356156d781614d08565b9350604086013592506060860135915060808601356001600160401b0381111561570057600080fd5b61544488828901614dd4565b9384526001600160a01b0392909216602084015260408301526001600160f01b031916606082015260800190565b60006080828403121561574c57600080fd5b612d0683836151de565b634e487b7160e01b600052601160045260246000fd5b8082018082111561063957610639615756565b60006020828403121561579157600080fd5b81356001600160f01b031981168114612d0657600080fd5b634e487b7160e01b600052603260045260246000fd5b60ff9490941684526001600160a01b039290921660208401526040830152606082015260800190565b6000600182016157fa576157fa615756565b5060010190565b60006020828403121561581357600080fd5b81516001600160401b0381111561582957600080fd5b8201601f8101841361583a57600080fd5b8051615848614df382614dad565b81815285602083850101111561585d57600080fd5b6116348260208301602086016152ab565b60006020828403121561588057600080fd5b8151612d0681614d08565b60006020828403121561589d57600080fd5b5051919050565b6000608082840312156158b657600080fd5b604051608081018181106001600160401b03821117156158d8576158d8614d1d565b60405282516158e681614e95565b815260208301516158f681614e95565b6020820152604083015161590981614e95565b6040820152606083015161591c81614d08565b60608201529392505050565b600060c0820160ff60f81b875460f81b1683526001808801546020818187015260018060a01b0391508160028b0154166040818189015260c060608901528591508a5480875260e0890192508b60005283600020965060005b818110156159aa578754868116855260a01c61ffff168585015296860196928201928601615981565b5050506001600160a01b038916608088015294506159c89350505050565b6001600160a01b03831660a0830152611634565b600082601f8301126159ed57600080fd5b815160206159fd614df38361531b565b82815260059290921b84018101918181019086841115615a1c57600080fd5b8286015b84811015615399578051615a3381614d08565b8352918301918301615a20565b60008060006060808587031215615a5657600080fd5b84516001600160401b0380821115615a6d57600080fd5b818701915087601f830112615a8157600080fd5b81516020615a91614df38361531b565b82815260079290921b8401810191818101908b841115615ab057600080fd5b948201945b83861015615b3657858c036080811215615acf5760008081fd5b615ad7614d33565b604080831215615ae75760008081fd5b615aef614d5b565b92508851615afc81614edc565b835288860151615b0b81614d08565b8387015291815287820151818601528888015191810191909152825260809095019490820190615ab5565b918a0151919850909450505080831115615b4f57600080fd5b615b5b888489016159dc565b94506040870151925080831115615b7157600080fd5b5050615b7f868287016159dc565b9150509250925092565b8181038181111561063957610639615756565b600060208284031215615bae57600080fd5b8151612d0681614e95565b6000808335601e19843603018112615bd057600080fd5b8301803591506001600160401b03821115615bea57600080fd5b6020019150606081023603821315614ffb57600080fd5b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b0394851681529290931660208301526040820152606081019190915260a06080820181905260009082015260c00190565b8135615c6881614edc565b60088110615c8657634e487b7160e01b600052602160045260246000fd5b815460ff821691508160ff1982161783556020840135615ca581614d08565b6001600160a81b03199190911690911760089190911b610100600160a81b031617815560408201356001820155606090910135600290910155565b80546001600160a01b0319166001600160a01b0392909216919091179055565b8135615d0b81615105565b815460ff191660f882901c17825550602082013560018201556040820135615d3281614d08565b6116268160028401615ce0565b6000808335601e19843603018112615d5657600080fd5b8301803591506001600160401b03821115615d7057600080fd5b6020019150600681901b3603821315614ffb57600080fd5b8135615d9381615105565b815460ff191660f882901c17825550602082013560018201555050565b8135615dbb81614d08565b615dc58183615ce0565b50602082013561ffff81168114615ddb57600080fd5b815461ffff60a01b191660a09190911b61ffff60a01b1617905550565b60008251615e0a8184602087016152ab565b919091019291505056fea26469706673582212204dddcf2ab0380c50964ae76940be14a4b94c6b36b5aa4c572ba031c1e93cb4f964736f6c634300081500330000000000000000000000001a9df09bb68ed345ffaaf515991c098cca3b2bb9000000000000000000000000eeb95f5f84de190d47609500311e2e799c2c4aec