9 txs
167 calls
constructor
constructor(string name, string symbol)
functions
activeBalanceOf
viewfunction activeBalanceOf(address user) view returns (uint256 bal)
activeToken
viewfunction activeToken(uint256 tokenId) view returns (bool isActive)
balanceOf
viewfunction balanceOf(address owner) view returns (uint256)
getApproved
viewfunction getApproved(uint256 tokenId) view returns (address)
isApprovedForAll
viewfunction isApprovedForAll(address owner, address operator) view returns (bool)
isAuthorized
viewfunction isAuthorized(address _user) view returns (bool)
lastTokenId
viewfunction lastTokenId() view returns (uint256)
name
viewfunction name() view returns (string)
owner
viewfunction owner() view returns (address)
ownerOf
viewfunction ownerOf(uint256 tokenId) view returns (address)
planAttributes
viewfunction planAttributes() view returns (tuple)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
symbol
viewfunction symbol() view returns (string)
tokenByIndex
viewfunction tokenByIndex(uint256 index) view returns (uint256)
tokenIdAttributes
viewfunction tokenIdAttributes(uint256 tokenId) view returns (tuple attr)
tokenOfOwnerByIndex
viewfunction tokenOfOwnerByIndex(address owner, uint256 index) view returns (uint256)
tokenURI
viewfunction tokenURI(uint256 tokenId) view returns (string)
totalSupply
viewfunction totalSupply() view returns (uint256)
uriGenerator
viewfunction uriGenerator() view returns (address)
addAuthorized
nonpayablefunction addAuthorized(address _authorized)
approve
nonpayablefunction approve(address to, uint256 tokenId)
bulkCancelSubscriptionTo
nonpayablefunction bulkCancelSubscriptionTo(uint256[] _tokenIds)
bulkChangeExpiration
nonpayablefunction bulkChangeExpiration(uint256[] _tokenIds, uint256[] _dates)
bulkRenewTo
nonpayablefunction bulkRenewTo(uint256[] _tokenIds)
bulkSubscribeTo
nonpayablefunction bulkSubscribeTo(address[] _subscribers, string[] _metadata)
burn
nonpayablefunction burn(uint256 tokenId)
cancelSubscriptionTo
nonpayablefunction cancelSubscriptionTo(uint256 _tokenId)
changeExpiration
nonpayablefunction changeExpiration(uint256 _tokenId, uint256 _date)
changeMetaData
nonpayablefunction changeMetaData(uint256 _tokenId, string _metadata)
removeAuthorized
nonpayablefunction removeAuthorized(address _authorized)
renewTo
nonpayablefunction renewTo(uint256 _tokenId)
renounceOwnership
nonpayablefunction renounceOwnership()
safeTransferFrom
nonpayablefunction safeTransferFrom(address from, address to, uint256 tokenId, bytes data)
safeTransferFrom
nonpayablefunction safeTransferFrom(address from, address to, uint256 tokenId)
setApprovalForAll
nonpayablefunction setApprovalForAll(address operator, bool approved)
setDuration
nonpayablefunction setDuration(uint256 _duration)
setEnabled
nonpayablefunction setEnabled(bool _enabled)
setPlanName
nonpayablefunction setPlanName(string _planName)
setUriGenerator
nonpayablefunction setUriGenerator(address _uriGen)
subscribeTo
nonpayablefunction subscribeTo(address _subscriber, string _metadata)
transferFrom
nonpayablefunction transferFrom(address from, address to, uint256 tokenId)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
withdraw
nonpayablefunction withdraw(address _token, uint256 _amount)
events
Approval
event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
ApprovalForAll
event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
Authorized
event Authorized(address _authorized)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
Subscribed
event Subscribed(uint256 tokenId, address subscriber)
SubscriptionCancelled
event SubscriptionCancelled(uint256 tokenId, address subscriber)
SubscriptionExpirationChanged
event SubscriptionExpirationChanged(uint256 tokenId, address subscriber, uint256 expirationTime)
Transfer
event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
UnAuthorized
event UnAuthorized(address _authorized)
errors
AddressEmptyCode
error AddressEmptyCode(address target)
AddressInsufficientBalance
error AddressInsufficientBalance(address account)
ERC721EnumerableForbiddenBatchMint
error ERC721EnumerableForbiddenBatchMint()
ERC721IncorrectOwner
error ERC721IncorrectOwner(address sender, uint256 tokenId, address owner)
ERC721InsufficientApproval
error ERC721InsufficientApproval(address operator, uint256 tokenId)
ERC721InvalidApprover
error ERC721InvalidApprover(address approver)
ERC721InvalidOperator
error ERC721InvalidOperator(address operator)
ERC721InvalidOwner
error ERC721InvalidOwner(address owner)
ERC721InvalidReceiver
error ERC721InvalidReceiver(address receiver)
ERC721InvalidSender
error ERC721InvalidSender(address sender)
ERC721NonexistentToken
error ERC721NonexistentToken(uint256 tokenId)
ERC721OutOfBoundsIndex
error ERC721OutOfBoundsIndex(address owner, uint256 index)
FailedInnerCall
error FailedInnerCall()
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
creation bytecode
0x60806040525f60115534801562000014575f80fd5b506040516200308a3803806200308a8339810160408190526200003791620001bf565b3382825f620000478382620002af565b506001620000568282620002af565b5050506001600160a01b0381166200008757604051631e4fbdf760e01b81525f600482015260240160405180910390fd5b6200009281620000ad565b5050600c80546001600160a01b03191630179055506200037b565b600a80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b634e487b7160e01b5f52604160045260245ffd5b5f82601f83011262000122575f80fd5b81516001600160401b03808211156200013f576200013f620000fe565b604051601f8301601f19908116603f011681019082821181831017156200016a576200016a620000fe565b816040528381526020925086602085880101111562000187575f80fd5b5f91505b83821015620001aa57858201830151818301840152908201906200018b565b5f602085830101528094505050505092915050565b5f8060408385031215620001d1575f80fd5b82516001600160401b0380821115620001e8575f80fd5b620001f68683870162000112565b935060208501519150808211156200020c575f80fd5b506200021b8582860162000112565b9150509250929050565b600181811c908216806200023a57607f821691505b6020821081036200025957634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115620002aa57805f5260205f20601f840160051c81016020851015620002865750805b601f840160051c820191505b81811015620002a7575f815560010162000292565b50505b505050565b81516001600160401b03811115620002cb57620002cb620000fe565b620002e381620002dc845462000225565b846200025f565b602080601f83116001811462000319575f8415620003015750858301515b5f19600386901b1c1916600185901b17855562000373565b5f85815260208120601f198616915b82811015620003495788860151825594840194600190910190840162000328565b50858210156200036757878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b612d0180620003895f395ff3fe608060405234801561000f575f80fd5b5060043610610260575f3560e01c806370a082311161014b578063e985e9c5116100bf578063f5b3e4a411610084578063f5b3e4a41461054a578063f6be71d11461055d578063f76c563b14610570578063f84ddf0b14610583578063fe9fbb801461058c578063feebd5bb146105b7575f80fd5b8063e985e9c5146104de578063e9ff82a7146104f1578063edf5a6a014610511578063f2fde38b14610524578063f3fef3a314610537575f80fd5b8063b88d4fde11610110578063b88d4fde1461046a578063c87b56dd1461047d578063cf1c316a14610490578063d164bef6146104a3578063dc26cf12146104b6578063e51dd5c3146104c9575f80fd5b806370a0823114610423578063715018a6146104365780638da5cb5b1461043e57806395d89b411461044f578063a22cb46514610457575f80fd5b8063328d8f72116101e2578063485d7d94116101a7578063485d7d94146103b15780634f6ccce7146103c45780634f6f96dc146103d757806359f769a9146103ea5780636352211e146103fd57806368af2c7114610410575f80fd5b8063328d8f72146103525780633d218a521461036557806342842e0e1461037857806342966c681461038b57806347cf4b231461039e575f80fd5b806318160ddd1161022857806318160ddd146102f45780631c722dbd1461030657806323b872dd14610319578063277e69de1461032c5780632f745c591461033f575f80fd5b806301ffc9a71461026457806306a93d241461028c57806306fdde031461029f578063081812fc146102b4578063095ea7b3146102df575b5f80fd5b6102776102723660046121ef565b6105ca565b60405190151581526020015b60405180910390f35b61027761029a36600461220a565b6105da565b6102a7610629565b604051610283919061226e565b6102c76102c236600461220a565b6106b8565b6040516001600160a01b039091168152602001610283565b6102f26102ed366004612296565b6106df565b005b6008545b604051908152602001610283565b6102f261031436600461237e565b6106ee565b6102f26103273660046123af565b61073d565b6102f261033a36600461237e565b6107cb565b6102f861034d366004612296565b61084d565b6102f26103603660046123f5565b6108b0565b6102f2610373366004612454565b6108cb565b6102f26103863660046123af565b610918565b6102f261039936600461220a565b610937565b6010546102c7906001600160a01b031681565b6102f26103bf36600461249b565b610942565b6102f86103d236600461220a565b6109a1565b6102f26103e53660046124b4565b6109f6565b6102f86103f836600461249b565b610a0b565b6102c761040b36600461220a565b610a5f565b6102f261041e3660046124f2565b610a69565b6102f861043136600461249b565b610b57565b6102f2610b9c565b600a546001600160a01b03166102c7565b6102a7610baf565b6102f2610465366004612551565b610bbe565b6102f26104783660046125ac565b610bc9565b6102a761048b36600461220a565b610be0565b6102f261049e36600461249b565b610dbe565b6102f26104b136600461249b565b610e19565b6102f26104c436600461220a565b610e43565b6104d1610ea3565b604051610283919061264f565b6102776104ec36600461269e565b610fa2565b6105046104ff36600461220a565b610fcf565b60405161028391906126cf565b6102f261051f366004612747565b6110c7565b6102f261053236600461249b565b6111ef565b6102f2610545366004612296565b61122c565b6102f261055836600461220a565b611249565b6102f261056b36600461220a565b61127d565b6102f261057e3660046127ad565b61128a565b6102f860115481565b61027761059a36600461249b565b6001600160a01b03165f908152600b602052604090205460ff1690565b6102f26105c53660046127cd565b6112e1565b5f6105d482611379565b92915050565b5f60115482111580156105ef5750600f5460ff165b801561060a57505f8281526012602052604090206002015442105b80156105d45750505f9081526012602052604090206001015442101590565b60605f805461063790612802565b80601f016020809104026020016040519081016040528092919081815260200182805461066390612802565b80156106ae5780601f10610685576101008083540402835291602001916106ae565b820191905f5260205f20905b81548152906001019060200180831161069157829003601f168201915b5050505050905090565b5f6106c28261139d565b505f828152600460205260409020546001600160a01b03166105d4565b6106ea8282336113d5565b5050565b6106f66113e2565b5f5b81518161ffff1610156106ea5761072b828261ffff168151811061071e5761071e612834565b6020026020010151611478565b806107358161285c565b9150506106f8565b6001600160a01b03821661076b57604051633250574960e11b81525f60048201526024015b60405180910390fd5b5f6107778383336114dd565b9050836001600160a01b0316816001600160a01b0316146107c5576040516364283d7b60e01b81526001600160a01b0380861660048301526024820184905282166044820152606401610762565b50505050565b6107d36113e2565b600f5460ff166107f55760405162461bcd60e51b81526004016107629061287c565b5f5b81518161ffff1610156106ea5761083b828261ffff168151811061081d5761081d612834565b6020026020010151600c600201544261083691906128ac565b6114f3565b806108458161285c565b9150506107f7565b5f61085783610b57565b82106108885760405163295f44f760e21b81526001600160a01b038416600482015260248101839052604401610762565b506001600160a01b03919091165f908152600660209081526040808320938352929052205490565b6108b86113e2565b600f805460ff1916911515919091179055565b6108d36113e2565b826011548111156108f65760405162461bcd60e51b8152600401610762906128bf565b5f84815260126020526040902060030161091183858361293a565b5050505050565b61093283838360405180602001604052805f815250610bc9565b505050565b6106ea5f82336114dd565b61094a611562565b6001600160a01b0381165f818152600b6020908152604091829020805460ff1916905590519182527fb392249530409099dedf8a34dfe3498cfc2f81a2f80804432221e95cda37175491015b60405180910390a150565b5f6109ab60085490565b82106109d35760405163295f44f760e21b81525f600482015260248101839052604401610762565b600882815481106109e6576109e6612834565b905f5260205f2001549050919050565b6109fe6113e2565b600d61093282848361293a565b5f610a1582610b57565b90508015610a5a575f5b81811015610a58575f610a32848361084d565b9050610a3d816105da565b610a4f5782610a4b816129f3565b9350505b50600101610a1f565b505b919050565b5f6105d48261139d565b610a716113e2565b600f5460ff16610a935760405162461bcd60e51b81526004016107629061287c565b8051825114610af25760405162461bcd60e51b815260206004820152602560248201527f52657175697265642073616d6520616d6f756e74206f662049447320616e6420604482015264646174657360d81b6064820152608401610762565b5f5b82518161ffff16101561093257610b45838261ffff1681518110610b1a57610b1a612834565b6020026020010151838361ffff1681518110610b3857610b38612834565b60200260200101516114f3565b80610b4f8161285c565b915050610af4565b5f6001600160a01b038216610b81576040516322718ad960e21b81525f6004820152602401610762565b506001600160a01b03165f9081526003602052604090205490565b610ba4611562565b610bad5f61158f565b565b60606001805461063790612802565b6106ea3383836115e0565b610bd484848461073d565b6107c58484848461167e565b6060610beb8261139d565b50604080516003808252608082019092525f91816020015b6060815260200190600190039081610c035750505f8481526012602052604081206002015491925090421015610c61575f848152601260205260409020600201546201518090610c54904290612a08565b610c5e9190612a1b565b90505b610c6a8461179d565b825f81518110610c7c57610c7c612834565b6020026020010181905250610c908161179d565b82600181518110610ca357610ca3612834565b6020026020010181905250610cb7846105da565b15610cfe576040518060400160405280600681526020016541637469766560d01b81525082600281518110610cee57610cee612834565b6020026020010181905250610d3e565b60405180604001604052806008815260200167111a5cd8589b195960c21b81525082600281518110610d3257610d32612834565b60200260200101819052505b6010546001600160a01b03166383b104f9610d57610629565b846040518363ffffffff1660e01b8152600401610d75929190612a3a565b5f60405180830381865afa158015610d8f573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610db69190810190612aaa565b949350505050565b610dc6611562565b6001600160a01b0381165f818152600b6020908152604091829020805460ff1916600117905590519182527fdc84e3a4c83602050e3865df792a4e6800211a79ac60db94e703a820ce8929249101610996565b610e216113e2565b601080546001600160a01b0319166001600160a01b0392909216919091179055565b610e4b6113e2565b80601154811115610e6e5760405162461bcd60e51b8152600401610762906128bf565b600f5460ff16610e905760405162461bcd60e51b81526004016107629061287c565b600e546106ea90839061083690426128ac565b610ed660405180608001604052805f6001600160a01b03168152602001606081526020015f81526020015f151581525090565b6040805160808101909152600c80546001600160a01b03168252600d8054602084019190610f0390612802565b80601f0160208091040260200160405190810160405280929190818152602001828054610f2f90612802565b8015610f7a5780601f10610f5157610100808354040283529160200191610f7a565b820191905f5260205f20905b815481529060010190602001808311610f5d57829003601f168201915b50505091835250506002820154602082015260039091015460ff161515604090910152919050565b6001600160a01b039182165f90815260056020908152604080832093909416825291909152205460ff1690565b610ff760405180608001604052805f81526020015f81526020015f8152602001606081525090565b60125f8381526020019081526020015f206040518060800160405290815f8201548152602001600182015481526020016002820154815260200160038201805461104090612802565b80601f016020809104026020016040519081016040528092919081815260200182805461106c90612802565b80156110b75780601f1061108e576101008083540402835291602001916110b7565b820191905f5260205f20905b81548152906001019060200180831161109a57829003601f168201915b5050505050815250509050919050565b600f5460ff166110e95760405162461bcd60e51b81526004016107629061287c565b6110f16113e2565b8281146111405760405162461bcd60e51b815260206004820152601a60248201527f4d7563686f4e46543a20646966666572656e74206c656e6774680000000000006044820152606401610762565b5f5b61ffff81168411156109115761117c85858361ffff1681811061116757611167612834565b9050602002016020810190610431919061249b565b5f036111dd576111dd85858361ffff1681811061119b5761119b612834565b90506020020160208101906111b0919061249b565b84848461ffff168181106111c6576111c6612834565b90506020028101906111d89190612b1b565b61182c565b806111e78161285c565b915050611142565b6111f7611562565b6001600160a01b03811661122057604051631e4fbdf760e01b81525f6004820152602401610762565b6112298161158f565b50565b6112346113e2565b816109326001600160a01b0382163384611935565b6112516113e2565b806011548111156112745760405162461bcd60e51b8152600401610762906128bf565b6106ea82611478565b6112856113e2565b600e55565b6112926113e2565b816011548111156112b55760405162461bcd60e51b8152600401610762906128bf565b600f5460ff166112d75760405162461bcd60e51b81526004016107629061287c565b61093283836114f3565b600f5460ff166113035760405162461bcd60e51b81526004016107629061287c565b61130b6113e2565b8261131581610b57565b1561136e5760405162461bcd60e51b8152602060048201526024808201527f4d7563686f4e4654202d206e6f74207a65726f2062616c616e636520666f72206044820152633ab9b2b960e11b6064820152608401610762565b6107c584848461182c565b5f6001600160e01b0319821663780e9d6360e01b14806105d457506105d482611987565b5f818152600260205260408120546001600160a01b0316806105d457604051637e27328960e01b815260048101849052602401610762565b61093283838360016119d6565b600a546001600160a01b031633148061140e5750335f908152600b602052604090205460ff1615156001145b610bad5760405162461bcd60e51b815260206004820152603560248201527f41636365737320436f6e74726f6c3a2063616c6c6572206973206e6f7420746860448201527419481bdddb995c881bdc88185d5d1a1bdc9a5e9959605a1b6064820152608401610762565b5f818152600260205260409020546001600160a01b031661149882611ada565b604080518381526001600160a01b03831660208201527f533734a768f070673b823079652464b7e002bb51cdf15e3108209f397425225f910160405180910390a15050565b5f6114e9848484611b12565b90505b9392505050565b5f82815260026020818152604080842054601283529381902090920184905581518581526001600160a01b03909316908301819052908201839052907f9f9cd93677008124701daf99eaa2255e5e2223458bee993592b59162933f8064906060015b60405180910390a1505050565b600a546001600160a01b03163314610bad5760405163118cdaa760e01b8152336004820152602401610762565b600a80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6001600160a01b03821661161257604051630b61174360e31b81526001600160a01b0383166004820152602401610762565b6001600160a01b038381165f81815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b0383163b156107c557604051630a85bd0160e11b81526001600160a01b0384169063150b7a02906116c0903390889087908790600401612b5d565b6020604051808303815f875af19250505080156116fa575060408051601f3d908101601f191682019092526116f791810190612b8f565b60015b611761573d808015611727576040519150601f19603f3d011682016040523d82523d5f602084013e61172c565b606091505b5080515f0361175957604051633250574960e11b81526001600160a01b0385166004820152602401610762565b805181602001fd5b6001600160e01b03198116630a85bd0160e11b1461091157604051633250574960e11b81526001600160a01b0385166004820152602401610762565b60605f6117a983611bdd565b60010190505f816001600160401b038111156117c7576117c76122be565b6040519080825280601f01601f1916602001820160405280156117f1576020820181803683370190505b5090508181016020015b5f19016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a85049450846117fb57509392505050565b60118054905f61183b83612baa565b919050555061184c83601154611cb4565b60405180608001604052806011548152602001428152602001600c600201544261187691906128ac565b815260200183838080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92018290525093909452505060115481526012602090815260409182902084518155908401516001820155908301516002820155606083015190915060038201906118f19082612bc2565b5050601154604080519182526001600160a01b03861660208301527f5db0e562b58e88ae25b795493b5a9c538bb02bd38430aa3194dbf8c68f619f54925001611555565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610932908490611d15565b5f6001600160e01b031982166380ac58cd60e01b14806119b757506001600160e01b03198216635b5e139f60e01b145b806105d457506301ffc9a760e01b6001600160e01b03198316146105d4565b80806119ea57506001600160a01b03821615155b15611aab575f6119f98461139d565b90506001600160a01b03831615801590611a255750826001600160a01b0316816001600160a01b031614155b8015611a385750611a368184610fa2565b155b15611a615760405163a9fbf51f60e01b81526001600160a01b0384166004820152602401610762565b8115611aa95783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b50505f90815260046020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b5f611ae65f835f6114dd565b90506001600160a01b0381166106ea57604051637e27328960e01b815260048101839052602401610762565b5f80611b1f858585611d76565b90506001600160a01b038116611b7b57611b7684600880545f838152600960205260408120829055600182018355919091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30155565b611b9e565b846001600160a01b0316816001600160a01b031614611b9e57611b9e8185611e68565b6001600160a01b038516611bba57611bb584611ef5565b6114e9565b846001600160a01b0316816001600160a01b0316146114e9576114e98585611f9c565b5f8072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310611c1b5772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310611c47576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310611c6557662386f26fc10000830492506010015b6305f5e1008310611c7d576305f5e100830492506008015b6127108310611c9157612710830492506004015b60648310611ca3576064830492506002015b600a83106105d45760010192915050565b6001600160a01b038216611cdd57604051633250574960e11b81525f6004820152602401610762565b5f611ce983835f6114dd565b90506001600160a01b03811615610932576040516339e3563760e11b81525f6004820152602401610762565b5f611d296001600160a01b03841683611fea565b905080515f14158015611d4d575080806020019051810190611d4b9190612c81565b155b1561093257604051635274afe760e01b81526001600160a01b0384166004820152602401610762565b5f828152600260205260408120546001600160a01b0390811690831615611da257611da2818486611ff7565b6001600160a01b03811615611ddc57611dbd5f855f806119d6565b6001600160a01b0381165f90815260036020526040902080545f190190555b6001600160a01b03851615611e0a576001600160a01b0385165f908152600360205260409020805460010190555b5f8481526002602052604080822080546001600160a01b0319166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b5f611e7283610b57565b5f83815260076020526040902054909150808214611ec3576001600160a01b0384165f9081526006602090815260408083208584528252808320548484528184208190558352600790915290208190555b505f9182526007602090815260408084208490556001600160a01b039094168352600681528383209183525290812055565b6008545f90611f0690600190612a08565b5f8381526009602052604081205460088054939450909284908110611f2d57611f2d612834565b905f5260205f20015490508060088381548110611f4c57611f4c612834565b5f918252602080832090910192909255828152600990915260408082208490558582528120556008805480611f8357611f83612c9c565b600190038181905f5260205f20015f9055905550505050565b5f6001611fa884610b57565b611fb29190612a08565b6001600160a01b039093165f908152600660209081526040808320868452825280832085905593825260079052919091209190915550565b60606114ec83835f61205b565b6120028383836120f4565b610932576001600160a01b03831661203057604051637e27328960e01b815260048101829052602401610762565b60405163177e802f60e01b81526001600160a01b038316600482015260248101829052604401610762565b6060814710156120805760405163cd78605960e01b8152306004820152602401610762565b5f80856001600160a01b0316848660405161209b9190612cb0565b5f6040518083038185875af1925050503d805f81146120d5576040519150601f19603f3d011682016040523d82523d5f602084013e6120da565b606091505b50915091506120ea868383612155565b9695505050505050565b5f6001600160a01b038316158015906114e95750826001600160a01b0316846001600160a01b0316148061212d575061212d8484610fa2565b806114e95750505f908152600460205260409020546001600160a01b03908116911614919050565b60608261216a57612165826121b1565b6114ec565b815115801561218157506001600160a01b0384163b155b156121aa57604051639996b31560e01b81526001600160a01b0385166004820152602401610762565b50806114ec565b8051156121c15780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b6001600160e01b031981168114611229575f80fd5b5f602082840312156121ff575f80fd5b81356114ec816121da565b5f6020828403121561221a575f80fd5b5035919050565b5f5b8381101561223b578181015183820152602001612223565b50505f910152565b5f815180845261225a816020860160208601612221565b601f01601f19169290920160200192915050565b602081525f6114ec6020830184612243565b80356001600160a01b0381168114610a5a575f80fd5b5f80604083850312156122a7575f80fd5b6122b083612280565b946020939093013593505050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b03811182821017156122fa576122fa6122be565b604052919050565b5f82601f830112612311575f80fd5b813560206001600160401b0382111561232c5761232c6122be565b8160051b61233b8282016122d2565b9283528481018201928281019087851115612354575f80fd5b83870192505b848310156123735782358252918301919083019061235a565b979650505050505050565b5f6020828403121561238e575f80fd5b81356001600160401b038111156123a3575f80fd5b610db684828501612302565b5f805f606084860312156123c1575f80fd5b6123ca84612280565b92506123d860208501612280565b9150604084013590509250925092565b8015158114611229575f80fd5b5f60208284031215612405575f80fd5b81356114ec816123e8565b5f8083601f840112612420575f80fd5b5081356001600160401b03811115612436575f80fd5b60208301915083602082850101111561244d575f80fd5b9250929050565b5f805f60408486031215612466575f80fd5b8335925060208401356001600160401b03811115612482575f80fd5b61248e86828701612410565b9497909650939450505050565b5f602082840312156124ab575f80fd5b6114ec82612280565b5f80602083850312156124c5575f80fd5b82356001600160401b038111156124da575f80fd5b6124e685828601612410565b90969095509350505050565b5f8060408385031215612503575f80fd5b82356001600160401b0380821115612519575f80fd5b61252586838701612302565b9350602085013591508082111561253a575f80fd5b5061254785828601612302565b9150509250929050565b5f8060408385031215612562575f80fd5b61256b83612280565b9150602083013561257b816123e8565b809150509250929050565b5f6001600160401b0382111561259e5761259e6122be565b50601f01601f191660200190565b5f805f80608085870312156125bf575f80fd5b6125c885612280565b93506125d660208601612280565b92506040850135915060608501356001600160401b038111156125f7575f80fd5b8501601f81018713612607575f80fd5b803561261a61261582612586565b6122d2565b81815288602083850101111561262e575f80fd5b816020840160208301375f6020838301015280935050505092959194509250565b602080825282516001600160a01b031682820152820151608060408301525f9061267c60a0840182612243565b9050604084015160608401526060840151151560808401528091505092915050565b5f80604083850312156126af575f80fd5b6126b883612280565b91506126c660208401612280565b90509250929050565b602081528151602082015260208201516040820152604082015160608201525f6060830151608080840152610db660a0840182612243565b5f8083601f840112612717575f80fd5b5081356001600160401b0381111561272d575f80fd5b6020830191508360208260051b850101111561244d575f80fd5b5f805f806040858703121561275a575f80fd5b84356001600160401b0380821115612770575f80fd5b61277c88838901612707565b90965094506020870135915080821115612794575f80fd5b506127a187828801612707565b95989497509550505050565b5f80604083850312156127be575f80fd5b50508035926020909101359150565b5f805f604084860312156127df575f80fd5b6127e884612280565b925060208401356001600160401b03811115612482575f80fd5b600181811c9082168061281657607f821691505b602082108103610a5857634e487b7160e01b5f52602260045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f61ffff80831681810361287257612872612848565b6001019392505050565b602080825260169082015275135d58da1bd39195080b481b9bdd08195b98589b195960521b604082015260600190565b808201808211156105d4576105d4612848565b6020808252601f908201527f4d7563686f4e4654202d206e6f74206578697374696e6720746f6b656e494400604082015260600190565b601f82111561093257805f5260205f20601f840160051c8101602085101561291b5750805b601f840160051c820191505b81811015610911575f8155600101612927565b6001600160401b03831115612951576129516122be565b6129658361295f8354612802565b836128f6565b5f601f841160018114612996575f851561297f5750838201355b5f19600387901b1c1916600186901b178355610911565b5f83815260208120601f198716915b828110156129c557868501358255602094850194600190920191016129a5565b50868210156129e1575f1960f88860031b161c19848701351681555b505060018560011b0183555050505050565b5f81612a0157612a01612848565b505f190190565b818103818111156105d4576105d4612848565b5f82612a3557634e487b7160e01b5f52601260045260245ffd5b500490565b604081525f612a4c6040830185612243565b6020838203818501528185518084528284019150828160051b8501018388015f5b83811015612a9b57601f19878403018552612a89838351612243565b94860194925090850190600101612a6d565b50909998505050505050505050565b5f60208284031215612aba575f80fd5b81516001600160401b03811115612acf575f80fd5b8201601f81018413612adf575f80fd5b8051612aed61261582612586565b818152856020838501011115612b01575f80fd5b612b12826020830160208601612221565b95945050505050565b5f808335601e19843603018112612b30575f80fd5b8301803591506001600160401b03821115612b49575f80fd5b60200191503681900382131561244d575f80fd5b6001600160a01b03858116825284166020820152604081018390526080606082018190525f906120ea90830184612243565b5f60208284031215612b9f575f80fd5b81516114ec816121da565b5f60018201612bbb57612bbb612848565b5060010190565b81516001600160401b03811115612bdb57612bdb6122be565b612bef81612be98454612802565b846128f6565b602080601f831160018114612c22575f8415612c0b5750858301515b5f19600386901b1c1916600185901b178555612c79565b5f85815260208120601f198616915b82811015612c5057888601518255948401946001909101908401612c31565b5085821015612c6d57878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b5f60208284031215612c91575f80fd5b81516114ec816123e8565b634e487b7160e01b5f52603160045260245ffd5b5f8251612cc1818460208701612221565b919091019291505056fea26469706673582212201affe62f9ed47a655223cdbb492fbc1793049363cf24e20a5c396175393a648f64736f6c63430008180033000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000010444d4920393020646179732070617373000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010444d492039302064617973207061737300000000000000000000000000000000