More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 4,256 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Redeem Special Z... | 20414668 | 120 days ago | IN | 0 ETH | 0.0002518 | ||||
Buy Single With ... | 20094278 | 165 days ago | IN | 0.01234 ETH | 0.00034385 | ||||
Buy Single With ... | 20065771 | 169 days ago | IN | 0.02468 ETH | 0.0009356 | ||||
Buy Single With ... | 20055905 | 170 days ago | IN | 0.02468 ETH | 0.00077375 | ||||
Buy Single With ... | 20051622 | 171 days ago | IN | 0.02468 ETH | 0.00039978 | ||||
Redeem Special Z... | 19861360 | 197 days ago | IN | 0 ETH | 0.00099435 | ||||
Buy Single With ... | 19732362 | 215 days ago | IN | 0.02468 ETH | 0.00104305 | ||||
Buy Single With ... | 19732184 | 215 days ago | IN | 0.01234 ETH | 0.00109442 | ||||
Buy Single With ... | 19730430 | 215 days ago | IN | 0.1234 ETH | 0.00064765 | ||||
Redeem Special Z... | 19710563 | 218 days ago | IN | 0 ETH | 0.00067829 | ||||
Redeem Special Z... | 19710562 | 218 days ago | IN | 0 ETH | 0.00069639 | ||||
Buy Single With ... | 19492590 | 249 days ago | IN | 0.01234 ETH | 0.00220293 | ||||
Buy Single With ... | 19492478 | 249 days ago | IN | 0.01234 ETH | 0.00219678 | ||||
Redeem Special Z... | 19404284 | 261 days ago | IN | 0 ETH | 0.00434463 | ||||
Buy Family Set W... | 19392351 | 263 days ago | IN | 0.1234 ETH | 0.02921492 | ||||
Buy Single With ... | 19147149 | 297 days ago | IN | 0.01234 ETH | 0.00160042 | ||||
Redeem Special Z... | 19096752 | 304 days ago | IN | 0 ETH | 0.00114171 | ||||
Redeem Special Z... | 19096750 | 304 days ago | IN | 0 ETH | 0.0012686 | ||||
Buy Family Set W... | 18913343 | 330 days ago | IN | 0.1234 ETH | 0.00703767 | ||||
Buy Single With ... | 18912521 | 330 days ago | IN | 0.01234 ETH | 0.00090536 | ||||
Buy Single With ... | 18912516 | 330 days ago | IN | 0.01234 ETH | 0.00119559 | ||||
Buy Single With ... | 18621232 | 371 days ago | IN | 0.01234 ETH | 0.00580933 | ||||
Redeem Special Z... | 18560226 | 380 days ago | IN | 0 ETH | 0.00346593 | ||||
Buy Single With ... | 18557719 | 380 days ago | IN | 0.01234 ETH | 0.00398853 | ||||
Redeem Special Z... | 18555079 | 380 days ago | IN | 0 ETH | 0.0020489 |
Latest 1 internal transaction
Advanced mode:
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
17444116 | 536 days ago | 139.23222 ETH |
Loading...
Loading
Contract Name:
ZogzFunSales
Compiler Version
v0.8.18+commit.87f61d96
Optimization Enabled:
Yes with 1000000 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity 0.8.18; import "@openzeppelin/contracts/access/Ownable.sol"; import "@openzeppelin/contracts/security/Pausable.sol"; import "@openzeppelin/contracts/security/ReentrancyGuard.sol"; interface IPepeEditions { function burn(address __from, uint256 __id, uint256 __amount) external; } interface IZogzEditions { function mint(address __account, uint256 __id, uint256 __amount) external; function mintBatch( address __account, uint256[] memory __ids, uint256[] memory __amounts ) external; } contract ZogzFunSales is Ownable, Pausable, ReentrancyGuard { error AmountExceedsTransactionLimit(); error BurnAmountDoesNotMatch(); error BurnAmountMustBeExact(); error DayNotFound(); error FamilySetAlreadyExists(); error Forbidden(); error HasEnded(); error HasNotEnded(); error HasNotStarted(); error IncorrectPrice(); error InvalidAddress(); error InvalidAmount(); error InvalidBurnAmount(); error PepeEditionNotFound(); error WithdrawFailed(); error ZogzEditionNotFound(); event DailySetPurchase(address __account, uint256 __day, uint256 __amount); event FamilySets(Family[] __families, uint256[][] __ids); event FamilySetPurchase( address __account, Family __family, uint256 __amount ); event FullSetPurchase(address __account, uint256 __amount); event Redemption(address __account, Special __special, uint256 __amount); event SinglePurchase( address __account, uint256 __tokenID, uint256 __amount ); event TransactionLimit(uint256 __transactionLimit); event Withdraw(uint256 __amount); struct DailySet { uint256 from; uint256 start; uint256 end; } enum Family { RIPPERZ, KILLERZ, ALIENZ, TRIPPERZ, FLIPPERZ, TROLLZ, PHATTZ, SLAPPERZ, SMOKERZ, LORDZ } enum Special { RIPPER, KILLER, ALIEN, TRIPPER, FLIPPER, TROLL, PHATT, SLAPPER, SMOKER, LORD, GREATEST } struct SpecialData { uint256 id; uint256 cost; } uint256 public constant FULL_SET_SUPPLY = 100; uint256 public constant DAILY_SET_SUPPLY = 10; uint256 public constant MINT_PRICE = 0.01234 ether; mapping(uint256 => uint256) public BURN_MULTIPLIERS; uint256 public constant SALE_START = 1683565200; uint256 public constant SALE_END = 1684601999; mapping(uint256 => DailySet) public DAILY_SETS; mapping(Family => uint256[]) public FAMILY_SETS; mapping(Special => SpecialData) public SPECIAL_ZOGZ; mapping(uint256 => uint256) _tokenToDailySet; IPepeEditions public _pepeEditionsContract; IZogzEditions public _zogzEditionsContract; uint256 public transactionLimit = 1000; constructor( address __pepeEditionsContractAddress, address __zogzEditionsContractAddress ) { if (__pepeEditionsContractAddress == address(0)) { revert InvalidAddress(); } if (__zogzEditionsContractAddress == address(0)) { revert InvalidAddress(); } _pepeEditionsContract = IPepeEditions(__pepeEditionsContractAddress); _zogzEditionsContract = IZogzEditions(__zogzEditionsContractAddress); BURN_MULTIPLIERS[1] = 1; // ZOGZ Pepe BURN_MULTIPLIERS[3] = 10; // ZOGGED Pepe BURN_MULTIPLIERS[2] = 50; // HEDZ Pepe BURN_MULTIPLIERS[5] = 500; // RARE PEPZOGZ Pepe BURN_MULTIPLIERS[4] = 600; // PEGZOGZ Pepe SPECIAL_ZOGZ[Special.RIPPER] = SpecialData({id: 101, cost: 10}); SPECIAL_ZOGZ[Special.KILLER] = SpecialData({id: 102, cost: 20}); SPECIAL_ZOGZ[Special.ALIEN] = SpecialData({id: 103, cost: 20}); SPECIAL_ZOGZ[Special.TRIPPER] = SpecialData({id: 104, cost: 20}); SPECIAL_ZOGZ[Special.FLIPPER] = SpecialData({id: 105, cost: 5}); SPECIAL_ZOGZ[Special.TROLL] = SpecialData({id: 106, cost: 5}); SPECIAL_ZOGZ[Special.PHATT] = SpecialData({id: 107, cost: 7}); SPECIAL_ZOGZ[Special.SLAPPER] = SpecialData({id: 108, cost: 3}); SPECIAL_ZOGZ[Special.SMOKER] = SpecialData({id: 109, cost: 9}); SPECIAL_ZOGZ[Special.LORD] = SpecialData({id: 110, cost: 1}); SPECIAL_ZOGZ[Special.GREATEST] = SpecialData({id: 111, cost: 100}); DAILY_SETS[1] = DailySet({from: 1, start: 1683565200, end: 1683651599}); DAILY_SETS[2] = DailySet({ from: 11, start: 1683651600, end: 1683737999 }); DAILY_SETS[3] = DailySet({ from: 21, start: 1683738000, end: 1683824399 }); DAILY_SETS[4] = DailySet({ from: 31, start: 1683824400, end: 1683910799 }); DAILY_SETS[5] = DailySet({ from: 41, start: 1683910800, end: 1683997199 }); DAILY_SETS[6] = DailySet({ from: 51, start: 1684170000, end: 1684256399 }); DAILY_SETS[7] = DailySet({ from: 61, start: 1684256400, end: 1684342799 }); DAILY_SETS[8] = DailySet({ from: 71, start: 1684342800, end: 1684429199 }); DAILY_SETS[9] = DailySet({ from: 81, start: 1684429200, end: 1684515599 }); DAILY_SETS[10] = DailySet({ from: 91, start: 1684515600, end: 1684601999 }); for (uint256 id = 1; id <= FULL_SET_SUPPLY; id++) { if (id > 90) { _tokenToDailySet[id] = 10; } else if (id > 80) { _tokenToDailySet[id] = 9; } else if (id > 70) { _tokenToDailySet[id] = 8; } else if (id > 60) { _tokenToDailySet[id] = 7; } else if (id > 50) { _tokenToDailySet[id] = 6; } else if (id > 40) { _tokenToDailySet[id] = 5; } else if (id > 30) { _tokenToDailySet[id] = 4; } else if (id > 20) { _tokenToDailySet[id] = 3; } else if (id > 10) { _tokenToDailySet[id] = 2; } else { _tokenToDailySet[id] = 1; } } } //////////////////////////////////////////////////////////////////////////// // MODIFIERS //////////////////////////////////////////////////////////////////////////// modifier onlyEOA() { if (tx.origin != msg.sender) { revert Forbidden(); } _; } modifier onlyExistingDay(uint256 __day) { if (__day == 0 || __day > 10) { revert DayNotFound(); } _; } modifier onlyExistingPepeEdition(uint256 __tokenID) { if (__tokenID == 0 || __tokenID > 5) { revert PepeEditionNotFound(); } _; } modifier onlyExistingSpecialEdition(Special __special) { if (SPECIAL_ZOGZ[__special].id == 0) { revert ZogzEditionNotFound(); } _; } modifier onlyExistingZogzEdition(uint256 __tokenID) { if (__tokenID == 0 || __tokenID > 100) { revert ZogzEditionNotFound(); } _; } //////////////////////////////////////////////////////////////////////////// // OWNER //////////////////////////////////////////////////////////////////////////// /** * @dev Used to pause sales. */ function pause() external onlyOwner { _pause(); } /** * @dev Used to unpause sales. */ function unpause() external onlyOwner { _unpause(); } /** * @dev Used to set new transaction limit. */ function setTransactionLimit( uint256 __transactionLimit ) external onlyOwner { transactionLimit = __transactionLimit; emit TransactionLimit(__transactionLimit); } /** * @dev Used to set family sets. */ function setFamilySets( Family[] calldata __familySets, uint256[][] calldata __ids ) external onlyOwner { for (uint256 i = 0; i < __familySets.length; i++) { if (FAMILY_SETS[__familySets[i]].length > 0) { revert FamilySetAlreadyExists(); } FAMILY_SETS[__familySets[i]] = __ids[i]; } emit FamilySets(__familySets, __ids); } /** * @dev Used to withdraw funds from the contract. */ function withdraw(uint256 __amount) external onlyOwner { (bool success, ) = owner().call{value: __amount}(""); if (!success) revert WithdrawFailed(); emit Withdraw(__amount); } /** * @dev Used to withdraw all funds from the contract. */ function withdrawAll() external onlyOwner { uint256 amount = address(this).balance; (bool success, ) = owner().call{value: amount}(""); if (!success) revert WithdrawFailed(); emit Withdraw(amount); } //////////////////////////////////////////////////////////////////////////// // INTERNALS //////////////////////////////////////////////////////////////////////////// function _burn( uint256 __burnTokenId, uint256 __burnAmount, uint256 __burnMultiplier ) internal { if (__burnAmount == 0) { revert InvalidBurnAmount(); } uint256 burnAmountRemainder = __burnMultiplier % BURN_MULTIPLIERS[__burnTokenId]; if (burnAmountRemainder != 0) { revert BurnAmountMustBeExact(); } uint256 calculatedBurnAmount = __burnMultiplier / BURN_MULTIPLIERS[__burnTokenId]; if (calculatedBurnAmount == 0) { revert InvalidBurnAmount(); } if (calculatedBurnAmount != __burnAmount) { revert BurnAmountDoesNotMatch(); } _pepeEditionsContract.burn( _msgSender(), __burnTokenId, calculatedBurnAmount ); } function _mint(uint256 __tokenID, uint256 __amount) internal { _zogzEditionsContract.mint(_msgSender(), __tokenID, __amount); } function _mintBatch( uint256 __from, uint256 __to, uint256 __amount ) internal { uint256 total = __to - __from + 1; uint256[] memory ids = new uint256[](total); uint256[] memory amounts = new uint256[](total); for (uint256 i = 0; i < total; i++) { ids[i] = i + __from; amounts[i] = __amount; } _zogzEditionsContract.mintBatch(_msgSender(), ids, amounts); } function _mintBatchIds(uint256[] memory __ids, uint256 __amount) internal { uint256[] memory amounts = new uint256[](__ids.length); for (uint256 i = 0; i < __ids.length; i++) { amounts[i] = __amount; } _zogzEditionsContract.mintBatch(_msgSender(), __ids, amounts); } function _validateTotalAmountAndPrice(uint256 __totalAmount) internal view { if (__totalAmount == 0) { revert InvalidAmount(); } if (__totalAmount > transactionLimit) { revert AmountExceedsTransactionLimit(); } if (msg.value != MINT_PRICE * __totalAmount) { revert IncorrectPrice(); } } //////////////////////////////////////////////////////////////////////////// // WRITES //////////////////////////////////////////////////////////////////////////// /** * @dev Used to buy a Full Set (burn-gating). * * Requirements: * * - `__amount` must be greater than `0`. * - `__burnTokenId` must be an existing Pepe Edition. * - `__burnAmount` must match the burn amount needed for `__amount`. * * Emits a {FullSetPurchase} event. * */ function buyFullSetWithBurn( uint256 __amount, uint256 __burnTokenId, uint256 __burnAmount ) external payable nonReentrant whenNotPaused onlyEOA onlyExistingPepeEdition(__burnTokenId) { uint256 totalAmount = __amount * FULL_SET_SUPPLY; _validateTotalAmountAndPrice(totalAmount); if (block.timestamp < SALE_START) { revert HasNotStarted(); } _burn(__burnTokenId, __burnAmount, totalAmount); _mintBatch(1, FULL_SET_SUPPLY, __amount); emit FullSetPurchase(_msgSender(), __amount); } /** * @dev Used to buy a Single ZOGZ. * * Requirements: * * - `__tokenID` must be a valid ZOGZ (1-100). * - `__amount` must be greater than `0`. * * Emits a {SinglePurchase} event. * */ function buySingle( uint256 __tokenID, uint256 __amount ) external payable nonReentrant whenNotPaused onlyEOA onlyExistingZogzEdition(__tokenID) { _validateTotalAmountAndPrice(__amount); DailySet memory dailySet = DAILY_SETS[_tokenToDailySet[__tokenID]]; if (block.timestamp < dailySet.start) { revert HasNotStarted(); } if (block.timestamp > dailySet.end) { revert HasEnded(); } _mint(__tokenID, __amount); emit SinglePurchase(_msgSender(), __tokenID, __amount); } /** * @dev Used to buy a Single ZOGZ (burn-gating). * * Requirements: * * - `__tokenID` must be a valid ZOGZ (1-100). * - `__amount` must be greater than `0`. * - `__burnTokenId` must be an existing Pepe Edition. * - `__burnAmount` must match the burn amount needed for `__amount`. * * Emits a {SinglePurchase} event. * */ function buySingleWithBurn( uint256 __tokenID, uint256 __amount, uint256 __burnTokenId, uint256 __burnAmount ) external payable nonReentrant whenNotPaused onlyEOA onlyExistingZogzEdition(__tokenID) onlyExistingPepeEdition(__burnTokenId) { _validateTotalAmountAndPrice(__amount); DailySet memory dailySet = DAILY_SETS[_tokenToDailySet[__tokenID]]; if (block.timestamp < dailySet.end) { revert HasNotStarted(); } _burn(__burnTokenId, __burnAmount, __amount); _mint(__tokenID, __amount); emit SinglePurchase(_msgSender(), __tokenID, __amount); } /** * @dev Used to buy a Daily Set. * * Requirements: * * - `__day` must be a valid Day (1-10). * - `__amount` must be greater than `0`. * * Emits a {DailySetPurchase} event. * */ function buyDailySet( uint256 __day, uint256 __amount ) external payable nonReentrant whenNotPaused onlyEOA onlyExistingDay(__day) { _validateTotalAmountAndPrice(__amount * DAILY_SET_SUPPLY); DailySet memory dailySet = DAILY_SETS[__day]; if (block.timestamp < dailySet.start) { revert HasNotStarted(); } if (block.timestamp > dailySet.end) { revert HasEnded(); } _mintBatch( dailySet.from, dailySet.from + DAILY_SET_SUPPLY - 1, __amount ); emit DailySetPurchase(_msgSender(), __day, __amount); } /** * @dev Used to buy a Daily Set (burn-gating). * * Requirements: * * - `__day` must be a valid Day (1-10). * - `__amount` must be greater than `0`. * - `__burnTokenId` must be an existing Pepe Edition. * - `__burnAmount` must match the burn amount needed for `__day` x `__amount`. * * Emits a {DailySetPurchase} event. * */ function buyDailySetWithBurn( uint256 __day, uint256 __amount, uint256 __burnTokenId, uint256 __burnAmount ) external payable nonReentrant whenNotPaused onlyEOA onlyExistingDay(__day) { DailySet memory dailySet = DAILY_SETS[__day]; uint256 totalAmount = __amount * DAILY_SET_SUPPLY; _validateTotalAmountAndPrice(totalAmount); if (block.timestamp < dailySet.end) { revert HasNotStarted(); } _burn(__burnTokenId, __burnAmount, totalAmount); _mintBatch( dailySet.from, dailySet.from + DAILY_SET_SUPPLY - 1, __amount ); emit DailySetPurchase(_msgSender(), __day, __amount); } /** * @dev Used to buy a Family Set (burn-gating). * * Requirements: * * - `__family` must be an existing Family Set. * - `__amount` must be greater than `0`. * - `__burnTokenId` must be an existing Pepe Edition. * - `__burnAmount` must match the burn amount needed for `__family` x `__amount`. * * Emits a {FamilySetPurchase} event. * */ function buyFamilySetWithBurn( Family __family, uint256 __amount, uint256 __burnTokenId, uint256 __burnAmount ) external payable nonReentrant whenNotPaused onlyEOA onlyExistingPepeEdition(__burnTokenId) { uint256[] memory ids = FAMILY_SETS[__family]; if (block.timestamp < SALE_END) { revert HasNotStarted(); } uint256 totalAmount = __amount * ids.length; _validateTotalAmountAndPrice(totalAmount); _burn(__burnTokenId, __burnAmount, totalAmount); _mintBatchIds(ids, __amount); emit FamilySetPurchase(_msgSender(), __family, __amount); } /** * @dev Used to redeem Special ZOGZ. * * Requirements: * * - `__special` must be an existing Special ZOGZ. * - `__amount` must be greater than `0`. * - `__burnTokenId` must be an existing Pepe Edition. * - `__burnAmount` must match the burn amount needed for `__special` x `__amount`. * * Emits a {Redemption} event. * */ function redeemSpecialZogz( Special __special, uint256 __amount, uint256 __burnTokenId, uint256 __burnAmount ) external nonReentrant whenNotPaused onlyEOA onlyExistingPepeEdition(__burnTokenId) onlyExistingSpecialEdition(__special) { if (block.timestamp < SALE_START) { revert HasNotStarted(); } uint256 totalAmount = __amount * SPECIAL_ZOGZ[__special].cost; _burn(__burnTokenId, __burnAmount, totalAmount); _mint(SPECIAL_ZOGZ[__special].id, __amount); emit Redemption(_msgSender(), __special, __amount); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol) pragma solidity ^0.8.0; import "../utils/Context.sol"; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(_msgSender()); } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { _checkOwner(); _; } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if the sender is not the owner. */ function _checkOwner() internal view virtual { require(owner() == _msgSender(), "Ownable: caller is not the owner"); } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.7.0) (security/Pausable.sol) pragma solidity ^0.8.0; import "../utils/Context.sol"; /** * @dev Contract module which allows children to implement an emergency stop * mechanism that can be triggered by an authorized account. * * This module is used through inheritance. It will make available the * modifiers `whenNotPaused` and `whenPaused`, which can be applied to * the functions of your contract. Note that they will not be pausable by * simply including this module, only once the modifiers are put in place. */ abstract contract Pausable is Context { /** * @dev Emitted when the pause is triggered by `account`. */ event Paused(address account); /** * @dev Emitted when the pause is lifted by `account`. */ event Unpaused(address account); bool private _paused; /** * @dev Initializes the contract in unpaused state. */ constructor() { _paused = false; } /** * @dev Modifier to make a function callable only when the contract is not paused. * * Requirements: * * - The contract must not be paused. */ modifier whenNotPaused() { _requireNotPaused(); _; } /** * @dev Modifier to make a function callable only when the contract is paused. * * Requirements: * * - The contract must be paused. */ modifier whenPaused() { _requirePaused(); _; } /** * @dev Returns true if the contract is paused, and false otherwise. */ function paused() public view virtual returns (bool) { return _paused; } /** * @dev Throws if the contract is paused. */ function _requireNotPaused() internal view virtual { require(!paused(), "Pausable: paused"); } /** * @dev Throws if the contract is not paused. */ function _requirePaused() internal view virtual { require(paused(), "Pausable: not paused"); } /** * @dev Triggers stopped state. * * Requirements: * * - The contract must not be paused. */ function _pause() internal virtual whenNotPaused { _paused = true; emit Paused(_msgSender()); } /** * @dev Returns to normal state. * * Requirements: * * - The contract must be paused. */ function _unpause() internal virtual whenPaused { _paused = false; emit Unpaused(_msgSender()); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.8.0) (security/ReentrancyGuard.sol) pragma solidity ^0.8.0; /** * @dev Contract module that helps prevent reentrant calls to a function. * * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier * available, which can be applied to functions to make sure there are no nested * (reentrant) calls to them. * * Note that because there is a single `nonReentrant` guard, functions marked as * `nonReentrant` may not call one another. This can be worked around by making * those functions `private`, and then adding `external` `nonReentrant` entry * points to them. * * TIP: If you would like to learn more about reentrancy and alternative ways * to protect against it, check out our blog post * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul]. */ abstract contract ReentrancyGuard { // Booleans are more expensive than uint256 or any type that takes up a full // word because each write operation emits an extra SLOAD to first read the // slot's contents, replace the bits taken up by the boolean, and then write // back. This is the compiler's defense against contract upgrades and // pointer aliasing, and it cannot be disabled. // The values being non-zero value makes deployment a bit more expensive, // but in exchange the refund on every call to nonReentrant will be lower in // amount. Since refunds are capped to a percentage of the total // transaction's gas, it is best to keep them low in cases like this one, to // increase the likelihood of the full refund coming into effect. uint256 private constant _NOT_ENTERED = 1; uint256 private constant _ENTERED = 2; uint256 private _status; constructor() { _status = _NOT_ENTERED; } /** * @dev Prevents a contract from calling itself, directly or indirectly. * Calling a `nonReentrant` function from another `nonReentrant` * function is not supported. It is possible to prevent this from happening * by making the `nonReentrant` function external, and making it call a * `private` function that does the actual work. */ modifier nonReentrant() { _nonReentrantBefore(); _; _nonReentrantAfter(); } function _nonReentrantBefore() private { // On the first call to nonReentrant, _status will be _NOT_ENTERED require(_status != _ENTERED, "ReentrancyGuard: reentrant call"); // Any calls to nonReentrant after this point will fail _status = _ENTERED; } function _nonReentrantAfter() private { // By storing the original value once again, a refund is triggered (see // https://eips.ethereum.org/EIPS/eip-2200) _status = _NOT_ENTERED; } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (utils/Context.sol) pragma solidity ^0.8.0; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } }
{ "remappings": [ "@openzeppelin/=lib/openzeppelin-contracts/", "ds-test/=lib/forge-std/lib/ds-test/src/", "forge-std/=lib/forge-std/src/", "openzeppelin-contracts/=lib/openzeppelin-contracts/" ], "optimizer": { "enabled": true, "runs": 1000000 }, "metadata": { "bytecodeHash": "ipfs", "appendCBOR": true }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "evmVersion": "london", "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"__pepeEditionsContractAddress","type":"address"},{"internalType":"address","name":"__zogzEditionsContractAddress","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"AmountExceedsTransactionLimit","type":"error"},{"inputs":[],"name":"BurnAmountDoesNotMatch","type":"error"},{"inputs":[],"name":"BurnAmountMustBeExact","type":"error"},{"inputs":[],"name":"DayNotFound","type":"error"},{"inputs":[],"name":"FamilySetAlreadyExists","type":"error"},{"inputs":[],"name":"Forbidden","type":"error"},{"inputs":[],"name":"HasEnded","type":"error"},{"inputs":[],"name":"HasNotEnded","type":"error"},{"inputs":[],"name":"HasNotStarted","type":"error"},{"inputs":[],"name":"IncorrectPrice","type":"error"},{"inputs":[],"name":"InvalidAddress","type":"error"},{"inputs":[],"name":"InvalidAmount","type":"error"},{"inputs":[],"name":"InvalidBurnAmount","type":"error"},{"inputs":[],"name":"PepeEditionNotFound","type":"error"},{"inputs":[],"name":"WithdrawFailed","type":"error"},{"inputs":[],"name":"ZogzEditionNotFound","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"__account","type":"address"},{"indexed":false,"internalType":"uint256","name":"__day","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"__amount","type":"uint256"}],"name":"DailySetPurchase","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"__account","type":"address"},{"indexed":false,"internalType":"enum ZogzFunSales.Family","name":"__family","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"__amount","type":"uint256"}],"name":"FamilySetPurchase","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"enum ZogzFunSales.Family[]","name":"__families","type":"uint8[]"},{"indexed":false,"internalType":"uint256[][]","name":"__ids","type":"uint256[][]"}],"name":"FamilySets","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"__account","type":"address"},{"indexed":false,"internalType":"uint256","name":"__amount","type":"uint256"}],"name":"FullSetPurchase","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"__account","type":"address"},{"indexed":false,"internalType":"enum ZogzFunSales.Special","name":"__special","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"__amount","type":"uint256"}],"name":"Redemption","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"__account","type":"address"},{"indexed":false,"internalType":"uint256","name":"__tokenID","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"__amount","type":"uint256"}],"name":"SinglePurchase","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"__transactionLimit","type":"uint256"}],"name":"TransactionLimit","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"__amount","type":"uint256"}],"name":"Withdraw","type":"event"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"BURN_MULTIPLIERS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"DAILY_SETS","outputs":[{"internalType":"uint256","name":"from","type":"uint256"},{"internalType":"uint256","name":"start","type":"uint256"},{"internalType":"uint256","name":"end","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DAILY_SET_SUPPLY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"enum ZogzFunSales.Family","name":"","type":"uint8"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"FAMILY_SETS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"FULL_SET_SUPPLY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MINT_PRICE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SALE_END","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SALE_START","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"enum ZogzFunSales.Special","name":"","type":"uint8"}],"name":"SPECIAL_ZOGZ","outputs":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"cost","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_pepeEditionsContract","outputs":[{"internalType":"contract IPepeEditions","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_zogzEditionsContract","outputs":[{"internalType":"contract IZogzEditions","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"__day","type":"uint256"},{"internalType":"uint256","name":"__amount","type":"uint256"}],"name":"buyDailySet","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"__day","type":"uint256"},{"internalType":"uint256","name":"__amount","type":"uint256"},{"internalType":"uint256","name":"__burnTokenId","type":"uint256"},{"internalType":"uint256","name":"__burnAmount","type":"uint256"}],"name":"buyDailySetWithBurn","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"enum ZogzFunSales.Family","name":"__family","type":"uint8"},{"internalType":"uint256","name":"__amount","type":"uint256"},{"internalType":"uint256","name":"__burnTokenId","type":"uint256"},{"internalType":"uint256","name":"__burnAmount","type":"uint256"}],"name":"buyFamilySetWithBurn","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"__amount","type":"uint256"},{"internalType":"uint256","name":"__burnTokenId","type":"uint256"},{"internalType":"uint256","name":"__burnAmount","type":"uint256"}],"name":"buyFullSetWithBurn","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"__tokenID","type":"uint256"},{"internalType":"uint256","name":"__amount","type":"uint256"}],"name":"buySingle","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"__tokenID","type":"uint256"},{"internalType":"uint256","name":"__amount","type":"uint256"},{"internalType":"uint256","name":"__burnTokenId","type":"uint256"},{"internalType":"uint256","name":"__burnAmount","type":"uint256"}],"name":"buySingleWithBurn","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"enum ZogzFunSales.Special","name":"__special","type":"uint8"},{"internalType":"uint256","name":"__amount","type":"uint256"},{"internalType":"uint256","name":"__burnTokenId","type":"uint256"},{"internalType":"uint256","name":"__burnAmount","type":"uint256"}],"name":"redeemSpecialZogz","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"enum ZogzFunSales.Family[]","name":"__familySets","type":"uint8[]"},{"internalType":"uint256[][]","name":"__ids","type":"uint256[][]"}],"name":"setFamilySets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"__transactionLimit","type":"uint256"}],"name":"setTransactionLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transactionLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"__amount","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawAll","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60806040526103e86009553480156200001757600080fd5b5060405162003395380380620033958339810160408190526200003a9162000d40565b620000453362000cd3565b6000805460ff60a01b19169055600180556001600160a01b0382166200007e5760405163e6c4247b60e01b815260040160405180910390fd5b6001600160a01b038116620000a65760405163e6c4247b60e01b815260040160405180910390fd5b600780546001600160a01b038481166001600160a01b0319928316178355600880549185169190921617815560017fe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0819055600a7f88601476d11616a71c5be67555bd1dff4b1cbf21533d2669b768b61518cfe1c381905560327f679795a0195a1b76cdebb7c51d74e058aee92919b8c3389af86ef24535e8a28c556101f47fb98b78633099fa36ed8b8680c4f8092689e1e04080eb9cbb077ca38a14d7e384556102587fee60d0579bcffd98e668647d59fec1ff86a7fb340ce572e844f234ae73a6918f556040805180820182526065815260208082018481526000808052600580845293517f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bc5590517f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bd558351808501855260668152601481840181815288845285855291517f1471eb6eb2c5e789fc3de43f8ce62938c7d1836ec861730447e2ada8fd81017b5590517f1471eb6eb2c5e789fc3de43f8ce62938c7d1836ec861730447e2ada8fd81017c558451808601865260678152808401828152600280855286865291517f89832631fb3c3307a103ba2c84ab569c64d6182a18893dcd163f0f1c2090733a55517f89832631fb3c3307a103ba2c84ab569c64d6182a18893dcd163f0f1c2090733b558551808701875260688152808501928352600380855286865290517fa9bc9a3a348c357ba16b37005d7e6b3236198c0e939f4af8c5f19b8deeb8ebc05591517fa9bc9a3a348c357ba16b37005d7e6b3236198c0e939f4af8c5f19b8deeb8ebc1558551808701875260698152808501868152600480865287875291517f3eec716f11ba9e820c81ca75eb978ffb45831ef8b7a53e5e422c26008e1ca6d555517f3eec716f11ba9e820c81ca75eb978ffb45831ef8b7a53e5e422c26008e1ca6d65586518088018852606a815280860187815287865287875290517f458b30c2d72bfd2c6317304a4594ecbafe5f729d3111b65fdc3a33bd48e5432d55517f458b30c2d72bfd2c6317304a4594ecbafe5f729d3111b65fdc3a33bd48e5432e5586518088018852606b81528086018c8152600680875288885291517f069400f22b28c6c362558d92f66163cec5671cba50b61abd2eecfcd0eaeac51855517f069400f22b28c6c362558d92f66163cec5671cba50b61abd2eecfcd0eaeac5195587518089018952606c81528087018581528d875288885290517feddb6698d7c569ff62ff64f1f1492bf14a54594835ba0faac91f84b4f5d8146055517feddb6698d7c569ff62ff64f1f1492bf14a54594835ba0faac91f84b4f5d814615587518089018952606d815260098188018181528d885289895291517ffb33122aa9f93cc639ebe80a7bc4784c11e6053dde89c6f4f7e268c6a623da1e5590517ffb33122aa9f93cc639ebe80a7bc4784c11e6053dde89c6f4f7e268c6a623da1f558851808a018a52606e81528088018c815282885289895290517fc0a4a8be475dfebc377ebef2d7c4ff47656f572a08dd92b81017efcdba0febe155517fc0a4a8be475dfebc377ebef2d7c4ff47656f572a08dd92b81017efcdba0febe2558851808a018a52606f815260648189019081528b885289895290517fa18b128af1c8fc61ff46f02d146e54546f34d340574cf2cef6a753cba6b6701d55517fa18b128af1c8fc61ff46f02d146e54546f34d340574cf2cef6a753cba6b6701e55885160608082018b528c82526364592a90828a0190815263645a7c0f838d019081528e8a52888b5292517fa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054c55517fa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054d5590517fa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054e5589518082018b52600b815263645a7c10818a0190815263645bcd8f828d01908152968952878a5290517fc3a24b0501bd2c13a7e57f2db4369ec4c223447539fc0724a9d55ac4a06ebd4d55517fc3a24b0501bd2c13a7e57f2db4369ec4c223447539fc0724a9d55ac4a06ebd4e5593517fc3a24b0501bd2c13a7e57f2db4369ec4c223447539fc0724a9d55ac4a06ebd4f5588518085018a526015815263645bcd9081890190815263645d1f0f828c01908152878952878a5291517fcbc4e5fb02c3d1de23a9f1e014b4d2ee5aeaea9505df5e855c9210bf472495af55517fcbc4e5fb02c3d1de23a9f1e014b4d2ee5aeaea9505df5e855c9210bf472495b055517fcbc4e5fb02c3d1de23a9f1e014b4d2ee5aeaea9505df5e855c9210bf472495b15588518085018a52601f815263645d1f1081890190815263645e708f828c0190815294885286895290517f83ec6a1f0257b830b5e016457c9cf1435391bf56cc98f369a58a54fe9377246555517f83ec6a1f0257b830b5e016457c9cf1435391bf56cc98f369a58a54fe937724665591517f83ec6a1f0257b830b5e016457c9cf1435391bf56cc98f369a58a54fe9377246755875180840189526029815263645e709081880190815263645fc20f828b0190815298875285885290517f405aad32e1adbac89bb7f176e338b8fc6e994ca210c9bb7bdca249b46594225055517f405aad32e1adbac89bb7f176e338b8fc6e994ca210c9bb7bdca249b4659422515595517f405aad32e1adbac89bb7f176e338b8fc6e994ca210c9bb7bdca249b4659422525586518083018852603381526364626510818701908152636463b68f828a0190815297865284875290517fc69056f16cbaa3c616b828e333ab7d3a32310765507f8f58359e99ebb7a885f355517fc69056f16cbaa3c616b828e333ab7d3a32310765507f8f58359e99ebb7a885f45594517fc69056f16cbaa3c616b828e333ab7d3a32310765507f8f58359e99ebb7a885f55585518082018752603d8152636463b690818601908152636465080f8289019081529b855283865290517ff2c49132ed1cee2a7e75bde50d332a2f81f1d01e5456d8a19d1df09bd561dbd255517ff2c49132ed1cee2a7e75bde50d332a2f81f1d01e5456d8a19d1df09bd561dbd35598517ff2c49132ed1cee2a7e75bde50d332a2f81f1d01e5456d8a19d1df09bd561dbd4558451808a018652604781526364650810818501908152636466598f82880190815299845282855290517f85aaa47b6dc46495bb8824fad4583769726fea36efd831a35556690b830a8fbe55517f85aaa47b6dc46495bb8824fad4583769726fea36efd831a35556690b830a8fbf5596517f85aaa47b6dc46495bb8824fad4583769726fea36efd831a35556690b830a8fc05583518089018552605181526364665990818401908152636467ab0f82870190815294835288845290517f8a8dc4e5242ea8b1ab1d60606dae757e6c2cca9f92a2cced9f72c19960bcb45855517f8a8dc4e5242ea8b1ab1d60606dae757e6c2cca9f92a2cced9f72c19960bcb4595591517f8a8dc4e5242ea8b1ab1d60606dae757e6c2cca9f92a2cced9f72c19960bcb45a5582519687018352605b8752636467ab10878201908152636468fc8f938801938452939091529390935292517f9dcb9783ba5cd0b54745f65f4f918525e461e91888c334e5342cb380ac558d535591517f9dcb9783ba5cd0b54745f65f4f918525e461e91888c334e5342cb380ac558d5455517f9dcb9783ba5cd0b54745f65f4f918525e461e91888c334e5342cb380ac558d55555b6064811162000cca57605a81111562000b92576000818152600660205260409020600a905562000cb5565b605081111562000bb45760008181526006602052604090206009905562000cb5565b604681111562000bd65760008181526006602052604090206008905562000cb5565b603c81111562000bf85760008181526006602052604090206007905562000cb5565b603281111562000c1a5760008181526006602081905260409091205562000cb5565b602881111562000c3c5760008181526006602052604090206005905562000cb5565b601e81111562000c5e5760008181526006602052604090206004905562000cb5565b601481111562000c805760008181526006602052604090206003905562000cb5565b600a81111562000ca25760008181526006602052604090206002905562000cb5565b6000818152600660205260409020600190555b8062000cc18162000d78565b91505062000b67565b50505062000da0565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b038116811462000d3b57600080fd5b919050565b6000806040838503121562000d5457600080fd5b62000d5f8362000d23565b915062000d6f6020840162000d23565b90509250929050565b60006001820162000d9957634e487b7160e01b600052601160045260246000fd5b5060010190565b6125e58062000db06000396000f3fe6080604052600436106101c25760003560e01c80637feea1dd116100f7578063aa71027311610095578063f19605d611610064578063f19605d614610536578063f2fde38b1461054c578063f949353e1461056c578063ff3110e91461058c57600080fd5b8063aa710273146104ae578063c002d23d146104ce578063c8b0ec65146104e9578063caa025771461051657600080fd5b80638456cb59116100d15780638456cb5914610441578063853828b6146104565780638da5cb5b1461046b5780639aa0ff7b1461049657600080fd5b80637feea1dd146103d0578063809c4a751461041957806381f7b0961461042c57600080fd5b80634c7b2c3f116101645780635c975abb1161013e5780635c975abb1461030957806361e4993f1461034457806364bfa5461461039b578063715018a6146103bb57600080fd5b80634c7b2c3f146102b65780634eb4e233146102c95780635b6beb86146102f657600080fd5b806322673030116101a057806322673030146102175780632e1a7d4d1461022f5780633f4ba83a1461024f5780633fa73c1e1461026457600080fd5b806306bac6d9146101c75780630f730076146101ef57806315b8fa7e14610204575b600080fd5b3480156101d357600080fd5b506101dc600a81565b6040519081526020015b60405180910390f35b6102026101fd366004611ee9565b61059f565b005b610202610212366004611f22565b61076f565b34801561022357600080fd5b506101dc6364592a9081565b34801561023b57600080fd5b5061020261024a366004611f54565b610906565b34801561025b57600080fd5b506102026109f7565b34801561027057600080fd5b506007546102919073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101e6565b6102026102c4366004611f6d565b610a09565b3480156102d557600080fd5b506101dc6102e4366004611f54565b60026020526000908152604090205481565b610202610304366004611f22565b610b65565b34801561031557600080fd5b5060005474010000000000000000000000000000000000000000900460ff1660405190151581526020016101e6565b34801561035057600080fd5b5061038061035f366004611f54565b60036020526000908152604090208054600182015460029092015490919083565b604080519384526020840192909252908201526060016101e6565b3480156103a757600080fd5b506102026103b6366004611f54565b610cf5565b3480156103c757600080fd5b50610202610d38565b3480156103dc57600080fd5b506104046103eb366004611fa8565b6005602052600090815260409020805460019091015482565b604080519283526020830191909152016101e6565b610202610427366004611fca565b610d4a565b34801561043857600080fd5b506101dc606481565b34801561044d57600080fd5b50610202610f22565b34801561046257600080fd5b50610202610f32565b34801561047757600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff16610291565b3480156104a257600080fd5b506101dc636468fc8f81565b3480156104ba57600080fd5b506101dc6104c9366004611fec565b610f5c565b3480156104da57600080fd5b506101dc662bd72a2487400081565b3480156104f557600080fd5b506008546102919073ffffffffffffffffffffffffffffffffffffffff1681565b34801561052257600080fd5b50610202610531366004612016565b610f8d565b34801561054257600080fd5b506101dc60095481565b34801561055857600080fd5b50610202610567366004612035565b611194565b34801561057857600080fd5b506102026105873660046120b7565b611250565b61020261059a366004611fca565b6113de565b6105a761155d565b6105af6115d0565b3233146105e8576040517fee90c46800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b818015806105f65750600581115b1561062d576040517f055adc6d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006004600087600981111561064557610645612123565b600981111561065657610656612123565b81526020019081526020016000208054806020026020016040519081016040528092919081815260200182805480156106ae57602002820191906000526020600020905b81548152602001906001019080831161069a575b50505050509050636468fc8f4210156106f3576040517fedfcf79700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008151866107029190612181565b905061070d81611655565b610718858583611714565b61072282876118e1565b7f8f1c5392ef37d72a16d62ba3d766388b7a8b558290ae20985aef045c4144cb50338888604051610755939291906121b2565b60405180910390a150505061076960018055565b50505050565b61077761155d565b61077f6115d0565b3233146107b8576040517fee90c46800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b838015806107c65750600a81115b156107fd576040517f4e3ac9b300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600085815260036020908152604080832081516060810183528154815260018201549381019390935260020154908201529061083a600a87612181565b905061084581611655565b8160400151421015610883576040517fedfcf79700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61088e858583611714565b81516108b19060016108a1600a836121ea565b6108ab91906121fd565b886119dc565b7fe894305c9d95da2ac1eaa2380f6efa11efee9965df019410e948b2fd402e03fb335b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252602082018a90528101889052606001610755565b61090e611b60565b6000805473ffffffffffffffffffffffffffffffffffffffff165b73ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114610980576040519150601f19603f3d011682016040523d82523d6000602084013e610985565b606091505b50509050806109c0576040517f750b219c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040518281527f5b6b431d4476a211bb7d41c20d1aab9ae2321deee0d20be3d9fc9b1093fa6e3d9060200160405180910390a15050565b6109ff611b60565b610a07611be1565b565b610a1161155d565b610a196115d0565b323314610a52576040517fee90c46800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81801580610a605750600581115b15610a97576040517f055adc6d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610aa4606486612181565b9050610aaf81611655565b6364592a90421015610aed576040517fedfcf79700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610af8848483611714565b610b0560016064876119dc565b7fcaf95cc263913365e029e8f1cb92cde360b51663d3b1c010f41af0b677b92f34336040805173ffffffffffffffffffffffffffffffffffffffff9092168252602082018890520160405180910390a15050610b6060018055565b505050565b610b6d61155d565b610b756115d0565b323314610bae576040517fee90c46800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b83801580610bbc5750606481115b15610bf3576040517fdd1986c000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82801580610c015750600581115b15610c38576040517f055adc6d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c4185611655565b600086815260066020908152604080832054835260038252918290208251606081018452815481526001820154928101929092526002015491810182905290421015610cb9576040517fedfcf79700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610cc4858588611714565b610cce8787611c5e565b7f3045b1f432304c865f29eee852982c94287cddc8f423568d1132c4980c066104336108d4565b610cfd611b60565b60098190556040518181527faa806d9f1b4285f6cd559d658b62ed4ae34f4c9cf48f17bbe30f9cba40849d799060200160405180910390a150565b610d40611b60565b610a076000611d0d565b610d5261155d565b610d5a6115d0565b323314610d93576040517fee90c46800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81801580610da15750600a81115b15610dd8576040517f4e3ac9b300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610deb610de6600a84612181565b611655565b600083815260036020908152604091829020825160608101845281548152600182015492810183905260029091015492810192909252421015610e5a576040517fedfcf79700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060400151421115610e98576040517f0cbb94e000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8051610ebb906001610eab600a836121ea565b610eb591906121fd565b856119dc565b7fe894305c9d95da2ac1eaa2380f6efa11efee9965df019410e948b2fd402e03fb335b6040805173ffffffffffffffffffffffffffffffffffffffff909216825260208201879052810185905260600160405180910390a15050610f1e60018055565b5050565b610f2a611b60565b610a07611d82565b610f3a611b60565b47600061092960005473ffffffffffffffffffffffffffffffffffffffff1690565b60046020528160005260406000208181548110610f7857600080fd5b90600052602060002001600091509150505481565b610f9561155d565b610f9d6115d0565b323314610fd6576040517fee90c46800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81801580610fe45750600581115b1561101b576040517f055adc6d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b846005600082600a81111561103257611032612123565b600a81111561104357611043612123565b81526020019081526020016000206000015460000361108e576040517fdd1986c000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6364592a904210156110cc576040517fedfcf79700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006005600088600a8111156110e4576110e4612123565b600a8111156110f5576110f5612123565b815260200190815260200160002060010154866111129190612181565b905061111f858583611714565b6111616005600089600a81111561113857611138612123565b600a81111561114957611149612123565b81526020019081526020016000206000015487611c5e565b7f5d1ba5121542e1f2219682beec96ee9657a9a0db1f06f2a7c7fd835e7e83a14733888860405161075593929190612210565b61119c611b60565b73ffffffffffffffffffffffffffffffffffffffff8116611244576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b61124d81611d0d565b50565b611258611b60565b60005b8381101561139a5760006004600087878581811061127b5761127b61224e565b9050602002016020810190611290919061227d565b60098111156112a1576112a1612123565b60098111156112b2576112b2612123565b815260208101919091526040016000205411156112fb576040517f4555b6f300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82828281811061130d5761130d61224e565b905060200281019061131f9190612298565b600460008888868181106113355761133561224e565b905060200201602081019061134a919061227d565b600981111561135b5761135b612123565b600981111561136c5761136c612123565b81526020019081526020016000209190611387929190611e75565b508061139281612300565b91505061125b565b507f9531395e7a88a9bfedd02178b255fca41fc1750523937545cbacc2496108ba7d848484846040516113d09493929190612383565b60405180910390a150505050565b6113e661155d565b6113ee6115d0565b323314611427576040517fee90c46800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b818015806114355750606481115b1561146c576040517fdd1986c000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61147582611655565b600083815260066020908152604080832054835260038252918290208251606081018452815481526001820154928101839052600290910154928101929092524210156114ee576040517fedfcf79700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806040015142111561152c576040517f0cbb94e000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6115368484611c5e565b7f3045b1f432304c865f29eee852982c94287cddc8f423568d1132c4980c06610433610ede565b6002600154036115c9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161123b565b6002600155565b60005474010000000000000000000000000000000000000000900460ff1615610a07576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015260640161123b565b8060000361168f576040517f2c5211c600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6009548111156116cb576040517f8ba1cb6700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6116dc81662bd72a24874000612181565b341461124d576040517f99b5cb1d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8160000361174e576040517f2075cc1000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008381526002602052604081205461176790836124d2565b905080156117a1576040517f1468299100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000848152600260205260408120546117ba90846124e6565b9050806000036117f6576040517f2075cc1000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b83811461182f576040517f1a1ccd6700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60075473ffffffffffffffffffffffffffffffffffffffff1663f5298aca336040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815273ffffffffffffffffffffffffffffffffffffffff90911660048201526024810188905260448101849052606401600060405180830381600087803b1580156118c257600080fd5b505af11580156118d6573d6000803e3d6000fd5b505050505050505050565b6000825167ffffffffffffffff8111156118fd576118fd6124fa565b604051908082528060200260200182016040528015611926578160200160208202803683370190505b50905060005b835181101561196557828282815181106119485761194861224e565b60209081029190910101528061195d81612300565b91505061192c565b5060085473ffffffffffffffffffffffffffffffffffffffff1663d81d0a153385846040518463ffffffff1660e01b81526004016119a593929190612564565b600060405180830381600087803b1580156119bf57600080fd5b505af11580156119d3573d6000803e3d6000fd5b50505050505050565b60006119e884846121fd565b6119f39060016121ea565b905060008167ffffffffffffffff811115611a1057611a106124fa565b604051908082528060200260200182016040528015611a39578160200160208202803683370190505b50905060008267ffffffffffffffff811115611a5757611a576124fa565b604051908082528060200260200182016040528015611a80578160200160208202803683370190505b50905060005b83811015611ae657611a9887826121ea565b838281518110611aaa57611aaa61224e565b60200260200101818152505084828281518110611ac957611ac961224e565b602090810291909101015280611ade81612300565b915050611a86565b5060085473ffffffffffffffffffffffffffffffffffffffff1663d81d0a153384846040518463ffffffff1660e01b8152600401611b2693929190612564565b600060405180830381600087803b158015611b4057600080fd5b505af1158015611b54573d6000803e3d6000fd5b50505050505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610a07576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161123b565b611be9611df1565b600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b60085473ffffffffffffffffffffffffffffffffffffffff1663156e29f6336040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815273ffffffffffffffffffffffffffffffffffffffff90911660048201526024810185905260448101849052606401600060405180830381600087803b158015611cf157600080fd5b505af1158015611d05573d6000803e3d6000fd5b505050505050565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b611d8a6115d0565b600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16740100000000000000000000000000000000000000001790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258611c343390565b60005474010000000000000000000000000000000000000000900460ff16610a07576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5061757361626c653a206e6f7420706175736564000000000000000000000000604482015260640161123b565b828054828255906000526020600020908101928215611eb0579160200282015b82811115611eb0578235825591602001919060010190611e95565b50611ebc929150611ec0565b5090565b5b80821115611ebc5760008155600101611ec1565b8035600a8110611ee457600080fd5b919050565b60008060008060808587031215611eff57600080fd5b611f0885611ed5565b966020860135965060408601359560600135945092505050565b60008060008060808587031215611f3857600080fd5b5050823594602084013594506040840135936060013592509050565b600060208284031215611f6657600080fd5b5035919050565b600080600060608486031215611f8257600080fd5b505081359360208301359350604090920135919050565b8035600b8110611ee457600080fd5b600060208284031215611fba57600080fd5b611fc382611f99565b9392505050565b60008060408385031215611fdd57600080fd5b50508035926020909101359150565b60008060408385031215611fff57600080fd5b61200883611ed5565b946020939093013593505050565b6000806000806080858703121561202c57600080fd5b611f0885611f99565b60006020828403121561204757600080fd5b813573ffffffffffffffffffffffffffffffffffffffff81168114611fc357600080fd5b60008083601f84011261207d57600080fd5b50813567ffffffffffffffff81111561209557600080fd5b6020830191508360208260051b85010111156120b057600080fd5b9250929050565b600080600080604085870312156120cd57600080fd5b843567ffffffffffffffff808211156120e557600080fd5b6120f18883890161206b565b9096509450602087013591508082111561210a57600080fd5b506121178782880161206b565b95989497509550505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808202811582820484141761219857612198612152565b92915050565b600a81106121ae576121ae612123565b9052565b73ffffffffffffffffffffffffffffffffffffffff84168152606081016121dc602083018561219e565b826040830152949350505050565b8082018082111561219857612198612152565b8181038181111561219857612198612152565b73ffffffffffffffffffffffffffffffffffffffff8416815260608101600b841061223d5761223d612123565b602082019390935260400152919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006020828403121561228f57600080fd5b611fc382611ed5565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126122cd57600080fd5b83018035915067ffffffffffffffff8211156122e857600080fd5b6020019150600581901b36038213156120b057600080fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361233157612331612152565b5060010190565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83111561236a57600080fd5b8260051b80836020870137939093016020019392505050565b6040808252810184905260008560608301825b878110156123c3576123b0826123ab85611ed5565b61219e565b6020928301929190910190600101612396565b50602091508381038285015280858252828201905060058387821b8401018860005b89811015612492577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe086840301855281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18c360301811261244657600080fd5b8b01878101903567ffffffffffffffff81111561246257600080fd5b80861b360382131561247357600080fd5b61247e858284612338565b9689019694505050908601906001016123e5565b50909b9a5050505050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000826124e1576124e16124a3565b500690565b6000826124f5576124f56124a3565b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600081518084526020808501945080840160005b838110156125595781518752958201959082019060010161253d565b509495945050505050565b73ffffffffffffffffffffffffffffffffffffffff841681526060602082015260006125936060830185612529565b82810360408401526125a58185612529565b969550505050505056fea2646970667358221220f7fc342b062d3c762952a186f35a7e3e9d3be45051280c8a6bcd180dcf0e90b764736f6c634300081200330000000000000000000000004faab2f1851b58c26028ab7ba2873ff3c7b52d4c000000000000000000000000808e5cd160d8819ca24c2053037049eb611d0542
Deployed Bytecode
0x6080604052600436106101c25760003560e01c80637feea1dd116100f7578063aa71027311610095578063f19605d611610064578063f19605d614610536578063f2fde38b1461054c578063f949353e1461056c578063ff3110e91461058c57600080fd5b8063aa710273146104ae578063c002d23d146104ce578063c8b0ec65146104e9578063caa025771461051657600080fd5b80638456cb59116100d15780638456cb5914610441578063853828b6146104565780638da5cb5b1461046b5780639aa0ff7b1461049657600080fd5b80637feea1dd146103d0578063809c4a751461041957806381f7b0961461042c57600080fd5b80634c7b2c3f116101645780635c975abb1161013e5780635c975abb1461030957806361e4993f1461034457806364bfa5461461039b578063715018a6146103bb57600080fd5b80634c7b2c3f146102b65780634eb4e233146102c95780635b6beb86146102f657600080fd5b806322673030116101a057806322673030146102175780632e1a7d4d1461022f5780633f4ba83a1461024f5780633fa73c1e1461026457600080fd5b806306bac6d9146101c75780630f730076146101ef57806315b8fa7e14610204575b600080fd5b3480156101d357600080fd5b506101dc600a81565b6040519081526020015b60405180910390f35b6102026101fd366004611ee9565b61059f565b005b610202610212366004611f22565b61076f565b34801561022357600080fd5b506101dc6364592a9081565b34801561023b57600080fd5b5061020261024a366004611f54565b610906565b34801561025b57600080fd5b506102026109f7565b34801561027057600080fd5b506007546102919073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101e6565b6102026102c4366004611f6d565b610a09565b3480156102d557600080fd5b506101dc6102e4366004611f54565b60026020526000908152604090205481565b610202610304366004611f22565b610b65565b34801561031557600080fd5b5060005474010000000000000000000000000000000000000000900460ff1660405190151581526020016101e6565b34801561035057600080fd5b5061038061035f366004611f54565b60036020526000908152604090208054600182015460029092015490919083565b604080519384526020840192909252908201526060016101e6565b3480156103a757600080fd5b506102026103b6366004611f54565b610cf5565b3480156103c757600080fd5b50610202610d38565b3480156103dc57600080fd5b506104046103eb366004611fa8565b6005602052600090815260409020805460019091015482565b604080519283526020830191909152016101e6565b610202610427366004611fca565b610d4a565b34801561043857600080fd5b506101dc606481565b34801561044d57600080fd5b50610202610f22565b34801561046257600080fd5b50610202610f32565b34801561047757600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff16610291565b3480156104a257600080fd5b506101dc636468fc8f81565b3480156104ba57600080fd5b506101dc6104c9366004611fec565b610f5c565b3480156104da57600080fd5b506101dc662bd72a2487400081565b3480156104f557600080fd5b506008546102919073ffffffffffffffffffffffffffffffffffffffff1681565b34801561052257600080fd5b50610202610531366004612016565b610f8d565b34801561054257600080fd5b506101dc60095481565b34801561055857600080fd5b50610202610567366004612035565b611194565b34801561057857600080fd5b506102026105873660046120b7565b611250565b61020261059a366004611fca565b6113de565b6105a761155d565b6105af6115d0565b3233146105e8576040517fee90c46800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b818015806105f65750600581115b1561062d576040517f055adc6d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006004600087600981111561064557610645612123565b600981111561065657610656612123565b81526020019081526020016000208054806020026020016040519081016040528092919081815260200182805480156106ae57602002820191906000526020600020905b81548152602001906001019080831161069a575b50505050509050636468fc8f4210156106f3576040517fedfcf79700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008151866107029190612181565b905061070d81611655565b610718858583611714565b61072282876118e1565b7f8f1c5392ef37d72a16d62ba3d766388b7a8b558290ae20985aef045c4144cb50338888604051610755939291906121b2565b60405180910390a150505061076960018055565b50505050565b61077761155d565b61077f6115d0565b3233146107b8576040517fee90c46800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b838015806107c65750600a81115b156107fd576040517f4e3ac9b300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600085815260036020908152604080832081516060810183528154815260018201549381019390935260020154908201529061083a600a87612181565b905061084581611655565b8160400151421015610883576040517fedfcf79700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61088e858583611714565b81516108b19060016108a1600a836121ea565b6108ab91906121fd565b886119dc565b7fe894305c9d95da2ac1eaa2380f6efa11efee9965df019410e948b2fd402e03fb335b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252602082018a90528101889052606001610755565b61090e611b60565b6000805473ffffffffffffffffffffffffffffffffffffffff165b73ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114610980576040519150601f19603f3d011682016040523d82523d6000602084013e610985565b606091505b50509050806109c0576040517f750b219c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040518281527f5b6b431d4476a211bb7d41c20d1aab9ae2321deee0d20be3d9fc9b1093fa6e3d9060200160405180910390a15050565b6109ff611b60565b610a07611be1565b565b610a1161155d565b610a196115d0565b323314610a52576040517fee90c46800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81801580610a605750600581115b15610a97576040517f055adc6d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610aa4606486612181565b9050610aaf81611655565b6364592a90421015610aed576040517fedfcf79700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610af8848483611714565b610b0560016064876119dc565b7fcaf95cc263913365e029e8f1cb92cde360b51663d3b1c010f41af0b677b92f34336040805173ffffffffffffffffffffffffffffffffffffffff9092168252602082018890520160405180910390a15050610b6060018055565b505050565b610b6d61155d565b610b756115d0565b323314610bae576040517fee90c46800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b83801580610bbc5750606481115b15610bf3576040517fdd1986c000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82801580610c015750600581115b15610c38576040517f055adc6d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c4185611655565b600086815260066020908152604080832054835260038252918290208251606081018452815481526001820154928101929092526002015491810182905290421015610cb9576040517fedfcf79700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610cc4858588611714565b610cce8787611c5e565b7f3045b1f432304c865f29eee852982c94287cddc8f423568d1132c4980c066104336108d4565b610cfd611b60565b60098190556040518181527faa806d9f1b4285f6cd559d658b62ed4ae34f4c9cf48f17bbe30f9cba40849d799060200160405180910390a150565b610d40611b60565b610a076000611d0d565b610d5261155d565b610d5a6115d0565b323314610d93576040517fee90c46800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81801580610da15750600a81115b15610dd8576040517f4e3ac9b300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610deb610de6600a84612181565b611655565b600083815260036020908152604091829020825160608101845281548152600182015492810183905260029091015492810192909252421015610e5a576040517fedfcf79700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060400151421115610e98576040517f0cbb94e000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8051610ebb906001610eab600a836121ea565b610eb591906121fd565b856119dc565b7fe894305c9d95da2ac1eaa2380f6efa11efee9965df019410e948b2fd402e03fb335b6040805173ffffffffffffffffffffffffffffffffffffffff909216825260208201879052810185905260600160405180910390a15050610f1e60018055565b5050565b610f2a611b60565b610a07611d82565b610f3a611b60565b47600061092960005473ffffffffffffffffffffffffffffffffffffffff1690565b60046020528160005260406000208181548110610f7857600080fd5b90600052602060002001600091509150505481565b610f9561155d565b610f9d6115d0565b323314610fd6576040517fee90c46800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81801580610fe45750600581115b1561101b576040517f055adc6d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b846005600082600a81111561103257611032612123565b600a81111561104357611043612123565b81526020019081526020016000206000015460000361108e576040517fdd1986c000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6364592a904210156110cc576040517fedfcf79700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006005600088600a8111156110e4576110e4612123565b600a8111156110f5576110f5612123565b815260200190815260200160002060010154866111129190612181565b905061111f858583611714565b6111616005600089600a81111561113857611138612123565b600a81111561114957611149612123565b81526020019081526020016000206000015487611c5e565b7f5d1ba5121542e1f2219682beec96ee9657a9a0db1f06f2a7c7fd835e7e83a14733888860405161075593929190612210565b61119c611b60565b73ffffffffffffffffffffffffffffffffffffffff8116611244576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b61124d81611d0d565b50565b611258611b60565b60005b8381101561139a5760006004600087878581811061127b5761127b61224e565b9050602002016020810190611290919061227d565b60098111156112a1576112a1612123565b60098111156112b2576112b2612123565b815260208101919091526040016000205411156112fb576040517f4555b6f300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82828281811061130d5761130d61224e565b905060200281019061131f9190612298565b600460008888868181106113355761133561224e565b905060200201602081019061134a919061227d565b600981111561135b5761135b612123565b600981111561136c5761136c612123565b81526020019081526020016000209190611387929190611e75565b508061139281612300565b91505061125b565b507f9531395e7a88a9bfedd02178b255fca41fc1750523937545cbacc2496108ba7d848484846040516113d09493929190612383565b60405180910390a150505050565b6113e661155d565b6113ee6115d0565b323314611427576040517fee90c46800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b818015806114355750606481115b1561146c576040517fdd1986c000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61147582611655565b600083815260066020908152604080832054835260038252918290208251606081018452815481526001820154928101839052600290910154928101929092524210156114ee576040517fedfcf79700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806040015142111561152c576040517f0cbb94e000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6115368484611c5e565b7f3045b1f432304c865f29eee852982c94287cddc8f423568d1132c4980c06610433610ede565b6002600154036115c9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161123b565b6002600155565b60005474010000000000000000000000000000000000000000900460ff1615610a07576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015260640161123b565b8060000361168f576040517f2c5211c600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6009548111156116cb576040517f8ba1cb6700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6116dc81662bd72a24874000612181565b341461124d576040517f99b5cb1d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8160000361174e576040517f2075cc1000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008381526002602052604081205461176790836124d2565b905080156117a1576040517f1468299100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000848152600260205260408120546117ba90846124e6565b9050806000036117f6576040517f2075cc1000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b83811461182f576040517f1a1ccd6700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60075473ffffffffffffffffffffffffffffffffffffffff1663f5298aca336040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815273ffffffffffffffffffffffffffffffffffffffff90911660048201526024810188905260448101849052606401600060405180830381600087803b1580156118c257600080fd5b505af11580156118d6573d6000803e3d6000fd5b505050505050505050565b6000825167ffffffffffffffff8111156118fd576118fd6124fa565b604051908082528060200260200182016040528015611926578160200160208202803683370190505b50905060005b835181101561196557828282815181106119485761194861224e565b60209081029190910101528061195d81612300565b91505061192c565b5060085473ffffffffffffffffffffffffffffffffffffffff1663d81d0a153385846040518463ffffffff1660e01b81526004016119a593929190612564565b600060405180830381600087803b1580156119bf57600080fd5b505af11580156119d3573d6000803e3d6000fd5b50505050505050565b60006119e884846121fd565b6119f39060016121ea565b905060008167ffffffffffffffff811115611a1057611a106124fa565b604051908082528060200260200182016040528015611a39578160200160208202803683370190505b50905060008267ffffffffffffffff811115611a5757611a576124fa565b604051908082528060200260200182016040528015611a80578160200160208202803683370190505b50905060005b83811015611ae657611a9887826121ea565b838281518110611aaa57611aaa61224e565b60200260200101818152505084828281518110611ac957611ac961224e565b602090810291909101015280611ade81612300565b915050611a86565b5060085473ffffffffffffffffffffffffffffffffffffffff1663d81d0a153384846040518463ffffffff1660e01b8152600401611b2693929190612564565b600060405180830381600087803b158015611b4057600080fd5b505af1158015611b54573d6000803e3d6000fd5b50505050505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610a07576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161123b565b611be9611df1565b600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b60085473ffffffffffffffffffffffffffffffffffffffff1663156e29f6336040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815273ffffffffffffffffffffffffffffffffffffffff90911660048201526024810185905260448101849052606401600060405180830381600087803b158015611cf157600080fd5b505af1158015611d05573d6000803e3d6000fd5b505050505050565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b611d8a6115d0565b600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16740100000000000000000000000000000000000000001790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258611c343390565b60005474010000000000000000000000000000000000000000900460ff16610a07576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5061757361626c653a206e6f7420706175736564000000000000000000000000604482015260640161123b565b828054828255906000526020600020908101928215611eb0579160200282015b82811115611eb0578235825591602001919060010190611e95565b50611ebc929150611ec0565b5090565b5b80821115611ebc5760008155600101611ec1565b8035600a8110611ee457600080fd5b919050565b60008060008060808587031215611eff57600080fd5b611f0885611ed5565b966020860135965060408601359560600135945092505050565b60008060008060808587031215611f3857600080fd5b5050823594602084013594506040840135936060013592509050565b600060208284031215611f6657600080fd5b5035919050565b600080600060608486031215611f8257600080fd5b505081359360208301359350604090920135919050565b8035600b8110611ee457600080fd5b600060208284031215611fba57600080fd5b611fc382611f99565b9392505050565b60008060408385031215611fdd57600080fd5b50508035926020909101359150565b60008060408385031215611fff57600080fd5b61200883611ed5565b946020939093013593505050565b6000806000806080858703121561202c57600080fd5b611f0885611f99565b60006020828403121561204757600080fd5b813573ffffffffffffffffffffffffffffffffffffffff81168114611fc357600080fd5b60008083601f84011261207d57600080fd5b50813567ffffffffffffffff81111561209557600080fd5b6020830191508360208260051b85010111156120b057600080fd5b9250929050565b600080600080604085870312156120cd57600080fd5b843567ffffffffffffffff808211156120e557600080fd5b6120f18883890161206b565b9096509450602087013591508082111561210a57600080fd5b506121178782880161206b565b95989497509550505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808202811582820484141761219857612198612152565b92915050565b600a81106121ae576121ae612123565b9052565b73ffffffffffffffffffffffffffffffffffffffff84168152606081016121dc602083018561219e565b826040830152949350505050565b8082018082111561219857612198612152565b8181038181111561219857612198612152565b73ffffffffffffffffffffffffffffffffffffffff8416815260608101600b841061223d5761223d612123565b602082019390935260400152919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006020828403121561228f57600080fd5b611fc382611ed5565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126122cd57600080fd5b83018035915067ffffffffffffffff8211156122e857600080fd5b6020019150600581901b36038213156120b057600080fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361233157612331612152565b5060010190565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83111561236a57600080fd5b8260051b80836020870137939093016020019392505050565b6040808252810184905260008560608301825b878110156123c3576123b0826123ab85611ed5565b61219e565b6020928301929190910190600101612396565b50602091508381038285015280858252828201905060058387821b8401018860005b89811015612492577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe086840301855281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18c360301811261244657600080fd5b8b01878101903567ffffffffffffffff81111561246257600080fd5b80861b360382131561247357600080fd5b61247e858284612338565b9689019694505050908601906001016123e5565b50909b9a5050505050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000826124e1576124e16124a3565b500690565b6000826124f5576124f56124a3565b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600081518084526020808501945080840160005b838110156125595781518752958201959082019060010161253d565b509495945050505050565b73ffffffffffffffffffffffffffffffffffffffff841681526060602082015260006125936060830185612529565b82810360408401526125a58185612529565b969550505050505056fea2646970667358221220f7fc342b062d3c762952a186f35a7e3e9d3be45051280c8a6bcd180dcf0e90b764736f6c63430008120033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000004faab2f1851b58c26028ab7ba2873ff3c7b52d4c000000000000000000000000808e5cd160d8819ca24c2053037049eb611d0542
-----Decoded View---------------
Arg [0] : __pepeEditionsContractAddress (address): 0x4fAAB2f1851B58c26028ab7bA2873Ff3c7B52D4C
Arg [1] : __zogzEditionsContractAddress (address): 0x808E5Cd160d8819CA24C2053037049EB611D0542
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000004faab2f1851b58c26028ab7ba2873ff3c7b52d4c
Arg [1] : 000000000000000000000000808e5cd160d8819ca24c2053037049eb611d0542
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
ETH | Ether (ETH) | 100.00% | $3,388.3 | 5.1581 | $17,477.27 |
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.