Contract 0x5b6f04bffd8651860461736a498f584b2dc3af28 1

 

Contract Overview

Balance:
50 MATIC

MATIC Value:
$48.60 (@ $0.97/MATIC)

Token:
 
Txn Hash Method
Block
From
To
Value [Txn Fee]
0x47b98050e28e34f1ae0eedb6d0379375bf1f47a2a2e85bf6554e65b9eab67455Mint With P808316749412022-08-08 23:08:106 days 7 hrs ago0x9bdd969b35b0ba80014a9ba771a3842883eac1ba IN  0x5b6f04bffd8651860461736a498f584b2dc3af280 MATIC0.013534515 45
0x89312886ec7bfffb647122b7ae40dc35969d22d2488befd8f3cb3375d5cb42deMint With P808307213682022-07-14 17:25:4431 days 13 hrs ago0x9bdd969b35b0ba80014a9ba771a3842883eac1ba IN  0x5b6f04bffd8651860461736a498f584b2dc3af280 MATIC0.028779625 155
0x2a677da3e8dddd86728e8e817802082ab306b9af0e8a6a3ac8a4a54c7a580914Mint303064702022-07-03 23:04:3042 days 8 hrs ago0x9bdd969b35b0ba80014a9ba771a3842883eac1ba IN  0x5b6f04bffd8651860461736a498f584b2dc3af2850 MATIC0.024432495 155
0xce4b53bedd539128e905679b2cb6b1006e1dc31205bcb7653ae284bc7e7aa8f9Mint With P808301494052022-06-29 20:39:3546 days 10 hrs ago0xa4db53aa433f8ffe458bff092a9aeecca9217ecf IN  0x5b6f04bffd8651860461736a498f584b2dc3af280 MATIC0.0113931125 62.3
0x13a3099e2e5e7b6964eec47f3be4441f6078a3e3b165c883d71f175fda0cd024Mint With P808301359812022-06-29 12:14:1446 days 18 hrs ago0x982e289f1471162fe29694e70bfe4c1b7b94e760 IN  0x5b6f04bffd8651860461736a498f584b2dc3af280 MATIC0.028345625 155
0x1d231c08f927407cd6aee67042c105fbbecbaeeb999221f9fb90d33061b6c23eMint With P808299813492022-06-25 12:57:3950 days 18 hrs ago0xfd3066a5299299514e5c796d3b3fae8c744320f5 IN  0x5b6f04bffd8651860461736a498f584b2dc3af280 MATIC0.005928772587 32.419809093
0xd89c7e8267bc8c73288b7aca9d2a4273b141faf8b8994e958b8eb0dfedf0370cMint With P808299457662022-06-24 13:12:5251 days 17 hrs ago0xa4db53aa433f8ffe458bff092a9aeecca9217ecf IN  0x5b6f04bffd8651860461736a498f584b2dc3af280 MATIC0.0060192475 30.1
0x71fe57cc1c0002af3175e2543584f650ff8d8374e23b3179064ba2cc5fda8f44Withdra P808287589122022-05-25 16:31:2981 days 14 hrs ago0x9bdd969b35b0ba80014a9ba771a3842883eac1ba IN  0x5b6f04bffd8651860461736a498f584b2dc3af280 MATIC0.00266854 70
0xbbfc80095705f0d78eae37eec2d11b909d8a20116f36c315e16cadd2a24c4e50Withdraw287589082022-05-25 16:31:1781 days 14 hrs ago0x9bdd969b35b0ba80014a9ba771a3842883eac1ba IN  0x5b6f04bffd8651860461736a498f584b2dc3af280 MATIC0.00212331 70
0x01e6c5b6ba4d97c5e54026a4eca536e0ad00fdb96ffa082a457665b0ed1d8ccaSafe Transfer Fr...284331002022-05-17 14:58:1189 days 16 hrs ago0x9bdd969b35b0ba80014a9ba771a3842883eac1ba IN  0x5b6f04bffd8651860461736a498f584b2dc3af280 MATIC0.01519307 170
0x701de26cc58e570babb6b42a6395d6f27af75b5b1fe045f409e254e52a2a71edMint With P808284330422022-05-17 14:56:1189 days 16 hrs ago0x9bdd969b35b0ba80014a9ba771a3842883eac1ba IN  0x5b6f04bffd8651860461736a498f584b2dc3af280 MATIC0.03156475 170
0x5d10d2ba82f9347c6b4198645030cb0f84d3face3d049719eac3c3f8bf7c4057Mint282324212022-05-12 14:42:0294 days 16 hrs ago0xa4db53aa433f8ffe458bff092a9aeecca9217ecf IN  0x5b6f04bffd8651860461736a498f584b2dc3af2850 MATIC0.1430430795 897.3
0x07442866e72c48d6a29b5900ee56a85a3d67d695520e11432b14d3038525e84fSet Approval For...276748372022-04-28 11:16:18108 days 19 hrs ago0xb2f3705392d09f2d7478609ae0ef59ecde2cc94e IN  0x5b6f04bffd8651860461736a498f584b2dc3af280 MATIC0.002113168 45.7
0x3e20a9c58f01970fa25347885ba364e43eaefef55266194f6d7f4e959975cc6dTransfer From276747612022-04-28 11:13:42108 days 19 hrs ago0x5c9458eab70f41b956f74d94f79166c04618a4c6 IN  0x5b6f04bffd8651860461736a498f584b2dc3af280 MATIC0.002777860385 32.084690118
0x19e7b59b485e130764df37ce0e43ad803ecbb7ae217486d48ae81913271a1e2aTransfer From276747532022-04-28 11:13:26108 days 19 hrs ago0x5c9458eab70f41b956f74d94f79166c04618a4c6 IN  0x5b6f04bffd8651860461736a498f584b2dc3af280 MATIC0.002453107799 33.025590004
0xa0d58809d6c0b22cab93dce1815104b0f73da5d21a7af60bf07a13d1f33541bcTransfer From276747482022-04-28 11:13:12108 days 19 hrs ago0x5c9458eab70f41b956f74d94f79166c04618a4c6 IN  0x5b6f04bffd8651860461736a498f584b2dc3af280 MATIC0.003298235031 34.047000001
0x088ae1e96790132585d3a28938739648831b325d3eaa3cd3e76805c4b6159b5dTransfer From276747242022-04-28 11:12:24108 days 19 hrs ago0x5c9458eab70f41b956f74d94f79166c04618a4c6 IN  0x5b6f04bffd8651860461736a498f584b2dc3af280 MATIC0.003199626867 33.02908826
0x44a8d5f35f4f0817cde2d64d80369271fb413195c59a8ab8687f67b534ad6497Transfer From276747182022-04-28 11:12:12108 days 19 hrs ago0x5c9458eab70f41b956f74d94f79166c04618a4c6 IN  0x5b6f04bffd8651860461736a498f584b2dc3af280 MATIC0.002879761939 34.050606453
0x5aba9247b31b72225afb9a9b47083a55d288e7a2c578f6034223e5f4aafe31bbTransfer From276747022022-04-28 11:11:40108 days 19 hrs ago0x5c9458eab70f41b956f74d94f79166c04618a4c6 IN  0x5b6f04bffd8651860461736a498f584b2dc3af280 MATIC0.00294995004 34.880517903
0xbb3e2a0ff6f4bee3c0a74ef66204d1694d0fd6fc600af078607c4df560f28e4bTransfer From276746942022-04-28 11:11:24108 days 19 hrs ago0x5c9458eab70f41b956f74d94f79166c04618a4c6 IN  0x5b6f04bffd8651860461736a498f584b2dc3af280 MATIC0.003041185608 35.959296808
0x8120f73e3ed4fec75e12b0f3246c27d1fdd0b651474bc62881b306ca30ed1199Transfer From276746842022-04-28 11:11:00108 days 19 hrs ago0x5c9458eab70f41b956f74d94f79166c04618a4c6 IN  0x5b6f04bffd8651860461736a498f584b2dc3af280 MATIC0.00290683189 34.37068438
0x06b9670a13ea5e5128601e5046e77625c88dee38051f86c8922e5b5d347ef956Transfer From276746732022-04-28 11:10:38108 days 19 hrs ago0x5c9458eab70f41b956f74d94f79166c04618a4c6 IN  0x5b6f04bffd8651860461736a498f584b2dc3af280 MATIC0.003627118866 37.442000002
0x1afbf59369d64038527ec047518b94326243a1a59b1a07671309095a794cd789Transfer From276746632022-04-28 11:10:18108 days 19 hrs ago0x5c9458eab70f41b956f74d94f79166c04618a4c6 IN  0x5b6f04bffd8651860461736a498f584b2dc3af280 MATIC0.002966154989 35.072126915
0x8ff9affb88143e0be29183af816edbe21fa27e0cd0b53fda9f3d0b2ce58425ffTransfer From276746552022-04-28 11:10:02108 days 19 hrs ago0x5c9458eab70f41b956f74d94f79166c04618a4c6 IN  0x5b6f04bffd8651860461736a498f584b2dc3af280 MATIC0.002888562905 34.154669999
0x461b1074cf670f4e7329d5d1a5d2013a26c5d46fc70dcd958326c958f9079f4fTransfer From276746482022-04-28 11:09:48108 days 19 hrs ago0x5c9458eab70f41b956f74d94f79166c04618a4c6 IN  0x5b6f04bffd8651860461736a498f584b2dc3af280 MATIC0.003026688764 35.787884606
[ Download CSV Export 
Latest 2 internal transactions
Parent Txn Hash Block From To Value
0xbbfc80095705f0d78eae37eec2d11b909d8a20116f36c315e16cadd2a24c4e50287589082022-05-25 16:31:1781 days 14 hrs ago 0x5b6f04bffd8651860461736a498f584b2dc3af280x9bdd969b35b0ba80014a9ba771a3842883eac1ba650 MATIC
0x98320bc12e34546319f49eb63ed52706723baa906c5467350e7df242a3ad35d1258996582022-03-13 13:57:29154 days 17 hrs ago 0x5b6f04bffd8651860461736a498f584b2dc3af280x9bdd969b35b0ba80014a9ba771a3842883eac1ba150 MATIC
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
New808Punks

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at polygonscan.com on 2022-03-05
*/

// SPDX-License-Identifier: MIT LICENSE
/**
New808Punks ERC-721 contract
Name          : New808Punks
Symbol        : 808Punks
Blockchain    : Polygon
Owner Account : 0x9BDD969B35b0BA80014A9Ba771a3842883Eac1bA
(c) by Didar Metu  2022. MIT Licence.
*/
pragma solidity ^0.8.0;
interface IERC165 {
    function supportsInterface(bytes4 interfaceId) external view returns (bool);
}
abstract contract ERC165 is IERC165 {
    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
        return interfaceId == type(IERC165).interfaceId;
    }
}
interface IERC721 is IERC165 {
    event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);
    event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);
    event ApprovalForAll(address indexed owner, address indexed operator, bool approved);
    function balanceOf(address owner) external view returns (uint256 balance);
    function ownerOf(uint256 tokenId) external view returns (address owner);
    function safeTransferFrom(address from, address to, uint256 tokenId) external;
    function transferFrom(address from, address to, uint256 tokenId) external;
    function approve(address to, uint256 tokenId) external;
    function getApproved(uint256 tokenId) external view returns (address operator);
    function setApprovalForAll(address operator, bool _approved) external;
    function isApprovedForAll(address owner, address operator) external view returns (bool);
    function safeTransferFrom(address from, address to, uint256 tokenId, bytes calldata data) external;
}
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);
}

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);
    }
}
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);
            }
        }
    }
}
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);
}
interface IERC721Receiver {
    function onERC721Received(address operator, address from, uint256 tokenId, bytes calldata data) external returns (bytes4);
}
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }
    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}
contract ERC721 is Context, ERC165, IERC721, IERC721Metadata {
    using Address for address;
    using Strings for uint256;
    string private _name;
    string private _symbol;
    mapping(uint256 => address) private _owners;
    mapping(address => uint256) private _balances;
    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");
        return _balances[owner];
    }
    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 tokenURI(uint256 tokenId) public view virtual override returns (string memory) {
        require(_exists(tokenId), "ERC721Metadata: URI query for nonexistent token");
        string memory baseURI = _baseURI();
        return bytes(baseURI).length > 0 ? string(abi.encodePacked(baseURI, tokenId.toString())) : "";
    }
    function _baseURI() internal view virtual returns (string memory) {
        return "";
    }
    function approve(address to, uint256 tokenId) public virtual override {
        address owner = ERC721.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 {
        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 _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 = ERC721.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);

        _balances[to] += 1;
        _owners[tokenId] = to;

        emit Transfer(address(0), to, tokenId);
    }
    function _burn(uint256 tokenId) internal virtual {
        address owner = ERC721.ownerOf(tokenId);
        _beforeTokenTransfer(owner, address(0), tokenId);
        _approve(address(0), tokenId);
        _balances[owner] -= 1;
        delete _owners[tokenId];
        emit Transfer(owner, address(0), tokenId);
    }
    function _transfer(
        address from,
        address to,
        uint256 tokenId
    ) internal virtual {
        require(ERC721.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);
        _approve(address(0), tokenId);
        _balances[from] -= 1;
        _balances[to] += 1;
        _owners[tokenId] = to;
        emit Transfer(from, to, tokenId);
    }
    function _approve(address to, uint256 tokenId) internal virtual {
        _tokenApprovals[tokenId] = to;
        emit Approval(ERC721.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 {}
}
abstract contract ERC721Enumerable is ERC721, IERC721Enumerable {
    mapping(address => mapping(uint256 => uint256)) private _ownedTokens;
    mapping(uint256 => uint256) private _ownedTokensIndex;
    uint256[] private _allTokens;
    mapping(uint256 => uint256) private _allTokensIndex;
    function supportsInterface(bytes4 interfaceId) public view virtual override(IERC165, ERC721) returns (bool) {
        return interfaceId == type(IERC721Enumerable).interfaceId || super.supportsInterface(interfaceId);
    }
    function tokenOfOwnerByIndex(address owner, uint256 index) public view virtual override returns (uint256) {
        require(index < ERC721.balanceOf(owner), "ERC721Enumerable: owner index out of bounds");
        return _ownedTokens[owner][index];
    }
    function totalSupply() public view virtual override returns (uint256) {
        return _allTokens.length;
    }
    function tokenByIndex(uint256 index) public view virtual override returns (uint256) {
        require(index < ERC721Enumerable.totalSupply(), "ERC721Enumerable: global index out of bounds");
        return _allTokens[index];
    }
    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 tokenId
    ) internal virtual override {
        super._beforeTokenTransfer(from, to, tokenId);
        if (from == address(0)) {
            _addTokenToAllTokensEnumeration(tokenId);
        } else if (from != to) {
            _removeTokenFromOwnerEnumeration(from, tokenId);
        }
        if (to == address(0)) {
            _removeTokenFromAllTokensEnumeration(tokenId);
        } else if (to != from) {
            _addTokenToOwnerEnumeration(to, tokenId);
        }
    }
    function _addTokenToOwnerEnumeration(address to, uint256 tokenId) private {
        uint256 length = ERC721.balanceOf(to);
        _ownedTokens[to][length] = tokenId;
        _ownedTokensIndex[tokenId] = length;
    }
    function _addTokenToAllTokensEnumeration(uint256 tokenId) private {
        _allTokensIndex[tokenId] = _allTokens.length;
        _allTokens.push(tokenId);
    }
    function _removeTokenFromOwnerEnumeration(address from, uint256 tokenId) private {
        uint256 lastTokenIndex = ERC721.balanceOf(from) - 1;
        uint256 tokenIndex = _ownedTokensIndex[tokenId];
        if (tokenIndex != lastTokenIndex) {
            uint256 lastTokenId = _ownedTokens[from][lastTokenIndex];
            _ownedTokens[from][tokenIndex] = lastTokenId;
            _ownedTokensIndex[lastTokenId] = tokenIndex;
        }
        delete _ownedTokensIndex[tokenId];
        delete _ownedTokens[from][lastTokenIndex];
    }
    function _removeTokenFromAllTokensEnumeration(uint256 tokenId) private {
        uint256 lastTokenIndex = _allTokens.length - 1;
        uint256 tokenIndex = _allTokensIndex[tokenId];
        uint256 lastTokenId = _allTokens[lastTokenIndex];
        _allTokens[tokenIndex] = lastTokenId;
        _allTokensIndex[lastTokenId] = tokenIndex;
        delete _allTokensIndex[tokenId];
        _allTokens.pop();
    }
}
abstract contract Ownable is Context {
    address private _owner;
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    constructor() {
        _setOwner(_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 {
        _setOwner(address(0));
    }
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _setOwner(newOwner);
    }
    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}
interface ERC20{
    function balanceOf(address check) external returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    function transfer(address recipient, uint256 amount) external returns (bool);
}

pragma solidity >=0.7.0 <0.9.0;

contract New808Punks is ERC721Enumerable, Ownable {
  using Strings for uint256;

  uint256 public maxSupply = 808;
  uint256 public nftPerAddressLimit = 30;
  bool public paused = false;
  bool public revealed = false;
  mapping(address => uint256) public addressMintedBalance;
  string public baseExtension = ".json";
  string public notRevealedUri = "https://new808.tk/default.json";
  string public baseURI = "https://new808.tk/punks/";
  ERC20 public P808 = ERC20(0x9fB83691d9Fc7Fca4739d05Cb8402c3E273a50eB);
  uint256 public mintP808Price = 25000 ether; //25k P808
  uint256 public mintMaticPrice = 50 ether; // 50 MATIC

  constructor(
  ) ERC721("New808Punks", "808Punks") {}


  function mint(uint256 _mintAmount) public payable {
    require(!paused, "The contract is paused");
    uint256 supply = totalSupply();
    require(_mintAmount > 0, "You need to mint at least 1 NFT");
    require(supply + _mintAmount <= maxSupply, "Maximum NFT limit exceeded");

    if (msg.sender != owner()) {
        uint256 ownerMintedCount = addressMintedBalance[msg.sender];
        require(ownerMintedCount + _mintAmount <= nftPerAddressLimit, "Maximum NFT per address exceeded");
        require(msg.value >= mintMaticPrice * _mintAmount, "Insufficient funds");
    }
    for (uint256 i = 1; i <= _mintAmount; i++) {
      addressMintedBalance[msg.sender]++;
      _safeMint(msg.sender, supply + i);
    }
  }

  function mintWithP808(uint256 _mintAmount) external {
    require(!paused, "The contract is paused");
    uint256 supply = totalSupply();
    require(_mintAmount > 0, "You need to mint at least 1 NFT");
    require(supply + _mintAmount <= maxSupply, "Maximum NFT limit exceeded");
    uint256 ownerMintedCount = addressMintedBalance[msg.sender];
    require(ownerMintedCount + _mintAmount <= nftPerAddressLimit, "Maximum NFT per address exceeded");
    require(P808.transferFrom(msg.sender, address(this), _mintAmount * mintP808Price), "Insufficient funds");
    for (uint256 i = 1; i <= _mintAmount; i++) {
        addressMintedBalance[msg.sender]++;
        _safeMint(msg.sender, supply + i);
    }
  }

  function _baseURI() internal view virtual override returns (string memory) {
    return baseURI;
  }

  function walletOfOwner(address _owner) public view returns (uint256[] memory)
  {
    uint256 ownerTokenCount = balanceOf(_owner);
    uint256[] memory tokenIds = new uint256[](ownerTokenCount);
    for (uint256 i; i < ownerTokenCount; i++) {
      tokenIds[i] = tokenOfOwnerByIndex(_owner, i);
    }
    return tokenIds;
  }

  function tokenURI(uint256 tokenId) public view virtual override returns (string memory)
  {
    require(
      _exists(tokenId),
      "ERC721Metadata: URI query for nonexistent token"
    );

    if(revealed == false) {
        return notRevealedUri;
    }

    string memory currentBaseURI = _baseURI();
    return bytes(currentBaseURI).length > 0
        ? string(abi.encodePacked(currentBaseURI, tokenId.toString(), baseExtension))
        : "";
  }

  function reveal() public onlyOwner() {
      revealed = true;
  }

  function setNftPerAddressLimit(uint256 _limit) public onlyOwner() {
    nftPerAddressLimit = _limit;
  }

  function setBaseURI(string memory _newBaseURI) public onlyOwner {
    baseURI = _newBaseURI;
  }

  function setBaseExtension(string memory _newBaseExtension) public onlyOwner {
    baseExtension = _newBaseExtension;
  }

  function setNotRevealedURI(string memory _newNotRevealedURI) public onlyOwner {
    notRevealedUri = _newNotRevealedURI;
  }

  function pause(bool _state) public onlyOwner {
    paused = _state;
  }
  function updateP808Price(uint newP808Price) public onlyOwner{
        mintP808Price =  newP808Price;
    }

  function updateMaticPrice(uint newMaticPrice) public onlyOwner{
        mintMaticPrice =  newMaticPrice;
    }

  function withdraw() public payable onlyOwner {
    (bool success, ) = payable(msg.sender).call{value: address(this).balance}("");
    require(success);
  }
  function withdraP808() public onlyOwner {
        uint256 balance  = P808.balanceOf(address(this));
        P808.transfer(address(owner()),balance);
    }
  function setP808ContractAddress(address newAddress) public onlyOwner{
        require (newAddress != address(0), "Update to zero address not possible");
        P808 = ERC20(newAddress);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"P808","outputs":[{"internalType":"contract ERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"addressMintedBalance","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":"baseExtension","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baseURI","outputs":[{"internalType":"string","name":"","type":"string"}],"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":"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":"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":[],"name":"mintMaticPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mintP808Price","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_mintAmount","type":"uint256"}],"name":"mintWithP808","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nftPerAddressLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"notRevealedUri","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":"bool","name":"_state","type":"bool"}],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"reveal","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"revealed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":"_newBaseExtension","type":"string"}],"name":"setBaseExtension","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_newBaseURI","type":"string"}],"name":"setBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_limit","type":"uint256"}],"name":"setNftPerAddressLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_newNotRevealedURI","type":"string"}],"name":"setNotRevealedURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"setP808ContractAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMaticPrice","type":"uint256"}],"name":"updateMaticPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newP808Price","type":"uint256"}],"name":"updateP808Price","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"walletOfOwner","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdraP808","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"payable","type":"function"}]

610328600b55601e600c55600d805461ffff1916905560c06040526005608081905264173539b7b760d91b60a09081526200003e91600f9190620001fe565b5060408051808201909152601e8082527f68747470733a2f2f6e65773830382e746b2f64656661756c742e6a736f6e000060209092019182526200008591601091620001fe565b506040805180820190915260188082527f68747470733a2f2f6e65773830382e746b2f70756e6b732f00000000000000006020909201918252620000cc91601191620001fe565b50601280546001600160a01b031916739fb83691d9fc7fca4739d05cb8402c3e273a50eb17905569054b40b1f852bda000006013556802b5e3af16b18800006014553480156200011b57600080fd5b50604080518082018252600b81526a4e657738303850756e6b7360a81b60208083019182528351808501909452600884526738303850756e6b7360c01b9084015281519192916200016f91600091620001fe565b50805162000185906001906020840190620001fe565b505050620001a26200019c620001a860201b60201c565b620001ac565b620002e1565b3390565b600a80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b8280546200020c90620002a4565b90600052602060002090601f0160209004810192826200023057600085556200027b565b82601f106200024b57805160ff19168380011785556200027b565b828001600101855582156200027b579182015b828111156200027b5782518255916020019190600101906200025e565b50620002899291506200028d565b5090565b5b808211156200028957600081556001016200028e565b600181811c90821680620002b957607f821691505b60208210811415620002db57634e487b7160e01b600052602260045260246000fd5b50919050565b612bcd80620002f16000396000f3fe6080604052600436106102675760003560e01c806370a0823111610144578063b88d4fde116100b6578063d5abeb011161007a578063d5abeb01146106dd578063da3ef23f146106f3578063e985e9c514610713578063f2c4ce1e1461075c578063f2fde38b1461077c578063f8fdcec41461079c57600080fd5b8063b88d4fde14610652578063ba7d2c7614610672578063c668286214610688578063c87b56dd1461069d578063d0eb26b0146106bd57600080fd5b80638da5cb5b116101085780638da5cb5b146105c157806395d89b41146105df578063a0712d68146105f4578063a22cb46514610607578063a475b5dd14610627578063b7003dc61461063c57600080fd5b806370a0823114610541578063715018a61461056157806377d5db1e146105765780637ce9ed841461058c578063802527e3146105a157600080fd5b80632f745c59116101dd5780634f6ccce7116101a15780634f6ccce71461049357806351830227146104b357806355f804b3146104d25780635c975abb146104f25780636352211e1461050c5780636c0360eb1461052c57600080fd5b80632f745c59146103fe57806338d02e051461041e5780633ccfd60b1461043e57806342842e0e14610446578063438b63001461046657600080fd5b8063081c8c441161022f578063081c8c441461033d578063095ea7b31461035257806318160ddd1461037257806318cae2691461039157806322d93849146103be57806323b872dd146103de57600080fd5b806301ffc9a71461026c57806302329a29146102a15780630566d2de146102c357806306fdde03146102fb578063081812fc1461031d575b600080fd5b34801561027857600080fd5b5061028c6102873660046126fc565b6107bc565b60405190151581526020015b60405180910390f35b3480156102ad57600080fd5b506102c16102bc3660046126c2565b6107e7565b005b3480156102cf57600080fd5b506012546102e3906001600160a01b031681565b6040516001600160a01b039091168152602001610298565b34801561030757600080fd5b5061031061082d565b6040516102989190612922565b34801561032957600080fd5b506102e361033836600461277f565b6108bf565b34801561034957600080fd5b50610310610954565b34801561035e57600080fd5b506102c161036d366004612698565b6109e2565b34801561037e57600080fd5b506008545b604051908152602001610298565b34801561039d57600080fd5b506103836103ac36600461255b565b600e6020526000908152604090205481565b3480156103ca57600080fd5b506102c16103d936600461277f565b610af8565b3480156103ea57600080fd5b506102c16103f93660046125a9565b610b27565b34801561040a57600080fd5b50610383610419366004612698565b610b58565b34801561042a57600080fd5b506102c161043936600461255b565b610bee565b6102c1610c9c565b34801561045257600080fd5b506102c16104613660046125a9565b610d1e565b34801561047257600080fd5b5061048661048136600461255b565b610d39565b60405161029891906128de565b34801561049f57600080fd5b506103836104ae36600461277f565b610ddb565b3480156104bf57600080fd5b50600d5461028c90610100900460ff1681565b3480156104de57600080fd5b506102c16104ed366004612736565b610e6e565b3480156104fe57600080fd5b50600d5461028c9060ff1681565b34801561051857600080fd5b506102e361052736600461277f565b610eaf565b34801561053857600080fd5b50610310610f26565b34801561054d57600080fd5b5061038361055c36600461255b565b610f33565b34801561056d57600080fd5b506102c1610fba565b34801561058257600080fd5b5061038360135481565b34801561059857600080fd5b506102c1610ff0565b3480156105ad57600080fd5b506102c16105bc36600461277f565b61113e565b3480156105cd57600080fd5b50600a546001600160a01b03166102e3565b3480156105eb57600080fd5b506103106113f1565b6102c161060236600461277f565b611400565b34801561061357600080fd5b506102c1610622366004612661565b611620565b34801561063357600080fd5b506102c16116e5565b34801561064857600080fd5b5061038360145481565b34801561065e57600080fd5b506102c161066d3660046125e5565b611720565b34801561067e57600080fd5b50610383600c5481565b34801561069457600080fd5b50610310611752565b3480156106a957600080fd5b506103106106b836600461277f565b61175f565b3480156106c957600080fd5b506102c16106d836600461277f565b6118de565b3480156106e957600080fd5b50610383600b5481565b3480156106ff57600080fd5b506102c161070e366004612736565b61190d565b34801561071f57600080fd5b5061028c61072e366004612576565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b34801561076857600080fd5b506102c1610777366004612736565b61194a565b34801561078857600080fd5b506102c161079736600461255b565b611987565b3480156107a857600080fd5b506102c16107b736600461277f565b611a1f565b60006001600160e01b0319821663780e9d6360e01b14806107e157506107e182611a4e565b92915050565b600a546001600160a01b0316331461081a5760405162461bcd60e51b815260040161081190612987565b60405180910390fd5b600d805460ff1916911515919091179055565b60606000805461083c90612a9b565b80601f016020809104026020016040519081016040528092919081815260200182805461086890612a9b565b80156108b55780601f1061088a576101008083540402835291602001916108b5565b820191906000526020600020905b81548152906001019060200180831161089857829003601f168201915b5050505050905090565b6000818152600260205260408120546001600160a01b03166109385760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b6064820152608401610811565b506000908152600460205260409020546001600160a01b031690565b6010805461096190612a9b565b80601f016020809104026020016040519081016040528092919081815260200182805461098d90612a9b565b80156109da5780601f106109af576101008083540402835291602001916109da565b820191906000526020600020905b8154815290600101906020018083116109bd57829003601f168201915b505050505081565b60006109ed82610eaf565b9050806001600160a01b0316836001600160a01b03161415610a5b5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b6064820152608401610811565b336001600160a01b0382161480610a775750610a77813361072e565b610ae95760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c00000000000000006064820152608401610811565b610af38383611a9e565b505050565b600a546001600160a01b03163314610b225760405162461bcd60e51b815260040161081190612987565b601355565b610b313382611b0c565b610b4d5760405162461bcd60e51b8152600401610811906129bc565b610af3838383611c03565b6000610b6383610f33565b8210610bc55760405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201526a74206f6620626f756e647360a81b6064820152608401610811565b506001600160a01b03919091166000908152600660209081526040808320938352929052205490565b600a546001600160a01b03163314610c185760405162461bcd60e51b815260040161081190612987565b6001600160a01b038116610c7a5760405162461bcd60e51b815260206004820152602360248201527f55706461746520746f207a65726f2061646472657373206e6f7420706f737369604482015262626c6560e81b6064820152608401610811565b601280546001600160a01b0319166001600160a01b0392909216919091179055565b600a546001600160a01b03163314610cc65760405162461bcd60e51b815260040161081190612987565b604051600090339047908381818185875af1925050503d8060008114610d08576040519150601f19603f3d011682016040523d82523d6000602084013e610d0d565b606091505b5050905080610d1b57600080fd5b50565b610af383838360405180602001604052806000815250611720565b60606000610d4683610f33565b905060008167ffffffffffffffff811115610d6357610d63612b5d565b604051908082528060200260200182016040528015610d8c578160200160208202803683370190505b50905060005b82811015610dd357610da48582610b58565b828281518110610db657610db6612b47565b602090810291909101015280610dcb81612ad6565b915050610d92565b509392505050565b6000610de660085490565b8210610e495760405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201526b7574206f6620626f756e647360a01b6064820152608401610811565b60088281548110610e5c57610e5c612b47565b90600052602060002001549050919050565b600a546001600160a01b03163314610e985760405162461bcd60e51b815260040161081190612987565b8051610eab906011906020840190612430565b5050565b6000818152600260205260408120546001600160a01b0316806107e15760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201526832b73a103a37b5b2b760b91b6064820152608401610811565b6011805461096190612a9b565b60006001600160a01b038216610f9e5760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604482015269726f206164647265737360b01b6064820152608401610811565b506001600160a01b031660009081526003602052604090205490565b600a546001600160a01b03163314610fe45760405162461bcd60e51b815260040161081190612987565b610fee6000611dae565b565b600a546001600160a01b0316331461101a5760405162461bcd60e51b815260040161081190612987565b6012546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381600087803b15801561106057600080fd5b505af1158015611074573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110989190612798565b6012549091506001600160a01b031663a9059cbb6110be600a546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101849052604401602060405180830381600087803b15801561110657600080fd5b505af115801561111a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eab91906126df565b600d5460ff161561118a5760405162461bcd60e51b8152602060048201526016602482015275151a194818dbdb9d1c9858dd081a5cc81c185d5cd95960521b6044820152606401610811565b600061119560085490565b9050600082116111e75760405162461bcd60e51b815260206004820152601f60248201527f596f75206e65656420746f206d696e74206174206c656173742031204e4654006044820152606401610811565b600b546111f48383612a0d565b11156112425760405162461bcd60e51b815260206004820152601a60248201527f4d6178696d756d204e4654206c696d69742065786365656465640000000000006044820152606401610811565b336000908152600e6020526040902054600c5461125f8483612a0d565b11156112ad5760405162461bcd60e51b815260206004820181905260248201527f4d6178696d756d204e46542070657220616464726573732065786365656465646044820152606401610811565b6012546013546001600160a01b03909116906323b872dd90339030906112d39088612a39565b6040516001600160e01b031960e086901b1681526001600160a01b0393841660048201529290911660248301526044820152606401602060405180830381600087803b15801561132257600080fd5b505af1158015611336573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061135a91906126df565b61139b5760405162461bcd60e51b8152602060048201526012602482015271496e73756666696369656e742066756e647360701b6044820152606401610811565b60015b8381116113eb57336000908152600e602052604081208054916113c083612ad6565b909155506113d99050336113d48386612a0d565b611e00565b806113e381612ad6565b91505061139e565b50505050565b60606001805461083c90612a9b565b600d5460ff161561144c5760405162461bcd60e51b8152602060048201526016602482015275151a194818dbdb9d1c9858dd081a5cc81c185d5cd95960521b6044820152606401610811565b600061145760085490565b9050600082116114a95760405162461bcd60e51b815260206004820152601f60248201527f596f75206e65656420746f206d696e74206174206c656173742031204e4654006044820152606401610811565b600b546114b68383612a0d565b11156115045760405162461bcd60e51b815260206004820152601a60248201527f4d6178696d756d204e4654206c696d69742065786365656465640000000000006044820152606401610811565b600a546001600160a01b031633146115d557336000908152600e6020526040902054600c546115338483612a0d565b11156115815760405162461bcd60e51b815260206004820181905260248201527f4d6178696d756d204e46542070657220616464726573732065786365656465646044820152606401610811565b8260145461158f9190612a39565b3410156115d35760405162461bcd60e51b8152602060048201526012602482015271496e73756666696369656e742066756e647360701b6044820152606401610811565b505b60015b828111610af357336000908152600e602052604081208054916115fa83612ad6565b9091555061160e9050336113d48385612a0d565b8061161881612ad6565b9150506115d8565b6001600160a01b0382163314156116795760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610811565b3360008181526005602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b600a546001600160a01b0316331461170f5760405162461bcd60e51b815260040161081190612987565b600d805461ff001916610100179055565b61172a3383611b0c565b6117465760405162461bcd60e51b8152600401610811906129bc565b6113eb84848484611e1a565b600f805461096190612a9b565b6000818152600260205260409020546060906001600160a01b03166117de5760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b6064820152608401610811565b600d54610100900460ff1661187f57601080546117fa90612a9b565b80601f016020809104026020016040519081016040528092919081815260200182805461182690612a9b565b80156118735780601f1061184857610100808354040283529160200191611873565b820191906000526020600020905b81548152906001019060200180831161185657829003601f168201915b50505050509050919050565b6000611889611e4d565b905060008151116118a957604051806020016040528060008152506118d7565b806118b384611e5c565b600f6040516020016118c7939291906127dd565b6040516020818303038152906040525b9392505050565b600a546001600160a01b031633146119085760405162461bcd60e51b815260040161081190612987565b600c55565b600a546001600160a01b031633146119375760405162461bcd60e51b815260040161081190612987565b8051610eab90600f906020840190612430565b600a546001600160a01b031633146119745760405162461bcd60e51b815260040161081190612987565b8051610eab906010906020840190612430565b600a546001600160a01b031633146119b15760405162461bcd60e51b815260040161081190612987565b6001600160a01b038116611a165760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610811565b610d1b81611dae565b600a546001600160a01b03163314611a495760405162461bcd60e51b815260040161081190612987565b601455565b60006001600160e01b031982166380ac58cd60e01b1480611a7f57506001600160e01b03198216635b5e139f60e01b145b806107e157506301ffc9a760e01b6001600160e01b03198316146107e1565b600081815260046020526040902080546001600160a01b0319166001600160a01b0384169081179091558190611ad382610eaf565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000818152600260205260408120546001600160a01b0316611b855760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b6064820152608401610811565b6000611b9083610eaf565b9050806001600160a01b0316846001600160a01b03161480611bcb5750836001600160a01b0316611bc0846108bf565b6001600160a01b0316145b80611bfb57506001600160a01b0380821660009081526005602090815260408083209388168352929052205460ff165b949350505050565b826001600160a01b0316611c1682610eaf565b6001600160a01b031614611c7e5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960448201526839903737ba1037bbb760b91b6064820152608401610811565b6001600160a01b038216611ce05760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610811565b611ceb838383611f5a565b611cf6600082611a9e565b6001600160a01b0383166000908152600360205260408120805460019290611d1f908490612a58565b90915550506001600160a01b0382166000908152600360205260408120805460019290611d4d908490612a0d565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b600a80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b610eab828260405180602001604052806000815250612012565b611e25848484611c03565b611e3184848484612045565b6113eb5760405162461bcd60e51b815260040161081190612935565b60606011805461083c90612a9b565b606081611e805750506040805180820190915260018152600360fc1b602082015290565b8160005b8115611eaa5780611e9481612ad6565b9150611ea39050600a83612a25565b9150611e84565b60008167ffffffffffffffff811115611ec557611ec5612b5d565b6040519080825280601f01601f191660200182016040528015611eef576020820181803683370190505b5090505b8415611bfb57611f04600183612a58565b9150611f11600a86612af1565b611f1c906030612a0d565b60f81b818381518110611f3157611f31612b47565b60200101906001600160f81b031916908160001a905350611f53600a86612a25565b9450611ef3565b6001600160a01b038316611fb557611fb081600880546000838152600960205260408120829055600182018355919091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30155565b611fd8565b816001600160a01b0316836001600160a01b031614611fd857611fd88382612152565b6001600160a01b038216611fef57610af3816121ef565b826001600160a01b0316826001600160a01b031614610af357610af3828261229e565b61201c83836122e2565b6120296000848484612045565b610af35760405162461bcd60e51b815260040161081190612935565b60006001600160a01b0384163b1561214757604051630a85bd0160e11b81526001600160a01b0385169063150b7a02906120899033908990889088906004016128a1565b602060405180830381600087803b1580156120a357600080fd5b505af19250505080156120d3575060408051601f3d908101601f191682019092526120d091810190612719565b60015b61212d573d808015612101576040519150601f19603f3d011682016040523d82523d6000602084013e612106565b606091505b5080516121255760405162461bcd60e51b815260040161081190612935565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611bfb565b506001949350505050565b6000600161215f84610f33565b6121699190612a58565b6000838152600760205260409020549091508082146121bc576001600160a01b03841660009081526006602090815260408083208584528252808320548484528184208190558352600790915290208190555b5060009182526007602090815260408084208490556001600160a01b039094168352600681528383209183525290812055565b60085460009061220190600190612a58565b6000838152600960205260408120546008805493945090928490811061222957612229612b47565b90600052602060002001549050806008838154811061224a5761224a612b47565b600091825260208083209091019290925582815260099091526040808220849055858252812055600880548061228257612282612b31565b6001900381819060005260206000200160009055905550505050565b60006122a983610f33565b6001600160a01b039093166000908152600660209081526040808320868452825280832085905593825260079052919091209190915550565b6001600160a01b0382166123385760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610811565b6000818152600260205260409020546001600160a01b03161561239d5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610811565b6123a960008383611f5a565b6001600160a01b03821660009081526003602052604081208054600192906123d2908490612a0d565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b82805461243c90612a9b565b90600052602060002090601f01602090048101928261245e57600085556124a4565b82601f1061247757805160ff19168380011785556124a4565b828001600101855582156124a4579182015b828111156124a4578251825591602001919060010190612489565b506124b09291506124b4565b5090565b5b808211156124b057600081556001016124b5565b600067ffffffffffffffff808411156124e4576124e4612b5d565b604051601f8501601f19908116603f0116810190828211818310171561250c5761250c612b5d565b8160405280935085815286868601111561252557600080fd5b858560208301376000602087830101525050509392505050565b80356001600160a01b038116811461255657600080fd5b919050565b60006020828403121561256d57600080fd5b6118d78261253f565b6000806040838503121561258957600080fd5b6125928361253f565b91506125a06020840161253f565b90509250929050565b6000806000606084860312156125be57600080fd5b6125c78461253f565b92506125d56020850161253f565b9150604084013590509250925092565b600080600080608085870312156125fb57600080fd5b6126048561253f565b93506126126020860161253f565b925060408501359150606085013567ffffffffffffffff81111561263557600080fd5b8501601f8101871361264657600080fd5b612655878235602084016124c9565b91505092959194509250565b6000806040838503121561267457600080fd5b61267d8361253f565b9150602083013561268d81612b73565b809150509250929050565b600080604083850312156126ab57600080fd5b6126b48361253f565b946020939093013593505050565b6000602082840312156126d457600080fd5b81356118d781612b73565b6000602082840312156126f157600080fd5b81516118d781612b73565b60006020828403121561270e57600080fd5b81356118d781612b81565b60006020828403121561272b57600080fd5b81516118d781612b81565b60006020828403121561274857600080fd5b813567ffffffffffffffff81111561275f57600080fd5b8201601f8101841361277057600080fd5b611bfb848235602084016124c9565b60006020828403121561279157600080fd5b5035919050565b6000602082840312156127aa57600080fd5b5051919050565b600081518084526127c9816020860160208601612a6f565b601f01601f19169290920160200192915050565b6000845160206127f08285838a01612a6f565b8551918401916128038184848a01612a6f565b8554920191600090600181811c908083168061282057607f831692505b85831081141561283e57634e487b7160e01b85526022600452602485fd5b808015612852576001811461286357612890565b60ff19851688528388019550612890565b60008b81526020902060005b858110156128885781548a82015290840190880161286f565b505083880195505b50939b9a5050505050505050505050565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906128d4908301846127b1565b9695505050505050565b6020808252825182820181905260009190848201906040850190845b81811015612916578351835292840192918401916001016128fa565b50909695505050505050565b6020815260006118d760208301846127b1565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6040820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b606082015260800190565b60008219821115612a2057612a20612b05565b500190565b600082612a3457612a34612b1b565b500490565b6000816000190483118215151615612a5357612a53612b05565b500290565b600082821015612a6a57612a6a612b05565b500390565b60005b83811015612a8a578181015183820152602001612a72565b838111156113eb5750506000910152565b600181811c90821680612aaf57607f821691505b60208210811415612ad057634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415612aea57612aea612b05565b5060010190565b600082612b0057612b00612b1b565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b8015158114610d1b57600080fd5b6001600160e01b031981168114610d1b57600080fdfea2646970667358221220a4e0715205f63b5aa910a8be3e39123ba4f6f1e42f56f49595695860f3a6deb264736f6c63430008070033

Deployed ByteCode Sourcemap

19349:4468:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15219:224;;;;;;;;;;-1:-1:-1;15219:224:0;;;;;:::i;:::-;;:::i;:::-;;;8862:14:1;;8855:22;8837:41;;8825:2;8810:18;15219:224:0;;;;;;;;22987:73;;;;;;;;;;-1:-1:-1;22987:73:0;;;;;:::i;:::-;;:::i;:::-;;19803:69;;;;;;;;;;-1:-1:-1;19803:69:0;;;;-1:-1:-1;;;;;19803:69:0;;;;;;-1:-1:-1;;;;;6864:32:1;;;6846:51;;6834:2;6819:18;19803:69:0;6700:203:1;8767:100:0;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;9834:219::-;;;;;;;;;;-1:-1:-1;9834:219:0;;;;;:::i;:::-;;:::i;19680:63::-;;;;;;;;;;;;;:::i;9421:407::-;;;;;;;;;;-1:-1:-1;9421:407:0;;;;;:::i;:::-;;:::i;15711:113::-;;;;;;;;;;-1:-1:-1;15799:10:0;:17;15711:113;;;18866:25:1;;;18854:2;18839:18;15711:113:0;18720:177:1;19578:55:0;;;;;;;;;;-1:-1:-1;19578:55:0;;;;;:::i;:::-;;;;;;;;;;;;;;23064:108;;;;;;;;;;-1:-1:-1;23064:108:0;;;;;:::i;:::-;;:::i;10530:284::-;;;;;;;;;;-1:-1:-1;10530:284:0;;;;;:::i;:::-;;:::i;15449:256::-;;;;;;;;;;-1:-1:-1;15449:256:0;;;;;:::i;:::-;;:::i;23619:195::-;;;;;;;;;;-1:-1:-1;23619:195:0;;;;;:::i;:::-;;:::i;23296:158::-;;;:::i;10820:185::-;;;;;;;;;;-1:-1:-1;10820:185:0;;;;;:::i;:::-;;:::i;21625:333::-;;;;;;;;;;-1:-1:-1;21625:333:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;15830:233::-;;;;;;;;;;-1:-1:-1;15830:233:0;;;;;:::i;:::-;;:::i;19545:28::-;;;;;;;;;;-1:-1:-1;19545:28:0;;;;;;;;;;;22623:98;;;;;;;;;;-1:-1:-1;22623:98:0;;;;;:::i;:::-;;:::i;19514:26::-;;;;;;;;;;-1:-1:-1;19514:26:0;;;;;;;;8522:239;;;;;;;;;;-1:-1:-1;8522:239:0;;;;;:::i;:::-;;:::i;19748:50::-;;;;;;;;;;;;;:::i;8308:208::-;;;;;;;;;;-1:-1:-1;8308:208:0;;;;;:::i;:::-;;:::i;18482:94::-;;;;;;;;;;;;;:::i;19877:42::-;;;;;;;;;;;;;;;;23458:157;;;;;;;;;;;;;:::i;20795:716::-;;;;;;;;;;-1:-1:-1;20795:716:0;;;;;:::i;:::-;;:::i;18263:87::-;;;;;;;;;;-1:-1:-1;18336:6:0;;-1:-1:-1;;;;;18336:6:0;18263:87;;8873:104;;;;;;;;;;;;;:::i;20056:733::-;;;;;;:::i;:::-;;:::i;10059:295::-;;;;;;;;;;-1:-1:-1;10059:295:0;;;;;:::i;:::-;;:::i;22438:67::-;;;;;;;;;;;;;:::i;19935:40::-;;;;;;;;;;;;;;;;11011:328;;;;;;;;;;-1:-1:-1;11011:328:0;;;;;:::i;:::-;;:::i;19471:38::-;;;;;;;;;;;;;;;;19638:37;;;;;;;;;;;;;:::i;21964:468::-;;;;;;;;;;-1:-1:-1;21964:468:0;;;;;:::i;:::-;;:::i;22511:106::-;;;;;;;;;;-1:-1:-1;22511:106:0;;;;;:::i;:::-;;:::i;19436:30::-;;;;;;;;;;;;;;;;22727:122;;;;;;;;;;-1:-1:-1;22727:122:0;;;;;:::i;:::-;;:::i;10360:164::-;;;;;;;;;;-1:-1:-1;10360:164:0;;;;;:::i;:::-;-1:-1:-1;;;;;10481:25:0;;;10457:4;10481:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;;;10360:164;22855:126;;;;;;;;;;-1:-1:-1;22855:126:0;;;;;:::i;:::-;;:::i;18582:192::-;;;;;;;;;;-1:-1:-1;18582:192:0;;;;;:::i;:::-;;:::i;23178:112::-;;;;;;;;;;-1:-1:-1;23178:112:0;;;;;:::i;:::-;;:::i;15219:224::-;15321:4;-1:-1:-1;;;;;;15345:50:0;;-1:-1:-1;;;15345:50:0;;:90;;;15399:36;15423:11;15399:23;:36::i;:::-;15338:97;15219:224;-1:-1:-1;;15219:224:0:o;22987:73::-;18336:6;;-1:-1:-1;;;;;18336:6:0;7319:10;18396:23;18388:68;;;;-1:-1:-1;;;18388:68:0;;;;;;;:::i;:::-;;;;;;;;;23039:6:::1;:15:::0;;-1:-1:-1;;23039:15:0::1;::::0;::::1;;::::0;;;::::1;::::0;;22987:73::o;8767:100::-;8821:13;8854:5;8847:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8767:100;:::o;9834:219::-;9910:7;11755:16;;;:7;:16;;;;;;-1:-1:-1;;;;;11755:16:0;9930:73;;;;-1:-1:-1;;;9930:73:0;;15374:2:1;9930:73:0;;;15356:21:1;15413:2;15393:18;;;15386:30;15452:34;15432:18;;;15425:62;-1:-1:-1;;;15503:18:1;;;15496:42;15555:19;;9930:73:0;15172:408:1;9930:73:0;-1:-1:-1;10021:24:0;;;;:15;:24;;;;;;-1:-1:-1;;;;;10021:24:0;;9834:219::o;19680:63::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;9421:407::-;9502:13;9518:23;9533:7;9518:14;:23::i;:::-;9502:39;;9566:5;-1:-1:-1;;;;;9560:11:0;:2;-1:-1:-1;;;;;9560:11:0;;;9552:57;;;;-1:-1:-1;;;9552:57:0;;16974:2:1;9552:57:0;;;16956:21:1;17013:2;16993:18;;;16986:30;17052:34;17032:18;;;17025:62;-1:-1:-1;;;17103:18:1;;;17096:31;17144:19;;9552:57:0;16772:397:1;9552:57:0;7319:10;-1:-1:-1;;;;;9642:21:0;;;;:62;;-1:-1:-1;9667:37:0;9684:5;7319:10;10360:164;:::i;9667:37::-;9620:168;;;;-1:-1:-1;;;9620:168:0;;13767:2:1;9620:168:0;;;13749:21:1;13806:2;13786:18;;;13779:30;13845:34;13825:18;;;13818:62;13916:26;13896:18;;;13889:54;13960:19;;9620:168:0;13565:420:1;9620:168:0;9799:21;9808:2;9812:7;9799:8;:21::i;:::-;9491:337;9421:407;;:::o;23064:108::-;18336:6;;-1:-1:-1;;;;;18336:6:0;7319:10;18396:23;18388:68;;;;-1:-1:-1;;;18388:68:0;;;;;;;:::i;:::-;23135:13:::1;:29:::0;23064:108::o;10530:284::-;10672:41;7319:10;10705:7;10672:18;:41::i;:::-;10664:103;;;;-1:-1:-1;;;10664:103:0;;;;;;;:::i;:::-;10778:28;10788:4;10794:2;10798:7;10778:9;:28::i;15449:256::-;15546:7;15582:23;15599:5;15582:16;:23::i;:::-;15574:5;:31;15566:87;;;;-1:-1:-1;;;15566:87:0;;9537:2:1;15566:87:0;;;9519:21:1;9576:2;9556:18;;;9549:30;9615:34;9595:18;;;9588:62;-1:-1:-1;;;9666:18:1;;;9659:41;9717:19;;15566:87:0;9335:407:1;15566:87:0;-1:-1:-1;;;;;;15671:19:0;;;;;;;;:12;:19;;;;;;;;:26;;;;;;;;;15449:256::o;23619:195::-;18336:6;;-1:-1:-1;;;;;18336:6:0;7319:10;18396:23;18388:68;;;;-1:-1:-1;;;18388:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;23707:24:0;::::1;23698:73;;;::::0;-1:-1:-1;;;23698:73:0;;11126:2:1;23698:73:0::1;::::0;::::1;11108:21:1::0;11165:2;11145:18;;;11138:30;11204:34;11184:18;;;11177:62;-1:-1:-1;;;11255:18:1;;;11248:33;11298:19;;23698:73:0::1;10924:399:1::0;23698:73:0::1;23782:4;:24:::0;;-1:-1:-1;;;;;;23782:24:0::1;-1:-1:-1::0;;;;;23782:24:0;;;::::1;::::0;;;::::1;::::0;;23619:195::o;23296:158::-;18336:6;;-1:-1:-1;;;;;18336:6:0;7319:10;18396:23;18388:68;;;;-1:-1:-1;;;18388:68:0;;;;;;;:::i;:::-;23367:58:::1;::::0;23349:12:::1;::::0;23375:10:::1;::::0;23399:21:::1;::::0;23349:12;23367:58;23349:12;23367:58;23399:21;23375:10;23367:58:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23348:77;;;23440:7;23432:16;;;::::0;::::1;;23341:113;23296:158::o:0;10820:185::-;10958:39;10975:4;10981:2;10985:7;10958:39;;;;;;;;;;;;:16;:39::i;21625:333::-;21685:16;21713:23;21739:17;21749:6;21739:9;:17::i;:::-;21713:43;;21763:25;21805:15;21791:30;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;21791:30:0;;21763:58;;21833:9;21828:103;21848:15;21844:1;:19;21828:103;;;21893:30;21913:6;21921:1;21893:19;:30::i;:::-;21879:8;21888:1;21879:11;;;;;;;;:::i;:::-;;;;;;;;;;:44;21865:3;;;;:::i;:::-;;;;21828:103;;;-1:-1:-1;21944:8:0;21625:333;-1:-1:-1;;;21625:333:0:o;15830:233::-;15905:7;15941:30;15799:10;:17;;15711:113;15941:30;15933:5;:38;15925:95;;;;-1:-1:-1;;;15925:95:0;;18149:2:1;15925:95:0;;;18131:21:1;18188:2;18168:18;;;18161:30;18227:34;18207:18;;;18200:62;-1:-1:-1;;;18278:18:1;;;18271:42;18330:19;;15925:95:0;17947:408:1;15925:95:0;16038:10;16049:5;16038:17;;;;;;;;:::i;:::-;;;;;;;;;16031:24;;15830:233;;;:::o;22623:98::-;18336:6;;-1:-1:-1;;;;;18336:6:0;7319:10;18396:23;18388:68;;;;-1:-1:-1;;;18388:68:0;;;;;;;:::i;:::-;22694:21;;::::1;::::0;:7:::1;::::0;:21:::1;::::0;::::1;::::0;::::1;:::i;:::-;;22623:98:::0;:::o;8522:239::-;8594:7;8630:16;;;:7;:16;;;;;;-1:-1:-1;;;;;8630:16:0;8665:19;8657:73;;;;-1:-1:-1;;;8657:73:0;;14603:2:1;8657:73:0;;;14585:21:1;14642:2;14622:18;;;14615:30;14681:34;14661:18;;;14654:62;-1:-1:-1;;;14732:18:1;;;14725:39;14781:19;;8657:73:0;14401:405:1;19748:50:0;;;;;;;:::i;8308:208::-;8380:7;-1:-1:-1;;;;;8408:19:0;;8400:74;;;;-1:-1:-1;;;8400:74:0;;14192:2:1;8400:74:0;;;14174:21:1;14231:2;14211:18;;;14204:30;14270:34;14250:18;;;14243:62;-1:-1:-1;;;14321:18:1;;;14314:40;14371:19;;8400:74:0;13990:406:1;8400:74:0;-1:-1:-1;;;;;;8492:16:0;;;;;:9;:16;;;;;;;8308:208::o;18482:94::-;18336:6;;-1:-1:-1;;;;;18336:6:0;7319:10;18396:23;18388:68;;;;-1:-1:-1;;;18388:68:0;;;;;;;:::i;:::-;18547:21:::1;18565:1;18547:9;:21::i;:::-;18482:94::o:0;23458:157::-;18336:6;;-1:-1:-1;;;;;18336:6:0;7319:10;18396:23;18388:68;;;;-1:-1:-1;;;18388:68:0;;;;;;;:::i;:::-;23528:4:::1;::::0;:29:::1;::::0;-1:-1:-1;;;23528:29:0;;23551:4:::1;23528:29;::::0;::::1;6846:51:1::0;23509:15:0::1;::::0;-1:-1:-1;;;;;23528:4:0::1;::::0;:14:::1;::::0;6819:18:1;;23528:29:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23568:4;::::0;23509:48;;-1:-1:-1;;;;;;23568:4:0::1;:13;23590:7;18336:6:::0;;-1:-1:-1;;;;;18336:6:0;;18263:87;23590:7:::1;23568:39;::::0;-1:-1:-1;;;;;;23568:39:0::1;::::0;;;;;;-1:-1:-1;;;;;7973:32:1;;;23568:39:0::1;::::0;::::1;7955:51:1::0;8022:18;;;8015:34;;;7928:18;;23568:39:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;20795:716::-:0;20863:6;;;;20862:7;20854:42;;;;-1:-1:-1;;;20854:42:0;;10368:2:1;20854:42:0;;;10350:21:1;10407:2;10387:18;;;10380:30;-1:-1:-1;;;10426:18:1;;;10419:52;10488:18;;20854:42:0;10166:346:1;20854:42:0;20903:14;20920:13;15799:10;:17;;15711:113;20920:13;20903:30;;20962:1;20948:11;:15;20940:59;;;;-1:-1:-1;;;20940:59:0;;18562:2:1;20940:59:0;;;18544:21:1;18601:2;18581:18;;;18574:30;18640:33;18620:18;;;18613:61;18691:18;;20940:59:0;18360:355:1;20940:59:0;21038:9;;21014:20;21023:11;21014:6;:20;:::i;:::-;:33;;21006:72;;;;-1:-1:-1;;;21006:72:0;;17376:2:1;21006:72:0;;;17358:21:1;17415:2;17395:18;;;17388:30;17454:28;17434:18;;;17427:56;17500:18;;21006:72:0;17174:350:1;21006:72:0;21133:10;21085:24;21112:32;;;:20;:32;;;;;;21193:18;;21159:30;21178:11;21112:32;21159:30;:::i;:::-;:52;;21151:97;;;;-1:-1:-1;;;21151:97:0;;13059:2:1;21151:97:0;;;13041:21:1;;;13078:18;;;13071:30;13137:34;13117:18;;;13110:62;13189:18;;21151:97:0;12857:356:1;21151:97:0;21263:4;;21322:13;;-1:-1:-1;;;;;21263:4:0;;;;:17;;21281:10;;21301:4;;21308:27;;:11;:27;:::i;:::-;21263:73;;-1:-1:-1;;;;;;21263:73:0;;;;;;;-1:-1:-1;;;;;7166:15:1;;;21263:73:0;;;7148:34:1;7218:15;;;;7198:18;;;7191:43;7250:18;;;7243:34;7083:18;;21263:73:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21255:104;;;;-1:-1:-1;;;21255:104:0;;13420:2:1;21255:104:0;;;13402:21:1;13459:2;13439:18;;;13432:30;-1:-1:-1;;;13478:18:1;;;13471:48;13536:18;;21255:104:0;13218:342:1;21255:104:0;21383:1;21366:140;21391:11;21386:1;:16;21366:140;;21441:10;21420:32;;;;:20;:32;;;;;:34;;;;;;:::i;:::-;;;;-1:-1:-1;21465:33:0;;-1:-1:-1;21475:10:0;21487;21496:1;21487:6;:10;:::i;:::-;21465:9;:33::i;:::-;21404:3;;;;:::i;:::-;;;;21366:140;;;;20847:664;;20795:716;:::o;8873:104::-;8929:13;8962:7;8955:14;;;;;:::i;20056:733::-;20122:6;;;;20121:7;20113:42;;;;-1:-1:-1;;;20113:42:0;;10368:2:1;20113:42:0;;;10350:21:1;10407:2;10387:18;;;10380:30;-1:-1:-1;;;10426:18:1;;;10419:52;10488:18;;20113:42:0;10166:346:1;20113:42:0;20162:14;20179:13;15799:10;:17;;15711:113;20179:13;20162:30;;20221:1;20207:11;:15;20199:59;;;;-1:-1:-1;;;20199:59:0;;18562:2:1;20199:59:0;;;18544:21:1;18601:2;18581:18;;;18574:30;18640:33;18620:18;;;18613:61;18691:18;;20199:59:0;18360:355:1;20199:59:0;20297:9;;20273:20;20282:11;20273:6;:20;:::i;:::-;:33;;20265:72;;;;-1:-1:-1;;;20265:72:0;;17376:2:1;20265:72:0;;;17358:21:1;17415:2;17395:18;;;17388:30;17454:28;17434:18;;;17427:56;17500:18;;20265:72:0;17174:350:1;20265:72:0;18336:6;;-1:-1:-1;;;;;18336:6:0;20350:10;:21;20346:296;;20432:10;20384:24;20411:32;;;:20;:32;;;;;;20496:18;;20462:30;20481:11;20411:32;20462:30;:::i;:::-;:52;;20454:97;;;;-1:-1:-1;;;20454:97:0;;13059:2:1;20454:97:0;;;13041:21:1;;;13078:18;;;13071:30;13137:34;13117:18;;;13110:62;13189:18;;20454:97:0;12857:356:1;20454:97:0;20600:11;20583:14;;:28;;;;:::i;:::-;20570:9;:41;;20562:72;;;;-1:-1:-1;;;20562:72:0;;13420:2:1;20562:72:0;;;13402:21:1;13459:2;13439:18;;;13432:30;-1:-1:-1;;;13478:18:1;;;13471:48;13536:18;;20562:72:0;13218:342:1;20562:72:0;20373:269;20346:296;20665:1;20648:136;20673:11;20668:1;:16;20648:136;;20721:10;20700:32;;;;:20;:32;;;;;:34;;;;;;:::i;:::-;;;;-1:-1:-1;20743:33:0;;-1:-1:-1;20753:10:0;20765;20774:1;20765:6;:10;:::i;20743:33::-;20686:3;;;;:::i;:::-;;;;20648:136;;10059:295;-1:-1:-1;;;;;10162:24:0;;7319:10;10162:24;;10154:62;;;;-1:-1:-1;;;10154:62:0;;12292:2:1;10154:62:0;;;12274:21:1;12331:2;12311:18;;;12304:30;12370:27;12350:18;;;12343:55;12415:18;;10154:62:0;12090:349:1;10154:62:0;7319:10;10229:32;;;;:18;:32;;;;;;;;-1:-1:-1;;;;;10229:42:0;;;;;;;;;;;;:53;;-1:-1:-1;;10229:53:0;;;;;;;;;;10298:48;;8837:41:1;;;10229:42:0;;7319:10;10298:48;;8810:18:1;10298:48:0;;;;;;;10059:295;;:::o;22438:67::-;18336:6;;-1:-1:-1;;;;;18336:6:0;7319:10;18396:23;18388:68;;;;-1:-1:-1;;;18388:68:0;;;;;;;:::i;:::-;22484:8:::1;:15:::0;;-1:-1:-1;;22484:15:0::1;;;::::0;;22438:67::o;11011:328::-;11186:41;7319:10;11219:7;11186:18;:41::i;:::-;11178:103;;;;-1:-1:-1;;;11178:103:0;;;;;;;:::i;:::-;11292:39;11306:4;11312:2;11316:7;11325:5;11292:13;:39::i;19638:37::-;;;;;;;:::i;21964:468::-;11731:4;11755:16;;;:7;:16;;;;;;22037:13;;-1:-1:-1;;;;;11755:16:0;22062:97;;;;-1:-1:-1;;;22062:97:0;;16558:2:1;22062:97:0;;;16540:21:1;16597:2;16577:18;;;16570:30;16636:34;16616:18;;;16609:62;-1:-1:-1;;;16687:18:1;;;16680:45;16742:19;;22062:97:0;16356:411:1;22062:97:0;22171:8;;;;;;;22168:62;;22208:14;22201:21;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21964:468;;;:::o;22168:62::-;22238:28;22269:10;:8;:10::i;:::-;22238:41;;22324:1;22299:14;22293:28;:32;:133;;;;;;;;;;;;;;;;;22361:14;22377:18;:7;:16;:18::i;:::-;22397:13;22344:67;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;22293:133;22286:140;21964:468;-1:-1:-1;;;21964:468:0:o;22511:106::-;18336:6;;-1:-1:-1;;;;;18336:6:0;7319:10;18396:23;18388:68;;;;-1:-1:-1;;;18388:68:0;;;;;;;:::i;:::-;22584:18:::1;:27:::0;22511:106::o;22727:122::-;18336:6;;-1:-1:-1;;;;;18336:6:0;7319:10;18396:23;18388:68;;;;-1:-1:-1;;;18388:68:0;;;;;;;:::i;:::-;22810:33;;::::1;::::0;:13:::1;::::0;:33:::1;::::0;::::1;::::0;::::1;:::i;22855:126::-:0;18336:6;;-1:-1:-1;;;;;18336:6:0;7319:10;18396:23;18388:68;;;;-1:-1:-1;;;18388:68:0;;;;;;;:::i;:::-;22940:35;;::::1;::::0;:14:::1;::::0;:35:::1;::::0;::::1;::::0;::::1;:::i;18582:192::-:0;18336:6;;-1:-1:-1;;;;;18336:6:0;7319:10;18396:23;18388:68;;;;-1:-1:-1;;;18388:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;18671:22:0;::::1;18663:73;;;::::0;-1:-1:-1;;;18663:73:0;;10719:2:1;18663:73:0::1;::::0;::::1;10701:21:1::0;10758:2;10738:18;;;10731:30;10797:34;10777:18;;;10770:62;-1:-1:-1;;;10848:18:1;;;10841:36;10894:19;;18663:73:0::1;10517:402:1::0;18663:73:0::1;18747:19;18757:8;18747:9;:19::i;23178:112::-:0;18336:6;;-1:-1:-1;;;;;18336:6:0;7319:10;18396:23;18388:68;;;;-1:-1:-1;;;18388:68:0;;;;;;;:::i;:::-;23251:14:::1;:31:::0;23178:112::o;7997:305::-;8099:4;-1:-1:-1;;;;;;8136:40:0;;-1:-1:-1;;;8136:40:0;;:105;;-1:-1:-1;;;;;;;8193:48:0;;-1:-1:-1;;;8193:48:0;8136:105;:158;;;-1:-1:-1;;;;;;;;;;542:40:0;;;8258:36;433:157;13838:174;13913:24;;;;:15;:24;;;;;:29;;-1:-1:-1;;;;;;13913:29:0;-1:-1:-1;;;;;13913:29:0;;;;;;;;:24;;13967:23;13913:24;13967:14;:23::i;:::-;-1:-1:-1;;;;;13958:46:0;;;;;;;;;;;13838:174;;:::o;11799:348::-;11892:4;11755:16;;;:7;:16;;;;;;-1:-1:-1;;;;;11755:16:0;11909:73;;;;-1:-1:-1;;;11909:73:0;;12646:2:1;11909:73:0;;;12628:21:1;12685:2;12665:18;;;12658:30;12724:34;12704:18;;;12697:62;-1:-1:-1;;;12775:18:1;;;12768:42;12827:19;;11909:73:0;12444:408:1;11909:73:0;11993:13;12009:23;12024:7;12009:14;:23::i;:::-;11993:39;;12062:5;-1:-1:-1;;;;;12051:16:0;:7;-1:-1:-1;;;;;12051:16:0;;:51;;;;12095:7;-1:-1:-1;;;;;12071:31:0;:20;12083:7;12071:11;:20::i;:::-;-1:-1:-1;;;;;12071:31:0;;12051:51;:87;;;-1:-1:-1;;;;;;10481:25:0;;;10457:4;10481:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;12106:32;12043:96;11799:348;-1:-1:-1;;;;11799:348:0:o;13314:518::-;13473:4;-1:-1:-1;;;;;13446:31:0;:23;13461:7;13446:14;:23::i;:::-;-1:-1:-1;;;;;13446:31:0;;13438:85;;;;-1:-1:-1;;;13438:85:0;;16148:2:1;13438:85:0;;;16130:21:1;16187:2;16167:18;;;16160:30;16226:34;16206:18;;;16199:62;-1:-1:-1;;;16277:18:1;;;16270:39;16326:19;;13438:85:0;15946:405:1;13438:85:0;-1:-1:-1;;;;;13542:16:0;;13534:65;;;;-1:-1:-1;;;13534:65:0;;11887:2:1;13534:65:0;;;11869:21:1;11926:2;11906:18;;;11899:30;11965:34;11945:18;;;11938:62;-1:-1:-1;;;12016:18:1;;;12009:34;12060:19;;13534:65:0;11685:400:1;13534:65:0;13610:39;13631:4;13637:2;13641:7;13610:20;:39::i;:::-;13660:29;13677:1;13681:7;13660:8;:29::i;:::-;-1:-1:-1;;;;;13700:15:0;;;;;;:9;:15;;;;;:20;;13719:1;;13700:15;:20;;13719:1;;13700:20;:::i;:::-;;;;-1:-1:-1;;;;;;;13731:13:0;;;;;;:9;:13;;;;;:18;;13748:1;;13731:13;:18;;13748:1;;13731:18;:::i;:::-;;;;-1:-1:-1;;13760:16:0;;;;:7;:16;;;;;;:21;;-1:-1:-1;;;;;;13760:21:0;-1:-1:-1;;;;;13760:21:0;;;;;;;;;13797:27;;13760:16;;13797:27;;;;;;;13314:518;;;:::o;18780:173::-;18855:6;;;-1:-1:-1;;;;;18872:17:0;;;-1:-1:-1;;;;;;18872:17:0;;;;;;;18905:40;;18855:6;;;18872:17;18855:6;;18905:40;;18836:16;;18905:40;18825:128;18780:173;:::o;12153:110::-;12229:26;12239:2;12243:7;12229:26;;;;;;;;;;;;:9;:26::i;11345:315::-;11502:28;11512:4;11518:2;11522:7;11502:9;:28::i;:::-;11549:48;11572:4;11578:2;11582:7;11591:5;11549:22;:48::i;:::-;11541:111;;;;-1:-1:-1;;;11541:111:0;;;;;;;:::i;21517:102::-;21577:13;21606:7;21599:14;;;;;:::i;2023:532::-;2079:13;2109:10;2105:53;;-1:-1:-1;;2136:10:0;;;;;;;;;;;;-1:-1:-1;;;2136:10:0;;;;;2023:532::o;2105:53::-;2183:5;2168:12;2224:78;2231:9;;2224:78;;2257:8;;;;:::i;:::-;;-1:-1:-1;2280:10:0;;-1:-1:-1;2288:2:0;2280:10;;:::i;:::-;;;2224:78;;;2312:19;2344:6;2334:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2334:17:0;;2312:39;;2362:154;2369:10;;2362:154;;2396:11;2406:1;2396:11;;:::i;:::-;;-1:-1:-1;2465:10:0;2473:2;2465:5;:10;:::i;:::-;2452:24;;:2;:24;:::i;:::-;2439:39;;2422:6;2429;2422:14;;;;;;;;:::i;:::-;;;;:56;-1:-1:-1;;;;;2422:56:0;;;;;;;;-1:-1:-1;2493:11:0;2502:2;2493:11;;:::i;:::-;;;2362:154;;16069:587;-1:-1:-1;;;;;16273:18:0;;16269:187;;16308:40;16340:7;16993:10;:17;;16966:24;;;;:15;:24;;;;;:44;;;17021:24;;;;;;;;;;;;16889:164;16308:40;16269:187;;;16378:2;-1:-1:-1;;;;;16370:10:0;:4;-1:-1:-1;;;;;16370:10:0;;16366:90;;16397:47;16430:4;16436:7;16397:32;:47::i;:::-;-1:-1:-1;;;;;16470:16:0;;16466:183;;16503:45;16540:7;16503:36;:45::i;16466:183::-;16576:4;-1:-1:-1;;;;;16570:10:0;:2;-1:-1:-1;;;;;16570:10:0;;16566:83;;16597:40;16625:2;16629:7;16597:27;:40::i;12269:321::-;12399:18;12405:2;12409:7;12399:5;:18::i;:::-;12450:54;12481:1;12485:2;12489:7;12498:5;12450:22;:54::i;:::-;12428:154;;;;-1:-1:-1;;;12428:154:0;;;;;;;:::i;14018:799::-;14173:4;-1:-1:-1;;;;;14194:13:0;;3518:20;3566:8;14190:620;;14230:72;;-1:-1:-1;;;14230:72:0;;-1:-1:-1;;;;;14230:36:0;;;;;:72;;7319:10;;14281:4;;14287:7;;14296:5;;14230:72;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14230:72:0;;;;;;;;-1:-1:-1;;14230:72:0;;;;;;;;;;;;:::i;:::-;;;14226:529;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14472:13:0;;14468:272;;14515:60;;-1:-1:-1;;;14515:60:0;;;;;;;:::i;14468:272::-;14690:6;14684:13;14675:6;14671:2;14667:15;14660:38;14226:529;-1:-1:-1;;;;;;14353:51:0;-1:-1:-1;;;14353:51:0;;-1:-1:-1;14346:58:0;;14190:620;-1:-1:-1;14794:4:0;14018:799;;;;;;:::o;17059:549::-;17151:22;17201:1;17176:22;17193:4;17176:16;:22::i;:::-;:26;;;;:::i;:::-;17213:18;17234:26;;;:17;:26;;;;;;17151:51;;-1:-1:-1;17275:28:0;;;17271:234;;-1:-1:-1;;;;;17342:18:0;;17320:19;17342:18;;;:12;:18;;;;;;;;:34;;;;;;;;;17391:30;;;;;;:44;;;17450:30;;:17;:30;;;;;:43;;;17271:234;-1:-1:-1;17522:26:0;;;;:17;:26;;;;;;;;17515:33;;;-1:-1:-1;;;;;17566:18:0;;;;;:12;:18;;;;;:34;;;;;;;17559:41;17059:549::o;17614:419::-;17721:10;:17;17696:22;;17721:21;;17741:1;;17721:21;:::i;:::-;17753:18;17774:24;;;:15;:24;;;;;;17831:10;:26;;17696:46;;-1:-1:-1;17774:24:0;;17696:46;;17831:26;;;;;;:::i;:::-;;;;;;;;;17809:48;;17893:11;17868:10;17879;17868:22;;;;;;;;:::i;:::-;;;;;;;;;;;;:36;;;;17915:28;;;:15;:28;;;;;;;:41;;;17974:24;;;;;17967:31;18009:10;:16;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;17685:348;;;17614:419;:::o;16662:221::-;16747:14;16764:20;16781:2;16764:16;:20::i;:::-;-1:-1:-1;;;;;16795:16:0;;;;;;;:12;:16;;;;;;;;:24;;;;;;;;:34;;;16840:26;;;:17;:26;;;;;;:35;;;;-1:-1:-1;16662:221:0:o;12596:382::-;-1:-1:-1;;;;;12676:16:0;;12668:61;;;;-1:-1:-1;;;12668:61:0;;15013:2:1;12668:61:0;;;14995:21:1;;;15032:18;;;15025:30;15091:34;15071:18;;;15064:62;15143:18;;12668:61:0;14811:356:1;12668:61:0;11731:4;11755:16;;;:7;:16;;;;;;-1:-1:-1;;;;;11755:16:0;:30;12740:58;;;;-1:-1:-1;;;12740:58:0;;11530:2:1;12740:58:0;;;11512:21:1;11569:2;11549:18;;;11542:30;11608;11588:18;;;11581:58;11656:18;;12740:58:0;11328:352:1;12740:58:0;12811:45;12840:1;12844:2;12848:7;12811:20;:45::i;:::-;-1:-1:-1;;;;;12869:13:0;;;;;;:9;:13;;;;;:18;;12886:1;;12869:13;:18;;12886:1;;12869:18;:::i;:::-;;;;-1:-1:-1;;12898:16:0;;;;:7;:16;;;;;;:21;;-1:-1:-1;;;;;;12898:21:0;-1:-1:-1;;;;;12898:21:0;;;;;;;;12937:33;;12898:16;;;12937:33;;12898:16;;12937:33;12596:382;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:631:1;78:5;108:18;149:2;141:6;138:14;135:40;;;155:18;;:::i;:::-;230:2;224:9;198:2;284:15;;-1:-1:-1;;280:24:1;;;306:2;276:33;272:42;260:55;;;330:18;;;350:22;;;327:46;324:72;;;376:18;;:::i;:::-;416:10;412:2;405:22;445:6;436:15;;475:6;467;460:22;515:3;506:6;501:3;497:16;494:25;491:45;;;532:1;529;522:12;491:45;582:6;577:3;570:4;562:6;558:17;545:44;637:1;630:4;621:6;613;609:19;605:30;598:41;;;;14:631;;;;;:::o;650:173::-;718:20;;-1:-1:-1;;;;;767:31:1;;757:42;;747:70;;813:1;810;803:12;747:70;650:173;;;:::o;828:186::-;887:6;940:2;928:9;919:7;915:23;911:32;908:52;;;956:1;953;946:12;908:52;979:29;998:9;979:29;:::i;1019:260::-;1087:6;1095;1148:2;1136:9;1127:7;1123:23;1119:32;1116:52;;;1164:1;1161;1154:12;1116:52;1187:29;1206:9;1187:29;:::i;:::-;1177:39;;1235:38;1269:2;1258:9;1254:18;1235:38;:::i;:::-;1225:48;;1019:260;;;;;:::o;1284:328::-;1361:6;1369;1377;1430:2;1418:9;1409:7;1405:23;1401:32;1398:52;;;1446:1;1443;1436:12;1398:52;1469:29;1488:9;1469:29;:::i;:::-;1459:39;;1517:38;1551:2;1540:9;1536:18;1517:38;:::i;:::-;1507:48;;1602:2;1591:9;1587:18;1574:32;1564:42;;1284:328;;;;;:::o;1617:666::-;1712:6;1720;1728;1736;1789:3;1777:9;1768:7;1764:23;1760:33;1757:53;;;1806:1;1803;1796:12;1757:53;1829:29;1848:9;1829:29;:::i;:::-;1819:39;;1877:38;1911:2;1900:9;1896:18;1877:38;:::i;:::-;1867:48;;1962:2;1951:9;1947:18;1934:32;1924:42;;2017:2;2006:9;2002:18;1989:32;2044:18;2036:6;2033:30;2030:50;;;2076:1;2073;2066:12;2030:50;2099:22;;2152:4;2144:13;;2140:27;-1:-1:-1;2130:55:1;;2181:1;2178;2171:12;2130:55;2204:73;2269:7;2264:2;2251:16;2246:2;2242;2238:11;2204:73;:::i;:::-;2194:83;;;1617:666;;;;;;;:::o;2288:315::-;2353:6;2361;2414:2;2402:9;2393:7;2389:23;2385:32;2382:52;;;2430:1;2427;2420:12;2382:52;2453:29;2472:9;2453:29;:::i;:::-;2443:39;;2532:2;2521:9;2517:18;2504:32;2545:28;2567:5;2545:28;:::i;:::-;2592:5;2582:15;;;2288:315;;;;;:::o;2608:254::-;2676:6;2684;2737:2;2725:9;2716:7;2712:23;2708:32;2705:52;;;2753:1;2750;2743:12;2705:52;2776:29;2795:9;2776:29;:::i;:::-;2766:39;2852:2;2837:18;;;;2824:32;;-1:-1:-1;;;2608:254:1:o;2867:241::-;2923:6;2976:2;2964:9;2955:7;2951:23;2947:32;2944:52;;;2992:1;2989;2982:12;2944:52;3031:9;3018:23;3050:28;3072:5;3050:28;:::i;3113:245::-;3180:6;3233:2;3221:9;3212:7;3208:23;3204:32;3201:52;;;3249:1;3246;3239:12;3201:52;3281:9;3275:16;3300:28;3322:5;3300:28;:::i;3363:245::-;3421:6;3474:2;3462:9;3453:7;3449:23;3445:32;3442:52;;;3490:1;3487;3480:12;3442:52;3529:9;3516:23;3548:30;3572:5;3548:30;:::i;3613:249::-;3682:6;3735:2;3723:9;3714:7;3710:23;3706:32;3703:52;;;3751:1;3748;3741:12;3703:52;3783:9;3777:16;3802:30;3826:5;3802:30;:::i;3867:450::-;3936:6;3989:2;3977:9;3968:7;3964:23;3960:32;3957:52;;;4005:1;4002;3995:12;3957:52;4045:9;4032:23;4078:18;4070:6;4067:30;4064:50;;;4110:1;4107;4100:12;4064:50;4133:22;;4186:4;4178:13;;4174:27;-1:-1:-1;4164:55:1;;4215:1;4212;4205:12;4164:55;4238:73;4303:7;4298:2;4285:16;4280:2;4276;4272:11;4238:73;:::i;4322:180::-;4381:6;4434:2;4422:9;4413:7;4409:23;4405:32;4402:52;;;4450:1;4447;4440:12;4402:52;-1:-1:-1;4473:23:1;;4322:180;-1:-1:-1;4322:180:1:o;4507:184::-;4577:6;4630:2;4618:9;4609:7;4605:23;4601:32;4598:52;;;4646:1;4643;4636:12;4598:52;-1:-1:-1;4669:16:1;;4507:184;-1:-1:-1;4507:184:1:o;4696:257::-;4737:3;4775:5;4769:12;4802:6;4797:3;4790:19;4818:63;4874:6;4867:4;4862:3;4858:14;4851:4;4844:5;4840:16;4818:63;:::i;:::-;4935:2;4914:15;-1:-1:-1;;4910:29:1;4901:39;;;;4942:4;4897:50;;4696:257;-1:-1:-1;;4696:257:1:o;4958:1527::-;5182:3;5220:6;5214:13;5246:4;5259:51;5303:6;5298:3;5293:2;5285:6;5281:15;5259:51;:::i;:::-;5373:13;;5332:16;;;;5395:55;5373:13;5332:16;5417:15;;;5395:55;:::i;:::-;5539:13;;5472:20;;;5512:1;;5599;5621:18;;;;5674;;;;5701:93;;5779:4;5769:8;5765:19;5753:31;;5701:93;5842:2;5832:8;5829:16;5809:18;5806:40;5803:167;;;-1:-1:-1;;;5869:33:1;;5925:4;5922:1;5915:15;5955:4;5876:3;5943:17;5803:167;5986:18;6013:110;;;;6137:1;6132:328;;;;5979:481;;6013:110;-1:-1:-1;;6048:24:1;;6034:39;;6093:20;;;;-1:-1:-1;6013:110:1;;6132:328;18975:1;18968:14;;;19012:4;18999:18;;6227:1;6241:169;6255:8;6252:1;6249:15;6241:169;;;6337:14;;6322:13;;;6315:37;6380:16;;;;6272:10;;6241:169;;;6245:3;;6441:8;6434:5;6430:20;6423:27;;5979:481;-1:-1:-1;6476:3:1;;4958:1527;-1:-1:-1;;;;;;;;;;;4958:1527:1:o;7288:488::-;-1:-1:-1;;;;;7557:15:1;;;7539:34;;7609:15;;7604:2;7589:18;;7582:43;7656:2;7641:18;;7634:34;;;7704:3;7699:2;7684:18;;7677:31;;;7482:4;;7725:45;;7750:19;;7742:6;7725:45;:::i;:::-;7717:53;7288:488;-1:-1:-1;;;;;;7288:488:1:o;8060:632::-;8231:2;8283:21;;;8353:13;;8256:18;;;8375:22;;;8202:4;;8231:2;8454:15;;;;8428:2;8413:18;;;8202:4;8497:169;8511:6;8508:1;8505:13;8497:169;;;8572:13;;8560:26;;8641:15;;;;8606:12;;;;8533:1;8526:9;8497:169;;;-1:-1:-1;8683:3:1;;8060:632;-1:-1:-1;;;;;;8060:632:1:o;9111:219::-;9260:2;9249:9;9242:21;9223:4;9280:44;9320:2;9309:9;9305:18;9297:6;9280:44;:::i;9747:414::-;9949:2;9931:21;;;9988:2;9968:18;;;9961:30;10027:34;10022:2;10007:18;;10000:62;-1:-1:-1;;;10093:2:1;10078:18;;10071:48;10151:3;10136:19;;9747:414::o;15585:356::-;15787:2;15769:21;;;15806:18;;;15799:30;15865:34;15860:2;15845:18;;15838:62;15932:2;15917:18;;15585:356::o;17529:413::-;17731:2;17713:21;;;17770:2;17750:18;;;17743:30;17809:34;17804:2;17789:18;;17782:62;-1:-1:-1;;;17875:2:1;17860:18;;17853:47;17932:3;17917:19;;17529:413::o;19028:128::-;19068:3;19099:1;19095:6;19092:1;19089:13;19086:39;;;19105:18;;:::i;:::-;-1:-1:-1;19141:9:1;;19028:128::o;19161:120::-;19201:1;19227;19217:35;;19232:18;;:::i;:::-;-1:-1:-1;19266:9:1;;19161:120::o;19286:168::-;19326:7;19392:1;19388;19384:6;19380:14;19377:1;19374:21;19369:1;19362:9;19355:17;19351:45;19348:71;;;19399:18;;:::i;:::-;-1:-1:-1;19439:9:1;;19286:168::o;19459:125::-;19499:4;19527:1;19524;19521:8;19518:34;;;19532:18;;:::i;:::-;-1:-1:-1;19569:9:1;;19459:125::o;19589:258::-;19661:1;19671:113;19685:6;19682:1;19679:13;19671:113;;;19761:11;;;19755:18;19742:11;;;19735:39;19707:2;19700:10;19671:113;;;19802:6;19799:1;19796:13;19793:48;;;-1:-1:-1;;19837:1:1;19819:16;;19812:27;19589:258::o;19852:380::-;19931:1;19927:12;;;;19974;;;19995:61;;20049:4;20041:6;20037:17;20027:27;;19995:61;20102:2;20094:6;20091:14;20071:18;20068:38;20065:161;;;20148:10;20143:3;20139:20;20136:1;20129:31;20183:4;20180:1;20173:15;20211:4;20208:1;20201:15;20065:161;;19852:380;;;:::o;20237:135::-;20276:3;-1:-1:-1;;20297:17:1;;20294:43;;;20317:18;;:::i;:::-;-1:-1:-1;20364:1:1;20353:13;;20237:135::o;20377:112::-;20409:1;20435;20425:35;;20440:18;;:::i;:::-;-1:-1:-1;20474:9:1;;20377:112::o;20494:127::-;20555:10;20550:3;20546:20;20543:1;20536:31;20586:4;20583:1;20576:15;20610:4;20607:1;20600:15;20626:127;20687:10;20682:3;20678:20;20675:1;20668:31;20718:4;20715:1;20708:15;20742:4;20739:1;20732:15;20758:127;20819:10;20814:3;20810:20;20807:1;20800:31;20850:4;20847:1;20840:15;20874:4;20871:1;20864:15;20890:127;20951:10;20946:3;20942:20;20939:1;20932:31;20982:4;20979:1;20972:15;21006:4;21003:1;20996:15;21022:127;21083:10;21078:3;21074:20;21071:1;21064:31;21114:4;21111:1;21104:15;21138:4;21135:1;21128:15;21154:118;21240:5;21233:13;21226:21;21219:5;21216:32;21206:60;;21262:1;21259;21252:12;21277:131;-1:-1:-1;;;;;;21351:32:1;;21341:43;;21331:71;;21398:1;21395;21388:12

Swarm Source

ipfs://a4e0715205f63b5aa910a8be3e39123ba4f6f1e42f56f49595695860f3a6deb2
Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Block Uncle Number Difficulty Gas Used Reward
Loading
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.