Feature Tip: Add private address tag to any address under My Name Tag !
Overview
TokenID
287
Total Transfers
-
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract
Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
milAIdy
Compiler Version
v0.8.7+commit.e28d00a7
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-05-26 */ // SPDX-License-Identifier: MIT /** * @title MilAIdy contract * @dev Extends ERC721A Non-Fungible Token Standard basic implementation */ pragma solidity ^0.8.0; interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address to, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom( address from, address to, uint256 amount ) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } pragma solidity ^0.8.0; abstract contract ReentrancyGuard { uint256 private constant _NOT_ENTERED = 1; uint256 private constant _ENTERED = 2; uint256 private _status; constructor() { _status = _NOT_ENTERED; } modifier nonReentrant() { require(_status != _ENTERED, "ReentrancyGuard: reentrant call"); _status = _ENTERED; _; _status = _NOT_ENTERED; } } pragma solidity ^0.8.0; library Strings { bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef"; function toString(uint256 value) internal pure returns (string memory) { if (value == 0) { return "0"; } uint256 temp = value; uint256 digits; while (temp != 0) { digits++; temp /= 10; } bytes memory buffer = new bytes(digits); while (value != 0) { digits -= 1; buffer[digits] = bytes1(uint8(48 + uint256(value % 10))); value /= 10; } return string(buffer); } function toHexString(uint256 value) internal pure returns (string memory) { if (value == 0) { return "0x00"; } uint256 temp = value; uint256 length = 0; while (temp != 0) { length++; temp >>= 8; } return toHexString(value, length); } function toHexString(uint256 value, uint256 length) internal pure returns (string memory) { bytes memory buffer = new bytes(2 * length + 2); buffer[0] = "0"; buffer[1] = "x"; for (uint256 i = 2 * length + 1; i > 1; --i) { buffer[i] = _HEX_SYMBOLS[value & 0xf]; value >>= 4; } require(value == 0, "Strings: hex length insufficient"); return string(buffer); } } pragma solidity ^0.8.0; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } pragma solidity ^0.8.0; abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor() { _transferOwnership(_msgSender()); } function owner() public view virtual returns (address) { return _owner; } modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } pragma solidity ^0.8.1; library Address { function isContract(address account) internal view returns (bool) { return account.code.length > 0; } function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); (bool success, ) = recipient.call{value: amount}(""); require(success, "Address: unable to send value, recipient may have reverted"); } function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } function functionCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } function functionCallWithValue( address target, bytes memory data, uint256 value ) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } function functionCallWithValue( address target, bytes memory data, uint256 value, string memory errorMessage ) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); require(isContract(target), "Address: call to non-contract"); (bool success, bytes memory returndata) = target.call{value: value}(data); return verifyCallResult(success, returndata, errorMessage); } function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } function functionStaticCall( address target, bytes memory data, string memory errorMessage ) internal view returns (bytes memory) { require(isContract(target), "Address: static call to non-contract"); (bool success, bytes memory returndata) = target.staticcall(data); return verifyCallResult(success, returndata, errorMessage); } function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } function functionDelegateCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { require(isContract(target), "Address: delegate call to non-contract"); (bool success, bytes memory returndata) = target.delegatecall(data); return verifyCallResult(success, returndata, errorMessage); } function verifyCallResult( bool success, bytes memory returndata, string memory errorMessage ) internal pure returns (bytes memory) { if (success) { return returndata; } else { if (returndata.length > 0) { assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } pragma solidity ^0.8.0; library SafeERC20 { using Address for address; function safeTransfer( IERC20 token, address to, uint256 value ) internal { _callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value)); } function safeTransferFrom( IERC20 token, address from, address to, uint256 value ) internal { _callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value)); } function safeApprove( IERC20 token, address spender, uint256 value ) internal { require( (value == 0) || (token.allowance(address(this), spender) == 0), "SafeERC20: approve from non-zero to non-zero allowance" ); _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value)); } function safeIncreaseAllowance( IERC20 token, address spender, uint256 value ) internal { uint256 newAllowance = token.allowance(address(this), spender) + value; _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance)); } function safeDecreaseAllowance( IERC20 token, address spender, uint256 value ) internal { unchecked { uint256 oldAllowance = token.allowance(address(this), spender); require(oldAllowance >= value, "SafeERC20: decreased allowance below zero"); uint256 newAllowance = oldAllowance - value; _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance)); } } function _callOptionalReturn(IERC20 token, bytes memory data) private { bytes memory returndata = address(token).functionCall(data, "SafeERC20: low-level call failed"); if (returndata.length > 0) { require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed"); } } } pragma solidity ^0.8.0; interface IERC721Receiver { function onERC721Received( address operator, address from, uint256 tokenId, bytes calldata data ) external returns (bytes4); } pragma solidity ^0.8.0; interface IERC165 { function supportsInterface(bytes4 interfaceId) external view returns (bool); } pragma solidity ^0.8.0; abstract contract ERC165 is IERC165 { function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(IERC165).interfaceId; } } pragma solidity ^0.8.0; interface IERC721 is IERC165 { event Transfer(address indexed from, address indexed to, uint256 indexed tokenId); event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId); event ApprovalForAll(address indexed owner, address indexed operator, bool approved); function balanceOf(address owner) external view returns (uint256 balance); function ownerOf(uint256 tokenId) external view returns (address owner); function safeTransferFrom( address from, address to, uint256 tokenId ) external; function transferFrom( address from, address to, uint256 tokenId ) external; function approve(address to, uint256 tokenId) external; function getApproved(uint256 tokenId) external view returns (address operator); function setApprovalForAll(address operator, bool _approved) external; function isApprovedForAll(address owner, address operator) external view returns (bool); function safeTransferFrom( address from, address to, uint256 tokenId, bytes calldata data ) external; } pragma solidity ^0.8.0; interface IERC721Enumerable is IERC721 { function totalSupply() external view returns (uint256); function tokenOfOwnerByIndex(address owner, uint256 index) external view returns (uint256); function tokenByIndex(uint256 index) external view returns (uint256); } pragma solidity ^0.8.0; interface IERC721Metadata is IERC721 { function name() external view returns (string memory); function symbol() external view returns (string memory); function tokenURI(uint256 tokenId) external view returns (string memory); } pragma solidity ^0.8.0; contract ERC721A is Context, ERC165, IERC721, IERC721Metadata, IERC721Enumerable { using Address for address; using Strings for uint256; struct TokenOwnership { address addr; uint64 startTimestamp; } struct AddressData { uint128 balance; uint128 numberMinted; } uint256 internal currentIndex; string private _name; string private _symbol; mapping(uint256 => TokenOwnership) internal _ownerships; mapping(address => AddressData) private _addressData; mapping(uint256 => address) private _tokenApprovals; mapping(address => mapping(address => bool)) private _operatorApprovals; constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } function totalSupply() public view override returns (uint256) { return currentIndex; } function tokenByIndex(uint256 index) public view override returns (uint256) { require(index < totalSupply(), "ERC721A: global index out of bounds"); return index; } function tokenOfOwnerByIndex(address owner, uint256 index) public view override returns (uint256) { require(index < balanceOf(owner), "ERC721A: owner index out of bounds"); uint256 numMintedSoFar = totalSupply(); uint256 tokenIdsIdx; address currOwnershipAddr; unchecked { for (uint256 i; i < numMintedSoFar; i++) { TokenOwnership memory ownership = _ownerships[i]; if (ownership.addr != address(0)) { currOwnershipAddr = ownership.addr; } if (currOwnershipAddr == owner) { if (tokenIdsIdx == index) { return i; } tokenIdsIdx++; } } } revert("ERC721A: unable to get token of owner by index"); } function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) { return interfaceId == type(IERC721).interfaceId || interfaceId == type(IERC721Metadata).interfaceId || interfaceId == type(IERC721Enumerable).interfaceId || super.supportsInterface(interfaceId); } function balanceOf(address owner) public view override returns (uint256) { require(owner != address(0), "ERC721A: balance query for the zero address"); return uint256(_addressData[owner].balance); } function _numberMinted(address owner) internal view returns (uint256) { require(owner != address(0), "ERC721A: number minted query for the zero address"); return uint256(_addressData[owner].numberMinted); } function ownershipOf(uint256 tokenId) internal view returns (TokenOwnership memory) { require(_exists(tokenId), "ERC721A: owner query for nonexistent token"); unchecked { for (uint256 curr = tokenId; curr >= 0; curr--) { TokenOwnership memory ownership = _ownerships[curr]; if (ownership.addr != address(0)) { return ownership; } } } revert("ERC721A: unable to determine the owner of token"); } function ownerOf(uint256 tokenId) public view override returns (address) { return ownershipOf(tokenId).addr; } function name() public view virtual override returns (string memory) { return _name; } function symbol() public view virtual override returns (string memory) { return _symbol; } function tokenURI(uint256 tokenId) public view virtual override returns (string memory) { require(_exists(tokenId), "ERC721Metadata: URI query for nonexistent token"); string memory baseURI = _baseURI(); return bytes(baseURI).length != 0 ? string(abi.encodePacked(baseURI, tokenId.toString())) : ""; } function _baseURI() internal view virtual returns (string memory) { return ""; } function approve(address to, uint256 tokenId) public override { address owner = ERC721A.ownerOf(tokenId); require(to != owner, "ERC721A: approval to current owner"); require( _msgSender() == owner || isApprovedForAll(owner, _msgSender()), "ERC721A: approve caller is not owner nor approved for all" ); _approve(to, tokenId, owner); } function getApproved(uint256 tokenId) public view override returns (address) { require(_exists(tokenId), "ERC721A: approved query for nonexistent token"); return _tokenApprovals[tokenId]; } function setApprovalForAll(address operator, bool approved) public override { require(operator != _msgSender(), "ERC721A: approve to caller"); _operatorApprovals[_msgSender()][operator] = approved; emit ApprovalForAll(_msgSender(), operator, approved); } function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) { return _operatorApprovals[owner][operator]; } function transferFrom( address from, address to, uint256 tokenId ) public virtual override { _transfer(from, to, tokenId); } function safeTransferFrom( address from, address to, uint256 tokenId ) public virtual override { safeTransferFrom(from, to, tokenId, ""); } function safeTransferFrom( address from, address to, uint256 tokenId, bytes memory _data ) public override { _transfer(from, to, tokenId); require( _checkOnERC721Received(from, to, tokenId, _data), "ERC721A: transfer to non ERC721Receiver implementer" ); } function _exists(uint256 tokenId) internal view returns (bool) { return tokenId < currentIndex; } function _safeMint(address to, uint256 quantity) internal { _safeMint(to, quantity, ""); } function _safeMint( address to, uint256 quantity, bytes memory _data ) internal { _mint(to, quantity, _data, true); } function _mint( address to, uint256 quantity, bytes memory _data, bool safe ) internal { uint256 startTokenId = currentIndex; require(to != address(0), "ERC721A: mint to the zero address"); require(quantity != 0, "ERC721A: quantity must be greater than 0"); _beforeTokenTransfers(address(0), to, startTokenId, quantity); unchecked { _addressData[to].balance += uint128(quantity); _addressData[to].numberMinted += uint128(quantity); _ownerships[startTokenId].addr = to; _ownerships[startTokenId].startTimestamp = uint64(block.timestamp); uint256 updatedIndex = startTokenId; for (uint256 i; i < quantity; i++) { emit Transfer(address(0), to, updatedIndex); if (safe) { require( _checkOnERC721Received(address(0), to, updatedIndex, _data), "ERC721A: transfer to non ERC721Receiver implementer" ); } updatedIndex++; } currentIndex = updatedIndex; } _afterTokenTransfers(address(0), to, startTokenId, quantity); } function _transfer( address from, address to, uint256 tokenId ) private { TokenOwnership memory prevOwnership = ownershipOf(tokenId); bool isApprovedOrOwner = (_msgSender() == prevOwnership.addr || getApproved(tokenId) == _msgSender() || isApprovedForAll(prevOwnership.addr, _msgSender())); require(isApprovedOrOwner, "ERC721A: transfer caller is not owner nor approved"); require(prevOwnership.addr == from, "ERC721A: transfer from incorrect owner"); require(to != address(0), "ERC721A: transfer to the zero address"); _beforeTokenTransfers(from, to, tokenId, 1); _approve(address(0), tokenId, prevOwnership.addr); unchecked { _addressData[from].balance -= 1; _addressData[to].balance += 1; _ownerships[tokenId].addr = to; _ownerships[tokenId].startTimestamp = uint64(block.timestamp); uint256 nextTokenId = tokenId + 1; if (_ownerships[nextTokenId].addr == address(0)) { if (_exists(nextTokenId)) { _ownerships[nextTokenId].addr = prevOwnership.addr; _ownerships[nextTokenId].startTimestamp = prevOwnership.startTimestamp; } } } emit Transfer(from, to, tokenId); _afterTokenTransfers(from, to, tokenId, 1); } function _approve( address to, uint256 tokenId, address owner ) private { _tokenApprovals[tokenId] = to; emit Approval(owner, to, tokenId); } function _checkOnERC721Received( address from, address to, uint256 tokenId, bytes memory _data ) private returns (bool) { if (to.isContract()) { try IERC721Receiver(to).onERC721Received(_msgSender(), from, tokenId, _data) returns (bytes4 retval) { return retval == IERC721Receiver(to).onERC721Received.selector; } catch (bytes memory reason) { if (reason.length == 0) { revert("ERC721A: transfer to non ERC721Receiver implementer"); } else { assembly { revert(add(32, reason), mload(reason)) } } } } else { return true; } } function _beforeTokenTransfers( address from, address to, uint256 startTokenId, uint256 quantity ) internal virtual {} function _afterTokenTransfers( address from, address to, uint256 startTokenId, uint256 quantity ) internal virtual {} } contract milAIdy is ERC721A, Ownable, ReentrancyGuard { string public baseURI; uint public MAX_MILAIDY = 333; uint public price = 0.033 ether; uint public maxPerTx = 3; uint public maxPerWallet = 3; uint public nextOwnerToExplicitlySet; bool public canMint; constructor() ERC721A("milAIdy", "AILADY") {} function mintMilAIdy(uint256 quantity) external payable { require(canMint, "Minting is not enabled at this time"); require(msg.value == quantity * price,"Please send the exact amount required for mint"); require(msg.sender == tx.origin,"Tx failed: minting from external contract calls is not allowed"); require( totalSupply() + quantity < MAX_MILAIDY + 1,"The collection is sold out"); require( quantity < maxPerTx + 1, "Max mint is 3 per wallet"); require(numberMinted(msg.sender) + quantity <= maxPerWallet,"Max mint is 3 per wallet"); _safeMint(msg.sender, quantity); } function numberMinted(address owner) public view returns (uint256) { return _numberMinted(owner); } function _baseURI() internal view virtual override returns (string memory) { return baseURI; } function setBaseURI(string calldata baseURI_) external onlyOwner { baseURI = baseURI_; } function setOwnersExplicit(uint256 quantity) external onlyOwner nonReentrant { _setOwnersExplicit(quantity); } function toggleMinting() external onlyOwner { canMint = !canMint; } function withdraw() external onlyOwner nonReentrant { (bool success, ) = msg.sender.call{value: address(this).balance}(""); require(success, "Transfer failed."); } function getOwnershipData(uint256 tokenId) external view returns (TokenOwnership memory) { return ownershipOf(tokenId); } function setPrice(uint256 price_) external onlyOwner { price = price_; } function setMaxPerTx(uint256 maxPerTx_) external onlyOwner { maxPerTx = maxPerTx_; } function setMaxPerWallet(uint256 maxPerWallet_) external onlyOwner { maxPerWallet = maxPerWallet_; } function _setOwnersExplicit(uint256 quantity) internal { require(quantity != 0, "quantity must be nonzero"); require(currentIndex != 0, "no tokens minted yet"); uint256 _nextOwnerToExplicitlySet = nextOwnerToExplicitlySet; require(_nextOwnerToExplicitlySet < currentIndex, "all ownerships have been set"); unchecked { uint256 endIndex = _nextOwnerToExplicitlySet + quantity - 1; if (endIndex + 1 > currentIndex) { endIndex = currentIndex - 1; } for (uint256 i = _nextOwnerToExplicitlySet; i <= endIndex; i++) { if (_ownerships[i].addr == address(0)) { TokenOwnership memory ownership = ownershipOf(i); _ownerships[i].addr = ownership.addr; _ownerships[i].startTimestamp = ownership.startTimestamp; } } nextOwnerToExplicitlySet = endIndex + 1; } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"MAX_MILAIDY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baseURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"canMint","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getOwnershipData","outputs":[{"components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"uint64","name":"startTimestamp","type":"uint64"}],"internalType":"struct ERC721A.TokenOwnership","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxPerTx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxPerWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"quantity","type":"uint256"}],"name":"mintMilAIdy","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nextOwnerToExplicitlySet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"numberMinted","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"price","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"baseURI_","type":"string"}],"name":"setBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxPerTx_","type":"uint256"}],"name":"setMaxPerTx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxPerWallet_","type":"uint256"}],"name":"setMaxPerWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"quantity","type":"uint256"}],"name":"setOwnersExplicit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"price_","type":"uint256"}],"name":"setPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"toggleMinting","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
608060405261014d600a5566753d533d968000600b556003600c556003600d553480156200002c57600080fd5b5060408051808201825260078152666d696c4149647960c81b60208083019182528351808501909452600684526541494c41445960d01b9084015281519192916200007a916001916200010e565b508051620000909060029060208401906200010e565b505050620000ad620000a7620000b860201b60201c565b620000bc565b6001600855620001f1565b3390565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b8280546200011c90620001b4565b90600052602060002090601f0160209004810192826200014057600085556200018b565b82601f106200015b57805160ff19168380011785556200018b565b828001600101855582156200018b579182015b828111156200018b5782518255916020019190600101906200016e565b50620001999291506200019d565b5090565b5b808211156200019957600081556001016200019e565b600181811c90821680620001c957607f821691505b60208210811415620001eb57634e487b7160e01b600052602260045260246000fd5b50919050565b61264180620002016000396000f3fe60806040526004361061020f5760003560e01c80637d55094d11610118578063beb9716d116100a0578063dc33e6811161006f578063dc33e681146105de578063e268e4d3146105fe578063e985e9c51461061e578063f2fde38b14610667578063f968adbe1461068757600080fd5b8063beb9716d1461056e578063c6f6f21614610588578063c87b56dd146105a8578063d7224ba0146105c857600080fd5b806395d89b41116100e757806395d89b41146104f0578063a035b1fe14610505578063a22cb4651461051b578063aced368a1461053b578063b88d4fde1461054e57600080fd5b80637d55094d1461044f5780638da5cb5b1461046457806391b7f5ed146104825780639231ab2a146104a257600080fd5b80633ccfd60b1161019b57806355f804b31161016a57806355f804b3146103c55780636352211e146103e55780636c0360eb1461040557806370a082311461041a578063715018a61461043a57600080fd5b80633ccfd60b1461035a57806342842e0e1461036f578063453c23101461038f5780634f6ccce7146103a557600080fd5b806318160ddd116101e257806318160ddd146102c55780632176e68c146102e457806323b872dd146102fa5780632d20fb601461031a5780632f745c591461033a57600080fd5b806301ffc9a71461021457806306fdde0314610249578063081812fc1461026b578063095ea7b3146102a3575b600080fd5b34801561022057600080fd5b5061023461022f3660046122b9565b61069d565b60405190151581526020015b60405180910390f35b34801561025557600080fd5b5061025e61070a565b6040516102409190612415565b34801561027757600080fd5b5061028b610286366004612365565b61079c565b6040516001600160a01b039091168152602001610240565b3480156102af57600080fd5b506102c36102be36600461228f565b61082c565b005b3480156102d157600080fd5b506000545b604051908152602001610240565b3480156102f057600080fd5b506102d6600a5481565b34801561030657600080fd5b506102c361031536600461213b565b610944565b34801561032657600080fd5b506102c3610335366004612365565b61094f565b34801561034657600080fd5b506102d661035536600461228f565b610a00565b34801561036657600080fd5b506102c3610b5d565b34801561037b57600080fd5b506102c361038a36600461213b565b610c88565b34801561039b57600080fd5b506102d6600d5481565b3480156103b157600080fd5b506102d66103c0366004612365565b610ca3565b3480156103d157600080fd5b506102c36103e03660046122f3565b610d05565b3480156103f157600080fd5b5061028b610400366004612365565b610d59565b34801561041157600080fd5b5061025e610d6b565b34801561042657600080fd5b506102d66104353660046120ed565b610df9565b34801561044657600080fd5b506102c3610e8a565b34801561045b57600080fd5b506102c3610ede565b34801561047057600080fd5b506007546001600160a01b031661028b565b34801561048e57600080fd5b506102c361049d366004612365565b610f3a565b3480156104ae57600080fd5b506104c26104bd366004612365565b610f87565b6040805182516001600160a01b0316815260209283015167ffffffffffffffff169281019290925201610240565b3480156104fc57600080fd5b5061025e610fa4565b34801561051157600080fd5b506102d6600b5481565b34801561052757600080fd5b506102c3610536366004612253565b610fb3565b6102c3610549366004612365565b611078565b34801561055a57600080fd5b506102c3610569366004612177565b6112fa565b34801561057a57600080fd5b50600f546102349060ff1681565b34801561059457600080fd5b506102c36105a3366004612365565b611333565b3480156105b457600080fd5b5061025e6105c3366004612365565b611380565b3480156105d457600080fd5b506102d6600e5481565b3480156105ea57600080fd5b506102d66105f93660046120ed565b61144e565b34801561060a57600080fd5b506102c3610619366004612365565b611459565b34801561062a57600080fd5b50610234610639366004612108565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205460ff1690565b34801561067357600080fd5b506102c36106823660046120ed565b6114a6565b34801561069357600080fd5b506102d6600c5481565b60006001600160e01b031982166380ac58cd60e01b14806106ce57506001600160e01b03198216635b5e139f60e01b145b806106e957506001600160e01b0319821663780e9d6360e01b145b8061070457506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606001805461071990612513565b80601f016020809104026020016040519081016040528092919081815260200182805461074590612513565b80156107925780601f1061076757610100808354040283529160200191610792565b820191906000526020600020905b81548152906001019060200180831161077557829003601f168201915b5050505050905090565b60006107a9826000541190565b6108105760405162461bcd60e51b815260206004820152602d60248201527f455243373231413a20617070726f76656420717565727920666f72206e6f6e6560448201526c3c34b9ba32b73a103a37b5b2b760991b60648201526084015b60405180910390fd5b506000908152600560205260409020546001600160a01b031690565b600061083782610d59565b9050806001600160a01b0316836001600160a01b031614156108a65760405162461bcd60e51b815260206004820152602260248201527f455243373231413a20617070726f76616c20746f2063757272656e74206f776e60448201526132b960f11b6064820152608401610807565b336001600160a01b03821614806108c257506108c28133610639565b6109345760405162461bcd60e51b815260206004820152603960248201527f455243373231413a20617070726f76652063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f76656420666f7220616c6c000000000000006064820152608401610807565b61093f83838361155c565b505050565b61093f8383836115b8565b6007546001600160a01b031633146109975760405162461bcd60e51b815260206004820181905260248201526000805160206125ec8339815191526044820152606401610807565b600260085414156109ea5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610807565b60026008556109f8816118b1565b506001600855565b6000610a0b83610df9565b8210610a645760405162461bcd60e51b815260206004820152602260248201527f455243373231413a206f776e657220696e646578206f7574206f6620626f756e604482015261647360f01b6064820152608401610807565b600080549080805b83811015610afd576000818152600360209081526040918290208251808401909352546001600160a01b038116808452600160a01b90910467ffffffffffffffff169183019190915215610abf57805192505b876001600160a01b0316836001600160a01b03161415610af45786841415610aed5750935061070492505050565b6001909301925b50600101610a6c565b5060405162461bcd60e51b815260206004820152602e60248201527f455243373231413a20756e61626c6520746f2067657420746f6b656e206f662060448201526d0deeedccae440c4f240d2dcc8caf60931b6064820152608401610807565b6007546001600160a01b03163314610ba55760405162461bcd60e51b815260206004820181905260248201526000805160206125ec8339815191526044820152606401610807565b60026008541415610bf85760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610807565b6002600855604051600090339047908381818185875af1925050503d8060008114610c3f576040519150601f19603f3d011682016040523d82523d6000602084013e610c44565b606091505b50509050806109f85760405162461bcd60e51b815260206004820152601060248201526f2a3930b739b332b9103330b4b632b21760811b6044820152606401610807565b61093f838383604051806020016040528060008152506112fa565b600080548210610d015760405162461bcd60e51b815260206004820152602360248201527f455243373231413a20676c6f62616c20696e646578206f7574206f6620626f756044820152626e647360e81b6064820152608401610807565b5090565b6007546001600160a01b03163314610d4d5760405162461bcd60e51b815260206004820181905260248201526000805160206125ec8339815191526044820152606401610807565b61093f60098383612041565b6000610d6482611a49565b5192915050565b60098054610d7890612513565b80601f0160208091040260200160405190810160405280929190818152602001828054610da490612513565b8015610df15780601f10610dc657610100808354040283529160200191610df1565b820191906000526020600020905b815481529060010190602001808311610dd457829003601f168201915b505050505081565b60006001600160a01b038216610e655760405162461bcd60e51b815260206004820152602b60248201527f455243373231413a2062616c616e636520717565727920666f7220746865207a60448201526a65726f206164647265737360a81b6064820152608401610807565b506001600160a01b03166000908152600460205260409020546001600160801b031690565b6007546001600160a01b03163314610ed25760405162461bcd60e51b815260206004820181905260248201526000805160206125ec8339815191526044820152606401610807565b610edc6000611b20565b565b6007546001600160a01b03163314610f265760405162461bcd60e51b815260206004820181905260248201526000805160206125ec8339815191526044820152606401610807565b600f805460ff19811660ff90911615179055565b6007546001600160a01b03163314610f825760405162461bcd60e51b815260206004820181905260248201526000805160206125ec8339815191526044820152606401610807565b600b55565b604080518082019091526000808252602082015261070482611a49565b60606002805461071990612513565b6001600160a01b03821633141561100c5760405162461bcd60e51b815260206004820152601a60248201527f455243373231413a20617070726f766520746f2063616c6c65720000000000006044820152606401610807565b3360008181526006602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b600f5460ff166110d65760405162461bcd60e51b815260206004820152602360248201527f4d696e74696e67206973206e6f7420656e61626c656420617420746869732074604482015262696d6560e81b6064820152608401610807565b600b546110e390826124b1565b34146111485760405162461bcd60e51b815260206004820152602e60248201527f506c656173652073656e642074686520657861637420616d6f756e742072657160448201526d1d5a5c995908199bdc881b5a5b9d60921b6064820152608401610807565b3332146111bd5760405162461bcd60e51b815260206004820152603e60248201527f5478206661696c65643a206d696e74696e672066726f6d2065787465726e616c60448201527f20636f6e74726163742063616c6c73206973206e6f7420616c6c6f77656400006064820152608401610807565b600a546111cb906001612485565b816111d560005490565b6111df9190612485565b1061122c5760405162461bcd60e51b815260206004820152601a60248201527f54686520636f6c6c656374696f6e20697320736f6c64206f75740000000000006044820152606401610807565b600c5461123a906001612485565b81106112885760405162461bcd60e51b815260206004820152601860248201527f4d6178206d696e742069732033207065722077616c6c657400000000000000006044820152606401610807565b600d54816112953361144e565b61129f9190612485565b11156112ed5760405162461bcd60e51b815260206004820152601860248201527f4d6178206d696e742069732033207065722077616c6c657400000000000000006044820152606401610807565b6112f73382611b72565b50565b6113058484846115b8565b61131184848484611b90565b61132d5760405162461bcd60e51b815260040161080790612428565b50505050565b6007546001600160a01b0316331461137b5760405162461bcd60e51b815260206004820181905260248201526000805160206125ec8339815191526044820152606401610807565b600c55565b606061138d826000541190565b6113f15760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b6064820152608401610807565b60006113fb611c9e565b905080516000141561141c5760405180602001604052806000815250611447565b8061142684611cad565b6040516020016114379291906123aa565b6040516020818303038152906040525b9392505050565b600061070482611dc3565b6007546001600160a01b031633146114a15760405162461bcd60e51b815260206004820181905260248201526000805160206125ec8339815191526044820152606401610807565b600d55565b6007546001600160a01b031633146114ee5760405162461bcd60e51b815260206004820181905260248201526000805160206125ec8339815191526044820152606401610807565b6001600160a01b0381166115535760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610807565b6112f781611b20565b60008281526005602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b60006115c382611a49565b80519091506000906001600160a01b0316336001600160a01b031614806115fa5750336115ef8461079c565b6001600160a01b0316145b8061160c5750815161160c9033610639565b9050806116815760405162461bcd60e51b815260206004820152603260248201527f455243373231413a207472616e736665722063616c6c6572206973206e6f742060448201527f6f776e6572206e6f7220617070726f76656400000000000000000000000000006064820152608401610807565b846001600160a01b031682600001516001600160a01b0316146116f55760405162461bcd60e51b815260206004820152602660248201527f455243373231413a207472616e736665722066726f6d20696e636f72726563746044820152651037bbb732b960d11b6064820152608401610807565b6001600160a01b0384166117595760405162461bcd60e51b815260206004820152602560248201527f455243373231413a207472616e7366657220746f20746865207a65726f206164604482015264647265737360d81b6064820152608401610807565b611769600084846000015161155c565b6001600160a01b03858116600090815260046020908152604080832080546fffffffffffffffffffffffffffffffff198082166001600160801b03928316600019018316179092558986168086528386208054938416938316600190810190931693909317909255888552600390935281842080546001600160e01b031916909117600160a01b4267ffffffffffffffff16021790559086018083529120549091166118675761181a816000541190565b15611867578251600082815260036020908152604090912080549186015167ffffffffffffffff16600160a01b026001600160e01b03199092166001600160a01b03909316929092171790555b5082846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45b5050505050565b806118fe5760405162461bcd60e51b815260206004820152601860248201527f7175616e74697479206d757374206265206e6f6e7a65726f00000000000000006044820152606401610807565b60005461194d5760405162461bcd60e51b815260206004820152601460248201527f6e6f20746f6b656e73206d696e746564207965740000000000000000000000006044820152606401610807565b600e5460005481106119a15760405162461bcd60e51b815260206004820152601c60248201527f616c6c206f776e657273686970732068617665206265656e20736574000000006044820152606401610807565b60005482820160001981019110156119bc5750600054600019015b815b818111611a3e576000818152600360205260409020546001600160a01b0316611a365760006119ec82611a49565b805160008481526003602090815260409091208054919093015167ffffffffffffffff16600160a01b026001600160e01b03199091166001600160a01b0390921691909117179055505b6001016119be565b50600101600e555050565b6040805180820190915260008082526020820152611a68826000541190565b611ac75760405162461bcd60e51b815260206004820152602a60248201527f455243373231413a206f776e657220717565727920666f72206e6f6e657869736044820152693a32b73a103a37b5b2b760b11b6064820152608401610807565b815b6000818152600360209081526040918290208251808401909352546001600160a01b038116808452600160a01b90910467ffffffffffffffff169183019190915215611b16579392505050565b5060001901611ac9565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b611b8c828260405180602001604052806000815250611e6d565b5050565b60006001600160a01b0384163b15611c9257604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290611bd49033908990889088906004016123d9565b602060405180830381600087803b158015611bee57600080fd5b505af1925050508015611c1e575060408051601f3d908101601f19168201909252611c1b918101906122d6565b60015b611c78573d808015611c4c576040519150601f19603f3d011682016040523d82523d6000602084013e611c51565b606091505b508051611c705760405162461bcd60e51b815260040161080790612428565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611c96565b5060015b949350505050565b60606009805461071990612513565b606081611cd15750506040805180820190915260018152600360fc1b602082015290565b8160005b8115611cfb5780611ce58161254e565b9150611cf49050600a8361249d565b9150611cd5565b60008167ffffffffffffffff811115611d1657611d166125bf565b6040519080825280601f01601f191660200182016040528015611d40576020820181803683370190505b5090505b8415611c9657611d556001836124d0565b9150611d62600a86612569565b611d6d906030612485565b60f81b818381518110611d8257611d826125a9565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350611dbc600a8661249d565b9450611d44565b60006001600160a01b038216611e415760405162461bcd60e51b815260206004820152603160248201527f455243373231413a206e756d626572206d696e74656420717565727920666f7260448201527f20746865207a65726f20616464726573730000000000000000000000000000006064820152608401610807565b506001600160a01b0316600090815260046020526040902054600160801b90046001600160801b031690565b61093f83838360016000546001600160a01b038516611ed85760405162461bcd60e51b815260206004820152602160248201527f455243373231413a206d696e7420746f20746865207a65726f206164647265736044820152607360f81b6064820152608401610807565b83611f365760405162461bcd60e51b815260206004820152602860248201527f455243373231413a207175616e74697479206d75737420626520677265617465604482015267072207468616e20360c41b6064820152608401610807565b6001600160a01b03851660008181526004602090815260408083208054600160801b6fffffffffffffffffffffffffffffffff1982166001600160801b039283168c01831690811782900483168c01909216021790558483526003909152812080546001600160e01b031916909217600160a01b4267ffffffffffffffff16021790915581905b858110156120385760405182906001600160a01b038916906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a4831561202c576120106000888488611b90565b61202c5760405162461bcd60e51b815260040161080790612428565b60019182019101611fbd565b506000556118aa565b82805461204d90612513565b90600052602060002090601f01602090048101928261206f57600085556120b5565b82601f106120885782800160ff198235161785556120b5565b828001600101855582156120b5579182015b828111156120b557823582559160200191906001019061209a565b50610d019291505b80821115610d0157600081556001016120bd565b80356001600160a01b03811681146120e857600080fd5b919050565b6000602082840312156120ff57600080fd5b611447826120d1565b6000806040838503121561211b57600080fd5b612124836120d1565b9150612132602084016120d1565b90509250929050565b60008060006060848603121561215057600080fd5b612159846120d1565b9250612167602085016120d1565b9150604084013590509250925092565b6000806000806080858703121561218d57600080fd5b612196856120d1565b93506121a4602086016120d1565b925060408501359150606085013567ffffffffffffffff808211156121c857600080fd5b818701915087601f8301126121dc57600080fd5b8135818111156121ee576121ee6125bf565b604051601f8201601f19908116603f01168101908382118183101715612216576122166125bf565b816040528281528a602084870101111561222f57600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b6000806040838503121561226657600080fd5b61226f836120d1565b91506020830135801515811461228457600080fd5b809150509250929050565b600080604083850312156122a257600080fd5b6122ab836120d1565b946020939093013593505050565b6000602082840312156122cb57600080fd5b8135611447816125d5565b6000602082840312156122e857600080fd5b8151611447816125d5565b6000806020838503121561230657600080fd5b823567ffffffffffffffff8082111561231e57600080fd5b818501915085601f83011261233257600080fd5b81358181111561234157600080fd5b86602082850101111561235357600080fd5b60209290920196919550909350505050565b60006020828403121561237757600080fd5b5035919050565b600081518084526123968160208601602086016124e7565b601f01601f19169290920160200192915050565b600083516123bc8184602088016124e7565b8351908301906123d08183602088016124e7565b01949350505050565b60006001600160a01b0380871683528086166020840152508360408301526080606083015261240b608083018461237e565b9695505050505050565b602081526000611447602083018461237e565b60208082526033908201527f455243373231413a207472616e7366657220746f206e6f6e204552433732315260408201527f6563656976657220696d706c656d656e74657200000000000000000000000000606082015260800190565b600082198211156124985761249861257d565b500190565b6000826124ac576124ac612593565b500490565b60008160001904831182151516156124cb576124cb61257d565b500290565b6000828210156124e2576124e261257d565b500390565b60005b838110156125025781810151838201526020016124ea565b8381111561132d5750506000910152565b600181811c9082168061252757607f821691505b6020821081141561254857634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156125625761256261257d565b5060010190565b60008261257857612578612593565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160e01b0319811681146112f757600080fdfe4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572a2646970667358221220e510fb10c744f90b32e53008bce48438f1c7038aeebbf7023f12d8abd39b65a164736f6c63430008070033
Deployed Bytecode
0x60806040526004361061020f5760003560e01c80637d55094d11610118578063beb9716d116100a0578063dc33e6811161006f578063dc33e681146105de578063e268e4d3146105fe578063e985e9c51461061e578063f2fde38b14610667578063f968adbe1461068757600080fd5b8063beb9716d1461056e578063c6f6f21614610588578063c87b56dd146105a8578063d7224ba0146105c857600080fd5b806395d89b41116100e757806395d89b41146104f0578063a035b1fe14610505578063a22cb4651461051b578063aced368a1461053b578063b88d4fde1461054e57600080fd5b80637d55094d1461044f5780638da5cb5b1461046457806391b7f5ed146104825780639231ab2a146104a257600080fd5b80633ccfd60b1161019b57806355f804b31161016a57806355f804b3146103c55780636352211e146103e55780636c0360eb1461040557806370a082311461041a578063715018a61461043a57600080fd5b80633ccfd60b1461035a57806342842e0e1461036f578063453c23101461038f5780634f6ccce7146103a557600080fd5b806318160ddd116101e257806318160ddd146102c55780632176e68c146102e457806323b872dd146102fa5780632d20fb601461031a5780632f745c591461033a57600080fd5b806301ffc9a71461021457806306fdde0314610249578063081812fc1461026b578063095ea7b3146102a3575b600080fd5b34801561022057600080fd5b5061023461022f3660046122b9565b61069d565b60405190151581526020015b60405180910390f35b34801561025557600080fd5b5061025e61070a565b6040516102409190612415565b34801561027757600080fd5b5061028b610286366004612365565b61079c565b6040516001600160a01b039091168152602001610240565b3480156102af57600080fd5b506102c36102be36600461228f565b61082c565b005b3480156102d157600080fd5b506000545b604051908152602001610240565b3480156102f057600080fd5b506102d6600a5481565b34801561030657600080fd5b506102c361031536600461213b565b610944565b34801561032657600080fd5b506102c3610335366004612365565b61094f565b34801561034657600080fd5b506102d661035536600461228f565b610a00565b34801561036657600080fd5b506102c3610b5d565b34801561037b57600080fd5b506102c361038a36600461213b565b610c88565b34801561039b57600080fd5b506102d6600d5481565b3480156103b157600080fd5b506102d66103c0366004612365565b610ca3565b3480156103d157600080fd5b506102c36103e03660046122f3565b610d05565b3480156103f157600080fd5b5061028b610400366004612365565b610d59565b34801561041157600080fd5b5061025e610d6b565b34801561042657600080fd5b506102d66104353660046120ed565b610df9565b34801561044657600080fd5b506102c3610e8a565b34801561045b57600080fd5b506102c3610ede565b34801561047057600080fd5b506007546001600160a01b031661028b565b34801561048e57600080fd5b506102c361049d366004612365565b610f3a565b3480156104ae57600080fd5b506104c26104bd366004612365565b610f87565b6040805182516001600160a01b0316815260209283015167ffffffffffffffff169281019290925201610240565b3480156104fc57600080fd5b5061025e610fa4565b34801561051157600080fd5b506102d6600b5481565b34801561052757600080fd5b506102c3610536366004612253565b610fb3565b6102c3610549366004612365565b611078565b34801561055a57600080fd5b506102c3610569366004612177565b6112fa565b34801561057a57600080fd5b50600f546102349060ff1681565b34801561059457600080fd5b506102c36105a3366004612365565b611333565b3480156105b457600080fd5b5061025e6105c3366004612365565b611380565b3480156105d457600080fd5b506102d6600e5481565b3480156105ea57600080fd5b506102d66105f93660046120ed565b61144e565b34801561060a57600080fd5b506102c3610619366004612365565b611459565b34801561062a57600080fd5b50610234610639366004612108565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205460ff1690565b34801561067357600080fd5b506102c36106823660046120ed565b6114a6565b34801561069357600080fd5b506102d6600c5481565b60006001600160e01b031982166380ac58cd60e01b14806106ce57506001600160e01b03198216635b5e139f60e01b145b806106e957506001600160e01b0319821663780e9d6360e01b145b8061070457506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606001805461071990612513565b80601f016020809104026020016040519081016040528092919081815260200182805461074590612513565b80156107925780601f1061076757610100808354040283529160200191610792565b820191906000526020600020905b81548152906001019060200180831161077557829003601f168201915b5050505050905090565b60006107a9826000541190565b6108105760405162461bcd60e51b815260206004820152602d60248201527f455243373231413a20617070726f76656420717565727920666f72206e6f6e6560448201526c3c34b9ba32b73a103a37b5b2b760991b60648201526084015b60405180910390fd5b506000908152600560205260409020546001600160a01b031690565b600061083782610d59565b9050806001600160a01b0316836001600160a01b031614156108a65760405162461bcd60e51b815260206004820152602260248201527f455243373231413a20617070726f76616c20746f2063757272656e74206f776e60448201526132b960f11b6064820152608401610807565b336001600160a01b03821614806108c257506108c28133610639565b6109345760405162461bcd60e51b815260206004820152603960248201527f455243373231413a20617070726f76652063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f76656420666f7220616c6c000000000000006064820152608401610807565b61093f83838361155c565b505050565b61093f8383836115b8565b6007546001600160a01b031633146109975760405162461bcd60e51b815260206004820181905260248201526000805160206125ec8339815191526044820152606401610807565b600260085414156109ea5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610807565b60026008556109f8816118b1565b506001600855565b6000610a0b83610df9565b8210610a645760405162461bcd60e51b815260206004820152602260248201527f455243373231413a206f776e657220696e646578206f7574206f6620626f756e604482015261647360f01b6064820152608401610807565b600080549080805b83811015610afd576000818152600360209081526040918290208251808401909352546001600160a01b038116808452600160a01b90910467ffffffffffffffff169183019190915215610abf57805192505b876001600160a01b0316836001600160a01b03161415610af45786841415610aed5750935061070492505050565b6001909301925b50600101610a6c565b5060405162461bcd60e51b815260206004820152602e60248201527f455243373231413a20756e61626c6520746f2067657420746f6b656e206f662060448201526d0deeedccae440c4f240d2dcc8caf60931b6064820152608401610807565b6007546001600160a01b03163314610ba55760405162461bcd60e51b815260206004820181905260248201526000805160206125ec8339815191526044820152606401610807565b60026008541415610bf85760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610807565b6002600855604051600090339047908381818185875af1925050503d8060008114610c3f576040519150601f19603f3d011682016040523d82523d6000602084013e610c44565b606091505b50509050806109f85760405162461bcd60e51b815260206004820152601060248201526f2a3930b739b332b9103330b4b632b21760811b6044820152606401610807565b61093f838383604051806020016040528060008152506112fa565b600080548210610d015760405162461bcd60e51b815260206004820152602360248201527f455243373231413a20676c6f62616c20696e646578206f7574206f6620626f756044820152626e647360e81b6064820152608401610807565b5090565b6007546001600160a01b03163314610d4d5760405162461bcd60e51b815260206004820181905260248201526000805160206125ec8339815191526044820152606401610807565b61093f60098383612041565b6000610d6482611a49565b5192915050565b60098054610d7890612513565b80601f0160208091040260200160405190810160405280929190818152602001828054610da490612513565b8015610df15780601f10610dc657610100808354040283529160200191610df1565b820191906000526020600020905b815481529060010190602001808311610dd457829003601f168201915b505050505081565b60006001600160a01b038216610e655760405162461bcd60e51b815260206004820152602b60248201527f455243373231413a2062616c616e636520717565727920666f7220746865207a60448201526a65726f206164647265737360a81b6064820152608401610807565b506001600160a01b03166000908152600460205260409020546001600160801b031690565b6007546001600160a01b03163314610ed25760405162461bcd60e51b815260206004820181905260248201526000805160206125ec8339815191526044820152606401610807565b610edc6000611b20565b565b6007546001600160a01b03163314610f265760405162461bcd60e51b815260206004820181905260248201526000805160206125ec8339815191526044820152606401610807565b600f805460ff19811660ff90911615179055565b6007546001600160a01b03163314610f825760405162461bcd60e51b815260206004820181905260248201526000805160206125ec8339815191526044820152606401610807565b600b55565b604080518082019091526000808252602082015261070482611a49565b60606002805461071990612513565b6001600160a01b03821633141561100c5760405162461bcd60e51b815260206004820152601a60248201527f455243373231413a20617070726f766520746f2063616c6c65720000000000006044820152606401610807565b3360008181526006602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b600f5460ff166110d65760405162461bcd60e51b815260206004820152602360248201527f4d696e74696e67206973206e6f7420656e61626c656420617420746869732074604482015262696d6560e81b6064820152608401610807565b600b546110e390826124b1565b34146111485760405162461bcd60e51b815260206004820152602e60248201527f506c656173652073656e642074686520657861637420616d6f756e742072657160448201526d1d5a5c995908199bdc881b5a5b9d60921b6064820152608401610807565b3332146111bd5760405162461bcd60e51b815260206004820152603e60248201527f5478206661696c65643a206d696e74696e672066726f6d2065787465726e616c60448201527f20636f6e74726163742063616c6c73206973206e6f7420616c6c6f77656400006064820152608401610807565b600a546111cb906001612485565b816111d560005490565b6111df9190612485565b1061122c5760405162461bcd60e51b815260206004820152601a60248201527f54686520636f6c6c656374696f6e20697320736f6c64206f75740000000000006044820152606401610807565b600c5461123a906001612485565b81106112885760405162461bcd60e51b815260206004820152601860248201527f4d6178206d696e742069732033207065722077616c6c657400000000000000006044820152606401610807565b600d54816112953361144e565b61129f9190612485565b11156112ed5760405162461bcd60e51b815260206004820152601860248201527f4d6178206d696e742069732033207065722077616c6c657400000000000000006044820152606401610807565b6112f73382611b72565b50565b6113058484846115b8565b61131184848484611b90565b61132d5760405162461bcd60e51b815260040161080790612428565b50505050565b6007546001600160a01b0316331461137b5760405162461bcd60e51b815260206004820181905260248201526000805160206125ec8339815191526044820152606401610807565b600c55565b606061138d826000541190565b6113f15760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b6064820152608401610807565b60006113fb611c9e565b905080516000141561141c5760405180602001604052806000815250611447565b8061142684611cad565b6040516020016114379291906123aa565b6040516020818303038152906040525b9392505050565b600061070482611dc3565b6007546001600160a01b031633146114a15760405162461bcd60e51b815260206004820181905260248201526000805160206125ec8339815191526044820152606401610807565b600d55565b6007546001600160a01b031633146114ee5760405162461bcd60e51b815260206004820181905260248201526000805160206125ec8339815191526044820152606401610807565b6001600160a01b0381166115535760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610807565b6112f781611b20565b60008281526005602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b60006115c382611a49565b80519091506000906001600160a01b0316336001600160a01b031614806115fa5750336115ef8461079c565b6001600160a01b0316145b8061160c5750815161160c9033610639565b9050806116815760405162461bcd60e51b815260206004820152603260248201527f455243373231413a207472616e736665722063616c6c6572206973206e6f742060448201527f6f776e6572206e6f7220617070726f76656400000000000000000000000000006064820152608401610807565b846001600160a01b031682600001516001600160a01b0316146116f55760405162461bcd60e51b815260206004820152602660248201527f455243373231413a207472616e736665722066726f6d20696e636f72726563746044820152651037bbb732b960d11b6064820152608401610807565b6001600160a01b0384166117595760405162461bcd60e51b815260206004820152602560248201527f455243373231413a207472616e7366657220746f20746865207a65726f206164604482015264647265737360d81b6064820152608401610807565b611769600084846000015161155c565b6001600160a01b03858116600090815260046020908152604080832080546fffffffffffffffffffffffffffffffff198082166001600160801b03928316600019018316179092558986168086528386208054938416938316600190810190931693909317909255888552600390935281842080546001600160e01b031916909117600160a01b4267ffffffffffffffff16021790559086018083529120549091166118675761181a816000541190565b15611867578251600082815260036020908152604090912080549186015167ffffffffffffffff16600160a01b026001600160e01b03199092166001600160a01b03909316929092171790555b5082846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45b5050505050565b806118fe5760405162461bcd60e51b815260206004820152601860248201527f7175616e74697479206d757374206265206e6f6e7a65726f00000000000000006044820152606401610807565b60005461194d5760405162461bcd60e51b815260206004820152601460248201527f6e6f20746f6b656e73206d696e746564207965740000000000000000000000006044820152606401610807565b600e5460005481106119a15760405162461bcd60e51b815260206004820152601c60248201527f616c6c206f776e657273686970732068617665206265656e20736574000000006044820152606401610807565b60005482820160001981019110156119bc5750600054600019015b815b818111611a3e576000818152600360205260409020546001600160a01b0316611a365760006119ec82611a49565b805160008481526003602090815260409091208054919093015167ffffffffffffffff16600160a01b026001600160e01b03199091166001600160a01b0390921691909117179055505b6001016119be565b50600101600e555050565b6040805180820190915260008082526020820152611a68826000541190565b611ac75760405162461bcd60e51b815260206004820152602a60248201527f455243373231413a206f776e657220717565727920666f72206e6f6e657869736044820152693a32b73a103a37b5b2b760b11b6064820152608401610807565b815b6000818152600360209081526040918290208251808401909352546001600160a01b038116808452600160a01b90910467ffffffffffffffff169183019190915215611b16579392505050565b5060001901611ac9565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b611b8c828260405180602001604052806000815250611e6d565b5050565b60006001600160a01b0384163b15611c9257604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290611bd49033908990889088906004016123d9565b602060405180830381600087803b158015611bee57600080fd5b505af1925050508015611c1e575060408051601f3d908101601f19168201909252611c1b918101906122d6565b60015b611c78573d808015611c4c576040519150601f19603f3d011682016040523d82523d6000602084013e611c51565b606091505b508051611c705760405162461bcd60e51b815260040161080790612428565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611c96565b5060015b949350505050565b60606009805461071990612513565b606081611cd15750506040805180820190915260018152600360fc1b602082015290565b8160005b8115611cfb5780611ce58161254e565b9150611cf49050600a8361249d565b9150611cd5565b60008167ffffffffffffffff811115611d1657611d166125bf565b6040519080825280601f01601f191660200182016040528015611d40576020820181803683370190505b5090505b8415611c9657611d556001836124d0565b9150611d62600a86612569565b611d6d906030612485565b60f81b818381518110611d8257611d826125a9565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350611dbc600a8661249d565b9450611d44565b60006001600160a01b038216611e415760405162461bcd60e51b815260206004820152603160248201527f455243373231413a206e756d626572206d696e74656420717565727920666f7260448201527f20746865207a65726f20616464726573730000000000000000000000000000006064820152608401610807565b506001600160a01b0316600090815260046020526040902054600160801b90046001600160801b031690565b61093f83838360016000546001600160a01b038516611ed85760405162461bcd60e51b815260206004820152602160248201527f455243373231413a206d696e7420746f20746865207a65726f206164647265736044820152607360f81b6064820152608401610807565b83611f365760405162461bcd60e51b815260206004820152602860248201527f455243373231413a207175616e74697479206d75737420626520677265617465604482015267072207468616e20360c41b6064820152608401610807565b6001600160a01b03851660008181526004602090815260408083208054600160801b6fffffffffffffffffffffffffffffffff1982166001600160801b039283168c01831690811782900483168c01909216021790558483526003909152812080546001600160e01b031916909217600160a01b4267ffffffffffffffff16021790915581905b858110156120385760405182906001600160a01b038916906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a4831561202c576120106000888488611b90565b61202c5760405162461bcd60e51b815260040161080790612428565b60019182019101611fbd565b506000556118aa565b82805461204d90612513565b90600052602060002090601f01602090048101928261206f57600085556120b5565b82601f106120885782800160ff198235161785556120b5565b828001600101855582156120b5579182015b828111156120b557823582559160200191906001019061209a565b50610d019291505b80821115610d0157600081556001016120bd565b80356001600160a01b03811681146120e857600080fd5b919050565b6000602082840312156120ff57600080fd5b611447826120d1565b6000806040838503121561211b57600080fd5b612124836120d1565b9150612132602084016120d1565b90509250929050565b60008060006060848603121561215057600080fd5b612159846120d1565b9250612167602085016120d1565b9150604084013590509250925092565b6000806000806080858703121561218d57600080fd5b612196856120d1565b93506121a4602086016120d1565b925060408501359150606085013567ffffffffffffffff808211156121c857600080fd5b818701915087601f8301126121dc57600080fd5b8135818111156121ee576121ee6125bf565b604051601f8201601f19908116603f01168101908382118183101715612216576122166125bf565b816040528281528a602084870101111561222f57600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b6000806040838503121561226657600080fd5b61226f836120d1565b91506020830135801515811461228457600080fd5b809150509250929050565b600080604083850312156122a257600080fd5b6122ab836120d1565b946020939093013593505050565b6000602082840312156122cb57600080fd5b8135611447816125d5565b6000602082840312156122e857600080fd5b8151611447816125d5565b6000806020838503121561230657600080fd5b823567ffffffffffffffff8082111561231e57600080fd5b818501915085601f83011261233257600080fd5b81358181111561234157600080fd5b86602082850101111561235357600080fd5b60209290920196919550909350505050565b60006020828403121561237757600080fd5b5035919050565b600081518084526123968160208601602086016124e7565b601f01601f19169290920160200192915050565b600083516123bc8184602088016124e7565b8351908301906123d08183602088016124e7565b01949350505050565b60006001600160a01b0380871683528086166020840152508360408301526080606083015261240b608083018461237e565b9695505050505050565b602081526000611447602083018461237e565b60208082526033908201527f455243373231413a207472616e7366657220746f206e6f6e204552433732315260408201527f6563656976657220696d706c656d656e74657200000000000000000000000000606082015260800190565b600082198211156124985761249861257d565b500190565b6000826124ac576124ac612593565b500490565b60008160001904831182151516156124cb576124cb61257d565b500290565b6000828210156124e2576124e261257d565b500390565b60005b838110156125025781810151838201526020016124ea565b8381111561132d5750506000910152565b600181811c9082168061252757607f821691505b6020821081141561254857634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156125625761256261257d565b5060010190565b60008261257857612578612593565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160e01b0319811681146112f757600080fdfe4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572a2646970667358221220e510fb10c744f90b32e53008bce48438f1c7038aeebbf7023f12d8abd39b65a164736f6c63430008070033
Deployed Bytecode Sourcemap
22773:3181:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14215:372;;;;;;;;;;-1:-1:-1;14215:372:0;;;;;:::i;:::-;;:::i;:::-;;;5903:14:1;;5896:22;5878:41;;5866:2;5851:18;14215:372:0;;;;;;;;15738:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;16824:214::-;;;;;;;;;;-1:-1:-1;16824:214:0;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;5155:55:1;;;5137:74;;5125:2;5110:18;16824:214:0;4991:226:1;16403:413:0;;;;;;;;;;-1:-1:-1;16403:413:0;;;;;:::i;:::-;;:::i;:::-;;13018:100;;;;;;;;;;-1:-1:-1;13071:7:0;13098:12;13018:100;;;18536:25:1;;;18524:2;18509:18;13018:100:0;18390:177:1;22867:38:0;;;;;;;;;;;;;;;;17514:170;;;;;;;;;;-1:-1:-1;17514:170:0;;;;;:::i;:::-;;:::i;24149:118::-;;;;;;;;;;-1:-1:-1;24149:118:0;;;;;:::i;:::-;;:::i;13321:886::-;;;;;;;;;;-1:-1:-1;13321:886:0;;;;;:::i;:::-;;:::i;24358:176::-;;;;;;;;;;;;;:::i;17692:185::-;;;;;;;;;;-1:-1:-1;17692:185:0;;;;;:::i;:::-;;:::i;23014:42::-;;;;;;;;;;;;;;;;13126:187;;;;;;;;;;-1:-1:-1;13126:187:0;;;;;:::i;:::-;;:::i;24047:96::-;;;;;;;;;;-1:-1:-1;24047:96:0;;;;;:::i;:::-;;:::i;15606:124::-;;;;;;;;;;-1:-1:-1;15606:124:0;;;;;:::i;:::-;;:::i;22834:28::-;;;;;;;;;;;;;:::i;14595:221::-;;;;;;;;;;-1:-1:-1;14595:221:0;;;;;:::i;:::-;;:::i;3584:103::-;;;;;;;;;;;;;:::i;24275:77::-;;;;;;;;;;;;;:::i;3361:87::-;;;;;;;;;;-1:-1:-1;3434:6:0;;-1:-1:-1;;;;;3434:6:0;3361:87;;24678:82;;;;;;;;;;-1:-1:-1;24678:82:0;;;;;:::i;:::-;;:::i;24540:132::-;;;;;;;;;;-1:-1:-1;24540:132:0;;;;;:::i;:::-;;:::i;:::-;;;;18232:13:1;;-1:-1:-1;;;;;18228:62:1;18210:81;;18351:4;18339:17;;;18333:24;18359:18;18329:49;18307:20;;;18300:79;;;;18183:18;24540:132:0;18000:385:1;15846:104:0;;;;;;;;;;;;;:::i;22910:52::-;;;;;;;;;;;;;;;;17046:288;;;;;;;;;;-1:-1:-1;17046:288:0;;;;;:::i;:::-;;:::i;23205:615::-;;;;;;:::i;:::-;;:::i;17885:355::-;;;;;;;;;;-1:-1:-1;17885:355:0;;;;;:::i;:::-;;:::i;23111:28::-;;;;;;;;;;-1:-1:-1;23111:28:0;;;;;;;;24766:94;;;;;;;;;;-1:-1:-1;24766:94:0;;;;;:::i;:::-;;:::i;15958:335::-;;;;;;;;;;-1:-1:-1;15958:335:0;;;;;:::i;:::-;;:::i;23061:45::-;;;;;;;;;;;;;;;;23826:107;;;;;;;;;;-1:-1:-1;23826:107:0;;;;;:::i;:::-;;:::i;24866:110::-;;;;;;;;;;-1:-1:-1;24866:110:0;;;;;:::i;:::-;;:::i;17342:164::-;;;;;;;;;;-1:-1:-1;17342:164:0;;;;;:::i;:::-;-1:-1:-1;;;;;17463:25:0;;;17439:4;17463:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;;;17342:164;3695:201;;;;;;;;;;-1:-1:-1;3695:201:0;;;;;:::i;:::-;;:::i;22967:42::-;;;;;;;;;;;;;;;;14215:372;14317:4;-1:-1:-1;;;;;;14354:40:0;;-1:-1:-1;;;14354:40:0;;:105;;-1:-1:-1;;;;;;;14411:48:0;;-1:-1:-1;;;14411:48:0;14354:105;:172;;;-1:-1:-1;;;;;;;14476:50:0;;-1:-1:-1;;;14476:50:0;14354:172;:225;;;-1:-1:-1;;;;;;;;;;10292:40:0;;;14543:36;14334:245;14215:372;-1:-1:-1;;14215:372:0:o;15738:100::-;15792:13;15825:5;15818:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15738:100;:::o;16824:214::-;16892:7;16920:16;16928:7;18305:4;18339:12;-1:-1:-1;18329:22:0;18248:111;16920:16;16912:74;;;;-1:-1:-1;;;16912:74:0;;17373:2:1;16912:74:0;;;17355:21:1;17412:2;17392:18;;;17385:30;17451:34;17431:18;;;17424:62;-1:-1:-1;;;17502:18:1;;;17495:43;17555:19;;16912:74:0;;;;;;;;;-1:-1:-1;17006:24:0;;;;:15;:24;;;;;;-1:-1:-1;;;;;17006:24:0;;16824:214::o;16403:413::-;16476:13;16492:24;16508:7;16492:15;:24::i;:::-;16476:40;;16541:5;-1:-1:-1;;;;;16535:11:0;:2;-1:-1:-1;;;;;16535:11:0;;;16527:58;;;;-1:-1:-1;;;16527:58:0;;14203:2:1;16527:58:0;;;14185:21:1;14242:2;14222:18;;;14215:30;14281:34;14261:18;;;14254:62;-1:-1:-1;;;14332:18:1;;;14325:32;14374:19;;16527:58:0;14001:398:1;16527:58:0;2956:10;-1:-1:-1;;;;;16620:21:0;;;;:62;;-1:-1:-1;16645:37:0;16662:5;2956:10;17342:164;:::i;16645:37::-;16598:169;;;;-1:-1:-1;;;16598:169:0;;9864:2:1;16598:169:0;;;9846:21:1;9903:2;9883:18;;;9876:30;9942:34;9922:18;;;9915:62;10013:27;9993:18;;;9986:55;10058:19;;16598:169:0;9662:421:1;16598:169:0;16780:28;16789:2;16793:7;16802:5;16780:8;:28::i;:::-;16465:351;16403:413;;:::o;17514:170::-;17648:28;17658:4;17664:2;17668:7;17648:9;:28::i;24149:118::-;3434:6;;-1:-1:-1;;;;;3434:6:0;2956:10;3496:23;3488:68;;;;-1:-1:-1;;;3488:68:0;;12297:2:1;3488:68:0;;;12279:21:1;;;12316:18;;;12309:30;-1:-1:-1;;;;;;;;;;;12355:18:1;;;12348:62;12427:18;;3488:68:0;12095:356:1;3488:68:0;1045:1:::1;1193:7;;:19;;1185:63;;;::::0;-1:-1:-1;;;1185:63:0;;16597:2:1;1185:63:0::1;::::0;::::1;16579:21:1::0;16636:2;16616:18;;;16609:30;16675:33;16655:18;;;16648:61;16726:18;;1185:63:0::1;16395:355:1::0;1185:63:0::1;1045:1;1261:7;:18:::0;24233:28:::2;24252:8:::0;24233:18:::2;:28::i;:::-;-1:-1:-1::0;1001:1:0::1;1306:7;:22:::0;24149:118::o;13321:886::-;13410:7;13446:16;13456:5;13446:9;:16::i;:::-;13438:5;:24;13430:71;;;;-1:-1:-1;;;13430:71:0;;6356:2:1;13430:71:0;;;6338:21:1;6395:2;6375:18;;;6368:30;6434:34;6414:18;;;6407:62;-1:-1:-1;;;6485:18:1;;;6478:32;6527:19;;13430:71:0;6154:398:1;13430:71:0;13512:22;13098:12;;;13512:22;;13654:466;13674:14;13670:1;:18;13654:466;;;13714:31;13748:14;;;:11;:14;;;;;;;;;13714:48;;;;;;;;;-1:-1:-1;;;;;13714:48:0;;;;;-1:-1:-1;;;13714:48:0;;;;;;;;;;;;13785:28;13781:111;;13858:14;;;-1:-1:-1;13781:111:0;13935:5;-1:-1:-1;;;;;13914:26:0;:17;-1:-1:-1;;;;;13914:26:0;;13910:195;;;13984:5;13969:11;:20;13965:85;;;-1:-1:-1;14025:1:0;-1:-1:-1;14018:8:0;;-1:-1:-1;;;14018:8:0;13965:85;14072:13;;;;;13910:195;-1:-1:-1;13690:3:0;;13654:466;;;-1:-1:-1;14143:56:0;;-1:-1:-1;;;14143:56:0;;16182:2:1;14143:56:0;;;16164:21:1;16221:2;16201:18;;;16194:30;16260:34;16240:18;;;16233:62;-1:-1:-1;;;16311:18:1;;;16304:44;16365:19;;14143:56:0;15980:410:1;24358:176:0;3434:6;;-1:-1:-1;;;;;3434:6:0;2956:10;3496:23;3488:68;;;;-1:-1:-1;;;3488:68:0;;12297:2:1;3488:68:0;;;12279:21:1;;;12316:18;;;12309:30;-1:-1:-1;;;;;;;;;;;12355:18:1;;;12348:62;12427:18;;3488:68:0;12095:356:1;3488:68:0;1045:1:::1;1193:7;;:19;;1185:63;;;::::0;-1:-1:-1;;;1185:63:0;;16597:2:1;1185:63:0::1;::::0;::::1;16579:21:1::0;16636:2;16616:18;;;16609:30;16675:33;16655:18;;;16648:61;16726:18;;1185:63:0::1;16395:355:1::0;1185:63:0::1;1045:1;1261:7;:18:::0;24436:49:::2;::::0;24418:12:::2;::::0;24436:10:::2;::::0;24459:21:::2;::::0;24418:12;24436:49;24418:12;24436:49;24459:21;24436:10;:49:::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24417:68;;;24500:7;24492:36;;;::::0;-1:-1:-1;;;24492:36:0;;14606:2:1;24492:36:0::2;::::0;::::2;14588:21:1::0;14645:2;14625:18;;;14618:30;-1:-1:-1;;;14664:18:1;;;14657:46;14720:18;;24492:36:0::2;14404:340:1::0;17692:185:0;17830:39;17847:4;17853:2;17857:7;17830:39;;;;;;;;;;;;:16;:39::i;13126:187::-;13193:7;13098:12;;13221:5;:21;13213:69;;;;-1:-1:-1;;;13213:69:0;;7926:2:1;13213:69:0;;;7908:21:1;7965:2;7945:18;;;7938:30;8004:34;7984:18;;;7977:62;-1:-1:-1;;;8055:18:1;;;8048:33;8098:19;;13213:69:0;7724:399:1;13213:69:0;-1:-1:-1;13300:5:0;13126:187::o;24047:96::-;3434:6;;-1:-1:-1;;;;;3434:6:0;2956:10;3496:23;3488:68;;;;-1:-1:-1;;;3488:68:0;;12297:2:1;3488:68:0;;;12279:21:1;;;12316:18;;;12309:30;-1:-1:-1;;;;;;;;;;;12355:18:1;;;12348:62;12427:18;;3488:68:0;12095:356:1;3488:68:0;24119:18:::1;:7;24129:8:::0;;24119:18:::1;:::i;15606:124::-:0;15670:7;15697:20;15709:7;15697:11;:20::i;:::-;:25;;15606:124;-1:-1:-1;;15606:124:0:o;22834:28::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;14595:221::-;14659:7;-1:-1:-1;;;;;14687:19:0;;14679:75;;;;-1:-1:-1;;;14679:75:0;;11074:2:1;14679:75:0;;;11056:21:1;11113:2;11093:18;;;11086:30;11152:34;11132:18;;;11125:62;-1:-1:-1;;;11203:18:1;;;11196:41;11254:19;;14679:75:0;10872:407:1;14679:75:0;-1:-1:-1;;;;;;14780:19:0;;;;;:12;:19;;;;;:27;-1:-1:-1;;;;;14780:27:0;;14595:221::o;3584:103::-;3434:6;;-1:-1:-1;;;;;3434:6:0;2956:10;3496:23;3488:68;;;;-1:-1:-1;;;3488:68:0;;12297:2:1;3488:68:0;;;12279:21:1;;;12316:18;;;12309:30;-1:-1:-1;;;;;;;;;;;12355:18:1;;;12348:62;12427:18;;3488:68:0;12095:356:1;3488:68:0;3649:30:::1;3676:1;3649:18;:30::i;:::-;3584:103::o:0;24275:77::-;3434:6;;-1:-1:-1;;;;;3434:6:0;2956:10;3496:23;3488:68;;;;-1:-1:-1;;;3488:68:0;;12297:2:1;3488:68:0;;;12279:21:1;;;12316:18;;;12309:30;-1:-1:-1;;;;;;;;;;;12355:18:1;;;12348:62;12427:18;;3488:68:0;12095:356:1;3488:68:0;24339:7:::1;::::0;;-1:-1:-1;;24328:18:0;::::1;24339:7;::::0;;::::1;24338:8;24328:18;::::0;;24275:77::o;24678:82::-;3434:6;;-1:-1:-1;;;;;3434:6:0;2956:10;3496:23;3488:68;;;;-1:-1:-1;;;3488:68:0;;12297:2:1;3488:68:0;;;12279:21:1;;;12316:18;;;12309:30;-1:-1:-1;;;;;;;;;;;12355:18:1;;;12348:62;12427:18;;3488:68:0;12095:356:1;3488:68:0;24740:5:::1;:14:::0;24678:82::o;24540:132::-;-1:-1:-1;;;;;;;;;;;;;;;;;24646:20:0;24658:7;24646:11;:20::i;15846:104::-;15902:13;15935:7;15928:14;;;;;:::i;17046:288::-;-1:-1:-1;;;;;17141:24:0;;2956:10;17141:24;;17133:63;;;;-1:-1:-1;;;17133:63:0;;13429:2:1;17133:63:0;;;13411:21:1;13468:2;13448:18;;;13441:30;13507:28;13487:18;;;13480:56;13553:18;;17133:63:0;13227:350:1;17133:63:0;2956:10;17209:32;;;;:18;:32;;;;;;;;-1:-1:-1;;;;;17209:42:0;;;;;;;;;;;;:53;;-1:-1:-1;;17209:53:0;;;;;;;;;;17278:48;;5878:41:1;;;17209:42:0;;2956:10;17278:48;;5851:18:1;17278:48:0;;;;;;;17046:288;;:::o;23205:615::-;23279:7;;;;23271:55;;;;-1:-1:-1;;;23271:55:0;;11893:2:1;23271:55:0;;;11875:21:1;11932:2;11912:18;;;11905:30;11971:34;11951:18;;;11944:62;-1:-1:-1;;;12022:18:1;;;12015:33;12065:19;;23271:55:0;11691:399:1;23271:55:0;23365:5;;23354:16;;:8;:16;:::i;:::-;23341:9;:29;23333:87;;;;-1:-1:-1;;;23333:87:0;;17787:2:1;23333:87:0;;;17769:21:1;17826:2;17806:18;;;17799:30;17865:34;17845:18;;;17838:62;-1:-1:-1;;;17916:18:1;;;17909:44;17970:19;;23333:87:0;17585:410:1;23333:87:0;23435:10;23449:9;23435:23;23427:97;;;;-1:-1:-1;;;23427:97:0;;10643:2:1;23427:97:0;;;10625:21:1;10682:2;10662:18;;;10655:30;10721:34;10701:18;;;10694:62;10792:32;10772:18;;;10765:60;10842:19;;23427:97:0;10441:426:1;23427:97:0;23567:11;;:15;;23581:1;23567:15;:::i;:::-;23556:8;23540:13;13071:7;13098:12;;13018:100;23540:13;:24;;;;:::i;:::-;:42;23531:81;;;;-1:-1:-1;;;23531:81:0;;12658:2:1;23531:81:0;;;12640:21:1;12697:2;12677:18;;;12670:30;12736:28;12716:18;;;12709:56;12782:18;;23531:81:0;12456:350:1;23531:81:0;23639:8;;:12;;23650:1;23639:12;:::i;:::-;23628:8;:23;23619:61;;;;-1:-1:-1;;;23619:61:0;;8736:2:1;23619:61:0;;;8718:21:1;8775:2;8755:18;;;8748:30;8814:26;8794:18;;;8787:54;8858:18;;23619:61:0;8534:348:1;23619:61:0;23734:12;;23722:8;23695:24;23708:10;23695:12;:24::i;:::-;:35;;;;:::i;:::-;:51;;23687:87;;;;-1:-1:-1;;;23687:87:0;;8736:2:1;23687:87:0;;;8718:21:1;8775:2;8755:18;;;8748:30;8814:26;8794:18;;;8787:54;8858:18;;23687:87:0;8534:348:1;23687:87:0;23783:31;23793:10;23805:8;23783:9;:31::i;:::-;23205:615;:::o;17885:355::-;18044:28;18054:4;18060:2;18064:7;18044:9;:28::i;:::-;18105:48;18128:4;18134:2;18138:7;18147:5;18105:22;:48::i;:::-;18083:149;;;;-1:-1:-1;;;18083:149:0;;;;;;;:::i;:::-;17885:355;;;;:::o;24766:94::-;3434:6;;-1:-1:-1;;;;;3434:6:0;2956:10;3496:23;3488:68;;;;-1:-1:-1;;;3488:68:0;;12297:2:1;3488:68:0;;;12279:21:1;;;12316:18;;;12309:30;-1:-1:-1;;;;;;;;;;;12355:18:1;;;12348:62;12427:18;;3488:68:0;12095:356:1;3488:68:0;24834:8:::1;:20:::0;24766:94::o;15958:335::-;16031:13;16065:16;16073:7;18305:4;18339:12;-1:-1:-1;18329:22:0;18248:111;16065:16;16057:76;;;;-1:-1:-1;;;16057:76:0;;13013:2:1;16057:76:0;;;12995:21:1;13052:2;13032:18;;;13025:30;13091:34;13071:18;;;13064:62;-1:-1:-1;;;13142:18:1;;;13135:45;13197:19;;16057:76:0;12811:411:1;16057:76:0;16146:21;16170:10;:8;:10::i;:::-;16146:34;;16204:7;16198:21;16223:1;16198:26;;:87;;;;;;;;;;;;;;;;;16251:7;16260:18;:7;:16;:18::i;:::-;16234:45;;;;;;;;;:::i;:::-;;;;;;;;;;;;;16198:87;16191:94;15958:335;-1:-1:-1;;;15958:335:0:o;23826:107::-;23884:7;23907:20;23921:5;23907:13;:20::i;24866:110::-;3434:6;;-1:-1:-1;;;;;3434:6:0;2956:10;3496:23;3488:68;;;;-1:-1:-1;;;3488:68:0;;12297:2:1;3488:68:0;;;12279:21:1;;;12316:18;;;12309:30;-1:-1:-1;;;;;;;;;;;12355:18:1;;;12348:62;12427:18;;3488:68:0;12095:356:1;3488:68:0;24942:12:::1;:28:::0;24866:110::o;3695:201::-;3434:6;;-1:-1:-1;;;;;3434:6:0;2956:10;3496:23;3488:68;;;;-1:-1:-1;;;3488:68:0;;12297:2:1;3488:68:0;;;12279:21:1;;;12316:18;;;12309:30;-1:-1:-1;;;;;;;;;;;12355:18:1;;;12348:62;12427:18;;3488:68:0;12095:356:1;3488:68:0;-1:-1:-1;;;;;3784:22:0;::::1;3776:73;;;::::0;-1:-1:-1;;;3776:73:0;;6759:2:1;3776:73:0::1;::::0;::::1;6741:21:1::0;6798:2;6778:18;;;6771:30;6837:34;6817:18;;;6810:62;-1:-1:-1;;;6888:18:1;;;6881:36;6934:19;;3776:73:0::1;6557:402:1::0;3776:73:0::1;3860:28;3879:8;3860:18;:28::i;21421:196::-:0;21536:24;;;;:15;:24;;;;;;:29;;-1:-1:-1;;;;;;21536:29:0;-1:-1:-1;;;;;21536:29:0;;;;;;;;;21581:28;;21536:24;;21581:28;;;;;;;21421:196;;;:::o;19956:1457::-;20071:35;20109:20;20121:7;20109:11;:20::i;:::-;20184:18;;20071:58;;-1:-1:-1;20142:22:0;;-1:-1:-1;;;;;20168:34:0;2956:10;-1:-1:-1;;;;;20168:34:0;;:87;;;-1:-1:-1;2956:10:0;20219:20;20231:7;20219:11;:20::i;:::-;-1:-1:-1;;;;;20219:36:0;;20168:87;:154;;;-1:-1:-1;20289:18:0;;20272:50;;2956:10;17342:164;:::i;20272:50::-;20142:181;;20344:17;20336:80;;;;-1:-1:-1;;;20336:80:0;;13784:2:1;20336:80:0;;;13766:21:1;13823:2;13803:18;;;13796:30;13862:34;13842:18;;;13835:62;13933:20;13913:18;;;13906:48;13971:19;;20336:80:0;13582:414:1;20336:80:0;20459:4;-1:-1:-1;;;;;20437:26:0;:13;:18;;;-1:-1:-1;;;;;20437:26:0;;20429:77;;;;-1:-1:-1;;;20429:77:0;;11486:2:1;20429:77:0;;;11468:21:1;11525:2;11505:18;;;11498:30;11564:34;11544:18;;;11537:62;-1:-1:-1;;;11615:18:1;;;11608:36;11661:19;;20429:77:0;11284:402:1;20429:77:0;-1:-1:-1;;;;;20525:16:0;;20517:66;;;;-1:-1:-1;;;20517:66:0;;8330:2:1;20517:66:0;;;8312:21:1;8369:2;8349:18;;;8342:30;8408:34;8388:18;;;8381:62;-1:-1:-1;;;8459:18:1;;;8452:35;8504:19;;20517:66:0;8128:401:1;20517:66:0;20652:49;20669:1;20673:7;20682:13;:18;;;20652:8;:49::i;:::-;-1:-1:-1;;;;;20739:18:0;;;;;;;:12;:18;;;;;;;;:31;;-1:-1:-1;;20739:31:0;;;-1:-1:-1;;;;;20739:31:0;;;-1:-1:-1;;20739:31:0;;;;;;;20785:16;;;;;;;;;:29;;;;;;;;-1:-1:-1;20785:29:0;;;;;;;;;;;;;20831:20;;;:11;:20;;;;;;:30;;-1:-1:-1;;;;;;20876:61:0;;;;-1:-1:-1;;;20921:15:0;20876:61;;;;;;20976:11;;;21006:24;;;;;:29;20976:11;;21006:29;21002:295;;21074:20;21082:11;18305:4;18339:12;-1:-1:-1;18329:22:0;18248:111;21074:20;21070:212;;;21151:18;;;21119:24;;;:11;:24;;;;;;;;:50;;21234:28;;;;21192:70;;-1:-1:-1;;;21192:70:0;-1:-1:-1;;;;;;21192:70:0;;;-1:-1:-1;;;;;21119:50:0;;;21192:70;;;;;;;21070:212;20714:594;21344:7;21340:2;-1:-1:-1;;;;;21325:27:0;21334:4;-1:-1:-1;;;;;21325:27:0;;;;;;;;;;;21363:42;20060:1353;;19956:1457;;;:::o;24984:967::-;25056:13;25048:50;;;;-1:-1:-1;;;25048:50:0;;10290:2:1;25048:50:0;;;10272:21:1;10329:2;10309:18;;;10302:30;10368:26;10348:18;;;10341:54;10412:18;;25048:50:0;10088:348:1;25048:50:0;25115:12;;25107:50;;;;-1:-1:-1;;;25107:50:0;;7577:2:1;25107:50:0;;;7559:21:1;7616:2;7596:18;;;7589:30;7655:22;7635:18;;;7628:50;7695:18;;25107:50:0;7375:344:1;25107:50:0;25202:24;;25166:33;25271:12;25243:40;;25235:81;;;;-1:-1:-1;;;25235:81:0;;9507:2:1;25235:81:0;;;9489:21:1;9546:2;9526:18;;;9519:30;9585;9565:18;;;9558:58;9633:18;;25235:81:0;9305:352:1;25235:81:0;25350:16;25443:12;25369:36;;;-1:-1:-1;;25369:40:0;;;-1:-1:-1;25424:91:0;;;-1:-1:-1;25485:12:0;;-1:-1:-1;;25485:16:0;25424:91;25546:25;25529:354;25578:8;25573:1;:13;25529:354;;25645:1;25614:14;;;:11;:14;;;;;:19;-1:-1:-1;;;;;25614:19:0;25610:260;;25670:31;25704:14;25716:1;25704:11;:14::i;:::-;25761;;;25739;;;:11;:14;;;;;;;;:36;;25828:24;;;;;25796:56;;-1:-1:-1;;;25796:56:0;-1:-1:-1;;;;;;25796:56:0;;;-1:-1:-1;;;;;25739:36:0;;;25796:56;;;;;;;-1:-1:-1;25610:260:0;25588:3;;25529:354;;;-1:-1:-1;25935:1:0;25924:12;25897:24;:39;-1:-1:-1;;24984:967:0:o;15061:537::-;-1:-1:-1;;;;;;;;;;;;;;;;;15164:16:0;15172:7;18305:4;18339:12;-1:-1:-1;18329:22:0;18248:111;15164:16;15156:71;;;;-1:-1:-1;;;15156:71:0;;7166:2:1;15156:71:0;;;7148:21:1;7205:2;7185:18;;;7178:30;7244:34;7224:18;;;7217:62;-1:-1:-1;;;7295:18:1;;;7288:40;7345:19;;15156:71:0;6964:406:1;15156:71:0;15285:7;15265:245;15332:31;15366:17;;;:11;:17;;;;;;;;;15332:51;;;;;;;;;-1:-1:-1;;;;;15332:51:0;;;;;-1:-1:-1;;;15332:51:0;;;;;;;;;;;;15406:28;15402:93;;15466:9;15061:537;-1:-1:-1;;;15061:537:0:o;15402:93::-;-1:-1:-1;;;15305:6:0;15265:245;;3904:191;3997:6;;;-1:-1:-1;;;;;4014:17:0;;;-1:-1:-1;;;;;;4014:17:0;;;;;;;4047:40;;3997:6;;;4014:17;3997:6;;4047:40;;3978:16;;4047:40;3967:128;3904:191;:::o;18367:104::-;18436:27;18446:2;18450:8;18436:27;;;;;;;;;;;;:9;:27::i;:::-;18367:104;;:::o;21625:804::-;21780:4;-1:-1:-1;;;;;21801:13:0;;4242:19;:23;21797:625;;21837:72;;-1:-1:-1;;;21837:72:0;;-1:-1:-1;;;;;21837:36:0;;;;;:72;;2956:10;;21888:4;;21894:7;;21903:5;;21837:72;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;21837:72:0;;;;;;;;-1:-1:-1;;21837:72:0;;;;;;;;;;;;:::i;:::-;;;21833:534;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;22083:13:0;;22079:273;;22126:61;;-1:-1:-1;;;22126:61:0;;;;;;;:::i;22079:273::-;22302:6;22296:13;22287:6;22283:2;22279:15;22272:38;21833:534;-1:-1:-1;;;;;;21960:55:0;-1:-1:-1;;;21960:55:0;;-1:-1:-1;21953:62:0;;21797:625;-1:-1:-1;22406:4:0;21797:625;21625:804;;;;;;:::o;23939:102::-;23999:13;24028:7;24021:14;;;;;:::i;1462:534::-;1518:13;1550:10;1546:53;;-1:-1:-1;;1577:10:0;;;;;;;;;;;;-1:-1:-1;;;1577:10:0;;;;;1462:534::o;1546:53::-;1624:5;1609:12;1665:78;1672:9;;1665:78;;1698:8;;;;:::i;:::-;;-1:-1:-1;1721:10:0;;-1:-1:-1;1729:2:0;1721:10;;:::i;:::-;;;1665:78;;;1753:19;1785:6;1775:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1775:17:0;;1753:39;;1803:154;1810:10;;1803:154;;1837:11;1847:1;1837:11;;:::i;:::-;;-1:-1:-1;1906:10:0;1914:2;1906:5;:10;:::i;:::-;1893:24;;:2;:24;:::i;:::-;1880:39;;1863:6;1870;1863:14;;;;;;;;:::i;:::-;;;;:56;;;;;;;;;;-1:-1:-1;1934:11:0;1943:2;1934:11;;:::i;:::-;;;1803:154;;14824:229;14885:7;-1:-1:-1;;;;;14913:19:0;;14905:81;;;;-1:-1:-1;;;14905:81:0;;9089:2:1;14905:81:0;;;9071:21:1;9128:2;9108:18;;;9101:30;9167:34;9147:18;;;9140:62;9238:19;9218:18;;;9211:47;9275:19;;14905:81:0;8887:413:1;14905:81:0;-1:-1:-1;;;;;;15012:19:0;;;;;:12;:19;;;;;:32;-1:-1:-1;;;15012:32:0;;-1:-1:-1;;;;;15012:32:0;;14824:229::o;18479:163::-;18602:32;18608:2;18612:8;18622:5;18629:4;18789:20;18812:12;-1:-1:-1;;;;;18843:16:0;;18835:62;;;;-1:-1:-1;;;18835:62:0;;15371:2:1;18835:62:0;;;15353:21:1;15410:2;15390:18;;;15383:30;15449:34;15429:18;;;15422:62;-1:-1:-1;;;15500:18:1;;;15493:31;15541:19;;18835:62:0;15169:397:1;18835:62:0;18916:13;18908:66;;;;-1:-1:-1;;;18908:66:0;;15773:2:1;18908:66:0;;;15755:21:1;15812:2;15792:18;;;15785:30;15851:34;15831:18;;;15824:62;-1:-1:-1;;;15902:18:1;;;15895:38;15950:19;;18908:66:0;15571:404:1;18908:66:0;-1:-1:-1;;;;;19086:16:0;;;;;;:12;:16;;;;;;;;:45;;-1:-1:-1;;;;;19086:45:0;;-1:-1:-1;;;;;19086:45:0;;;;;;;;;;19146:50;;;;;;;;;;;;;;19213:25;;;:11;:25;;;;;:35;;-1:-1:-1;;;;;;19263:66:0;;;;-1:-1:-1;;;19313:15:0;19263:66;;;;;;;19213:25;;19398:415;19418:8;19414:1;:12;19398:415;;;19457:38;;19482:12;;-1:-1:-1;;;;;19457:38:0;;;19474:1;;19457:38;;19474:1;;19457:38;19518:4;19514:249;;;19581:59;19612:1;19616:2;19620:12;19634:5;19581:22;:59::i;:::-;19547:196;;;;-1:-1:-1;;;19547:196:0;;;;;;;:::i;:::-;19783:14;;;;;19428:3;19398:415;;;-1:-1:-1;19829:12:0;:27;19880:60;17885:355;-1:-1:-1;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14:196:1;82:20;;-1:-1:-1;;;;;131:54:1;;121:65;;111:93;;200:1;197;190:12;111:93;14:196;;;:::o;215:186::-;274:6;327:2;315:9;306:7;302:23;298:32;295:52;;;343:1;340;333:12;295:52;366:29;385:9;366:29;:::i;406:260::-;474:6;482;535:2;523:9;514:7;510:23;506:32;503:52;;;551:1;548;541:12;503:52;574:29;593:9;574:29;:::i;:::-;564:39;;622:38;656:2;645:9;641:18;622:38;:::i;:::-;612:48;;406:260;;;;;:::o;671:328::-;748:6;756;764;817:2;805:9;796:7;792:23;788:32;785:52;;;833:1;830;823:12;785:52;856:29;875:9;856:29;:::i;:::-;846:39;;904:38;938:2;927:9;923:18;904:38;:::i;:::-;894:48;;989:2;978:9;974:18;961:32;951:42;;671:328;;;;;:::o;1004:1138::-;1099:6;1107;1115;1123;1176:3;1164:9;1155:7;1151:23;1147:33;1144:53;;;1193:1;1190;1183:12;1144:53;1216:29;1235:9;1216:29;:::i;:::-;1206:39;;1264:38;1298:2;1287:9;1283:18;1264:38;:::i;:::-;1254:48;;1349:2;1338:9;1334:18;1321:32;1311:42;;1404:2;1393:9;1389:18;1376:32;1427:18;1468:2;1460:6;1457:14;1454:34;;;1484:1;1481;1474:12;1454:34;1522:6;1511:9;1507:22;1497:32;;1567:7;1560:4;1556:2;1552:13;1548:27;1538:55;;1589:1;1586;1579:12;1538:55;1625:2;1612:16;1647:2;1643;1640:10;1637:36;;;1653:18;;:::i;:::-;1728:2;1722:9;1696:2;1782:13;;-1:-1:-1;;1778:22:1;;;1802:2;1774:31;1770:40;1758:53;;;1826:18;;;1846:22;;;1823:46;1820:72;;;1872:18;;:::i;:::-;1912:10;1908:2;1901:22;1947:2;1939:6;1932:18;1987:7;1982:2;1977;1973;1969:11;1965:20;1962:33;1959:53;;;2008:1;2005;1998:12;1959:53;2064:2;2059;2055;2051:11;2046:2;2038:6;2034:15;2021:46;2109:1;2104:2;2099;2091:6;2087:15;2083:24;2076:35;2130:6;2120:16;;;;;;;1004:1138;;;;;;;:::o;2147:347::-;2212:6;2220;2273:2;2261:9;2252:7;2248:23;2244:32;2241:52;;;2289:1;2286;2279:12;2241:52;2312:29;2331:9;2312:29;:::i;:::-;2302:39;;2391:2;2380:9;2376:18;2363:32;2438:5;2431:13;2424:21;2417:5;2414:32;2404:60;;2460:1;2457;2450:12;2404:60;2483:5;2473:15;;;2147:347;;;;;:::o;2499:254::-;2567:6;2575;2628:2;2616:9;2607:7;2603:23;2599:32;2596:52;;;2644:1;2641;2634:12;2596:52;2667:29;2686:9;2667:29;:::i;:::-;2657:39;2743:2;2728:18;;;;2715:32;;-1:-1:-1;;;2499:254:1:o;2758:245::-;2816:6;2869:2;2857:9;2848:7;2844:23;2840:32;2837:52;;;2885:1;2882;2875:12;2837:52;2924:9;2911:23;2943:30;2967:5;2943:30;:::i;3008:249::-;3077:6;3130:2;3118:9;3109:7;3105:23;3101:32;3098:52;;;3146:1;3143;3136:12;3098:52;3178:9;3172:16;3197:30;3221:5;3197:30;:::i;3262:592::-;3333:6;3341;3394:2;3382:9;3373:7;3369:23;3365:32;3362:52;;;3410:1;3407;3400:12;3362:52;3450:9;3437:23;3479:18;3520:2;3512:6;3509:14;3506:34;;;3536:1;3533;3526:12;3506:34;3574:6;3563:9;3559:22;3549:32;;3619:7;3612:4;3608:2;3604:13;3600:27;3590:55;;3641:1;3638;3631:12;3590:55;3681:2;3668:16;3707:2;3699:6;3696:14;3693:34;;;3723:1;3720;3713:12;3693:34;3768:7;3763:2;3754:6;3750:2;3746:15;3742:24;3739:37;3736:57;;;3789:1;3786;3779:12;3736:57;3820:2;3812:11;;;;;3842:6;;-1:-1:-1;3262:592:1;;-1:-1:-1;;;;3262:592:1:o;3859:180::-;3918:6;3971:2;3959:9;3950:7;3946:23;3942:32;3939:52;;;3987:1;3984;3977:12;3939:52;-1:-1:-1;4010:23:1;;3859:180;-1:-1:-1;3859:180:1:o;4044:257::-;4085:3;4123:5;4117:12;4150:6;4145:3;4138:19;4166:63;4222:6;4215:4;4210:3;4206:14;4199:4;4192:5;4188:16;4166:63;:::i;:::-;4283:2;4262:15;-1:-1:-1;;4258:29:1;4249:39;;;;4290:4;4245:50;;4044:257;-1:-1:-1;;4044:257:1:o;4306:470::-;4485:3;4523:6;4517:13;4539:53;4585:6;4580:3;4573:4;4565:6;4561:17;4539:53;:::i;:::-;4655:13;;4614:16;;;;4677:57;4655:13;4614:16;4711:4;4699:17;;4677:57;:::i;:::-;4750:20;;4306:470;-1:-1:-1;;;;4306:470:1:o;5222:511::-;5416:4;-1:-1:-1;;;;;5526:2:1;5518:6;5514:15;5503:9;5496:34;5578:2;5570:6;5566:15;5561:2;5550:9;5546:18;5539:43;;5618:6;5613:2;5602:9;5598:18;5591:34;5661:3;5656:2;5645:9;5641:18;5634:31;5682:45;5722:3;5711:9;5707:19;5699:6;5682:45;:::i;:::-;5674:53;5222:511;-1:-1:-1;;;;;;5222:511:1:o;5930:219::-;6079:2;6068:9;6061:21;6042:4;6099:44;6139:2;6128:9;6124:18;6116:6;6099:44;:::i;14749:415::-;14951:2;14933:21;;;14990:2;14970:18;;;14963:30;15029:34;15024:2;15009:18;;15002:62;15100:21;15095:2;15080:18;;15073:49;15154:3;15139:19;;14749:415::o;18572:128::-;18612:3;18643:1;18639:6;18636:1;18633:13;18630:39;;;18649:18;;:::i;:::-;-1:-1:-1;18685:9:1;;18572:128::o;18705:120::-;18745:1;18771;18761:35;;18776:18;;:::i;:::-;-1:-1:-1;18810:9:1;;18705:120::o;18830:168::-;18870:7;18936:1;18932;18928:6;18924:14;18921:1;18918:21;18913:1;18906:9;18899:17;18895:45;18892:71;;;18943:18;;:::i;:::-;-1:-1:-1;18983:9:1;;18830:168::o;19003:125::-;19043:4;19071:1;19068;19065:8;19062:34;;;19076:18;;:::i;:::-;-1:-1:-1;19113:9:1;;19003:125::o;19133:258::-;19205:1;19215:113;19229:6;19226:1;19223:13;19215:113;;;19305:11;;;19299:18;19286:11;;;19279:39;19251:2;19244:10;19215:113;;;19346:6;19343:1;19340:13;19337:48;;;-1:-1:-1;;19381:1:1;19363:16;;19356:27;19133:258::o;19396:380::-;19475:1;19471:12;;;;19518;;;19539:61;;19593:4;19585:6;19581:17;19571:27;;19539:61;19646:2;19638:6;19635:14;19615:18;19612:38;19609:161;;;19692:10;19687:3;19683:20;19680:1;19673:31;19727:4;19724:1;19717:15;19755:4;19752:1;19745:15;19609:161;;19396:380;;;:::o;19781:135::-;19820:3;-1:-1:-1;;19841:17:1;;19838:43;;;19861:18;;:::i;:::-;-1:-1:-1;19908:1:1;19897:13;;19781:135::o;19921:112::-;19953:1;19979;19969:35;;19984:18;;:::i;:::-;-1:-1:-1;20018:9:1;;19921:112::o;20038:127::-;20099:10;20094:3;20090:20;20087:1;20080:31;20130:4;20127:1;20120:15;20154:4;20151:1;20144:15;20170:127;20231:10;20226:3;20222:20;20219:1;20212:31;20262:4;20259:1;20252:15;20286:4;20283:1;20276:15;20302:127;20363:10;20358:3;20354:20;20351:1;20344:31;20394:4;20391:1;20384:15;20418:4;20415:1;20408:15;20434:127;20495:10;20490:3;20486:20;20483:1;20476:31;20526:4;20523:1;20516:15;20550:4;20547:1;20540:15;20566:131;-1:-1:-1;;;;;;20640:32:1;;20630:43;;20620:71;;20687:1;20684;20677:12
Swarm Source
ipfs://e510fb10c744f90b32e53008bce48438f1c7038aeebbf7023f12d8abd39b65a1
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.