ERC-20
NFT
Overview
Max Total Supply
10,000 BEEPS
Holders
94 (0.00%)
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 0 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
Beepos
Compiler Version
v0.8.1+commit.df193b15
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-01-31 */ /** *Submitted for verification at Etherscan.io on 2022-01-31 */ // SPDX-License-Identifier: MIT pragma solidity ^0.8.1; abstract contract ReentrancyGuard { uint256 private constant _NOT_ENTERED = 1; uint256 private constant _ENTERED = 2; uint256 private _status; constructor() { _status = _NOT_ENTERED; } modifier nonReentrant() { // On the first call to nonReentrant, _notEntered will be true require(_status != _ENTERED, "ReentrancyGuard: reentrant call"); // Any calls to nonReentrant after this point will fail _status = _ENTERED; _; _status = _NOT_ENTERED; } } interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function mintOf(address account) external view returns (uint256); function transfer(address recipient, 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 sender, address recipient, 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); } 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); } } abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } 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); } } library Address { function isContract(address account) internal view returns (bool) { uint256 size; assembly { size := extcodesize(account) } return size > 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); } } } } 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) { // Return data is optional require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed"); } } } contract PaymentSplitter is Context { event PayeeAdded(address account, uint256 shares); event PaymentReleased(address to, uint256 amount); event ERC20PaymentReleased(IERC20 indexed token, address to, uint256 amount); event PaymentReceived(address from, uint256 amount); uint256 private _totalShares; uint256 private _totalReleased; mapping(address => uint256) private _shares; mapping(address => uint256) private _released; address[] private _payees; mapping(IERC20 => uint256) private _erc20TotalReleased; mapping(IERC20 => mapping(address => uint256)) private _erc20Released; constructor(address[] memory payees, uint256[] memory shares_) payable { require(payees.length == shares_.length, "PaymentSplitter: payees and shares length mismatch"); require(payees.length > 0, "PaymentSplitter: no payees"); for (uint256 i = 0; i < payees.length; i++) { _addPayee(payees[i], shares_[i]); } } receive() external payable virtual { emit PaymentReceived(_msgSender(), msg.value); } function totalShares() public view returns (uint256) { return _totalShares; } function totalReleased() public view returns (uint256) { return _totalReleased; } function totalReleased(IERC20 token) public view returns (uint256) { return _erc20TotalReleased[token]; } function shares(address account) public view returns (uint256) { return _shares[account]; } function released(address account) public view returns (uint256) { return _released[account]; } function released(IERC20 token, address account) public view returns (uint256) { return _erc20Released[token][account]; } function payee(uint256 index) public view returns (address) { return _payees[index]; } function release(address payable account) public virtual { require(_shares[account] > 0, "PaymentSplitter: account has no shares"); uint256 totalReceived = address(this).balance + totalReleased(); uint256 payment = _pendingPayment(account, totalReceived, released(account)); require(payment != 0, "PaymentSplitter: account is not due payment"); _released[account] += payment; _totalReleased += payment; Address.sendValue(account, payment); emit PaymentReleased(account, payment); } function release(IERC20 token, address account) public virtual { require(_shares[account] > 0, "PaymentSplitter: account has no shares"); uint256 totalReceived = token.balanceOf(address(this)) + totalReleased(token); uint256 payment = _pendingPayment(account, totalReceived, released(token, account)); require(payment != 0, "PaymentSplitter: account is not due payment"); _erc20Released[token][account] += payment; _erc20TotalReleased[token] += payment; SafeERC20.safeTransfer(token, account, payment); emit ERC20PaymentReleased(token, account, payment); } function _pendingPayment( address account, uint256 totalReceived, uint256 alreadyReleased ) private view returns (uint256) { return (totalReceived * _shares[account]) / _totalShares - alreadyReleased; } function _addPayee(address account, uint256 shares_) private { require(account != address(0), "PaymentSplitter: account is the zero address"); require(shares_ > 0, "PaymentSplitter: shares are 0"); require(_shares[account] == 0, "PaymentSplitter: account already has shares"); _payees.push(account); _shares[account] = shares_; _totalShares = _totalShares + shares_; emit PayeeAdded(account, shares_); } } interface IERC721Receiver { function onERC721Received( address operator, address from, uint256 tokenId, bytes calldata data ) external returns (bytes4); } interface IERC165 { function supportsInterface(bytes4 interfaceId) external view returns (bool); } abstract contract ERC165 is IERC165 { /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(IERC165).interfaceId; } } interface IERC721 is IERC165 { /** * @dev Emitted when `tokenId` token is transferred from `from` to `to`. */ event Transfer(address indexed from, address indexed to, uint256 indexed tokenId); /** * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token. */ event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId); /** * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets. */ event ApprovalForAll(address indexed owner, address indexed operator, bool approved); /** * @dev Returns the number of tokens in ``owner``'s account. */ function balanceOf(address owner) external view returns (uint256 balance); function mintOf(address owner) external view returns (uint256 balance); /** * @dev Returns the owner of the `tokenId` token. * * Requirements: * * - `tokenId` must exist. */ 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; } interface IERC721Enumerable is IERC721 { function totalSupply() external view returns (uint256); function tokenOfOwnerByIndex(address owner, uint256 index) external view returns (uint256 tokenId); function tokenByIndex(uint256 index) external view returns (uint256); } 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); } abstract contract ERC721P is Context, ERC165, IERC721, IERC721Metadata { using Address for address; string private _name; string private _symbol; address[] internal _owners; address[] internal _minters; mapping(uint256 => address) private _tokenApprovals; mapping(address => mapping(address => bool)) private _operatorApprovals; constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) { return interfaceId == type(IERC721).interfaceId || interfaceId == type(IERC721Metadata).interfaceId || super.supportsInterface(interfaceId); } function balanceOf(address owner) public view virtual override returns (uint256) { require(owner != address(0), "ERC721: balance query for the zero address"); uint count = 0; uint length = _owners.length; for( uint i = 0; i < length; ++i ){ if( owner == _owners[i] ){ ++count; } } delete length; return count; } function mintOf(address owner) public view virtual override returns (uint256) { require(owner != address(0), "ERC721: balance query for the zero address"); uint count = 0; uint length = _minters.length; for( uint i = 0; i < length; ++i ){ if( owner == _minters[i] ){ ++count; } } delete length; return count; } function ownerOf(uint256 tokenId) public view virtual override returns (address) { address owner = _owners[tokenId]; require(owner != address(0), "ERC721: owner query for nonexistent token"); return owner; } function name() public view virtual override returns (string memory) { return _name; } function symbol() public view virtual override returns (string memory) { return _symbol; } function approve(address to, uint256 tokenId) public virtual override { address owner = ERC721P.ownerOf(tokenId); require(to != owner, "ERC721: approval to current owner"); require( _msgSender() == owner || isApprovedForAll(owner, _msgSender()), "ERC721: approve caller is not owner nor approved for all" ); _approve(to, tokenId); } function getApproved(uint256 tokenId) public view virtual override returns (address) { require(_exists(tokenId), "ERC721: approved query for nonexistent token"); return _tokenApprovals[tokenId]; } function setApprovalForAll(address operator, bool approved) public virtual override { require(operator != _msgSender(), "ERC721: 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 { //solhint-disable-next-line max-line-length require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: transfer caller is not owner nor approved"); _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 virtual override { require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: transfer caller is not owner nor approved"); _safeTransfer(from, to, tokenId, _data); } function _safeTransfer( address from, address to, uint256 tokenId, bytes memory _data ) internal virtual { _transfer(from, to, tokenId); require(_checkOnERC721Received(from, to, tokenId, _data), "ERC721: transfer to non ERC721Receiver implementer"); } function _exists(uint256 tokenId) internal view virtual returns (bool) { return tokenId < _owners.length && _owners[tokenId] != address(0); } function _isApprovedOrOwner(address spender, uint256 tokenId) internal view virtual returns (bool) { require(_exists(tokenId), "ERC721: operator query for nonexistent token"); address owner = ERC721P.ownerOf(tokenId); return (spender == owner || getApproved(tokenId) == spender || isApprovedForAll(owner, spender)); } function _safeMint(address to, uint256 tokenId) internal virtual { _safeMint(to, tokenId, ""); } function _safeMint( address to, uint256 tokenId, bytes memory _data ) internal virtual { _mint(to, tokenId); require( _checkOnERC721Received(address(0), to, tokenId, _data), "ERC721: transfer to non ERC721Receiver implementer" ); } function _mint(address to, uint256 tokenId) internal virtual { require(to != address(0), "ERC721: mint to the zero address"); require(!_exists(tokenId), "ERC721: token already minted"); _beforeTokenTransfer(address(0), to, tokenId); _owners.push(to); _minters.push(to); emit Transfer(address(0), to, tokenId); } function _burn(uint256 tokenId) internal virtual { address owner = ERC721P.ownerOf(tokenId); _beforeTokenTransfer(owner, address(0), tokenId); // Clear approvals _approve(address(0), tokenId); _owners[tokenId] = address(0); emit Transfer(owner, address(0), tokenId); } function _transfer( address from, address to, uint256 tokenId ) internal virtual { require(ERC721P.ownerOf(tokenId) == from, "ERC721: transfer of token that is not own"); require(to != address(0), "ERC721: transfer to the zero address"); _beforeTokenTransfer(from, to, tokenId); // Clear approvals from the previous owner _approve(address(0), tokenId); _owners[tokenId] = to; emit Transfer(from, to, tokenId); } function _approve(address to, uint256 tokenId) internal virtual { _tokenApprovals[tokenId] = to; emit Approval(ERC721P.ownerOf(tokenId), 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.onERC721Received.selector; } catch (bytes memory reason) { if (reason.length == 0) { revert("ERC721: transfer to non ERC721Receiver implementer"); } else { assembly { revert(add(32, reason), mload(reason)) } } } } else { return true; } } function _beforeTokenTransfer( address from, address to, uint256 tokenId ) internal virtual {} } // File: pagzi/ERC721Enum.sol abstract contract ERC721Enum is ERC721P, IERC721Enumerable { function supportsInterface(bytes4 interfaceId) public view virtual override(IERC165, ERC721P) returns (bool) { return interfaceId == type(IERC721Enumerable).interfaceId || super.supportsInterface(interfaceId); } function tokenOfOwnerByIndex(address owner, uint256 index) public view override returns (uint256 tokenId) { require(index < ERC721P.balanceOf(owner), "ERC721Enum: owner ioob"); uint count; for( uint i; i < _owners.length; ++i ){ if( owner == _owners[i] ){ if( count == index ) return i; else ++count; } } require(false, "ERC721Enum: owner ioob"); } function tokensOfOwner(address owner) public view returns (uint256[] memory) { require(0 < ERC721P.balanceOf(owner), "ERC721Enum: owner ioob"); uint256 tokenCount = balanceOf(owner); uint256[] memory tokenIds = new uint256[](tokenCount); for (uint256 i = 0; i < tokenCount; i++) { tokenIds[i] = tokenOfOwnerByIndex(owner, i); } return tokenIds; } function totalSupply() public view virtual override returns (uint256) { return _owners.length; } function tokenByIndex(uint256 index) public view virtual override returns (uint256) { require(index < ERC721Enum.totalSupply(), "ERC721Enum: global ioob"); return index; } } // File: beepos.sol // Author: Beepos; contract Beepos is ERC721Enum, Ownable, PaymentSplitter, ReentrancyGuard { using Strings for uint256; string public baseURI; //sale settings uint256 public cost = 0.055 ether; uint256 public maxSupply = 10000; uint256 public maxMint = 3; uint256 public MaxMintPerWallet = 3; struct User { uint256 minted; } mapping (address => User) public users; bool public status = false; //presale settings uint256 public presaleDate = 1637132400; mapping(address => uint256) public presaleWhitelist; //share settings address[] private addressList = [ 0xB80DA8531034854c01BF61Ee6CC2A191f3569FE4, 0xCfEfF78B5e8bc1cf6C495a61720e05e373e40C57, 0xa68C9b9558F4706331DC410706FB6Dde90788286, 0xE2d7AAb994eeC70A6e0B172D306b75A870f3b7b7 ]; uint[] private shareList = [25,25,25,25]; constructor( string memory _name, string memory _symbol, string memory _initBaseURI ) ERC721P(_name, _symbol) PaymentSplitter( addressList, shareList ){ setBaseURI(_initBaseURI); } // internal function _baseURI() internal view virtual returns (string memory) { return baseURI; } // public minting function mint(uint256 _mintAmount) public payable nonReentrant{ require(users[msg.sender].minted + _mintAmount <= MaxMintPerWallet || msg.sender==owner(), "Exceeds max mint limit per wallet"); uint256 s = totalSupply(); require(status, "Off" ); require(_mintAmount > 0, "Duh" ); require(_mintAmount <= maxMint, "Too many" ); require(s + _mintAmount <= maxSupply, "Sorry" ); require(msg.value >= cost * _mintAmount); for (uint256 i = 0; i < _mintAmount; ++i) { _safeMint(msg.sender, s + i, ""); } users[msg.sender].minted = users[msg.sender].minted + _mintAmount; delete s; } function mintPresale(uint256 _mintAmount) public payable { require(presaleDate <= block.timestamp, "Not yet"); require(users[msg.sender].minted + _mintAmount <= MaxMintPerWallet || msg.sender==owner(), "Exceeds max mint limit per wallet"); uint256 s = totalSupply(); uint256 reserve = presaleWhitelist[msg.sender]; require(!status, "Off"); require(reserve > 0, "Low reserve"); require(_mintAmount <= reserve, "Try less"); require(s + _mintAmount <= maxSupply, "More than max"); require(cost * _mintAmount == msg.value, "Wrong amount"); presaleWhitelist[msg.sender] = reserve - _mintAmount; delete reserve; for(uint256 i; i < _mintAmount; i++){ _safeMint(msg.sender, s + i, ""); } users[msg.sender].minted = users[msg.sender].minted + _mintAmount; delete s; } // admin minting function gift(uint[] calldata quantity, address[] calldata recipient) external onlyOwner{ require(quantity.length == recipient.length, "Provide quantities and recipients" ); uint totalQuantity = 0; uint256 s = totalSupply(); for(uint i = 0; i < quantity.length; ++i){ totalQuantity += quantity[i]; } require( s + totalQuantity <= maxSupply, "Too many" ); delete totalQuantity; for(uint i = 0; i < recipient.length; ++i){ for(uint j = 0; j < quantity[i]; ++j){ _safeMint( recipient[i], s++, "" ); } } delete s; } // admin functionality function presaleSet(address[] calldata _addresses, uint256[] calldata _amounts) public onlyOwner { for(uint256 i; i < _addresses.length; i++){ presaleWhitelist[_addresses[i]] = _amounts[i]; } } function tokenURI(uint256 tokenId) public view virtual override returns (string memory) { require(_exists(tokenId), "ERC721Metadata: Nonexistent token"); string memory currentBaseURI = _baseURI(); return bytes(currentBaseURI).length > 0 ? string(abi.encodePacked(currentBaseURI, tokenId.toString())) : ""; } function setCost(uint256 _newCost) public onlyOwner { cost = _newCost; } function setMaxMintAmount(uint256 _newMaxMintAmount) public onlyOwner { maxMint = _newMaxMintAmount; } function setmaxSupply(uint256 _newMaxSupply) public onlyOwner { maxSupply = _newMaxSupply; } function setBaseURI(string memory _newBaseURI) public onlyOwner { baseURI = _newBaseURI; } function setSaleStatus(bool _status) public onlyOwner { status = _status; } function withdraw() public payable onlyOwner { (bool success, ) = payable(msg.sender).call{value: address(this).balance}(""); require(success); } function updateMintPerWalletLimit(uint256 newLimit) external onlyOwner { MaxMintPerWallet = newLimit; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"string","name":"_initBaseURI","type":"string"}],"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":"contract IERC20","name":"token","type":"address"},{"indexed":false,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"ERC20PaymentReleased","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"shares","type":"uint256"}],"name":"PayeeAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"PaymentReceived","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"PaymentReleased","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":"MaxMintPerWallet","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":"cost","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"quantity","type":"uint256[]"},{"internalType":"address[]","name":"recipient","type":"address[]"}],"name":"gift","outputs":[],"stateMutability":"nonpayable","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":"maxMint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_mintAmount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"mintOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_mintAmount","type":"uint256"}],"name":"mintPresale","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"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":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"payee","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"presaleDate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"_addresses","type":"address[]"},{"internalType":"uint256[]","name":"_amounts","type":"uint256[]"}],"name":"presaleSet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"presaleWhitelist","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address payable","name":"account","type":"address"}],"name":"release","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"address","name":"account","type":"address"}],"name":"release","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"address","name":"account","type":"address"}],"name":"released","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"released","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":"_newBaseURI","type":"string"}],"name":"setBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newCost","type":"uint256"}],"name":"setCost","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newMaxMintAmount","type":"uint256"}],"name":"setMaxMintAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"setSaleStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newMaxSupply","type":"uint256"}],"name":"setmaxSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"shares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"status","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":[{"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":"tokenId","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":[{"internalType":"address","name":"owner","type":"address"}],"name":"tokensOfOwner","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"totalReleased","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalReleased","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"updateMintPerWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"users","outputs":[{"internalType":"uint256","name":"minted","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"payable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
66c3663566a58000601055612710601155600360128190556013556015805460ff19169055636194a87060165561010060405273b80da8531034854c01bf61ee6cc2a191f3569fe4608090815273cfeff78b5e8bc1cf6c495a61720e05e373e40c5760a05273a68c9b9558f4706331dc410706fb6dde9078828660c05273e2d7aab994eec70a6e0b172d306b75a870f3b7b760e052620000a4906018906004620004ea565b506040805160808101825260198082526020820181905291810182905260608101829052620000d69190600462000554565b50348015620000e457600080fd5b506040516200406e3803806200406e8339810160408190526200010791620006de565b60188054806020026020016040519081016040528092919081815260200182805480156200015f57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162000140575b50505050506019805480602002602001604051908101604052809291908181526020018280548015620001b257602002820191906000526020600020905b8154815260200190600101908083116200019d575b50508751889350879250620001d09150600090602085019062000597565b508051620001e690600190602084019062000597565b50505062000203620001fd620002f460201b60201c565b620002f8565b8051825114620002305760405162461bcd60e51b8152600401620002279062000805565b60405180910390fd5b6000825111620002545760405162461bcd60e51b81526004016200022790620008a2565b60005b8251811015620002d857620002c38382815181106200028657634e487b7160e01b600052603260045260246000fd5b6020026020010151838381518110620002af57634e487b7160e01b600052603260045260246000fd5b60200260200101516200034a60201b60201c565b80620002cf8162000968565b91505062000257565b50506001600e5550620002eb816200047c565b505050620009b2565b3390565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038216620003735760405162461bcd60e51b8152600401620002279062000784565b60008111620003965760405162461bcd60e51b81526004016200022790620008d9565b6001600160a01b03821660009081526009602052604090205415620003cf5760405162461bcd60e51b8152600401620002279062000857565b600b8054600181019091557f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db90180546001600160a01b0319166001600160a01b03841690811790915560009081526009602052604090208190556007546200043990829062000910565b6007556040517f40c340f65e17194d14ddddb073d3c9f888e3cb52b5aae0c6c7706b4fbc905fac906200047090849084906200076b565b60405180910390a15050565b62000486620002f4565b6001600160a01b031662000499620004db565b6001600160a01b031614620004c25760405162461bcd60e51b81526004016200022790620007d0565b8051620004d790600f90602084019062000597565b5050565b6006546001600160a01b031690565b82805482825590600052602060002090810192821562000542579160200282015b828111156200054257825182546001600160a01b0319166001600160a01b039091161782556020909201916001909101906200050b565b506200055092915062000614565b5090565b82805482825590600052602060002090810192821562000542579160200282015b8281111562000542578251829060ff1690559160200191906001019062000575565b828054620005a5906200092b565b90600052602060002090601f016020900481019282620005c9576000855562000542565b82601f10620005e457805160ff191683800117855562000542565b8280016001018555821562000542579182015b8281111562000542578251825591602001919060010190620005f7565b5b8082111562000550576000815560010162000615565b600082601f8301126200063c578081fd5b81516001600160401b03808211156200065957620006596200099c565b604051601f8301601f19908116603f011681019082821181831017156200068457620006846200099c565b81604052838152602092508683858801011115620006a0578485fd5b8491505b83821015620006c35785820183015181830184015290820190620006a4565b83821115620006d457848385830101525b9695505050505050565b600080600060608486031215620006f3578283fd5b83516001600160401b03808211156200070a578485fd5b62000718878388016200062b565b945060208601519150808211156200072e578384fd5b6200073c878388016200062b565b9350604086015191508082111562000752578283fd5b5062000761868287016200062b565b9150509250925092565b6001600160a01b03929092168252602082015260400190565b6020808252602c908201527f5061796d656e7453706c69747465723a206163636f756e74206973207468652060408201526b7a65726f206164647265737360a01b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526032908201527f5061796d656e7453706c69747465723a2070617965657320616e6420736861726040820152710cae640d8cadccee8d040dad2e6dac2e8c6d60731b606082015260800190565b6020808252602b908201527f5061796d656e7453706c69747465723a206163636f756e7420616c726561647960408201526a206861732073686172657360a81b606082015260800190565b6020808252601a908201527f5061796d656e7453706c69747465723a206e6f20706179656573000000000000604082015260600190565b6020808252601d908201527f5061796d656e7453706c69747465723a20736861726573206172652030000000604082015260600190565b6000821982111562000926576200092662000986565b500190565b6002810460018216806200094057607f821691505b602082108114156200096257634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156200097f576200097f62000986565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6136ac80620009c26000396000f3fe6080604052600436106102cd5760003560e01c80637501f74111610175578063b88d4fde116100dc578063d79779b211610095578063e985e9c51161006f578063e985e9c514610866578063eb8835ab14610886578063f2fde38b146108a6578063f759867a146108c657610314565b8063d79779b214610811578063d897833e14610831578063e33b7de31461085157610314565b8063b88d4fde14610767578063c87b56dd14610787578063c889004b146107a7578063ce7c2ac2146107bc578063d2766659146107dc578063d5abeb01146107fc57610314565b806396ea3a471161012e57806396ea3a47146106b45780639852595c146106d4578063a0712d68146106f4578063a22cb46514610707578063a87430ba14610727578063b1f536fa1461074757610314565b80637501f741146106135780637ce6edb8146106285780638462151c1461063d5780638b83209b1461066a5780638da5cb5b1461068a57806395d89b411461069f57610314565b80633a98ef39116102345780634f6ccce7116101ed5780636c0360eb116101c75780636c0360eb146105a957806370a08231146105be578063715018a6146105de578063732e71ef146105f357610314565b80634f6ccce71461054957806355f804b3146105695780636352211e1461058957610314565b80633a98ef39146104ac5780633ccfd60b146104c1578063406072a9146104c957806342842e0e146104e957806344a0d68a1461050957806348b750441461052957610314565b806318160ddd1161028657806318160ddd146104025780631916558714610417578063200d2ed214610437578063228025e81461044c57806323b872dd1461046c5780632f745c591461048c57610314565b806301ffc9a71461031957806306fdde031461034f578063081812fc14610371578063088a4ed01461039e578063095ea7b3146103c057806313faede6146103e057610314565b36610314577f6ef95f06320e7a25a04a175ca677b7052bdd97131872c2192525a629f51be7706102fb6108d9565b3460405161030a929190612bae565b60405180910390a1005b600080fd5b34801561032557600080fd5b50610339610334366004612a60565b6108dd565b6040516103469190612c48565b60405180910390f35b34801561035b57600080fd5b5061036461090a565b6040516103469190612c53565b34801561037d57600080fd5b5061039161038c366004612af0565b61099c565b6040516103469190612b9a565b3480156103aa57600080fd5b506103be6103b9366004612af0565b6109e8565b005b3480156103cc57600080fd5b506103be6103db366004612994565b610a2c565b3480156103ec57600080fd5b506103f5610ac4565b60405161034691906134fa565b34801561040e57600080fd5b506103f5610aca565b34801561042357600080fd5b506103be610432366004612856565b610ad0565b34801561044357600080fd5b50610339610bde565b34801561045857600080fd5b506103be610467366004612af0565b610be7565b34801561047857600080fd5b506103be6104873660046128aa565b610c2b565b34801561049857600080fd5b506103f56104a7366004612994565b610c63565b3480156104b857600080fd5b506103f5610d26565b6103be610d2c565b3480156104d557600080fd5b506103f56104e4366004612a98565b610dd7565b3480156104f557600080fd5b506103be6105043660046128aa565b610e02565b34801561051557600080fd5b506103be610524366004612af0565b610e1d565b34801561053557600080fd5b506103be610544366004612a98565b610e61565b34801561055557600080fd5b506103f5610564366004612af0565b611017565b34801561057557600080fd5b506103be610584366004612aaa565b611043565b34801561059557600080fd5b506103916105a4366004612af0565b611099565b3480156105b557600080fd5b506103646110f1565b3480156105ca57600080fd5b506103f56105d9366004612856565b61117f565b3480156105ea57600080fd5b506103be61121c565b3480156105ff57600080fd5b506103be61060e3660046129bf565b611267565b34801561061f57600080fd5b506103f5611344565b34801561063457600080fd5b506103f561134a565b34801561064957600080fd5b5061065d610658366004612856565b611350565b6040516103469190612c04565b34801561067657600080fd5b50610391610685366004612af0565b611436565b34801561069657600080fd5b50610391611474565b3480156106ab57600080fd5b50610364611483565b3480156106c057600080fd5b506103be6106cf3660046129bf565b611492565b3480156106e057600080fd5b506103f56106ef366004612856565b61163b565b6103be610702366004612af0565b611656565b34801561071357600080fd5b506103be610722366004612967565b611806565b34801561073357600080fd5b506103f5610742366004612856565b6118d4565b34801561075357600080fd5b506103f5610762366004612856565b6118e6565b34801561077357600080fd5b506103be6107823660046128ea565b61197a565b34801561079357600080fd5b506103646107a2366004612af0565b6119b9565b3480156107b357600080fd5b506103f5611a3c565b3480156107c857600080fd5b506103f56107d7366004612856565b611a42565b3480156107e857600080fd5b506103be6107f7366004612af0565b611a5d565b34801561080857600080fd5b506103f5611aa1565b34801561081d57600080fd5b506103f561082c366004612856565b611aa7565b34801561083d57600080fd5b506103be61084c366004612a28565b611ac2565b34801561085d57600080fd5b506103f5611b14565b34801561087257600080fd5b50610339610881366004612872565b611b1a565b34801561089257600080fd5b506103f56108a1366004612856565b611b48565b3480156108b257600080fd5b506103be6108c1366004612856565b611b5a565b6103be6108d4366004612af0565b611bc8565b3390565b60006001600160e01b0319821663780e9d6360e01b1480610902575061090282611d9b565b90505b919050565b60606000805461091990613591565b80601f016020809104026020016040519081016040528092919081815260200182805461094590613591565b80156109925780601f1061096757610100808354040283529160200191610992565b820191906000526020600020905b81548152906001019060200180831161097557829003601f168201915b5050505050905090565b60006109a782611ddb565b6109cc5760405162461bcd60e51b81526004016109c390613173565b60405180910390fd5b506000908152600460205260409020546001600160a01b031690565b6109f06108d9565b6001600160a01b0316610a01611474565b6001600160a01b031614610a275760405162461bcd60e51b81526004016109c3906131e1565b601255565b6000610a3782611099565b9050806001600160a01b0316836001600160a01b03161415610a6b5760405162461bcd60e51b81526004016109c3906132e8565b806001600160a01b0316610a7d6108d9565b6001600160a01b03161480610a995750610a99816108816108d9565b610ab55760405162461bcd60e51b81526004016109c39061304e565b610abf8383611e33565b505050565b60105481565b60025490565b6001600160a01b038116600090815260096020526040902054610b055760405162461bcd60e51b81526004016109c390612ddb565b6000610b0f611b14565b610b199047613503565b90506000610b308383610b2b8661163b565b611ea1565b905080610b4f5760405162461bcd60e51b81526004016109c390612fc2565b6001600160a01b0383166000908152600a602052604081208054839290610b77908490613503565b925050819055508060086000828254610b909190613503565b90915550610ba090508382611ee7565b7fdf20fd1e76bc69d672e4814fafb2c449bba3a5369d8359adf9e05e6fde87b0568382604051610bd1929190612bae565b60405180910390a1505050565b60155460ff1681565b610bef6108d9565b6001600160a01b0316610c00611474565b6001600160a01b031614610c265760405162461bcd60e51b81526004016109c3906131e1565b601155565b610c3c610c366108d9565b82611f83565b610c585760405162461bcd60e51b81526004016109c390613329565b610abf838383612000565b6000610c6e8361117f565b8210610c8c5760405162461bcd60e51b81526004016109c39061325f565b6000805b600254811015610d075760028181548110610cbb57634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546001600160a01b0386811691161415610cf75783821415610ceb579150610d209050565b610cf4826135cc565b91505b610d00816135cc565b9050610c90565b5060405162461bcd60e51b81526004016109c39061325f565b92915050565b60075490565b610d346108d9565b6001600160a01b0316610d45611474565b6001600160a01b031614610d6b5760405162461bcd60e51b81526004016109c3906131e1565b6000336001600160a01b031647604051610d8490612b97565b60006040518083038185875af1925050503d8060008114610dc1576040519150601f19603f3d011682016040523d82523d6000602084013e610dc6565b606091505b5050905080610dd457600080fd5b50565b6001600160a01b039182166000908152600d6020908152604080832093909416825291909152205490565b610abf8383836040518060200160405280600081525061197a565b610e256108d9565b6001600160a01b0316610e36611474565b6001600160a01b031614610e5c5760405162461bcd60e51b81526004016109c3906131e1565b601055565b6001600160a01b038116600090815260096020526040902054610e965760405162461bcd60e51b81526004016109c390612ddb565b6000610ea183611aa7565b6040516370a0823160e01b81526001600160a01b038516906370a0823190610ecd903090600401612b9a565b60206040518083038186803b158015610ee557600080fd5b505afa158015610ef9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f1d9190612b08565b610f279190613503565b90506000610f3a8383610b2b8787610dd7565b905080610f595760405162461bcd60e51b81526004016109c390612fc2565b6001600160a01b038085166000908152600d6020908152604080832093871683529290529081208054839290610f90908490613503565b90915550506001600160a01b0384166000908152600c602052604081208054839290610fbd908490613503565b90915550610fce90508484836120f1565b836001600160a01b03167f3be5b7a71e84ed12875d241991c70855ac5817d847039e17a9d895c1ceb0f18a8483604051611009929190612bae565b60405180910390a250505050565b6000611021610aca565b821061103f5760405162461bcd60e51b81526004016109c3906132b1565b5090565b61104b6108d9565b6001600160a01b031661105c611474565b6001600160a01b0316146110825760405162461bcd60e51b81526004016109c3906131e1565b805161109590600f906020840190612707565b5050565b600080600283815481106110bd57634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546001600160a01b03169050806109025760405162461bcd60e51b81526004016109c3906130f5565b600f80546110fe90613591565b80601f016020809104026020016040519081016040528092919081815260200182805461112a90613591565b80156111775780601f1061114c57610100808354040283529160200191611177565b820191906000526020600020905b81548152906001019060200180831161115a57829003601f168201915b505050505081565b60006001600160a01b0382166111a75760405162461bcd60e51b81526004016109c3906130ab565b600254600090815b8181101561121357600281815481106111d857634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546001600160a01b038681169116141561120357611200836135cc565b92505b61120c816135cc565b90506111af565b50909392505050565b6112246108d9565b6001600160a01b0316611235611474565b6001600160a01b03161461125b5760405162461bcd60e51b81526004016109c3906131e1565b6112656000612147565b565b61126f6108d9565b6001600160a01b0316611280611474565b6001600160a01b0316146112a65760405162461bcd60e51b81526004016109c3906131e1565b60005b8381101561133d578282828181106112d157634e487b7160e01b600052603260045260246000fd5b90506020020135601760008787858181106112fc57634e487b7160e01b600052603260045260246000fd5b90506020020160208101906113119190612856565b6001600160a01b0316815260208101919091526040016000205580611335816135cc565b9150506112a9565b5050505050565b60125481565b60135481565b606061135b8261117f565b60001061137a5760405162461bcd60e51b81526004016109c39061325f565b60006113858361117f565b905060008167ffffffffffffffff8111156113b057634e487b7160e01b600052604160045260246000fd5b6040519080825280602002602001820160405280156113d9578160200160208202803683370190505b50905060005b8281101561142e576113f18582610c63565b82828151811061141157634e487b7160e01b600052603260045260246000fd5b602090810291909101015280611426816135cc565b9150506113df565b509392505050565b6000600b828154811061145957634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546001600160a01b031692915050565b6006546001600160a01b031690565b60606001805461091990613591565b61149a6108d9565b6001600160a01b03166114ab611474565b6001600160a01b0316146114d15760405162461bcd60e51b81526004016109c3906131e1565b8281146114f05760405162461bcd60e51b81526004016109c39061300d565b6000806114fb610aca565b905060005b8581101561154c5786868281811061152857634e487b7160e01b600052603260045260246000fd5b905060200201358361153a9190613503565b9250611545816135cc565b9050611500565b5060115461155a8383613503565b11156115785760405162461bcd60e51b81526004016109c3906131bf565b6000915060005b838110156116325760005b8787838181106115aa57634e487b7160e01b600052603260045260246000fd5b90506020020135811015611621576116118686848181106115db57634e487b7160e01b600052603260045260246000fd5b90506020020160208101906115f09190612856565b846115fa816135cc565b955060405180602001604052806000815250612199565b61161a816135cc565b905061158a565b5061162b816135cc565b905061157f565b50505050505050565b6001600160a01b03166000908152600a602052604090205490565b6002600e5414156116795760405162461bcd60e51b81526004016109c390613480565b6002600e556013543360009081526014602052604090205461169c908390613503565b1115806116c157506116ac611474565b6001600160a01b0316336001600160a01b0316145b6116dd5760405162461bcd60e51b81526004016109c3906133b1565b60006116e7610aca565b60155490915060ff1661170c5760405162461bcd60e51b81526004016109c3906133f2565b6000821161172c5760405162461bcd60e51b81526004016109c3906134b7565b60125482111561174e5760405162461bcd60e51b81526004016109c3906131bf565b60115461175b8383613503565b11156117795760405162461bcd60e51b81526004016109c390612cf9565b81601054611787919061352f565b34101561179357600080fd5b60005b828110156117d1576117c1336117ac8385613503565b60405180602001604052806000815250612199565b6117ca816135cc565b9050611796565b50336000908152601460205260409020546117ed908390613503565b3360009081526014602052604090205550506001600e55565b61180e6108d9565b6001600160a01b0316826001600160a01b0316141561183f5760405162461bcd60e51b81526004016109c390612e65565b806005600061184c6108d9565b6001600160a01b03908116825260208083019390935260409182016000908120918716808252919093529120805460ff1916921515929092179091556118906108d9565b6001600160a01b03167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516118c89190612c48565b60405180910390a35050565b60146020526000908152604090205481565b60006001600160a01b03821661190e5760405162461bcd60e51b81526004016109c3906130ab565b600354600090815b81811015611213576003818154811061193f57634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546001600160a01b038681169116141561196a57611967836135cc565b92505b611973816135cc565b9050611916565b61198b6119856108d9565b83611f83565b6119a75760405162461bcd60e51b81526004016109c390613329565b6119b3848484846121cc565b50505050565b60606119c482611ddb565b6119e05760405162461bcd60e51b81526004016109c390612c66565b60006119ea6121ff565b90506000815111611a0a5760405180602001604052806000815250611a35565b80611a148461220e565b604051602001611a25929190612b68565b6040516020818303038152906040525b9392505050565b60165481565b6001600160a01b031660009081526009602052604090205490565b611a656108d9565b6001600160a01b0316611a76611474565b6001600160a01b031614611a9c5760405162461bcd60e51b81526004016109c3906131e1565b601355565b60115481565b6001600160a01b03166000908152600c602052604090205490565b611aca6108d9565b6001600160a01b0316611adb611474565b6001600160a01b031614611b015760405162461bcd60e51b81526004016109c3906131e1565b6015805460ff1916911515919091179055565b60085490565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b60176020526000908152604090205481565b611b626108d9565b6001600160a01b0316611b73611474565b6001600160a01b031614611b995760405162461bcd60e51b81526004016109c3906131e1565b6001600160a01b038116611bbf5760405162461bcd60e51b81526004016109c390612d18565b610dd481612147565b426016541115611bea5760405162461bcd60e51b81526004016109c390612dba565b60135433600090815260146020526040902054611c08908390613503565b111580611c2d5750611c18611474565b6001600160a01b0316336001600160a01b0316145b611c495760405162461bcd60e51b81526004016109c3906133b1565b6000611c53610aca565b336000908152601760205260409020546015549192509060ff1615611c8a5760405162461bcd60e51b81526004016109c3906133f2565b60008111611caa5760405162461bcd60e51b81526004016109c390612d95565b80831115611cca5760405162461bcd60e51b81526004016109c39061328f565b601154611cd78484613503565b1115611cf55760405162461bcd60e51b81526004016109c390613459565b3483601054611d04919061352f565b14611d215760405162461bcd60e51b81526004016109c3906134d4565b611d2b838261354e565b336000908152601760205260408120919091559050805b83811015611d6a57611d58336117ac8386613503565b80611d62816135cc565b915050611d42565b5033600090815260146020526040902054611d86908490613503565b33600090815260146020526040902055505050565b60006001600160e01b031982166331596e3760e01b1480611dcc57506001600160e01b03198216635b5e139f60e01b145b80610902575061090282612329565b60025460009082108015610902575060006001600160a01b031660028381548110611e1657634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546001600160a01b0316141592915050565b600081815260046020526040902080546001600160a01b0319166001600160a01b0384169081179091558190611e6882611099565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6007546001600160a01b03841660009081526009602052604081205490918391611ecb908661352f565b611ed5919061351b565b611edf919061354e565b949350505050565b80471015611f075760405162461bcd60e51b81526004016109c390612ef9565b6000826001600160a01b031682604051611f2090612b97565b60006040518083038185875af1925050503d8060008114611f5d576040519150601f19603f3d011682016040523d82523d6000602084013e611f62565b606091505b5050905080610abf5760405162461bcd60e51b81526004016109c390612e9c565b6000611f8e82611ddb565b611faa5760405162461bcd60e51b81526004016109c390612f76565b6000611fb583611099565b9050806001600160a01b0316846001600160a01b03161480611ff05750836001600160a01b0316611fe58461099c565b6001600160a01b0316145b80611edf5750611edf8185611b1a565b826001600160a01b031661201382611099565b6001600160a01b0316146120395760405162461bcd60e51b81526004016109c390613216565b6001600160a01b03821661205f5760405162461bcd60e51b81526004016109c390612e21565b61206a838383610abf565b612075600082611e33565b816002828154811061209757634e487b7160e01b600052603260045260246000fd5b6000918252602082200180546001600160a01b0319166001600160a01b03938416179055604051839285811692908716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9190a4505050565b610abf8363a9059cbb60e01b8484604051602401612110929190612bae565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152612342565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6121a383836123d1565b6121b060008484846124de565b610abf5760405162461bcd60e51b81526004016109c390612ca7565b6121d7848484612000565b6121e3848484846124de565b6119b35760405162461bcd60e51b81526004016109c390612ca7565b6060600f805461091990613591565b60608161223357506040805180820190915260018152600360fc1b6020820152610905565b8160005b811561225d5780612247816135cc565b91506122569050600a8361351b565b9150612237565b60008167ffffffffffffffff81111561228657634e487b7160e01b600052604160045260246000fd5b6040519080825280601f01601f1916602001820160405280156122b0576020820181803683370190505b5090505b8415611edf576122c560018361354e565b91506122d2600a866135e7565b6122dd906030613503565b60f81b81838151811061230057634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a905350612322600a8661351b565b94506122b4565b6001600160e01b031981166301ffc9a760e01b14919050565b6000612397826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166125f99092919063ffffffff16565b805190915015610abf57808060200190518101906123b59190612a44565b610abf5760405162461bcd60e51b81526004016109c39061340f565b6001600160a01b0382166123f75760405162461bcd60e51b81526004016109c39061313e565b61240081611ddb565b1561241d5760405162461bcd60e51b81526004016109c390612d5e565b61242960008383610abf565b6002805460018181019092557f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace0180546001600160a01b0385166001600160a01b0319918216811790925560038054938401815560009081527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b9093018054909116821790556040518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b60006124f2846001600160a01b0316612608565b156125ee57836001600160a01b031663150b7a0261250e6108d9565b8786866040518563ffffffff1660e01b81526004016125309493929190612bc7565b602060405180830381600087803b15801561254a57600080fd5b505af192505050801561257a575060408051601f3d908101601f1916820190925261257791810190612a7c565b60015b6125d4573d8080156125a8576040519150601f19603f3d011682016040523d82523d6000602084013e6125ad565b606091505b5080516125cc5760405162461bcd60e51b81526004016109c390612ca7565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611edf565b506001949350505050565b6060611edf848460008561260e565b3b151590565b6060824710156126305760405162461bcd60e51b81526004016109c390612f30565b61263985612608565b6126555760405162461bcd60e51b81526004016109c39061337a565b600080866001600160a01b031685876040516126719190612b4c565b60006040518083038185875af1925050503d80600081146126ae576040519150601f19603f3d011682016040523d82523d6000602084013e6126b3565b606091505b50915091506126c38282866126ce565b979650505050505050565b606083156126dd575081611a35565b8251156126ed5782518084602001fd5b8160405162461bcd60e51b81526004016109c39190612c53565b82805461271390613591565b90600052602060002090601f016020900481019282612735576000855561277b565b82601f1061274e57805160ff191683800117855561277b565b8280016001018555821561277b579182015b8281111561277b578251825591602001919060010190612760565b5061103f9291505b8082111561103f5760008155600101612783565b600067ffffffffffffffff808411156127b2576127b2613627565b604051601f8501601f19908116603f011681019082821181831017156127da576127da613627565b816040528093508581528686860111156127f357600080fd5b858560208301376000602087830101525050509392505050565b60008083601f84011261281e578182fd5b50813567ffffffffffffffff811115612835578182fd5b602083019150836020808302850101111561284f57600080fd5b9250929050565b600060208284031215612867578081fd5b8135611a358161363d565b60008060408385031215612884578081fd5b823561288f8161363d565b9150602083013561289f8161363d565b809150509250929050565b6000806000606084860312156128be578081fd5b83356128c98161363d565b925060208401356128d98161363d565b929592945050506040919091013590565b600080600080608085870312156128ff578081fd5b843561290a8161363d565b9350602085013561291a8161363d565b925060408501359150606085013567ffffffffffffffff81111561293c578182fd5b8501601f8101871361294c578182fd5b61295b87823560208401612797565b91505092959194509250565b60008060408385031215612979578182fd5b82356129848161363d565b9150602083013561289f81613652565b600080604083850312156129a6578182fd5b82356129b18161363d565b946020939093013593505050565b600080600080604085870312156129d4578384fd5b843567ffffffffffffffff808211156129eb578586fd5b6129f78883890161280d565b90965094506020870135915080821115612a0f578384fd5b50612a1c8782880161280d565b95989497509550505050565b600060208284031215612a39578081fd5b8135611a3581613652565b600060208284031215612a55578081fd5b8151611a3581613652565b600060208284031215612a71578081fd5b8135611a3581613660565b600060208284031215612a8d578081fd5b8151611a3581613660565b60008060408385031215612884578182fd5b600060208284031215612abb578081fd5b813567ffffffffffffffff811115612ad1578182fd5b8201601f81018413612ae1578182fd5b611edf84823560208401612797565b600060208284031215612b01578081fd5b5035919050565b600060208284031215612b19578081fd5b5051919050565b60008151808452612b38816020860160208601613565565b601f01601f19169290920160200192915050565b60008251612b5e818460208701613565565b9190910192915050565b60008351612b7a818460208801613565565b835190830190612b8e818360208801613565565b01949350505050565b90565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090612bfa90830184612b20565b9695505050505050565b6020808252825182820181905260009190848201906040850190845b81811015612c3c57835183529284019291840191600101612c20565b50909695505050505050565b901515815260200190565b600060208252611a356020830184612b20565b60208082526021908201527f4552433732314d657461646174613a204e6f6e6578697374656e7420746f6b656040820152603760f91b606082015260800190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b602080825260059082015264536f72727960d81b604082015260600190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b6020808252601c908201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604082015260600190565b6020808252600b908201526a4c6f77207265736572766560a81b604082015260600190565b602080825260079082015266139bdd081e595d60ca1b604082015260600190565b60208082526026908201527f5061796d656e7453706c69747465723a206163636f756e7420686173206e6f2060408201526573686172657360d01b606082015260800190565b60208082526024908201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646040820152637265737360e01b606082015260800190565b60208082526019908201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604082015260600190565b6020808252603a908201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260408201527f6563697069656e74206d61792068617665207265766572746564000000000000606082015260800190565b6020808252601d908201527f416464726573733a20696e73756666696369656e742062616c616e6365000000604082015260600190565b60208082526026908201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6040820152651c8818d85b1b60d21b606082015260800190565b6020808252602c908201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860408201526b34b9ba32b73a103a37b5b2b760a11b606082015260800190565b6020808252602b908201527f5061796d656e7453706c69747465723a206163636f756e74206973206e6f742060408201526a191d59481c185e5b595b9d60aa1b606082015260800190565b60208082526021908201527f50726f76696465207175616e74697469657320616e6420726563697069656e746040820152607360f81b606082015260800190565b60208082526038908201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760408201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000606082015260800190565b6020808252602a908201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604082015269726f206164647265737360b01b606082015260800190565b60208082526029908201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460408201526832b73a103a37b5b2b760b91b606082015260800190565b6020808252818101527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604082015260600190565b6020808252602c908201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860408201526b34b9ba32b73a103a37b5b2b760a11b606082015260800190565b602080825260089082015267546f6f206d616e7960c01b604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526029908201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960408201526839903737ba1037bbb760b91b606082015260800190565b60208082526016908201527522a9219b9918a2b73ab69d1037bbb732b91034b7b7b160511b604082015260600190565b602080825260089082015267547279206c65737360c01b604082015260600190565b60208082526017908201527f455243373231456e756d3a20676c6f62616c20696f6f62000000000000000000604082015260600190565b60208082526021908201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656040820152603960f91b606082015260800190565b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6040820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b606082015260800190565b6020808252601d908201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604082015260600190565b60208082526021908201527f45786365656473206d6178206d696e74206c696d6974207065722077616c6c656040820152601d60fa1b606082015260800190565b60208082526003908201526227b33360e91b604082015260600190565b6020808252602a908201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6040820152691bdd081cdd58d8d9595960b21b606082015260800190565b6020808252600d908201526c09adee4ca40e8d0c2dc40dac2f609b1b604082015260600190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b602080825260039082015262088ead60eb1b604082015260600190565b6020808252600c908201526b15dc9bdb99c8185b5bdd5b9d60a21b604082015260600190565b90815260200190565b60008219821115613516576135166135fb565b500190565b60008261352a5761352a613611565b500490565b6000816000190483118215151615613549576135496135fb565b500290565b600082821015613560576135606135fb565b500390565b60005b83811015613580578181015183820152602001613568565b838111156119b35750506000910152565b6002810460018216806135a557607f821691505b602082108114156135c657634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156135e0576135e06135fb565b5060010190565b6000826135f6576135f6613611565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114610dd457600080fd5b8015158114610dd457600080fd5b6001600160e01b031981168114610dd457600080fdfea26469706673582212207dba63291afa69e4b4d034f3726ce658446d6b85f0ecb9989f48c8e059a5199864736f6c63430008010033000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000006426565706f73000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000054245455053000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001e68747470733a2f2f626565706f732e66756e2f6170692f626565706f732f0000
Deployed Bytecode
0x6080604052600436106102cd5760003560e01c80637501f74111610175578063b88d4fde116100dc578063d79779b211610095578063e985e9c51161006f578063e985e9c514610866578063eb8835ab14610886578063f2fde38b146108a6578063f759867a146108c657610314565b8063d79779b214610811578063d897833e14610831578063e33b7de31461085157610314565b8063b88d4fde14610767578063c87b56dd14610787578063c889004b146107a7578063ce7c2ac2146107bc578063d2766659146107dc578063d5abeb01146107fc57610314565b806396ea3a471161012e57806396ea3a47146106b45780639852595c146106d4578063a0712d68146106f4578063a22cb46514610707578063a87430ba14610727578063b1f536fa1461074757610314565b80637501f741146106135780637ce6edb8146106285780638462151c1461063d5780638b83209b1461066a5780638da5cb5b1461068a57806395d89b411461069f57610314565b80633a98ef39116102345780634f6ccce7116101ed5780636c0360eb116101c75780636c0360eb146105a957806370a08231146105be578063715018a6146105de578063732e71ef146105f357610314565b80634f6ccce71461054957806355f804b3146105695780636352211e1461058957610314565b80633a98ef39146104ac5780633ccfd60b146104c1578063406072a9146104c957806342842e0e146104e957806344a0d68a1461050957806348b750441461052957610314565b806318160ddd1161028657806318160ddd146104025780631916558714610417578063200d2ed214610437578063228025e81461044c57806323b872dd1461046c5780632f745c591461048c57610314565b806301ffc9a71461031957806306fdde031461034f578063081812fc14610371578063088a4ed01461039e578063095ea7b3146103c057806313faede6146103e057610314565b36610314577f6ef95f06320e7a25a04a175ca677b7052bdd97131872c2192525a629f51be7706102fb6108d9565b3460405161030a929190612bae565b60405180910390a1005b600080fd5b34801561032557600080fd5b50610339610334366004612a60565b6108dd565b6040516103469190612c48565b60405180910390f35b34801561035b57600080fd5b5061036461090a565b6040516103469190612c53565b34801561037d57600080fd5b5061039161038c366004612af0565b61099c565b6040516103469190612b9a565b3480156103aa57600080fd5b506103be6103b9366004612af0565b6109e8565b005b3480156103cc57600080fd5b506103be6103db366004612994565b610a2c565b3480156103ec57600080fd5b506103f5610ac4565b60405161034691906134fa565b34801561040e57600080fd5b506103f5610aca565b34801561042357600080fd5b506103be610432366004612856565b610ad0565b34801561044357600080fd5b50610339610bde565b34801561045857600080fd5b506103be610467366004612af0565b610be7565b34801561047857600080fd5b506103be6104873660046128aa565b610c2b565b34801561049857600080fd5b506103f56104a7366004612994565b610c63565b3480156104b857600080fd5b506103f5610d26565b6103be610d2c565b3480156104d557600080fd5b506103f56104e4366004612a98565b610dd7565b3480156104f557600080fd5b506103be6105043660046128aa565b610e02565b34801561051557600080fd5b506103be610524366004612af0565b610e1d565b34801561053557600080fd5b506103be610544366004612a98565b610e61565b34801561055557600080fd5b506103f5610564366004612af0565b611017565b34801561057557600080fd5b506103be610584366004612aaa565b611043565b34801561059557600080fd5b506103916105a4366004612af0565b611099565b3480156105b557600080fd5b506103646110f1565b3480156105ca57600080fd5b506103f56105d9366004612856565b61117f565b3480156105ea57600080fd5b506103be61121c565b3480156105ff57600080fd5b506103be61060e3660046129bf565b611267565b34801561061f57600080fd5b506103f5611344565b34801561063457600080fd5b506103f561134a565b34801561064957600080fd5b5061065d610658366004612856565b611350565b6040516103469190612c04565b34801561067657600080fd5b50610391610685366004612af0565b611436565b34801561069657600080fd5b50610391611474565b3480156106ab57600080fd5b50610364611483565b3480156106c057600080fd5b506103be6106cf3660046129bf565b611492565b3480156106e057600080fd5b506103f56106ef366004612856565b61163b565b6103be610702366004612af0565b611656565b34801561071357600080fd5b506103be610722366004612967565b611806565b34801561073357600080fd5b506103f5610742366004612856565b6118d4565b34801561075357600080fd5b506103f5610762366004612856565b6118e6565b34801561077357600080fd5b506103be6107823660046128ea565b61197a565b34801561079357600080fd5b506103646107a2366004612af0565b6119b9565b3480156107b357600080fd5b506103f5611a3c565b3480156107c857600080fd5b506103f56107d7366004612856565b611a42565b3480156107e857600080fd5b506103be6107f7366004612af0565b611a5d565b34801561080857600080fd5b506103f5611aa1565b34801561081d57600080fd5b506103f561082c366004612856565b611aa7565b34801561083d57600080fd5b506103be61084c366004612a28565b611ac2565b34801561085d57600080fd5b506103f5611b14565b34801561087257600080fd5b50610339610881366004612872565b611b1a565b34801561089257600080fd5b506103f56108a1366004612856565b611b48565b3480156108b257600080fd5b506103be6108c1366004612856565b611b5a565b6103be6108d4366004612af0565b611bc8565b3390565b60006001600160e01b0319821663780e9d6360e01b1480610902575061090282611d9b565b90505b919050565b60606000805461091990613591565b80601f016020809104026020016040519081016040528092919081815260200182805461094590613591565b80156109925780601f1061096757610100808354040283529160200191610992565b820191906000526020600020905b81548152906001019060200180831161097557829003601f168201915b5050505050905090565b60006109a782611ddb565b6109cc5760405162461bcd60e51b81526004016109c390613173565b60405180910390fd5b506000908152600460205260409020546001600160a01b031690565b6109f06108d9565b6001600160a01b0316610a01611474565b6001600160a01b031614610a275760405162461bcd60e51b81526004016109c3906131e1565b601255565b6000610a3782611099565b9050806001600160a01b0316836001600160a01b03161415610a6b5760405162461bcd60e51b81526004016109c3906132e8565b806001600160a01b0316610a7d6108d9565b6001600160a01b03161480610a995750610a99816108816108d9565b610ab55760405162461bcd60e51b81526004016109c39061304e565b610abf8383611e33565b505050565b60105481565b60025490565b6001600160a01b038116600090815260096020526040902054610b055760405162461bcd60e51b81526004016109c390612ddb565b6000610b0f611b14565b610b199047613503565b90506000610b308383610b2b8661163b565b611ea1565b905080610b4f5760405162461bcd60e51b81526004016109c390612fc2565b6001600160a01b0383166000908152600a602052604081208054839290610b77908490613503565b925050819055508060086000828254610b909190613503565b90915550610ba090508382611ee7565b7fdf20fd1e76bc69d672e4814fafb2c449bba3a5369d8359adf9e05e6fde87b0568382604051610bd1929190612bae565b60405180910390a1505050565b60155460ff1681565b610bef6108d9565b6001600160a01b0316610c00611474565b6001600160a01b031614610c265760405162461bcd60e51b81526004016109c3906131e1565b601155565b610c3c610c366108d9565b82611f83565b610c585760405162461bcd60e51b81526004016109c390613329565b610abf838383612000565b6000610c6e8361117f565b8210610c8c5760405162461bcd60e51b81526004016109c39061325f565b6000805b600254811015610d075760028181548110610cbb57634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546001600160a01b0386811691161415610cf75783821415610ceb579150610d209050565b610cf4826135cc565b91505b610d00816135cc565b9050610c90565b5060405162461bcd60e51b81526004016109c39061325f565b92915050565b60075490565b610d346108d9565b6001600160a01b0316610d45611474565b6001600160a01b031614610d6b5760405162461bcd60e51b81526004016109c3906131e1565b6000336001600160a01b031647604051610d8490612b97565b60006040518083038185875af1925050503d8060008114610dc1576040519150601f19603f3d011682016040523d82523d6000602084013e610dc6565b606091505b5050905080610dd457600080fd5b50565b6001600160a01b039182166000908152600d6020908152604080832093909416825291909152205490565b610abf8383836040518060200160405280600081525061197a565b610e256108d9565b6001600160a01b0316610e36611474565b6001600160a01b031614610e5c5760405162461bcd60e51b81526004016109c3906131e1565b601055565b6001600160a01b038116600090815260096020526040902054610e965760405162461bcd60e51b81526004016109c390612ddb565b6000610ea183611aa7565b6040516370a0823160e01b81526001600160a01b038516906370a0823190610ecd903090600401612b9a565b60206040518083038186803b158015610ee557600080fd5b505afa158015610ef9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f1d9190612b08565b610f279190613503565b90506000610f3a8383610b2b8787610dd7565b905080610f595760405162461bcd60e51b81526004016109c390612fc2565b6001600160a01b038085166000908152600d6020908152604080832093871683529290529081208054839290610f90908490613503565b90915550506001600160a01b0384166000908152600c602052604081208054839290610fbd908490613503565b90915550610fce90508484836120f1565b836001600160a01b03167f3be5b7a71e84ed12875d241991c70855ac5817d847039e17a9d895c1ceb0f18a8483604051611009929190612bae565b60405180910390a250505050565b6000611021610aca565b821061103f5760405162461bcd60e51b81526004016109c3906132b1565b5090565b61104b6108d9565b6001600160a01b031661105c611474565b6001600160a01b0316146110825760405162461bcd60e51b81526004016109c3906131e1565b805161109590600f906020840190612707565b5050565b600080600283815481106110bd57634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546001600160a01b03169050806109025760405162461bcd60e51b81526004016109c3906130f5565b600f80546110fe90613591565b80601f016020809104026020016040519081016040528092919081815260200182805461112a90613591565b80156111775780601f1061114c57610100808354040283529160200191611177565b820191906000526020600020905b81548152906001019060200180831161115a57829003601f168201915b505050505081565b60006001600160a01b0382166111a75760405162461bcd60e51b81526004016109c3906130ab565b600254600090815b8181101561121357600281815481106111d857634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546001600160a01b038681169116141561120357611200836135cc565b92505b61120c816135cc565b90506111af565b50909392505050565b6112246108d9565b6001600160a01b0316611235611474565b6001600160a01b03161461125b5760405162461bcd60e51b81526004016109c3906131e1565b6112656000612147565b565b61126f6108d9565b6001600160a01b0316611280611474565b6001600160a01b0316146112a65760405162461bcd60e51b81526004016109c3906131e1565b60005b8381101561133d578282828181106112d157634e487b7160e01b600052603260045260246000fd5b90506020020135601760008787858181106112fc57634e487b7160e01b600052603260045260246000fd5b90506020020160208101906113119190612856565b6001600160a01b0316815260208101919091526040016000205580611335816135cc565b9150506112a9565b5050505050565b60125481565b60135481565b606061135b8261117f565b60001061137a5760405162461bcd60e51b81526004016109c39061325f565b60006113858361117f565b905060008167ffffffffffffffff8111156113b057634e487b7160e01b600052604160045260246000fd5b6040519080825280602002602001820160405280156113d9578160200160208202803683370190505b50905060005b8281101561142e576113f18582610c63565b82828151811061141157634e487b7160e01b600052603260045260246000fd5b602090810291909101015280611426816135cc565b9150506113df565b509392505050565b6000600b828154811061145957634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546001600160a01b031692915050565b6006546001600160a01b031690565b60606001805461091990613591565b61149a6108d9565b6001600160a01b03166114ab611474565b6001600160a01b0316146114d15760405162461bcd60e51b81526004016109c3906131e1565b8281146114f05760405162461bcd60e51b81526004016109c39061300d565b6000806114fb610aca565b905060005b8581101561154c5786868281811061152857634e487b7160e01b600052603260045260246000fd5b905060200201358361153a9190613503565b9250611545816135cc565b9050611500565b5060115461155a8383613503565b11156115785760405162461bcd60e51b81526004016109c3906131bf565b6000915060005b838110156116325760005b8787838181106115aa57634e487b7160e01b600052603260045260246000fd5b90506020020135811015611621576116118686848181106115db57634e487b7160e01b600052603260045260246000fd5b90506020020160208101906115f09190612856565b846115fa816135cc565b955060405180602001604052806000815250612199565b61161a816135cc565b905061158a565b5061162b816135cc565b905061157f565b50505050505050565b6001600160a01b03166000908152600a602052604090205490565b6002600e5414156116795760405162461bcd60e51b81526004016109c390613480565b6002600e556013543360009081526014602052604090205461169c908390613503565b1115806116c157506116ac611474565b6001600160a01b0316336001600160a01b0316145b6116dd5760405162461bcd60e51b81526004016109c3906133b1565b60006116e7610aca565b60155490915060ff1661170c5760405162461bcd60e51b81526004016109c3906133f2565b6000821161172c5760405162461bcd60e51b81526004016109c3906134b7565b60125482111561174e5760405162461bcd60e51b81526004016109c3906131bf565b60115461175b8383613503565b11156117795760405162461bcd60e51b81526004016109c390612cf9565b81601054611787919061352f565b34101561179357600080fd5b60005b828110156117d1576117c1336117ac8385613503565b60405180602001604052806000815250612199565b6117ca816135cc565b9050611796565b50336000908152601460205260409020546117ed908390613503565b3360009081526014602052604090205550506001600e55565b61180e6108d9565b6001600160a01b0316826001600160a01b0316141561183f5760405162461bcd60e51b81526004016109c390612e65565b806005600061184c6108d9565b6001600160a01b03908116825260208083019390935260409182016000908120918716808252919093529120805460ff1916921515929092179091556118906108d9565b6001600160a01b03167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516118c89190612c48565b60405180910390a35050565b60146020526000908152604090205481565b60006001600160a01b03821661190e5760405162461bcd60e51b81526004016109c3906130ab565b600354600090815b81811015611213576003818154811061193f57634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546001600160a01b038681169116141561196a57611967836135cc565b92505b611973816135cc565b9050611916565b61198b6119856108d9565b83611f83565b6119a75760405162461bcd60e51b81526004016109c390613329565b6119b3848484846121cc565b50505050565b60606119c482611ddb565b6119e05760405162461bcd60e51b81526004016109c390612c66565b60006119ea6121ff565b90506000815111611a0a5760405180602001604052806000815250611a35565b80611a148461220e565b604051602001611a25929190612b68565b6040516020818303038152906040525b9392505050565b60165481565b6001600160a01b031660009081526009602052604090205490565b611a656108d9565b6001600160a01b0316611a76611474565b6001600160a01b031614611a9c5760405162461bcd60e51b81526004016109c3906131e1565b601355565b60115481565b6001600160a01b03166000908152600c602052604090205490565b611aca6108d9565b6001600160a01b0316611adb611474565b6001600160a01b031614611b015760405162461bcd60e51b81526004016109c3906131e1565b6015805460ff1916911515919091179055565b60085490565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b60176020526000908152604090205481565b611b626108d9565b6001600160a01b0316611b73611474565b6001600160a01b031614611b995760405162461bcd60e51b81526004016109c3906131e1565b6001600160a01b038116611bbf5760405162461bcd60e51b81526004016109c390612d18565b610dd481612147565b426016541115611bea5760405162461bcd60e51b81526004016109c390612dba565b60135433600090815260146020526040902054611c08908390613503565b111580611c2d5750611c18611474565b6001600160a01b0316336001600160a01b0316145b611c495760405162461bcd60e51b81526004016109c3906133b1565b6000611c53610aca565b336000908152601760205260409020546015549192509060ff1615611c8a5760405162461bcd60e51b81526004016109c3906133f2565b60008111611caa5760405162461bcd60e51b81526004016109c390612d95565b80831115611cca5760405162461bcd60e51b81526004016109c39061328f565b601154611cd78484613503565b1115611cf55760405162461bcd60e51b81526004016109c390613459565b3483601054611d04919061352f565b14611d215760405162461bcd60e51b81526004016109c3906134d4565b611d2b838261354e565b336000908152601760205260408120919091559050805b83811015611d6a57611d58336117ac8386613503565b80611d62816135cc565b915050611d42565b5033600090815260146020526040902054611d86908490613503565b33600090815260146020526040902055505050565b60006001600160e01b031982166331596e3760e01b1480611dcc57506001600160e01b03198216635b5e139f60e01b145b80610902575061090282612329565b60025460009082108015610902575060006001600160a01b031660028381548110611e1657634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546001600160a01b0316141592915050565b600081815260046020526040902080546001600160a01b0319166001600160a01b0384169081179091558190611e6882611099565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6007546001600160a01b03841660009081526009602052604081205490918391611ecb908661352f565b611ed5919061351b565b611edf919061354e565b949350505050565b80471015611f075760405162461bcd60e51b81526004016109c390612ef9565b6000826001600160a01b031682604051611f2090612b97565b60006040518083038185875af1925050503d8060008114611f5d576040519150601f19603f3d011682016040523d82523d6000602084013e611f62565b606091505b5050905080610abf5760405162461bcd60e51b81526004016109c390612e9c565b6000611f8e82611ddb565b611faa5760405162461bcd60e51b81526004016109c390612f76565b6000611fb583611099565b9050806001600160a01b0316846001600160a01b03161480611ff05750836001600160a01b0316611fe58461099c565b6001600160a01b0316145b80611edf5750611edf8185611b1a565b826001600160a01b031661201382611099565b6001600160a01b0316146120395760405162461bcd60e51b81526004016109c390613216565b6001600160a01b03821661205f5760405162461bcd60e51b81526004016109c390612e21565b61206a838383610abf565b612075600082611e33565b816002828154811061209757634e487b7160e01b600052603260045260246000fd5b6000918252602082200180546001600160a01b0319166001600160a01b03938416179055604051839285811692908716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9190a4505050565b610abf8363a9059cbb60e01b8484604051602401612110929190612bae565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152612342565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6121a383836123d1565b6121b060008484846124de565b610abf5760405162461bcd60e51b81526004016109c390612ca7565b6121d7848484612000565b6121e3848484846124de565b6119b35760405162461bcd60e51b81526004016109c390612ca7565b6060600f805461091990613591565b60608161223357506040805180820190915260018152600360fc1b6020820152610905565b8160005b811561225d5780612247816135cc565b91506122569050600a8361351b565b9150612237565b60008167ffffffffffffffff81111561228657634e487b7160e01b600052604160045260246000fd5b6040519080825280601f01601f1916602001820160405280156122b0576020820181803683370190505b5090505b8415611edf576122c560018361354e565b91506122d2600a866135e7565b6122dd906030613503565b60f81b81838151811061230057634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a905350612322600a8661351b565b94506122b4565b6001600160e01b031981166301ffc9a760e01b14919050565b6000612397826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166125f99092919063ffffffff16565b805190915015610abf57808060200190518101906123b59190612a44565b610abf5760405162461bcd60e51b81526004016109c39061340f565b6001600160a01b0382166123f75760405162461bcd60e51b81526004016109c39061313e565b61240081611ddb565b1561241d5760405162461bcd60e51b81526004016109c390612d5e565b61242960008383610abf565b6002805460018181019092557f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace0180546001600160a01b0385166001600160a01b0319918216811790925560038054938401815560009081527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b9093018054909116821790556040518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b60006124f2846001600160a01b0316612608565b156125ee57836001600160a01b031663150b7a0261250e6108d9565b8786866040518563ffffffff1660e01b81526004016125309493929190612bc7565b602060405180830381600087803b15801561254a57600080fd5b505af192505050801561257a575060408051601f3d908101601f1916820190925261257791810190612a7c565b60015b6125d4573d8080156125a8576040519150601f19603f3d011682016040523d82523d6000602084013e6125ad565b606091505b5080516125cc5760405162461bcd60e51b81526004016109c390612ca7565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611edf565b506001949350505050565b6060611edf848460008561260e565b3b151590565b6060824710156126305760405162461bcd60e51b81526004016109c390612f30565b61263985612608565b6126555760405162461bcd60e51b81526004016109c39061337a565b600080866001600160a01b031685876040516126719190612b4c565b60006040518083038185875af1925050503d80600081146126ae576040519150601f19603f3d011682016040523d82523d6000602084013e6126b3565b606091505b50915091506126c38282866126ce565b979650505050505050565b606083156126dd575081611a35565b8251156126ed5782518084602001fd5b8160405162461bcd60e51b81526004016109c39190612c53565b82805461271390613591565b90600052602060002090601f016020900481019282612735576000855561277b565b82601f1061274e57805160ff191683800117855561277b565b8280016001018555821561277b579182015b8281111561277b578251825591602001919060010190612760565b5061103f9291505b8082111561103f5760008155600101612783565b600067ffffffffffffffff808411156127b2576127b2613627565b604051601f8501601f19908116603f011681019082821181831017156127da576127da613627565b816040528093508581528686860111156127f357600080fd5b858560208301376000602087830101525050509392505050565b60008083601f84011261281e578182fd5b50813567ffffffffffffffff811115612835578182fd5b602083019150836020808302850101111561284f57600080fd5b9250929050565b600060208284031215612867578081fd5b8135611a358161363d565b60008060408385031215612884578081fd5b823561288f8161363d565b9150602083013561289f8161363d565b809150509250929050565b6000806000606084860312156128be578081fd5b83356128c98161363d565b925060208401356128d98161363d565b929592945050506040919091013590565b600080600080608085870312156128ff578081fd5b843561290a8161363d565b9350602085013561291a8161363d565b925060408501359150606085013567ffffffffffffffff81111561293c578182fd5b8501601f8101871361294c578182fd5b61295b87823560208401612797565b91505092959194509250565b60008060408385031215612979578182fd5b82356129848161363d565b9150602083013561289f81613652565b600080604083850312156129a6578182fd5b82356129b18161363d565b946020939093013593505050565b600080600080604085870312156129d4578384fd5b843567ffffffffffffffff808211156129eb578586fd5b6129f78883890161280d565b90965094506020870135915080821115612a0f578384fd5b50612a1c8782880161280d565b95989497509550505050565b600060208284031215612a39578081fd5b8135611a3581613652565b600060208284031215612a55578081fd5b8151611a3581613652565b600060208284031215612a71578081fd5b8135611a3581613660565b600060208284031215612a8d578081fd5b8151611a3581613660565b60008060408385031215612884578182fd5b600060208284031215612abb578081fd5b813567ffffffffffffffff811115612ad1578182fd5b8201601f81018413612ae1578182fd5b611edf84823560208401612797565b600060208284031215612b01578081fd5b5035919050565b600060208284031215612b19578081fd5b5051919050565b60008151808452612b38816020860160208601613565565b601f01601f19169290920160200192915050565b60008251612b5e818460208701613565565b9190910192915050565b60008351612b7a818460208801613565565b835190830190612b8e818360208801613565565b01949350505050565b90565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090612bfa90830184612b20565b9695505050505050565b6020808252825182820181905260009190848201906040850190845b81811015612c3c57835183529284019291840191600101612c20565b50909695505050505050565b901515815260200190565b600060208252611a356020830184612b20565b60208082526021908201527f4552433732314d657461646174613a204e6f6e6578697374656e7420746f6b656040820152603760f91b606082015260800190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b602080825260059082015264536f72727960d81b604082015260600190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b6020808252601c908201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604082015260600190565b6020808252600b908201526a4c6f77207265736572766560a81b604082015260600190565b602080825260079082015266139bdd081e595d60ca1b604082015260600190565b60208082526026908201527f5061796d656e7453706c69747465723a206163636f756e7420686173206e6f2060408201526573686172657360d01b606082015260800190565b60208082526024908201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646040820152637265737360e01b606082015260800190565b60208082526019908201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604082015260600190565b6020808252603a908201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260408201527f6563697069656e74206d61792068617665207265766572746564000000000000606082015260800190565b6020808252601d908201527f416464726573733a20696e73756666696369656e742062616c616e6365000000604082015260600190565b60208082526026908201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6040820152651c8818d85b1b60d21b606082015260800190565b6020808252602c908201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860408201526b34b9ba32b73a103a37b5b2b760a11b606082015260800190565b6020808252602b908201527f5061796d656e7453706c69747465723a206163636f756e74206973206e6f742060408201526a191d59481c185e5b595b9d60aa1b606082015260800190565b60208082526021908201527f50726f76696465207175616e74697469657320616e6420726563697069656e746040820152607360f81b606082015260800190565b60208082526038908201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760408201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000606082015260800190565b6020808252602a908201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604082015269726f206164647265737360b01b606082015260800190565b60208082526029908201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460408201526832b73a103a37b5b2b760b91b606082015260800190565b6020808252818101527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604082015260600190565b6020808252602c908201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860408201526b34b9ba32b73a103a37b5b2b760a11b606082015260800190565b602080825260089082015267546f6f206d616e7960c01b604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526029908201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960408201526839903737ba1037bbb760b91b606082015260800190565b60208082526016908201527522a9219b9918a2b73ab69d1037bbb732b91034b7b7b160511b604082015260600190565b602080825260089082015267547279206c65737360c01b604082015260600190565b60208082526017908201527f455243373231456e756d3a20676c6f62616c20696f6f62000000000000000000604082015260600190565b60208082526021908201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656040820152603960f91b606082015260800190565b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6040820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b606082015260800190565b6020808252601d908201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604082015260600190565b60208082526021908201527f45786365656473206d6178206d696e74206c696d6974207065722077616c6c656040820152601d60fa1b606082015260800190565b60208082526003908201526227b33360e91b604082015260600190565b6020808252602a908201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6040820152691bdd081cdd58d8d9595960b21b606082015260800190565b6020808252600d908201526c09adee4ca40e8d0c2dc40dac2f609b1b604082015260600190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b602080825260039082015262088ead60eb1b604082015260600190565b6020808252600c908201526b15dc9bdb99c8185b5bdd5b9d60a21b604082015260600190565b90815260200190565b60008219821115613516576135166135fb565b500190565b60008261352a5761352a613611565b500490565b6000816000190483118215151615613549576135496135fb565b500290565b600082821015613560576135606135fb565b500390565b60005b83811015613580578181015183820152602001613568565b838111156119b35750506000910152565b6002810460018216806135a557607f821691505b602082108114156135c657634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156135e0576135e06135fb565b5060010190565b6000826135f6576135f6613611565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114610dd457600080fd5b8015158114610dd457600080fd5b6001600160e01b031981168114610dd457600080fdfea26469706673582212207dba63291afa69e4b4d034f3726ce658446d6b85f0ecb9989f48c8e059a5199864736f6c63430008010033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000006426565706f73000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000054245455053000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001e68747470733a2f2f626565706f732e66756e2f6170692f626565706f732f0000
-----Decoded View---------------
Arg [0] : _name (string): Beepos
Arg [1] : _symbol (string): BEEPS
Arg [2] : _initBaseURI (string): https://beepos.fun/api/beepos/
-----Encoded View---------------
9 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [1] : 00000000000000000000000000000000000000000000000000000000000000a0
Arg [2] : 00000000000000000000000000000000000000000000000000000000000000e0
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000006
Arg [4] : 426565706f730000000000000000000000000000000000000000000000000000
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000005
Arg [6] : 4245455053000000000000000000000000000000000000000000000000000000
Arg [7] : 000000000000000000000000000000000000000000000000000000000000001e
Arg [8] : 68747470733a2f2f626565706f732e66756e2f6170692f626565706f732f0000
Deployed Bytecode Sourcemap
26239:4393:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11021:40;11037:12;:10;:12::i;:::-;11051:9;11021:40;;;;;;;:::i;:::-;;;;;;;;26239:4393;;;;;24706:225;;;;;;;;;;-1:-1:-1;24706:225:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18785:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;19419:221::-;;;;;;;;;;-1:-1:-1;19419:221:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;29971:106::-;;;;;;;;;;-1:-1:-1;29971:106:0;;;;;:::i;:::-;;:::i;:::-;;19001:412;;;;;;;;;;-1:-1:-1;19001:412:0;;;;;:::i;:::-;;:::i;26388:33::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;25867:110::-;;;;;;;;;;;;;:::i;11903:566::-;;;;;;;;;;-1:-1:-1;11903:566:0;;;;;:::i;:::-;;:::i;26616:26::-;;;;;;;;;;;;;:::i;30080:96::-;;;;;;;;;;-1:-1:-1;30080:96:0;;;;;:::i;:::-;;:::i;20117:339::-;;;;;;;;;;-1:-1:-1;20117:339:0;;;;;:::i;:::-;;:::i;24937:500::-;;;;;;;;;;-1:-1:-1;24937:500:0;;;;;:::i;:::-;;:::i;11077:91::-;;;;;;;;;;;;;:::i;30358:151::-;;;:::i;11644:135::-;;;;;;;;;;-1:-1:-1;11644:135:0;;;;;:::i;:::-;;:::i;20462:185::-;;;;;;;;;;-1:-1:-1;20462:185:0;;;;;:::i;:::-;;:::i;29892:76::-;;;;;;;;;;-1:-1:-1;29892:76:0;;;;;:::i;:::-;;:::i;12480:641::-;;;;;;;;;;-1:-1:-1;12480:641:0;;;;;:::i;:::-;;:::i;25983:194::-;;;;;;;;;;-1:-1:-1;25983:194:0;;;;;:::i;:::-;;:::i;30179:94::-;;;;;;;;;;-1:-1:-1;30179:94:0;;;;;:::i;:::-;;:::i;18540:239::-;;;;;;;;;;-1:-1:-1;18540:239:0;;;;;:::i;:::-;;:::i;26345:21::-;;;;;;;;;;;;;:::i;17697:414::-;;;;;;;;;;-1:-1:-1;17697:414:0;;;;;:::i;:::-;;:::i;3697:103::-;;;;;;;;;;;;;:::i;29370:201::-;;;;;;;;;;-1:-1:-1;29370:201:0;;;;;:::i;:::-;;:::i;26461:26::-;;;;;;;;;;;;;:::i;26491:35::-;;;;;;;;;;;;;:::i;25443:418::-;;;;;;;;;;-1:-1:-1;25443:418:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;11787:100::-;;;;;;;;;;-1:-1:-1;11787:100:0;;;;;:::i;:::-;;:::i;3472:87::-;;;;;;;;;;;;;:::i;18891:104::-;;;;;;;;;;;;;:::i;28800:542::-;;;;;;;;;;-1:-1:-1;28800:542:0;;;;;:::i;:::-;;:::i;11525:109::-;;;;;;;;;;-1:-1:-1;11525:109:0;;;;;:::i;:::-;;:::i;27375:602::-;;;;;;:::i;:::-;;:::i;19646:295::-;;;;;;;;;;-1:-1:-1;19646:295:0;;;;;:::i;:::-;;:::i;26572:38::-;;;;;;;;;;-1:-1:-1;26572:38:0;;;;;:::i;:::-;;:::i;18119:413::-;;;;;;;;;;-1:-1:-1;18119:413:0;;;;;:::i;:::-;;:::i;20653:328::-;;;;;;;;;;-1:-1:-1;20653:328:0;;;;;:::i;:::-;;:::i;29574:315::-;;;;;;;;;;-1:-1:-1;29574:315:0;;;;;:::i;:::-;;:::i;26667:39::-;;;;;;;;;;;;;:::i;11410:105::-;;;;;;;;;;-1:-1:-1;11410:105:0;;;;;:::i;:::-;;:::i;30513:116::-;;;;;;;;;;-1:-1:-1;30513:116:0;;;;;:::i;:::-;;:::i;26425:32::-;;;;;;;;;;;;;:::i;11283:119::-;;;;;;;;;;-1:-1:-1;11283:119:0;;;;;:::i;:::-;;:::i;30276:79::-;;;;;;;;;;-1:-1:-1;30276:79:0;;;;;:::i;:::-;;:::i;11178:95::-;;;;;;;;;;;;;:::i;19947:164::-;;;;;;;;;;-1:-1:-1;19947:164:0;;;;;:::i;:::-;;:::i;26710:51::-;;;;;;;;;;-1:-1:-1;26710:51:0;;;;;:::i;:::-;;:::i;3808:201::-;;;;;;;;;;-1:-1:-1;3808:201:0;;;;;:::i;:::-;;:::i;27986:792::-;;;;;;:::i;:::-;;:::i;3012:98::-;3092:10;3012:98;:::o;24706:225::-;24809:4;-1:-1:-1;;;;;;24833:50:0;;-1:-1:-1;;;24833:50:0;;:90;;;24887:36;24911:11;24887:23;:36::i;:::-;24826:97;;24706:225;;;;:::o;18785:100::-;18839:13;18872:5;18865:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18785:100;:::o;19419:221::-;19495:7;19523:16;19531:7;19523;:16::i;:::-;19515:73;;;;-1:-1:-1;;;19515:73:0;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;19608:24:0;;;;:15;:24;;;;;;-1:-1:-1;;;;;19608:24:0;;19419:221::o;29971:106::-;3620:12;:10;:12::i;:::-;-1:-1:-1;;;;;3609:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;3609:23:0;;3601:68;;;;-1:-1:-1;;;3601:68:0;;;;;;;:::i;:::-;30045:7:::1;:27:::0;29971:106::o;19001:412::-;19082:13;19098:24;19114:7;19098:15;:24::i;:::-;19082:40;;19147:5;-1:-1:-1;;;;;19141:11:0;:2;-1:-1:-1;;;;;19141:11:0;;;19133:57;;;;-1:-1:-1;;;19133:57:0;;;;;;;:::i;:::-;19241:5;-1:-1:-1;;;;;19225:21:0;:12;:10;:12::i;:::-;-1:-1:-1;;;;;19225:21:0;;:62;;;;19250:37;19267:5;19274:12;:10;:12::i;19250:37::-;19203:168;;;;-1:-1:-1;;;19203:168:0;;;;;;;:::i;:::-;19384:21;19393:2;19397:7;19384:8;:21::i;:::-;19001:412;;;:::o;26388:33::-;;;;:::o;25867:110::-;25955:7;:14;25867:110;:::o;11903:566::-;-1:-1:-1;;;;;11979:16:0;;11998:1;11979:16;;;:7;:16;;;;;;11971:71;;;;-1:-1:-1;;;11971:71:0;;;;;;;:::i;:::-;12055:21;12103:15;:13;:15::i;:::-;12079:39;;:21;:39;:::i;:::-;12055:63;;12129:15;12147:58;12163:7;12172:13;12187:17;12196:7;12187:8;:17::i;:::-;12147:15;:58::i;:::-;12129:76;-1:-1:-1;12226:12:0;12218:68;;;;-1:-1:-1;;;12218:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;12299:18:0;;;;;;:9;:18;;;;;:29;;12321:7;;12299:18;:29;;12321:7;;12299:29;:::i;:::-;;;;;;;;12357:7;12339:14;;:25;;;;;;;:::i;:::-;;;;-1:-1:-1;12377:35:0;;-1:-1:-1;12395:7:0;12404;12377:17;:35::i;:::-;12428:33;12444:7;12453;12428:33;;;;;;;:::i;:::-;;;;;;;;11903:566;;;:::o;26616:26::-;;;;;;:::o;30080:96::-;3620:12;:10;:12::i;:::-;-1:-1:-1;;;;;3609:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;3609:23:0;;3601:68;;;;-1:-1:-1;;;3601:68:0;;;;;;;:::i;:::-;30146:9:::1;:25:::0;30080:96::o;20117:339::-;20312:41;20331:12;:10;:12::i;:::-;20345:7;20312:18;:41::i;:::-;20304:103;;;;-1:-1:-1;;;20304:103:0;;;;;;;:::i;:::-;20420:28;20430:4;20436:2;20440:7;20420:9;:28::i;24937:500::-;25026:15;25070:24;25088:5;25070:17;:24::i;:::-;25062:5;:32;25054:67;;;;-1:-1:-1;;;25054:67:0;;;;;;;:::i;:::-;25132:10;25158:6;25153:226;25170:7;:14;25166:18;;25153:226;;;25219:7;25227:1;25219:10;;;;;;-1:-1:-1;;;25219:10:0;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;25210:19:0;;;25219:10;;25210:19;25206:162;;;25263:5;25254;:14;25250:102;;;25299:1;-1:-1:-1;25292:8:0;;-1:-1:-1;25292:8:0;25250:102;25345:7;;;:::i;:::-;;;25250:102;25186:3;;;:::i;:::-;;;25153:226;;;-1:-1:-1;25389:40:0;;-1:-1:-1;;;25389:40:0;;;;;;;:::i;24937:500::-;;;;;:::o;11077:91::-;11148:12;;11077:91;:::o;30358:151::-;3620:12;:10;:12::i;:::-;-1:-1:-1;;;;;3609:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;3609:23:0;;3601:68;;;;-1:-1:-1;;;3601:68:0;;;;;;;:::i;:::-;30408:12:::1;30434:10;-1:-1:-1::0;;;;;30426:24:0::1;30458:21;30426:58;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30407:77;;;30496:7;30488:16;;;::::0;::::1;;3680:1;30358:151::o:0;11644:135::-;-1:-1:-1;;;;;11741:21:0;;;11714:7;11741:21;;;:14;:21;;;;;;;;:30;;;;;;;;;;;;;11644:135::o;20462:185::-;20600:39;20617:4;20623:2;20627:7;20600:39;;;;;;;;;;;;:16;:39::i;29892:76::-;3620:12;:10;:12::i;:::-;-1:-1:-1;;;;;3609:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;3609:23:0;;3601:68;;;;-1:-1:-1;;;3601:68:0;;;;;;;:::i;:::-;29948:4:::1;:15:::0;29892:76::o;12480:641::-;-1:-1:-1;;;;;12562:16:0;;12581:1;12562:16;;;:7;:16;;;;;;12554:71;;;;-1:-1:-1;;;12554:71:0;;;;;;;:::i;:::-;12638:21;12695:20;12709:5;12695:13;:20::i;:::-;12662:30;;-1:-1:-1;;;12662:30:0;;-1:-1:-1;;;;;12662:15:0;;;;;:30;;12686:4;;12662:30;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:53;;;;:::i;:::-;12638:77;;12726:15;12744:65;12760:7;12769:13;12784:24;12793:5;12800:7;12784:8;:24::i;12744:65::-;12726:83;-1:-1:-1;12830:12:0;12822:68;;;;-1:-1:-1;;;12822:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;12903:21:0;;;;;;;:14;:21;;;;;;;;:30;;;;;;;;;;;:41;;12937:7;;12903:21;:41;;12937:7;;12903:41;:::i;:::-;;;;-1:-1:-1;;;;;;;12955:26:0;;;;;;:19;:26;;;;;:37;;12985:7;;12955:26;:37;;12985:7;;12955:37;:::i;:::-;;;;-1:-1:-1;13005:47:0;;-1:-1:-1;13028:5:0;13035:7;13044;13005:22;:47::i;:::-;13089:5;-1:-1:-1;;;;;13068:45:0;;13096:7;13105;13068:45;;;;;;;:::i;:::-;;;;;;;;12480:641;;;;:::o;25983:194::-;26058:7;26094:24;:22;:24::i;:::-;26086:5;:32;26078:68;;;;-1:-1:-1;;;26078:68:0;;;;;;;:::i;:::-;-1:-1:-1;26164:5:0;25983:194::o;30179:94::-;3620:12;:10;:12::i;:::-;-1:-1:-1;;;;;3609:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;3609:23:0;;3601:68;;;;-1:-1:-1;;;3601:68:0;;;;;;;:::i;:::-;30247:21;;::::1;::::0;:7:::1;::::0;:21:::1;::::0;::::1;::::0;::::1;:::i;:::-;;30179:94:::0;:::o;18540:239::-;18612:7;18632:13;18648:7;18656;18648:16;;;;;;-1:-1:-1;;;18648:16:0;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;18648:16:0;;-1:-1:-1;18683:19:0;18675:73;;;;-1:-1:-1;;;18675:73:0;;;;;;;:::i;26345:21::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;17697:414::-;17769:7;-1:-1:-1;;;;;17797:19:0;;17789:74;;;;-1:-1:-1;;;17789:74:0;;;;;;;:::i;:::-;17913:7;:14;17874:10;;;17938:119;17959:6;17955:1;:10;17938:119;;;17998:7;18006:1;17998:10;;;;;;-1:-1:-1;;;17998:10:0;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17989:19:0;;;17998:10;;17989:19;17985:61;;;18025:7;;;:::i;:::-;;;17985:61;17967:3;;;:::i;:::-;;;17938:119;;;-1:-1:-1;18098:5:0;;17697:414;-1:-1:-1;;;17697:414:0:o;3697:103::-;3620:12;:10;:12::i;:::-;-1:-1:-1;;;;;3609:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;3609:23:0;;3601:68;;;;-1:-1:-1;;;3601:68:0;;;;;;;:::i;:::-;3762:30:::1;3789:1;3762:18;:30::i;:::-;3697:103::o:0;29370:201::-;3620:12;:10;:12::i;:::-;-1:-1:-1;;;;;3609:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;3609:23:0;;3601:68;;;;-1:-1:-1;;;3601:68:0;;;;;;;:::i;:::-;29475:9:::1;29471:96;29486:21:::0;;::::1;29471:96;;;29551:8;;29560:1;29551:11;;;;;-1:-1:-1::0;;;29551:11:0::1;;;;;;;;;;;;;;;29517:16;:31;29534:10;;29545:1;29534:13;;;;;-1:-1:-1::0;;;29534:13:0::1;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;29517:31:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;29517:31:0;:45;29509:3;::::1;::::0;::::1;:::i;:::-;;;;29471:96;;;;29370:201:::0;;;;:::o;26461:26::-;;;;:::o;26491:35::-;;;;:::o;25443:418::-;25502:16;25543:24;25561:5;25543:17;:24::i;:::-;25539:1;:28;25531:63;;;;-1:-1:-1;;;25531:63:0;;;;;;;:::i;:::-;25605:18;25626:16;25636:5;25626:9;:16::i;:::-;25605:37;;25653:25;25695:10;25681:25;;;;;;-1:-1:-1;;;25681:25:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;25681:25:0;;25653:53;;25722:9;25717:111;25741:10;25737:1;:14;25717:111;;;25787:29;25807:5;25814:1;25787:19;:29::i;:::-;25773:8;25782:1;25773:11;;;;;;-1:-1:-1;;;25773:11:0;;;;;;;;;;;;;;;;;;:43;25753:3;;;;:::i;:::-;;;;25717:111;;;-1:-1:-1;25845:8:0;25443:418;-1:-1:-1;;;25443:418:0:o;11787:100::-;11838:7;11865;11873:5;11865:14;;;;;;-1:-1:-1;;;11865:14:0;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11865:14:0;;11787:100;-1:-1:-1;;11787:100:0:o;3472:87::-;3545:6;;-1:-1:-1;;;;;3545:6:0;3472:87;:::o;18891:104::-;18947:13;18980:7;18973:14;;;;;:::i;28800:542::-;3620:12;:10;:12::i;:::-;-1:-1:-1;;;;;3609:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;3609:23:0;;3601:68;;;;-1:-1:-1;;;3601:68:0;;;;;;;:::i;:::-;28900:35;;::::1;28892:82;;;;-1:-1:-1::0;;;28892:82:0::1;;;;;;;:::i;:::-;28978:18;29004:9:::0;29016:13:::1;:11;:13::i;:::-;29004:25;;29037:6;29033:78;29049:19:::0;;::::1;29033:78;;;29095:8;;29104:1;29095:11;;;;;-1:-1:-1::0;;;29095:11:0::1;;;;;;;;;;;;;;;29078:28;;;;;:::i;:::-;::::0;-1:-1:-1;29070:3:0::1;::::0;::::1;:::i;:::-;;;29033:78;;;-1:-1:-1::0;29144:9:0::1;::::0;29123:17:::1;29127:13:::0;29123:1;:17:::1;:::i;:::-;:30;;29114:53;;;;-1:-1:-1::0;;;29114:53:0::1;;;;;;;:::i;:::-;29171:20;;;29199:6;29195:130;29211:20:::0;;::::1;29195:130;;;29245:6;29241:80;29261:8;;29270:1;29261:11;;;;;-1:-1:-1::0;;;29261:11:0::1;;;;;;;;;;;;;;;29257:1;:15;29241:80;;;29282:34;29293:9;;29303:1;29293:12;;;;;-1:-1:-1::0;;;29293:12:0::1;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;29307:3:::0;::::1;::::0;::::1;:::i;:::-;;;29282:34;;;;;;;;;;;::::0;:9:::1;:34::i;:::-;29274:3;::::0;::::1;:::i;:::-;;;29241:80;;;-1:-1:-1::0;29233:3:0::1;::::0;::::1;:::i;:::-;;;29195:130;;;-1:-1:-1::0;;;;;;;28800:542:0:o;11525:109::-;-1:-1:-1;;;;;11608:18:0;11581:7;11608:18;;;:9;:18;;;;;;;11525:109::o;27375:602::-;261:1;481:7;;:19;;473:63;;;;-1:-1:-1;;;473:63:0;;;;;;;:::i;:::-;261:1;614:7;:18;27491:16:::1;::::0;27455:10:::1;27449:17;::::0;;;:5:::1;:17;::::0;;;;:24;:38:::1;::::0;27476:11;;27449:38:::1;:::i;:::-;:58;;:81;;;;27523:7;:5;:7::i;:::-;-1:-1:-1::0;;;;;27511:19:0::1;:10;-1:-1:-1::0;;;;;27511:19:0::1;;27449:81;27441:127;;;;-1:-1:-1::0;;;27441:127:0::1;;;;;;;:::i;:::-;27572:9;27584:13;:11;:13::i;:::-;27609:6;::::0;27572:25;;-1:-1:-1;27609:6:0::1;;27601:23;;;;-1:-1:-1::0;;;27601:23:0::1;;;;;;;:::i;:::-;27650:1;27636:11;:15;27628:32;;;;-1:-1:-1::0;;;27628:32:0::1;;;;;;;:::i;:::-;27687:7;;27672:11;:22;;27664:44;;;;-1:-1:-1::0;;;27664:44:0::1;;;;;;;:::i;:::-;27739:9;::::0;27720:15:::1;27724:11:::0;27720:1;:15:::1;:::i;:::-;:28;;27712:47;;;;-1:-1:-1::0;;;27712:47:0::1;;;;;;;:::i;:::-;27791:11;27784:4;;:18;;;;:::i;:::-;27771:9;:31;;27763:40;;;::::0;::::1;;27812:9;27807:85;27831:11;27827:1;:15;27807:85;;;27855:32;27865:10;27877:5;27881:1:::0;27877;:5:::1;:::i;:::-;27855:32;;;;;;;;;;;::::0;:9:::1;:32::i;:::-;27844:3;::::0;::::1;:::i;:::-;;;27807:85;;;-1:-1:-1::0;27928:10:0::1;27922:17;::::0;;;:5:::1;:17;::::0;;;;:24;:38:::1;::::0;27949:11;;27922:38:::1;:::i;:::-;27901:10;27895:17;::::0;;;:5:::1;:17;::::0;;;;:65;-1:-1:-1;;217:1:0;659:7;:22;27375:602::o;19646:295::-;19761:12;:10;:12::i;:::-;-1:-1:-1;;;;;19749:24:0;:8;-1:-1:-1;;;;;19749:24:0;;;19741:62;;;;-1:-1:-1;;;19741:62:0;;;;;;;:::i;:::-;19861:8;19816:18;:32;19835:12;:10;:12::i;:::-;-1:-1:-1;;;;;19816:32:0;;;;;;;;;;;;;;;;;-1:-1:-1;19816:32:0;;;:42;;;;;;;;;;;;:53;;-1:-1:-1;;19816:53:0;;;;;;;;;;;19900:12;:10;:12::i;:::-;-1:-1:-1;;;;;19885:48:0;;19924:8;19885:48;;;;;;:::i;:::-;;;;;;;;19646:295;;:::o;26572:38::-;;;;;;;;;;;;;:::o;18119:413::-;18188:7;-1:-1:-1;;;;;18216:19:0;;18208:74;;;;-1:-1:-1;;;18208:74:0;;;;;;;:::i;:::-;18332:8;:15;18293:10;;;18358:120;18379:6;18375:1;:10;18358:120;;;18418:8;18427:1;18418:11;;;;;;-1:-1:-1;;;18418:11:0;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;18409:20:0;;;18418:11;;18409:20;18405:62;;;18446:7;;;:::i;:::-;;;18405:62;18387:3;;;:::i;:::-;;;18358:120;;20653:328;20828:41;20847:12;:10;:12::i;:::-;20861:7;20828:18;:41::i;:::-;20820:103;;;;-1:-1:-1;;;20820:103:0;;;;;;;:::i;:::-;20934:39;20948:4;20954:2;20958:7;20967:5;20934:13;:39::i;:::-;20653:328;;;;:::o;29574:315::-;29647:13;29674:16;29682:7;29674;:16::i;:::-;29666:62;;;;-1:-1:-1;;;29666:62:0;;;;;;;:::i;:::-;29732:28;29763:10;:8;:10::i;:::-;29732:41;;29815:1;29790:14;29784:28;:32;:100;;;;;;;;;;;;;;;;;29843:14;29859:18;:7;:16;:18::i;:::-;29826:52;;;;;;;;;:::i;:::-;;;;;;;;;;;;;29784:100;29777:107;29574:315;-1:-1:-1;;;29574:315:0:o;26667:39::-;;;;:::o;11410:105::-;-1:-1:-1;;;;;11491:16:0;11464:7;11491:16;;;:7;:16;;;;;;;11410:105::o;30513:116::-;3620:12;:10;:12::i;:::-;-1:-1:-1;;;;;3609:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;3609:23:0;;3601:68;;;;-1:-1:-1;;;3601:68:0;;;;;;;:::i;:::-;30594:16:::1;:27:::0;30513:116::o;26425:32::-;;;;:::o;11283:119::-;-1:-1:-1;;;;;11368:26:0;11341:7;11368:26;;;:19;:26;;;;;;;11283:119::o;30276:79::-;3620:12;:10;:12::i;:::-;-1:-1:-1;;;;;3609:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;3609:23:0;;3601:68;;;;-1:-1:-1;;;3601:68:0;;;;;;;:::i;:::-;30334:6:::1;:16:::0;;-1:-1:-1;;30334:16:0::1;::::0;::::1;;::::0;;;::::1;::::0;;30276:79::o;11178:95::-;11251:14;;11178:95;:::o;19947:164::-;-1:-1:-1;;;;;20068:25:0;;;20044:4;20068:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;;;19947:164::o;26710:51::-;;;;;;;;;;;;;:::o;3808:201::-;3620:12;:10;:12::i;:::-;-1:-1:-1;;;;;3609:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;3609:23:0;;3601:68;;;;-1:-1:-1;;;3601:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;3897:22:0;::::1;3889:73;;;;-1:-1:-1::0;;;3889:73:0::1;;;;;;;:::i;:::-;3973:28;3992:8;3973:18;:28::i;27986:792::-:0;28070:15;28055:11;;:30;;28047:50;;;;-1:-1:-1;;;28047:50:0;;;;;;;:::i;:::-;28151:16;;28115:10;28109:17;;;;:5;:17;;;;;:24;:38;;28136:11;;28109:38;:::i;:::-;:58;;:81;;;;28183:7;:5;:7::i;:::-;-1:-1:-1;;;;;28171:19:0;:10;-1:-1:-1;;;;;28171:19:0;;28109:81;28101:127;;;;-1:-1:-1;;;28101:127:0;;;;;;;:::i;:::-;28232:9;28244:13;:11;:13::i;:::-;28296:10;28261:15;28279:28;;;:16;:28;;;;;;28320:6;;28232:25;;-1:-1:-1;28279:28:0;28320:6;;28319:7;28311:23;;;;-1:-1:-1;;;28311:23:0;;;;;;;:::i;:::-;28356:1;28346:7;:11;28338:35;;;;-1:-1:-1;;;28338:35:0;;;;;;;:::i;:::-;28400:7;28385:11;:22;;28377:43;;;;-1:-1:-1;;;28377:43:0;;;;;;;:::i;:::-;28451:9;;28432:15;28436:11;28432:1;:15;:::i;:::-;:28;;28424:54;;;;-1:-1:-1;;;28424:54:0;;;;;;;:::i;:::-;28512:9;28497:11;28490:4;;:18;;;;:::i;:::-;:31;28482:56;;;;-1:-1:-1;;;28482:56:0;;;;;;;:::i;:::-;28573:21;28583:11;28573:7;:21;:::i;:::-;28559:10;28542:28;;;;:16;:28;;;;;:52;;;;:28;-1:-1:-1;28542:28:0;28616:77;28635:11;28631:1;:15;28616:77;;;28656:32;28666:10;28678:5;28682:1;28678;:5;:::i;28656:32::-;28648:3;;;;:::i;:::-;;;;28616:77;;;-1:-1:-1;28729:10:0;28723:17;;;;:5;:17;;;;;:24;:38;;28750:11;;28723:38;:::i;:::-;28702:10;28696:17;;;;:5;:17;;;;;:65;-1:-1:-1;;;27986:792:0:o;17380:305::-;17482:4;-1:-1:-1;;;;;;17519:40:0;;-1:-1:-1;;;17519:40:0;;:105;;-1:-1:-1;;;;;;;17576:48:0;;-1:-1:-1;;;17576:48:0;17519:105;:158;;;;17641:36;17665:11;17641:23;:36::i;21310:155::-;21409:7;:14;21375:4;;21399:24;;:58;;;;;21455:1;-1:-1:-1;;;;;21427:30:0;:7;21435;21427:16;;;;;;-1:-1:-1;;;21427:16:0;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;21427:16:0;:30;;;21310:155;-1:-1:-1;;21310:155:0:o;23490:175::-;23565:24;;;;:15;:24;;;;;:29;;-1:-1:-1;;;;;;23565:29:0;-1:-1:-1;;;;;23565:29:0;;;;;;;;:24;;23619;23565;23619:15;:24::i;:::-;-1:-1:-1;;;;;23610:47:0;;;;;;;;;;;23490:175;;:::o;13131:248::-;13341:12;;-1:-1:-1;;;;;13321:16:0;;13277:7;13321:16;;;:7;:16;;;;;;13277:7;;13356:15;;13305:32;;:13;:32;:::i;:::-;13304:49;;;;:::i;:::-;:67;;;;:::i;:::-;13297:74;13131:248;-1:-1:-1;;;;13131:248:0:o;4450:317::-;4565:6;4540:21;:31;;4532:73;;;;-1:-1:-1;;;4532:73:0;;;;;;;:::i;:::-;4619:12;4637:9;-1:-1:-1;;;;;4637:14:0;4659:6;4637:33;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4618:52;;;4689:7;4681:78;;;;-1:-1:-1;;;4681:78:0;;;;;;;:::i;21468:349::-;21561:4;21586:16;21594:7;21586;:16::i;:::-;21578:73;;;;-1:-1:-1;;;21578:73:0;;;;;;;:::i;:::-;21662:13;21678:24;21694:7;21678:15;:24::i;:::-;21662:40;;21732:5;-1:-1:-1;;;;;21721:16:0;:7;-1:-1:-1;;;;;21721:16:0;;:51;;;;21765:7;-1:-1:-1;;;;;21741:31:0;:20;21753:7;21741:11;:20::i;:::-;-1:-1:-1;;;;;21741:31:0;;21721:51;:87;;;;21776:32;21793:5;21800:7;21776:16;:32::i;22970:517::-;23130:4;-1:-1:-1;;;;;23102:32:0;:24;23118:7;23102:15;:24::i;:::-;-1:-1:-1;;;;;23102:32:0;;23094:86;;;;-1:-1:-1;;;23094:86:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;23199:16:0;;23191:65;;;;-1:-1:-1;;;23191:65:0;;;;;;;:::i;:::-;23269:39;23290:4;23296:2;23300:7;23269:20;:39::i;:::-;23373:29;23390:1;23394:7;23373:8;:29::i;:::-;23432:2;23413:7;23421;23413:16;;;;;;-1:-1:-1;;;23413:16:0;;;;;;;;;;;;;;;;;:21;;-1:-1:-1;;;;;;23413:21:0;-1:-1:-1;;;;;23413:21:0;;;;;;23452:27;;23471:7;;23452:27;;;;;;;;;;23413:16;23452:27;22970:517;;;:::o;7839:211::-;7956:86;7976:5;8006:23;;;8031:2;8035:5;7983:58;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;7983:58:0;;;;;;;;;;;;;;-1:-1:-1;;;;;7983:58:0;-1:-1:-1;;;;;;7983:58:0;;;;;;;;;;7956:19;:86::i;4019:191::-;4112:6;;;-1:-1:-1;;;;;4129:17:0;;;-1:-1:-1;;;;;;4129:17:0;;;;;;;4162:40;;4112:6;;;4129:17;4112:6;;4162:40;;4093:16;;4162:40;4019:191;;:::o;21933:321::-;22063:18;22069:2;22073:7;22063:5;:18::i;:::-;22114:54;22145:1;22149:2;22153:7;22162:5;22114:22;:54::i;:::-;22092:154;;;;-1:-1:-1;;;22092:154:0;;;;;;;:::i;20992:315::-;21149:28;21159:4;21165:2;21169:7;21149:9;:28::i;:::-;21196:48;21219:4;21225:2;21229:7;21238:5;21196:22;:48::i;:::-;21188:111;;;;-1:-1:-1;;;21188:111:0;;;;;;;:::i;27263:89::-;27314:13;27340:7;27333:14;;;;;:::i;1616:534::-;1672:13;1704:10;1700:53;;-1:-1:-1;1731:10:0;;;;;;;;;;;;-1:-1:-1;;;1731:10:0;;;;;;1700:53;1778:5;1763:12;1819:78;1826:9;;1819:78;;1852:8;;;;:::i;:::-;;-1:-1:-1;1875:10:0;;-1:-1:-1;1883:2:0;1875:10;;:::i;:::-;;;1819:78;;;1907:19;1939:6;1929:17;;;;;;-1:-1:-1;;;1929:17:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1929:17:0;;1907:39;;1957:154;1964:10;;1957:154;;1991:11;2001:1;1991:11;;:::i;:::-;;-1:-1:-1;2060:10:0;2068:2;2060:5;:10;:::i;:::-;2047:24;;:2;:24;:::i;:::-;2034:39;;2017:6;2024;2017:14;;;;;;-1:-1:-1;;;2017:14:0;;;;;;;;;;;;:56;-1:-1:-1;;;;;2017:56:0;;;;;;;;-1:-1:-1;2088:11:0;2097:2;2088:11;;:::i;:::-;;;1957:154;;14305:157;-1:-1:-1;;;;;;14414:40:0;;-1:-1:-1;;;14414:40:0;14305:157;;;:::o;9553:375::-;9636:23;9662:69;9690:4;9662:69;;;;;;;;;;;;;;;;;9670:5;-1:-1:-1;;;;;9662:27:0;;;:69;;;;;:::i;:::-;9746:17;;9636:95;;-1:-1:-1;9746:21:0;9742:179;;9843:10;9832:30;;;;;;;;;;;;:::i;:::-;9824:85;;;;-1:-1:-1;;;9824:85:0;;;;;;;:::i;22257:374::-;-1:-1:-1;;;;;22337:16:0;;22329:61;;;;-1:-1:-1;;;22329:61:0;;;;;;;:::i;:::-;22410:16;22418:7;22410;:16::i;:::-;22409:17;22401:58;;;;-1:-1:-1;;;22401:58:0;;;;;;;:::i;:::-;22472:45;22501:1;22505:2;22509:7;22472:20;:45::i;:::-;22528:7;:16;;;;;;;;;;;;;-1:-1:-1;;;;;22528:16:0;;-1:-1:-1;;;;;;22528:16:0;;;;;;;;22555:8;:17;;;;;;;-1:-1:-1;22555:17:0;;;;;;;;;;;;;;;;22590:33;;22615:7;;-1:-1:-1;22590:33:0;;-1:-1:-1;;22590:33:0;22257:374;;:::o;23668:799::-;23823:4;23844:15;:2;-1:-1:-1;;;;;23844:13:0;;:15::i;:::-;23840:620;;;23896:2;-1:-1:-1;;;;;23880:36:0;;23917:12;:10;:12::i;:::-;23931:4;23937:7;23946:5;23880:72;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;23880:72:0;;;;;;;;-1:-1:-1;;23880:72:0;;;;;;;;;;;;:::i;:::-;;;23876:529;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;24122:13:0;;24118:272;;24165:60;;-1:-1:-1;;;24165:60:0;;;;;;;:::i;24118:272::-;24340:6;24334:13;24325:6;24321:2;24317:15;24310:38;23876:529;-1:-1:-1;;;;;;24003:51:0;-1:-1:-1;;;24003:51:0;;-1:-1:-1;23996:58:0;;23840:620;-1:-1:-1;24444:4:0;23668:799;;;;;;:::o;4960:229::-;5097:12;5129:52;5151:6;5159:4;5165:1;5168:12;5129:21;:52::i;4244:198::-;4378:20;4426:8;;;4244:198::o;5468:510::-;5638:12;5696:5;5671:21;:30;;5663:81;;;;-1:-1:-1;;;5663:81:0;;;;;;;:::i;:::-;5763:18;5774:6;5763:10;:18::i;:::-;5755:60;;;;-1:-1:-1;;;5755:60:0;;;;;;;:::i;:::-;5829:12;5843:23;5870:6;-1:-1:-1;;;;;5870:11:0;5889:5;5896:4;5870:31;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5828:73;;;;5919:51;5936:7;5945:10;5957:12;5919:16;:51::i;:::-;5912:58;5468:510;-1:-1:-1;;;;;;;5468:510:0:o;7221:550::-;7371:12;7400:7;7396:368;;;-1:-1:-1;7431:10:0;7424:17;;7396:368;7478:17;;:21;7474:279;;7581:10;7575:17;7642:15;7629:10;7625:2;7621:19;7614:44;7529:148;7724:12;7717:20;;-1:-1:-1;;;7717:20:0;;;;;;;;:::i;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14:633:1;;110:18;151:2;143:6;140:14;137:2;;;157:18;;:::i;:::-;232:2;226:9;200:2;286:15;;-1:-1:-1;;282:24:1;;;308:2;278:33;274:42;262:55;;;332:18;;;352:22;;;329:46;326:2;;;378:18;;:::i;:::-;418:10;414:2;407:22;447:6;438:15;;477:6;469;462:22;517:3;508:6;503:3;499:16;496:25;493:2;;;534:1;531;524:12;493:2;584:6;579:3;572:4;564:6;560:17;547:44;639:1;632:4;623:6;615;611:19;607:30;600:41;;;;90:557;;;;;:::o;652:404::-;;;785:3;778:4;770:6;766:17;762:27;752:2;;810:8;800;793:26;752:2;-1:-1:-1;840:20:1;;883:18;872:30;;869:2;;;922:8;912;905:26;869:2;966:4;958:6;954:17;942:29;;1029:3;1022:4;1014;1006:6;1002:17;994:6;990:30;986:41;983:50;980:2;;;1046:1;1043;1036:12;980:2;742:314;;;;;:::o;1061:259::-;;1173:2;1161:9;1152:7;1148:23;1144:32;1141:2;;;1194:6;1186;1179:22;1141:2;1238:9;1225:23;1257:33;1284:5;1257:33;:::i;1597:402::-;;;1726:2;1714:9;1705:7;1701:23;1697:32;1694:2;;;1747:6;1739;1732:22;1694:2;1791:9;1778:23;1810:33;1837:5;1810:33;:::i;:::-;1862:5;-1:-1:-1;1919:2:1;1904:18;;1891:32;1932:35;1891:32;1932:35;:::i;:::-;1986:7;1976:17;;;1684:315;;;;;:::o;2004:470::-;;;;2150:2;2138:9;2129:7;2125:23;2121:32;2118:2;;;2171:6;2163;2156:22;2118:2;2215:9;2202:23;2234:33;2261:5;2234:33;:::i;:::-;2286:5;-1:-1:-1;2343:2:1;2328:18;;2315:32;2356:35;2315:32;2356:35;:::i;:::-;2108:366;;2410:7;;-1:-1:-1;;;2464:2:1;2449:18;;;;2436:32;;2108:366::o;2479:830::-;;;;;2651:3;2639:9;2630:7;2626:23;2622:33;2619:2;;;2673:6;2665;2658:22;2619:2;2717:9;2704:23;2736:33;2763:5;2736:33;:::i;:::-;2788:5;-1:-1:-1;2845:2:1;2830:18;;2817:32;2858:35;2817:32;2858:35;:::i;:::-;2912:7;-1:-1:-1;2966:2:1;2951:18;;2938:32;;-1:-1:-1;3021:2:1;3006:18;;2993:32;3048:18;3037:30;;3034:2;;;3085:6;3077;3070:22;3034:2;3113:22;;3166:4;3158:13;;3154:27;-1:-1:-1;3144:2:1;;3200:6;3192;3185:22;3144:2;3228:75;3295:7;3290:2;3277:16;3272:2;3268;3264:11;3228:75;:::i;:::-;3218:85;;;2609:700;;;;;;;:::o;3314:396::-;;;3440:2;3428:9;3419:7;3415:23;3411:32;3408:2;;;3461:6;3453;3446:22;3408:2;3505:9;3492:23;3524:33;3551:5;3524:33;:::i;:::-;3576:5;-1:-1:-1;3633:2:1;3618:18;;3605:32;3646;3605;3646;:::i;3715:327::-;;;3844:2;3832:9;3823:7;3819:23;3815:32;3812:2;;;3865:6;3857;3850:22;3812:2;3909:9;3896:23;3928:33;3955:5;3928:33;:::i;:::-;3980:5;4032:2;4017:18;;;;4004:32;;-1:-1:-1;;;3802:240:1:o;4047:815::-;;;;;4246:2;4234:9;4225:7;4221:23;4217:32;4214:2;;;4267:6;4259;4252:22;4214:2;4312:9;4299:23;4341:18;4382:2;4374:6;4371:14;4368:2;;;4403:6;4395;4388:22;4368:2;4447:76;4515:7;4506:6;4495:9;4491:22;4447:76;:::i;:::-;4542:8;;-1:-1:-1;4421:102:1;-1:-1:-1;4630:2:1;4615:18;;4602:32;;-1:-1:-1;4646:16:1;;;4643:2;;;4680:6;4672;4665:22;4643:2;;4724:78;4794:7;4783:8;4772:9;4768:24;4724:78;:::i;:::-;4204:658;;;;-1:-1:-1;4821:8:1;-1:-1:-1;;;;4204:658:1:o;5687:253::-;;5796:2;5784:9;5775:7;5771:23;5767:32;5764:2;;;5817:6;5809;5802:22;5764:2;5861:9;5848:23;5880:30;5904:5;5880:30;:::i;5945:257::-;;6065:2;6053:9;6044:7;6040:23;6036:32;6033:2;;;6086:6;6078;6071:22;6033:2;6123:9;6117:16;6142:30;6166:5;6142:30;:::i;6207:257::-;;6318:2;6306:9;6297:7;6293:23;6289:32;6286:2;;;6339:6;6331;6324:22;6286:2;6383:9;6370:23;6402:32;6428:5;6402:32;:::i;6469:261::-;;6591:2;6579:9;6570:7;6566:23;6562:32;6559:2;;;6612:6;6604;6597:22;6559:2;6649:9;6643:16;6668:32;6694:5;6668:32;:::i;7013:416::-;;;7156:2;7144:9;7135:7;7131:23;7127:32;7124:2;;;7177:6;7169;7162:22;7434:482;;7556:2;7544:9;7535:7;7531:23;7527:32;7524:2;;;7577:6;7569;7562:22;7524:2;7622:9;7609:23;7655:18;7647:6;7644:30;7641:2;;;7692:6;7684;7677:22;7641:2;7720:22;;7773:4;7765:13;;7761:27;-1:-1:-1;7751:2:1;;7807:6;7799;7792:22;7751:2;7835:75;7902:7;7897:2;7884:16;7879:2;7875;7871:11;7835:75;:::i;7921:190::-;;8033:2;8021:9;8012:7;8008:23;8004:32;8001:2;;;8054:6;8046;8039:22;8001:2;-1:-1:-1;8082:23:1;;7991:120;-1:-1:-1;7991:120:1:o;8116:194::-;;8239:2;8227:9;8218:7;8214:23;8210:32;8207:2;;;8260:6;8252;8245:22;8207:2;-1:-1:-1;8288:16:1;;8197:113;-1:-1:-1;8197:113:1:o;8315:259::-;;8396:5;8390:12;8423:6;8418:3;8411:19;8439:63;8495:6;8488:4;8483:3;8479:14;8472:4;8465:5;8461:16;8439:63;:::i;:::-;8556:2;8535:15;-1:-1:-1;;8531:29:1;8522:39;;;;8563:4;8518:50;;8366:208;-1:-1:-1;;8366:208:1:o;8579:274::-;;8746:6;8740:13;8762:53;8808:6;8803:3;8796:4;8788:6;8784:17;8762:53;:::i;:::-;8831:16;;;;;8716:137;-1:-1:-1;;8716:137:1:o;8858:470::-;;9075:6;9069:13;9091:53;9137:6;9132:3;9125:4;9117:6;9113:17;9091:53;:::i;:::-;9207:13;;9166:16;;;;9229:57;9207:13;9166:16;9263:4;9251:17;;9229:57;:::i;:::-;9302:20;;9045:283;-1:-1:-1;;;;9045:283:1:o;9333:205::-;9533:3;9524:14::o;9543:203::-;-1:-1:-1;;;;;9707:32:1;;;;9689:51;;9677:2;9662:18;;9644:102::o;9751:282::-;-1:-1:-1;;;;;9951:32:1;;;;9933:51;;10015:2;10000:18;;9993:34;9921:2;9906:18;;9888:145::o;10038:490::-;-1:-1:-1;;;;;10307:15:1;;;10289:34;;10359:15;;10354:2;10339:18;;10332:43;10406:2;10391:18;;10384:34;;;10454:3;10449:2;10434:18;;10427:31;;;10038:490;;10475:47;;10502:19;;10494:6;10475:47;:::i;:::-;10467:55;10241:287;-1:-1:-1;;;;;;10241:287:1:o;10812:635::-;10983:2;11035:21;;;11105:13;;11008:18;;;11127:22;;;10812:635;;10983:2;11206:15;;;;11180:2;11165:18;;;10812:635;11252:169;11266:6;11263:1;11260:13;11252:169;;;11327:13;;11315:26;;11396:15;;;;11361:12;;;;11288:1;11281:9;11252:169;;;-1:-1:-1;11438:3:1;;10963:484;-1:-1:-1;;;;;;10963:484:1:o;11452:187::-;11617:14;;11610:22;11592:41;;11580:2;11565:18;;11547:92::o;11644:221::-;;11793:2;11782:9;11775:21;11813:46;11855:2;11844:9;11840:18;11832:6;11813:46;:::i;11870:397::-;12072:2;12054:21;;;12111:2;12091:18;;;12084:30;12150:34;12145:2;12130:18;;12123:62;-1:-1:-1;;;12216:2:1;12201:18;;12194:31;12257:3;12242:19;;12044:223::o;12272:414::-;12474:2;12456:21;;;12513:2;12493:18;;;12486:30;12552:34;12547:2;12532:18;;12525:62;-1:-1:-1;;;12618:2:1;12603:18;;12596:48;12676:3;12661:19;;12446:240::o;12691:328::-;12893:2;12875:21;;;12932:1;12912:18;;;12905:29;-1:-1:-1;;;12965:2:1;12950:18;;12943:35;13010:2;12995:18;;12865:154::o;13024:402::-;13226:2;13208:21;;;13265:2;13245:18;;;13238:30;13304:34;13299:2;13284:18;;13277:62;-1:-1:-1;;;13370:2:1;13355:18;;13348:36;13416:3;13401:19;;13198:228::o;13431:352::-;13633:2;13615:21;;;13672:2;13652:18;;;13645:30;13711;13706:2;13691:18;;13684:58;13774:2;13759:18;;13605:178::o;13788:335::-;13990:2;13972:21;;;14029:2;14009:18;;;14002:30;-1:-1:-1;;;14063:2:1;14048:18;;14041:41;14114:2;14099:18;;13962:161::o;14128:330::-;14330:2;14312:21;;;14369:1;14349:18;;;14342:29;-1:-1:-1;;;14402:2:1;14387:18;;14380:37;14449:2;14434:18;;14302:156::o;14463:402::-;14665:2;14647:21;;;14704:2;14684:18;;;14677:30;14743:34;14738:2;14723:18;;14716:62;-1:-1:-1;;;14809:2:1;14794:18;;14787:36;14855:3;14840:19;;14637:228::o;14870:400::-;15072:2;15054:21;;;15111:2;15091:18;;;15084:30;15150:34;15145:2;15130:18;;15123:62;-1:-1:-1;;;15216:2:1;15201:18;;15194:34;15260:3;15245:19;;15044:226::o;15275:349::-;15477:2;15459:21;;;15516:2;15496:18;;;15489:30;15555:27;15550:2;15535:18;;15528:55;15615:2;15600:18;;15449:175::o;15629:422::-;15831:2;15813:21;;;15870:2;15850:18;;;15843:30;15909:34;15904:2;15889:18;;15882:62;15980:28;15975:2;15960:18;;15953:56;16041:3;16026:19;;15803:248::o;16056:353::-;16258:2;16240:21;;;16297:2;16277:18;;;16270:30;16336:31;16331:2;16316:18;;16309:59;16400:2;16385:18;;16230:179::o;16414:402::-;16616:2;16598:21;;;16655:2;16635:18;;;16628:30;16694:34;16689:2;16674:18;;16667:62;-1:-1:-1;;;16760:2:1;16745:18;;16738:36;16806:3;16791:19;;16588:228::o;16821:408::-;17023:2;17005:21;;;17062:2;17042:18;;;17035:30;17101:34;17096:2;17081:18;;17074:62;-1:-1:-1;;;17167:2:1;17152:18;;17145:42;17219:3;17204:19;;16995:234::o;17234:407::-;17436:2;17418:21;;;17475:2;17455:18;;;17448:30;17514:34;17509:2;17494:18;;17487:62;-1:-1:-1;;;17580:2:1;17565:18;;17558:41;17631:3;17616:19;;17408:233::o;17646:397::-;17848:2;17830:21;;;17887:2;17867:18;;;17860:30;17926:34;17921:2;17906:18;;17899:62;-1:-1:-1;;;17992:2:1;17977:18;;17970:31;18033:3;18018:19;;17820:223::o;18048:420::-;18250:2;18232:21;;;18289:2;18269:18;;;18262:30;18328:34;18323:2;18308:18;;18301:62;18399:26;18394:2;18379:18;;18372:54;18458:3;18443:19;;18222:246::o;18473:406::-;18675:2;18657:21;;;18714:2;18694:18;;;18687:30;18753:34;18748:2;18733:18;;18726:62;-1:-1:-1;;;18819:2:1;18804:18;;18797:40;18869:3;18854:19;;18647:232::o;18884:405::-;19086:2;19068:21;;;19125:2;19105:18;;;19098:30;19164:34;19159:2;19144:18;;19137:62;-1:-1:-1;;;19230:2:1;19215:18;;19208:39;19279:3;19264:19;;19058:231::o;19294:356::-;19496:2;19478:21;;;19515:18;;;19508:30;19574:34;19569:2;19554:18;;19547:62;19641:2;19626:18;;19468:182::o;19655:408::-;19857:2;19839:21;;;19896:2;19876:18;;;19869:30;19935:34;19930:2;19915:18;;19908:62;-1:-1:-1;;;20001:2:1;19986:18;;19979:42;20053:3;20038:19;;19829:234::o;20068:331::-;20270:2;20252:21;;;20309:1;20289:18;;;20282:29;-1:-1:-1;;;20342:2:1;20327:18;;20320:38;20390:2;20375:18;;20242:157::o;20404:356::-;20606:2;20588:21;;;20625:18;;;20618:30;20684:34;20679:2;20664:18;;20657:62;20751:2;20736:18;;20578:182::o;20765:405::-;20967:2;20949:21;;;21006:2;20986:18;;;20979:30;21045:34;21040:2;21025:18;;21018:62;-1:-1:-1;;;21111:2:1;21096:18;;21089:39;21160:3;21145:19;;20939:231::o;21175:346::-;21377:2;21359:21;;;21416:2;21396:18;;;21389:30;-1:-1:-1;;;21450:2:1;21435:18;;21428:52;21512:2;21497:18;;21349:172::o;21526:331::-;21728:2;21710:21;;;21767:1;21747:18;;;21740:29;-1:-1:-1;;;21800:2:1;21785:18;;21778:38;21848:2;21833:18;;21700:157::o;21862:347::-;22064:2;22046:21;;;22103:2;22083:18;;;22076:30;22142:25;22137:2;22122:18;;22115:53;22200:2;22185:18;;22036:173::o;22214:397::-;22416:2;22398:21;;;22455:2;22435:18;;;22428:30;22494:34;22489:2;22474:18;;22467:62;-1:-1:-1;;;22560:2:1;22545:18;;22538:31;22601:3;22586:19;;22388:223::o;22616:413::-;22818:2;22800:21;;;22857:2;22837:18;;;22830:30;22896:34;22891:2;22876:18;;22869:62;-1:-1:-1;;;22962:2:1;22947:18;;22940:47;23019:3;23004:19;;22790:239::o;23034:353::-;23236:2;23218:21;;;23275:2;23255:18;;;23248:30;23314:31;23309:2;23294:18;;23287:59;23378:2;23363:18;;23208:179::o;23392:397::-;23594:2;23576:21;;;23633:2;23613:18;;;23606:30;23672:34;23667:2;23652:18;;23645:62;-1:-1:-1;;;23738:2:1;23723:18;;23716:31;23779:3;23764:19;;23566:223::o;23794:326::-;23996:2;23978:21;;;24035:1;24015:18;;;24008:29;-1:-1:-1;;;24068:2:1;24053:18;;24046:33;24111:2;24096:18;;23968:152::o;24125:406::-;24327:2;24309:21;;;24366:2;24346:18;;;24339:30;24405:34;24400:2;24385:18;;24378:62;-1:-1:-1;;;24471:2:1;24456:18;;24449:40;24521:3;24506:19;;24299:232::o;24536:337::-;24738:2;24720:21;;;24777:2;24757:18;;;24750:30;-1:-1:-1;;;24811:2:1;24796:18;;24789:43;24864:2;24849:18;;24710:163::o;24878:355::-;25080:2;25062:21;;;25119:2;25099:18;;;25092:30;25158:33;25153:2;25138:18;;25131:61;25224:2;25209:18;;25052:181::o;25238:326::-;25440:2;25422:21;;;25479:1;25459:18;;;25452:29;-1:-1:-1;;;25512:2:1;25497:18;;25490:33;25555:2;25540:18;;25412:152::o;25569:336::-;25771:2;25753:21;;;25810:2;25790:18;;;25783:30;-1:-1:-1;;;25844:2:1;25829:18;;25822:42;25896:2;25881:18;;25743:162::o;25910:177::-;26056:25;;;26044:2;26029:18;;26011:76::o;26092:128::-;;26163:1;26159:6;26156:1;26153:13;26150:2;;;26169:18;;:::i;:::-;-1:-1:-1;26205:9:1;;26140:80::o;26225:120::-;;26291:1;26281:2;;26296:18;;:::i;:::-;-1:-1:-1;26330:9:1;;26271:74::o;26350:168::-;;26456:1;26452;26448:6;26444:14;26441:1;26438:21;26433:1;26426:9;26419:17;26415:45;26412:2;;;26463:18;;:::i;:::-;-1:-1:-1;26503:9:1;;26402:116::o;26523:125::-;;26591:1;26588;26585:8;26582:2;;;26596:18;;:::i;:::-;-1:-1:-1;26633:9:1;;26572:76::o;26653:258::-;26725:1;26735:113;26749:6;26746:1;26743:13;26735:113;;;26825:11;;;26819:18;26806:11;;;26799:39;26771:2;26764:10;26735:113;;;26866:6;26863:1;26860:13;26857:2;;;-1:-1:-1;;26901:1:1;26883:16;;26876:27;26706:205::o;26916:380::-;27001:1;26991:12;;27048:1;27038:12;;;27059:2;;27113:4;27105:6;27101:17;27091:27;;27059:2;27166;27158:6;27155:14;27135:18;27132:38;27129:2;;;27212:10;27207:3;27203:20;27200:1;27193:31;27247:4;27244:1;27237:15;27275:4;27272:1;27265:15;27129:2;;26971:325;;;:::o;27301:135::-;;-1:-1:-1;;27361:17:1;;27358:2;;;27381:18;;:::i;:::-;-1:-1:-1;27428:1:1;27417:13;;27348:88::o;27441:112::-;;27499:1;27489:2;;27504:18;;:::i;:::-;-1:-1:-1;27538:9:1;;27479:74::o;27558:127::-;27619:10;27614:3;27610:20;27607:1;27600:31;27650:4;27647:1;27640:15;27674:4;27671:1;27664:15;27690:127;27751:10;27746:3;27742:20;27739:1;27732:31;27782:4;27779:1;27772:15;27806:4;27803:1;27796:15;27822:127;27883:10;27878:3;27874:20;27871:1;27864:31;27914:4;27911:1;27904:15;27938:4;27935:1;27928:15;27954:133;-1:-1:-1;;;;;28031:31:1;;28021:42;;28011:2;;28077:1;28074;28067:12;28092:120;28180:5;28173:13;28166:21;28159:5;28156:32;28146:2;;28202:1;28199;28192:12;28217:133;-1:-1:-1;;;;;;28293:32:1;;28283:43;;28273:2;;28340:1;28337;28330:12
Swarm Source
ipfs://7dba63291afa69e4b4d034f3726ce658446d6b85f0ecb9989f48c8e059a51998
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ 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.