0 txs
0 calls
constructor
constructor()
functions
balanceOf
viewfunction balanceOf(address owner) view returns (uint256)
contractData
viewfunction contractData() view returns (string name, string description, string image, string banner, string website, uint256 royalties, string royaltiesRecipient)
contractURI
viewfunction contractURI() view returns (string)
dupeCatcherRewardInTokens
viewfunction dupeCatcherRewardInTokens() view returns (uint256)
getApproved
viewfunction getApproved(uint256 tokenId) view returns (address)
hashToMetadata
viewfunction hashToMetadata(string _hash) view returns (string)
hashToSVG
viewfunction hashToSVG(string _hash) view returns (string)
isApprovedForAll
viewfunction isApprovedForAll(address owner, address operator) view returns (bool)
isPublicMintActive
viewfunction isPublicMintActive() view returns (bool)
maxTokens
viewfunction maxTokens() view returns (uint256)
mintPrice
viewfunction mintPrice() view returns (uint256)
name
viewfunction name() view returns (string)
numberOfDupesSweptByAddress
viewfunction numberOfDupesSweptByAddress(address _address) view returns (uint256)
owner
viewfunction owner() view returns (address)
ownerOf
viewfunction ownerOf(uint256 tokenId) view returns (address)
royaltyInfo
viewfunction royaltyInfo(uint256 _tokenId, uint256 _salePrice) view returns (address, uint256)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
symbol
viewfunction symbol() view returns (string)
tokenIdToHash
viewfunction tokenIdToHash(uint256 _tokenId) view returns (string)
tokenIdToSVG
viewfunction tokenIdToSVG(uint256 _tokenId) view returns (string)
tokensAreDuplicates
viewfunction tokensAreDuplicates(uint256 tokenId1, uint256 tokenId2) view returns (bool)
tokenURI
viewfunction tokenURI(uint256 _tokenId) view returns (string)
totalSupply
viewfunction totalSupply() view returns (uint256)
traitData
viewfunction traitData(uint256 _layerIndex, uint256 _traitIndex) view returns (string)
traitDetails
viewfunction traitDetails(uint256 _layerIndex, uint256 _traitIndex) view returns (tuple)
addLayer
nonpayablefunction addLayer(uint256 _layerIndex, tuple[] traits)
approve
nonpayablefunction approve(address to, uint256 tokenId)
mint
payablefunction mint(uint256 _count) payable returns (uint256)
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)
sweepDupes
nonpayablefunction sweepDupes(uint256[] groupA, uint256[] groupB)
transferFrom
nonpayablefunction transferFrom(address from, address to, uint256 tokenId)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
withdraw
nonpayablefunction withdraw()
events
Approval
event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
ApprovalForAll
event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
ConsecutiveTransfer
event ConsecutiveTransfer(uint256 indexed fromTokenId, uint256 toTokenId, address indexed from, address indexed to)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
Transfer
event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
errors
ApprovalCallerNotOwnerNorApproved
error ApprovalCallerNotOwnerNorApproved()
ApprovalQueryForNonexistentToken
error ApprovalQueryForNonexistentToken()
ApproveToCaller
error ApproveToCaller()
BalanceQueryForZeroAddress
error BalanceQueryForZeroAddress()
InvalidCodeAtRange
error InvalidCodeAtRange(uint256 _size, uint256 _start, uint256 _end)
MintERC2309QuantityExceedsLimit
error MintERC2309QuantityExceedsLimit()
MintToZeroAddress
error MintToZeroAddress()
MintZeroQuantity
error MintZeroQuantity()
OwnerQueryForNonexistentToken
error OwnerQueryForNonexistentToken()
OwnershipNotInitializedForExtraData
error OwnershipNotInitializedForExtraData()
TransferCallerNotOwnerNorApproved
error TransferCallerNotOwnerNorApproved()
TransferFromIncorrectOwner
error TransferFromIncorrectOwner()
TransferToNonERC721ReceiverImplementer
error TransferToNonERC721ReceiverImplementer()
TransferToZeroAddress
error TransferToZeroAddress()
URIQueryForNonexistentToken
error URIQueryForNonexistentToken()
WriteError
error WriteError()
creation bytecode
0x6006610140818152654c617365727360d01b61016052608090815260056101808181526409adeeae8d60db1b6101a05260a05260046101c0818152634661636560e01b6101e05260c052610200908152631219585960e21b6102205260e0526102409081526414da1a5c9d60da1b61026052610100526102c0604052600a61028090815269109858dad9dc9bdd5b9960b21b6102a05261012052620000a891601491906200064a565b506040518060e001604052806040518060400160405280600c81526020016b223ab8329029bbb2b2b832b960a11b8152508152602001604051806080016040528060568152602001620049cb6056913981526020016040518060200160405280600081525081526020016040518060200160405280600081525081526020016040518060200160405280600081525081526020016103e881526020016040518060600160405280602a815260200162004a21602a91399052805160159081906200017390826200088c565b50602082015160018201906200018a90826200088c565b5060408201516002820190620001a190826200088c565b5060608201516003820190620001b890826200088c565b5060808201516004820190620001cf90826200088c565b5060a0820151600582015560c08201516006820190620001f090826200088c565b5050503480156200020057600080fd5b506040518060400160405280600c81526020016b223ab8329029bbb2b2b832b960a11b81525060405180604001604052806005815260200164053574545560dc1b81525081600290816200025591906200088c565b5060036200026482826200088c565b5060008055505060016008556200027b336200055f565b62000289306103e8620005b1565b6040805160e0810182526019815260fa60208201819052918101919091526101f4606082018190526080820181905260a0820152611f2760c0820152620002d590600e906007620006a7565b50604080516101408101825260bb815260dc602082015261033791810191909152610347606082015261037160808201526103ae60a08201526103d660c082015261043a60e082015261056d610100820152610a5f6101208201526200034090600f90600a620006a7565b506040805161018081018252606c81526089602082015261019f91810191909152610240606082015261027b608082015261030160a08201526103a160c08201526103bd60e08201526103f761010082015261050061012082015261055f61014082015261070c610160820152620003bd90601090600c620006a7565b50604080516101c081018252602581526062602082015260879181019190915260cf606082015260d2608082015261012d60a082015261016c60c08201526101f860e08201526103236101008201526103a761012082015261040961014082015261042f610160820152610636610180820152610a986101a08201526200044990601190600e620006a7565b50604080516102208101825260178152605c602082015260669181019190915260756060820152607f608082015260ca60a082015260e160c082015261019460e082015261022b61010082015261024161012082015261025a6101408201526102776101608201526102816101808201526102c76101a082015261038a6101c08201526103aa6101e0820152610c4b610200820152620004ee906012906011620006a7565b506040805161014081018252606381526073602082015260c49181019190915261028160608201526102bd608082015261035860a08201526103c560c08201526104de60e0820152610710610100820152610d2d6101208201526200055890601390600a620006a7565b50620009e7565b600980546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6127106001600160601b0382161115620005e85760405162461bcd60e51b8152600401620005df906200095c565b60405180910390fd5b6001600160a01b038216620006115760405162461bcd60e51b8152600401620005df90620009ab565b604080518082019091526001600160a01b039092168083526001600160601b039091166020909201829052600160a01b90910217600a55565b82805482825590600052602060002090810192821562000695579160200282015b828111156200069557825182906200068490826200088c565b50916020019190600101906200066b565b50620006a3929150620006f9565b5090565b828054828255906000526020600020908101928215620006eb579160200282015b82811115620006eb578251829061ffff16905591602001919060010190620006c8565b50620006a39291506200071a565b80821115620006a357600062000710828262000731565b50600101620006f9565b5b80821115620006a357600081556001016200071b565b5080546200073f906200079f565b6000825580601f1062000750575050565b601f0160209004906000526020600020908101906200077091906200071a565b50565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052602260045260246000fd5b600281046001821680620007b457607f821691505b602082108103620007c957620007c962000789565b50919050565b6000620007e0620007dd8381565b90565b92915050565b620007f183620007cf565b81546008840282811b60001990911b908116901990911617825550505050565b600062000820818484620007e6565b505050565b8181101562000844576200083b60008262000811565b60010162000825565b5050565b601f82111562000820576000818152602090206020601f85010481016020851015620008715750805b620008856020601f86010483018262000825565b5050505050565b81516001600160401b03811115620008a857620008a862000773565b620008b482546200079f565b620008c182828562000848565b6020601f831160018114620008f85760008415620008df5750858201515b600019600886021c198116600286021786555062000954565b600085815260208120601f198616915b828110156200092a578885015182556020948501946001909201910162000908565b86831015620009475784890151600019601f89166008021c191682555b6001600288020188555050505b505050505050565b60208082528101620007e081602a81527f455243323938313a20726f79616c7479206665652077696c6c206578636565646020820152692073616c65507269636560b01b604082015260600190565b60208082528101620007e081601981527f455243323938313a20696e76616c696420726563656976657200000000000000602082015260400190565b613fd480620009f76000396000f3fe60806040526004361061020f5760003560e01c80636cced73a11610118578063b88d4fde116100a0578063e8a3d4851161006f578063e8a3d485146105f7578063e985e9c51461060c578063ea84b59b14610655578063f2fde38b14610682578063f4f73120146106a257600080fd5b8063b88d4fde14610581578063c11feac1146105a1578063c87b56dd146105c1578063e8315742146105e157600080fd5b806389ce3074116100e757806389ce3074146104fb5780638da5cb5b1461051b57806395d89b4114610539578063a0712d681461054e578063a22cb4651461056157600080fd5b80636cced73a1461048657806370a08231146104a6578063715018a6146104c6578063716e43d7146104db57600080fd5b80633708b1bb1161019b578063591b9f021161016a578063591b9f02146103d2578063621a1f741461040b5780636352211e1461042b57806366e338701461044b5780636817c76c1461046b57600080fd5b80633708b1bb146103605780633cca2420146103755780633ccfd60b1461039d57806342842e0e146103b257600080fd5b806309dbabca116101e257806309dbabca146102bb57806318160ddd146102db57806323b872dd146102fd5780632a55205a1461031d5780632d6b62241461034b57600080fd5b806301ffc9a71461021457806306fdde031461024a578063081812fc1461026c578063095ea7b314610299575b600080fd5b34801561022057600080fd5b5061023461022f366004612951565b6106c2565b604051610241919061297c565b60405180910390f35b34801561025657600080fd5b5061025f6106e2565b60405161024191906129e8565b34801561027857600080fd5b5061028c610287366004612a0a565b610774565b6040516102419190612a45565b3480156102a557600080fd5b506102b96102b4366004612a67565b6107b8565b005b3480156102c757600080fd5b5061025f6102d6366004612aa4565b610858565b3480156102e757600080fd5b50600154600054035b6040516102419190612acc565b34801561030957600080fd5b506102b9610318366004612ada565b6108a0565b34801561032957600080fd5b5061033d610338366004612aa4565b610a6e565b604051610241929190612b2a565b34801561035757600080fd5b50610234610b1a565b34801561036c57600080fd5b506102f0600a81565b34801561038157600080fd5b5061038a610b2e565b6040516102419796959493929190612b45565b3480156103a957600080fd5b506102b9610e8c565b3480156103be57600080fd5b506102b96103cd366004612ada565b610f1c565b3480156103de57600080fd5b506102f06103ed366004612bd4565b6001600160a01b031660009081526005602052604090205460c01c90565b34801561041757600080fd5b5061025f610426366004612a0a565b610f3c565b34801561043757600080fd5b5061028c610446366004612a0a565b6110be565b34801561045757600080fd5b5061025f610466366004612ce6565b6110c9565b34801561047757600080fd5b506102f06611c37937e0800081565b34801561049257600080fd5b506102346104a1366004612aa4565b61121e565b3480156104b257600080fd5b506102f06104c1366004612bd4565b61123a565b3480156104d257600080fd5b506102b9611288565b3480156104e757600080fd5b506102b96104f6366004612e89565b61129c565b34801561050757600080fd5b5061025f610516366004612ce6565b61146c565b34801561052757600080fd5b506009546001600160a01b031661028c565b34801561054557600080fd5b5061025f611670565b6102f061055c366004612a0a565b61167f565b34801561056d57600080fd5b506102b961057c366004612ee9565b6116bd565b34801561058d57600080fd5b506102b961059c366004612f1c565b611755565b3480156105ad57600080fd5b5061025f6105bc366004612a0a565b611799565b3480156105cd57600080fd5b5061025f6105dc366004612a0a565b6117a7565b3480156105ed57600080fd5b506102f061271081565b34801561060357600080fd5b5061025f61190c565b34801561061857600080fd5b50610234610627366004612f9a565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205460ff1690565b34801561066157600080fd5b50610675610670366004612aa4565b611972565b6040516102419190613008565b34801561068e57600080fd5b506102b961069d366004612bd4565b611ad4565b3480156106ae57600080fd5b506102b96106bd36600461308e565b611b0b565b60006106cd82611c9f565b806106dc57506106dc82611ced565b92915050565b6060600280546106f19061310a565b80601f016020809104026020016040519081016040528092919081815260200182805461071d9061310a565b801561076a5780601f1061073f5761010080835404028352916020019161076a565b820191906000526020600020905b81548152906001019060200180831161074d57829003601f168201915b5050505050905090565b600061077f82611d22565b61079c576040516333d1c03960e21b815260040160405180910390fd5b506000908152600660205260409020546001600160a01b031690565b60006107c3826110be565b9050336001600160a01b038216146107fc576107df8133610627565b6107fc576040516367d9dca160e11b815260040160405180910390fd5b60008281526006602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b6000828152600c602052604090208054606091610899918490811061087f5761087f613130565b6000918252602090912001546001600160a01b0316611d49565b9392505050565b60006108ab82611d59565b9050836001600160a01b0316816001600160a01b0316146108de5760405162a1148160e81b815260040160405180910390fd5b60008281526006602052604090208054338082146001600160a01b0388169091141761092b5761090e8633610627565b61092b57604051632ce44b5f60e11b815260040160405180910390fd5b6001600160a01b03851661095257604051633a954ecd60e21b815260040160405180910390fd5b61095f8686866001611465565b801561096a57600082555b6001600160a01b038087166000908152600560205260408082208054600019019055918716815220805460010190556109c3856109a8888287611dc0565b600160e11b174260a01b176001600160a01b03919091161790565b600085815260046020526040812091909155600160e11b84169003610a1857600184016000818152600460205260408120549003610a16576000548114610a165760008181526004602052604090208490555b505b83856001600160a01b0316876001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4610a668686866001611465565b505050505050565b6000828152600b602090815260408083208151808301909252546001600160a01b038116808352600160a01b9091046001600160601b0316928201929092528291610ae3575060408051808201909152600a546001600160a01b0381168252600160a01b90046001600160601b031660208201525b602081015160009061271090610b02906001600160601b03168761315c565b610b0c9190613191565b915196919550909350505050565b6000612710610b2860005490565b10905090565b601580548190610b3d9061310a565b80601f0160208091040260200160405190810160405280929190818152602001828054610b699061310a565b8015610bb65780601f10610b8b57610100808354040283529160200191610bb6565b820191906000526020600020905b815481529060010190602001808311610b9957829003601f168201915b505050505090806001018054610bcb9061310a565b80601f0160208091040260200160405190810160405280929190818152602001828054610bf79061310a565b8015610c445780601f10610c1957610100808354040283529160200191610c44565b820191906000526020600020905b815481529060010190602001808311610c2757829003601f168201915b505050505090806002018054610c599061310a565b80601f0160208091040260200160405190810160405280929190818152602001828054610c859061310a565b8015610cd25780601f10610ca757610100808354040283529160200191610cd2565b820191906000526020600020905b815481529060010190602001808311610cb557829003601f168201915b505050505090806003018054610ce79061310a565b80601f0160208091040260200160405190810160405280929190818152602001828054610d139061310a565b8015610d605780601f10610d3557610100808354040283529160200191610d60565b820191906000526020600020905b815481529060010190602001808311610d4357829003601f168201915b505050505090806004018054610d759061310a565b80601f0160208091040260200160405190810160405280929190818152602001828054610da19061310a565b8015610dee5780601f10610dc357610100808354040283529160200191610dee565b820191906000526020600020905b815481529060010190602001808311610dd157829003601f168201915b505050505090806005015490806006018054610e099061310a565b80601f0160208091040260200160405190810160405280929190818152602001828054610e359061310a565b8015610e825780601f10610e5757610100808354040283529160200191610e82565b820191906000526020600020905b815481529060010190602001808311610e6557829003601f168201915b5050505050905087565b610e94611de3565b6000336001600160a01b031647604051610ead906131a8565b60006040518083038185875af1925050503d8060008114610eea576040519150601f19603f3d011682016040523d82523d6000602084013e610eef565b606091505b5050905080610f195760405162461bcd60e51b8152600401610f10906131db565b60405180910390fd5b50565b610f3783838360405180602001604052806000815250611755565b505050565b6060610f4782611d22565b610f635760405162461bcd60e51b8152600401610f109061320f565b6000610f91610f746006600461315c565b604080518281016060018252910181526000602090910190815290565b905060005b60068110156110b7576000612710610fad86611e0d565b86610fb8858261321f565b604051602001610fca93929190613251565b6040516020818303038152906040528051906020012060001c610fed9190613288565b90506000610ffb8284611e22565b9050600a81101561102f57604080518082019091526002815261030360f41b602082015261102a908590611ebe565b61105b565b606481101561105b576040805180820190915260018152600360fc1b602082015261105b908590611ebe565b6103e781111561108f5760408051808201909152600381526239393960e81b602082015261108a908590611ebe565b6110a2565b6110a261109b82611f03565b8590611ebe565b505080806110af9061329c565b915050610f96565b5092915050565b60006106dc82611d59565b60408051620200608101825262020040815260006020918201908152825180840190935260018352605b60f81b9183019190915260609161110b908290611ebe565b60005b60068110156110b757600061114b6111468661112b85600361315c565b61113686600361315c565b61114190600361321f565b611f52565b61201e565b60ff1690506111ae6014838154811061116657611166613130565b60009182526020808320868452600d825260408085208786528352938490209351611197949390910192910161333a565b60408051601f198184030181529190528490611ebe565b6111ba60016006613389565b82036111e8576040805180820190915260018152605d60f81b60208201526111e3908490611ebe565b61120b565b6040805180820190915260018152600b60fa1b602082015261120b908490611ebe565b50806112168161329c565b91505061110e565b600061089961122c84610f3c565b61123584610f3c565b6120dc565b60006001600160a01b038216611263576040516323d3ad8160e21b815260040160405180910390fd5b506001600160a01b03166000908152600560205260409020546001600160401b031690565b611290611de3565b61129a6000612135565b565b6112a4611de3565b8051600e83600681106112b9576112b9613130565b0154146112d85760405162461bcd60e51b8152600401610f10906133f3565b60648151106112f95760405162461bcd60e51b8152600401610f1090613448565b600081516001600160401b0381111561131457611314612bf5565b60405190808252806020026020018201604052801561133d578160200160208202803683370190505b50905060005b82518110156114455761137283828151811061136157611361613130565b602002602001015160400151612187565b82828151811061138457611384613130565b60200260200101906001600160a01b031690816001600160a01b03168152505060405180604001604052808483815181106113c1576113c1613130565b60200260200101516000015181526020018483815181106113e4576113e4613130565b6020908102919091018101518101519091526000868152600d82526040808220858352909252208151819061141990826134f5565b506020820151600182019061142e90826134f5565b50905050808061143d9061329c565b915050611343565b506000838152600c602090815260409091208251611465928401906128b5565b50505b5050565b6040805162020060810190915262020040815260006020909101818152606091906114b06040518060c0016040528060858152602001613eda608591398290611ebe565b60005b6114bf60016006613389565b81101561157b576114e3611146866114d884600361315c565b61113685600361315c565b60ff169250611569600d6000838152602001908152602001600020600085815260200190815260200160002060010161154161153c600c6000868152602001908152602001600020878154811061087f5761087f613130565b6121ec565b6040516020016115529291906135d9565b60408051601f198184030181529190528390611ebe565b806115738161329c565b9150506114b3565b506115a661114685600361159060068261315c565b61159a9190613389565b6111416006600361315c565b60ff16915061163f600d60006115be60016006613389565b8152602001908152602001600020600084815260200190815260200160002060010161161761153c600c6000600160066115f89190613389565b8152602001908152602001600020868154811061087f5761087f613130565b604051602001611628929190613627565b60408051601f198184030181529190528290611ebe565b611648816121ec565b604051602001611658919061377f565b60405160208183030381529060405292505050919050565b6060600380546106f19061310a565b60006002600854036116a35760405162461bcd60e51b8152600401610f10906137e9565b60026008556116b23383612350565b600160085592915050565b336001600160a01b038316036116e65760405163b06307db60e01b815260040160405180910390fd5b3360008181526007602090815260408083206001600160a01b038716808552925291829020805460ff191685151517905590519091907f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c319061174990859061297c565b60405180910390a35050565b6117608484846108a0565b6001600160a01b0383163b156114655761177c84848484612451565b611465576040516368d2bf6b60e11b815260040160405180910390fd5b60606106dc61051683610f3c565b60606117b282611d22565b6117ce5760405162461bcd60e51b8152600401610f109061320f565b60008052600c6020527f13649b2456f1b42fef0f0040b3aaeabcd21a76a0f3f5defd4f583839455116e8546118155760405162461bcd60e51b8152600401610f109061382d565b600061182083610f3c565b604080516202006081018252620200408152600060209182019081528251808401909352601783527f7b226e616d65223a2244757065205377656570657220230000000000000000009183019190915291925061187e908290611ebe565b61189d61188a85611f03565b604051611628919060169060200161384c565b60006118a88361146c565b90506118be816040516020016115529190613889565b6118da6118ca846110c9565b60405160200161155291906138c5565b6118e3826121ec565b6040516020016118f391906138f2565b6040516020818303038152906040529350505050919050565b601a5460609061194e9060159060169061192590611f03565b60405161193a93929190601b90602001613939565b6040516020818303038152906040526121ec565b60405160200161195e91906138f2565b604051602081830303815290604052905090565b60408051808201909152606080825260208201526000838152600d602090815260408083208584529091529081902081518083019092528054829082906119b89061310a565b80601f01602080910402602001604051908101604052809291908181526020018280546119e49061310a565b8015611a315780601f10611a0657610100808354040283529160200191611a31565b820191906000526020600020905b815481529060010190602001808311611a1457829003601f168201915b50505050508152602001600182018054611a4a9061310a565b80601f0160208091040260200160405190810160405280929190818152602001828054611a769061310a565b8015611ac35780601f10611a9857610100808354040283529160200191611ac3565b820191906000526020600020905b815481529060010190602001808311611aa657829003601f168201915b505050505081525050905092915050565b611adc611de3565b6001600160a01b038116611b025760405162461bcd60e51b8152600401610f1090613a84565b610f1981612135565b611b13610b1a565b611b2f5760405162461bcd60e51b8152600401610f1090613abf565b60005b8251811015610f37576000838281518110611b4f57611b4f613130565b602002602001015190506000838381518110611b6d57611b6d613130565b60200260200101519050611b81828261121e565b611b9d5760405162461bcd60e51b8152600401610f1090613b03565b6000818311611bac5781611bae565b825b9050611bb98161253d565b611bcc611bc782600161321f565b611d22565b15611be457611be4611bdf82600161321f565b61253d565b600042611bf2600143613389565b40604051602001611c04929190613b13565b6040516020818303038152906040528051906020012060001c9050611c29828261256d565b611c3433600a612350565b5033600081815260056020526040902054611c8a919060c01c611c58906001613b39565b6001600160a01b03909116600090815260056020526040902080546001600160c01b031660c09290921b919091179055565b5050505080611c989061329c565b9050611b32565b60006301ffc9a760e01b6001600160e01b031983161480611cd057506380ac58cd60e01b6001600160e01b03198316145b806106dc5750506001600160e01b031916635b5e139f60e01b1490565b60006001600160e01b0319821663152a902d60e11b14806106dc57506301ffc9a760e01b6001600160e01b03198316146106dc565b60008054821080156106dc575050600090815260046020526040902054600160e01b161590565b60606106dc8260016000196125c2565b600081600054811015611da75760008181526004602052604081205490600160e01b82169003611da5575b80600003610899575060001901600081815260046020526040902054611d84565b505b604051636f96cda160e11b815260040160405180910390fd5b600060e882811c90611dd386868461266c565b62ffffff16901b95945050505050565b6009546001600160a01b0316331461129a5760405162461bcd60e51b8152600401610f1090613b9e565b6000611e18826126c5565b6060015192915050565b600080805b600e8460068110611e3a57611e3a613130565b015481101561020f576000600e8560068110611e5857611e58613130565b018281548110611e6a57611e6a613130565b90600052602060002001549050828610158015611e8f5750611e8c818461321f565b86105b15611e9e575091506106dc9050565b611ea8818461321f565b9250508080611eb69061329c565b915050611e27565b601f1982015182518251603f19909201918290611edb908361321f565b1115611ef95760405162461bcd60e51b8152600401610f1090613bf2565b611465848461273c565b604080516080810191829052607f0190826030600a8206018353600a90045b8015611f4057600183039250600a81066030018353600a9004611f22565b50819003601f19909101908152919050565b6060836000611f618585613389565b6001600160401b03811115611f7857611f78612bf5565b6040519080825280601f01601f191660200182016040528015611fa2576020820181803683370190505b509050845b8481101561201457828181518110611fc157611fc1613130565b01602001516001600160f81b03191682611fdb8884613389565b81518110611feb57611feb613130565b60200101906001600160f81b031916908160001a9053508061200c8161329c565b915050611fa7565b5095945050505050565b60008181805b82518160ff1610156120d4576030838260ff168151811061204757612047613130565b016020015160f81c1080159061207a57506039838260ff168151811061206f5761206f613130565b016020015160f81c11155b156120c25761208a600a83613c02565b91506030838260ff16815181106120a3576120a3613130565b01602001516120b5919060f81c613c27565b6120bf9083613c38565b91505b806120cc81613c59565b915050612024565b509392505050565b6000816040516020016120ef9190613c6f565b60405160208183030381529060405280519060200120836040516020016121169190613c6f565b6040516020818303038152906040528051906020012014905092915050565b600980546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000806121b28360405160200161219e9190613c85565b604051602081830303815290604052612772565b90508051602082016000f091506001600160a01b0382166121e65760405163046a55db60e11b815260040160405180910390fd5b50919050565b6060815160000361220b57505060408051602081019091526000815290565b6000604051806060016040528060408152602001613f5f604091399050600060038451600261223a919061321f565b6122449190613191565b61224f90600461315c565b9050600061225e82602061321f565b6001600160401b0381111561227557612275612bf5565b6040519080825280601f01601f19166020018201604052801561229f576020820181803683370190505b509050818152600183018586518101602084015b8183101561230b576003830192508251603f8160121c168501518253600182019150603f81600c1c168501518253600182019150603f8160061c168501518253600182019150603f81168501518253506001016122b3565b600389510660018114612325576002811461233657612342565b613d3d60f01b600119830152612342565b603d60f81b6000198301525b509398975050505050505050565b600061235a610b1a565b6123765760405162461bcd60e51b8152600401610f1090613abf565b600054826123965760405162461bcd60e51b8152600401610f1090613cba565b6127106123a3848361321f565b11156123c15760405162461bcd60e51b8152600401610f1090613cf4565b346123d36611c37937e080008561315c565b146123f05760405162461bcd60e51b8152600401610f1090613d38565b60006123fd601485613191565b9050600061240c601486613288565b905060005b828110156124365761242487601461279e565b8061242e8161329c565b915050612411565b50801561244757612447868261279e565b5090949350505050565b604051630a85bd0160e11b81526000906001600160a01b0385169063150b7a0290612486903390899088908890600401613d48565b6020604051808303816000875af19250505080156124c1575060408051601f3d908101601f191682019092526124be91810190613d8d565b60015b61251f573d8080156124ef576040519150601f19603f3d011682016040523d82523d6000602084013e6124f4565b606091505b508051600003612517576040516368d2bf6b60e11b815260040160405180910390fd5b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490505b949350505050565b6000818152600460205260408120549003610f195761255b81611d59565b60008281526004602052604090205550565b6000828152600460205260408120549081900361259c5760405162d5815360e01b815260040160405180910390fd5b6000928352600460205260409092206001600160e81b039290921660e89190911b179055565b6060833b60008190036125e5575050604080516020810190915260008152610899565b80841115612603575050604080516020810190915260008152610899565b8383101561262a5780848460405163162544fd60e11b8152600401610f1093929190613dae565b838303848203600082821061263f5782612641565b815b60408051603f8301601f19168101909152818152955090508087602087018a3c505050509392505050565b60006001600160a01b0384166110b75760003a43424461268d600184613389565b40336040516020016126a496959493929190613dfe565b60408051601f19818403018152919052805160209091012091506108999050565b6040805160808101825260008082526020820181905291810182905260608101919091526106dc6126f583611d59565b604080516080810182526001600160a01b038316815260a083901c6001600160401b03166020820152600160e01b831615159181019190915260e89190911c606082015290565b8051602082019150808201602084510184015b8184101561276757835181526020938401930161274f565b505082510190915250565b6060815182604051602001612788929190613ea7565b6040516020818303038152906040529050919050565b6000546001600160a01b0383166127c757604051622e076360e81b815260040160405180910390fd5b816000036127e85760405163b562e8dd60e01b815260040160405180910390fd5b6127f56000848385611465565b6001600160a01b0383166000908152600560205260408120805468010000000000000001850201905561284c90849061282f908281611dc0565b6001851460e11b174260a01b176001600160a01b03919091161790565b600082815260046020526040902055808281015b6040516001830192906001600160a01b038716906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a4808210612860576000908155610f379150848385611465565b82805482825590600052602060002090810192821561290a579160200282015b8281111561290a57825182546001600160a01b0319166001600160a01b039091161782556020909201916001909101906128d5565b5061291692915061291a565b5090565b5b80821115612916576000815560010161291b565b6001600160e01b031981165b8114610f1957600080fd5b80356106dc8161292f565b60006020828403121561296657612966600080fd5b60006125358484612946565b8015155b82525050565b602081016106dc8284612972565b60005b838110156129a557818101518382015260200161298d565b838111156114655750506000910152565b60006129c0825190565b8084526020840193506129d781856020860161298a565b601f01601f19169290920192915050565b6020808252810161089981846129b6565b8061293b565b80356106dc816129f9565b600060208284031215612a1f57612a1f600080fd5b600061253584846129ff565b60006001600160a01b0382166106dc565b61297681612a2b565b602081016106dc8284612a3c565b61293b81612a2b565b80356106dc81612a53565b60008060408385031215612a7d57612a7d600080fd5b6000612a898585612a5c565b9250506020612a9a858286016129ff565b9150509250929050565b60008060408385031215612aba57612aba600080fd5b6000612a8985856129ff565b80612976565b602081016106dc8284612ac6565b600080600060608486031215612af257612af2600080fd5b6000612afe8686612a5c565b9350506020612b0f86828701612a5c565b9250506040612b20868287016129ff565b9150509250925092565b60408101612b388285612a3c565b6108996020830184612ac6565b60e08082528101612b56818a6129b6565b90508181036020830152612b6a81896129b6565b90508181036040830152612b7e81886129b6565b90508181036060830152612b9281876129b6565b90508181036080830152612ba681866129b6565b9050612bb560a0830185612ac6565b81810360c0830152612bc781846129b6565b9998505050505050505050565b600060208284031215612be957612be9600080fd5b60006125358484612a5c565b634e487b7160e01b600052604160045260246000fd5b601f19601f83011681018181106001600160401b0382111715612c3057612c30612bf5565b6040525050565b6000612c4260405190565b9050612c4e8282612c0b565b919050565b60006001600160401b03821115612c6c57612c6c612bf5565b601f19601f83011660200192915050565b82818337506000910152565b6000612c9c612c9784612c53565b612c37565b905082815260208101848484011115612cb757612cb7600080fd5b6120d4848285612c7d565b600082601f830112612cd657612cd6600080fd5b8135612535848260208601612c89565b600060208284031215612cfb57612cfb600080fd5b81356001600160401b03811115612d1457612d14600080fd5b61253584828501612cc2565b60006001600160401b03821115612d3957612d39612bf5565b5060209081020190565b600060608284031215612d5857612d58600080fd5b612d626060612c37565b905081356001600160401b03811115612d7d57612d7d600080fd5b612d8984828501612cc2565b82525060208201356001600160401b03811115612da857612da8600080fd5b612db484828501612cc2565b60208301525060408201356001600160401b03811115612dd657612dd6600080fd5b612de284828501612cc2565b60408301525092915050565b6000612dfc612c9784612d20565b83815290506020808201908402830185811115612e1b57612e1b600080fd5b835b81811015612e5b5780356001600160401b03811115612e3e57612e3e600080fd5b808601612e4b8982612d43565b8552505060209283019201612e1d565b5050509392505050565b600082601f830112612e7957612e79600080fd5b8135612535848260208601612dee565b60008060408385031215612e9f57612e9f600080fd5b6000612eab85856129ff565b92505060208301356001600160401b03811115612eca57612eca600080fd5b612a9a85828601612e65565b80151561293b565b80356106dc81612ed6565b60008060408385031215612eff57612eff600080fd5b6000612f0b8585612a5c565b9250506020612a9a85828601612ede565b60008060008060808587031215612f3557612f35600080fd5b6000612f418787612a5c565b9450506020612f5287828801612a5c565b9350506040612f63878288016129ff565b92505060608501356001600160401b03811115612f8257612f82600080fd5b612f8e87828801612cc2565b91505092959194509250565b60008060408385031215612fb057612fb0600080fd5b6000612fbc8585612a5c565b9250506020612a9a85828601612a5c565b8051604080845260009190840190612fe582826129b6565b91505060208301518482036020860152612fff82826129b6565b95945050505050565b602080825281016108998184612fcd565b6000613027612c9784612d20565b8381529050602080820190840283018581111561304657613046600080fd5b835b81811015612e5b578061305b88826129ff565b84525060209283019201613048565b600082601f83011261307e5761307e600080fd5b8135612535848260208601613019565b600080604083850312156130a4576130a4600080fd5b82356001600160401b038111156130bd576130bd600080fd5b6130c98582860161306a565b92505060208301356001600160401b038111156130e8576130e8600080fd5b612a9a8582860161306a565b634e487b7160e01b600052602260045260246000fd5b60028104600182168061311e57607f821691505b6020821081036121e6576121e66130f4565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600081600019048311821515161561317657613176613146565b500290565b634e487b7160e01b600052601260045260246000fd5b6000826131a0576131a061317b565b500490565b90565b6000816106dc565b601181526000602082017015da5d1a191c985dd85b0819985a5b1959607a1b815291505b5060200190565b602080825281016106dc816131b0565b600d81526000602082016c24b73b30b634b2103a37b5b2b760991b815291506131d4565b602080825281016106dc816131eb565b6000821982111561323257613232613146565b500190565b60006106dc8260e81b90565b61297662ffffff8216613237565b600061325d8286613243565b60038201915061326d8285612ac6565b60208201915061327d8284612ac6565b506020019392505050565b6000826132975761329761317b565b500690565b600060001982036132af576132af613146565b5060010190565b600081546132c38161310a565b6001821680156132da57600181146132ef5761331f565b60ff198316865281151582028601935061331f565b60008581526020902060005b83811015613317578154888201526001909101906020016132fb565b838801955050505b50505092915050565b61227d60f01b815260005b5060020190565b6e3d913a3930b4ba2fba3cb832911d1160891b8152600f01600061335e82856132b6565b6a1116113b30b63ab2911d1160a91b8152600b01915061337e82846132b6565b915061253582613328565b6000825b92508282101561339f5761339f613146565b500390565b602f81526000602082017f5472616974732073697a6520646f6573206e6f74206d6174636820746965727381526e040ccdee440e8d0d2e640d2dcc8caf608b1b602082015291505b5060400190565b602080825281016106dc816133a4565b602881526000602082017f54686572652063616e6e6f74206265206f76657220393920747261697473207081526732b9103630bcb2b960c11b602082015291506133ec565b602080825281016106dc81613403565b60006106dc6131a58381565b61346d83613458565b81546008840282811b60001990911b908116901990911617825550505050565b6000610f37818484613464565b81811015611468576134ad60008261348d565b60010161349a565b601f821115610f37576000818152602090206020601f850104810160208510156134dc5750805b6134ee6020601f86010483018261349a565b5050505050565b81516001600160401b0381111561350e5761350e612bf5565b613518825461310a565b6135238282856134b5565b6020601f831160018114613557576000841561353f5750858201515b600019600886021c1981166002860217865550610a66565b600085815260208120601f198616915b828110156135875788850151825560209485019460019092019101613567565b868310156135a35784890151600019601f89166008021c191682555b600160028802018855505050505050505050565b60006135c1825190565b6135cf81856020860161298a565b9290920192915050565b643230ba309d60d91b815260050160006135f382856132b6565b670ed8985cd94d8d0b60c21b8152600801915061361082846135b7565b6505258eae4d8560d31b8152915060068201612535565b643230ba309d60d91b8152600501600061364182856132b6565b670ed8985cd94d8d0b60c21b8152600801915061365e82846135b7565b7f293b6261636b67726f756e642d7265706561743a6e6f2d7265706561743b626181527f636b67726f756e642d73697a653a636f6e7461696e3b6261636b67726f756e6460208201527f2d706f736974696f6e3a63656e7465723b696d6167652d72656e646572696e6760408201527f3a2d7765626b69742d6f7074696d697a652d636f6e74726173743b2d6d732d6960608201527f6e746572706f6c6174696f6e2d6d6f64653a6e6561726573742d6e656967686260808201527f6f723b696d6167652d72656e646572696e673a2d6d6f7a2d63726973702d656460a08201527f6765733b696d6167652d72656e646572696e673a706978656c617465643b223e60c0820152651e17b9bb339f60d11b60e0820152915060e68201612535565b7f646174613a696d6167652f7376672b786d6c3b6261736536342c00000000000081526000601a82015b915061089982846135b7565b601f81526000602082017f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00815291506131d4565b602080825281016106dc816137b5565b601a81526000602082017f5472616974732068617665206e6f74206265656e206164646564000000000000815291506131d4565b602080825281016106dc816137f9565b61088b60f21b81526000613333565b600061385882856135b7565b701116113232b9b1b934b83a34b7b7111d1160791b8152601101915061387e82846132b6565b91506125358261383d565b6d1134b6b0b3b2afb230ba30911d1160911b8152600e0160006138ac82846135b7565b91506108998261383d565b607d60f81b815260006132af565b6c1130ba3a3934b13aba32b9911d60991b8152600d0160006138e782846135b7565b9150610899826138b7565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c00000081526000601d82016137a9565b683d913730b6b2911d1160b91b815260005b5060090190565b600061394482613920565b915061395082876132b6565b701116113232b9b1b934b83a34b7b7111d1160791b8152601101915061397682866132b6565b7211161132bc3a32b93730b62fb634b735911d1160691b81527f68747470733a2f2f7777772e63617073756c6532312e636f6d2f636f6c6c65636013820152713a34b7b73997b23ab83296b9bbb2b2b832b960711b60338201527f222c2273656c6c65725f6665655f62617369735f706f696e7473223a0000000060458201526061019150613a0582856135b7565b7116113332b2afb932b1b4b834b2b73a111d1160711b81526012019150613a2c82846132b6565b9150613a3782613328565b9695505050505050565b602681526000602082017f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206181526564647265737360d01b602082015291506133ec565b602080825281016106dc81613a41565b6014815260006020820173283ab13634b19039b0b632903737ba1037b832b760611b815291506131d4565b602080825281016106dc81613a94565b601d81526000602082017f416c6c20746f6b656e73206d757374206265206475706c696361746573000000815291506131d4565b602080825281016106dc81613acf565b6000613b1f8285612ac6565b602082019150613b2f8284612ac6565b5060200192915050565b60006001600160401b03821691506001600160401b0383169250826001600160401b030382111561323257613232613146565b60208082527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572910190815260006131d4565b602080825281016106dc81613b6c565b602781526000602082017f44796e616d69634275666665723a20417070656e64696e67206f7574206f66208152663137bab732399760c91b602082015291506133ec565b602080825281016106dc81613bae565b600060ff8216915060ff831692508160ff048311821515161561317657613176613146565b600060ff8216915060ff831661338d565b600060ff8216915060ff831692508260ff0382111561323257613232613146565b60ff16600060fe1982016132af576132af613146565b600061089982846135b7565b60008082526132af565b60006137a982613c7b565b6013815260006020820172125b9d985b1a59081d1bdad95b8818dbdd5b9d606a1b815291506131d4565b602080825281016106dc81613c90565b6013815260006020820172416c6c20746f6b656e732061726520676f6e6560681b815291506131d4565b602080825281016106dc81613cca565b601e81526000602082017f496e636f727265637420616d6f756e74206f662065746865722073656e740000815291506131d4565b602080825281016106dc81613d04565b60808101613d568287612a3c565b613d636020830186612a3c565b613d706040830185612ac6565b8181036060830152613a3781846129b6565b80516106dc8161292f565b600060208284031215613da257613da2600080fd5b60006125358484613d82565b60608101613dbc8286612ac6565b613dc96020830185612ac6565b6125356040830184612ac6565b60006106dc8260601b90565b60006106dc82613dd6565b612976613df982612a2b565b613de2565b6000613e0a8289612ac6565b602082019150613e1a8288612ac6565b602082019150613e2a8287612ac6565b602082019150613e3a8286612ac6565b602082019150613e4a8285612ac6565b602082019150613e5a8284613ded565b506014019695505050505050565b606360f81b815260006132af565b60006106dc8260e01b90565b61297663ffffffff8216613e76565b6880600e6000396000f360b81b81526000613932565b6000613eb282613e68565b9150613ebe8285613e82565b600482019150613ecd82613e91565b915061253582846135b756fe3c7376672077696474683d223132303022206865696768743d2231323030222076696577426f783d2230203020313230302031323030222076657273696f6e3d22312e322220786d6c6e733d22687474703a2f2f7777772e77332e6f72672f323030302f73766722207374796c653d226261636b67726f756e642d696d6167653a75726c284142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2fa264697066735822122069dbd2dbfd993855e8e83b5d1225a541984fe2ad71c058a5bdd1a19527e0606664736f6c634300080f003348656c702072656163682031306b20756e6971756520496e76697369626c65204b6576696e73206279207265706f7274696e67206475706c69636174657320616e64206561726e696e672066726565206d696e747321307843323137326136333135633144376636383535373638463834336334323045624233366544613937