ETH Price: $3,305.50 (-3.74%)
Gas: 22 Gwei

vVv Season 1 Reward (VVVS1R)
 

Overview

TokenID

2482

Total Transfers

-

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
VVVS1R

Compiler Version
v0.8.0+commit.c7dfd78e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-08-27
*/

/**
 *Submitted for verification at Etherscan.io on 2022-08-23
*/

/**
 *Submitted for verification at Etherscan.io on 2022-02-03
*/

// SPDX-License-Identifier: MIT


pragma solidity ^0.8.0;

library Strings {
    bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef";


    function toString(uint256 value) internal pure returns (string memory) {

        if (value == 0) {
            return "0";
        }
        uint256 temp = value;
        uint256 digits;
        while (temp != 0) {
            digits++;
            temp /= 10;
        }
        bytes memory buffer = new bytes(digits);
        while (value != 0) {
            digits -= 1;
            buffer[digits] = bytes1(uint8(48 + uint256(value % 10)));
            value /= 10;
        }
        return string(buffer);
    }

    function toHexString(uint256 value) internal pure returns (string memory) {
        if (value == 0) {
            return "0x00";
        }
        uint256 temp = value;
        uint256 length = 0;
        while (temp != 0) {
            length++;
            temp >>= 8;
        }
        return toHexString(value, length);
    }

  
    function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {
        bytes memory buffer = new bytes(2 * length + 2);
        buffer[0] = "0";
        buffer[1] = "x";
        for (uint256 i = 2 * length + 1; i > 1; --i) {
            buffer[i] = _HEX_SYMBOLS[value & 0xf];
            value >>= 4;
        }
        require(value == 0, "Strings: hex length insufficient");
        return string(buffer);
    }
}

abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

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 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 IERC721Metadata is IERC721 {

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

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

    function tokenURI(uint256 tokenId) external view returns (string memory);
}

pragma solidity ^0.8.0;

interface IERC721Receiver {

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

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 {
        _setApprovalForAll(_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 _setApprovalForAll(
        address owner,
        address operator,
        bool approved
    ) internal virtual {
        require(owner != operator, "ERC721: approve to caller");
        _operatorApprovals[owner][operator] = approved;
        emit ApprovalForAll(owner, operator, approved);
    }

    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 Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    constructor() {
        _owner  = _msgSender();
    }

    function owner() public view virtual returns (address) {
        return _owner;
    }

    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

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

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _transferOwnership(newOwner);
    }

    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

library Counters {
    struct Counter {

        uint256 _value; 
    }

    function current(Counter storage counter) internal view returns (uint256) {
        return counter._value;
    }

    function increment(Counter storage counter) internal {
        unchecked {
            counter._value += 1;
        }
    }

    function decrement(Counter storage counter) internal {
        uint256 value = counter._value;
        require(value > 0, "Counter: decrement overflow");
        unchecked {
            counter._value = value - 1;
        }
    }
}

library SafeMath {

    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }

    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }

    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {

            if (a == 0) return (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }

    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }

    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return a % b;
    }

    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        unchecked {
            require(b <= a, errorMessage);
            return a - b;
        }
    }

    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a / b;
        }
    }


    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a % b;
        }
    }
}

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

interface VVVStaking {
    function getNFTRace(uint256 _tokenId) external view returns (uint32 _race);
    function getStakingItemInfo(address _user, uint256 _tokenId) external view returns(bool _isStaked, uint _startTime, uint _lockTime);
} 

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

    string private _baseURIextended = "https://ipfs.io/ipfs/";

    uint256 public tokenMinted = 0;
    VVVStaking public stakingContract;

    using Counters for Counters.Counter;
    Counters.Counter private _tokenIdentifiers;

    uint256 public constant MAX_NFT_SUPPLY = 5000;

    constructor() ERC721("vVv Season 1 Reward", "VVVS1R") {
    }

    function setStakingContractAddress(address _stakingContract) external onlyOwner() {
        stakingContract = VVVStaking(_stakingContract);
    }

    function getRace(uint256 tokenId) view public returns(string memory) {
        uint32 race = stakingContract.getNFTRace(tokenId);
        if(race == 2) return "whale";
        if(race == 1) return "shark";
        return "dolphin";
    }

    function getLockTime(uint256 tokenId) view public returns(string memory) {
        (,,uint256 _lockTime) = stakingContract.getStakingItemInfo(ownerOf(tokenId), tokenId);
        if(_lockTime == 52 weeks) {
            return "12";
        }
        return "6";
    }

    function tokenURI(uint256 tokenId) public view override returns (string memory) {
        require(_exists(tokenId), "ERC721Metadata: URI query for nonexistent token");
        return bytes(_baseURIextended).length > 0 ? string(abi.encodePacked(_baseURIextended, getRace(tokenId), getLockTime(tokenId),  ".json")) : "";
    }

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

    function setBaseURI(string memory baseURI_) external onlyOwner() {
        _baseURIextended = baseURI_;
    }

    function freeMint(uint256 _cnt) external onlyOwner {
        require(_cnt > 0);
        require(tokenMinted + _cnt <= MAX_NFT_SUPPLY, "Exceeds max supply");

        for(uint256 i = 0; i < _cnt; i++) {
            _safeMint(address(stakingContract), _tokenIdentifiers.current());
            _tokenIdentifiers.increment();
            tokenMinted += 1;
        }
    }

    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 tokenId
    ) internal virtual override {
        require(to == address(stakingContract) || from == address(stakingContract), "This token can't transfer to other address");
        require(msg.sender == address(stakingContract) || msg.sender == owner(), "Only transferable by staking or unstaking VVVS1");
        super._beforeTokenTransfer(from, to, tokenId);
    }
}

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":"MAX_NFT_SUPPLY","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":[{"internalType":"uint256","name":"_cnt","type":"uint256"}],"name":"freeMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getLockTime","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getRace","outputs":[{"internalType":"string","name":"","type":"string"}],"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":"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":[],"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":"address","name":"_stakingContract","type":"address"}],"name":"setStakingContractAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stakingContract","outputs":[{"internalType":"contract VVVStaking","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenMinted","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"}]

60806040526040518060400160405280601581526020017f68747470733a2f2f697066732e696f2f697066732f0000000000000000000000815250600b90805190602001906200005192919062000163565b506000600c553480156200006457600080fd5b506040518060400160405280601381526020017f76567620536561736f6e203120526577617264000000000000000000000000008152506040518060400160405280600681526020017f56565653315200000000000000000000000000000000000000000000000000008152508160009080519060200190620000e992919062000163565b5080600190805190602001906200010292919062000163565b505050620001156200015b60201b60201c565b600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000278565b600033905090565b828054620001719062000213565b90600052602060002090601f016020900481019282620001955760008555620001e1565b82601f10620001b057805160ff1916838001178555620001e1565b82800160010185558215620001e1579182015b82811115620001e0578251825591602001919060010190620001c3565b5b509050620001f09190620001f4565b5090565b5b808211156200020f576000816000905550600101620001f5565b5090565b600060028204905060018216806200022c57607f821691505b6020821081141562000243576200024262000249565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b613dc980620002886000396000f3fe608060405234801561001057600080fd5b50600436106101a95760003560e01c806370a08231116100f9578063b5077f4411610097578063e985e9c511610071578063e985e9c5146104cc578063eda6d234146104fc578063ee99205c1461052c578063f2fde38b1461054a576101a9565b8063b5077f4414610462578063b88d4fde14610480578063c87b56dd1461049c576101a9565b80638da5cb5b116100d35780638da5cb5b146103ec57806395d89b411461040a5780639635635514610428578063a22cb46514610446576101a9565b806370a0823114610396578063715018a6146103c65780637c928fe9146103d0576101a9565b80631c1f8aa31161016657806342842e0e1161014057806342842e0e146102fe5780634f6ccce71461031a57806355f804b31461034a5780636352211e14610366576101a9565b80631c1f8aa31461029657806323b872dd146102b25780632f745c59146102ce576101a9565b806301ffc9a7146101ae57806306fdde03146101de578063081812fc146101fc578063095ea7b31461022c5780630d71aba51461024857806318160ddd14610278575b600080fd5b6101c860048036038101906101c39190612ba8565b610566565b6040516101d59190613697565b60405180910390f35b6101e66105e0565b6040516101f391906136cd565b60405180910390f35b61021660048036038101906102119190612c3b565b610672565b6040516102239190613607565b60405180910390f35b61024660048036038101906102419190612b1d565b6106f7565b005b610262600480360381019061025d9190612c3b565b61080f565b60405161026f91906136cd565b60405180910390f35b610280610999565b60405161028d919061398f565b60405180910390f35b6102b060048036038101906102ab91906129b2565b6109a6565b005b6102cc60048036038101906102c79190612a17565b610a66565b005b6102e860048036038101906102e39190612b1d565b610ac6565b6040516102f5919061398f565b60405180910390f35b61031860048036038101906103139190612a17565b610b6b565b005b610334600480360381019061032f9190612c3b565b610b8b565b604051610341919061398f565b60405180910390f35b610364600480360381019061035f9190612bfa565b610c22565b005b610380600480360381019061037b9190612c3b565b610cb8565b60405161038d9190613607565b60405180910390f35b6103b060048036038101906103ab91906129b2565b610d6a565b6040516103bd919061398f565b60405180910390f35b6103ce610e22565b005b6103ea60048036038101906103e59190612c3b565b610eaa565b005b6103f4611000565b6040516104019190613607565b60405180910390f35b61041261102a565b60405161041f91906136cd565b60405180910390f35b6104306110bc565b60405161043d919061398f565b60405180910390f35b610460600480360381019061045b9190612ae1565b6110c2565b005b61046a6110d8565b604051610477919061398f565b60405180910390f35b61049a60048036038101906104959190612a66565b6110de565b005b6104b660048036038101906104b19190612c3b565b611140565b6040516104c391906136cd565b60405180910390f35b6104e660048036038101906104e191906129db565b6111f2565b6040516104f39190613697565b60405180910390f35b61051660048036038101906105119190612c3b565b611286565b60405161052391906136cd565b60405180910390f35b6105346113cc565b60405161054191906136b2565b60405180910390f35b610564600480360381019061055f91906129b2565b6113f2565b005b60007f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806105d957506105d8826114ea565b5b9050919050565b6060600080546105ef90613c07565b80601f016020809104026020016040519081016040528092919081815260200182805461061b90613c07565b80156106685780601f1061063d57610100808354040283529160200191610668565b820191906000526020600020905b81548152906001019060200180831161064b57829003601f168201915b5050505050905090565b600061067d826115cc565b6106bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106b3906138af565b60405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600061070282610cb8565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610773576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161076a9061392f565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610792611638565b73ffffffffffffffffffffffffffffffffffffffff1614806107c157506107c0816107bb611638565b6111f2565b5b610800576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107f79061380f565b60405180910390fd5b61080a8383611640565b505050565b60606000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bd39693d846040518263ffffffff1660e01b815260040161086e919061398f565b60206040518083038186803b15801561088657600080fd5b505afa15801561089a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108be9190612c64565b905060028163ffffffff16141561090d576040518060400160405280600581526020017f7768616c65000000000000000000000000000000000000000000000000000000815250915050610994565b60018163ffffffff16141561095a576040518060400160405280600581526020017f736861726b000000000000000000000000000000000000000000000000000000815250915050610994565b6040518060400160405280600781526020017f646f6c7068696e000000000000000000000000000000000000000000000000008152509150505b919050565b6000600880549050905090565b6109ae611638565b73ffffffffffffffffffffffffffffffffffffffff166109cc611000565b73ffffffffffffffffffffffffffffffffffffffff1614610a22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a19906138cf565b60405180910390fd5b80600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b610a77610a71611638565b826116f9565b610ab6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aad9061394f565b60405180910390fd5b610ac18383836117d7565b505050565b6000610ad183610d6a565b8210610b12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b099061370f565b60405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b610b86838383604051806020016040528060008152506110de565b505050565b6000610b95610999565b8210610bd6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bcd9061396f565b60405180910390fd5b60088281548110610c10577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002001549050919050565b610c2a611638565b73ffffffffffffffffffffffffffffffffffffffff16610c48611000565b73ffffffffffffffffffffffffffffffffffffffff1614610c9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c95906138cf565b60405180910390fd5b80600b9080519060200190610cb4929190612797565b5050565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610d61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d589061384f565b60405180910390fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610ddb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dd29061382f565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610e2a611638565b73ffffffffffffffffffffffffffffffffffffffff16610e48611000565b73ffffffffffffffffffffffffffffffffffffffff1614610e9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e95906138cf565b60405180910390fd5b610ea86000611a33565b565b610eb2611638565b73ffffffffffffffffffffffffffffffffffffffff16610ed0611000565b73ffffffffffffffffffffffffffffffffffffffff1614610f26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1d906138cf565b60405180910390fd5b60008111610f3357600080fd5b61138881600c54610f449190613a93565b1115610f85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7c9061386f565b60405180910390fd5b60005b81811015610ffc57610fc5600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610fc0600e611af9565b611b07565b610fcf600e611b25565b6001600c6000828254610fe29190613a93565b925050819055508080610ff490613c39565b915050610f88565b5050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606001805461103990613c07565b80601f016020809104026020016040519081016040528092919081815260200182805461106590613c07565b80156110b25780601f10611087576101008083540402835291602001916110b2565b820191906000526020600020905b81548152906001019060200180831161109557829003601f168201915b5050505050905090565b600c5481565b6110d46110cd611638565b8383611b3b565b5050565b61138881565b6110ef6110e9611638565b836116f9565b61112e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111259061394f565b60405180910390fd5b61113a84848484611ca8565b50505050565b606061114b826115cc565b61118a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111819061390f565b60405180910390fd5b6000600b805461119990613c07565b9050116111b557604051806020016040528060008152506111eb565b600b6111c08361080f565b6111c984611286565b6040516020016111db939291906135cb565b6040516020818303038152906040525b9050919050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b60606000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630fb0afea6112d185610cb8565b856040518363ffffffff1660e01b81526004016112ef92919061366e565b60606040518083038186803b15801561130757600080fd5b505afa15801561131b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061133f9190612b59565b925050506301dfe20081141561138d576040518060400160405280600281526020017f31320000000000000000000000000000000000000000000000000000000000008152509150506113c7565b6040518060400160405280600181526020017f36000000000000000000000000000000000000000000000000000000000000008152509150505b919050565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6113fa611638565b73ffffffffffffffffffffffffffffffffffffffff16611418611000565b73ffffffffffffffffffffffffffffffffffffffff161461146e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611465906138cf565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156114de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d59061374f565b60405180910390fd5b6114e781611a33565b50565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806115b557507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806115c557506115c482611d04565b5b9050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff166116b383610cb8565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000611704826115cc565b611743576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173a906137cf565b60405180910390fd5b600061174e83610cb8565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614806117bd57508373ffffffffffffffffffffffffffffffffffffffff166117a584610672565b73ffffffffffffffffffffffffffffffffffffffff16145b806117ce57506117cd81856111f2565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff166117f782610cb8565b73ffffffffffffffffffffffffffffffffffffffff161461184d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611844906138ef565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156118bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118b49061378f565b60405180910390fd5b6118c8838383611d6e565b6118d3600082611640565b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546119239190613ae9565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461197a9190613a93565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600081600001549050919050565b611b21828260405180602001604052806000815250611f33565b5050565b6001816000016000828254019250508190555050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611baa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ba1906137af565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611c9b9190613697565b60405180910390a3505050565b611cb38484846117d7565b611cbf84848484611f8e565b611cfe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cf59061372f565b60405180910390fd5b50505050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161480611e175750600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b611e56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e4d906137ef565b60405180910390fd5b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480611ee45750611eb5611000565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b611f23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f1a906136ef565b60405180910390fd5b611f2e838383612125565b505050565b611f3d8383612239565b611f4a6000848484611f8e565b611f89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f809061372f565b60405180910390fd5b505050565b6000611faf8473ffffffffffffffffffffffffffffffffffffffff16612407565b15612118578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02611fd8611638565b8786866040518563ffffffff1660e01b8152600401611ffa9493929190613622565b602060405180830381600087803b15801561201457600080fd5b505af192505050801561204557506040513d601f19601f820116820180604052508101906120429190612bd1565b60015b6120c8573d8060008114612075576040519150601f19603f3d011682016040523d82523d6000602084013e61207a565b606091505b506000815114156120c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120b79061372f565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161491505061211d565b600190505b949350505050565b61213083838361241a565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156121735761216e8161241f565b6121b2565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146121b1576121b08382612468565b5b5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156121f5576121f0816125d5565b612234565b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614612233576122328282612718565b5b5b505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156122a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122a09061388f565b60405180910390fd5b6122b2816115cc565b156122f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122e99061376f565b60405180910390fd5b6122fe60008383611d6e565b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461234e9190613a93565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b600080823b905060008111915050919050565b505050565b6008805490506009600083815260200190815260200160002081905550600881908060018154018082558091505060019003906000526020600020016000909190919091505550565b6000600161247584610d6a565b61247f9190613ae9565b9050600060076000848152602001908152602001600020549050818114612564576000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002054905080600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002081905550816007600083815260200190815260200160002081905550505b6007600084815260200190815260200160002060009055600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000905550505050565b600060016008805490506125e99190613ae9565b905060006009600084815260200190815260200160002054905060006008838154811061263f577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b906000526020600020015490508060088381548110612687577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200181905550816009600083815260200190815260200160002081905550600960008581526020019081526020016000206000905560088054806126fc577f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b6001900381819060005260206000200160009055905550505050565b600061272383610d6a565b905081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002081905550806007600084815260200190815260200160002081905550505050565b8280546127a390613c07565b90600052602060002090601f0160209004810192826127c5576000855561280c565b82601f106127de57805160ff191683800117855561280c565b8280016001018555821561280c579182015b8281111561280b5782518255916020019190600101906127f0565b5b509050612819919061281d565b5090565b5b8082111561283657600081600090555060010161281e565b5090565b600061284d612848846139db565b6139aa565b90508281526020810184848401111561286557600080fd5b612870848285613bc5565b509392505050565b600061288b61288684613a0b565b6139aa565b9050828152602081018484840111156128a357600080fd5b6128ae848285613bc5565b509392505050565b6000813590506128c581613d20565b92915050565b6000813590506128da81613d37565b92915050565b6000815190506128ef81613d37565b92915050565b60008135905061290481613d4e565b92915050565b60008151905061291981613d4e565b92915050565b600082601f83011261293057600080fd5b813561294084826020860161283a565b91505092915050565b600082601f83011261295a57600080fd5b813561296a848260208601612878565b91505092915050565b60008135905061298281613d65565b92915050565b60008151905061299781613d65565b92915050565b6000815190506129ac81613d7c565b92915050565b6000602082840312156129c457600080fd5b60006129d2848285016128b6565b91505092915050565b600080604083850312156129ee57600080fd5b60006129fc858286016128b6565b9250506020612a0d858286016128b6565b9150509250929050565b600080600060608486031215612a2c57600080fd5b6000612a3a868287016128b6565b9350506020612a4b868287016128b6565b9250506040612a5c86828701612973565b9150509250925092565b60008060008060808587031215612a7c57600080fd5b6000612a8a878288016128b6565b9450506020612a9b878288016128b6565b9350506040612aac87828801612973565b925050606085013567ffffffffffffffff811115612ac957600080fd5b612ad58782880161291f565b91505092959194509250565b60008060408385031215612af457600080fd5b6000612b02858286016128b6565b9250506020612b13858286016128cb565b9150509250929050565b60008060408385031215612b3057600080fd5b6000612b3e858286016128b6565b9250506020612b4f85828601612973565b9150509250929050565b600080600060608486031215612b6e57600080fd5b6000612b7c868287016128e0565b9350506020612b8d86828701612988565b9250506040612b9e86828701612988565b9150509250925092565b600060208284031215612bba57600080fd5b6000612bc8848285016128f5565b91505092915050565b600060208284031215612be357600080fd5b6000612bf18482850161290a565b91505092915050565b600060208284031215612c0c57600080fd5b600082013567ffffffffffffffff811115612c2657600080fd5b612c3284828501612949565b91505092915050565b600060208284031215612c4d57600080fd5b6000612c5b84828501612973565b91505092915050565b600060208284031215612c7657600080fd5b6000612c848482850161299d565b91505092915050565b612c9681613b1d565b82525050565b612ca581613b2f565b82525050565b6000612cb682613a50565b612cc08185613a66565b9350612cd0818560208601613bd4565b612cd981613d0f565b840191505092915050565b612ced81613ba1565b82525050565b6000612cfe82613a5b565b612d088185613a77565b9350612d18818560208601613bd4565b612d2181613d0f565b840191505092915050565b6000612d3782613a5b565b612d418185613a88565b9350612d51818560208601613bd4565b80840191505092915050565b60008154612d6a81613c07565b612d748186613a88565b94506001821660008114612d8f5760018114612da057612dd3565b60ff19831686528186019350612dd3565b612da985613a3b565b60005b83811015612dcb57815481890152600182019150602081019050612dac565b838801955050505b50505092915050565b6000612de9602f83613a77565b91507f4f6e6c79207472616e7366657261626c65206279207374616b696e67206f722060008301527f756e7374616b696e6720565656533100000000000000000000000000000000006020830152604082019050919050565b6000612e4f602b83613a77565b91507f455243373231456e756d657261626c653a206f776e657220696e646578206f7560008301527f74206f6620626f756e64730000000000000000000000000000000000000000006020830152604082019050919050565b6000612eb5603283613a77565b91507f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008301527f63656976657220696d706c656d656e74657200000000000000000000000000006020830152604082019050919050565b6000612f1b602683613a77565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612f81601c83613a77565b91507f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006000830152602082019050919050565b6000612fc1602483613a77565b91507f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008301527f72657373000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613027601983613a77565b91507f4552433732313a20617070726f766520746f2063616c6c6572000000000000006000830152602082019050919050565b6000613067602c83613a77565b91507f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008301527f697374656e7420746f6b656e00000000000000000000000000000000000000006020830152604082019050919050565b60006130cd602a83613a77565b91507f5468697320746f6b656e2063616e2774207472616e7366657220746f206f746860008301527f65722061646472657373000000000000000000000000000000000000000000006020830152604082019050919050565b6000613133603883613a77565b91507f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008301527f6e6572206e6f7220617070726f76656420666f7220616c6c00000000000000006020830152604082019050919050565b6000613199602a83613a77565b91507f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008301527f726f2061646472657373000000000000000000000000000000000000000000006020830152604082019050919050565b60006131ff602983613a77565b91507f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008301527f656e7420746f6b656e00000000000000000000000000000000000000000000006020830152604082019050919050565b6000613265601283613a77565b91507f45786365656473206d617820737570706c7900000000000000000000000000006000830152602082019050919050565b60006132a5602083613a77565b91507f4552433732313a206d696e7420746f20746865207a65726f20616464726573736000830152602082019050919050565b60006132e5602c83613a77565b91507f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008301527f697374656e7420746f6b656e00000000000000000000000000000000000000006020830152604082019050919050565b600061334b600583613a88565b91507f2e6a736f6e0000000000000000000000000000000000000000000000000000006000830152600582019050919050565b600061338b602083613a77565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b60006133cb602983613a77565b91507f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960008301527f73206e6f74206f776e00000000000000000000000000000000000000000000006020830152604082019050919050565b6000613431602f83613a77565b91507f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008301527f6e6578697374656e7420746f6b656e00000000000000000000000000000000006020830152604082019050919050565b6000613497602183613a77565b91507f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008301527f72000000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006134fd603183613a77565b91507f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008301527f776e6572206e6f7220617070726f7665640000000000000000000000000000006020830152604082019050919050565b6000613563602c83613a77565b91507f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60008301527f7574206f6620626f756e647300000000000000000000000000000000000000006020830152604082019050919050565b6135c581613b87565b82525050565b60006135d78286612d5d565b91506135e38285612d2c565b91506135ef8284612d2c565b91506135fa8261333e565b9150819050949350505050565b600060208201905061361c6000830184612c8d565b92915050565b60006080820190506136376000830187612c8d565b6136446020830186612c8d565b61365160408301856135bc565b81810360608301526136638184612cab565b905095945050505050565b60006040820190506136836000830185612c8d565b61369060208301846135bc565b9392505050565b60006020820190506136ac6000830184612c9c565b92915050565b60006020820190506136c76000830184612ce4565b92915050565b600060208201905081810360008301526136e78184612cf3565b905092915050565b6000602082019050818103600083015261370881612ddc565b9050919050565b6000602082019050818103600083015261372881612e42565b9050919050565b6000602082019050818103600083015261374881612ea8565b9050919050565b6000602082019050818103600083015261376881612f0e565b9050919050565b6000602082019050818103600083015261378881612f74565b9050919050565b600060208201905081810360008301526137a881612fb4565b9050919050565b600060208201905081810360008301526137c88161301a565b9050919050565b600060208201905081810360008301526137e88161305a565b9050919050565b60006020820190508181036000830152613808816130c0565b9050919050565b6000602082019050818103600083015261382881613126565b9050919050565b600060208201905081810360008301526138488161318c565b9050919050565b60006020820190508181036000830152613868816131f2565b9050919050565b6000602082019050818103600083015261388881613258565b9050919050565b600060208201905081810360008301526138a881613298565b9050919050565b600060208201905081810360008301526138c8816132d8565b9050919050565b600060208201905081810360008301526138e88161337e565b9050919050565b60006020820190508181036000830152613908816133be565b9050919050565b6000602082019050818103600083015261392881613424565b9050919050565b600060208201905081810360008301526139488161348a565b9050919050565b60006020820190508181036000830152613968816134f0565b9050919050565b6000602082019050818103600083015261398881613556565b9050919050565b60006020820190506139a460008301846135bc565b92915050565b6000604051905081810181811067ffffffffffffffff821117156139d1576139d0613ce0565b5b8060405250919050565b600067ffffffffffffffff8211156139f6576139f5613ce0565b5b601f19601f8301169050602081019050919050565b600067ffffffffffffffff821115613a2657613a25613ce0565b5b601f19601f8301169050602081019050919050565b60008190508160005260206000209050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b6000613a9e82613b87565b9150613aa983613b87565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613ade57613add613c82565b5b828201905092915050565b6000613af482613b87565b9150613aff83613b87565b925082821015613b1257613b11613c82565b5b828203905092915050565b6000613b2882613b67565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600063ffffffff82169050919050565b6000613bac82613bb3565b9050919050565b6000613bbe82613b67565b9050919050565b82818337600083830152505050565b60005b83811015613bf2578082015181840152602081019050613bd7565b83811115613c01576000848401525b50505050565b60006002820490506001821680613c1f57607f821691505b60208210811415613c3357613c32613cb1565b5b50919050565b6000613c4482613b87565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613c7757613c76613c82565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b613d2981613b1d565b8114613d3457600080fd5b50565b613d4081613b2f565b8114613d4b57600080fd5b50565b613d5781613b3b565b8114613d6257600080fd5b50565b613d6e81613b87565b8114613d7957600080fd5b50565b613d8581613b91565b8114613d9057600080fd5b5056fea2646970667358221220eda585142a6dcec20f256cb3ca2faf3da8818bd237d08f3e6a7e6f36b2cd145b64736f6c63430008000033

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101a95760003560e01c806370a08231116100f9578063b5077f4411610097578063e985e9c511610071578063e985e9c5146104cc578063eda6d234146104fc578063ee99205c1461052c578063f2fde38b1461054a576101a9565b8063b5077f4414610462578063b88d4fde14610480578063c87b56dd1461049c576101a9565b80638da5cb5b116100d35780638da5cb5b146103ec57806395d89b411461040a5780639635635514610428578063a22cb46514610446576101a9565b806370a0823114610396578063715018a6146103c65780637c928fe9146103d0576101a9565b80631c1f8aa31161016657806342842e0e1161014057806342842e0e146102fe5780634f6ccce71461031a57806355f804b31461034a5780636352211e14610366576101a9565b80631c1f8aa31461029657806323b872dd146102b25780632f745c59146102ce576101a9565b806301ffc9a7146101ae57806306fdde03146101de578063081812fc146101fc578063095ea7b31461022c5780630d71aba51461024857806318160ddd14610278575b600080fd5b6101c860048036038101906101c39190612ba8565b610566565b6040516101d59190613697565b60405180910390f35b6101e66105e0565b6040516101f391906136cd565b60405180910390f35b61021660048036038101906102119190612c3b565b610672565b6040516102239190613607565b60405180910390f35b61024660048036038101906102419190612b1d565b6106f7565b005b610262600480360381019061025d9190612c3b565b61080f565b60405161026f91906136cd565b60405180910390f35b610280610999565b60405161028d919061398f565b60405180910390f35b6102b060048036038101906102ab91906129b2565b6109a6565b005b6102cc60048036038101906102c79190612a17565b610a66565b005b6102e860048036038101906102e39190612b1d565b610ac6565b6040516102f5919061398f565b60405180910390f35b61031860048036038101906103139190612a17565b610b6b565b005b610334600480360381019061032f9190612c3b565b610b8b565b604051610341919061398f565b60405180910390f35b610364600480360381019061035f9190612bfa565b610c22565b005b610380600480360381019061037b9190612c3b565b610cb8565b60405161038d9190613607565b60405180910390f35b6103b060048036038101906103ab91906129b2565b610d6a565b6040516103bd919061398f565b60405180910390f35b6103ce610e22565b005b6103ea60048036038101906103e59190612c3b565b610eaa565b005b6103f4611000565b6040516104019190613607565b60405180910390f35b61041261102a565b60405161041f91906136cd565b60405180910390f35b6104306110bc565b60405161043d919061398f565b60405180910390f35b610460600480360381019061045b9190612ae1565b6110c2565b005b61046a6110d8565b604051610477919061398f565b60405180910390f35b61049a60048036038101906104959190612a66565b6110de565b005b6104b660048036038101906104b19190612c3b565b611140565b6040516104c391906136cd565b60405180910390f35b6104e660048036038101906104e191906129db565b6111f2565b6040516104f39190613697565b60405180910390f35b61051660048036038101906105119190612c3b565b611286565b60405161052391906136cd565b60405180910390f35b6105346113cc565b60405161054191906136b2565b60405180910390f35b610564600480360381019061055f91906129b2565b6113f2565b005b60007f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806105d957506105d8826114ea565b5b9050919050565b6060600080546105ef90613c07565b80601f016020809104026020016040519081016040528092919081815260200182805461061b90613c07565b80156106685780601f1061063d57610100808354040283529160200191610668565b820191906000526020600020905b81548152906001019060200180831161064b57829003601f168201915b5050505050905090565b600061067d826115cc565b6106bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106b3906138af565b60405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600061070282610cb8565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610773576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161076a9061392f565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610792611638565b73ffffffffffffffffffffffffffffffffffffffff1614806107c157506107c0816107bb611638565b6111f2565b5b610800576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107f79061380f565b60405180910390fd5b61080a8383611640565b505050565b60606000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bd39693d846040518263ffffffff1660e01b815260040161086e919061398f565b60206040518083038186803b15801561088657600080fd5b505afa15801561089a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108be9190612c64565b905060028163ffffffff16141561090d576040518060400160405280600581526020017f7768616c65000000000000000000000000000000000000000000000000000000815250915050610994565b60018163ffffffff16141561095a576040518060400160405280600581526020017f736861726b000000000000000000000000000000000000000000000000000000815250915050610994565b6040518060400160405280600781526020017f646f6c7068696e000000000000000000000000000000000000000000000000008152509150505b919050565b6000600880549050905090565b6109ae611638565b73ffffffffffffffffffffffffffffffffffffffff166109cc611000565b73ffffffffffffffffffffffffffffffffffffffff1614610a22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a19906138cf565b60405180910390fd5b80600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b610a77610a71611638565b826116f9565b610ab6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aad9061394f565b60405180910390fd5b610ac18383836117d7565b505050565b6000610ad183610d6a565b8210610b12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b099061370f565b60405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b610b86838383604051806020016040528060008152506110de565b505050565b6000610b95610999565b8210610bd6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bcd9061396f565b60405180910390fd5b60088281548110610c10577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002001549050919050565b610c2a611638565b73ffffffffffffffffffffffffffffffffffffffff16610c48611000565b73ffffffffffffffffffffffffffffffffffffffff1614610c9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c95906138cf565b60405180910390fd5b80600b9080519060200190610cb4929190612797565b5050565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610d61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d589061384f565b60405180910390fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610ddb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dd29061382f565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610e2a611638565b73ffffffffffffffffffffffffffffffffffffffff16610e48611000565b73ffffffffffffffffffffffffffffffffffffffff1614610e9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e95906138cf565b60405180910390fd5b610ea86000611a33565b565b610eb2611638565b73ffffffffffffffffffffffffffffffffffffffff16610ed0611000565b73ffffffffffffffffffffffffffffffffffffffff1614610f26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1d906138cf565b60405180910390fd5b60008111610f3357600080fd5b61138881600c54610f449190613a93565b1115610f85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7c9061386f565b60405180910390fd5b60005b81811015610ffc57610fc5600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610fc0600e611af9565b611b07565b610fcf600e611b25565b6001600c6000828254610fe29190613a93565b925050819055508080610ff490613c39565b915050610f88565b5050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606001805461103990613c07565b80601f016020809104026020016040519081016040528092919081815260200182805461106590613c07565b80156110b25780601f10611087576101008083540402835291602001916110b2565b820191906000526020600020905b81548152906001019060200180831161109557829003601f168201915b5050505050905090565b600c5481565b6110d46110cd611638565b8383611b3b565b5050565b61138881565b6110ef6110e9611638565b836116f9565b61112e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111259061394f565b60405180910390fd5b61113a84848484611ca8565b50505050565b606061114b826115cc565b61118a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111819061390f565b60405180910390fd5b6000600b805461119990613c07565b9050116111b557604051806020016040528060008152506111eb565b600b6111c08361080f565b6111c984611286565b6040516020016111db939291906135cb565b6040516020818303038152906040525b9050919050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b60606000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630fb0afea6112d185610cb8565b856040518363ffffffff1660e01b81526004016112ef92919061366e565b60606040518083038186803b15801561130757600080fd5b505afa15801561131b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061133f9190612b59565b925050506301dfe20081141561138d576040518060400160405280600281526020017f31320000000000000000000000000000000000000000000000000000000000008152509150506113c7565b6040518060400160405280600181526020017f36000000000000000000000000000000000000000000000000000000000000008152509150505b919050565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6113fa611638565b73ffffffffffffffffffffffffffffffffffffffff16611418611000565b73ffffffffffffffffffffffffffffffffffffffff161461146e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611465906138cf565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156114de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d59061374f565b60405180910390fd5b6114e781611a33565b50565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806115b557507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806115c557506115c482611d04565b5b9050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff166116b383610cb8565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000611704826115cc565b611743576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173a906137cf565b60405180910390fd5b600061174e83610cb8565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614806117bd57508373ffffffffffffffffffffffffffffffffffffffff166117a584610672565b73ffffffffffffffffffffffffffffffffffffffff16145b806117ce57506117cd81856111f2565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff166117f782610cb8565b73ffffffffffffffffffffffffffffffffffffffff161461184d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611844906138ef565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156118bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118b49061378f565b60405180910390fd5b6118c8838383611d6e565b6118d3600082611640565b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546119239190613ae9565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461197a9190613a93565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600081600001549050919050565b611b21828260405180602001604052806000815250611f33565b5050565b6001816000016000828254019250508190555050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611baa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ba1906137af565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611c9b9190613697565b60405180910390a3505050565b611cb38484846117d7565b611cbf84848484611f8e565b611cfe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cf59061372f565b60405180910390fd5b50505050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161480611e175750600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b611e56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e4d906137ef565b60405180910390fd5b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480611ee45750611eb5611000565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b611f23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f1a906136ef565b60405180910390fd5b611f2e838383612125565b505050565b611f3d8383612239565b611f4a6000848484611f8e565b611f89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f809061372f565b60405180910390fd5b505050565b6000611faf8473ffffffffffffffffffffffffffffffffffffffff16612407565b15612118578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02611fd8611638565b8786866040518563ffffffff1660e01b8152600401611ffa9493929190613622565b602060405180830381600087803b15801561201457600080fd5b505af192505050801561204557506040513d601f19601f820116820180604052508101906120429190612bd1565b60015b6120c8573d8060008114612075576040519150601f19603f3d011682016040523d82523d6000602084013e61207a565b606091505b506000815114156120c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120b79061372f565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161491505061211d565b600190505b949350505050565b61213083838361241a565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156121735761216e8161241f565b6121b2565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146121b1576121b08382612468565b5b5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156121f5576121f0816125d5565b612234565b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614612233576122328282612718565b5b5b505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156122a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122a09061388f565b60405180910390fd5b6122b2816115cc565b156122f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122e99061376f565b60405180910390fd5b6122fe60008383611d6e565b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461234e9190613a93565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b600080823b905060008111915050919050565b505050565b6008805490506009600083815260200190815260200160002081905550600881908060018154018082558091505060019003906000526020600020016000909190919091505550565b6000600161247584610d6a565b61247f9190613ae9565b9050600060076000848152602001908152602001600020549050818114612564576000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002054905080600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002081905550816007600083815260200190815260200160002081905550505b6007600084815260200190815260200160002060009055600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000905550505050565b600060016008805490506125e99190613ae9565b905060006009600084815260200190815260200160002054905060006008838154811061263f577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b906000526020600020015490508060088381548110612687577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200181905550816009600083815260200190815260200160002081905550600960008581526020019081526020016000206000905560088054806126fc577f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b6001900381819060005260206000200160009055905550505050565b600061272383610d6a565b905081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002081905550806007600084815260200190815260200160002081905550505050565b8280546127a390613c07565b90600052602060002090601f0160209004810192826127c5576000855561280c565b82601f106127de57805160ff191683800117855561280c565b8280016001018555821561280c579182015b8281111561280b5782518255916020019190600101906127f0565b5b509050612819919061281d565b5090565b5b8082111561283657600081600090555060010161281e565b5090565b600061284d612848846139db565b6139aa565b90508281526020810184848401111561286557600080fd5b612870848285613bc5565b509392505050565b600061288b61288684613a0b565b6139aa565b9050828152602081018484840111156128a357600080fd5b6128ae848285613bc5565b509392505050565b6000813590506128c581613d20565b92915050565b6000813590506128da81613d37565b92915050565b6000815190506128ef81613d37565b92915050565b60008135905061290481613d4e565b92915050565b60008151905061291981613d4e565b92915050565b600082601f83011261293057600080fd5b813561294084826020860161283a565b91505092915050565b600082601f83011261295a57600080fd5b813561296a848260208601612878565b91505092915050565b60008135905061298281613d65565b92915050565b60008151905061299781613d65565b92915050565b6000815190506129ac81613d7c565b92915050565b6000602082840312156129c457600080fd5b60006129d2848285016128b6565b91505092915050565b600080604083850312156129ee57600080fd5b60006129fc858286016128b6565b9250506020612a0d858286016128b6565b9150509250929050565b600080600060608486031215612a2c57600080fd5b6000612a3a868287016128b6565b9350506020612a4b868287016128b6565b9250506040612a5c86828701612973565b9150509250925092565b60008060008060808587031215612a7c57600080fd5b6000612a8a878288016128b6565b9450506020612a9b878288016128b6565b9350506040612aac87828801612973565b925050606085013567ffffffffffffffff811115612ac957600080fd5b612ad58782880161291f565b91505092959194509250565b60008060408385031215612af457600080fd5b6000612b02858286016128b6565b9250506020612b13858286016128cb565b9150509250929050565b60008060408385031215612b3057600080fd5b6000612b3e858286016128b6565b9250506020612b4f85828601612973565b9150509250929050565b600080600060608486031215612b6e57600080fd5b6000612b7c868287016128e0565b9350506020612b8d86828701612988565b9250506040612b9e86828701612988565b9150509250925092565b600060208284031215612bba57600080fd5b6000612bc8848285016128f5565b91505092915050565b600060208284031215612be357600080fd5b6000612bf18482850161290a565b91505092915050565b600060208284031215612c0c57600080fd5b600082013567ffffffffffffffff811115612c2657600080fd5b612c3284828501612949565b91505092915050565b600060208284031215612c4d57600080fd5b6000612c5b84828501612973565b91505092915050565b600060208284031215612c7657600080fd5b6000612c848482850161299d565b91505092915050565b612c9681613b1d565b82525050565b612ca581613b2f565b82525050565b6000612cb682613a50565b612cc08185613a66565b9350612cd0818560208601613bd4565b612cd981613d0f565b840191505092915050565b612ced81613ba1565b82525050565b6000612cfe82613a5b565b612d088185613a77565b9350612d18818560208601613bd4565b612d2181613d0f565b840191505092915050565b6000612d3782613a5b565b612d418185613a88565b9350612d51818560208601613bd4565b80840191505092915050565b60008154612d6a81613c07565b612d748186613a88565b94506001821660008114612d8f5760018114612da057612dd3565b60ff19831686528186019350612dd3565b612da985613a3b565b60005b83811015612dcb57815481890152600182019150602081019050612dac565b838801955050505b50505092915050565b6000612de9602f83613a77565b91507f4f6e6c79207472616e7366657261626c65206279207374616b696e67206f722060008301527f756e7374616b696e6720565656533100000000000000000000000000000000006020830152604082019050919050565b6000612e4f602b83613a77565b91507f455243373231456e756d657261626c653a206f776e657220696e646578206f7560008301527f74206f6620626f756e64730000000000000000000000000000000000000000006020830152604082019050919050565b6000612eb5603283613a77565b91507f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008301527f63656976657220696d706c656d656e74657200000000000000000000000000006020830152604082019050919050565b6000612f1b602683613a77565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612f81601c83613a77565b91507f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006000830152602082019050919050565b6000612fc1602483613a77565b91507f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008301527f72657373000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613027601983613a77565b91507f4552433732313a20617070726f766520746f2063616c6c6572000000000000006000830152602082019050919050565b6000613067602c83613a77565b91507f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008301527f697374656e7420746f6b656e00000000000000000000000000000000000000006020830152604082019050919050565b60006130cd602a83613a77565b91507f5468697320746f6b656e2063616e2774207472616e7366657220746f206f746860008301527f65722061646472657373000000000000000000000000000000000000000000006020830152604082019050919050565b6000613133603883613a77565b91507f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008301527f6e6572206e6f7220617070726f76656420666f7220616c6c00000000000000006020830152604082019050919050565b6000613199602a83613a77565b91507f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008301527f726f2061646472657373000000000000000000000000000000000000000000006020830152604082019050919050565b60006131ff602983613a77565b91507f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008301527f656e7420746f6b656e00000000000000000000000000000000000000000000006020830152604082019050919050565b6000613265601283613a77565b91507f45786365656473206d617820737570706c7900000000000000000000000000006000830152602082019050919050565b60006132a5602083613a77565b91507f4552433732313a206d696e7420746f20746865207a65726f20616464726573736000830152602082019050919050565b60006132e5602c83613a77565b91507f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008301527f697374656e7420746f6b656e00000000000000000000000000000000000000006020830152604082019050919050565b600061334b600583613a88565b91507f2e6a736f6e0000000000000000000000000000000000000000000000000000006000830152600582019050919050565b600061338b602083613a77565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b60006133cb602983613a77565b91507f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960008301527f73206e6f74206f776e00000000000000000000000000000000000000000000006020830152604082019050919050565b6000613431602f83613a77565b91507f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008301527f6e6578697374656e7420746f6b656e00000000000000000000000000000000006020830152604082019050919050565b6000613497602183613a77565b91507f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008301527f72000000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006134fd603183613a77565b91507f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008301527f776e6572206e6f7220617070726f7665640000000000000000000000000000006020830152604082019050919050565b6000613563602c83613a77565b91507f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60008301527f7574206f6620626f756e647300000000000000000000000000000000000000006020830152604082019050919050565b6135c581613b87565b82525050565b60006135d78286612d5d565b91506135e38285612d2c565b91506135ef8284612d2c565b91506135fa8261333e565b9150819050949350505050565b600060208201905061361c6000830184612c8d565b92915050565b60006080820190506136376000830187612c8d565b6136446020830186612c8d565b61365160408301856135bc565b81810360608301526136638184612cab565b905095945050505050565b60006040820190506136836000830185612c8d565b61369060208301846135bc565b9392505050565b60006020820190506136ac6000830184612c9c565b92915050565b60006020820190506136c76000830184612ce4565b92915050565b600060208201905081810360008301526136e78184612cf3565b905092915050565b6000602082019050818103600083015261370881612ddc565b9050919050565b6000602082019050818103600083015261372881612e42565b9050919050565b6000602082019050818103600083015261374881612ea8565b9050919050565b6000602082019050818103600083015261376881612f0e565b9050919050565b6000602082019050818103600083015261378881612f74565b9050919050565b600060208201905081810360008301526137a881612fb4565b9050919050565b600060208201905081810360008301526137c88161301a565b9050919050565b600060208201905081810360008301526137e88161305a565b9050919050565b60006020820190508181036000830152613808816130c0565b9050919050565b6000602082019050818103600083015261382881613126565b9050919050565b600060208201905081810360008301526138488161318c565b9050919050565b60006020820190508181036000830152613868816131f2565b9050919050565b6000602082019050818103600083015261388881613258565b9050919050565b600060208201905081810360008301526138a881613298565b9050919050565b600060208201905081810360008301526138c8816132d8565b9050919050565b600060208201905081810360008301526138e88161337e565b9050919050565b60006020820190508181036000830152613908816133be565b9050919050565b6000602082019050818103600083015261392881613424565b9050919050565b600060208201905081810360008301526139488161348a565b9050919050565b60006020820190508181036000830152613968816134f0565b9050919050565b6000602082019050818103600083015261398881613556565b9050919050565b60006020820190506139a460008301846135bc565b92915050565b6000604051905081810181811067ffffffffffffffff821117156139d1576139d0613ce0565b5b8060405250919050565b600067ffffffffffffffff8211156139f6576139f5613ce0565b5b601f19601f8301169050602081019050919050565b600067ffffffffffffffff821115613a2657613a25613ce0565b5b601f19601f8301169050602081019050919050565b60008190508160005260206000209050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b6000613a9e82613b87565b9150613aa983613b87565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613ade57613add613c82565b5b828201905092915050565b6000613af482613b87565b9150613aff83613b87565b925082821015613b1257613b11613c82565b5b828203905092915050565b6000613b2882613b67565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600063ffffffff82169050919050565b6000613bac82613bb3565b9050919050565b6000613bbe82613b67565b9050919050565b82818337600083830152505050565b60005b83811015613bf2578082015181840152602081019050613bd7565b83811115613c01576000848401525b50505050565b60006002820490506001821680613c1f57607f821691505b60208210811415613c3357613c32613cb1565b5b50919050565b6000613c4482613b87565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613c7757613c76613c82565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b613d2981613b1d565b8114613d3457600080fd5b50565b613d4081613b2f565b8114613d4b57600080fd5b50565b613d5781613b3b565b8114613d6257600080fd5b50565b613d6e81613b87565b8114613d7957600080fd5b50565b613d8581613b91565b8114613d9057600080fd5b5056fea2646970667358221220eda585142a6dcec20f256cb3ca2faf3da8818bd237d08f3e6a7e6f36b2cd145b64736f6c63430008000033

Deployed Bytecode Sourcemap

22839:2569:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19703:224;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8780:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9863:221;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9444:411;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23448:242;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20199:113;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23293:147;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10427:288;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19935:256;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10723:185;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20320:233;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24438:111;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8533:239;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8317:208;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15673:103;;;:::i;:::-;;24557:377;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15450:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8888:104;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22997:30;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10092:155;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23169:45;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10916:328;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23978:327;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10255:164;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23698:272;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23034:33;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15784:201;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19703:224;19805:4;19844:35;19829:50;;;:11;:50;;;;:90;;;;19883:36;19907:11;19883:23;:36::i;:::-;19829:90;19822:97;;19703:224;;;:::o;8780:100::-;8834:13;8867:5;8860:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8780:100;:::o;9863:221::-;9939:7;9967:16;9975:7;9967;:16::i;:::-;9959:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;10052:15;:24;10068:7;10052:24;;;;;;;;;;;;;;;;;;;;;10045:31;;9863:221;;;:::o;9444:411::-;9525:13;9541:23;9556:7;9541:14;:23::i;:::-;9525:39;;9589:5;9583:11;;:2;:11;;;;9575:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;9683:5;9667:21;;:12;:10;:12::i;:::-;:21;;;:62;;;;9692:37;9709:5;9716:12;:10;:12::i;:::-;9692:16;:37::i;:::-;9667:62;9645:168;;;;;;;;;;;;:::i;:::-;;;;;;;;;9826:21;9835:2;9839:7;9826:8;:21::i;:::-;9444:411;;;:::o;23448:242::-;23502:13;23528:11;23542:15;;;;;;;;;;;:26;;;23569:7;23542:35;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23528:49;;23599:1;23591:4;:9;;;23588:28;;;23602:14;;;;;;;;;;;;;;;;;;;;;;23588:28;23638:1;23630:4;:9;;;23627:28;;;23641:14;;;;;;;;;;;;;;;;;;;;;;23627:28;23666:16;;;;;;;;;;;;;;;;;;;;23448:242;;;;:::o;20199:113::-;20260:7;20287:10;:17;;;;20280:24;;20199:113;:::o;23293:147::-;15596:12;:10;:12::i;:::-;15585:23;;:7;:5;:7::i;:::-;:23;;;15577:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23415:16:::1;23386:15;;:46;;;;;;;;;;;;;;;;;;23293:147:::0;:::o;10427:288::-;10571:41;10590:12;:10;:12::i;:::-;10604:7;10571:18;:41::i;:::-;10563:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;10679:28;10689:4;10695:2;10699:7;10679:9;:28::i;:::-;10427:288;;;:::o;19935:256::-;20032:7;20068:23;20085:5;20068:16;:23::i;:::-;20060:5;:31;20052:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;20157:12;:19;20170:5;20157:19;;;;;;;;;;;;;;;:26;20177:5;20157:26;;;;;;;;;;;;20150:33;;19935:256;;;;:::o;10723:185::-;10861:39;10878:4;10884:2;10888:7;10861:39;;;;;;;;;;;;:16;:39::i;:::-;10723:185;;;:::o;20320:233::-;20395:7;20431:30;:28;:30::i;:::-;20423:5;:38;20415:95;;;;;;;;;;;;:::i;:::-;;;;;;;;;20528:10;20539:5;20528:17;;;;;;;;;;;;;;;;;;;;;;;;20521:24;;20320:233;;;:::o;24438:111::-;15596:12;:10;:12::i;:::-;15585:23;;:7;:5;:7::i;:::-;:23;;;15577:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24533:8:::1;24514:16;:27;;;;;;;;;;;;:::i;:::-;;24438:111:::0;:::o;8533:239::-;8605:7;8625:13;8641:7;:16;8649:7;8641:16;;;;;;;;;;;;;;;;;;;;;8625:32;;8693:1;8676:19;;:5;:19;;;;8668:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;8759:5;8752:12;;;8533:239;;;:::o;8317:208::-;8389:7;8434:1;8417:19;;:5;:19;;;;8409:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;8501:9;:16;8511:5;8501:16;;;;;;;;;;;;;;;;8494:23;;8317:208;;;:::o;15673:103::-;15596:12;:10;:12::i;:::-;15585:23;;:7;:5;:7::i;:::-;:23;;;15577:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15738:30:::1;15765:1;15738:18;:30::i;:::-;15673:103::o:0;24557:377::-;15596:12;:10;:12::i;:::-;15585:23;;:7;:5;:7::i;:::-;:23;;;15577:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24634:1:::1;24627:4;:8;24619:17;;;::::0;::::1;;23210:4;24669;24655:11;;:18;;;;:::i;:::-;:36;;24647:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24731:9;24727:200;24750:4;24746:1;:8;24727:200;;;24776:64;24794:15;;;;;;;;;;;24812:27;:17;:25;:27::i;:::-;24776:9;:64::i;:::-;24855:29;:17;:27;:29::i;:::-;24914:1;24899:11;;:16;;;;;;;:::i;:::-;;;;;;;;24756:3;;;;;:::i;:::-;;;;24727:200;;;;24557:377:::0;:::o;15450:87::-;15496:7;15523:6;;;;;;;;;;;15516:13;;15450:87;:::o;8888:104::-;8944:13;8977:7;8970:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8888:104;:::o;22997:30::-;;;;:::o;10092:155::-;10187:52;10206:12;:10;:12::i;:::-;10220:8;10230;10187:18;:52::i;:::-;10092:155;;:::o;23169:45::-;23210:4;23169:45;:::o;10916:328::-;11091:41;11110:12;:10;:12::i;:::-;11124:7;11091:18;:41::i;:::-;11083:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;11197:39;11211:4;11217:2;11221:7;11230:5;11197:13;:39::i;:::-;10916:328;;;;:::o;23978:327::-;24043:13;24077:16;24085:7;24077;:16::i;:::-;24069:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;24196:1;24169:16;24163:30;;;;;:::i;:::-;;;:34;:134;;;;;;;;;;;;;;;;;24224:16;24242;24250:7;24242;:16::i;:::-;24260:20;24272:7;24260:11;:20::i;:::-;24207:84;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;24163:134;24156:141;;23978:327;;;:::o;10255:164::-;10352:4;10376:18;:25;10395:5;10376:25;;;;;;;;;;;;;;;:35;10402:8;10376:35;;;;;;;;;;;;;;;;;;;;;;;;;10369:42;;10255:164;;;;:::o;23698:272::-;23756:13;23785:17;23806:15;;;;;;;;;;;:34;;;23841:16;23849:7;23841;:16::i;:::-;23859:7;23806:61;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23782:85;;;;23894:8;23881:9;:21;23878:64;;;23919:11;;;;;;;;;;;;;;;;;;;;;;23878:64;23952:10;;;;;;;;;;;;;;;;;;;;23698:272;;;;:::o;23034:33::-;;;;;;;;;;;;;:::o;15784:201::-;15596:12;:10;:12::i;:::-;15585:23;;:7;:5;:7::i;:::-;:23;;;15577:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15893:1:::1;15873:22;;:8;:22;;;;15865:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;15949:28;15968:8;15949:18;:28::i;:::-;15784:201:::0;:::o;8004:305::-;8106:4;8158:25;8143:40;;;:11;:40;;;;:105;;;;8215:33;8200:48;;;:11;:48;;;;8143:105;:158;;;;8265:36;8289:11;8265:23;:36::i;:::-;8143:158;8123:178;;8004:305;;;:::o;11575:127::-;11640:4;11692:1;11664:30;;:7;:16;11672:7;11664:16;;;;;;;;;;;;;;;;;;;;;:30;;;;11657:37;;11575:127;;;:::o;1683:98::-;1736:7;1763:10;1756:17;;1683:98;:::o;13777:174::-;13879:2;13852:15;:24;13868:7;13852:24;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;13935:7;13931:2;13897:46;;13906:23;13921:7;13906:14;:23::i;:::-;13897:46;;;;;;;;;;;;13777:174;;:::o;11710:348::-;11803:4;11828:16;11836:7;11828;:16::i;:::-;11820:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;11904:13;11920:23;11935:7;11920:14;:23::i;:::-;11904:39;;11973:5;11962:16;;:7;:16;;;:51;;;;12006:7;11982:31;;:20;11994:7;11982:11;:20::i;:::-;:31;;;11962:51;:87;;;;12017:32;12034:5;12041:7;12017:16;:32::i;:::-;11962:87;11954:96;;;11710:348;;;;:::o;13243:526::-;13402:4;13375:31;;:23;13390:7;13375:14;:23::i;:::-;:31;;;13367:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;13485:1;13471:16;;:2;:16;;;;13463:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;13541:39;13562:4;13568:2;13572:7;13541:20;:39::i;:::-;13593:29;13610:1;13614:7;13593:8;:29::i;:::-;13654:1;13635:9;:15;13645:4;13635:15;;;;;;;;;;;;;;;;:20;;;;;;;:::i;:::-;;;;;;;;13683:1;13666:9;:13;13676:2;13666:13;;;;;;;;;;;;;;;;:18;;;;;;;:::i;:::-;;;;;;;;13714:2;13695:7;:16;13703:7;13695:16;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;13753:7;13749:2;13734:27;;13743:4;13734:27;;;;;;;;;;;;13243:526;;;:::o;15993:191::-;16067:16;16086:6;;;;;;;;;;;16067:25;;16112:8;16103:6;;:17;;;;;;;;;;;;;;;;;;16167:8;16136:40;;16157:8;16136:40;;;;;;;;;;;;15993:191;;:::o;16274:114::-;16339:7;16366;:14;;;16359:21;;16274:114;;;:::o;12066:110::-;12142:26;12152:2;12156:7;12142:26;;;;;;;;;;;;:9;:26::i;:::-;12066:110;;:::o;16396:127::-;16503:1;16485:7;:14;;;:19;;;;;;;;;;;16396:127;:::o;13959:315::-;14114:8;14105:17;;:5;:17;;;;14097:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;14201:8;14163:18;:25;14182:5;14163:25;;;;;;;;;;;;;;;:35;14189:8;14163:35;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;14247:8;14225:41;;14240:5;14225:41;;;14257:8;14225:41;;;;;;:::i;:::-;;;;;;;;13959:315;;;:::o;11252:::-;11409:28;11419:4;11425:2;11429:7;11409:9;:28::i;:::-;11456:48;11479:4;11485:2;11489:7;11498:5;11456:22;:48::i;:::-;11448:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;11252:315;;;;:::o;5601:157::-;5686:4;5725:25;5710:40;;;:11;:40;;;;5703:47;;5601:157;;;:::o;24942:463::-;25108:15;;;;;;;;;;;25094:30;;:2;:30;;;:66;;;;25144:15;;;;;;;;;;;25128:32;;:4;:32;;;25094:66;25086:121;;;;;;;;;;;;:::i;:::-;;;;;;;;;25248:15;;;;;;;;;;;25226:38;;:10;:38;;;:63;;;;25282:7;:5;:7::i;:::-;25268:21;;:10;:21;;;25226:63;25218:123;;;;;;;;;;;;:::i;:::-;;;;;;;;;25352:45;25379:4;25385:2;25389:7;25352:26;:45::i;:::-;24942:463;;;:::o;12184:321::-;12314:18;12320:2;12324:7;12314:5;:18::i;:::-;12365:54;12396:1;12400:2;12404:7;12413:5;12365:22;:54::i;:::-;12343:154;;;;;;;;;;;;:::i;:::-;;;;;;;;;12184:321;;;:::o;14282:799::-;14437:4;14458:15;:2;:13;;;:15::i;:::-;14454:620;;;14510:2;14494:36;;;14531:12;:10;:12::i;:::-;14545:4;14551:7;14560:5;14494:72;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;14490:529;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14753:1;14736:6;:13;:18;14732:272;;;14779:60;;;;;;;;;;:::i;:::-;;;;;;;;14732:272;14954:6;14948:13;14939:6;14935:2;14931:15;14924:38;14490:529;14627:41;;;14617:51;;;:6;:51;;;;14610:58;;;;;14454:620;15058:4;15051:11;;14282:799;;;;;;;:::o;20561:589::-;20705:45;20732:4;20738:2;20742:7;20705:26;:45::i;:::-;20783:1;20767:18;;:4;:18;;;20763:187;;;20802:40;20834:7;20802:31;:40::i;:::-;20763:187;;;20872:2;20864:10;;:4;:10;;;20860:90;;20891:47;20924:4;20930:7;20891:32;:47::i;:::-;20860:90;20763:187;20978:1;20964:16;;:2;:16;;;20960:183;;;20997:45;21034:7;20997:36;:45::i;:::-;20960:183;;;21070:4;21064:10;;:2;:10;;;21060:83;;21091:40;21119:2;21123:7;21091:27;:40::i;:::-;21060:83;20960:183;20561:589;;;:::o;12513:382::-;12607:1;12593:16;;:2;:16;;;;12585:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;12666:16;12674:7;12666;:16::i;:::-;12665:17;12657:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;12728:45;12757:1;12761:2;12765:7;12728:20;:45::i;:::-;12803:1;12786:9;:13;12796:2;12786:13;;;;;;;;;;;;;;;;:18;;;;;;;:::i;:::-;;;;;;;;12834:2;12815:7;:16;12823:7;12815:16;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;12879:7;12875:2;12854:33;;12871:1;12854:33;;;;;;;;;;;;12513:382;;:::o;1924:198::-;1984:4;2003:12;2070:7;2058:20;2050:28;;2113:1;2106:4;:8;2099:15;;;1924:198;;;:::o;15089:126::-;;;;:::o;21391:164::-;21495:10;:17;;;;21468:15;:24;21484:7;21468:24;;;;;;;;;;;:44;;;;21523:10;21539:7;21523:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21391:164;:::o;21563:565::-;21665:22;21715:1;21690:22;21707:4;21690:16;:22::i;:::-;:26;;;;:::i;:::-;21665:51;;21727:18;21748:17;:26;21766:7;21748:26;;;;;;;;;;;;21727:47;;21805:14;21791:10;:28;21787:236;;21836:19;21858:12;:18;21871:4;21858:18;;;;;;;;;;;;;;;:34;21877:14;21858:34;;;;;;;;;;;;21836:56;;21942:11;21909:12;:18;21922:4;21909:18;;;;;;;;;;;;;;;:30;21928:10;21909:30;;;;;;;;;;;:44;;;;22001:10;21968:17;:30;21986:11;21968:30;;;;;;;;;;;:43;;;;21787:236;;22042:17;:26;22060:7;22042:26;;;;;;;;;;;22035:33;;;22086:12;:18;22099:4;22086:18;;;;;;;;;;;;;;;:34;22105:14;22086:34;;;;;;;;;;;22079:41;;;21563:565;;;;:::o;22140:443::-;22232:22;22277:1;22257:10;:17;;;;:21;;;;:::i;:::-;22232:46;;22289:18;22310:15;:24;22326:7;22310:24;;;;;;;;;;;;22289:45;;22355:19;22377:10;22388:14;22377:26;;;;;;;;;;;;;;;;;;;;;;;;22355:48;;22441:11;22416:10;22427;22416:22;;;;;;;;;;;;;;;;;;;;;;;:36;;;;22494:10;22463:15;:28;22479:11;22463:28;;;;;;;;;;;:41;;;;22524:15;:24;22540:7;22524:24;;;;;;;;;;;22517:31;;;22559:10;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22140:443;;;;:::o;21158:221::-;21243:14;21260:20;21277:2;21260:16;:20::i;:::-;21243:37;;21318:7;21291:12;:16;21304:2;21291:16;;;;;;;;;;;;;;;:24;21308:6;21291:24;;;;;;;;;;;:34;;;;21365:6;21336:17;:26;21354:7;21336:26;;;;;;;;;;;:35;;;;21158:221;;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;7:342:1:-;;109:64;124:48;165:6;124:48;:::i;:::-;109:64;:::i;:::-;100:73;;196:6;189:5;182:21;234:4;227:5;223:16;272:3;263:6;258:3;254:16;251:25;248:2;;;289:1;286;279:12;248:2;302:41;336:6;331:3;326;302:41;:::i;:::-;90:259;;;;;;:::o;355:344::-;;458:65;473:49;515:6;473:49;:::i;:::-;458:65;:::i;:::-;449:74;;546:6;539:5;532:21;584:4;577:5;573:16;622:3;613:6;608:3;604:16;601:25;598:2;;;639:1;636;629:12;598:2;652:41;686:6;681:3;676;652:41;:::i;:::-;439:260;;;;;;:::o;705:139::-;;789:6;776:20;767:29;;805:33;832:5;805:33;:::i;:::-;757:87;;;;:::o;850:133::-;;931:6;918:20;909:29;;947:30;971:5;947:30;:::i;:::-;899:84;;;;:::o;989:137::-;;1074:6;1068:13;1059:22;;1090:30;1114:5;1090:30;:::i;:::-;1049:77;;;;:::o;1132:137::-;;1215:6;1202:20;1193:29;;1231:32;1257:5;1231:32;:::i;:::-;1183:86;;;;:::o;1275:141::-;;1362:6;1356:13;1347:22;;1378:32;1404:5;1378:32;:::i;:::-;1337:79;;;;:::o;1435:271::-;;1539:3;1532:4;1524:6;1520:17;1516:27;1506:2;;1557:1;1554;1547:12;1506:2;1597:6;1584:20;1622:78;1696:3;1688:6;1681:4;1673:6;1669:17;1622:78;:::i;:::-;1613:87;;1496:210;;;;;:::o;1726:273::-;;1831:3;1824:4;1816:6;1812:17;1808:27;1798:2;;1849:1;1846;1839:12;1798:2;1889:6;1876:20;1914:79;1989:3;1981:6;1974:4;1966:6;1962:17;1914:79;:::i;:::-;1905:88;;1788:211;;;;;:::o;2005:139::-;;2089:6;2076:20;2067:29;;2105:33;2132:5;2105:33;:::i;:::-;2057:87;;;;:::o;2150:143::-;;2238:6;2232:13;2223:22;;2254:33;2281:5;2254:33;:::i;:::-;2213:80;;;;:::o;2299:141::-;;2386:6;2380:13;2371:22;;2402:32;2428:5;2402:32;:::i;:::-;2361:79;;;;:::o;2446:262::-;;2554:2;2542:9;2533:7;2529:23;2525:32;2522:2;;;2570:1;2567;2560:12;2522:2;2613:1;2638:53;2683:7;2674:6;2663:9;2659:22;2638:53;:::i;:::-;2628:63;;2584:117;2512:196;;;;:::o;2714:407::-;;;2839:2;2827:9;2818:7;2814:23;2810:32;2807:2;;;2855:1;2852;2845:12;2807:2;2898:1;2923:53;2968:7;2959:6;2948:9;2944:22;2923:53;:::i;:::-;2913:63;;2869:117;3025:2;3051:53;3096:7;3087:6;3076:9;3072:22;3051:53;:::i;:::-;3041:63;;2996:118;2797:324;;;;;:::o;3127:552::-;;;;3269:2;3257:9;3248:7;3244:23;3240:32;3237:2;;;3285:1;3282;3275:12;3237:2;3328:1;3353:53;3398:7;3389:6;3378:9;3374:22;3353:53;:::i;:::-;3343:63;;3299:117;3455:2;3481:53;3526:7;3517:6;3506:9;3502:22;3481:53;:::i;:::-;3471:63;;3426:118;3583:2;3609:53;3654:7;3645:6;3634:9;3630:22;3609:53;:::i;:::-;3599:63;;3554:118;3227:452;;;;;:::o;3685:809::-;;;;;3853:3;3841:9;3832:7;3828:23;3824:33;3821:2;;;3870:1;3867;3860:12;3821:2;3913:1;3938:53;3983:7;3974:6;3963:9;3959:22;3938:53;:::i;:::-;3928:63;;3884:117;4040:2;4066:53;4111:7;4102:6;4091:9;4087:22;4066:53;:::i;:::-;4056:63;;4011:118;4168:2;4194:53;4239:7;4230:6;4219:9;4215:22;4194:53;:::i;:::-;4184:63;;4139:118;4324:2;4313:9;4309:18;4296:32;4355:18;4347:6;4344:30;4341:2;;;4387:1;4384;4377:12;4341:2;4415:62;4469:7;4460:6;4449:9;4445:22;4415:62;:::i;:::-;4405:72;;4267:220;3811:683;;;;;;;:::o;4500:401::-;;;4622:2;4610:9;4601:7;4597:23;4593:32;4590:2;;;4638:1;4635;4628:12;4590:2;4681:1;4706:53;4751:7;4742:6;4731:9;4727:22;4706:53;:::i;:::-;4696:63;;4652:117;4808:2;4834:50;4876:7;4867:6;4856:9;4852:22;4834:50;:::i;:::-;4824:60;;4779:115;4580:321;;;;;:::o;4907:407::-;;;5032:2;5020:9;5011:7;5007:23;5003:32;5000:2;;;5048:1;5045;5038:12;5000:2;5091:1;5116:53;5161:7;5152:6;5141:9;5137:22;5116:53;:::i;:::-;5106:63;;5062:117;5218:2;5244:53;5289:7;5280:6;5269:9;5265:22;5244:53;:::i;:::-;5234:63;;5189:118;4990:324;;;;;:::o;5320:590::-;;;;5470:2;5458:9;5449:7;5445:23;5441:32;5438:2;;;5486:1;5483;5476:12;5438:2;5529:1;5554:61;5607:7;5598:6;5587:9;5583:22;5554:61;:::i;:::-;5544:71;;5500:125;5664:2;5690:64;5746:7;5737:6;5726:9;5722:22;5690:64;:::i;:::-;5680:74;;5635:129;5803:2;5829:64;5885:7;5876:6;5865:9;5861:22;5829:64;:::i;:::-;5819:74;;5774:129;5428:482;;;;;:::o;5916:260::-;;6023:2;6011:9;6002:7;5998:23;5994:32;5991:2;;;6039:1;6036;6029:12;5991:2;6082:1;6107:52;6151:7;6142:6;6131:9;6127:22;6107:52;:::i;:::-;6097:62;;6053:116;5981:195;;;;:::o;6182:282::-;;6300:2;6288:9;6279:7;6275:23;6271:32;6268:2;;;6316:1;6313;6306:12;6268:2;6359:1;6384:63;6439:7;6430:6;6419:9;6415:22;6384:63;:::i;:::-;6374:73;;6330:127;6258:206;;;;:::o;6470:375::-;;6588:2;6576:9;6567:7;6563:23;6559:32;6556:2;;;6604:1;6601;6594:12;6556:2;6675:1;6664:9;6660:17;6647:31;6705:18;6697:6;6694:30;6691:2;;;6737:1;6734;6727:12;6691:2;6765:63;6820:7;6811:6;6800:9;6796:22;6765:63;:::i;:::-;6755:73;;6618:220;6546:299;;;;:::o;6851:262::-;;6959:2;6947:9;6938:7;6934:23;6930:32;6927:2;;;6975:1;6972;6965:12;6927:2;7018:1;7043:53;7088:7;7079:6;7068:9;7064:22;7043:53;:::i;:::-;7033:63;;6989:117;6917:196;;;;:::o;7119:282::-;;7237:2;7225:9;7216:7;7212:23;7208:32;7205:2;;;7253:1;7250;7243:12;7205:2;7296:1;7321:63;7376:7;7367:6;7356:9;7352:22;7321:63;:::i;:::-;7311:73;;7267:127;7195:206;;;;:::o;7407:118::-;7494:24;7512:5;7494:24;:::i;:::-;7489:3;7482:37;7472:53;;:::o;7531:109::-;7612:21;7627:5;7612:21;:::i;:::-;7607:3;7600:34;7590:50;;:::o;7646:360::-;;7760:38;7792:5;7760:38;:::i;:::-;7814:70;7877:6;7872:3;7814:70;:::i;:::-;7807:77;;7893:52;7938:6;7933:3;7926:4;7919:5;7915:16;7893:52;:::i;:::-;7970:29;7992:6;7970:29;:::i;:::-;7965:3;7961:39;7954:46;;7736:270;;;;;:::o;8012:169::-;8118:56;8168:5;8118:56;:::i;:::-;8113:3;8106:69;8096:85;;:::o;8187:364::-;;8303:39;8336:5;8303:39;:::i;:::-;8358:71;8422:6;8417:3;8358:71;:::i;:::-;8351:78;;8438:52;8483:6;8478:3;8471:4;8464:5;8460:16;8438:52;:::i;:::-;8515:29;8537:6;8515:29;:::i;:::-;8510:3;8506:39;8499:46;;8279:272;;;;;:::o;8557:377::-;;8691:39;8724:5;8691:39;:::i;:::-;8746:89;8828:6;8823:3;8746:89;:::i;:::-;8739:96;;8844:52;8889:6;8884:3;8877:4;8870:5;8866:16;8844:52;:::i;:::-;8921:6;8916:3;8912:16;8905:23;;8667:267;;;;;:::o;8964:845::-;;9104:5;9098:12;9133:36;9159:9;9133:36;:::i;:::-;9185:89;9267:6;9262:3;9185:89;:::i;:::-;9178:96;;9305:1;9294:9;9290:17;9321:1;9316:137;;;;9467:1;9462:341;;;;9283:520;;9316:137;9400:4;9396:9;9385;9381:25;9376:3;9369:38;9436:6;9431:3;9427:16;9420:23;;9316:137;;9462:341;9529:38;9561:5;9529:38;:::i;:::-;9589:1;9603:154;9617:6;9614:1;9611:13;9603:154;;;9691:7;9685:14;9681:1;9676:3;9672:11;9665:35;9741:1;9732:7;9728:15;9717:26;;9639:4;9636:1;9632:12;9627:17;;9603:154;;;9786:6;9781:3;9777:16;9770:23;;9469:334;;9283:520;;9071:738;;;;;;:::o;9815:379::-;;9978:67;10042:2;10037:3;9978:67;:::i;:::-;9971:74;;10075:34;10071:1;10066:3;10062:11;10055:55;10141:17;10136:2;10131:3;10127:12;10120:39;10185:2;10180:3;10176:12;10169:19;;9961:233;;;:::o;10200:375::-;;10363:67;10427:2;10422:3;10363:67;:::i;:::-;10356:74;;10460:34;10456:1;10451:3;10447:11;10440:55;10526:13;10521:2;10516:3;10512:12;10505:35;10566:2;10561:3;10557:12;10550:19;;10346:229;;;:::o;10581:382::-;;10744:67;10808:2;10803:3;10744:67;:::i;:::-;10737:74;;10841:34;10837:1;10832:3;10828:11;10821:55;10907:20;10902:2;10897:3;10893:12;10886:42;10954:2;10949:3;10945:12;10938:19;;10727:236;;;:::o;10969:370::-;;11132:67;11196:2;11191:3;11132:67;:::i;:::-;11125:74;;11229:34;11225:1;11220:3;11216:11;11209:55;11295:8;11290:2;11285:3;11281:12;11274:30;11330:2;11325:3;11321:12;11314:19;;11115:224;;;:::o;11345:326::-;;11508:67;11572:2;11567:3;11508:67;:::i;:::-;11501:74;;11605:30;11601:1;11596:3;11592:11;11585:51;11662:2;11657:3;11653:12;11646:19;;11491:180;;;:::o;11677:368::-;;11840:67;11904:2;11899:3;11840:67;:::i;:::-;11833:74;;11937:34;11933:1;11928:3;11924:11;11917:55;12003:6;11998:2;11993:3;11989:12;11982:28;12036:2;12031:3;12027:12;12020:19;;11823:222;;;:::o;12051:323::-;;12214:67;12278:2;12273:3;12214:67;:::i;:::-;12207:74;;12311:27;12307:1;12302:3;12298:11;12291:48;12365:2;12360:3;12356:12;12349:19;;12197:177;;;:::o;12380:376::-;;12543:67;12607:2;12602:3;12543:67;:::i;:::-;12536:74;;12640:34;12636:1;12631:3;12627:11;12620:55;12706:14;12701:2;12696:3;12692:12;12685:36;12747:2;12742:3;12738:12;12731:19;;12526:230;;;:::o;12762:374::-;;12925:67;12989:2;12984:3;12925:67;:::i;:::-;12918:74;;13022:34;13018:1;13013:3;13009:11;13002:55;13088:12;13083:2;13078:3;13074:12;13067:34;13127:2;13122:3;13118:12;13111:19;;12908:228;;;:::o;13142:388::-;;13305:67;13369:2;13364:3;13305:67;:::i;:::-;13298:74;;13402:34;13398:1;13393:3;13389:11;13382:55;13468:26;13463:2;13458:3;13454:12;13447:48;13521:2;13516:3;13512:12;13505:19;;13288:242;;;:::o;13536:374::-;;13699:67;13763:2;13758:3;13699:67;:::i;:::-;13692:74;;13796:34;13792:1;13787:3;13783:11;13776:55;13862:12;13857:2;13852:3;13848:12;13841:34;13901:2;13896:3;13892:12;13885:19;;13682:228;;;:::o;13916:373::-;;14079:67;14143:2;14138:3;14079:67;:::i;:::-;14072:74;;14176:34;14172:1;14167:3;14163:11;14156:55;14242:11;14237:2;14232:3;14228:12;14221:33;14280:2;14275:3;14271:12;14264:19;;14062:227;;;:::o;14295:316::-;;14458:67;14522:2;14517:3;14458:67;:::i;:::-;14451:74;;14555:20;14551:1;14546:3;14542:11;14535:41;14602:2;14597:3;14593:12;14586:19;;14441:170;;;:::o;14617:330::-;;14780:67;14844:2;14839:3;14780:67;:::i;:::-;14773:74;;14877:34;14873:1;14868:3;14864:11;14857:55;14938:2;14933:3;14929:12;14922:19;;14763:184;;;:::o;14953:376::-;;15116:67;15180:2;15175:3;15116:67;:::i;:::-;15109:74;;15213:34;15209:1;15204:3;15200:11;15193:55;15279:14;15274:2;15269:3;15265:12;15258:36;15320:2;15315:3;15311:12;15304:19;;15099:230;;;:::o;15335:337::-;;15516:84;15598:1;15593:3;15516:84;:::i;:::-;15509:91;;15630:7;15626:1;15621:3;15617:11;15610:28;15664:1;15659:3;15655:11;15648:18;;15499:173;;;:::o;15678:330::-;;15841:67;15905:2;15900:3;15841:67;:::i;:::-;15834:74;;15938:34;15934:1;15929:3;15925:11;15918:55;15999:2;15994:3;15990:12;15983:19;;15824:184;;;:::o;16014:373::-;;16177:67;16241:2;16236:3;16177:67;:::i;:::-;16170:74;;16274:34;16270:1;16265:3;16261:11;16254:55;16340:11;16335:2;16330:3;16326:12;16319:33;16378:2;16373:3;16369:12;16362:19;;16160:227;;;:::o;16393:379::-;;16556:67;16620:2;16615:3;16556:67;:::i;:::-;16549:74;;16653:34;16649:1;16644:3;16640:11;16633:55;16719:17;16714:2;16709:3;16705:12;16698:39;16763:2;16758:3;16754:12;16747:19;;16539:233;;;:::o;16778:365::-;;16941:67;17005:2;17000:3;16941:67;:::i;:::-;16934:74;;17038:34;17034:1;17029:3;17025:11;17018:55;17104:3;17099:2;17094:3;17090:12;17083:25;17134:2;17129:3;17125:12;17118:19;;16924:219;;;:::o;17149:381::-;;17312:67;17376:2;17371:3;17312:67;:::i;:::-;17305:74;;17409:34;17405:1;17400:3;17396:11;17389:55;17475:19;17470:2;17465:3;17461:12;17454:41;17521:2;17516:3;17512:12;17505:19;;17295:235;;;:::o;17536:376::-;;17699:67;17763:2;17758:3;17699:67;:::i;:::-;17692:74;;17796:34;17792:1;17787:3;17783:11;17776:55;17862:14;17857:2;17852:3;17848:12;17841:36;17903:2;17898:3;17894:12;17887:19;;17682:230;;;:::o;17918:118::-;18005:24;18023:5;18005:24;:::i;:::-;18000:3;17993:37;17983:53;;:::o;18042:855::-;;18390:92;18478:3;18469:6;18390:92;:::i;:::-;18383:99;;18499:95;18590:3;18581:6;18499:95;:::i;:::-;18492:102;;18611:95;18702:3;18693:6;18611:95;:::i;:::-;18604:102;;18723:148;18867:3;18723:148;:::i;:::-;18716:155;;18888:3;18881:10;;18372:525;;;;;;:::o;18903:222::-;;19034:2;19023:9;19019:18;19011:26;;19047:71;19115:1;19104:9;19100:17;19091:6;19047:71;:::i;:::-;19001:124;;;;:::o;19131:640::-;;19364:3;19353:9;19349:19;19341:27;;19378:71;19446:1;19435:9;19431:17;19422:6;19378:71;:::i;:::-;19459:72;19527:2;19516:9;19512:18;19503:6;19459:72;:::i;:::-;19541;19609:2;19598:9;19594:18;19585:6;19541:72;:::i;:::-;19660:9;19654:4;19650:20;19645:2;19634:9;19630:18;19623:48;19688:76;19759:4;19750:6;19688:76;:::i;:::-;19680:84;;19331:440;;;;;;;:::o;19777:332::-;;19936:2;19925:9;19921:18;19913:26;;19949:71;20017:1;20006:9;20002:17;19993:6;19949:71;:::i;:::-;20030:72;20098:2;20087:9;20083:18;20074:6;20030:72;:::i;:::-;19903:206;;;;;:::o;20115:210::-;;20240:2;20229:9;20225:18;20217:26;;20253:65;20315:1;20304:9;20300:17;20291:6;20253:65;:::i;:::-;20207:118;;;;:::o;20331:260::-;;20481:2;20470:9;20466:18;20458:26;;20494:90;20581:1;20570:9;20566:17;20557:6;20494:90;:::i;:::-;20448:143;;;;:::o;20597:313::-;;20748:2;20737:9;20733:18;20725:26;;20797:9;20791:4;20787:20;20783:1;20772:9;20768:17;20761:47;20825:78;20898:4;20889:6;20825:78;:::i;:::-;20817:86;;20715:195;;;;:::o;20916:419::-;;21120:2;21109:9;21105:18;21097:26;;21169:9;21163:4;21159:20;21155:1;21144:9;21140:17;21133:47;21197:131;21323:4;21197:131;:::i;:::-;21189:139;;21087:248;;;:::o;21341:419::-;;21545:2;21534:9;21530:18;21522:26;;21594:9;21588:4;21584:20;21580:1;21569:9;21565:17;21558:47;21622:131;21748:4;21622:131;:::i;:::-;21614:139;;21512:248;;;:::o;21766:419::-;;21970:2;21959:9;21955:18;21947:26;;22019:9;22013:4;22009:20;22005:1;21994:9;21990:17;21983:47;22047:131;22173:4;22047:131;:::i;:::-;22039:139;;21937:248;;;:::o;22191:419::-;;22395:2;22384:9;22380:18;22372:26;;22444:9;22438:4;22434:20;22430:1;22419:9;22415:17;22408:47;22472:131;22598:4;22472:131;:::i;:::-;22464:139;;22362:248;;;:::o;22616:419::-;;22820:2;22809:9;22805:18;22797:26;;22869:9;22863:4;22859:20;22855:1;22844:9;22840:17;22833:47;22897:131;23023:4;22897:131;:::i;:::-;22889:139;;22787:248;;;:::o;23041:419::-;;23245:2;23234:9;23230:18;23222:26;;23294:9;23288:4;23284:20;23280:1;23269:9;23265:17;23258:47;23322:131;23448:4;23322:131;:::i;:::-;23314:139;;23212:248;;;:::o;23466:419::-;;23670:2;23659:9;23655:18;23647:26;;23719:9;23713:4;23709:20;23705:1;23694:9;23690:17;23683:47;23747:131;23873:4;23747:131;:::i;:::-;23739:139;;23637:248;;;:::o;23891:419::-;;24095:2;24084:9;24080:18;24072:26;;24144:9;24138:4;24134:20;24130:1;24119:9;24115:17;24108:47;24172:131;24298:4;24172:131;:::i;:::-;24164:139;;24062:248;;;:::o;24316:419::-;;24520:2;24509:9;24505:18;24497:26;;24569:9;24563:4;24559:20;24555:1;24544:9;24540:17;24533:47;24597:131;24723:4;24597:131;:::i;:::-;24589:139;;24487:248;;;:::o;24741:419::-;;24945:2;24934:9;24930:18;24922:26;;24994:9;24988:4;24984:20;24980:1;24969:9;24965:17;24958:47;25022:131;25148:4;25022:131;:::i;:::-;25014:139;;24912:248;;;:::o;25166:419::-;;25370:2;25359:9;25355:18;25347:26;;25419:9;25413:4;25409:20;25405:1;25394:9;25390:17;25383:47;25447:131;25573:4;25447:131;:::i;:::-;25439:139;;25337:248;;;:::o;25591:419::-;;25795:2;25784:9;25780:18;25772:26;;25844:9;25838:4;25834:20;25830:1;25819:9;25815:17;25808:47;25872:131;25998:4;25872:131;:::i;:::-;25864:139;;25762:248;;;:::o;26016:419::-;;26220:2;26209:9;26205:18;26197:26;;26269:9;26263:4;26259:20;26255:1;26244:9;26240:17;26233:47;26297:131;26423:4;26297:131;:::i;:::-;26289:139;;26187:248;;;:::o;26441:419::-;;26645:2;26634:9;26630:18;26622:26;;26694:9;26688:4;26684:20;26680:1;26669:9;26665:17;26658:47;26722:131;26848:4;26722:131;:::i;:::-;26714:139;;26612:248;;;:::o;26866:419::-;;27070:2;27059:9;27055:18;27047:26;;27119:9;27113:4;27109:20;27105:1;27094:9;27090:17;27083:47;27147:131;27273:4;27147:131;:::i;:::-;27139:139;;27037:248;;;:::o;27291:419::-;;27495:2;27484:9;27480:18;27472:26;;27544:9;27538:4;27534:20;27530:1;27519:9;27515:17;27508:47;27572:131;27698:4;27572:131;:::i;:::-;27564:139;;27462:248;;;:::o;27716:419::-;;27920:2;27909:9;27905:18;27897:26;;27969:9;27963:4;27959:20;27955:1;27944:9;27940:17;27933:47;27997:131;28123:4;27997:131;:::i;:::-;27989:139;;27887:248;;;:::o;28141:419::-;;28345:2;28334:9;28330:18;28322:26;;28394:9;28388:4;28384:20;28380:1;28369:9;28365:17;28358:47;28422:131;28548:4;28422:131;:::i;:::-;28414:139;;28312:248;;;:::o;28566:419::-;;28770:2;28759:9;28755:18;28747:26;;28819:9;28813:4;28809:20;28805:1;28794:9;28790:17;28783:47;28847:131;28973:4;28847:131;:::i;:::-;28839:139;;28737:248;;;:::o;28991:419::-;;29195:2;29184:9;29180:18;29172:26;;29244:9;29238:4;29234:20;29230:1;29219:9;29215:17;29208:47;29272:131;29398:4;29272:131;:::i;:::-;29264:139;;29162:248;;;:::o;29416:419::-;;29620:2;29609:9;29605:18;29597:26;;29669:9;29663:4;29659:20;29655:1;29644:9;29640:17;29633:47;29697:131;29823:4;29697:131;:::i;:::-;29689:139;;29587:248;;;:::o;29841:222::-;;29972:2;29961:9;29957:18;29949:26;;29985:71;30053:1;30042:9;30038:17;30029:6;29985:71;:::i;:::-;29939:124;;;;:::o;30069:283::-;;30135:2;30129:9;30119:19;;30177:4;30169:6;30165:17;30284:6;30272:10;30269:22;30248:18;30236:10;30233:34;30230:62;30227:2;;;30295:18;;:::i;:::-;30227:2;30335:10;30331:2;30324:22;30109:243;;;;:::o;30358:331::-;;30509:18;30501:6;30498:30;30495:2;;;30531:18;;:::i;:::-;30495:2;30616:4;30612:9;30605:4;30597:6;30593:17;30589:33;30581:41;;30677:4;30671;30667:15;30659:23;;30424:265;;;:::o;30695:332::-;;30847:18;30839:6;30836:30;30833:2;;;30869:18;;:::i;:::-;30833:2;30954:4;30950:9;30943:4;30935:6;30931:17;30927:33;30919:41;;31015:4;31009;31005:15;30997:23;;30762:265;;;:::o;31033:141::-;;31105:3;31097:11;;31128:3;31125:1;31118:14;31162:4;31159:1;31149:18;31141:26;;31087:87;;;:::o;31180:98::-;;31265:5;31259:12;31249:22;;31238:40;;;:::o;31284:99::-;;31370:5;31364:12;31354:22;;31343:40;;;:::o;31389:168::-;;31506:6;31501:3;31494:19;31546:4;31541:3;31537:14;31522:29;;31484:73;;;;:::o;31563:169::-;;31681:6;31676:3;31669:19;31721:4;31716:3;31712:14;31697:29;;31659:73;;;;:::o;31738:148::-;;31877:3;31862:18;;31852:34;;;;:::o;31892:305::-;;31951:20;31969:1;31951:20;:::i;:::-;31946:25;;31985:20;32003:1;31985:20;:::i;:::-;31980:25;;32139:1;32071:66;32067:74;32064:1;32061:81;32058:2;;;32145:18;;:::i;:::-;32058:2;32189:1;32186;32182:9;32175:16;;31936:261;;;;:::o;32203:191::-;;32263:20;32281:1;32263:20;:::i;:::-;32258:25;;32297:20;32315:1;32297:20;:::i;:::-;32292:25;;32336:1;32333;32330:8;32327:2;;;32341:18;;:::i;:::-;32327:2;32386:1;32383;32379:9;32371:17;;32248:146;;;;:::o;32400:96::-;;32466:24;32484:5;32466:24;:::i;:::-;32455:35;;32445:51;;;:::o;32502:90::-;;32579:5;32572:13;32565:21;32554:32;;32544:48;;;:::o;32598:149::-;;32674:66;32667:5;32663:78;32652:89;;32642:105;;;:::o;32753:126::-;;32830:42;32823:5;32819:54;32808:65;;32798:81;;;:::o;32885:77::-;;32951:5;32940:16;;32930:32;;;:::o;32968:93::-;;33044:10;33037:5;33033:22;33022:33;;33012:49;;;:::o;33067:164::-;;33169:56;33219:5;33169:56;:::i;:::-;33156:69;;33146:85;;;:::o;33237:132::-;;33339:24;33357:5;33339:24;:::i;:::-;33326:37;;33316:53;;;:::o;33375:154::-;33459:6;33454:3;33449;33436:30;33521:1;33512:6;33507:3;33503:16;33496:27;33426:103;;;:::o;33535:307::-;33603:1;33613:113;33627:6;33624:1;33621:13;33613:113;;;33712:1;33707:3;33703:11;33697:18;33693:1;33688:3;33684:11;33677:39;33649:2;33646:1;33642:10;33637:15;;33613:113;;;33744:6;33741:1;33738:13;33735:2;;;33824:1;33815:6;33810:3;33806:16;33799:27;33735:2;33584:258;;;;:::o;33848:320::-;;33929:1;33923:4;33919:12;33909:22;;33976:1;33970:4;33966:12;33997:18;33987:2;;34053:4;34045:6;34041:17;34031:27;;33987:2;34115;34107:6;34104:14;34084:18;34081:38;34078:2;;;34134:18;;:::i;:::-;34078:2;33899:269;;;;:::o;34174:233::-;;34236:24;34254:5;34236:24;:::i;:::-;34227:33;;34282:66;34275:5;34272:77;34269:2;;;34352:18;;:::i;:::-;34269:2;34399:1;34392:5;34388:13;34381:20;;34217:190;;;:::o;34413:180::-;34461:77;34458:1;34451:88;34558:4;34555:1;34548:15;34582:4;34579:1;34572:15;34599:180;34647:77;34644:1;34637:88;34744:4;34741:1;34734:15;34768:4;34765:1;34758:15;34785:180;34833:77;34830:1;34823:88;34930:4;34927:1;34920:15;34954:4;34951:1;34944:15;34971:102;;35063:2;35059:7;35054:2;35047:5;35043:14;35039:28;35029:38;;35019:54;;;:::o;35079:122::-;35152:24;35170:5;35152:24;:::i;:::-;35145:5;35142:35;35132:2;;35191:1;35188;35181:12;35132:2;35122:79;:::o;35207:116::-;35277:21;35292:5;35277:21;:::i;:::-;35270:5;35267:32;35257:2;;35313:1;35310;35303:12;35257:2;35247:76;:::o;35329:120::-;35401:23;35418:5;35401:23;:::i;:::-;35394:5;35391:34;35381:2;;35439:1;35436;35429:12;35381:2;35371:78;:::o;35455:122::-;35528:24;35546:5;35528:24;:::i;:::-;35521:5;35518:35;35508:2;;35567:1;35564;35557:12;35508:2;35498:79;:::o;35583:120::-;35655:23;35672:5;35655:23;:::i;:::-;35648:5;35645:34;35635:2;;35693:1;35690;35683:12;35635:2;35625:78;:::o

Swarm Source

ipfs://eda585142a6dcec20f256cb3ca2faf3da8818bd237d08f3e6a7e6f36b2cd145b
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.