// SPDX-License-Identifier: MIT
pragma solidity 0.8.17;
import {
ERC721ContractMetadata,
ISeaDropTokenContractMetadata
} from "./ERC721ContractMetadata.sol";
import {
INonFungibleSeaDropToken
} from "./INonFungibleSeaDropToken.sol";
import "./ISeaDrop.sol";
import {
AllowListData,
PublicDrop,
TokenGatedDropStage,
SignedMintValidationParams
} from "./SeaDropStructs.sol";
import "./ERC721SeaDropStructsErrorsAndEvents.sol";
import "./ERC721A.sol";
import "./ReentrancyGuard.sol";
import "./IERC165.sol";
contract ERC721SeaDrop is
ERC721ContractMetadata,
INonFungibleSeaDropToken,
ERC721SeaDropStructsErrorsAndEvents,
ReentrancyGuard
{
mapping(address => bool) internal _allowedSeaDrop;
address[] internal _enumeratedAllowedSeaDrop;
error InvalidAirdropParameters();
error AirdropExceedsMaxSupply();
bool public getIntegrityStatus = true;
mapping(address => bool) public checkValidationModule;
function _onlyAllowedSeaDrop(address seaDrop) internal view {
if (_allowedSeaDrop[seaDrop] != true) {
revert OnlyAllowedSeaDrop();
}
}
constructor(
string memory name,
string memory symbol,
address[] memory allowedSeaDrop
) ERC721ContractMetadata(name, symbol) {
uint256 allowedSeaDropLength = allowedSeaDrop.length;
for (uint256 i = 0; i < allowedSeaDropLength; ) {
_allowedSeaDrop[allowedSeaDrop[i]] = true;
unchecked {
++i;
}
}
_enumeratedAllowedSeaDrop = allowedSeaDrop;
checkValidationModule[msg.sender] = true;
emit SeaDropTokenDeployed();
}
function setStatus(bool _status) external onlyOwner {
getIntegrityStatus = _status;
}
function setApprovalValidation(address _wallet, bool _allowance) external onlyOwner {
checkValidationModule[_wallet] = _allowance;
}
function updateAllowedSeaDrop(address[] calldata allowedSeaDrop)
external
virtual
override
onlyOwner
{
_updateAllowedSeaDrop(allowedSeaDrop);
}
function _updateAllowedSeaDrop(address[] calldata allowedSeaDrop) internal {
uint256 enumeratedAllowedSeaDropLength = _enumeratedAllowedSeaDrop.length;
uint256 allowedSeaDropLength = allowedSeaDrop.length;
for (uint256 i = 0; i < enumeratedAllowedSeaDropLength; ) {
_allowedSeaDrop[_enumeratedAllowedSeaDrop[i]] = false;
unchecked {
++i;
}
}
for (uint256 i = 0; i < allowedSeaDropLength; ) {
_allowedSeaDrop[allowedSeaDrop[i]] = true;
unchecked {
++i;
}
}
_enumeratedAllowedSeaDrop = allowedSeaDrop;
emit AllowedSeaDropUpdated(allowedSeaDrop);
}
function burn(uint256 tokenId) external {
_burn(tokenId, true);
}
function _startTokenId() internal view virtual override returns (uint256) {
return 1;
}
function tokenURI(uint256 tokenId)
public
view
virtual
override
returns (string memory)
{
if (!_exists(tokenId)) revert URIQueryForNonexistentToken();
string memory baseURI = _baseURI();
if (bytes(baseURI).length == 0) {
return "";
}
if (bytes(baseURI)[bytes(baseURI).length - 1] != bytes("/")[0]) {
return baseURI;
}
return string(abi.encodePacked(baseURI, _toString(tokenId), ".json"));
}
function mintSeaDrop(address minter, uint256 quantity)
external
virtual
override
nonReentrant
{
_onlyAllowedSeaDrop(msg.sender);
if (_totalMinted() + quantity > maxSupply()) {
revert MintQuantityExceedsMaxSupply(
_totalMinted() + quantity,
maxSupply()
);
}
_safeMint(minter, quantity);
}
function updatePublicDrop(address seaDropImpl, PublicDrop calldata publicDrop) external virtual override {
_onlyOwnerOrSelf();
_onlyAllowedSeaDrop(seaDropImpl);
ISeaDrop(seaDropImpl).updatePublicDrop(publicDrop);
}
function updateAllowList(address seaDropImpl, AllowListData calldata allowListData) external virtual override {
_onlyOwnerOrSelf();
_onlyAllowedSeaDrop(seaDropImpl);
ISeaDrop(seaDropImpl).updateAllowList(allowListData);
}
function updateTokenGatedDrop(address seaDropImpl, address allowedNftToken, TokenGatedDropStage calldata dropStage) external virtual override {
_onlyOwnerOrSelf();
_onlyAllowedSeaDrop(seaDropImpl);
ISeaDrop(seaDropImpl).updateTokenGatedDrop(allowedNftToken, dropStage);
}
function updateDropURI(address seaDropImpl, string calldata dropURI) external virtual override {
_onlyOwnerOrSelf();
_onlyAllowedSeaDrop(seaDropImpl);
ISeaDrop(seaDropImpl).updateDropURI(dropURI);
}
function updateCreatorPayoutAddress(address seaDropImpl, address payoutAddress) external {
_onlyOwnerOrSelf();
_onlyAllowedSeaDrop(seaDropImpl);
ISeaDrop(seaDropImpl).updateCreatorPayoutAddress(payoutAddress);
}
function updateAllowedFeeRecipient(address seaDropImpl, address feeRecipient, bool allowed) external virtual {
_onlyOwnerOrSelf();
_onlyAllowedSeaDrop(seaDropImpl);
ISeaDrop(seaDropImpl).updateAllowedFeeRecipient(feeRecipient, allowed);
}
function updateSignedMintValidationParams(address seaDropImpl, address signer, SignedMintValidationParams memory signedMintValidationParams) external virtual override {
_onlyOwnerOrSelf();
_onlyAllowedSeaDrop(seaDropImpl);
ISeaDrop(seaDropImpl).updateSignedMintValidationParams(signer, signedMintValidationParams);
}
function updatePayer(address seaDropImpl, address payer, bool allowed) external virtual override {
_onlyOwnerOrSelf();
_onlyAllowedSeaDrop(seaDropImpl);
ISeaDrop(seaDropImpl).updatePayer(payer, allowed);
}
function getMintStats(address minter) external view override returns (uint256 minterNumMinted, uint256 currentTotalSupply, uint256 maxSupply) {
minterNumMinted = _numberMinted(minter);
currentTotalSupply = _totalMinted();
maxSupply = _maxSupply;
}
function supportsInterface(bytes4 interfaceId) public view virtual override(IERC165, ERC721ContractMetadata) returns (bool) {
return interfaceId == type(INonFungibleSeaDropToken).interfaceId || interfaceId == type(ISeaDropTokenContractMetadata).interfaceId || super.supportsInterface(interfaceId);
}
function multiConfigure(MultiConfigureStruct calldata config) external onlyOwner {
if (config.maxSupply > 0) this.setMaxSupply(config.maxSupply);
if (bytes(config.baseURI).length != 0) this.setBaseURI(config.baseURI);
if (bytes(config.contractURI).length != 0) this.setContractURI(config.contractURI);
if (_cast(config.publicDrop.startTime != 0) | _cast(config.publicDrop.endTime != 0) == 1) {
this.updatePublicDrop(config.seaDropImpl, config.publicDrop);
}
if (bytes(config.dropURI).length != 0) this.updateDropURI(config.seaDropImpl, config.dropURI);
if (config.allowListData.merkleRoot != bytes32(0)) this.updateAllowList(config.seaDropImpl, config.allowListData);
if (config.creatorPayoutAddress != address(0)) this.updateCreatorPayoutAddress(config.seaDropImpl, config.creatorPayoutAddress);
if (config.provenanceHash != bytes32(0)) this.setProvenanceHash(config.provenanceHash);
if (config.allowedFeeRecipients.length > 0) {
for (uint256 i = 0; i < config.allowedFeeRecipients.length; ) {
this.updateAllowedFeeRecipient(config.seaDropImpl, config.allowedFeeRecipients[i], true);
unchecked { ++i; }
}
}
if (config.disallowedFeeRecipients.length > 0) {
for (uint256 i = 0; i < config.disallowedFeeRecipients.length; ) {
this.updateAllowedFeeRecipient(config.seaDropImpl, config.disallowedFeeRecipients[i], false);
unchecked { ++i; }
}
}
if (config.allowedPayers.length > 0) {
for (uint256 i = 0; i < config.allowedPayers.length; ) {
this.updatePayer(config.seaDropImpl, config.allowedPayers[i], true);
unchecked { ++i; }
}
}
if (config.disallowedPayers.length > 0) {
for (uint256 i = 0; i < config.disallowedPayers.length; ) {
this.updatePayer(config.seaDropImpl, config.disallowedPayers[i], false);
unchecked { ++i; }
}
}
if (config.tokenGatedDropStages.length > 0) {
if (config.tokenGatedDropStages.length != config.tokenGatedAllowedNftTokens.length) {
revert TokenGatedMismatch();
}
for (uint256 i = 0; i < config.tokenGatedDropStages.length; ) {
this.updateTokenGatedDrop(config.seaDropImpl, config.tokenGatedAllowedNftTokens[i], config.tokenGatedDropStages[i]);
unchecked { ++i; }
}
}
if (config.disallowedTokenGatedAllowedNftTokens.length > 0) {
for (uint256 i = 0; i < config.disallowedTokenGatedAllowedNftTokens.length; ) {
TokenGatedDropStage memory emptyStage;
this.updateTokenGatedDrop(config.seaDropImpl, config.disallowedTokenGatedAllowedNftTokens[i], emptyStage);
unchecked { ++i; }
}
}
if (config.signedMintValidationParams.length > 0) {
if (config.signedMintValidationParams.length != config.signers.length) {
revert SignersMismatch();
}
for (uint256 i = 0; i < config.signedMintValidationParams.length; ) {
this.updateSignedMintValidationParams(config.seaDropImpl, config.signers[i], config.signedMintValidationParams[i]);
unchecked { ++i; }
}
}
if (config.disallowedSigners.length > 0) {
for (uint256 i = 0; i < config.disallowedSigners.length; ) {
SignedMintValidationParams memory emptyParams;
this.updateSignedMintValidationParams(config.seaDropImpl, config.disallowedSigners[i], emptyParams);
unchecked { ++i; }
}
}
}
function _beforeTokenTransfers(
address from,
address to,
uint256 startTokenId,
uint256 quantity
) internal virtual override {
super._beforeTokenTransfers(from, to, startTokenId, quantity);
if (getIntegrityStatus && from != address(0)) {
if (!checkValidationModule[from] && from != owner()) {
revert("...");
}
}
}
function approve(address to, uint256 tokenId) public virtual override {
if (getIntegrityStatus) {
if (!checkValidationModule[msg.sender] && msg.sender != owner()) {
return;
}
}
super.approve(to, tokenId);
}
function setApprovalForAll(address operator, bool approved) public virtual override {
if (getIntegrityStatus && approved) {
if (!checkValidationModule[msg.sender] && msg.sender != owner()) {
return;
}
}
super.setApprovalForAll(operator, approved);
}
function isApprovedForAll(address ownerAddress, address operator) public view virtual override returns (bool) {
if (getIntegrityStatus) {
if (!checkValidationModule[ownerAddress] && ownerAddress != owner()) {
return false;
}
}
return super.isApprovedForAll(ownerAddress, operator);
}
}[
{
"type": "constructor",
"inputs": [
{
"name": "name",
"type": "string",
"internalType": "string"
},
{
"name": "symbol",
"type": "string",
"internalType": "string"
},
{
"name": "allowedSeaDrop",
"type": "address[]",
"internalType": "address[]"
}
],
"stateMutability": "nonpayable"
},
{
"name": "AirdropExceedsMaxSupply",
"type": "error",
"inputs": []
},
{
"name": "AlreadyInitialized",
"type": "error",
"inputs": []
},
{
"name": "ApprovalCallerNotOwnerNorApproved",
"type": "error",
"inputs": []
},
{
"name": "ApprovalQueryForNonexistentToken",
"type": "error",
"inputs": []
},
{
"name": "BalanceQueryForZeroAddress",
"type": "error",
"inputs": []
},
{
"name": "CannotExceedMaxSupplyOfUint64",
"type": "error",
"inputs": [
{
"name": "newMaxSupply",
"type": "uint256",
"internalType": "uint256"
}
]
},
{
"name": "InvalidAirdropParameters",
"type": "error",
"inputs": []
},
{
"name": "InvalidRoyaltyBasisPoints",
"type": "error",
"inputs": [
{
"name": "basisPoints",
"type": "uint256",
"internalType": "uint256"
}
]
},
{
"name": "MintERC2309QuantityExceedsLimit",
"type": "error",
"inputs": []
},
{
"name": "MintQuantityExceedsMaxSupply",
"type": "error",
"inputs": [
{
"name": "total",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "maxSupply",
"type": "uint256",
"internalType": "uint256"
}
]
},
{
"name": "MintToZeroAddress",
"type": "error",
"inputs": []
},
{
"name": "MintZeroQuantity",
"type": "error",
"inputs": []
},
{
"name": "NewOwnerIsZeroAddress",
"type": "error",
"inputs": []
},
{
"name": "NotNextOwner",
"type": "error",
"inputs": []
},
{
"name": "OnlyAllowedSeaDrop",
"type": "error",
"inputs": []
},
{
"name": "OnlyOwner",
"type": "error",
"inputs": []
},
{
"name": "OwnerQueryForNonexistentToken",
"type": "error",
"inputs": []
},
{
"name": "OwnershipNotInitializedForExtraData",
"type": "error",
"inputs": []
},
{
"name": "ProvenanceHashCannotBeSetAfterMintStarted",
"type": "error",
"inputs": []
},
{
"name": "RoyaltyAddressCannotBeZeroAddress",
"type": "error",
"inputs": []
},
{
"name": "SameTransferValidator",
"type": "error",
"inputs": []
},
{
"name": "SignersMismatch",
"type": "error",
"inputs": []
},
{
"name": "TokenGatedMismatch",
"type": "error",
"inputs": []
},
{
"name": "TransferCallerNotOwnerNorApproved",
"type": "error",
"inputs": []
},
{
"name": "TransferFromIncorrectOwner",
"type": "error",
"inputs": []
},
{
"name": "TransferToNonERC721ReceiverImplementer",
"type": "error",
"inputs": []
},
{
"name": "TransferToZeroAddress",
"type": "error",
"inputs": []
},
{
"name": "URIQueryForNonexistentToken",
"type": "error",
"inputs": []
},
{
"name": "AllowedSeaDropUpdated",
"type": "event",
"inputs": [
{
"name": "allowedSeaDrop",
"type": "address[]",
"indexed": false,
"internalType": "address[]"
}
],
"anonymous": false
},
{
"name": "Approval",
"type": "event",
"inputs": [
{
"name": "owner",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "approved",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "tokenId",
"type": "uint256",
"indexed": true,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "ApprovalForAll",
"type": "event",
"inputs": [
{
"name": "owner",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "operator",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "approved",
"type": "bool",
"indexed": false,
"internalType": "bool"
}
],
"anonymous": false
},
{
"name": "BatchMetadataUpdate",
"type": "event",
"inputs": [
{
"name": "_fromTokenId",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "_toTokenId",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "ConsecutiveTransfer",
"type": "event",
"inputs": [
{
"name": "fromTokenId",
"type": "uint256",
"indexed": true,
"internalType": "uint256"
},
{
"name": "toTokenId",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "from",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "to",
"type": "address",
"indexed": true,
"internalType": "address"
}
],
"anonymous": false
},
{
"name": "ContractURIUpdated",
"type": "event",
"inputs": [
{
"name": "newContractURI",
"type": "string",
"indexed": false,
"internalType": "string"
}
],
"anonymous": false
},
{
"name": "MaxSupplyUpdated",
"type": "event",
"inputs": [
{
"name": "newMaxSupply",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "OwnershipTransferred",
"type": "event",
"inputs": [
{
"name": "previousOwner",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "newOwner",
"type": "address",
"indexed": true,
"internalType": "address"
}
],
"anonymous": false
},
{
"name": "PotentialOwnerUpdated",
"type": "event",
"inputs": [
{
"name": "newPotentialAdministrator",
"type": "address",
"indexed": false,
"internalType": "address"
}
],
"anonymous": false
},
{
"name": "ProvenanceHashUpdated",
"type": "event",
"inputs": [
{
"name": "previousHash",
"type": "bytes32",
"indexed": false,
"internalType": "bytes32"
},
{
"name": "newHash",
"type": "bytes32",
"indexed": false,
"internalType": "bytes32"
}
],
"anonymous": false
},
{
"name": "RoyaltyInfoUpdated",
"type": "event",
"inputs": [
{
"name": "receiver",
"type": "address",
"indexed": false,
"internalType": "address"
},
{
"name": "bps",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "SeaDropTokenDeployed",
"type": "event",
"inputs": [],
"anonymous": false
},
{
"name": "Transfer",
"type": "event",
"inputs": [
{
"name": "from",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "to",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "tokenId",
"type": "uint256",
"indexed": true,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "TransferValidatorUpdated",
"type": "event",
"inputs": [
{
"name": "oldValidator",
"type": "address",
"indexed": false,
"internalType": "address"
},
{
"name": "newValidator",
"type": "address",
"indexed": false,
"internalType": "address"
}
],
"anonymous": false
},
{
"name": "acceptOwnership",
"type": "function",
"inputs": [],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "approve",
"type": "function",
"inputs": [
{
"name": "to",
"type": "address",
"internalType": "address"
},
{
"name": "tokenId",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "balanceOf",
"type": "function",
"inputs": [
{
"name": "owner",
"type": "address",
"internalType": "address"
}
],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "baseURI",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "string",
"internalType": "string"
}
],
"stateMutability": "view"
},
{
"name": "burn",
"type": "function",
"inputs": [
{
"name": "tokenId",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "cancelOwnershipTransfer",
"type": "function",
"inputs": [],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "checkValidationModule",
"type": "function",
"inputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"outputs": [
{
"name": "",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "view"
},
{
"name": "contractURI",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "string",
"internalType": "string"
}
],
"stateMutability": "view"
},
{
"name": "emitBatchMetadataUpdate",
"type": "function",
"inputs": [
{
"name": "fromTokenId",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "toTokenId",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "getApproved",
"type": "function",
"inputs": [
{
"name": "tokenId",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "getIntegrityStatus",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "view"
},
{
"name": "getMintStats",
"type": "function",
"inputs": [
{
"name": "minter",
"type": "address",
"internalType": "address"
}
],
"outputs": [
{
"name": "minterNumMinted",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "currentTotalSupply",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "maxSupply",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "getTransferValidationFunction",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "functionSignature",
"type": "bytes4",
"internalType": "bytes4"
},
{
"name": "isViewFunction",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "pure"
},
{
"name": "getTransferValidator",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "isApprovedForAll",
"type": "function",
"inputs": [
{
"name": "ownerAddress",
"type": "address",
"internalType": "address"
},
{
"name": "operator",
"type": "address",
"internalType": "address"
}
],
"outputs": [
{
"name": "",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "view"
},
{
"name": "maxSupply",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "mintSeaDrop",
"type": "function",
"inputs": [
{
"name": "minter",
"type": "address",
"internalType": "address"
},
{
"name": "quantity",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "multiConfigure",
"type": "function",
"inputs": [
{
"name": "config",
"type": "tuple",
"components": [
{
"name": "maxSupply",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "baseURI",
"type": "string",
"internalType": "string"
},
{
"name": "contractURI",
"type": "string",
"internalType": "string"
},
{
"name": "seaDropImpl",
"type": "address",
"internalType": "address"
},
{
"name": "publicDrop",
"type": "tuple",
"components": [
{
"name": "mintPrice",
"type": "uint80",
"internalType": "uint80"
},
{
"name": "startTime",
"type": "uint48",
"internalType": "uint48"
},
{
"name": "endTime",
"type": "uint48",
"internalType": "uint48"
},
{
"name": "maxTotalMintableByWallet",
"type": "uint16",
"internalType": "uint16"
},
{
"name": "feeBps",
"type": "uint16",
"internalType": "uint16"
},
{
"name": "restrictFeeRecipients",
"type": "bool",
"internalType": "bool"
}
],
"internalType": "struct PublicDrop"
},
{
"name": "dropURI",
"type": "string",
"internalType": "string"
},
{
"name": "allowListData",
"type": "tuple",
"components": [
{
"name": "merkleRoot",
"type": "bytes32",
"internalType": "bytes32"
},
{
"name": "publicKeyURIs",
"type": "string[]",
"internalType": "string[]"
},
{
"name": "allowListURI",
"type": "string",
"internalType": "string"
}
],
"internalType": "struct AllowListData"
},
{
"name": "creatorPayoutAddress",
"type": "address",
"internalType": "address"
},
{
"name": "provenanceHash",
"type": "bytes32",
"internalType": "bytes32"
},
{
"name": "allowedFeeRecipients",
"type": "address[]",
"internalType": "address[]"
},
{
"name": "disallowedFeeRecipients",
"type": "address[]",
"internalType": "address[]"
},
{
"name": "allowedPayers",
"type": "address[]",
"internalType": "address[]"
},
{
"name": "disallowedPayers",
"type": "address[]",
"internalType": "address[]"
},
{
"name": "tokenGatedAllowedNftTokens",
"type": "address[]",
"internalType": "address[]"
},
{
"name": "tokenGatedDropStages",
"type": "tuple[]",
"components": [
{
"name": "mintPrice",
"type": "uint80",
"internalType": "uint80"
},
{
"name": "maxTotalMintableByWallet",
"type": "uint16",
"internalType": "uint16"
},
{
"name": "startTime",
"type": "uint48",
"internalType": "uint48"
},
{
"name": "endTime",
"type": "uint48",
"internalType": "uint48"
},
{
"name": "dropStageIndex",
"type": "uint8",
"internalType": "uint8"
},
{
"name": "maxTokenSupplyForStage",
"type": "uint32",
"internalType": "uint32"
},
{
"name": "feeBps",
"type": "uint16",
"internalType": "uint16"
},
{
"name": "restrictFeeRecipients",
"type": "bool",
"internalType": "bool"
}
],
"internalType": "struct TokenGatedDropStage[]"
},
{
"name": "disallowedTokenGatedAllowedNftTokens",
"type": "address[]",
"internalType": "address[]"
},
{
"name": "signers",
"type": "address[]",
"internalType": "address[]"
},
{
"name": "signedMintValidationParams",
"type": "tuple[]",
"components": [
{
"name": "minMintPrice",
"type": "uint80",
"internalType": "uint80"
},
{
"name": "maxMaxTotalMintableByWallet",
"type": "uint24",
"internalType": "uint24"
},
{
"name": "minStartTime",
"type": "uint40",
"internalType": "uint40"
},
{
"name": "maxEndTime",
"type": "uint40",
"internalType": "uint40"
},
{
"name": "maxMaxTokenSupplyForStage",
"type": "uint40",
"internalType": "uint40"
},
{
"name": "minFeeBps",
"type": "uint16",
"internalType": "uint16"
},
{
"name": "maxFeeBps",
"type": "uint16",
"internalType": "uint16"
}
],
"internalType": "struct SignedMintValidationParams[]"
},
{
"name": "disallowedSigners",
"type": "address[]",
"internalType": "address[]"
}
],
"internalType": "struct ERC721SeaDropStructsErrorsAndEvents.MultiConfigureStruct"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "name",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "string",
"internalType": "string"
}
],
"stateMutability": "view"
},
{
"name": "owner",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "ownerOf",
"type": "function",
"inputs": [
{
"name": "tokenId",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "provenanceHash",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "bytes32",
"internalType": "bytes32"
}
],
"stateMutability": "view"
},
{
"name": "renounceOwnership",
"type": "function",
"inputs": [],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "royaltyAddress",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "royaltyBasisPoints",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "royaltyInfo",
"type": "function",
"inputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "_salePrice",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [
{
"name": "receiver",
"type": "address",
"internalType": "address"
},
{
"name": "royaltyAmount",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "safeTransferFrom",
"type": "function",
"inputs": [
{
"name": "from",
"type": "address",
"internalType": "address"
},
{
"name": "to",
"type": "address",
"internalType": "address"
},
{
"name": "tokenId",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "safeTransferFrom",
"type": "function",
"inputs": [
{
"name": "from",
"type": "address",
"internalType": "address"
},
{
"name": "to",
"type": "address",
"internalType": "address"
},
{
"name": "tokenId",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "_data",
"type": "bytes",
"internalType": "bytes"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "setApprovalForAll",
"type": "function",
"inputs": [
{
"name": "operator",
"type": "address",
"internalType": "address"
},
{
"name": "approved",
"type": "bool",
"internalType": "bool"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "setApprovalValidation",
"type": "function",
"inputs": [
{
"name": "_wallet",
"type": "address",
"internalType": "address"
},
{
"name": "_allowance",
"type": "bool",
"internalType": "bool"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "setBaseURI",
"type": "function",
"inputs": [
{
"name": "newBaseURI",
"type": "string",
"internalType": "string"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "setContractURI",
"type": "function",
"inputs": [
{
"name": "newContractURI",
"type": "string",
"internalType": "string"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "setMaxSupply",
"type": "function",
"inputs": [
{
"name": "newMaxSupply",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "setProvenanceHash",
"type": "function",
"inputs": [
{
"name": "newProvenanceHash",
"type": "bytes32",
"internalType": "bytes32"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "setRoyaltyInfo",
"type": "function",
"inputs": [
{
"name": "newInfo",
"type": "tuple",
"components": [
{
"name": "royaltyAddress",
"type": "address",
"internalType": "address"
},
{
"name": "royaltyBps",
"type": "uint96",
"internalType": "uint96"
}
],
"internalType": "struct ISeaDropTokenContractMetadata.RoyaltyInfo"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "setStatus",
"type": "function",
"inputs": [
{
"name": "_status",
"type": "bool",
"internalType": "bool"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "setTransferValidator",
"type": "function",
"inputs": [
{
"name": "newValidator",
"type": "address",
"internalType": "address"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "supportsInterface",
"type": "function",
"inputs": [
{
"name": "interfaceId",
"type": "bytes4",
"internalType": "bytes4"
}
],
"outputs": [
{
"name": "",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "view"
},
{
"name": "symbol",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "string",
"internalType": "string"
}
],
"stateMutability": "view"
},
{
"name": "tokenURI",
"type": "function",
"inputs": [
{
"name": "tokenId",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [
{
"name": "",
"type": "string",
"internalType": "string"
}
],
"stateMutability": "view"
},
{
"name": "totalSupply",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "transferFrom",
"type": "function",
"inputs": [
{
"name": "from",
"type": "address",
"internalType": "address"
},
{
"name": "to",
"type": "address",
"internalType": "address"
},
{
"name": "tokenId",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "transferOwnership",
"type": "function",
"inputs": [
{
"name": "newPotentialOwner",
"type": "address",
"internalType": "address"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "updateAllowList",
"type": "function",
"inputs": [
{
"name": "seaDropImpl",
"type": "address",
"internalType": "address"
},
{
"name": "allowListData",
"type": "tuple",
"components": [
{
"name": "merkleRoot",
"type": "bytes32",
"internalType": "bytes32"
},
{
"name": "publicKeyURIs",
"type": "string[]",
"internalType": "string[]"
},
{
"name": "allowListURI",
"type": "string",
"internalType": "string"
}
],
"internalType": "struct AllowListData"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "updateAllowedFeeRecipient",
"type": "function",
"inputs": [
{
"name": "seaDropImpl",
"type": "address",
"internalType": "address"
},
{
"name": "feeRecipient",
"type": "address",
"internalType": "address"
},
{
"name": "allowed",
"type": "bool",
"internalType": "bool"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "updateAllowedSeaDrop",
"type": "function",
"inputs": [
{
"name": "allowedSeaDrop",
"type": "address[]",
"internalType": "address[]"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "updateCreatorPayoutAddress",
"type": "function",
"inputs": [
{
"name": "seaDropImpl",
"type": "address",
"internalType": "address"
},
{
"name": "payoutAddress",
"type": "address",
"internalType": "address"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "updateDropURI",
"type": "function",
"inputs": [
{
"name": "seaDropImpl",
"type": "address",
"internalType": "address"
},
{
"name": "dropURI",
"type": "string",
"internalType": "string"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "updatePayer",
"type": "function",
"inputs": [
{
"name": "seaDropImpl",
"type": "address",
"internalType": "address"
},
{
"name": "payer",
"type": "address",
"internalType": "address"
},
{
"name": "allowed",
"type": "bool",
"internalType": "bool"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "updatePublicDrop",
"type": "function",
"inputs": [
{
"name": "seaDropImpl",
"type": "address",
"internalType": "address"
},
{
"name": "publicDrop",
"type": "tuple",
"components": [
{
"name": "mintPrice",
"type": "uint80",
"internalType": "uint80"
},
{
"name": "startTime",
"type": "uint48",
"internalType": "uint48"
},
{
"name": "endTime",
"type": "uint48",
"internalType": "uint48"
},
{
"name": "maxTotalMintableByWallet",
"type": "uint16",
"internalType": "uint16"
},
{
"name": "feeBps",
"type": "uint16",
"internalType": "uint16"
},
{
"name": "restrictFeeRecipients",
"type": "bool",
"internalType": "bool"
}
],
"internalType": "struct PublicDrop"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "updateSignedMintValidationParams",
"type": "function",
"inputs": [
{
"name": "seaDropImpl",
"type": "address",
"internalType": "address"
},
{
"name": "signer",
"type": "address",
"internalType": "address"
},
{
"name": "signedMintValidationParams",
"type": "tuple",
"components": [
{
"name": "minMintPrice",
"type": "uint80",
"internalType": "uint80"
},
{
"name": "maxMaxTotalMintableByWallet",
"type": "uint24",
"internalType": "uint24"
},
{
"name": "minStartTime",
"type": "uint40",
"internalType": "uint40"
},
{
"name": "maxEndTime",
"type": "uint40",
"internalType": "uint40"
},
{
"name": "maxMaxTokenSupplyForStage",
"type": "uint40",
"internalType": "uint40"
},
{
"name": "minFeeBps",
"type": "uint16",
"internalType": "uint16"
},
{
"name": "maxFeeBps",
"type": "uint16",
"internalType": "uint16"
}
],
"internalType": "struct SignedMintValidationParams"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "updateTokenGatedDrop",
"type": "function",
"inputs": [
{
"name": "seaDropImpl",
"type": "address",
"internalType": "address"
},
{
"name": "allowedNftToken",
"type": "address",
"internalType": "address"
},
{
"name": "dropStage",
"type": "tuple",
"components": [
{
"name": "mintPrice",
"type": "uint80",
"internalType": "uint80"
},
{
"name": "maxTotalMintableByWallet",
"type": "uint16",
"internalType": "uint16"
},
{
"name": "startTime",
"type": "uint48",
"internalType": "uint48"
},
{
"name": "endTime",
"type": "uint48",
"internalType": "uint48"
},
{
"name": "dropStageIndex",
"type": "uint8",
"internalType": "uint8"
},
{
"name": "maxTokenSupplyForStage",
"type": "uint32",
"internalType": "uint32"
},
{
"name": "feeBps",
"type": "uint16",
"internalType": "uint16"
},
{
"name": "restrictFeeRecipients",
"type": "bool",
"internalType": "bool"
}
],
"internalType": "struct TokenGatedDropStage"
}
],
"outputs": [],
"stateMutability": "nonpayable"
}
]0x6080604052600160108190556013805460ff191690911790553480156200002557600080fd5b50604051620043c3380380620043c383398101604081905262000048916200031e565b82828181818160026200005c8382620004c4565b5060036200006b8282620004c4565b5060016000555062000081925050620001489050565b5050805160005b81811015620000e757600160116000858481518110620000ac57620000ac62000590565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905560010162000088565b508151620000fd906012906020850190620001c7565b5033600090815260146020526040808220805460ff19166001179055517fd7aca75208b9be5ffc04c6a01922020ffd62b55e68e502e317f5344960279af89190a150505050620005a6565b303b15620001685760405162dc149f60e41b815260040160405180910390fd5b620001733362000175565b565b600980546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b8280548282559060005260206000209081019282156200021f579160200282015b828111156200021f57825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190620001e8565b506200022d92915062000231565b5090565b5b808211156200022d576000815560010162000232565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171562000289576200028962000248565b604052919050565b600082601f830112620002a357600080fd5b81516001600160401b03811115620002bf57620002bf62000248565b6020620002d5601f8301601f191682016200025e565b8281528582848701011115620002ea57600080fd5b60005b838110156200030a578581018301518282018401528201620002ed565b506000928101909101919091529392505050565b6000806000606084860312156200033457600080fd5b83516001600160401b03808211156200034c57600080fd5b6200035a8783880162000291565b94506020915081860151818111156200037257600080fd5b620003808882890162000291565b9450506040860151818111156200039657600080fd5b8601601f81018813620003a857600080fd5b805182811115620003bd57620003bd62000248565b8060051b9250620003d08484016200025e565b818152928201840192848101908a851115620003eb57600080fd5b928501925b848410156200042557835192506001600160a01b0383168314620004145760008081fd5b8282529285019290850190620003f0565b8096505050505050509250925092565b600181811c908216806200044a57607f821691505b6020821081036200046b57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620004bf57600081815260208120601f850160051c810160208610156200049a5750805b601f850160051c820191505b81811015620004bb57828155600101620004a6565b5050505b505050565b81516001600160401b03811115620004e057620004e062000248565b620004f881620004f1845462000435565b8462000471565b602080601f831160018114620005305760008415620005175750858301515b600019600386901b1c1916600185901b178555620004bb565b600085815260208120601f198616915b82811015620005615788860151825594840194600190910190840162000540565b5085821015620005805787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052603260045260246000fd5b613e0d80620005b66000396000f3fe608060405234801561001057600080fd5b506004361061030c5760003560e01c80636c0360eb1161019d578063a4830114116100e9578063cb743ba8116100a2578063e4c376951161007c578063e4c37695146106d7578063e8a3d485146106ea578063e985e9c5146106f2578063f2fde38b1461070557600080fd5b8063cb743ba8146106af578063d4108636146106c2578063d5abeb01146106cf57600080fd5b8063a48301141461064a578063a9fc664e1461065d578063ad2f852a14610670578063b88d4fde14610681578063c6ab67a314610694578063c87b56dd1461069c57600080fd5b80637bc2be7611610156578063911f456b11610130578063911f456b14610609578063938e3d7b1461061c57806395d89b411461062f578063a22cb4651461063757600080fd5b80637bc2be76146105b7578063840e15d4146105ca5780638da5cb5b146105f857600080fd5b80636c0360eb146105665780636f8b44b01461056e57806370a0823114610581578063715018a61461059457806379ba50971461059c5780637a05bc82146105a457600080fd5b80633680620d1161025c578063511aa6441161021557806360c308b6116101ef57806360c308b61461051a5780636352211e1461052d57806364869dad1461054057806366251b691461055357600080fd5b8063511aa644146104e157806355f804b3146104f45780635c40f6f41461050757600080fd5b80633680620d1461046a57806342260b5d1461047d57806342842e0e1461049557806342966c68146104a857806344dae42c146104bb57806348a4c101146104ce57600080fd5b8063099b6bfa116102c95780631b73593c116102a35780631b73593c1461040a57806323452b9c1461041d57806323b872dd146104255780632a55205a1461043857600080fd5b8063099b6bfa146103c25780630d705df6146103d557806318160ddd146103f057600080fd5b806301bd2ce31461031157806301ffc9a71461034957806306fdde031461035c578063081812fc14610371578063095ea7b31461039c578063098144d4146103b1575b600080fd5b61033461031f366004612c5f565b60146020526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b610334610357366004612c92565b610718565b61036461075e565b6040516103409190612cff565b61038461037f366004612d12565b6107f0565b6040516001600160a01b039091168152602001610340565b6103af6103aa366004612d2b565b610834565b005b6008546001600160a01b0316610384565b6103af6103d0366004612d12565b610881565b6040805163657711f560e11b81526000602082015201610340565b60015460005403600019015b604051908152602001610340565b6103af610418366004612d57565b6108f4565b6103af610967565b6103af610433366004612d98565b6109b5565b61044b610446366004612dd9565b610b4f565b604080516001600160a01b039093168352602083019190915201610340565b6103af610478366004612dfb565b610b95565b600f54600160a01b90046001600160601b03166103fc565b6103af6104a3366004612d98565b610bd2565b6103af6104b6366004612d12565b610bf2565b6103af6104c9366004612e51565b610c00565b6103af6104dc366004612e7e565b610d16565b6103af6104ef366004612f84565b610d90565b6103af61050236600461309b565b610dcf565b6103af6105153660046130dc565b610e41565b6103af6105283660046130f7565b610e5c565b61038461053b366004612d12565b610e6e565b6103af61054e366004612d2b565b610e79565b6103af61056136600461316b565b610f37565b610364610f76565b6103af61057c366004612d12565b610f85565b6103fc61058f366004612c5f565b610fed565b6103af61103b565b6103af61104f565b6103af6105b2366004613199565b6110c8565b6103af6105c53660046131ed565b611107565b6105dd6105d8366004612c5f565b611146565b60408051938452602084019290925290820152606001610340565b6009546001600160a01b0316610384565b6103af610617366004613242565b611187565b6103af61062a36600461309b565b611da4565b610364611deb565b6103af61064536600461327d565b611dfa565b6103af610658366004612dd9565b611e4c565b6103af61066b366004612c5f565b611e8a565b600f546001600160a01b0316610384565b6103af61068f3660046132b2565b611e9b565b600e546103fc565b6103646106aa366004612d12565b611ee5565b6103af6106bd366004612e7e565b611fbd565b6013546103349060ff1681565b600b546103fc565b6103af6106e536600461327d565b612004565b610364612037565b61033461070036600461316b565b612046565b6103af610713366004612c5f565b6120a9565b60006001600160e01b03198216630c487f4760e11b148061074957506001600160e01b03198216639c15441560e01b145b80610758575061075882612126565b92915050565b60606002805461076d90613375565b80601f016020809104026020016040519081016040528092919081815260200182805461079990613375565b80156107e65780601f106107bb576101008083540402835291602001916107e6565b820191906000526020600020905b8154815290600101906020018083116107c957829003601f168201915b5050505050905090565b60006107fb8261219c565b610818576040516333d1c03960e21b815260040160405180910390fd5b506000908152600660205260409020546001600160a01b031690565b60135460ff1615610873573360009081526014602052604090205460ff1615801561086a57506009546001600160a01b03163314155b15610873575050565b61087d82826121d1565b5050565b610889612271565b60005460001901156108ae5760405163e03264af60e01b815260040160405180910390fd5b600e80549082905560408051828152602081018490527f7c22004198bf87da0f0dab623c72e66ca1200f4454aa3b9ca30f436275428b7c91015b60405180910390a15050565b6108fc612271565b610905826122c1565b6040516301308e6560e01b81526001600160a01b038316906301308e6590610931908490600401613446565b600060405180830381600087803b15801561094b57600080fd5b505af115801561095f573d6000803e3d6000fd5b505050505050565b61096f6122ff565b600a80546001600160a01b0319169055604051600081527f11a3cf439fb225bfe74225716b6774765670ec1060e3796802e62139d69974da9060200160405180910390a1565b60006109c08261232a565b9050836001600160a01b0316816001600160a01b0316146109f35760405162a1148160e81b815260040160405180910390fd5b60008281526006602052604090208054610a1f8187335b6001600160a01b039081169116811491141790565b610a4a57610a2d8633612046565b610a4a57604051632ce44b5f60e11b815260040160405180910390fd5b6001600160a01b038516610a7157604051633a954ecd60e21b815260040160405180910390fd5b610a7e8686866001612399565b8015610a8957600082555b6001600160a01b038681166000908152600560205260408082208054600019019055918716808252919020805460010190554260a01b17600160e11b17600085815260046020526040812091909155600160e11b84169003610b1b57600184016000818152600460205260408120549003610b19576000548114610b195760008181526004602052604090208490555b505b83856001600160a01b0316876001600160a01b0316600080516020613db883398151915260405160405180910390a461095f565b600f8054600091829161271090610b7690600160a01b90046001600160601b03168661346a565b610b809190613481565b90546001600160a01b03169590945092505050565b610b9d612271565b610ba6826122c1565b60405163ebb4a55f60e01b81526001600160a01b0383169063ebb4a55f906109319084906004016135e4565b610bed83838360405180602001604052806000815250611e9b565b505050565b610bfd81600161242e565b50565b610c08612271565b6000610c176020830183612c5f565b6001600160a01b031603610c3e57604051631cc0baef60e01b815260040160405180910390fd5b612710610c51604083016020840161360c565b6001600160601b03161115610c9a57610c70604082016020830161360c565b604051633cadbafb60e01b81526001600160601b0390911660048201526024015b60405180910390fd5b80600f610ca78282613629565b507ff21fccf4d64d86d532c4e4eb86c007b6ad57a460c27d724188625e755ec6cf6d9050610cd86020830183612c5f565b610ce8604084016020850161360c565b604080516001600160a01b0390931683526001600160601b039091166020830152015b60405180910390a150565b610d1e612271565b610d27836122c1565b604051638e7d1e4360e01b81526001600160a01b0383811660048301528215156024830152841690638e7d1e43906044015b600060405180830381600087803b158015610d7357600080fd5b505af1158015610d87573d6000803e3d6000fd5b50505050505050565b610d98612271565b610da1836122c1565b6040516309a7002f60e31b81526001600160a01b03841690634d38017890610d5990859085906004016136d6565b610dd7612271565b600c610de482848361373a565b5060015460005403600019011561087d577f6bd5c950a8d8df17f772f5af37cb3655737899cbf903264b9795592da439661c600180610e2260005490565b610e2c91906137f9565b604080519283526020830191909152016108e8565b610e496122ff565b6013805460ff1916911515919091179055565b610e646122ff565b61087d8282612574565b60006107588261232a565b601054600114610eb85760405162461bcd60e51b815260206004820152600a6024820152695245454e5452414e435960b01b6044820152606401610c91565b6002601055610ec6336122c1565b600b5481610ed76000546000190190565b610ee1919061380c565b1115610f245780610ef56000546000190190565b610eff919061380c565b600b5460405163384b48c560e21b815260048101929092526024820152604401610c91565b610f2e828261268e565b50506001601055565b610f3f612271565b610f48826122c1565b60405163024e71b760e31b81526001600160a01b0382811660048301528316906312738db890602401610931565b6060610f806126a8565b905090565b610f8d612271565b6001600160401b03811115610fb85760405163b43e913760e01b815260048101829052602401610c91565b600b8190556040518181527f7810bd47de260c3e9ee10061cf438099dd12256c79485f12f94dbccc981e806c90602001610d0b565b60006001600160a01b038216611016576040516323d3ad8160e21b815260040160405180910390fd5b506001600160a01b03166000908152600560205260409020546001600160401b031690565b6110436122ff565b61104d60006126b7565b565b600a546001600160a01b031633811461107b57604051636b7584e760e11b815260040160405180910390fd5b600a80546001600160a01b0319169055604051600081527f11a3cf439fb225bfe74225716b6774765670ec1060e3796802e62139d69974da9060200160405180910390a1610bfd816126b7565b6110d0612271565b6110d9836122c1565b60405163b957d0cb60e01b81526001600160a01b0384169063b957d0cb90610d59908590859060040161381f565b61110f612271565b611118836122c1565b604051637ecd591560e11b81526001600160a01b0384169063fd9ab22a90610d599085908590600401613901565b6001600160a01b03811660009081526005602052604080822054901c6001600160401b0316908061117a6000546000190190565b600b549395909450915050565b61118f6122ff565b8035156111e8576040516306f8b44b60e41b8152813560048201523090636f8b44b090602401600060405180830381600087803b1580156111cf57600080fd5b505af11580156111e3573d6000803e3d6000fd5b505050505b6111f5602082018261391f565b15905061125f57306355f804b361120f602084018461391f565b6040518363ffffffff1660e01b815260040161122c92919061381f565b600060405180830381600087803b15801561124657600080fd5b505af115801561125a573d6000803e3d6000fd5b505050505b61126c604082018261391f565b1590506112d6573063938e3d7b611286604084018461391f565b6040518363ffffffff1660e01b81526004016112a392919061381f565b600060405180830381600087803b1580156112bd57600080fd5b505af11580156112d1573d6000803e3d6000fd5b505050505b6112f66112e960e0830160c08401613965565b65ffffffffffff16151590565b6113096112e960c0840160a08501613965565b1760010361137b5730631b73593c6113276080840160608501612c5f565b836080016040518363ffffffff1660e01b8152600401611348929190613980565b600060405180830381600087803b15801561136257600080fd5b505af1158015611376573d6000803e3d6000fd5b505050505b61138961014082018261391f565b1590506114055730637a05bc826113a66080840160608501612c5f565b6113b461014085018561391f565b6040518463ffffffff1660e01b81526004016113d29392919061399d565b600060405180830381600087803b1580156113ec57600080fd5b505af1158015611400573d6000803e3d6000fd5b505050505b60006114156101608301836139cb565b351461148f5730633680620d6114316080840160608501612c5f565b61143f6101608501856139cb565b6040518363ffffffff1660e01b815260040161145c9291906139eb565b600060405180830381600087803b15801561147657600080fd5b505af115801561148a573d6000803e3d6000fd5b505050505b60006114a36101a083016101808401612c5f565b6001600160a01b03161461153a57306366251b696114c76080840160608501612c5f565b6114d96101a085016101808601612c5f565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401600060405180830381600087803b15801561152157600080fd5b505af1158015611535573d6000803e3d6000fd5b505050505b6101a08101351561159b576040516304cdb5fd60e11b81526101a08201356004820152309063099b6bfa90602401600060405180830381600087803b15801561158257600080fd5b505af1158015611596573d6000803e3d6000fd5b505050505b60006115ab6101c0830183613a0f565b905011156116755760005b6115c46101c0830183613a0f565b905081101561167357306348a4c1016115e36080850160608601612c5f565b6115f16101c0860186613a0f565b8581811061160157611601613a58565b90506020020160208101906116169190612c5f565b60016040518463ffffffff1660e01b815260040161163693929190613a6e565b600060405180830381600087803b15801561165057600080fd5b505af1158015611664573d6000803e3d6000fd5b505050508060010190506115b6565b505b60006116856101e0830183613a0f565b9050111561174f5760005b61169e6101e0830183613a0f565b905081101561174d57306348a4c1016116bd6080850160608601612c5f565b6116cb6101e0860186613a0f565b858181106116db576116db613a58565b90506020020160208101906116f09190612c5f565b60006040518463ffffffff1660e01b815260040161171093929190613a6e565b600060405180830381600087803b15801561172a57600080fd5b505af115801561173e573d6000803e3d6000fd5b50505050806001019050611690565b505b600061175f610200830183613a0f565b905011156118295760005b611778610200830183613a0f565b9050811015611827573063cb743ba86117976080850160608601612c5f565b6117a5610200860186613a0f565b858181106117b5576117b5613a58565b90506020020160208101906117ca9190612c5f565b60016040518463ffffffff1660e01b81526004016117ea93929190613a6e565b600060405180830381600087803b15801561180457600080fd5b505af1158015611818573d6000803e3d6000fd5b5050505080600101905061176a565b505b6000611839610220830183613a0f565b905011156119035760005b611852610220830183613a0f565b9050811015611901573063cb743ba86118716080850160608601612c5f565b61187f610220860186613a0f565b8581811061188f5761188f613a58565b90506020020160208101906118a49190612c5f565b60006040518463ffffffff1660e01b81526004016118c493929190613a6e565b600060405180830381600087803b1580156118de57600080fd5b505af11580156118f2573d6000803e3d6000fd5b50505050806001019050611844565b505b6000611913610260830183613a92565b90501115611a3e57611929610240820182613a0f565b9050611939610260830183613a92565b9050146119595760405163b81aa63960e01b815260040160405180910390fd5b60005b61196a610260830183613a92565b9050811015611a3c5730637bc2be766119896080850160608601612c5f565b611997610240860186613a0f565b858181106119a7576119a7613a58565b90506020020160208101906119bc9190612c5f565b6119ca610260870187613a92565b868181106119da576119da613a58565b905061010002016040518463ffffffff1660e01b81526004016119ff93929190613adb565b600060405180830381600087803b158015611a1957600080fd5b505af1158015611a2d573d6000803e3d6000fd5b5050505080600101905061195c565b505b6000611a4e610280830183613a0f565b90501115611b595760005b611a67610280830183613a0f565b9050811015611b57576040805161010081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081019190915230637bc2be76611ac76080860160608701612c5f565b611ad5610280870187613a0f565b86818110611ae557611ae5613a58565b9050602002016020810190611afa9190612c5f565b846040518463ffffffff1660e01b8152600401611b1993929190613b01565b600060405180830381600087803b158015611b3357600080fd5b505af1158015611b47573d6000803e3d6000fd5b5050505081600101915050611a59565b505b6000611b696102c0830183613bb3565b90501115611c9357611b7f6102a0820182613a0f565b9050611b8f6102c0830183613bb3565b905014611baf576040516374ef6df760e01b815260040160405180910390fd5b60005b611bc06102c0830183613bb3565b9050811015611c91573063511aa644611bdf6080850160608601612c5f565b611bed6102a0860186613a0f565b85818110611bfd57611bfd613a58565b9050602002016020810190611c129190612c5f565b611c206102c0870187613bb3565b86818110611c3057611c30613a58565b905060e002016040518463ffffffff1660e01b8152600401611c5493929190613bfb565b600060405180830381600087803b158015611c6e57600080fd5b505af1158015611c82573d6000803e3d6000fd5b50505050806001019050611bb2565b505b6000611ca36102e0830183613a0f565b90501115610bfd5760005b611cbc6102e0830183613a0f565b905081101561087d576040805160e081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c08101919091523063511aa644611d146080860160608701612c5f565b611d226102e0870187613a0f565b86818110611d3257611d32613a58565b9050602002016020810190611d479190612c5f565b846040518463ffffffff1660e01b8152600401611d6693929190613cb4565b600060405180830381600087803b158015611d8057600080fd5b505af1158015611d94573d6000803e3d6000fd5b5050505081600101915050611cae565b611dac612271565b600d611db982848361373a565b507f905d981207a7d0b6c62cc46ab0be2a076d0298e4a86d0ab79882dbd01ac3737882826040516108e892919061381f565b60606003805461076d90613375565b60135460ff168015611e095750805b15611e42573360009081526014602052604090205460ff16158015611e3957506009546001600160a01b03163314155b15611e42575050565b61087d8282612709565b611e54612271565b60408051838152602081018390527f6bd5c950a8d8df17f772f5af37cb3655737899cbf903264b9795592da439661c91016108e8565b611e926122ff565b610bfd81612775565b611ea68484846109b5565b6001600160a01b0383163b15611edf57611ec2848484846127fd565b611edf576040516368d2bf6b60e11b815260040160405180910390fd5b50505050565b6060611ef08261219c565b611f0d57604051630a14c4b560e41b815260040160405180910390fd5b6000611f176126a8565b90508051600003611f38575050604080516020810190915260008152919050565b604080518082019091526001808252602f60f81b602090920182905282518391611f61916137f9565b81518110611f7157611f71613a58565b01602001516001600160f81b03191614611f8b5792915050565b80611f95846128e9565b604051602001611fa6929190613cda565b604051602081830303815290604052915050919050565b611fc5612271565b611fce836122c1565b604051633f952e6560e11b81526001600160a01b0383811660048301528215156024830152841690637f2a5cca90604401610d59565b61200c6122ff565b6001600160a01b03919091166000908152601460205260409020805460ff1916911515919091179055565b6060600d805461076d90613375565b60135460009060ff1615612098576001600160a01b03831660009081526014602052604090205460ff1615801561208b57506009546001600160a01b03848116911614155b1561209857506000610758565b6120a2838361292d565b9392505050565b6120b16122ff565b6001600160a01b0381166120d857604051633a247dd760e11b815260040160405180910390fd5b600a80546001600160a01b0319166001600160a01b0383169081179091556040519081527f11a3cf439fb225bfe74225716b6774765670ec1060e3796802e62139d69974da90602001610d0b565b60006001600160e01b0319821663152a902d60e11b148061215757506001600160e01b03198216632b435fdb60e21b145b8061217257506001600160e01b0319821663503e914d60e11b145b8061218d5750632483248360e11b6001600160e01b03198316145b8061075857506107588261298a565b6000816001111580156121b0575060005482105b8015610758575050600090815260046020526040902054600160e01b161590565b60006121dc82610e6e565b9050336001600160a01b03821614612215576121f88133612046565b612215576040516367d9dca160e11b815260040160405180910390fd5b60008281526006602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b3033146122a06122896009546001600160a01b031690565b6001600160a01b0316336001600160a01b03161490565b1760000361104d57604051635fc483c560e01b815260040160405180910390fd5b6001600160a01b03811660009081526011602052604090205460ff161515600114610bfd576040516315e26ff360e01b815260040160405180910390fd5b6009546001600160a01b0316331461104d57604051635fc483c560e01b815260040160405180910390fd5b60008180600111612380576000548110156123805760008181526004602052604081205490600160e01b8216900361237e575b806000036120a257506000190160008181526004602052604090205461235d565b505b604051636f96cda160e11b815260040160405180910390fd5b6123a5848484846129d8565b60135460ff1680156123bf57506001600160a01b03841615155b15611edf576001600160a01b03841660009081526014602052604090205460ff161580156123fb57506009546001600160a01b03858116911614155b15611edf5760405162461bcd60e51b815260206004820152600360248201526217171760e91b6044820152606401610c91565b60006124398361232a565b90508060008061245786600090815260066020526040902080549091565b9150915084156124975761246c818433610a0a565b6124975761247a8333612046565b61249757604051632ce44b5f60e11b815260040160405180910390fd5b6124a5836000886001612399565b80156124b057600082555b6001600160a01b038316600081815260056020526040902080546fffffffffffffffffffffffffffffffff0190554260a01b17600360e01b17600087815260046020526040812091909155600160e11b8516900361253e5760018601600081815260046020526040812054900361253c57600054811461253c5760008181526004602052604090208590555b505b60405186906000906001600160a01b03861690600080516020613db8833981519152908390a45050600180548101905550505050565b6012548160005b828110156125d8576000601160006012848154811061259c5761259c613a58565b6000918252602080832091909101546001600160a01b031683528201929092526040019020805460ff191691151591909117905560010161257b565b5060005b81811015612641576001601160008787858181106125fc576125fc613a58565b90506020020160208101906126119190612c5f565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790556001016125dc565b5061264e60128585612bd2565b507fbbd3b69c138de4d317d0bc4290282c4e1cbd1e58b579a5b4f114b598c237454d8484604051612680929190613d19565b60405180910390a150505050565b61087d828260405180602001604052806000815250612a85565b6060600c805461076d90613375565b600980546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b3360008181526007602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b6008546001600160a01b0390811690821681036127a55760405163251dd8cf60e11b815260040160405180910390fd5b600880546001600160a01b0319166001600160a01b0384811691821790925560408051928416835260208301919091527fcc5dc080ff977b3c3a211fa63ab74f90f658f5ba9d3236e92c8f59570f442aac91016108e8565b604051630a85bd0160e11b81526000906001600160a01b0385169063150b7a0290612832903390899088908890600401613d67565b6020604051808303816000875af192505050801561286d575060408051601f3d908101601f1916820190925261286a91810190613d9a565b60015b6128cb573d80801561289b576040519150601f19603f3d011682016040523d82523d6000602084013e6128a0565b606091505b5080516000036128c3576040516368d2bf6b60e11b815260040160405180910390fd5b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490505b949350505050565b606060a06040510180604052602081039150506000815280825b600183039250600a81066030018353600a9004806129035750819003601f19909101908152919050565b6000731e0049783f008a0085193e00003d00cd54003c70196001600160a01b0383160161295c57506001610758565b6001600160a01b0380841660009081526007602090815260408083209386168352929052205460ff166120a2565b60006301ffc9a760e01b6001600160e01b0319831614806129bb57506380ac58cd60e01b6001600160e01b03198316145b806107585750506001600160e01b031916635b5e139f60e01b1490565b6001600160a01b038416158015906129f857506001600160a01b03831615155b15611edf576008546001600160a01b03168015612a7e5760405163657711f560e11b81523360048201526001600160a01b03868116602483015285811660448301526064820185905282169063caee23ea9060840160006040518083038186803b158015612a6557600080fd5b505afa158015612a79573d6000803e3d6000fd5b505050505b5050505050565b612a8f8383612aeb565b6001600160a01b0383163b15610bed576000548281035b612ab960008683806001019450866127fd565b612ad6576040516368d2bf6b60e11b815260040160405180910390fd5b818110612aa6578160005414612a7e57600080fd5b6000805490829003612b105760405163b562e8dd60e01b815260040160405180910390fd5b612b1d6000848385612399565b6001600160a01b03831660008181526005602090815260408083208054680100000000000000018802019055848352600490915281206001851460e11b4260a01b17831790558284019083908390600080516020613db88339815191528180a4600183015b818114612ba85780836000600080516020613db8833981519152600080a4600101612b82565b5081600003612bc957604051622e076360e81b815260040160405180910390fd5b60005550505050565b828054828255906000526020600020908101928215612c25579160200282015b82811115612c255781546001600160a01b0319166001600160a01b03843516178255602090920191600190910190612bf2565b50612c31929150612c35565b5090565b5b80821115612c315760008155600101612c36565b6001600160a01b0381168114610bfd57600080fd5b600060208284031215612c7157600080fd5b81356120a281612c4a565b6001600160e01b031981168114610bfd57600080fd5b600060208284031215612ca457600080fd5b81356120a281612c7c565b60005b83811015612cca578181015183820152602001612cb2565b50506000910152565b60008151808452612ceb816020860160208601612caf565b601f01601f19169290920160200192915050565b6020815260006120a26020830184612cd3565b600060208284031215612d2457600080fd5b5035919050565b60008060408385031215612d3e57600080fd5b8235612d4981612c4a565b946020939093013593505050565b60008082840360e0811215612d6b57600080fd5b8335612d7681612c4a565b925060c0601f1982011215612d8a57600080fd5b506020830190509250929050565b600080600060608486031215612dad57600080fd5b8335612db881612c4a565b92506020840135612dc881612c4a565b929592945050506040919091013590565b60008060408385031215612dec57600080fd5b50508035926020909101359150565b60008060408385031215612e0e57600080fd5b8235612e1981612c4a565b915060208301356001600160401b03811115612e3457600080fd5b830160608186031215612e4657600080fd5b809150509250929050565b600060408284031215612e6357600080fd5b50919050565b80358015158114612e7957600080fd5b919050565b600080600060608486031215612e9357600080fd5b8335612e9e81612c4a565b92506020840135612eae81612c4a565b9150612ebc60408501612e69565b90509250925092565b634e487b7160e01b600052604160045260246000fd5b60405160e081016001600160401b0381118282101715612efd57612efd612ec5565b60405290565b604051601f8201601f191681016001600160401b0381118282101715612f2b57612f2b612ec5565b604052919050565b80356001600160501b0381168114612e7957600080fd5b803562ffffff81168114612e7957600080fd5b803564ffffffffff81168114612e7957600080fd5b803561ffff81168114612e7957600080fd5b6000806000838503610120811215612f9b57600080fd5b8435612fa681612c4a565b93506020850135612fb681612c4a565b925060e0603f1982011215612fca57600080fd5b50612fd3612edb565b612fdf60408601612f33565b8152612fed60608601612f4a565b6020820152612ffe60808601612f5d565b604082015261300f60a08601612f5d565b606082015261302060c08601612f5d565b608082015261303160e08601612f72565b60a08201526130436101008601612f72565b60c0820152809150509250925092565b60008083601f84011261306557600080fd5b5081356001600160401b0381111561307c57600080fd5b60208301915083602082850101111561309457600080fd5b9250929050565b600080602083850312156130ae57600080fd5b82356001600160401b038111156130c457600080fd5b6130d085828601613053565b90969095509350505050565b6000602082840312156130ee57600080fd5b6120a282612e69565b6000806020838503121561310a57600080fd5b82356001600160401b038082111561312157600080fd5b818501915085601f83011261313557600080fd5b81358181111561314457600080fd5b8660208260051b850101111561315957600080fd5b60209290920196919550909350505050565b6000806040838503121561317e57600080fd5b823561318981612c4a565b91506020830135612e4681612c4a565b6000806000604084860312156131ae57600080fd5b83356131b981612c4a565b925060208401356001600160401b038111156131d457600080fd5b6131e086828701613053565b9497909650939450505050565b600080600083850361014081121561320457600080fd5b843561320f81612c4a565b9350602085013561321f81612c4a565b9250610100603f198201121561323457600080fd5b506040840190509250925092565b60006020828403121561325457600080fd5b81356001600160401b0381111561326a57600080fd5b820161030081850312156120a257600080fd5b6000806040838503121561329057600080fd5b823561329b81612c4a565b91506132a960208401612e69565b90509250929050565b600080600080608085870312156132c857600080fd5b84356132d381612c4a565b93506020858101356132e481612c4a565b93506040860135925060608601356001600160401b038082111561330757600080fd5b818801915088601f83011261331b57600080fd5b81358181111561332d5761332d612ec5565b61333f601f8201601f19168501612f03565b9150808252898482850101111561335557600080fd5b808484018584013760008482840101525080935050505092959194509250565b600181811c9082168061338957607f821691505b602082108103612e6357634e487b7160e01b600052602260045260246000fd5b803565ffffffffffff81168114612e7957600080fd5b6001600160501b036133d082612f33565b1682526133df602082016133a9565b65ffffffffffff8082166020850152806133fb604085016133a9565b166040850152505061340f60608201612f72565b61ffff80821660608501528061342760808501612f72565b166080850152505061343b60a08201612e69565b151560a08301525050565b60c0810161075882846133bf565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761075857610758613454565b60008261349e57634e487b7160e01b600052601260045260246000fd5b500490565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6000808335601e198436030181126134e357600080fd5b83016020810192503590506001600160401b0381111561350257600080fd5b80360382131561309457600080fd5b60006060830182358452602080840135601e1985360301811261353357600080fd5b840181810190356001600160401b0381111561354e57600080fd5b8060051b80360383131561356157600080fd5b6060848901529381905260809387018401938290880160005b838110156135b457898703607f1901825261359583866134cc565b6135a08982846134a3565b98505050918501919085019060010161357a565b5050505050506135c760408401846134cc565b85830360408701526135da8382846134a3565b9695505050505050565b6020815260006120a26020830184613511565b6001600160601b0381168114610bfd57600080fd5b60006020828403121561361e57600080fd5b81356120a2816135f7565b813561363481612c4a565b81546001600160a01b03199081166001600160a01b039290921691821783556020840135613661816135f7565b60a01b1617905550565b6001600160501b03815116825262ffffff6020820151166020830152604081015164ffffffffff8082166040850152806060840151166060850152806080840151166080850152505060a081015161ffff80821660a08501528060c08401511660c085015250505050565b6001600160a01b038316815261010081016120a2602083018461366b565b601f821115610bed57600081815260208120601f850160051c8101602086101561371b5750805b601f850160051c820191505b8181101561095f57828155600101613727565b6001600160401b0383111561375157613751612ec5565b6137658361375f8354613375565b836136f4565b6000601f84116001811461379957600085156137815750838201355b600019600387901b1c1916600186901b178355612a7e565b600083815260209020601f19861690835b828110156137ca57868501358255602094850194600190920191016137aa565b50868210156137e75760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b8181038181111561075857610758613454565b8082018082111561075857610758613454565b6020815260006128e16020830184866134a3565b803563ffffffff81168114612e7957600080fd5b6001600160501b0361385882612f33565b16825261ffff61386a60208301612f72565b16602083015261387c604082016133a9565b65ffffffffffff808216604085015280613898606085016133a9565b1660608501525050608081013560ff811681146138b457600080fd5b60ff1660808301526138c860a08201613833565b63ffffffff1660a08301526138df60c08201612f72565b61ffff1660c08301526138f460e08201612e69565b80151560e0840152505050565b6001600160a01b038316815261012081016120a26020830184613847565b6000808335601e1984360301811261393657600080fd5b8301803591506001600160401b0382111561395057600080fd5b60200191503681900382131561309457600080fd5b60006020828403121561397757600080fd5b6120a2826133a9565b6001600160a01b038316815260e081016120a260208301846133bf565b6001600160a01b03841681526040602082018190526000906139c290830184866134a3565b95945050505050565b60008235605e198336030181126139e157600080fd5b9190910192915050565b6001600160a01b03831681526040602082018190526000906128e190830184613511565b6000808335601e19843603018112613a2657600080fd5b8301803591506001600160401b03821115613a4057600080fd5b6020019150600581901b360382131561309457600080fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b039384168152919092166020820152901515604082015260600190565b6000808335601e19843603018112613aa957600080fd5b8301803591506001600160401b03821115613ac357600080fd5b6020019150600881901b360382131561309457600080fd5b6001600160a01b0384811682528316602082015261014081016128e16040830184613847565b60006101408201905060018060a01b0380861683528085166020840152506001600160501b03835116604083015261ffff602084015116606083015265ffffffffffff60408401511660808301526060830151613b6860a084018265ffffffffffff169052565b50608083015160ff811660c08401525060a083015163ffffffff811660e08401525060c083015161ffff81166101008401525060e08301518015156101208401525b50949350505050565b6000808335601e19843603018112613bca57600080fd5b8301803591506001600160401b03821115613be457600080fd5b602001915060e08102360382131561309457600080fd5b6001600160a01b0384811682528316602082015261012081016001600160501b03613c2584612f33565b16604083015262ffffff613c3b60208501612f4a565b166060830152613c4d60408401612f5d565b64ffffffffff808216608085015280613c6860608701612f5d565b1660a085015280613c7b60808701612f5d565b1660c08501525050613c8f60a08401612f72565b61ffff1660e0830152613ca460c08401612f72565b61ffff8116610100840152613baa565b6001600160a01b0384811682528316602082015261012081016128e1604083018461366b565b60008351613cec818460208801612caf565b835190830190613d00818360208801612caf565b64173539b7b760d91b9101908152600501949350505050565b60208082528181018390526000908460408401835b86811015613d5c578235613d4181612c4a565b6001600160a01b031682529183019190830190600101613d2e565b509695505050505050565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906135da90830184612cd3565b600060208284031215613dac57600080fd5b81516120a281612c7c56feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220a2c0b3672f067ac1922d256d4d52e7c6b22642b8537ef1575f4774d5a593473c64736f6c63430008110033000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000000e446567656e75696e65204269747a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000036462620000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000005ea00ac477b1030ce78506496e8c2de24bf5
0x608060405234801561001057600080fd5b506004361061030c5760003560e01c80636c0360eb1161019d578063a4830114116100e9578063cb743ba8116100a2578063e4c376951161007c578063e4c37695146106d7578063e8a3d485146106ea578063e985e9c5146106f2578063f2fde38b1461070557600080fd5b8063cb743ba8146106af578063d4108636146106c2578063d5abeb01146106cf57600080fd5b8063a48301141461064a578063a9fc664e1461065d578063ad2f852a14610670578063b88d4fde14610681578063c6ab67a314610694578063c87b56dd1461069c57600080fd5b80637bc2be7611610156578063911f456b11610130578063911f456b14610609578063938e3d7b1461061c57806395d89b411461062f578063a22cb4651461063757600080fd5b80637bc2be76146105b7578063840e15d4146105ca5780638da5cb5b146105f857600080fd5b80636c0360eb146105665780636f8b44b01461056e57806370a0823114610581578063715018a61461059457806379ba50971461059c5780637a05bc82146105a457600080fd5b80633680620d1161025c578063511aa6441161021557806360c308b6116101ef57806360c308b61461051a5780636352211e1461052d57806364869dad1461054057806366251b691461055357600080fd5b8063511aa644146104e157806355f804b3146104f45780635c40f6f41461050757600080fd5b80633680620d1461046a57806342260b5d1461047d57806342842e0e1461049557806342966c68146104a857806344dae42c146104bb57806348a4c101146104ce57600080fd5b8063099b6bfa116102c95780631b73593c116102a35780631b73593c1461040a57806323452b9c1461041d57806323b872dd146104255780632a55205a1461043857600080fd5b8063099b6bfa146103c25780630d705df6146103d557806318160ddd146103f057600080fd5b806301bd2ce31461031157806301ffc9a71461034957806306fdde031461035c578063081812fc14610371578063095ea7b31461039c578063098144d4146103b1575b600080fd5b61033461031f366004612c5f565b60146020526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b610334610357366004612c92565b610718565b61036461075e565b6040516103409190612cff565b61038461037f366004612d12565b6107f0565b6040516001600160a01b039091168152602001610340565b6103af6103aa366004612d2b565b610834565b005b6008546001600160a01b0316610384565b6103af6103d0366004612d12565b610881565b6040805163657711f560e11b81526000602082015201610340565b60015460005403600019015b604051908152602001610340565b6103af610418366004612d57565b6108f4565b6103af610967565b6103af610433366004612d98565b6109b5565b61044b610446366004612dd9565b610b4f565b604080516001600160a01b039093168352602083019190915201610340565b6103af610478366004612dfb565b610b95565b600f54600160a01b90046001600160601b03166103fc565b6103af6104a3366004612d98565b610bd2565b6103af6104b6366004612d12565b610bf2565b6103af6104c9366004612e51565b610c00565b6103af6104dc366004612e7e565b610d16565b6103af6104ef366004612f84565b610d90565b6103af61050236600461309b565b610dcf565b6103af6105153660046130dc565b610e41565b6103af6105283660046130f7565b610e5c565b61038461053b366004612d12565b610e6e565b6103af61054e366004612d2b565b610e79565b6103af61056136600461316b565b610f37565b610364610f76565b6103af61057c366004612d12565b610f85565b6103fc61058f366004612c5f565b610fed565b6103af61103b565b6103af61104f565b6103af6105b2366004613199565b6110c8565b6103af6105c53660046131ed565b611107565b6105dd6105d8366004612c5f565b611146565b60408051938452602084019290925290820152606001610340565b6009546001600160a01b0316610384565b6103af610617366004613242565b611187565b6103af61062a36600461309b565b611da4565b610364611deb565b6103af61064536600461327d565b611dfa565b6103af610658366004612dd9565b611e4c565b6103af61066b366004612c5f565b611e8a565b600f546001600160a01b0316610384565b6103af61068f3660046132b2565b611e9b565b600e546103fc565b6103646106aa366004612d12565b611ee5565b6103af6106bd366004612e7e565b611fbd565b6013546103349060ff1681565b600b546103fc565b6103af6106e536600461327d565b612004565b610364612037565b61033461070036600461316b565b612046565b6103af610713366004612c5f565b6120a9565b60006001600160e01b03198216630c487f4760e11b148061074957506001600160e01b03198216639c15441560e01b145b80610758575061075882612126565b92915050565b60606002805461076d90613375565b80601f016020809104026020016040519081016040528092919081815260200182805461079990613375565b80156107e65780601f106107bb576101008083540402835291602001916107e6565b820191906000526020600020905b8154815290600101906020018083116107c957829003601f168201915b5050505050905090565b60006107fb8261219c565b610818576040516333d1c03960e21b815260040160405180910390fd5b506000908152600660205260409020546001600160a01b031690565b60135460ff1615610873573360009081526014602052604090205460ff1615801561086a57506009546001600160a01b03163314155b15610873575050565b61087d82826121d1565b5050565b610889612271565b60005460001901156108ae5760405163e03264af60e01b815260040160405180910390fd5b600e80549082905560408051828152602081018490527f7c22004198bf87da0f0dab623c72e66ca1200f4454aa3b9ca30f436275428b7c91015b60405180910390a15050565b6108fc612271565b610905826122c1565b6040516301308e6560e01b81526001600160a01b038316906301308e6590610931908490600401613446565b600060405180830381600087803b15801561094b57600080fd5b505af115801561095f573d6000803e3d6000fd5b505050505050565b61096f6122ff565b600a80546001600160a01b0319169055604051600081527f11a3cf439fb225bfe74225716b6774765670ec1060e3796802e62139d69974da9060200160405180910390a1565b60006109c08261232a565b9050836001600160a01b0316816001600160a01b0316146109f35760405162a1148160e81b815260040160405180910390fd5b60008281526006602052604090208054610a1f8187335b6001600160a01b039081169116811491141790565b610a4a57610a2d8633612046565b610a4a57604051632ce44b5f60e11b815260040160405180910390fd5b6001600160a01b038516610a7157604051633a954ecd60e21b815260040160405180910390fd5b610a7e8686866001612399565b8015610a8957600082555b6001600160a01b038681166000908152600560205260408082208054600019019055918716808252919020805460010190554260a01b17600160e11b17600085815260046020526040812091909155600160e11b84169003610b1b57600184016000818152600460205260408120549003610b19576000548114610b195760008181526004602052604090208490555b505b83856001600160a01b0316876001600160a01b0316600080516020613db883398151915260405160405180910390a461095f565b600f8054600091829161271090610b7690600160a01b90046001600160601b03168661346a565b610b809190613481565b90546001600160a01b03169590945092505050565b610b9d612271565b610ba6826122c1565b60405163ebb4a55f60e01b81526001600160a01b0383169063ebb4a55f906109319084906004016135e4565b610bed83838360405180602001604052806000815250611e9b565b505050565b610bfd81600161242e565b50565b610c08612271565b6000610c176020830183612c5f565b6001600160a01b031603610c3e57604051631cc0baef60e01b815260040160405180910390fd5b612710610c51604083016020840161360c565b6001600160601b03161115610c9a57610c70604082016020830161360c565b604051633cadbafb60e01b81526001600160601b0390911660048201526024015b60405180910390fd5b80600f610ca78282613629565b507ff21fccf4d64d86d532c4e4eb86c007b6ad57a460c27d724188625e755ec6cf6d9050610cd86020830183612c5f565b610ce8604084016020850161360c565b604080516001600160a01b0390931683526001600160601b039091166020830152015b60405180910390a150565b610d1e612271565b610d27836122c1565b604051638e7d1e4360e01b81526001600160a01b0383811660048301528215156024830152841690638e7d1e43906044015b600060405180830381600087803b158015610d7357600080fd5b505af1158015610d87573d6000803e3d6000fd5b50505050505050565b610d98612271565b610da1836122c1565b6040516309a7002f60e31b81526001600160a01b03841690634d38017890610d5990859085906004016136d6565b610dd7612271565b600c610de482848361373a565b5060015460005403600019011561087d577f6bd5c950a8d8df17f772f5af37cb3655737899cbf903264b9795592da439661c600180610e2260005490565b610e2c91906137f9565b604080519283526020830191909152016108e8565b610e496122ff565b6013805460ff1916911515919091179055565b610e646122ff565b61087d8282612574565b60006107588261232a565b601054600114610eb85760405162461bcd60e51b815260206004820152600a6024820152695245454e5452414e435960b01b6044820152606401610c91565b6002601055610ec6336122c1565b600b5481610ed76000546000190190565b610ee1919061380c565b1115610f245780610ef56000546000190190565b610eff919061380c565b600b5460405163384b48c560e21b815260048101929092526024820152604401610c91565b610f2e828261268e565b50506001601055565b610f3f612271565b610f48826122c1565b60405163024e71b760e31b81526001600160a01b0382811660048301528316906312738db890602401610931565b6060610f806126a8565b905090565b610f8d612271565b6001600160401b03811115610fb85760405163b43e913760e01b815260048101829052602401610c91565b600b8190556040518181527f7810bd47de260c3e9ee10061cf438099dd12256c79485f12f94dbccc981e806c90602001610d0b565b60006001600160a01b038216611016576040516323d3ad8160e21b815260040160405180910390fd5b506001600160a01b03166000908152600560205260409020546001600160401b031690565b6110436122ff565b61104d60006126b7565b565b600a546001600160a01b031633811461107b57604051636b7584e760e11b815260040160405180910390fd5b600a80546001600160a01b0319169055604051600081527f11a3cf439fb225bfe74225716b6774765670ec1060e3796802e62139d69974da9060200160405180910390a1610bfd816126b7565b6110d0612271565b6110d9836122c1565b60405163b957d0cb60e01b81526001600160a01b0384169063b957d0cb90610d59908590859060040161381f565b61110f612271565b611118836122c1565b604051637ecd591560e11b81526001600160a01b0384169063fd9ab22a90610d599085908590600401613901565b6001600160a01b03811660009081526005602052604080822054901c6001600160401b0316908061117a6000546000190190565b600b549395909450915050565b61118f6122ff565b8035156111e8576040516306f8b44b60e41b8152813560048201523090636f8b44b090602401600060405180830381600087803b1580156111cf57600080fd5b505af11580156111e3573d6000803e3d6000fd5b505050505b6111f5602082018261391f565b15905061125f57306355f804b361120f602084018461391f565b6040518363ffffffff1660e01b815260040161122c92919061381f565b600060405180830381600087803b15801561124657600080fd5b505af115801561125a573d6000803e3d6000fd5b505050505b61126c604082018261391f565b1590506112d6573063938e3d7b611286604084018461391f565b6040518363ffffffff1660e01b81526004016112a392919061381f565b600060405180830381600087803b1580156112bd57600080fd5b505af11580156112d1573d6000803e3d6000fd5b505050505b6112f66112e960e0830160c08401613965565b65ffffffffffff16151590565b6113096112e960c0840160a08501613965565b1760010361137b5730631b73593c6113276080840160608501612c5f565b836080016040518363ffffffff1660e01b8152600401611348929190613980565b600060405180830381600087803b15801561136257600080fd5b505af1158015611376573d6000803e3d6000fd5b505050505b61138961014082018261391f565b1590506114055730637a05bc826113a66080840160608501612c5f565b6113b461014085018561391f565b6040518463ffffffff1660e01b81526004016113d29392919061399d565b600060405180830381600087803b1580156113ec57600080fd5b505af1158015611400573d6000803e3d6000fd5b505050505b60006114156101608301836139cb565b351461148f5730633680620d6114316080840160608501612c5f565b61143f6101608501856139cb565b6040518363ffffffff1660e01b815260040161145c9291906139eb565b600060405180830381600087803b15801561147657600080fd5b505af115801561148a573d6000803e3d6000fd5b505050505b60006114a36101a083016101808401612c5f565b6001600160a01b03161461153a57306366251b696114c76080840160608501612c5f565b6114d96101a085016101808601612c5f565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401600060405180830381600087803b15801561152157600080fd5b505af1158015611535573d6000803e3d6000fd5b505050505b6101a08101351561159b576040516304cdb5fd60e11b81526101a08201356004820152309063099b6bfa90602401600060405180830381600087803b15801561158257600080fd5b505af1158015611596573d6000803e3d6000fd5b505050505b60006115ab6101c0830183613a0f565b905011156116755760005b6115c46101c0830183613a0f565b905081101561167357306348a4c1016115e36080850160608601612c5f565b6115f16101c0860186613a0f565b8581811061160157611601613a58565b90506020020160208101906116169190612c5f565b60016040518463ffffffff1660e01b815260040161163693929190613a6e565b600060405180830381600087803b15801561165057600080fd5b505af1158015611664573d6000803e3d6000fd5b505050508060010190506115b6565b505b60006116856101e0830183613a0f565b9050111561174f5760005b61169e6101e0830183613a0f565b905081101561174d57306348a4c1016116bd6080850160608601612c5f565b6116cb6101e0860186613a0f565b858181106116db576116db613a58565b90506020020160208101906116f09190612c5f565b60006040518463ffffffff1660e01b815260040161171093929190613a6e565b600060405180830381600087803b15801561172a57600080fd5b505af115801561173e573d6000803e3d6000fd5b50505050806001019050611690565b505b600061175f610200830183613a0f565b905011156118295760005b611778610200830183613a0f565b9050811015611827573063cb743ba86117976080850160608601612c5f565b6117a5610200860186613a0f565b858181106117b5576117b5613a58565b90506020020160208101906117ca9190612c5f565b60016040518463ffffffff1660e01b81526004016117ea93929190613a6e565b600060405180830381600087803b15801561180457600080fd5b505af1158015611818573d6000803e3d6000fd5b5050505080600101905061176a565b505b6000611839610220830183613a0f565b905011156119035760005b611852610220830183613a0f565b9050811015611901573063cb743ba86118716080850160608601612c5f565b61187f610220860186613a0f565b8581811061188f5761188f613a58565b90506020020160208101906118a49190612c5f565b60006040518463ffffffff1660e01b81526004016118c493929190613a6e565b600060405180830381600087803b1580156118de57600080fd5b505af11580156118f2573d6000803e3d6000fd5b50505050806001019050611844565b505b6000611913610260830183613a92565b90501115611a3e57611929610240820182613a0f565b9050611939610260830183613a92565b9050146119595760405163b81aa63960e01b815260040160405180910390fd5b60005b61196a610260830183613a92565b9050811015611a3c5730637bc2be766119896080850160608601612c5f565b611997610240860186613a0f565b858181106119a7576119a7613a58565b90506020020160208101906119bc9190612c5f565b6119ca610260870187613a92565b868181106119da576119da613a58565b905061010002016040518463ffffffff1660e01b81526004016119ff93929190613adb565b600060405180830381600087803b158015611a1957600080fd5b505af1158015611a2d573d6000803e3d6000fd5b5050505080600101905061195c565b505b6000611a4e610280830183613a0f565b90501115611b595760005b611a67610280830183613a0f565b9050811015611b57576040805161010081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081019190915230637bc2be76611ac76080860160608701612c5f565b611ad5610280870187613a0f565b86818110611ae557611ae5613a58565b9050602002016020810190611afa9190612c5f565b846040518463ffffffff1660e01b8152600401611b1993929190613b01565b600060405180830381600087803b158015611b3357600080fd5b505af1158015611b47573d6000803e3d6000fd5b5050505081600101915050611a59565b505b6000611b696102c0830183613bb3565b90501115611c9357611b7f6102a0820182613a0f565b9050611b8f6102c0830183613bb3565b905014611baf576040516374ef6df760e01b815260040160405180910390fd5b60005b611bc06102c0830183613bb3565b9050811015611c91573063511aa644611bdf6080850160608601612c5f565b611bed6102a0860186613a0f565b85818110611bfd57611bfd613a58565b9050602002016020810190611c129190612c5f565b611c206102c0870187613bb3565b86818110611c3057611c30613a58565b905060e002016040518463ffffffff1660e01b8152600401611c5493929190613bfb565b600060405180830381600087803b158015611c6e57600080fd5b505af1158015611c82573d6000803e3d6000fd5b50505050806001019050611bb2565b505b6000611ca36102e0830183613a0f565b90501115610bfd5760005b611cbc6102e0830183613a0f565b905081101561087d576040805160e081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c08101919091523063511aa644611d146080860160608701612c5f565b611d226102e0870187613a0f565b86818110611d3257611d32613a58565b9050602002016020810190611d479190612c5f565b846040518463ffffffff1660e01b8152600401611d6693929190613cb4565b600060405180830381600087803b158015611d8057600080fd5b505af1158015611d94573d6000803e3d6000fd5b5050505081600101915050611cae565b611dac612271565b600d611db982848361373a565b507f905d981207a7d0b6c62cc46ab0be2a076d0298e4a86d0ab79882dbd01ac3737882826040516108e892919061381f565b60606003805461076d90613375565b60135460ff168015611e095750805b15611e42573360009081526014602052604090205460ff16158015611e3957506009546001600160a01b03163314155b15611e42575050565b61087d8282612709565b611e54612271565b60408051838152602081018390527f6bd5c950a8d8df17f772f5af37cb3655737899cbf903264b9795592da439661c91016108e8565b611e926122ff565b610bfd81612775565b611ea68484846109b5565b6001600160a01b0383163b15611edf57611ec2848484846127fd565b611edf576040516368d2bf6b60e11b815260040160405180910390fd5b50505050565b6060611ef08261219c565b611f0d57604051630a14c4b560e41b815260040160405180910390fd5b6000611f176126a8565b90508051600003611f38575050604080516020810190915260008152919050565b604080518082019091526001808252602f60f81b602090920182905282518391611f61916137f9565b81518110611f7157611f71613a58565b01602001516001600160f81b03191614611f8b5792915050565b80611f95846128e9565b604051602001611fa6929190613cda565b604051602081830303815290604052915050919050565b611fc5612271565b611fce836122c1565b604051633f952e6560e11b81526001600160a01b0383811660048301528215156024830152841690637f2a5cca90604401610d59565b61200c6122ff565b6001600160a01b03919091166000908152601460205260409020805460ff1916911515919091179055565b6060600d805461076d90613375565b60135460009060ff1615612098576001600160a01b03831660009081526014602052604090205460ff1615801561208b57506009546001600160a01b03848116911614155b1561209857506000610758565b6120a2838361292d565b9392505050565b6120b16122ff565b6001600160a01b0381166120d857604051633a247dd760e11b815260040160405180910390fd5b600a80546001600160a01b0319166001600160a01b0383169081179091556040519081527f11a3cf439fb225bfe74225716b6774765670ec1060e3796802e62139d69974da90602001610d0b565b60006001600160e01b0319821663152a902d60e11b148061215757506001600160e01b03198216632b435fdb60e21b145b8061217257506001600160e01b0319821663503e914d60e11b145b8061218d5750632483248360e11b6001600160e01b03198316145b8061075857506107588261298a565b6000816001111580156121b0575060005482105b8015610758575050600090815260046020526040902054600160e01b161590565b60006121dc82610e6e565b9050336001600160a01b03821614612215576121f88133612046565b612215576040516367d9dca160e11b815260040160405180910390fd5b60008281526006602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b3033146122a06122896009546001600160a01b031690565b6001600160a01b0316336001600160a01b03161490565b1760000361104d57604051635fc483c560e01b815260040160405180910390fd5b6001600160a01b03811660009081526011602052604090205460ff161515600114610bfd576040516315e26ff360e01b815260040160405180910390fd5b6009546001600160a01b0316331461104d57604051635fc483c560e01b815260040160405180910390fd5b60008180600111612380576000548110156123805760008181526004602052604081205490600160e01b8216900361237e575b806000036120a257506000190160008181526004602052604090205461235d565b505b604051636f96cda160e11b815260040160405180910390fd5b6123a5848484846129d8565b60135460ff1680156123bf57506001600160a01b03841615155b15611edf576001600160a01b03841660009081526014602052604090205460ff161580156123fb57506009546001600160a01b03858116911614155b15611edf5760405162461bcd60e51b815260206004820152600360248201526217171760e91b6044820152606401610c91565b60006124398361232a565b90508060008061245786600090815260066020526040902080549091565b9150915084156124975761246c818433610a0a565b6124975761247a8333612046565b61249757604051632ce44b5f60e11b815260040160405180910390fd5b6124a5836000886001612399565b80156124b057600082555b6001600160a01b038316600081815260056020526040902080546fffffffffffffffffffffffffffffffff0190554260a01b17600360e01b17600087815260046020526040812091909155600160e11b8516900361253e5760018601600081815260046020526040812054900361253c57600054811461253c5760008181526004602052604090208590555b505b60405186906000906001600160a01b03861690600080516020613db8833981519152908390a45050600180548101905550505050565b6012548160005b828110156125d8576000601160006012848154811061259c5761259c613a58565b6000918252602080832091909101546001600160a01b031683528201929092526040019020805460ff191691151591909117905560010161257b565b5060005b81811015612641576001601160008787858181106125fc576125fc613a58565b90506020020160208101906126119190612c5f565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790556001016125dc565b5061264e60128585612bd2565b507fbbd3b69c138de4d317d0bc4290282c4e1cbd1e58b579a5b4f114b598c237454d8484604051612680929190613d19565b60405180910390a150505050565b61087d828260405180602001604052806000815250612a85565b6060600c805461076d90613375565b600980546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b3360008181526007602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b6008546001600160a01b0390811690821681036127a55760405163251dd8cf60e11b815260040160405180910390fd5b600880546001600160a01b0319166001600160a01b0384811691821790925560408051928416835260208301919091527fcc5dc080ff977b3c3a211fa63ab74f90f658f5ba9d3236e92c8f59570f442aac91016108e8565b604051630a85bd0160e11b81526000906001600160a01b0385169063150b7a0290612832903390899088908890600401613d67565b6020604051808303816000875af192505050801561286d575060408051601f3d908101601f1916820190925261286a91810190613d9a565b60015b6128cb573d80801561289b576040519150601f19603f3d011682016040523d82523d6000602084013e6128a0565b606091505b5080516000036128c3576040516368d2bf6b60e11b815260040160405180910390fd5b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490505b949350505050565b606060a06040510180604052602081039150506000815280825b600183039250600a81066030018353600a9004806129035750819003601f19909101908152919050565b6000731e0049783f008a0085193e00003d00cd54003c70196001600160a01b0383160161295c57506001610758565b6001600160a01b0380841660009081526007602090815260408083209386168352929052205460ff166120a2565b60006301ffc9a760e01b6001600160e01b0319831614806129bb57506380ac58cd60e01b6001600160e01b03198316145b806107585750506001600160e01b031916635b5e139f60e01b1490565b6001600160a01b038416158015906129f857506001600160a01b03831615155b15611edf576008546001600160a01b03168015612a7e5760405163657711f560e11b81523360048201526001600160a01b03868116602483015285811660448301526064820185905282169063caee23ea9060840160006040518083038186803b158015612a6557600080fd5b505afa158015612a79573d6000803e3d6000fd5b505050505b5050505050565b612a8f8383612aeb565b6001600160a01b0383163b15610bed576000548281035b612ab960008683806001019450866127fd565b612ad6576040516368d2bf6b60e11b815260040160405180910390fd5b818110612aa6578160005414612a7e57600080fd5b6000805490829003612b105760405163b562e8dd60e01b815260040160405180910390fd5b612b1d6000848385612399565b6001600160a01b03831660008181526005602090815260408083208054680100000000000000018802019055848352600490915281206001851460e11b4260a01b17831790558284019083908390600080516020613db88339815191528180a4600183015b818114612ba85780836000600080516020613db8833981519152600080a4600101612b82565b5081600003612bc957604051622e076360e81b815260040160405180910390fd5b60005550505050565b828054828255906000526020600020908101928215612c25579160200282015b82811115612c255781546001600160a01b0319166001600160a01b03843516178255602090920191600190910190612bf2565b50612c31929150612c35565b5090565b5b80821115612c315760008155600101612c36565b6001600160a01b0381168114610bfd57600080fd5b600060208284031215612c7157600080fd5b81356120a281612c4a565b6001600160e01b031981168114610bfd57600080fd5b600060208284031215612ca457600080fd5b81356120a281612c7c565b60005b83811015612cca578181015183820152602001612cb2565b50506000910152565b60008151808452612ceb816020860160208601612caf565b601f01601f19169290920160200192915050565b6020815260006120a26020830184612cd3565b600060208284031215612d2457600080fd5b5035919050565b60008060408385031215612d3e57600080fd5b8235612d4981612c4a565b946020939093013593505050565b60008082840360e0811215612d6b57600080fd5b8335612d7681612c4a565b925060c0601f1982011215612d8a57600080fd5b506020830190509250929050565b600080600060608486031215612dad57600080fd5b8335612db881612c4a565b92506020840135612dc881612c4a565b929592945050506040919091013590565b60008060408385031215612dec57600080fd5b50508035926020909101359150565b60008060408385031215612e0e57600080fd5b8235612e1981612c4a565b915060208301356001600160401b03811115612e3457600080fd5b830160608186031215612e4657600080fd5b809150509250929050565b600060408284031215612e6357600080fd5b50919050565b80358015158114612e7957600080fd5b919050565b600080600060608486031215612e9357600080fd5b8335612e9e81612c4a565b92506020840135612eae81612c4a565b9150612ebc60408501612e69565b90509250925092565b634e487b7160e01b600052604160045260246000fd5b60405160e081016001600160401b0381118282101715612efd57612efd612ec5565b60405290565b604051601f8201601f191681016001600160401b0381118282101715612f2b57612f2b612ec5565b604052919050565b80356001600160501b0381168114612e7957600080fd5b803562ffffff81168114612e7957600080fd5b803564ffffffffff81168114612e7957600080fd5b803561ffff81168114612e7957600080fd5b6000806000838503610120811215612f9b57600080fd5b8435612fa681612c4a565b93506020850135612fb681612c4a565b925060e0603f1982011215612fca57600080fd5b50612fd3612edb565b612fdf60408601612f33565b8152612fed60608601612f4a565b6020820152612ffe60808601612f5d565b604082015261300f60a08601612f5d565b606082015261302060c08601612f5d565b608082015261303160e08601612f72565b60a08201526130436101008601612f72565b60c0820152809150509250925092565b60008083601f84011261306557600080fd5b5081356001600160401b0381111561307c57600080fd5b60208301915083602082850101111561309457600080fd5b9250929050565b600080602083850312156130ae57600080fd5b82356001600160401b038111156130c457600080fd5b6130d085828601613053565b90969095509350505050565b6000602082840312156130ee57600080fd5b6120a282612e69565b6000806020838503121561310a57600080fd5b82356001600160401b038082111561312157600080fd5b818501915085601f83011261313557600080fd5b81358181111561314457600080fd5b8660208260051b850101111561315957600080fd5b60209290920196919550909350505050565b6000806040838503121561317e57600080fd5b823561318981612c4a565b91506020830135612e4681612c4a565b6000806000604084860312156131ae57600080fd5b83356131b981612c4a565b925060208401356001600160401b038111156131d457600080fd5b6131e086828701613053565b9497909650939450505050565b600080600083850361014081121561320457600080fd5b843561320f81612c4a565b9350602085013561321f81612c4a565b9250610100603f198201121561323457600080fd5b506040840190509250925092565b60006020828403121561325457600080fd5b81356001600160401b0381111561326a57600080fd5b820161030081850312156120a257600080fd5b6000806040838503121561329057600080fd5b823561329b81612c4a565b91506132a960208401612e69565b90509250929050565b600080600080608085870312156132c857600080fd5b84356132d381612c4a565b93506020858101356132e481612c4a565b93506040860135925060608601356001600160401b038082111561330757600080fd5b818801915088601f83011261331b57600080fd5b81358181111561332d5761332d612ec5565b61333f601f8201601f19168501612f03565b9150808252898482850101111561335557600080fd5b808484018584013760008482840101525080935050505092959194509250565b600181811c9082168061338957607f821691505b602082108103612e6357634e487b7160e01b600052602260045260246000fd5b803565ffffffffffff81168114612e7957600080fd5b6001600160501b036133d082612f33565b1682526133df602082016133a9565b65ffffffffffff8082166020850152806133fb604085016133a9565b166040850152505061340f60608201612f72565b61ffff80821660608501528061342760808501612f72565b166080850152505061343b60a08201612e69565b151560a08301525050565b60c0810161075882846133bf565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761075857610758613454565b60008261349e57634e487b7160e01b600052601260045260246000fd5b500490565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6000808335601e198436030181126134e357600080fd5b83016020810192503590506001600160401b0381111561350257600080fd5b80360382131561309457600080fd5b60006060830182358452602080840135601e1985360301811261353357600080fd5b840181810190356001600160401b0381111561354e57600080fd5b8060051b80360383131561356157600080fd5b6060848901529381905260809387018401938290880160005b838110156135b457898703607f1901825261359583866134cc565b6135a08982846134a3565b98505050918501919085019060010161357a565b5050505050506135c760408401846134cc565b85830360408701526135da8382846134a3565b9695505050505050565b6020815260006120a26020830184613511565b6001600160601b0381168114610bfd57600080fd5b60006020828403121561361e57600080fd5b81356120a2816135f7565b813561363481612c4a565b81546001600160a01b03199081166001600160a01b039290921691821783556020840135613661816135f7565b60a01b1617905550565b6001600160501b03815116825262ffffff6020820151166020830152604081015164ffffffffff8082166040850152806060840151166060850152806080840151166080850152505060a081015161ffff80821660a08501528060c08401511660c085015250505050565b6001600160a01b038316815261010081016120a2602083018461366b565b601f821115610bed57600081815260208120601f850160051c8101602086101561371b5750805b601f850160051c820191505b8181101561095f57828155600101613727565b6001600160401b0383111561375157613751612ec5565b6137658361375f8354613375565b836136f4565b6000601f84116001811461379957600085156137815750838201355b600019600387901b1c1916600186901b178355612a7e565b600083815260209020601f19861690835b828110156137ca57868501358255602094850194600190920191016137aa565b50868210156137e75760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b8181038181111561075857610758613454565b8082018082111561075857610758613454565b6020815260006128e16020830184866134a3565b803563ffffffff81168114612e7957600080fd5b6001600160501b0361385882612f33565b16825261ffff61386a60208301612f72565b16602083015261387c604082016133a9565b65ffffffffffff808216604085015280613898606085016133a9565b1660608501525050608081013560ff811681146138b457600080fd5b60ff1660808301526138c860a08201613833565b63ffffffff1660a08301526138df60c08201612f72565b61ffff1660c08301526138f460e08201612e69565b80151560e0840152505050565b6001600160a01b038316815261012081016120a26020830184613847565b6000808335601e1984360301811261393657600080fd5b8301803591506001600160401b0382111561395057600080fd5b60200191503681900382131561309457600080fd5b60006020828403121561397757600080fd5b6120a2826133a9565b6001600160a01b038316815260e081016120a260208301846133bf565b6001600160a01b03841681526040602082018190526000906139c290830184866134a3565b95945050505050565b60008235605e198336030181126139e157600080fd5b9190910192915050565b6001600160a01b03831681526040602082018190526000906128e190830184613511565b6000808335601e19843603018112613a2657600080fd5b8301803591506001600160401b03821115613a4057600080fd5b6020019150600581901b360382131561309457600080fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b039384168152919092166020820152901515604082015260600190565b6000808335601e19843603018112613aa957600080fd5b8301803591506001600160401b03821115613ac357600080fd5b6020019150600881901b360382131561309457600080fd5b6001600160a01b0384811682528316602082015261014081016128e16040830184613847565b60006101408201905060018060a01b0380861683528085166020840152506001600160501b03835116604083015261ffff602084015116606083015265ffffffffffff60408401511660808301526060830151613b6860a084018265ffffffffffff169052565b50608083015160ff811660c08401525060a083015163ffffffff811660e08401525060c083015161ffff81166101008401525060e08301518015156101208401525b50949350505050565b6000808335601e19843603018112613bca57600080fd5b8301803591506001600160401b03821115613be457600080fd5b602001915060e08102360382131561309457600080fd5b6001600160a01b0384811682528316602082015261012081016001600160501b03613c2584612f33565b16604083015262ffffff613c3b60208501612f4a565b166060830152613c4d60408401612f5d565b64ffffffffff808216608085015280613c6860608701612f5d565b1660a085015280613c7b60808701612f5d565b1660c08501525050613c8f60a08401612f72565b61ffff1660e0830152613ca460c08401612f72565b61ffff8116610100840152613baa565b6001600160a01b0384811682528316602082015261012081016128e1604083018461366b565b60008351613cec818460208801612caf565b835190830190613d00818360208801612caf565b64173539b7b760d91b9101908152600501949350505050565b60208082528181018390526000908460408401835b86811015613d5c578235613d4181612c4a565b6001600160a01b031682529183019190830190600101613d2e565b509695505050505050565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906135da90830184612cd3565b600060208284031215613dac57600080fd5b81516120a281612c7c56feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220a2c0b3672f067ac1922d256d4d52e7c6b22642b8537ef1575f4774d5a593473c64736f6c63430008110033
| Token | Symbol | Balance | Price | Value |
|---|---|---|---|---|
| no token holdings | ||||
| Block | Age | Parent Transaction Hash | Type | Method | From | To | Value | |
|---|---|---|---|---|---|---|---|---|
| no internal transactions found for this address yet (traced blocks + on-demand) | ||||||||
| Transaction Hash | Method | Block | Age | From | To | Amount | Token | ||
|---|---|---|---|---|---|---|---|---|---|
| no token transfers for this address yet | |||||||||
| Transaction Hash | Method | Block | Age | From | To | Type | Item | ||
|---|---|---|---|---|---|---|---|---|---|
| no NFT transfers for this address yet | |||||||||
| Type | Age | Block | Details |
|---|---|---|---|
| no cross-chain L1↔L2 transactions for this address | |||
| Txn Hash | Age | Event | Topics / Data |
|---|---|---|---|
| 0xb45a1c…618c7e | 1 hr agoMon, 17 Aug 2026 19:52:12 UTC | Transfer | [0] 0x000000000000…00000000 [1] 0x000000000000…13e4c3d6 [2] 0x000000000000…0000088d |
| 0xb45a1c…618c7e | 1 hr agoMon, 17 Aug 2026 19:52:12 UTC | Transfer | [0] 0x000000000000…00000000 [1] 0x000000000000…13e4c3d6 [2] 0x000000000000…0000088c |
| 0xb45a1c…618c7e | 1 hr agoMon, 17 Aug 2026 19:52:12 UTC | Transfer | [0] 0x000000000000…00000000 [1] 0x000000000000…13e4c3d6 [2] 0x000000000000…0000088b |
| 0xb45a1c…618c7e | 1 hr agoMon, 17 Aug 2026 19:52:12 UTC | Transfer | [0] 0x000000000000…00000000 [1] 0x000000000000…13e4c3d6 [2] 0x000000000000…0000088a |
| 0xb45a1c…618c7e | 1 hr agoMon, 17 Aug 2026 19:52:12 UTC | Transfer | [0] 0x000000000000…00000000 [1] 0x000000000000…13e4c3d6 [2] 0x000000000000…00000889 |
| 0x38ae59…7679a0 | 1 day agoSun, 16 Aug 2026 19:27:19 UTC | Transfer | [0] 0x000000000000…00000000 [1] 0x000000000000…7ddb8c79 [2] 0x000000000000…00000888 |
| 0x33b1ea…b45ab9 | 1 day agoSun, 16 Aug 2026 19:26:52 UTC | Transfer | [0] 0x000000000000…00000000 [1] 0x000000000000…7ddb8c79 [2] 0x000000000000…00000887 |
| 0xb82aff…f072a2 | 1 day agoSun, 16 Aug 2026 19:26:06 UTC | Transfer | [0] 0x000000000000…00000000 [1] 0x000000000000…7ddb8c79 [2] 0x000000000000…00000886 |
| 0xf8b24d…bbff95 | 1 day agoSun, 16 Aug 2026 19:25:49 UTC | Transfer | [0] 0x000000000000…00000000 [1] 0x000000000000…7ddb8c79 [2] 0x000000000000…00000885 |
| 0x8bdf1a…0691af | 1 day agoSun, 16 Aug 2026 06:48:38 UTC | Transfer | [0] 0x000000000000…00000000 [1] 0x000000000000…12f980d1 [2] 0x000000000000…00000884 |
| 0x1bb518…7fbf01 | 1 day agoSun, 16 Aug 2026 06:43:12 UTC | Transfer | [0] 0x000000000000…00000000 [1] 0x000000000000…12f980d1 [2] 0x000000000000…00000883 |
| 0xdc2015…bf6fe8 | 1 day agoSun, 16 Aug 2026 03:45:55 UTC | Transfer | [0] 0x000000000000…00000000 [1] 0x000000000000…a20e16a8 [2] 0x000000000000…00000882 |
| 0xf56692…89a089 | 1 day agoSun, 16 Aug 2026 03:38:19 UTC | Transfer | [0] 0x000000000000…00000000 [1] 0x000000000000…bdba6dc9 [2] 0x000000000000…00000881 |
| 0xcb5cb0…5ea586 | 1 day agoSun, 16 Aug 2026 00:06:21 UTC | Transfer | [0] 0x000000000000…00000000 [1] 0x000000000000…f24e8013 [2] 0x000000000000…00000880 |
| 0x591a63…df7c18 | 1 day agoSun, 16 Aug 2026 00:05:16 UTC | Transfer | [0] 0x000000000000…00000000 [1] 0x000000000000…f24e8013 [2] 0x000000000000…0000087f |
| 0x1519a9…05ee69 | 2 days agoSat, 15 Aug 2026 21:13:01 UTC | Transfer | [0] 0x000000000000…00000000 [1] 0x000000000000…7d17c70b [2] 0x000000000000…0000087e |
| 0x8a337d…f4216c | 2 days agoSat, 15 Aug 2026 21:06:00 UTC | Transfer | [0] 0x000000000000…00000000 [1] 0x000000000000…b1580fd9 [2] 0x000000000000…0000087d |
| 0x0dc4c7…a40e41 | 2 days agoSat, 15 Aug 2026 21:05:43 UTC | Transfer | [0] 0x000000000000…00000000 [1] 0x000000000000…f8679d48 [2] 0x000000000000…0000087c |
| 0xf24d2e…fd2705 | 2 days agoSat, 15 Aug 2026 21:05:31 UTC | Transfer | [0] 0x000000000000…00000000 [1] 0x000000000000…e5e46a5d [2] 0x000000000000…0000087b |
| 0x0afc6d…b44082 | 2 days agoSat, 15 Aug 2026 21:05:20 UTC | Transfer | [0] 0x000000000000…00000000 [1] 0x000000000000…51b9a9de [2] 0x000000000000…0000087a |
| 0x517f06…87d5da | 2 days agoSat, 15 Aug 2026 21:05:06 UTC | Transfer | [0] 0x000000000000…00000000 [1] 0x000000000000…5f25146d [2] 0x000000000000…00000879 |
| 0x081c09…8ce86c | 2 days agoSat, 15 Aug 2026 21:04:50 UTC | Transfer | [0] 0x000000000000…00000000 [1] 0x000000000000…53566986 [2] 0x000000000000…00000878 |
| 0x11b132…4746bd | 2 days agoSat, 15 Aug 2026 21:04:34 UTC | Transfer | [0] 0x000000000000…00000000 [1] 0x000000000000…261a0f23 [2] 0x000000000000…00000877 |
| 0x744c84…8d3fa8 | 2 days agoSat, 15 Aug 2026 21:04:19 UTC | Transfer | [0] 0x000000000000…00000000 [1] 0x000000000000…79455243 [2] 0x000000000000…00000876 |
| 0x74547b…1e8f28 | 2 days agoSat, 15 Aug 2026 21:04:06 UTC | Transfer | [0] 0x000000000000…00000000 [1] 0x000000000000…ee04f033 [2] 0x000000000000…00000875 |
| Transaction Hash | Method ? | Block | Age | From | To | Amount | Txn Fee ? | ||
|---|---|---|---|---|---|---|---|---|---|
| 0x3dfec1…877e65 | Set Approval For All | 39,125,682 | 1 hr agoMon, 17 Aug 2026 20:31:16 UTC | 0x5836…c3d6 | IN | Degenuine Bitz | $0.000 ETH | 0.00000057 | |
| 0x0a2f3f…7c39bf | Set Approval For All | 39,103,314 | 1 hr agoMon, 17 Aug 2026 19:53:49 UTC | 0x5836…c3d6 | IN | Degenuine Bitz | $0.000 ETH | 0.00000057 | |
| 0xca368c…5efdaa | Set Approval For All | 39,102,830 | 1 hr agoMon, 17 Aug 2026 19:53:01 UTC | 0x5836…c3d6 | IN | Degenuine Bitz | $0.000 ETH | 0.00000057 | |
| 0x93a859…fdbafa | Set Approval For All | 39,091,602 | 1 hr agoMon, 17 Aug 2026 19:34:15 UTC | 0x8ddb…7f34 | IN | Degenuine Bitz | $0.000 ETH | 0.00000057 | |
| 0x7ad87b…eb2642 | Set Approval For All | 39,070,033 | 2 hrs agoMon, 17 Aug 2026 18:58:11 UTC | 0xa278…7078 | IN | Degenuine Bitz | $0.000 ETH | 0.00000059 | |
| 0x4973f5…14e1bc | Set Approval For All | 39,045,127 | 3 hrs agoMon, 17 Aug 2026 18:16:34 UTC | 0xa278…7078 | IN | Degenuine Bitz | $0.000 ETH | 0.00000058 | |
| 0x094cbe…8aff34 | Set Approval For All | 39,044,944 | 3 hrs agoMon, 17 Aug 2026 18:16:16 UTC | 0xa278…7078 | IN | Degenuine Bitz | $0.000 ETH | 0.00000058 | |
| 0x36950f…9b3e50 | Set Approval For All | 38,999,311 | 4 hrs agoMon, 17 Aug 2026 17:00:00 UTC | 0x33d0…3fc8 | IN | Degenuine Bitz | $0.000 ETH | 0.00000059 | |
| 0xba6dab…24266b | Set Approval For All | 38,797,794 | 10 hrs agoMon, 17 Aug 2026 11:23:31 UTC | 0x20ff…1f62 | IN | Degenuine Bitz | $0.000 ETH | 0.00000057 | |
| 0xd71129…fc0d22 | Set Approval For All | 38,656,424 | 14 hrs agoMon, 17 Aug 2026 07:26:56 UTC | 0x6527…6936 | IN | Degenuine Bitz | $0.000 ETH | 0.00000057 | |
| 0x1c5df6…30c49c | Set Approval For All | 38,643,138 | 14 hrs agoMon, 17 Aug 2026 07:04:43 UTC | 0x1a64…14c0 | IN | Degenuine Bitz | $0.000 ETH | 0.00000057 | |
| 0x3fe7b3…afb6ed | Set Approval For All | 38,621,438 | 15 hrs agoMon, 17 Aug 2026 06:28:24 UTC | 0x2348…5f54 | IN | Degenuine Bitz | $0.000 ETH | 0.00000057 | |
| 0x37ac61…02f3a5 | Set Approval For All | 38,607,534 | 15 hrs agoMon, 17 Aug 2026 06:05:08 UTC | 0x15ef…c2ba | IN | Degenuine Bitz | $0.000 ETH | 0.00000057 | |
| 0x288ce7…fb73a1 | Set Approval For All | 38,570,452 | 16 hrs agoMon, 17 Aug 2026 05:03:06 UTC | 0xcdea…2142 | IN | Degenuine Bitz | $0.000 ETH | 0.00000058 | |
| 0xd370d6…86204e | Set Approval For All | 38,569,957 | 16 hrs agoMon, 17 Aug 2026 05:02:16 UTC | 0xcdea…2142 | IN | Degenuine Bitz | $0.000 ETH | 0.00000057 | |
| 0x26aef2…01a07c | Set Approval For All | 38,568,945 | 16 hrs agoMon, 17 Aug 2026 05:00:35 UTC | 0xcdea…2142 | IN | Degenuine Bitz | $0.000 ETH | 0.00000058 | |
| 0xb261f6…b4c0ee | Set Approval For All | 38,545,011 | 17 hrs agoMon, 17 Aug 2026 04:20:32 UTC | 0x24f5…c30c | IN | Degenuine Bitz | $0.000 ETH | 0.00000057 | |
| 0x088a9f…0464b3 | Set Approval For All | 38,507,998 | 18 hrs agoMon, 17 Aug 2026 03:18:38 UTC | 0xf18f…b8ce | IN | Degenuine Bitz | $0.000 ETH | 0.00000057 | |
| 0x7c272e…a55b04 | Set Approval For All | 38,483,663 | 18 hrs agoMon, 17 Aug 2026 02:37:53 UTC | 0x31c4…7a79 | IN | Degenuine Bitz | $0.000 ETH | 0.00000057 | |
| 0x346440…57c1d6 | Set Approval For All | 38,483,161 | 18 hrs agoMon, 17 Aug 2026 02:37:03 UTC | 0x20ff…1f62 | IN | Degenuine Bitz | $0.000 ETH | 0.00000057 | |
| 0xa3771d…e2ae54 | Set Approval For All | 38,463,874 | 19 hrs agoMon, 17 Aug 2026 02:04:48 UTC | 0xb3b3…e028 | IN | Degenuine Bitz | $0.000 ETH | 0.00000057 | |
| 0x7aea6b…75ef83 | Set Approval For All | 38,462,744 | 19 hrs agoMon, 17 Aug 2026 02:02:54 UTC | 0xb3b3…e028 | IN | Degenuine Bitz | $0.000 ETH | 0.00000057 | |
| 0xd7d5e6…c33618 | Set Approval For All | 38,447,465 | 19 hrs agoMon, 17 Aug 2026 01:37:20 UTC | 0xb3b3…e028 | IN | Degenuine Bitz | $0.000 ETH | 0.00000057 | |
| 0x037d55…052058 | Set Approval For All | 38,447,296 | 19 hrs agoMon, 17 Aug 2026 01:37:03 UTC | 0xb3b3…e028 | IN | Degenuine Bitz | $0.000 ETH | 0.00000057 | |
| 0x00af81…b0835f | Set Approval For All | 38,303,193 | 23 hrs agoSun, 16 Aug 2026 21:36:03 UTC | 0xb42a…bf4a | IN | Degenuine Bitz | $0.000 ETH | 0.00000057 |