0 txs
439.7k calls
constructor
No constructor.
functions
balanceOf
viewfunction balanceOf(address owner) view returns (uint256)
claimable
viewfunction claimable() view returns (bool)
DEFAULT_ADMIN_ROLE
viewfunction DEFAULT_ADMIN_ROLE() view returns (bytes32)
fundsReceiver
viewfunction fundsReceiver() view returns (address)
getApproved
viewfunction getApproved(uint256 tokenId) view returns (address)
getAverageCost
viewfunction getAverageCost(uint256 _tokenId) view returns (uint256)
getMintTimestamp
viewfunction getMintTimestamp(uint256 _tokenId) view returns (uint256)
getPricingTier
viewfunction getPricingTier(uint256 _index) view returns (tuple)
getPricingTiersLength
viewfunction getPricingTiersLength() view returns (uint256)
getPromoCode
viewfunction getPromoCode(string _promoCode) view returns (tuple)
getRoleAdmin
viewfunction getRoleAdmin(bytes32 role) view returns (bytes32)
hasRole
viewfunction hasRole(bytes32 role, address account) view returns (bool)
isApprovedForAll
viewfunction isApprovedForAll(address owner, address operator) view returns (bool)
maxSupply
viewfunction maxSupply() view returns (uint256)
name
viewfunction name() view returns (string)
ownerOf
viewfunction ownerOf(uint256 tokenId) view returns (address)
price
viewfunction price(uint256 _amount, string _promoCode) view returns (uint256)
referralDiscountPercentage
viewfunction referralDiscountPercentage() view returns (uint256)
referralRewardPercentage
viewfunction referralRewardPercentage() view returns (uint256)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
symbol
viewfunction symbol() view returns (string)
tokenByIndex
viewfunction tokenByIndex(uint256 index) view returns (uint256)
tokenOfOwnerByIndex
viewfunction tokenOfOwnerByIndex(address owner, uint256 index) view returns (uint256)
tokenURI
viewfunction tokenURI(uint256 _tokenId) view returns (string)
totalSupply
viewfunction totalSupply() view returns (uint256)
whitelistAmounts
viewfunction whitelistAmounts(address) view returns (uint16)
approve
nonpayablefunction approve(address to, uint256 tokenId)
claimReferralReward
nonpayablefunction claimReferralReward()
createPromoCode
nonpayablefunction createPromoCode(string _promoCode, address _recipient)
grantRole
nonpayablefunction grantRole(bytes32 role, address account)
mint
payablefunction mint(uint256 _amount, string _promoCode) payable
redeemFromWhitelist
nonpayablefunction redeemFromWhitelist()
refundNodeLicense
payablefunction refundNodeLicense(uint256 _tokenId) payable
removePromoCode
nonpayablefunction removePromoCode(string _promoCode)
renounceRole
nonpayablefunction renounceRole(bytes32 role, address account)
revokeRole
nonpayablefunction revokeRole(bytes32 role, address account)
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)
setClaimable
nonpayablefunction setClaimable(bool _claimable)
setFundsReceiver
nonpayablefunction setFundsReceiver(address _newFundsReceiver)
setOrAddPricingTier
nonpayablefunction setOrAddPricingTier(uint256 _index, uint256 _price, uint256 _quantity)
setReferralPercentages
nonpayablefunction setReferralPercentages(uint256 _referralDiscountPercentage, uint256 _referralRewardPercentage)
transferFrom
nonpayablefunction transferFrom(address from, address to, uint256 tokenId)
updateWhitelistAmounts
nonpayablefunction updateWhitelistAmounts(address[] _toWhitelist, uint16[] _amounts)
withdrawFunds
nonpayablefunction withdrawFunds()
events
Approval
event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
ApprovalForAll
event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
ClaimableChanged
event ClaimableChanged(address indexed admin, bool newClaimableState)
FundsReceiverChanged
event FundsReceiverChanged(address indexed admin, address newFundsReceiver)
FundsWithdrawn
event FundsWithdrawn(address indexed admin, uint256 amount)
Initialized
event Initialized(uint8 version)
PricingTierSetOrAdded
event PricingTierSetOrAdded(uint256 index, uint256 price, uint256 quantity)
PromoCodeCreated
event PromoCodeCreated(string promoCode, address recipient)
PromoCodeRemoved
event PromoCodeRemoved(string promoCode)
ReferralReward
event ReferralReward(address indexed buyer, address indexed referralAddress, uint256 amount)
ReferralRewardPercentagesChanged
event ReferralRewardPercentagesChanged(uint256 referralDiscountPercentage, uint256 referralRewardPercentage)
RefundOccurred
event RefundOccurred(address indexed refundee, uint256 amount)
RewardClaimed
event RewardClaimed(address indexed claimer, uint256 amount)
RoleAdminChanged
event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole)
RoleGranted
event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender)
RoleRevoked
event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender)
Transfer
event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
WhitelistAmountRedeemed
event WhitelistAmountRedeemed(address indexed redeemer, uint16 newAmount)
WhitelistAmountUpdatedByAdmin
event WhitelistAmountUpdatedByAdmin(address indexed redeemer, uint16 newAmount)
errors
No errors.
creation bytecode
0x608060405234801561001057600080fd5b50613f96806100206000396000f3fe60806040526004361061027d5760003560e01c806359cb05e71161014f578063a217fddf116100c1578063c96535391161007a578063c9653539146107b9578063d547741f146107cf578063d5abeb01146107ef578063d717d59d14610805578063e985e9c51461081a578063ed0b2ed01461086357600080fd5b8063a217fddf14610709578063a22cb4651461071e578063af38d7571461073e578063b88d4fde14610759578063c87b56dd14610779578063c8b347591461079957600080fd5b80637683d681116101135780637683d6811461067557806377097fc81461069557806391d14854146106a8578063920a253e146106c857806395d89b41146106df5780639b4b2c9c146106f457600080fd5b806359cb05e7146105835780636352211e146105c857806369fbd9a8146105e85780636c3609231461063557806370a082311461065557600080fd5b806323c7e09c116101f357806336568abe116101ac57806336568abe146104c3578063378c93ad146104e35780633cf9aa011461050357806342842e0e146105235780634f6ccce714610543578063574082af1461056357600080fd5b806323c7e09c1461040957806324600fc314610429578063248a9ca31461043e57806327d5e3901461046e5780632f2ff15d146104835780632f745c59146104a357600080fd5b8063141edd5811610245578063141edd581461034657806314cbdc72146103665780631679cab01461038657806316c856fc146103b457806318160ddd146103d457806323b872dd146103e957600080fd5b806301ffc9a71461028257806306fdde03146102b7578063081812fc146102d9578063095ea7b3146103115780630bb0953d14610333575b600080fd5b34801561028e57600080fd5b506102a261029d36600461308a565b61089e565b60405190151581526020015b60405180910390f35b3480156102c357600080fd5b506102cc6108cd565b6040516102ae91906130ff565b3480156102e557600080fd5b506102f96102f4366004613112565b61095f565b6040516001600160a01b0390911681526020016102ae565b34801561031d57600080fd5b5061033161032c366004613140565b610986565b005b610331610341366004613112565b610aa1565b34801561035257600080fd5b5061033161036136600461316c565b610c70565b34801561037257600080fd5b50610331610381366004613189565b610d3e565b34801561039257600080fd5b506103a66103a1366004613112565b610efe565b6040519081526020016102ae565b3480156103c057600080fd5b506103316103cf3660046131b5565b610f39565b3480156103e057600080fd5b506099546103a6565b3480156103f557600080fd5b506103316104043660046131d7565b61106c565b34801561041557600080fd5b5060fc546102f9906001600160a01b031681565b34801561043557600080fd5b5061033161109d565b34801561044a57600080fd5b506103a6610459366004613112565b600090815260c9602052604090206001015490565b34801561047a57600080fd5b5060fe546103a6565b34801561048f57600080fd5b5061033161049e366004613218565b611115565b3480156104af57600080fd5b506103a66104be366004613140565b61113a565b3480156104cf57600080fd5b506103316104de366004613218565b6111d0565b3480156104ef57600080fd5b506103316104fe36600461325d565b61124e565b34801561050f57600080fd5b5061033161051e36600461335f565b61129d565b34801561052f57600080fd5b5061033161053e3660046131d7565b61134f565b34801561054f57600080fd5b506103a661055e366004613112565b61136a565b34801561056f57600080fd5b5061033161057e36600461346a565b6113fd565b34801561058f57600080fd5b506105b561059e36600461316c565b6101066020526000908152604090205461ffff1681565b60405161ffff90911681526020016102ae565b3480156105d457600080fd5b506102f96105e3366004613112565b6114fb565b3480156105f457600080fd5b5061060861060336600461346a565b61155b565b6040805182516001600160a01b0316815260208084015115159082015291810151908201526060016102ae565b34801561064157600080fd5b506103a6610650366004613112565b6115d1565b34801561066157600080fd5b506103a661067036600461316c565b61160c565b34801561068157600080fd5b506103a66106903660046134ac565b611692565b6103316106a33660046134ac565b611877565b3480156106b457600080fd5b506102a26106c3366004613218565b6118bf565b3480156106d457600080fd5b506103a66101005481565b3480156106eb57600080fd5b506102cc6118ea565b34801561070057600080fd5b506103316118f9565b34801561071557600080fd5b506103a6600081565b34801561072a57600080fd5b506103316107393660046134f8565b611a92565b34801561074a57600080fd5b50610101546102a29060ff1681565b34801561076557600080fd5b5061033161077436600461352d565b611a9d565b34801561078557600080fd5b506102cc610794366004613112565b611acf565b3480156107a557600080fd5b506103316107b43660046135f1565b611c37565b3480156107c557600080fd5b506103a660ff5481565b3480156107db57600080fd5b506103316107ea366004613218565b611d4b565b3480156107fb57600080fd5b506103a660fd5481565b34801561081157600080fd5b50610331611d70565b34801561082657600080fd5b506102a2610835366004613648565b6001600160a01b039182166000908152606a6020908152604080832093909416825291909152205460ff1690565b34801561086f57600080fd5b5061088361087e366004613112565b611fde565b604080518251815260209283015192810192909252016102ae565b60006108a982612080565b806108b857506108b8826120a1565b806108c757506108c782612080565b92915050565b6060606580546108dc90613676565b80601f016020809104026020016040519081016040528092919081815260200182805461090890613676565b80156109555780601f1061092a57610100808354040283529160200191610955565b820191906000526020600020905b81548152906001019060200180831161093857829003601f168201915b5050505050905090565b600061096a826120c6565b506000908152606960205260409020546001600160a01b031690565b6000610991826114fb565b9050806001600160a01b0316836001600160a01b03161415610a045760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b0382161480610a205750610a208133610835565b610a925760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c00000060648201526084016109fb565b610a9c8383612119565b505050565b6000610aac81612187565b610ab582612191565b610b165760405162461bcd60e51b815260206004820152602c60248201527f4552433732314d657461646174613a20526566756e6420666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b60648201526084016109fb565b6000828152610105602052604090205480610b685760405162461bcd60e51b8152602060048201526012602482015271139bc8199d5b991cc81d1bc81c99599d5b9960721b60448201526064016109fb565b600083815261010560205260408120819055610b83846114fb565b6001600160a01b03168260405160006040518083038185875af1925050503d8060008114610bcd576040519150601f19603f3d011682016040523d82523d6000602084013e610bd2565b606091505b5050905080610c165760405162461bcd60e51b815260206004820152601060248201526f2a3930b739b332b9103330b4b632b21760811b60448201526064016109fb565b610c1f846114fb565b6001600160a01b03167f6ff41247dea4ea051e23e1cb3e47b1d80c28e1a4e27d0163a335b523ccaccf9683604051610c5991815260200190565b60405180910390a2610c6a846121ae565b50505050565b6000610c7b81612187565b6001600160a01b038216610ce65760405162461bcd60e51b815260206004820152602c60248201527f4e65772066756e647352656365697665722063616e6e6f74206265207468652060448201526b7a65726f206164647265737360a01b60648201526084016109fb565b60fc80546001600160a01b0319166001600160a01b03841690811790915560405190815233907fa02270409724ab2ef0cbf8f5c198a4f2693e2be21e66c222570aef73316b6643906020015b60405180910390a25050565b6000610d4981612187565b60fe54841015610ddc5760fe8481548110610d6657610d666136b1565b90600052602060002090600202016001015460fd6000828254610d8991906136dd565b9250508190555060405180604001604052808481526020018381525060fe8581548110610db857610db86136b1565b60009182526020918290208351600290920201908155910151600190910155610e9f565b60fe54841415610e6157604080518082019091528381526020810183815260fe805460018101825560009190915291517f54075df80ec1ae6ac9100e1fd0ebf3246c17f5c933137af392011f4c5f61513a600290930292830155517f54075df80ec1ae6ac9100e1fd0ebf3246c17f5c933137af392011f4c5f61513b90910155610e9f565b60405162461bcd60e51b8152602060048201526013602482015272496e646578206f7574206f6620626f756e647360681b60448201526064016109fb565b8160fd6000828254610eb191906136f4565b909155505060408051858152602081018590529081018390527f8b492e853a36800006edcd7f0e52e61e9fff6c5ad5230c6afba1d4a1f12576d5906060015b60405180910390a150505050565b6000610f0982612191565b610f255760405162461bcd60e51b81526004016109fb9061370c565b506000908152610105602052604090205490565b6000610f4481612187565b6063831115610fb45760405162461bcd60e51b815260206004820152603660248201527f526566657272616c20646973636f756e742070657263656e746167652063616e6044820152756e6f742062652067726561746572207468616e20393960501b60648201526084016109fb565b60638211156110225760405162461bcd60e51b815260206004820152603460248201527f526566657272616c207265776172642070657263656e746167652063616e6e6f604482015273742062652067726561746572207468616e20393960601b60648201526084016109fb565b60ff83905561010082905560408051848152602081018490527faace8d1ce94bdd845df56ed02bfd42b2c8d32de60f01f20c2a1ace2855b3eaa091015b60405180910390a1505050565b6110763382612251565b6110925760405162461bcd60e51b81526004016109fb90613757565b610a9c8383836122d0565b60006110a881612187565b60fc5460405147916001600160a01b03169082156108fc029083906000818181858888f193505050501580156110e2573d6000803e3d6000fd5b5060405181815233907feaff4b37086828766ad3268786972c0cd24259d4c87a80f9d3963a3c3d999b0d90602001610d32565b600082815260c9602052604090206001015461113081612187565b610a9c8383612324565b60006111458361160c565b82106111a75760405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201526a74206f6620626f756e647360a81b60648201526084016109fb565b506001600160a01b03919091166000908152609760209081526040808320938352929052205490565b6001600160a01b03811633146112405760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084016109fb565b61124a82826123aa565b5050565b600061125981612187565b610101805460ff191683151590811790915560405190815233907feb60b65bbf5667d23958c56ef890ad604d8fc4d001cec7ad7ade701b46fd02ff90602001610d32565b60006112a881612187565b81518351146112e95760405162461bcd60e51b815260206004820152600d60248201526c125b9d985b1a59081a5b9c1d5d609a1b60448201526064016109fb565b60005b83518161ffff161015610c6a5761133d848261ffff1681518110611312576113126136b1565b6020026020010151848361ffff1681518110611330576113306136b1565b6020026020010151612411565b80611347816137a4565b9150506112ec565b610a9c83838360405180602001604052806000815250611a9d565b600061137560995490565b82106113d85760405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201526b7574206f6620626f756e647360a01b60648201526084016109fb565b609982815481106113eb576113eb6136b1565b90600052602060002001549050919050565b600061140881612187565b60006001600160a01b031661010384846040516114269291906137c6565b908152604051908190036020019020546001600160a01b0316141561148d5760405162461bcd60e51b815260206004820152601960248201527f50726f6d6f20636f646520646f6573206e6f742065786973740000000000000060448201526064016109fb565b600061010384846040516114a29291906137c6565b9081526040519081900360200181208054921515600160a01b0260ff60a01b19909316929092179091557f95f9c856ea5546cfb98f825a18a32ae1cd3d41148eefb1e2c5c674e75ff987b29061105f90859085906137ff565b6000818152606760205260408120546001600160a01b0316806108c75760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016109fb565b604080516060810182526000808252602082018190528183015290516101039061158890859085906137c6565b908152604080516020928190038301812060608201835280546001600160a01b0381168352600160a01b900460ff16151593820193909352600190920154908201529392505050565b60006115dc82612191565b6115f85760405162461bcd60e51b81526004016109fb9061370c565b506000908152610102602052604090205490565b60006001600160a01b0382166116765760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b60648201526084016109fb565b506001600160a01b031660009081526068602052604090205490565b60008061169e60995490565b905060008581805b60fe548110156117b25760fe81815481106116c3576116c36136b1565b906000526020600020906002020160010154826116e091906136f4565b915060008583116116f25760006116fc565b6116fc86846136dd565b905080841161174b5760fe8281548110611718576117186136b1565b906000526020600020906002020160000154846117359190613813565b61173f90866136f4565b945060009350506117b2565b60fe828154811061175e5761175e6136b1565b9060005260206000209060020201600001548161177b9190613813565b61178590866136f4565b945061179181856136dd565b935061179d81876136f4565b955050806117aa81613832565b9150506116a6565b5081156118105760405162461bcd60e51b815260206004820152602660248201527f4e6f7420656e6f756768206c6963656e73657320617661696c61626c6520666f604482015265722073616c6560d01b60648201526084016109fb565b61010387876040516118239291906137c6565b9081526040519081900360200190205460ff600160a01b909104161561186b57606460ff54606461185491906136dd565b61185e9085613813565b611868919061384d565b92505b50909695505050505050565b60405162461bcd60e51b815260206004820152601c60248201527f4d696e74696e672074656d706f726172696c792064697361626c65640000000060448201526064016109fb565b600091825260c9602090815260408084206001600160a01b0393909316845291905290205460ff1690565b6060606680546108dc90613676565b6101015460ff166119675760405162461bcd60e51b815260206004820152603260248201527f436c61696d696e67206f6620726566657272616c20726577617264732069732060448201527118dd5c9c995b9d1b1e48191a5cd8589b195960721b60648201526084016109fb565b3360009081526101046020526040902054806119c55760405162461bcd60e51b815260206004820152601b60248201527f4e6f20726566657272616c2072657761726420746f20636c61696d000000000060448201526064016109fb565b33600081815261010460205260408082208290555190919083908381818185875af1925050503d8060008114611a17576040519150601f19603f3d011682016040523d82523d6000602084013e611a1c565b606091505b5050905080611a605760405162461bcd60e51b815260206004820152601060248201526f2a3930b739b332b9103330b4b632b21760811b60448201526064016109fb565b60405182815233907f106f923f993c2149d49b4255ff723acafa1f2d94393f561d3eda32ae348f724190602001610d32565b61124a33838361246d565b611aa73383612251565b611ac35760405162461bcd60e51b81526004016109fb90613757565b610c6a8484848461253c565b6060611ada82612191565b611b3e5760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b60648201526084016109fb565b6000611b49836114fb565b90506000611b568461256f565b611b68836001600160a01b031661260c565b60008681526101026020526040902054611b819061256f565b611b92611b8d8661160c565b61256f565b604051602001611ba5949392919061388b565b60405160208183030381529060405290506000611bc182612623565b90506000611c0a611bd18761256f565b83611be4876001600160a01b031661260c565b604051602001611bf693929190613bd2565b604051602081830303815290604052612623565b905080604051602001611c1d9190613d48565b604051602081830303815290604052945050505050919050565b6000611c4281612187565b6001600160a01b038216611c985760405162461bcd60e51b815260206004820181905260248201527f526563697069656e7420616464726573732063616e6e6f74206265207a65726f60448201526064016109fb565b604080516060810182526001600160a01b038416815260016020820152600081830152905161010390611cce90879087906137c6565b90815260408051918290036020908101832084518154928601511515600160a01b026001600160a81b03199093166001600160a01b03909116179190911781559201516001909201919091557fced415b966fa8bae0231d9f3df21b6cecf7f6d8384273015a047adbd7a1bed0e90610ef090869086908690613d8d565b600082815260c96020526040902060010154611d6681612187565b610a9c83836123aa565b636585eac042811115611dc55760405162461bcd60e51b815260206004820152601e60248201527f526564656d7074696f6e206973206e6f7420656c696769626c6520796574000060448201526064016109fb565b611dd28162278d006136f4565b421115611e215760405162461bcd60e51b815260206004820152601b60248201527f526564656d7074696f6e20706572696f642068617320656e646564000000000060448201526064016109fb565b336000908152610106602052604090205461ffff16611e825760405162461bcd60e51b815260206004820152601860248201527f496e76616c69642077686974656c69737420616d6f756e74000000000000000060448201526064016109fb565b336000908152610106602052604090205461ffff166032811115611ea4575060325b60fd548161ffff16611eb560fb5490565b611ebf91906136f4565b1115611f015760405162461bcd60e51b815260206004820152601160248201527045786365656473206d6178537570706c7960781b60448201526064016109fb565b60005b8161ffff168161ffff161015611f5d57611f2260fb80546001019055565b6000611f2d60fb5490565b9050611f393382612784565b60009081526101026020526040902042905580611f55816137a4565b915050611f04565b503360009081526101066020526040812054611f7e90839061ffff16613db9565b3360008181526101066020908152604091829020805461ffff191661ffff8616908117909155915191825292935090917f89875d9b68b823e9cf760bc6cd71cc3635ad713427f73b2e4f802d6033189dbe910160405180910390a2505050565b604080518082019091526000808252602082015260fe5482106120395760405162461bcd60e51b8152602060048201526013602482015272496e646578206f7574206f6620626f756e647360681b60448201526064016109fb565b60fe828154811061204c5761204c6136b1565b9060005260206000209060020201604051806040016040529081600082015481526020016001820154815250509050919050565b60006001600160e01b03198216637965db0b60e01b14806108c757506108c7825b60006001600160e01b0319821663780e9d6360e01b14806108c757506108c7826128ff565b6120cf81612191565b6121165760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016109fb565b50565b600081815260696020526040902080546001600160a01b0319166001600160a01b038416908117909155819061214e826114fb565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b612116813361294f565b6000908152606760205260409020546001600160a01b0316151590565b60006121b9826114fb565b90506121c98160008460016129a8565b6121d2826114fb565b600083815260696020908152604080832080546001600160a01b03199081169091556001600160a01b0385168085526068845282852080546000190190558785526067909352818420805490911690555192935084927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b60008061225d836114fb565b9050806001600160a01b0316846001600160a01b031614806122a457506001600160a01b038082166000908152606a602090815260408083209388168352929052205460ff165b806122c85750836001600160a01b03166122bd8461095f565b6001600160a01b0316145b949350505050565b60405162461bcd60e51b8152602060048201526024808201527f4e6f64654c6963656e73653a207472616e73666572206973206e6f7420616c6c6044820152631bddd95960e21b60648201526084016109fb565b61232e82826118bf565b61124a57600082815260c9602090815260408083206001600160a01b03851684529091529020805460ff191660011790556123663390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6123b482826118bf565b1561124a57600082815260c9602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6001600160a01b03821660008181526101066020908152604091829020805461ffff191661ffff861690811790915591519182527f6700d39f70694fcd465d77dc72d835b0051f821f18de92165b3151940d7f66949101610d32565b816001600160a01b0316836001600160a01b031614156124cf5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016109fb565b6001600160a01b038381166000818152606a6020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6125478484846122d0565b61255384848484612adc565b610c6a5760405162461bcd60e51b81526004016109fb90613ddc565b6060600061257c83612be9565b600101905060008167ffffffffffffffff81111561259c5761259c613278565b6040519080825280601f01601f1916602001820160405280156125c6576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a85049450846125ff57612604565b6125d0565b509392505050565b60606108c78261261b84612cc1565b600101612d2b565b606081516000141561264357505060408051602081019091526000815290565b6000604051806060016040528060408152602001613f21604091399050600060038451600261267291906136f4565b61267c919061384d565b612687906004613813565b67ffffffffffffffff81111561269f5761269f613278565b6040519080825280601f01601f1916602001820160405280156126c9576020820181803683370190505b50905060018201602082018586518701602081018051600082525b8284101561273f576003840193508351603f8160121c168701518653600186019550603f81600c1c168701518653600186019550603f8160061c168701518653600186019550603f81168701518653506001850194506126e4565b905250508551600390066001811461275e576002811461277157612779565b603d6001830353603d6002830353612779565b603d60018303535b509195945050505050565b6001600160a01b0382166127da5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016109fb565b6127e381612191565b156128305760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016109fb565b61283e6000838360016129a8565b61284781612191565b156128945760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016109fb565b6001600160a01b038216600081815260686020908152604080832080546001019055848352606790915280822080546001600160a01b0319168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b60006001600160e01b031982166380ac58cd60e01b148061293057506001600160e01b03198216635b5e139f60e01b145b806108c757506301ffc9a760e01b6001600160e01b03198316146108c7565b61295982826118bf565b61124a5761296681612ece565b612971836020612d2b565b604051602001612982929190613e2e565b60408051601f198184030181529082905262461bcd60e51b82526109fb916004016130ff565b6001811115612a175760405162461bcd60e51b815260206004820152603560248201527f455243373231456e756d657261626c653a20636f6e7365637574697665207472604482015274185b9cd9995c9cc81b9bdd081cdd5c1c1bdc9d1959605a1b60648201526084016109fb565b816001600160a01b038516612a7357612a6e81609980546000838152609a60205260408120829055600182018355919091527f72a152ddfb8e864297c917af52ea6c1c68aead0fee1a62673fcc7e0c94979d000155565b612a96565b836001600160a01b0316856001600160a01b031614612a9657612a968582612ee4565b6001600160a01b038416612ab257612aad81612f81565b612ad5565b846001600160a01b0316846001600160a01b031614612ad557612ad58482613030565b5050505050565b60006001600160a01b0384163b15612bde57604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290612b20903390899088908890600401613ea3565b602060405180830381600087803b158015612b3a57600080fd5b505af1925050508015612b6a575060408051601f3d908101601f19168201909252612b6791810190613ed6565b60015b612bc4573d808015612b98576040519150601f19603f3d011682016040523d82523d6000602084013e612b9d565b606091505b508051612bbc5760405162461bcd60e51b81526004016109fb90613ddc565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506122c8565b506001949350505050565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310612c285772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310612c54576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310612c7257662386f26fc10000830492506010015b6305f5e1008310612c8a576305f5e100830492506008015b6127108310612c9e57612710830492506004015b60648310612cb0576064830492506002015b600a83106108c75760010192915050565b600080608083901c15612cd95760809290921c916010015b604083901c15612cee5760409290921c916008015b602083901c15612d035760209290921c916004015b601083901c15612d185760109290921c916002015b600883901c156108c75760010192915050565b60606000612d3a836002613813565b612d459060026136f4565b67ffffffffffffffff811115612d5d57612d5d613278565b6040519080825280601f01601f191660200182016040528015612d87576020820181803683370190505b509050600360fc1b81600081518110612da257612da26136b1565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110612dd157612dd16136b1565b60200101906001600160f81b031916908160001a9053506000612df5846002613813565b612e009060016136f4565b90505b6001811115612e78576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110612e3457612e346136b1565b1a60f81b828281518110612e4a57612e4a6136b1565b60200101906001600160f81b031916908160001a90535060049490941c93612e7181613ef3565b9050612e03565b508315612ec75760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016109fb565b9392505050565b60606108c76001600160a01b0383166014612d2b565b60006001612ef18461160c565b612efb91906136dd565b600083815260986020526040902054909150808214612f4e576001600160a01b03841660009081526097602090815260408083208584528252808320548484528184208190558352609890915290208190555b5060009182526098602090815260408084208490556001600160a01b039094168352609781528383209183525290812055565b609954600090612f93906001906136dd565b6000838152609a602052604081205460998054939450909284908110612fbb57612fbb6136b1565b906000526020600020015490508060998381548110612fdc57612fdc6136b1565b6000918252602080832090910192909255828152609a9091526040808220849055858252812055609980548061301457613014613f0a565b6001900381819060005260206000200160009055905550505050565b600061303b8361160c565b6001600160a01b039093166000908152609760209081526040808320868452825280832085905593825260989052919091209190915550565b6001600160e01b03198116811461211657600080fd5b60006020828403121561309c57600080fd5b8135612ec781613074565b60005b838110156130c25781810151838201526020016130aa565b83811115610c6a5750506000910152565b600081518084526130eb8160208601602086016130a7565b601f01601f19169290920160200192915050565b602081526000612ec760208301846130d3565b60006020828403121561312457600080fd5b5035919050565b6001600160a01b038116811461211657600080fd5b6000806040838503121561315357600080fd5b823561315e8161312b565b946020939093013593505050565b60006020828403121561317e57600080fd5b8135612ec78161312b565b60008060006060848603121561319e57600080fd5b505081359360208301359350604090920135919050565b600080604083850312156131c857600080fd5b50508035926020909101359150565b6000806000606084860312156131ec57600080fd5b83356131f78161312b565b925060208401356132078161312b565b929592945050506040919091013590565b6000806040838503121561322b57600080fd5b82359150602083013561323d8161312b565b809150509250929050565b8035801515811461325857600080fd5b919050565b60006020828403121561326f57600080fd5b612ec782613248565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156132b7576132b7613278565b604052919050565b600067ffffffffffffffff8211156132d9576132d9613278565b5060051b60200190565b600082601f8301126132f457600080fd5b81356020613309613304836132bf565b61328e565b82815260059290921b8401810191818101908684111561332857600080fd5b8286015b8481101561335457803561ffff811681146133475760008081fd5b835291830191830161332c565b509695505050505050565b6000806040838503121561337257600080fd5b823567ffffffffffffffff8082111561338a57600080fd5b818501915085601f83011261339e57600080fd5b813560206133ae613304836132bf565b82815260059290921b840181019181810190898411156133cd57600080fd5b948201945b838610156133f45785356133e58161312b565b825294820194908201906133d2565b9650508601359250508082111561340a57600080fd5b50613417858286016132e3565b9150509250929050565b60008083601f84011261343357600080fd5b50813567ffffffffffffffff81111561344b57600080fd5b60208301915083602082850101111561346357600080fd5b9250929050565b6000806020838503121561347d57600080fd5b823567ffffffffffffffff81111561349457600080fd5b6134a085828601613421565b90969095509350505050565b6000806000604084860312156134c157600080fd5b83359250602084013567ffffffffffffffff8111156134df57600080fd5b6134eb86828701613421565b9497909650939450505050565b6000806040838503121561350b57600080fd5b82356135168161312b565b915061352460208401613248565b90509250929050565b6000806000806080858703121561354357600080fd5b843561354e8161312b565b935060208581013561355f8161312b565b935060408601359250606086013567ffffffffffffffff8082111561358357600080fd5b818801915088601f83011261359757600080fd5b8135818111156135a9576135a9613278565b6135bb601f8201601f1916850161328e565b915080825289848285010111156135d157600080fd5b808484018584013760008482840101525080935050505092959194509250565b60008060006040848603121561360657600080fd5b833567ffffffffffffffff81111561361d57600080fd5b61362986828701613421565b909450925050602084013561363d8161312b565b809150509250925092565b6000806040838503121561365b57600080fd5b82356136668161312b565b9150602083013561323d8161312b565b600181811c9082168061368a57607f821691505b602082108114156136ab57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000828210156136ef576136ef6136c7565b500390565b60008219821115613707576137076136c7565b500190565b6020808252602b908201527f4552433732314d657461646174613a20517565727920666f72206e6f6e65786960408201526a39ba32b73a103a37b5b2b760a91b606082015260800190565b6020808252602d908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526c1c881bdc88185c1c1c9bdd9959609a1b606082015260800190565b600061ffff808316818114156137bc576137bc6136c7565b6001019392505050565b8183823760009101908152919050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6020815260006122c86020830184866137d6565b600081600019048311821515161561382d5761382d6136c7565b500290565b6000600019821415613846576138466136c7565b5060010190565b60008261386a57634e487b7160e01b600052601260045260246000fd5b500490565b600081516138818185602086016130a7565b9290920192915050565b7f3c73766720786d6c6e733d27687474703a2f2f7777772e77332e6f72672f323081527f30302f737667272077696474683d2731303027206865696768743d273130302760208201527f207374796c653d276261636b67726f756e642d636f6c6f723a626c61636b3b2760408201527f3e3c706f6c79676f6e20706f696e74733d2735302c3020302c38362e3620313060608201527f302c38362e36272066696c6c3d276e6f6e6527207374726f6b653d277265642760808201527f207374726f6b652d77696474683d27323027207472616e73666f726d3d27736360a08201527f616c6528302e3129207472616e736c6174652836302c20363029272f3e3c746560c08201527f787420783d27352720793d2732352720666f6e742d73697a653d27322e38272060e08201527f66696c6c3d2777686974652720666f6e742d66616d696c793d276d6f6e6f737061010082015270030b1b2939f2634b1b2b739b29024b21d1607d1b6101208201526000613bc8613baf613ba9613b0e613b08613a93613a8d613a1f6101318a018e61386f565b7f3c2f746578743e3c7465787420783d27352720793d2733302720666f6e742d7381527f697a653d27322e38272066696c6c3d2777686974652720666f6e742d66616d696020820152750363c9e93b6b7b737b9b830b1b2939f27bbb732b91d160551b604082015260560190565b8b61386f565b7f3c2f746578743e3c7465787420783d27352720793d2733352720666f6e742d7381527f697a653d27322e38272066696c6c3d2777686974652720666f6e742d66616d6960208201527f6c793d276d6f6e6f7370616365273e4d696e742054696d657374616d703a20006040820152605f0190565b8861386f565b7f3c2f746578743e3c7465787420783d27352720793d2734302720666f6e742d7381527f697a653d27322e38272066696c6c3d2777686974652720666f6e742d66616d6960208201527f6c793d276d6f6e6f7370616365273e546f74616c204e756d626572206f66204c60408201527f6963656e736573204f776e6564206279204f776e65723a200000000000000000606082015260780190565b8561386f565b6c1e17ba32bc3a1f1e17b9bb339f60991b8152600d0190565b9695505050505050565b707b226e616d65223a2022546f6b656e202360781b81528351600090613bff8160118501602089016130a7565b7f222c20226465736372697074696f6e223a202241204e6f64654c6963656e73656011918401918201527f20746f6b656e222c2022696d616765223a2022646174613a696d6167652f737660318201526c19cade1b5b0ed8985cd94d8d0b609a1b60518201528451613c7881605e8401602089016130a7565b7f222c202261747472696275746573223a205b7b2274726169745f74797065223a605e929091019182015273101127bbb732b9111610113b30b63ab2911d101160611b607e8201528351613cd38160928401602088016130a7565b7f227d2c207b2274726169745f74797065223a20224c6567616c222c202276616c609292909101918201527f7565223a202268747470733a2f2f7861692e67616d65732f73656e7472796e6f60b28201526e646561677265656d656e74227d5d7d60881b60d282015260e10195945050505050565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c000000815260008251613d8081601d8501602087016130a7565b91909101601d0192915050565b604081526000613da16040830185876137d6565b905060018060a01b0383166020830152949350505050565b600061ffff83811690831681811015613dd457613dd46136c7565b039392505050565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351613e668160178501602088016130a7565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351613e978160288401602088016130a7565b01602801949350505050565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090613bc8908301846130d3565b600060208284031215613ee857600080fd5b8151612ec781613074565b600081613f0257613f026136c7565b506000190190565b634e487b7160e01b600052603160045260246000fdfe4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2fa26469706673582212200d4d03edc867859ef1c631740fdbcd3004dd68c258618f867bb378d7890a7d9c64736f6c63430008090033