Contract 0x90F788D8021038dbF97F42e19362726F94b4A902

Txn Hash Method
Block
From
To
Value [Txn Fee]
0xc4b364c19f96619c86459b02f16b69ebe891032e535093f08f8619f8a98190dbAdd Miner118052102022-01-16 5:07:4212 days 2 hrs ago0x1c1bdadd6b167f4a60dfeccc525534bf0f5bf323 IN 0x90f788d8021038dbf97f42e19362726f94b4a9020 HT0.0001041345 2.25
0xb5ce7d47f55ef6ea3abae4970de0fe5c66dadde68eab152bf3e5499c16d2a1cc0x60806040117568552022-01-14 12:49:5713 days 19 hrs ago0x1c1bdadd6b167f4a60dfeccc525534bf0f5bf323 IN  Create: DOH0 HT0.00417971925 2.25
[ Download CSV Export 
Parent Txn Hash Block From To Value
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
DOH

Compiler Version
v0.8.0+commit.c7dfd78e

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at hecoinfo.com on 2022-01-14
*/

// SPDX-License-Identifier: MIT
pragma solidity =0.8.0;

interface IERC20 {
    function balanceOf(address account) external view returns (uint256);

    function transfer(address recipient, uint256 amount) external returns (bool);

    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);

    function name() external view returns (string memory);

    function symbol() external view returns (string memory);

    function decimals() external view returns (uint8);
}

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "e5");
        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b <= a, "e6");
        uint256 c = a - b;
        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "e7");
        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b > 0, "e8");
        uint256 c = a / b;
        return c;
    }
}


library SafeERC20 {
    using SafeMath for uint256;
    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 _callOptionalReturn(IERC20 token, bytes memory data) private {
        bytes memory returndata = address(token).functionCall(data, "e0");
        if (returndata.length > 0) {
            require(abi.decode(returndata, (bool)), "e1");
        }
    }
}

interface IERC165 {
    function supportsInterface(bytes4 interfaceId) external view returns (bool);
}

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;
}

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, "k001");
        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() {
        _setOwner(_msgSender());
    }

    function owner() public view virtual returns (address) {
        return _owner;
    }
    modifier onlyOwner() {
        require(owner() == _msgSender(), "k002");
        _;
    }

    function renounceOwnership() public virtual onlyOwner {
        _setOwner(address(0));
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "k003");
        _setOwner(newOwner);
    }

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

abstract contract ReentrancyGuard {
    uint256 private constant _NOT_ENTERED = 1;
    uint256 private constant _ENTERED = 2;

    uint256 private _status;

    constructor() {
        _status = _NOT_ENTERED;
    }
    modifier nonReentrant() {
        require(_status != _ENTERED, "k004");
        _status = _ENTERED;
        _;
        _status = _NOT_ENTERED;
    }
}

interface IERC721Receiver {
    function onERC721Received(
        address operator,
        address from,
        uint256 tokenId,
        bytes calldata data
    ) external returns (bytes4);
}

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);
}

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, "k005");

        (bool success,) = recipient.call{value : amount}("");
        require(success, "k006");
    }

    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, "k007");
        require(isContract(target), "k008");

        (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), "k009");

        (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), "k010");

        (bool success, bytes memory returndata) = target.delegatecall(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }

    function _verifyCallResult(
        bool success,
        bytes memory returndata,
        string memory errorMessage
    ) private pure returns (bytes memory) {
        if (success) {
            return returndata;
        } else {
            // Look for revert reason and bubble it up if present
            if (returndata.length > 0) {
                // The easiest way to bubble the revert reason is using memory via assembly

                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

abstract contract ERC165 is IERC165 {
    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
        return interfaceId == type(IERC165).interfaceId;
    }
}

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(uint256 => address[]) public transferList;
    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), "k011");
        return _balances[owner];
    }

    function ownerOf(uint256 tokenId) public view virtual override returns (address) {
        address owner = _owners[tokenId];
        require(owner != address(0), "k012");
        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), "k013");

        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, "k014");

        require(
            _msgSender() == owner || isApprovedForAll(owner, _msgSender()),
            "k015"
        );

        _approve(to, tokenId);
    }

    function getApproved(uint256 tokenId) public view virtual override returns (address) {
        require(_exists(tokenId), "k016");

        return _tokenApprovals[tokenId];
    }

    function setApprovalForAll(address operator, bool approved) public virtual override {
        require(operator != _msgSender(), "k017");

        _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), "k018");
        _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), "k019");
        _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), "k020");
    }

    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), "k021");
        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),
            "k022"
        );
    }

    function _mint(address to, uint256 tokenId) internal virtual {
        require(to != address(0), "k023");
        require(!_exists(tokenId), "k024");

        _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);

        // Clear approvals
        _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, "k025");
        require(to != address(0), "k026");
        _beforeTokenTransfer(from, to, tokenId);
        _approve(address(0), tokenId);
        _balances[from] -= 1;
        _balances[to] += 1;
        _owners[tokenId] = to;
        if (transferList[tokenId].length < 2) {
            transferList[tokenId].push(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(to).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 {}
}

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);
}


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), "k027");
        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(), "k028");
        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();
    }
}

contract DOH is ERC721Enumerable, ReentrancyGuard, Ownable {
    using Strings for string;
    using SafeERC20 for IERC20;
    using SafeMath for uint256;
    uint256 public tokenIdNow = 0;
    string public baseURI;
    mapping(address => bool)  public MinerList;

    constructor(string memory name_, string memory symbol_) ERC721(name_, symbol_) Ownable() {
        addMiner(msg.sender);
    }


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

    function addMiner(address _adddress) public onlyOwner {
        MinerList[_adddress] = true;
    }

    function removeMiner(address _adddress) public onlyOwner {
        MinerList[_adddress] = false;
    }

    function mintForMiner(address _to) public nonReentrant returns (bool, uint256) {
        require(MinerList[msg.sender] == true, "e002");
        require(_to != address(0), "e003");
        tokenIdNow = tokenIdNow + 1;
        _safeMint(_to, tokenIdNow);
        return (true, tokenIdNow);
    }


    function tokenURI(uint256 _tokenId) override public view returns (string memory) {
        return string(abi.encodePacked(baseURI, Strings.toString(_tokenId)));
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","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":"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":[{"internalType":"address","name":"","type":"address"}],"name":"MinerList","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_adddress","type":"address"}],"name":"addMiner","outputs":[],"stateMutability":"nonpayable","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":[{"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":[{"internalType":"address","name":"_to","type":"address"}],"name":"mintForMiner","outputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","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":"address","name":"_adddress","type":"address"}],"name":"removeMiner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_baseURI","type":"string"}],"name":"setBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"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":[],"name":"tokenIdNow","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":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"transferList","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040526000600d553480156200001657600080fd5b50604051620021ea380380620021ea8339810160408190526200003991620002c0565b815182908290620000529060009060208501906200016f565b508051620000689060019060208401906200016f565b50506001600b5550620000846200007e62000097565b6200009b565b6200008f33620000ed565b505062000398565b3390565b600c80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b620000f762000097565b6001600160a01b03166200010a62000160565b6001600160a01b0316146200013c5760405162461bcd60e51b8152600401620001339062000327565b60405180910390fd5b6001600160a01b03166000908152600f60205260409020805460ff19166001179055565b600c546001600160a01b031690565b8280546200017d9062000345565b90600052602060002090601f016020900481019282620001a15760008555620001ec565b82601f10620001bc57805160ff1916838001178555620001ec565b82800160010185558215620001ec579182015b82811115620001ec578251825591602001919060010190620001cf565b50620001fa929150620001fe565b5090565b5b80821115620001fa5760008155600101620001ff565b600082601f83011262000226578081fd5b81516001600160401b038082111562000243576200024362000382565b6040516020601f8401601f19168201810183811183821017156200026b576200026b62000382565b604052838252858401810187101562000282578485fd5b8492505b83831015620002a5578583018101518284018201529182019162000286565b83831115620002b657848185840101525b5095945050505050565b60008060408385031215620002d3578182fd5b82516001600160401b0380821115620002ea578384fd5b620002f88683870162000215565b935060208501519150808211156200030e578283fd5b506200031d8582860162000215565b9150509250929050565b6020808252600490820152633598181960e11b604082015260600190565b6002810460018216806200035a57607f821691505b602082108114156200037c57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052604160045260246000fd5b611e4280620003a86000396000f3fe608060405234801561001057600080fd5b50600436106101a95760003560e01c80636352211e116100f9578063b88d4fde11610097578063e985e9c511610071578063e985e9c514610363578063f2ad543b14610376578063f2fde38b14610389578063f3982e5e1461039c576101a9565b8063b88d4fde14610335578063c87b56dd14610348578063d4f6fffe1461035b576101a9565b8063715018a6116100d3578063715018a61461030a5780638da5cb5b1461031257806395d89b411461031a578063a22cb46514610322576101a9565b80636352211e146102dc5780636c0360eb146102ef57806370a08231146102f7576101a9565b806323b872dd1161016657806342842e0e1161014057806342842e0e146102905780634f6ccce7146102a357806351f6e611146102b657806355f804b3146102c9576101a9565b806323b872dd146102495780632f745c591461025c578063309e92e91461026f576101a9565b806301ffc9a7146101ae57806306fdde03146101d7578063081812fc146101ec578063095ea7b31461020c578063102425901461022157806318160ddd14610234575b600080fd5b6101c16101bc3660046117bc565b6103af565b6040516101ce91906119b2565b60405180910390f35b6101df6103dc565b6040516101ce91906119cd565b6101ff6101fa36600461183a565b61046e565b6040516101ce9190611961565b61021f61021a366004611793565b6104ba565b005b61021f61022f366004611652565b610552565b61023c6105b2565b6040516101ce9190611cc6565b61021f6102573660046116a5565b6105b8565b61023c61026a366004611793565b6105f0565b61028261027d366004611652565b610642565b6040516101ce9291906119bd565b61021f61029e3660046116a5565b6106f7565b61023c6102b136600461183a565b610712565b6101c16102c4366004611652565b61076d565b61021f6102d73660046117f4565b610782565b6101ff6102ea36600461183a565b6107d8565b6101df61080d565b61023c610305366004611652565b61089b565b61021f6108df565b6101ff61092a565b6101df610939565b61021f610330366004611759565b610948565b61021f6103433660046116e0565b610a16565b6101df61035636600461183a565b610a55565b61023c610a89565b6101c1610371366004611673565b610a8f565b6101ff610384366004611852565b610abd565b61021f610397366004611652565b610af5565b61021f6103aa366004611652565b610b66565b60006001600160e01b0319821663780e9d6360e01b14806103d457506103d482610bc9565b90505b919050565b6060600080546103eb90611d4a565b80601f016020809104026020016040519081016040528092919081815260200182805461041790611d4a565b80156104645780601f1061043957610100808354040283529160200191610464565b820191906000526020600020905b81548152906001019060200180831161044757829003601f168201915b5050505050905090565b600061047982610c09565b61049e5760405162461bcd60e51b815260040161049590611aaa565b60405180910390fd5b506000908152600460205260409020546001600160a01b031690565b60006104c5826107d8565b9050806001600160a01b0316836001600160a01b031614156104f95760405162461bcd60e51b815260040161049590611c4e565b806001600160a01b031661050b610c26565b6001600160a01b03161480610527575061052781610371610c26565b6105435760405162461bcd60e51b815260040161049590611c30565b61054d8383610c2a565b505050565b61055a610c26565b6001600160a01b031661056b61092a565b6001600160a01b0316146105915760405162461bcd60e51b815260040161049590611b40565b6001600160a01b03166000908152600f60205260409020805460ff19169055565b60095490565b6105c96105c3610c26565b82610c98565b6105e55760405162461bcd60e51b815260040161049590611c6c565b61054d838383610d1d565b60006105fb8361089b565b82106106195760405162461bcd60e51b815260040161049590611a8c565b506001600160a01b03919091166000908152600760209081526040808320938352929052205490565b6000806002600b5414156106685760405162461bcd60e51b815260040161049590611ac8565b6002600b55336000908152600f602052604090205460ff1615156001146106a15760405162461bcd60e51b815260040161049590611b22565b6001600160a01b0383166106c75760405162461bcd60e51b815260040161049590611b5e565b600d546106d5906001611cdb565b600d8190556106e5908490610ea5565b5050600d546001600b81905592909150565b61054d83838360405180602001604052806000815250610a16565b600061071c6105b2565b821061073a5760405162461bcd60e51b815260040161049590611ca8565b6009828154811061075b57634e487b7160e01b600052603260045260246000fd5b90600052602060002001549050919050565b600f6020526000908152604090205460ff1681565b61078a610c26565b6001600160a01b031661079b61092a565b6001600160a01b0316146107c15760405162461bcd60e51b815260040161049590611b40565b80516107d490600e906020840190611532565b5050565b6000818152600260205260408120546001600160a01b0316806103d45760405162461bcd60e51b815260040161049590611b7c565b600e805461081a90611d4a565b80601f016020809104026020016040519081016040528092919081815260200182805461084690611d4a565b80156108935780601f1061086857610100808354040283529160200191610893565b820191906000526020600020905b81548152906001019060200180831161087657829003601f168201915b505050505081565b60006001600160a01b0382166108c35760405162461bcd60e51b815260040161049590611b9a565b506001600160a01b031660009081526003602052604090205490565b6108e7610c26565b6001600160a01b03166108f861092a565b6001600160a01b03161461091e5760405162461bcd60e51b815260040161049590611b40565b6109286000610ebf565b565b600c546001600160a01b031690565b6060600180546103eb90611d4a565b610950610c26565b6001600160a01b0316826001600160a01b031614156109815760405162461bcd60e51b815260040161049590611ae6565b806006600061098e610c26565b6001600160a01b03908116825260208083019390935260409182016000908120918716808252919093529120805460ff1916921515929092179091556109d2610c26565b6001600160a01b03167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051610a0a91906119b2565b60405180910390a35050565b610a27610a21610c26565b83610c98565b610a435760405162461bcd60e51b815260040161049590611c8a565b610a4f84848484610f11565b50505050565b6060600e610a6283610f44565b604051602001610a739291906118bb565b6040516020818303038152906040529050919050565b600d5481565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205460ff1690565b60056020528160005260406000208181548110610ad957600080fd5b6000918252602090912001546001600160a01b03169150829050565b610afd610c26565b6001600160a01b0316610b0e61092a565b6001600160a01b031614610b345760405162461bcd60e51b815260040161049590611b40565b6001600160a01b038116610b5a5760405162461bcd60e51b815260040161049590611b04565b610b6381610ebf565b50565b610b6e610c26565b6001600160a01b0316610b7f61092a565b6001600160a01b031614610ba55760405162461bcd60e51b815260040161049590611b40565b6001600160a01b03166000908152600f60205260409020805460ff19166001179055565b60006001600160e01b031982166380ac58cd60e01b1480610bfa57506001600160e01b03198216635b5e139f60e01b145b806103d457506103d48261105f565b6000908152600260205260409020546001600160a01b0316151590565b3390565b600081815260046020526040902080546001600160a01b0319166001600160a01b0384169081179091558190610c5f826107d8565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000610ca382610c09565b610cbf5760405162461bcd60e51b815260040161049590611bd6565b6000610cca836107d8565b9050806001600160a01b0316846001600160a01b03161480610d055750836001600160a01b0316610cfa8461046e565b6001600160a01b0316145b80610d155750610d158185610a8f565b949350505050565b826001600160a01b0316610d30826107d8565b6001600160a01b031614610d565760405162461bcd60e51b8152600401610495906119e0565b6001600160a01b038216610d7c5760405162461bcd60e51b815260040161049590611bb8565b610d87838383611078565b610d92600082610c2a565b6001600160a01b0383166000908152600360205260408120805460019290610dbb908490611d07565b90915550506001600160a01b0382166000908152600360205260408120805460019290610de9908490611cdb565b9091555050600081815260026020818152604080842080546001600160a01b0319166001600160a01b0388161790556005909152909120541015610e5f5760008181526005602090815260408220805460018101825590835291200180546001600160a01b0319166001600160a01b0384161790555b80826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b6107d4828260405180602001604052806000815250611101565b600c80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b610f1c848484610d1d565b610f2884848484611134565b610a4f5760405162461bcd60e51b815260040161049590611bf4565b606081610f6957506040805180820190915260018152600360fc1b60208201526103d7565b8160005b8115610f935780610f7d81611d85565b9150610f8c9050600a83611cf3565b9150610f6d565b60008167ffffffffffffffff811115610fbc57634e487b7160e01b600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015610fe6576020820181803683370190505b5090505b8415610d1557610ffb600183611d07565b9150611008600a86611da0565b611013906030611cdb565b60f81b81838151811061103657634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a905350611058600a86611cf3565b9450610fea565b6001600160e01b031981166301ffc9a760e01b14919050565b61108383838361054d565b6001600160a01b03831661109f5761109a8161124f565b6110c2565b816001600160a01b0316836001600160a01b0316146110c2576110c28382611293565b6001600160a01b0382166110de576110d981611330565b61054d565b826001600160a01b0316826001600160a01b03161461054d5761054d8282611409565b61110b838361144d565b6111186000848484611134565b61054d5760405162461bcd60e51b815260040161049590611a6e565b6000611148846001600160a01b031661152c565b1561124457836001600160a01b031663150b7a02611164610c26565b8786866040518563ffffffff1660e01b81526004016111869493929190611975565b602060405180830381600087803b1580156111a057600080fd5b505af19250505080156111d0575060408051601f3d908101601f191682019092526111cd918101906117d8565b60015b61122a573d8080156111fe576040519150601f19603f3d011682016040523d82523d6000602084013e611203565b606091505b5080516112225760405162461bcd60e51b815260040161049590611a1c565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050610d15565b506001949350505050565b600980546000838152600a60205260408120829055600182018355919091527f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af0155565b600060016112a08461089b565b6112aa9190611d07565b6000838152600860205260409020549091508082146112fd576001600160a01b03841660009081526007602090815260408083208584528252808320548484528184208190558352600890915290208190555b5060009182526008602090815260408084208490556001600160a01b039094168352600781528383209183525290812055565b60095460009061134290600190611d07565b6000838152600a60205260408120546009805493945090928490811061137857634e487b7160e01b600052603260045260246000fd5b9060005260206000200154905080600983815481106113a757634e487b7160e01b600052603260045260246000fd5b6000918252602080832090910192909255828152600a909152604080822084905585825281205560098054806113ed57634e487b7160e01b600052603160045260246000fd5b6001900381819060005260206000200160009055905550505050565b60006114148361089b565b6001600160a01b039093166000908152600760209081526040808320868452825280832085905593825260089052919091209190915550565b6001600160a01b0382166114735760405162461bcd60e51b8152600401610495906119fe565b61147c81610c09565b156114995760405162461bcd60e51b815260040161049590611c12565b6114a560008383611078565b6001600160a01b03821660009081526003602052604081208054600192906114ce908490611cdb565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b3b151590565b82805461153e90611d4a565b90600052602060002090601f01602090048101928261156057600085556115a6565b82601f1061157957805160ff19168380011785556115a6565b828001600101855582156115a6579182015b828111156115a657825182559160200191906001019061158b565b506115b29291506115b6565b5090565b5b808211156115b257600081556001016115b7565b600067ffffffffffffffff808411156115e6576115e6611de0565b604051601f8501601f19168101602001828111828210171561160a5761160a611de0565b60405284815291508183850186101561162257600080fd5b8484602083013760006020868301015250509392505050565b80356001600160a01b03811681146103d757600080fd5b600060208284031215611663578081fd5b61166c8261163b565b9392505050565b60008060408385031215611685578081fd5b61168e8361163b565b915061169c6020840161163b565b90509250929050565b6000806000606084860312156116b9578081fd5b6116c28461163b565b92506116d06020850161163b565b9150604084013590509250925092565b600080600080608085870312156116f5578081fd5b6116fe8561163b565b935061170c6020860161163b565b925060408501359150606085013567ffffffffffffffff81111561172e578182fd5b8501601f8101871361173e578182fd5b61174d878235602084016115cb565b91505092959194509250565b6000806040838503121561176b578182fd5b6117748361163b565b915060208301358015158114611788578182fd5b809150509250929050565b600080604083850312156117a5578182fd5b6117ae8361163b565b946020939093013593505050565b6000602082840312156117cd578081fd5b813561166c81611df6565b6000602082840312156117e9578081fd5b815161166c81611df6565b600060208284031215611805578081fd5b813567ffffffffffffffff81111561181b578182fd5b8201601f8101841361182b578182fd5b610d15848235602084016115cb565b60006020828403121561184b578081fd5b5035919050565b60008060408385031215611864578182fd5b50508035926020909101359150565b6000815180845261188b816020860160208601611d1e565b601f01601f19169290920160200192915050565b600081516118b1818560208601611d1e565b9290920192915050565b82546000908190600281046001808316806118d757607f831692505b60208084108214156118f757634e487b7160e01b87526022600452602487fd5b81801561190b576001811461191c57611948565b60ff19861689528489019650611948565b6119258b611ccf565b885b868110156119405781548b820152908501908301611927565b505084890196505b505050505050611958818561189f565b95945050505050565b6001600160a01b0391909116815260200190565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906119a890830184611873565b9695505050505050565b901515815260200190565b9115158252602082015260400190565b60006020825261166c6020830184611873565b6020808252600490820152636b30323560e01b604082015260600190565b6020808252600490820152636b30323360e01b604082015260600190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6020808252600490820152633598191960e11b604082015260600190565b6020808252600490820152636b30323760e01b604082015260600190565b6020808252600490820152633598189b60e11b604082015260600190565b6020808252600490820152631acc0c0d60e21b604082015260600190565b6020808252600490820152636b30313760e01b604082015260600190565b6020808252600490820152636b30303360e01b604082015260600190565b6020808252600490820152633298181960e11b604082015260600190565b6020808252600490820152633598181960e11b604082015260600190565b6020808252600490820152636530303360e01b604082015260600190565b6020808252600490820152633598189960e11b604082015260600190565b6020808252600490820152636b30313160e01b604082015260600190565b6020808252600490820152633598191b60e11b604082015260600190565b6020808252600490820152636b30323160e01b604082015260600190565b60208082526004908201526306b3032360e41b604082015260600190565b6020808252600490820152631acc0c8d60e21b604082015260600190565b6020808252600490820152636b30313560e01b604082015260600190565b6020808252600490820152631acc0c4d60e21b604082015260600190565b6020808252600490820152630d66062760e31b604082015260600190565b6020808252600490820152636b30313960e01b604082015260600190565b6020808252600490820152630d66064760e31b604082015260600190565b90815260200190565b60009081526020902090565b60008219821115611cee57611cee611db4565b500190565b600082611d0257611d02611dca565b500490565b600082821015611d1957611d19611db4565b500390565b60005b83811015611d39578181015183820152602001611d21565b83811115610a4f5750506000910152565b600281046001821680611d5e57607f821691505b60208210811415611d7f57634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415611d9957611d99611db4565b5060010190565b600082611daf57611daf611dca565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160e01b031981168114610b6357600080fdfea2646970667358221220b9b6999dcb5b1c1707e5c77875c4d4fc80848c1101239ce58d2ea3cd3ba9a84c64736f6c63430008000033000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000007444f48204e4654000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003444f480000000000000000000000000000000000000000000000000000000000

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000007444f48204e4654000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003444f480000000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : name_ (string): DOH NFT
Arg [1] : symbol_ (string): DOH

-----Encoded View---------------
6 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000040
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000080
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000007
Arg [3] : 444f48204e465400000000000000000000000000000000000000000000000000
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000003
Arg [5] : 444f480000000000000000000000000000000000000000000000000000000000


Deployed ByteCode Sourcemap

20895:1223:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18137:224;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11686:100;;;:::i;:::-;;;;;;;:::i;12645:181::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;12307:330::-;;;;;;:::i;:::-;;:::i;:::-;;21525:104;;;;;;:::i;:::-;;:::i;18594:113::-;;;:::i;:::-;;;;;;;:::i;13288:239::-;;;;;;:::i;:::-;;:::i;18369:217::-;;;;;;:::i;:::-;;:::i;21637:300::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;13535:185::-;;;;;;:::i;:::-;;:::i;18715:193::-;;;;;;:::i;:::-;;:::i;21122:42::-;;;;;;:::i;:::-;;:::i;21311:98::-;;;;;;:::i;:::-;;:::i;11476:202::-;;;;;;:::i;:::-;;:::i;21094:21::-;;;:::i;11298:170::-;;;;;;:::i;:::-;;:::i;5394:94::-;;;:::i;5201:87::-;;;:::i;11794:104::-;;;:::i;12834:274::-;;;;;;:::i;:::-;;:::i;13728:283::-;;;;;;:::i;:::-;;:::i;21947:168::-;;;;;;:::i;:::-;;:::i;21058:29::-;;;:::i;13116:164::-;;;;;;:::i;:::-;;:::i;10739:49::-;;;;;;:::i;:::-;;:::i;5496:158::-;;;;;;:::i;:::-;;:::i;21417:100::-;;;;;;:::i;:::-;;:::i;18137:224::-;18239:4;-1:-1:-1;;;;;;18263:50:0;;-1:-1:-1;;;18263:50:0;;:90;;;18317:36;18341:11;18317:23;:36::i;:::-;18256:97;;18137:224;;;;:::o;11686:100::-;11740:13;11773:5;11766:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11686:100;:::o;12645:181::-;12721:7;12749:16;12757:7;12749;:16::i;:::-;12741:33;;;;-1:-1:-1;;;12741:33:0;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;12794:24:0;;;;:15;:24;;;;;;-1:-1:-1;;;;;12794:24:0;;12645:181::o;12307:330::-;12388:13;12404:23;12419:7;12404:14;:23::i;:::-;12388:39;;12452:5;-1:-1:-1;;;;;12446:11:0;:2;-1:-1:-1;;;;;12446:11:0;;;12438:28;;;;-1:-1:-1;;;12438:28:0;;;;;;;:::i;:::-;12517:5;-1:-1:-1;;;;;12501:21:0;:12;:10;:12::i;:::-;-1:-1:-1;;;;;12501:21:0;;:62;;;;12526:37;12543:5;12550:12;:10;:12::i;12526:37::-;12479:116;;;;-1:-1:-1;;;12479:116:0;;;;;;;:::i;:::-;12608:21;12617:2;12621:7;12608:8;:21::i;:::-;12307:330;;;:::o;21525:104::-;5345:12;:10;:12::i;:::-;-1:-1:-1;;;;;5334:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;5334:23:0;;5326:40;;;;-1:-1:-1;;;5326:40:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;21593:20:0::1;21616:5;21593:20:::0;;;:9:::1;:20;::::0;;;;:28;;-1:-1:-1;;21593:28:0::1;::::0;;21525:104::o;18594:113::-;18682:10;:17;18594:113;:::o;13288:239::-;13430:41;13449:12;:10;:12::i;:::-;13463:7;13430:18;:41::i;:::-;13422:58;;;;-1:-1:-1;;;13422:58:0;;;;;;;:::i;:::-;13491:28;13501:4;13507:2;13511:7;13491:9;:28::i;18369:217::-;18466:7;18502:23;18519:5;18502:16;:23::i;:::-;18494:5;:31;18486:48;;;;-1:-1:-1;;;18486:48:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;;18552:19:0;;;;;;;;:12;:19;;;;;;;;:26;;;;;;;;;18369:217::o;21637:300::-;21701:4;21707:7;5967:1;6113:7;;:19;;6105:36;;;;-1:-1:-1;;;6105:36:0;;;;;;;:::i;:::-;5967:1;6152:7;:18;21745:10:::1;21735:21;::::0;;;:9:::1;:21;::::0;;;;;::::1;;:29;;:21:::0;:29:::1;21727:46;;;;-1:-1:-1::0;;;21727:46:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;21792:17:0;::::1;21784:34;;;;-1:-1:-1::0;;;21784:34:0::1;;;;;;;:::i;:::-;21842:10;::::0;:14:::1;::::0;21855:1:::1;21842:14;:::i;:::-;21829:10;:27:::0;;;21867:26:::1;::::0;21877:3;;21867:9:::1;:26::i;:::-;-1:-1:-1::0;;21918:10:0::1;::::0;21912:4:::1;6193:7:::0;:22;;;21912:4;21918:10;;-1:-1:-1;21637:300:0:o;13535:185::-;13673:39;13690:4;13696:2;13700:7;13673:39;;;;;;;;;;;;:16;:39::i;18715:193::-;18790:7;18826:30;:28;:30::i;:::-;18818:5;:38;18810:55;;;;-1:-1:-1;;;18810:55:0;;;;;;;:::i;:::-;18883:10;18894:5;18883:17;;;;;;-1:-1:-1;;;18883:17:0;;;;;;;;;;;;;;;;;18876:24;;18715:193;;;:::o;21122:42::-;;;;;;;;;;;;;;;:::o;21311:98::-;5345:12;:10;:12::i;:::-;-1:-1:-1;;;;;5334:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;5334:23:0;;5326:40;;;;-1:-1:-1;;;5326:40:0;;;;;;;:::i;:::-;21383:18;;::::1;::::0;:7:::1;::::0;:18:::1;::::0;::::1;::::0;::::1;:::i;:::-;;21311:98:::0;:::o;11476:202::-;11548:7;11584:16;;;:7;:16;;;;;;-1:-1:-1;;;;;11584:16:0;11619:19;11611:36;;;;-1:-1:-1;;;11611:36:0;;;;;;;:::i;21094:21::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;11298:170::-;11370:7;-1:-1:-1;;;;;11398:19:0;;11390:36;;;;-1:-1:-1;;;11390:36:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;;11444:16:0;;;;;:9;:16;;;;;;;11298:170::o;5394:94::-;5345:12;:10;:12::i;:::-;-1:-1:-1;;;;;5334:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;5334:23:0;;5326:40;;;;-1:-1:-1;;;5326:40:0;;;;;;;:::i;:::-;5459:21:::1;5477:1;5459:9;:21::i;:::-;5394:94::o:0;5201:87::-;5274:6;;-1:-1:-1;;;;;5274:6:0;5201:87;:::o;11794:104::-;11850:13;11883:7;11876:14;;;;;:::i;12834:274::-;12949:12;:10;:12::i;:::-;-1:-1:-1;;;;;12937:24:0;:8;-1:-1:-1;;;;;12937:24:0;;;12929:41;;;;-1:-1:-1;;;12929:41:0;;;;;;;:::i;:::-;13028:8;12983:18;:32;13002:12;:10;:12::i;:::-;-1:-1:-1;;;;;12983:32:0;;;;;;;;;;;;;;;;;-1:-1:-1;12983:32:0;;;:42;;;;;;;;;;;;:53;;-1:-1:-1;;12983:53:0;;;;;;;;;;;13067:12;:10;:12::i;:::-;-1:-1:-1;;;;;13052:48:0;;13091:8;13052:48;;;;;;:::i;:::-;;;;;;;;12834:274;;:::o;13728:283::-;13903:41;13922:12;:10;:12::i;:::-;13936:7;13903:18;:41::i;:::-;13895:58;;;;-1:-1:-1;;;13895:58:0;;;;;;;:::i;:::-;13964:39;13978:4;13984:2;13988:7;13997:5;13964:13;:39::i;:::-;13728:283;;;;:::o;21947:168::-;22013:13;22070:7;22079:26;22096:8;22079:16;:26::i;:::-;22053:53;;;;;;;;;:::i;:::-;;;;;;;;;;;;;22039:68;;21947:168;;;:::o;21058:29::-;;;;:::o;13116:164::-;-1:-1:-1;;;;;13237:25:0;;;13213:4;13237:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;;;13116:164::o;10739:49::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10739:49:0;;-1:-1:-1;10739:49:0;;-1:-1:-1;10739:49:0:o;5496:158::-;5345:12;:10;:12::i;:::-;-1:-1:-1;;;;;5334:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;5334:23:0;;5326:40;;;;-1:-1:-1;;;5326:40:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;5585:22:0;::::1;5577:39;;;;-1:-1:-1::0;;;5577:39:0::1;;;;;;;:::i;:::-;5627:19;5637:8;5627:9;:19::i;:::-;5496:158:::0;:::o;21417:100::-;5345:12;:10;:12::i;:::-;-1:-1:-1;;;;;5334:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;5334:23:0;;5326:40;;;;-1:-1:-1;;;5326:40:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;21482:20:0::1;;::::0;;;:9:::1;:20;::::0;;;;:27;;-1:-1:-1;;21482:27:0::1;21505:4;21482:27;::::0;;21417:100::o;10997:293::-;11099:4;-1:-1:-1;;;;;;11132:40:0;;-1:-1:-1;;;11132:40:0;;:101;;-1:-1:-1;;;;;;;11185:48:0;;-1:-1:-1;;;11185:48:0;11132:101;:150;;;;11246:36;11270:11;11246:23;:36::i;14296:127::-;14361:4;14385:16;;;:7;:16;;;;;;-1:-1:-1;;;;;14385:16:0;:30;;;14296:127::o;4758:98::-;4838:10;4758:98;:::o;16416:174::-;16491:24;;;;:15;:24;;;;;:29;;-1:-1:-1;;;;;;16491:29:0;-1:-1:-1;;;;;16491:29:0;;;;;;;;:24;;16545:23;16491:24;16545:14;:23::i;:::-;-1:-1:-1;;;;;16536:46:0;;;;;;;;;;;16416:174;;:::o;14431:308::-;14524:4;14549:16;14557:7;14549;:16::i;:::-;14541:33;;;;-1:-1:-1;;;14541:33:0;;;;;;;:::i;:::-;14585:13;14601:23;14616:7;14601:14;:23::i;:::-;14585:39;;14654:5;-1:-1:-1;;;;;14643:16:0;:7;-1:-1:-1;;;;;14643:16:0;;:51;;;;14687:7;-1:-1:-1;;;;;14663:31:0;:20;14675:7;14663:11;:20::i;:::-;-1:-1:-1;;;;;14663:31:0;;14643:51;:87;;;;14698:32;14715:5;14722:7;14698:16;:32::i;:::-;14635:96;14431:308;-1:-1:-1;;;;14431:308:0:o;15854:554::-;16013:4;-1:-1:-1;;;;;15986:31:0;:23;16001:7;15986:14;:23::i;:::-;-1:-1:-1;;;;;15986:31:0;;15978:48;;;;-1:-1:-1;;;15978:48:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16045:16:0;;16037:33;;;;-1:-1:-1;;;16037:33:0;;;;;;;:::i;:::-;16081:39;16102:4;16108:2;16112:7;16081:20;:39::i;:::-;16131:29;16148:1;16152:7;16131:8;:29::i;:::-;-1:-1:-1;;;;;16171:15:0;;;;;;:9;:15;;;;;:20;;16190:1;;16171:15;:20;;16190:1;;16171:20;:::i;:::-;;;;-1:-1:-1;;;;;;;16202:13:0;;;;;;:9;:13;;;;;:18;;16219:1;;16202:13;:18;;16219:1;;16202:18;:::i;:::-;;;;-1:-1:-1;;16231:16:0;;;;:7;:16;;;;;;;;:21;;-1:-1:-1;;;;;;16231:21:0;-1:-1:-1;;;;;16231:21:0;;;;;16267:12;:21;;;;;;:28;:32;16263:95;;;16316:21;;;;:12;:21;;;;;;;:30;;;;;;;;;;;;;;;-1:-1:-1;;;;;;16316:30:0;-1:-1:-1;;;;;16316:30:0;;;;;16263:95;16392:7;16388:2;-1:-1:-1;;;;;16373:27:0;16382:4;-1:-1:-1;;;;;16373:27:0;;;;;;;;;;;15854:554;;;:::o;14747:110::-;14823:26;14833:2;14837:7;14823:26;;;;;;;;;;;;:9;:26::i;5662:173::-;5737:6;;;-1:-1:-1;;;;;5754:17:0;;;-1:-1:-1;;;;;;5754:17:0;;;;;;;5787:40;;5737:6;;;5754:17;5737:6;;5787:40;;5718:16;;5787:40;5662:173;;:::o;14019:269::-;14176:28;14186:4;14192:2;14196:7;14176:9;:28::i;:::-;14223:48;14246:4;14252:2;14256:7;14265:5;14223:22;:48::i;:::-;14215:65;;;;-1:-1:-1;;;14215:65:0;;;;;;;:::i;3407:532::-;3463:13;3493:10;3489:53;;-1:-1:-1;3520:10:0;;;;;;;;;;;;-1:-1:-1;;;3520:10:0;;;;;;3489:53;3567:5;3552:12;3608:78;3615:9;;3608:78;;3641:8;;;;:::i;:::-;;-1:-1:-1;3664:10:0;;-1:-1:-1;3672:2:0;3664:10;;:::i;:::-;;;3608:78;;;3696:19;3728:6;3718:17;;;;;;-1:-1:-1;;;3718:17:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3718:17:0;;3696:39;;3746:154;3753:10;;3746:154;;3780:11;3790:1;3780:11;;:::i;:::-;;-1:-1:-1;3849:10:0;3857:2;3849:5;:10;:::i;:::-;3836:24;;:2;:24;:::i;:::-;3823:39;;3806:6;3813;3806:14;;;;;;-1:-1:-1;;;3806:14:0;;;;;;;;;;;;:56;-1:-1:-1;;;;;3806:56:0;;;;;;;;-1:-1:-1;3877:11:0;3886:2;3877:11;;:::i;:::-;;;3746:154;;10227:157;-1:-1:-1;;;;;;10336:40:0;;-1:-1:-1;;;10336:40:0;10227:157;;;:::o;18916:587::-;19060:45;19087:4;19093:2;19097:7;19060:26;:45::i;:::-;-1:-1:-1;;;;;19120:18:0;;19116:187;;19155:40;19187:7;19155:31;:40::i;:::-;19116:187;;;19225:2;-1:-1:-1;;;;;19217:10:0;:4;-1:-1:-1;;;;;19217:10:0;;19213:90;;19244:47;19277:4;19283:7;19244:32;:47::i;:::-;-1:-1:-1;;;;;19317:16:0;;19313:183;;19350:45;19387:7;19350:36;:45::i;:::-;19313:183;;;19423:4;-1:-1:-1;;;;;19417:10:0;:2;-1:-1:-1;;;;;19417:10:0;;19413:83;;19444:40;19472:2;19476:7;19444:27;:40::i;14865:275::-;14995:18;15001:2;15005:7;14995:5;:18::i;:::-;15046:54;15077:1;15081:2;15085:7;15094:5;15046:22;:54::i;:::-;15024:108;;;;-1:-1:-1;;;15024:108:0;;;;;;;:::i;16598:803::-;16753:4;16774:15;:2;-1:-1:-1;;;;;16774:13:0;;:15::i;:::-;16770:624;;;16826:2;-1:-1:-1;;;;;16810:36:0;;16847:12;:10;:12::i;:::-;16861:4;16867:7;16876:5;16810:72;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16810:72:0;;;;;;;;-1:-1:-1;;16810:72:0;;;;;;;;;;;;:::i;:::-;;;16806:533;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17056:13:0;;17052:272;;17099:60;;-1:-1:-1;;;17099:60:0;;;;;;;:::i;17052:272::-;17274:6;17268:13;17259:6;17255:2;17251:15;17244:38;16806:533;-1:-1:-1;;;;;;16933:55:0;-1:-1:-1;;;16933:55:0;;-1:-1:-1;16926:62:0;;16770:624;-1:-1:-1;17378:4:0;16598:803;;;;;;:::o;19740:164::-;19844:10;:17;;19817:24;;;;:15;:24;;;;;:44;;;19872:24;;;;;;;;;;;;19740:164::o;19912:549::-;20004:22;20054:1;20029:22;20046:4;20029:16;:22::i;:::-;:26;;;;:::i;:::-;20066:18;20087:26;;;:17;:26;;;;;;20004:51;;-1:-1:-1;20128:28:0;;;20124:234;;-1:-1:-1;;;;;20195:18:0;;20173:19;20195:18;;;:12;:18;;;;;;;;:34;;;;;;;;;20244:30;;;;;;:44;;;20303:30;;:17;:30;;;;;:43;;;20124:234;-1:-1:-1;20375:26:0;;;;:17;:26;;;;;;;;20368:33;;;-1:-1:-1;;;;;20419:18:0;;;;;:12;:18;;;;;:34;;;;;;;20412:41;19912:549::o;20469:419::-;20576:10;:17;20551:22;;20576:21;;20596:1;;20576:21;:::i;:::-;20608:18;20629:24;;;:15;:24;;;;;;20686:10;:26;;20551:46;;-1:-1:-1;20629:24:0;;20551:46;;20686:26;;;;-1:-1:-1;;;20686:26:0;;;;;;;;;;;;;;;;;20664:48;;20748:11;20723:10;20734;20723:22;;;;;;-1:-1:-1;;;20723:22:0;;;;;;;;;;;;;;;;;;;;:36;;;;20770:28;;;:15;:28;;;;;;;:41;;;20829:24;;;;;20822:31;20864:10;:16;;;;;-1:-1:-1;;;20864:16:0;;;;;;;;;;;;;;;;;;;;;;;;;;20469:419;;;;:::o;19511:221::-;19596:14;19613:20;19630:2;19613:16;:20::i;:::-;-1:-1:-1;;;;;19644:16:0;;;;;;;:12;:16;;;;;;;;:24;;;;;;;;:34;;;19689:26;;;:17;:26;;;;;;:35;;;;-1:-1:-1;19511:221:0:o;15148:330::-;-1:-1:-1;;;;;15228:16:0;;15220:33;;;;-1:-1:-1;;;15220:33:0;;;;;;;:::i;:::-;15273:16;15281:7;15273;:16::i;:::-;15272:17;15264:34;;;;-1:-1:-1;;;15264:34:0;;;;;;;:::i;:::-;15311:45;15340:1;15344:2;15348:7;15311:20;:45::i;:::-;-1:-1:-1;;;;;15369:13:0;;;;;;:9;:13;;;;;:18;;15386:1;;15369:13;:18;;15386:1;;15369:18;:::i;:::-;;;;-1:-1:-1;;15398:16:0;;;;:7;:16;;;;;;:21;;-1:-1:-1;;;;;;15398:21:0;-1:-1:-1;;;;;15398:21:0;;;;;;;;15437:33;;15398:16;;;15437:33;;15398:16;;15437:33;15148:330;;:::o;6708:196::-;6840:20;6888:8;;;6708:196::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:607:1;;110:18;151:2;143:6;140:14;137:2;;;157:18;;:::i;:::-;206:2;200:9;279:2;256:17;;-1:-1:-1;;252:31:1;240:44;;286:4;236:55;306:18;;;326:22;;;303:46;300:2;;;352:18;;:::i;:::-;388:2;381:22;436;;;421:6;-1:-1:-1;421:6:1;473:16;;;470:25;-1:-1:-1;467:2:1;;;508:1;505;498:12;467:2;558:6;553:3;546:4;538:6;534:17;521:44;613:1;606:4;597:6;589;585:19;581:30;574:41;;;90:531;;;;;:::o;626:175::-;696:20;;-1:-1:-1;;;;;745:31:1;;735:42;;725:2;;791:1;788;781:12;806:198;;918:2;906:9;897:7;893:23;889:32;886:2;;;939:6;931;924:22;886:2;967:31;988:9;967:31;:::i;:::-;957:41;876:128;-1:-1:-1;;;876:128:1:o;1009:274::-;;;1138:2;1126:9;1117:7;1113:23;1109:32;1106:2;;;1159:6;1151;1144:22;1106:2;1187:31;1208:9;1187:31;:::i;:::-;1177:41;;1237:40;1273:2;1262:9;1258:18;1237:40;:::i;:::-;1227:50;;1096:187;;;;;:::o;1288:342::-;;;;1434:2;1422:9;1413:7;1409:23;1405:32;1402:2;;;1455:6;1447;1440:22;1402:2;1483:31;1504:9;1483:31;:::i;:::-;1473:41;;1533:40;1569:2;1558:9;1554:18;1533:40;:::i;:::-;1523:50;;1620:2;1609:9;1605:18;1592:32;1582:42;;1392:238;;;;;:::o;1635:702::-;;;;;1807:3;1795:9;1786:7;1782:23;1778:33;1775:2;;;1829:6;1821;1814:22;1775:2;1857:31;1878:9;1857:31;:::i;:::-;1847:41;;1907:40;1943:2;1932:9;1928:18;1907:40;:::i;:::-;1897:50;;1994:2;1983:9;1979:18;1966:32;1956:42;;2049:2;2038:9;2034:18;2021:32;2076:18;2068:6;2065:30;2062:2;;;2113:6;2105;2098:22;2062:2;2141:22;;2194:4;2186:13;;2182:27;-1:-1:-1;2172:2:1;;2228:6;2220;2213:22;2172:2;2256:75;2323:7;2318:2;2305:16;2300:2;2296;2292:11;2256:75;:::i;:::-;2246:85;;;1765:572;;;;;;;:::o;2342:369::-;;;2468:2;2456:9;2447:7;2443:23;2439:32;2436:2;;;2489:6;2481;2474:22;2436:2;2517:31;2538:9;2517:31;:::i;:::-;2507:41;;2598:2;2587:9;2583:18;2570:32;2645:5;2638:13;2631:21;2624:5;2621:32;2611:2;;2672:6;2664;2657:22;2611:2;2700:5;2690:15;;;2426:285;;;;;:::o;2716:266::-;;;2845:2;2833:9;2824:7;2820:23;2816:32;2813:2;;;2866:6;2858;2851:22;2813:2;2894:31;2915:9;2894:31;:::i;:::-;2884:41;2972:2;2957:18;;;;2944:32;;-1:-1:-1;;;2803:179:1:o;2987:257::-;;3098:2;3086:9;3077:7;3073:23;3069:32;3066:2;;;3119:6;3111;3104:22;3066:2;3163:9;3150:23;3182:32;3208:5;3182:32;:::i;3249:261::-;;3371:2;3359:9;3350:7;3346:23;3342:32;3339:2;;;3392:6;3384;3377:22;3339:2;3429:9;3423:16;3448:32;3474:5;3448:32;:::i;3515:482::-;;3637:2;3625:9;3616:7;3612:23;3608:32;3605:2;;;3658:6;3650;3643:22;3605:2;3703:9;3690:23;3736:18;3728:6;3725:30;3722:2;;;3773:6;3765;3758:22;3722:2;3801:22;;3854:4;3846:13;;3842:27;-1:-1:-1;3832:2:1;;3888:6;3880;3873:22;3832:2;3916:75;3983:7;3978:2;3965:16;3960:2;3956;3952:11;3916:75;:::i;4002:190::-;;4114:2;4102:9;4093:7;4089:23;4085:32;4082:2;;;4135:6;4127;4120:22;4082:2;-1:-1:-1;4163:23:1;;4072:120;-1:-1:-1;4072:120:1:o;4197:258::-;;;4326:2;4314:9;4305:7;4301:23;4297:32;4294:2;;;4347:6;4339;4332:22;4294:2;-1:-1:-1;;4375:23:1;;;4445:2;4430:18;;;4417:32;;-1:-1:-1;4284:171:1:o;4460:259::-;;4541:5;4535:12;4568:6;4563:3;4556:19;4584:63;4640:6;4633:4;4628:3;4624:14;4617:4;4610:5;4606:16;4584:63;:::i;:::-;4701:2;4680:15;-1:-1:-1;;4676:29:1;4667:39;;;;4708:4;4663:50;;4511:208;-1:-1:-1;;4511:208:1:o;4724:187::-;;4806:5;4800:12;4821:52;4866:6;4861:3;4854:4;4847:5;4843:16;4821:52;:::i;:::-;4889:16;;;;;4776:135;-1:-1:-1;;4776:135:1:o;4916:1181::-;5150:13;;4916:1181;;;;5223:1;5208:17;;5244:1;5280:18;;;;5307:2;;5361:4;5353:6;5349:17;5339:27;;5307:2;5387;5435;5427:6;5424:14;5404:18;5401:38;5398:2;;;-1:-1:-1;;;5462:33:1;;5518:4;5515:1;5508:15;5548:4;5469:3;5536:17;5398:2;5579:18;5606:104;;;;5724:1;5719:324;;;;5572:471;;5606:104;-1:-1:-1;;5639:24:1;;5627:37;;5684:16;;;;-1:-1:-1;5606:104:1;;5719:324;5755:39;5787:6;5755:39;:::i;:::-;5816:3;5832:165;5846:6;5843:1;5840:13;5832:165;;;5924:14;;5911:11;;;5904:35;5967:16;;;;5861:10;;5832:165;;;5836:3;;6026:6;6021:3;6017:16;6010:23;;5572:471;;;;;;;6059:32;6087:3;6079:6;6059:32;:::i;:::-;6052:39;5100:997;-1:-1:-1;;;;;5100:997:1:o;6102:203::-;-1:-1:-1;;;;;6266:32:1;;;;6248:51;;6236:2;6221:18;;6203:102::o;6310:490::-;-1:-1:-1;;;;;6579:15:1;;;6561:34;;6631:15;;6626:2;6611:18;;6604:43;6678:2;6663:18;;6656:34;;;6726:3;6721:2;6706:18;;6699:31;;;6310:490;;6747:47;;6774:19;;6766:6;6747:47;:::i;:::-;6739:55;6513:287;-1:-1:-1;;;;;;6513:287:1:o;6805:187::-;6970:14;;6963:22;6945:41;;6933:2;6918:18;;6900:92::o;6997:258::-;7190:14;;7183:22;7165:41;;7237:2;7222:18;;7215:34;7153:2;7138:18;;7120:135::o;7260:221::-;;7409:2;7398:9;7391:21;7429:46;7471:2;7460:9;7456:18;7448:6;7429:46;:::i;7486:327::-;7688:2;7670:21;;;7727:1;7707:18;;;7700:29;-1:-1:-1;;;7760:2:1;7745:18;;7738:34;7804:2;7789:18;;7660:153::o;7818:327::-;8020:2;8002:21;;;8059:1;8039:18;;;8032:29;-1:-1:-1;;;8092:2:1;8077:18;;8070:34;8136:2;8121:18;;7992:153::o;8150:414::-;8352:2;8334:21;;;8391:2;8371:18;;;8364:30;8430:34;8425:2;8410:18;;8403:62;-1:-1:-1;;;8496:2:1;8481:18;;8474:48;8554:3;8539:19;;8324:240::o;8569:327::-;8771:2;8753:21;;;8810:1;8790:18;;;8783:29;-1:-1:-1;;;8843:2:1;8828:18;;8821:34;8887:2;8872:18;;8743:153::o;8901:327::-;9103:2;9085:21;;;9142:1;9122:18;;;9115:29;-1:-1:-1;;;9175:2:1;9160:18;;9153:34;9219:2;9204:18;;9075:153::o;9233:327::-;9435:2;9417:21;;;9474:1;9454:18;;;9447:29;-1:-1:-1;;;9507:2:1;9492:18;;9485:34;9551:2;9536:18;;9407:153::o;9565:327::-;9767:2;9749:21;;;9806:1;9786:18;;;9779:29;-1:-1:-1;;;9839:2:1;9824:18;;9817:34;9883:2;9868:18;;9739:153::o;9897:327::-;10099:2;10081:21;;;10138:1;10118:18;;;10111:29;-1:-1:-1;;;10171:2:1;10156:18;;10149:34;10215:2;10200:18;;10071:153::o;10229:327::-;10431:2;10413:21;;;10470:1;10450:18;;;10443:29;-1:-1:-1;;;10503:2:1;10488:18;;10481:34;10547:2;10532:18;;10403:153::o;10561:327::-;10763:2;10745:21;;;10802:1;10782:18;;;10775:29;-1:-1:-1;;;10835:2:1;10820:18;;10813:34;10879:2;10864:18;;10735:153::o;10893:327::-;11095:2;11077:21;;;11134:1;11114:18;;;11107:29;-1:-1:-1;;;11167:2:1;11152:18;;11145:34;11211:2;11196:18;;11067:153::o;11225:327::-;11427:2;11409:21;;;11466:1;11446:18;;;11439:29;-1:-1:-1;;;11499:2:1;11484:18;;11477:34;11543:2;11528:18;;11399:153::o;11557:327::-;11759:2;11741:21;;;11798:1;11778:18;;;11771:29;-1:-1:-1;;;11831:2:1;11816:18;;11809:34;11875:2;11860:18;;11731:153::o;11889:327::-;12091:2;12073:21;;;12130:1;12110:18;;;12103:29;-1:-1:-1;;;12163:2:1;12148:18;;12141:34;12207:2;12192:18;;12063:153::o;12221:327::-;12423:2;12405:21;;;12462:1;12442:18;;;12435:29;-1:-1:-1;;;12495:2:1;12480:18;;12473:34;12539:2;12524:18;;12395:153::o;12553:327::-;12755:2;12737:21;;;12794:1;12774:18;;;12767:29;-1:-1:-1;;;12827:2:1;12812:18;;12805:34;12871:2;12856:18;;12727:153::o;12885:327::-;13087:2;13069:21;;;13126:1;13106:18;;;13099:29;-1:-1:-1;;;13159:2:1;13144:18;;13137:34;13203:2;13188:18;;13059:153::o;13217:327::-;13419:2;13401:21;;;13458:1;13438:18;;;13431:29;-1:-1:-1;;;13491:2:1;13476:18;;13469:34;13535:2;13520:18;;13391:153::o;13549:327::-;13751:2;13733:21;;;13790:1;13770:18;;;13763:29;-1:-1:-1;;;13823:2:1;13808:18;;13801:34;13867:2;13852:18;;13723:153::o;13881:327::-;14083:2;14065:21;;;14122:1;14102:18;;;14095:29;-1:-1:-1;;;14155:2:1;14140:18;;14133:34;14199:2;14184:18;;14055:153::o;14213:327::-;14415:2;14397:21;;;14454:1;14434:18;;;14427:29;-1:-1:-1;;;14487:2:1;14472:18;;14465:34;14531:2;14516:18;;14387:153::o;14545:327::-;14747:2;14729:21;;;14786:1;14766:18;;;14759:29;-1:-1:-1;;;14819:2:1;14804:18;;14797:34;14863:2;14848:18;;14719:153::o;14877:327::-;15079:2;15061:21;;;15118:1;15098:18;;;15091:29;-1:-1:-1;;;15151:2:1;15136:18;;15129:34;15195:2;15180:18;;15051:153::o;15209:177::-;15355:25;;;15343:2;15328:18;;15310:76::o;15391:129::-;;15459:17;;;15509:4;15493:21;;;15449:71::o;15525:128::-;;15596:1;15592:6;15589:1;15586:13;15583:2;;;15602:18;;:::i;:::-;-1:-1:-1;15638:9:1;;15573:80::o;15658:120::-;;15724:1;15714:2;;15729:18;;:::i;:::-;-1:-1:-1;15763:9:1;;15704:74::o;15783:125::-;;15851:1;15848;15845:8;15842:2;;;15856:18;;:::i;:::-;-1:-1:-1;15893:9:1;;15832:76::o;15913:258::-;15985:1;15995:113;16009:6;16006:1;16003:13;15995:113;;;16085:11;;;16079:18;16066:11;;;16059:39;16031:2;16024:10;15995:113;;;16126:6;16123:1;16120:13;16117:2;;;-1:-1:-1;;16161:1:1;16143:16;;16136:27;15966:205::o;16176:380::-;16261:1;16251:12;;16308:1;16298:12;;;16319:2;;16373:4;16365:6;16361:17;16351:27;;16319:2;16426;16418:6;16415:14;16395:18;16392:38;16389:2;;;16472:10;16467:3;16463:20;16460:1;16453:31;16507:4;16504:1;16497:15;16535:4;16532:1;16525:15;16389:2;;16231:325;;;:::o;16561:135::-;;-1:-1:-1;;16621:17:1;;16618:2;;;16641:18;;:::i;:::-;-1:-1:-1;16688:1:1;16677:13;;16608:88::o;16701:112::-;;16759:1;16749:2;;16764:18;;:::i;:::-;-1:-1:-1;16798:9:1;;16739:74::o;16818:127::-;16879:10;16874:3;16870:20;16867:1;16860:31;16910:4;16907:1;16900:15;16934:4;16931:1;16924:15;16950:127;17011:10;17006:3;17002:20;16999:1;16992:31;17042:4;17039:1;17032:15;17066:4;17063:1;17056:15;17082:127;17143:10;17138:3;17134:20;17131:1;17124:31;17174:4;17171:1;17164:15;17198:4;17195:1;17188:15;17214:133;-1:-1:-1;;;;;;17290:32:1;;17280:43;;17270:2;;17337:1;17334;17327:12

Swarm Source

ipfs://b9b6999dcb5b1c1707e5c77875c4d4fc80848c1101239ce58d2ea3cd3ba9a84c
Block Transaction Gas Used Reward
Age Block Fee Address Jailed Incoming
Block Uncle Number Difficulty Gas Used Reward
Loading
Loading