Contract 0x27cab4867a8b5a2f29fe2a99c1937e24236ff7d9

 

Contract Overview

Balance:
0 MATIC

MATIC Value:
$0.00

Token:
 
Txn Hash
Method
Block
From
To
Value [Txn Fee]
0x51ea421f9d7ff910a1819533100e780a35e328b35bc5cdc54e19d91cfeaede24Safe Transfer Fr...420883652023-04-29 7:10:2641 days 1 hr ago0x197727ad2ec7326952843fbd83a0d57b907afbdf IN  0x27cab4867a8b5a2f29fe2a99c1937e24236ff7d90 MATIC0.030994595977 352.961360822
0x5bd23cd987192def3b5eabb08e12b8bec6ba5338d56f3079cb1958aa29f306cbSet Approval For...417097832023-04-19 12:39:2550 days 20 hrs ago0x197727ad2ec7326952843fbd83a0d57b907afbdf IN  0x27cab4867a8b5a2f29fe2a99c1937e24236ff7d90 MATIC0.012762445423 273.455581066
0xf3ff44f16932d9c7ed503fbd7315379827060a98bedd6d6f7d782f9727b6f0f7Set Approval For...416791722023-04-18 17:15:1251 days 15 hrs ago0x60e4b2ddce57438d69e226550bc78ef737ce8fa4 IN  0x27cab4867a8b5a2f29fe2a99c1937e24236ff7d90 MATIC0.014423849369309.053788645
0xec60048bc23713e482ee989db6d42a39f56c82949a842c5453fcf207842676d5Set Approval For...415947412023-04-16 10:40:2553 days 22 hrs ago0xd41a5579baa0f6a7da8a481d51bf995c00fe1d1e IN  0x27cab4867a8b5a2f29fe2a99c1937e24236ff7d90 MATIC0.007597838225 162.795702366
0x71cf39cd8605f6d8f9848a3eb9e87ae929bb935ab2c5050705736fca60fb616dSet Approval For...411635572023-04-05 7:06:0765 days 1 hr ago0x197727ad2ec7326952843fbd83a0d57b907afbdf IN  0x27cab4867a8b5a2f29fe2a99c1937e24236ff7d90 MATIC0.005334844419 114.307480439
0xc10e0da679a249d67df88178cde2346413bc69fcabc44d2cd72b73e5df4070a2Set Approval For...411002632023-04-03 15:38:4166 days 17 hrs ago0xe333d28946cb3f9577285ce7834831db206e3612 IN  0x27cab4867a8b5a2f29fe2a99c1937e24236ff7d90 MATIC0.008740721834 187.28379153
0xd0acc7384195bc6c3596abecc1d6d393b92b7c63cfc55dfbc6b99871b57963a0Set Approval For...411002582023-04-03 15:38:3166 days 17 hrs ago0xe333d28946cb3f9577285ce7834831db206e3612 IN  0x27cab4867a8b5a2f29fe2a99c1937e24236ff7d90 MATIC0.0087644261 188.13029602
0x33bec5b176cdfe4ad48de08c1b450dfc75e3fa6da7893ff40ed2389d32cd8b65Set Approval For...409988832023-04-01 0:53:2769 days 8 hrs ago0xd41a5579baa0f6a7da8a481d51bf995c00fe1d1e IN  0x27cab4867a8b5a2f29fe2a99c1937e24236ff7d90 MATIC0.001900071019 70.974973639
0xfc81c42f74fa68dad0bec81cbec41868b7e38bfd0e8f670fd82183b814c9a8c3Set Approval For...409988832023-04-01 0:53:2769 days 8 hrs ago0xd41a5579baa0f6a7da8a481d51bf995c00fe1d1e IN  0x27cab4867a8b5a2f29fe2a99c1937e24236ff7d90 MATIC0.000844346045 31.539578124
0x45c4354f894dde064a8518c87bfab07ba3465cde0542e623d0d0f8d4086ece26Safe Transfer Fr...409460702023-03-30 16:57:4870 days 16 hrs ago0x197727ad2ec7326952843fbd83a0d57b907afbdf IN  0x27cab4867a8b5a2f29fe2a99c1937e24236ff7d90 MATIC0.010659874729 121.392900025
0xb57f2771a045578691935abfe93c8403008fb4e71a6308dcf3f842e154f9bfb7Set Approval For...409380142023-03-30 12:07:0570 days 20 hrs ago0x38bcf5789feffa9c2f8b6d4a0529425f4059170e IN  0x27cab4867a8b5a2f29fe2a99c1937e24236ff7d90 MATIC0.005222245883 111.894878696
0xec50ff600b6eae53174c7b7582f49c5460358dc14ec0cf7446db2a66fe86ada5Mint408702852023-03-28 17:36:0572 days 15 hrs ago0x51f6f0991c7b9afce83e91f6fa9de24f28245b9d IN  0x27cab4867a8b5a2f29fe2a99c1937e24236ff7d90 MATIC0.005068261525163.181735583
0xd81a361afc81855600b0dd81282c2b477d90d147558e112bcf04afc3bf941f3bMint408632422023-03-28 13:07:0472 days 19 hrs ago0x17632942367289e5ae559f9a540ea8ebafe1758b IN  0x27cab4867a8b5a2f29fe2a99c1937e24236ff7d90 MATIC0.006641877932213.847127484
0xaca4cfc65a9cfc7399f7853ea4b70189ff06d50c26eb6f3a111ff1a19ad4fc8dMint408617742023-03-28 12:11:4872 days 20 hrs ago0xc4910ba4fcfa537a6a2d65c226513b889270b932 IN  0x27cab4867a8b5a2f29fe2a99c1937e24236ff7d90 MATIC0.005068261525163.181735583
0xc59bf9cc3cb49643ea9851e97f8086714221651cfb50404fd070d7ec62e01d8bMint408598512023-03-28 10:58:5472 days 22 hrs ago0x40bdcb5270c8a94fc587a6d392c5860be2dd5f0b IN  0x27cab4867a8b5a2f29fe2a99c1937e24236ff7d90 MATIC0.00623281137 200.676498622
0x125eaa90b7bb4d2532151d65caef14e6309d65df1371f71f01dc87e1f4b457beMint408574372023-03-28 9:28:3672 days 23 hrs ago0x1857eb9b83c744292b77dbc4bfa55c6be83f6991 IN  0x27cab4867a8b5a2f29fe2a99c1937e24236ff7d90 MATIC0.006061666693195.166189929
0x32b97fe9ab76ed2bfea241b15d7fd8f2c02b8d080e8aa1f70a4bb93b101009feSet Approval For...408364412023-03-27 19:56:3773 days 13 hrs ago0xd41a5579baa0f6a7da8a481d51bf995c00fe1d1e IN  0x27cab4867a8b5a2f29fe2a99c1937e24236ff7d90 MATIC0.00360541744 134.676233258
0xff14e669aa0b51ed4eccfaf914a9a6079bfffebeb16af3e0232bfa8987860033Set Approval For...408347142023-03-27 18:48:1473 days 14 hrs ago0x150084aaa2944f15d1bc007b7f8528dece8d5f4a IN  0x27cab4867a8b5a2f29fe2a99c1937e24236ff7d90 MATIC0.006142187924131.606092092
0x8c35f60741a23df460dfce9275d5cf02714a32882ed5e42a68b536ddeca8efdbSet Approval For...408346812023-03-27 18:46:3273 days 14 hrs ago0x150084aaa2944f15d1bc007b7f8528dece8d5f4a IN  0x27cab4867a8b5a2f29fe2a99c1937e24236ff7d90 MATIC0.002991785762111.754725736
0x6850db53dbf1f32600878f2bac590ded4deed1b7bfa8797052683f449e691d61Set Approval For...408346542023-03-27 18:45:3473 days 14 hrs ago0x150084aaa2944f15d1bc007b7f8528dece8d5f4a IN  0x27cab4867a8b5a2f29fe2a99c1937e24236ff7d90 MATIC0.005305164917113.671550161
0x288fcb0cb52cd08002d4c2dac44b4d141b5c7e98353b507a6881e010875e02c4Set Approval For...408343342023-03-27 18:33:1073 days 14 hrs ago0xd41a5579baa0f6a7da8a481d51bf995c00fe1d1e IN  0x27cab4867a8b5a2f29fe2a99c1937e24236ff7d90 MATIC0.009499703811 354.850540191
0x135d1912a1b0b636a31010c89b7e85708189b267fe1e027541f5eaa9bbe141b7Set Approval For...408343342023-03-27 18:33:1073 days 14 hrs ago0xd41a5579baa0f6a7da8a481d51bf995c00fe1d1e IN  0x27cab4867a8b5a2f29fe2a99c1937e24236ff7d90 MATIC0.009499703811 354.850540191
0x1b02a0fa26de17e8a8dee47aa026875ea1ff66368ef3433a703e86ddbf8e10edSet Approval For...408343342023-03-27 18:33:1073 days 14 hrs ago0xd41a5579baa0f6a7da8a481d51bf995c00fe1d1e IN  0x27cab4867a8b5a2f29fe2a99c1937e24236ff7d90 MATIC0.008869579999 331.312987926
0x79b1ed36e67476f3ec7e95b0f049be0ad7012b9e7af5ca71a3c9717160b7c98fSet Approval For...408342922023-03-27 18:31:2073 days 14 hrs ago senserhi.wallet  IN  0x27cab4867a8b5a2f29fe2a99c1937e24236ff7d90 MATIC0.018993642641 406.968838079
0x2a959b0366dc6d5b83f579b6db8bc12e94f29329b0d06da6e61d7651f0789886Set Approval For...408339242023-03-27 18:16:5473 days 14 hrs ago0x150084aaa2944f15d1bc007b7f8528dece8d5f4a IN  0x27cab4867a8b5a2f29fe2a99c1937e24236ff7d90 MATIC0.020155828105 431.8705
[ Download CSV Export 
Parent Txn Hash Block From To Value
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
NFT

Compiler Version
v0.8.15+commit.e14f2714

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at polygonscan.com on 2023-03-08
*/

// SPDX-License-Identifier: GPL-3.0
pragma solidity ^0.8.0;
library Strings {
    bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef";
    function toString(uint256 value) internal pure returns (string memory) {
        if (value == 0) {
            return "0";
        }
        uint256 temp = value;
        uint256 digits;
        while (temp != 0) {
            digits++;
            temp /= 10;
        }
        bytes memory buffer = new bytes(digits);
        while (value != 0) {
            digits -= 1;
            buffer[digits] = bytes1(uint8(48 + uint256(value % 10)));
            value /= 10;
        }
        return string(buffer);
    }
    function toHexString(uint256 value) internal pure returns (string memory) {
        if (value == 0) {
            return "0x00";
        }
        uint256 temp = value;
        uint256 length = 0;
        while (temp != 0) {
            length++;
            temp >>= 8;
        }
        return toHexString(value, length);
    }
    function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {
        bytes memory buffer = new bytes(2 * length + 2);
        buffer[0] = "0";
        buffer[1] = "x";
        for (uint256 i = 2 * length + 1; i > 1; --i) {
            buffer[i] = _HEX_SYMBOLS[value & 0xf];
            value >>= 4;
        }
        require(value == 0, "Strings: hex length insufficient");
        return string(buffer);
    }
}
pragma solidity ^0.8.0;
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}
pragma solidity ^0.8.0;
abstract contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    constructor() {
        _transferOwnership(_msgSender());
    }
    function owner() public view virtual returns (address) {
        return _owner;
    }
    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }
    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

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

pragma solidity ^0.8.1;

library Address {
    function isContract(address account) internal view returns (bool) {
        return account.code.length > 0;
    }
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        (bool success, ) = recipient.call{value: amount}("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }
    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionCall(target, data, "Address: low-level call failed");
    }
    function functionCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, 0, errorMessage);
    }
    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }
    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        require(isContract(target), "Address: call to non-contract");

        (bool success, bytes memory returndata) = target.call{value: value}(data);
        return verifyCallResult(success, returndata, errorMessage);
    }
    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
        return functionStaticCall(target, data, "Address: low-level static call failed");
    }
    function functionStaticCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal view returns (bytes memory) {
        require(isContract(target), "Address: static call to non-contract");

        (bool success, bytes memory returndata) = target.staticcall(data);
        return verifyCallResult(success, returndata, errorMessage);
    }
    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionDelegateCall(target, data, "Address: low-level delegate call failed");
    }
    function functionDelegateCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(isContract(target), "Address: delegate call to non-contract");

        (bool success, bytes memory returndata) = target.delegatecall(data);
        return verifyCallResult(success, returndata, errorMessage);
    }
    function verifyCallResult(
        bool success,
        bytes memory returndata,
        string memory errorMessage
    ) internal pure returns (bytes memory) {
        if (success) {
            return returndata;
        } else {
            if (returndata.length > 0) {
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}
pragma solidity ^0.8.0;

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

pragma solidity ^0.8.0;

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


pragma solidity ^0.8.0;


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

pragma solidity ^0.8.0;


interface IERC721 is IERC165 {
    event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);

    event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);

    event ApprovalForAll(address indexed owner, address indexed operator, bool approved);

    function balanceOf(address owner) external view returns (uint256 balance);

    function ownerOf(uint256 tokenId) external view returns (address owner);

    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId
    ) external;

    function transferFrom(
        address from,
        address to,
        uint256 tokenId
    ) external;

    function approve(address to, uint256 tokenId) external;

    function getApproved(uint256 tokenId) external view returns (address operator);

    function setApprovalForAll(address operator, bool _approved) external;

    function isApprovedForAll(address owner, address operator) external view returns (bool);

    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId,
        bytes calldata data
    ) external;
}


pragma solidity ^0.8.0;


interface IERC721Enumerable is IERC721 {
    function totalSupply() external view returns (uint256);

    function tokenOfOwnerByIndex(address owner, uint256 index) external view returns (uint256);

    function tokenByIndex(uint256 index) external view returns (uint256);
}



pragma solidity ^0.8.0;


interface IERC721Metadata is IERC721 {
    function name() external view returns (string memory);

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

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

pragma solidity ^0.8.0;








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

        _afterTokenTransfer(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);

        _afterTokenTransfer(owner, address(0), tokenId);
    }

    function _transfer(
        address from,
        address to,
        uint256 tokenId
    ) internal virtual {
        require(ERC721.ownerOf(tokenId) == from, "ERC721: transfer from incorrect owner");
        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);

        _afterTokenTransfer(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 {}

    function _afterTokenTransfer(
        address from,
        address to,
        uint256 tokenId
    ) internal virtual {}
}

pragma solidity ^0.8.0;

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

pragma solidity >=0.7.0 <0.9.0;

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

  string public baseURI;
  string public baseExtension = ".json";
  uint256 public cost = 0 ether;
  uint256 public maxSupply = 4095;
  uint256 public maxMintAmount = 2;
  bool public paused = false;
  mapping(address => bool) public whitelisted;

  constructor() ERC721("NFT Moon Metaverse Key", "Moon Key") {
    setBaseURI("https://bafybeia6lizcvt4g6mxfqb3245ywjtu4abkzibfddj46rnfzdh4thmzaey.ipfs.w3s.link/");
  }

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

  function mint(address _to, uint256 _mintAmount) public payable {
    uint256 supply = totalSupply();
    require(!paused);
    require(_mintAmount > 0);
    require(_mintAmount <= maxMintAmount);
    require(supply + _mintAmount <= maxSupply);

    if (msg.sender != owner()) {
        if(whitelisted[msg.sender] != true) {
          require(msg.value >= cost * _mintAmount);
        }
    }

    for (uint256 i = 1; i <= _mintAmount; i++) {
      _safeMint(_to, supply + i);
    }
  }

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

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

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

  function setCost(uint256 _newCost) public onlyOwner {
    cost = _newCost;
  }

  function setmaxMintAmount(uint256 _newmaxMintAmount) public onlyOwner {
    maxMintAmount = _newmaxMintAmount;
  }

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

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

  function pause(bool _state) public onlyOwner {
    paused = _state;
  }
 
  function whitelistUser(address _user) public onlyOwner {
    whitelisted[_user] = true;
  }
 
  function removeWhitelistUser(address _user) public onlyOwner {
    whitelisted[_user] = false;
  }

  function withdraw() public payable onlyOwner {
    (bool os, ) = payable(owner()).call{value: address(this).balance}("");
    require(os);
  }
}

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":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baseExtension","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baseURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cost","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"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":"maxMintAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_mintAmount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_state","type":"bool"}],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"removeWhitelistUser","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_newBaseExtension","type":"string"}],"name":"setBaseExtension","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_newBaseURI","type":"string"}],"name":"setBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newCost","type":"uint256"}],"name":"setCost","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newmaxMintAmount","type":"uint256"}],"name":"setmaxMintAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"walletOfOwner","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"whitelistUser","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"whitelisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"payable","type":"function"}]

60806040526040518060400160405280600581526020017f2e6a736f6e000000000000000000000000000000000000000000000000000000815250600c90816200004a91906200057c565b506000600d55610fff600e556002600f556000601060006101000a81548160ff0219169083151502179055503480156200008357600080fd5b506040518060400160405280601681526020017f4e4654204d6f6f6e204d6574617665727365204b6579000000000000000000008152506040518060400160405280600881526020017f4d6f6f6e204b657900000000000000000000000000000000000000000000000081525081600090816200010191906200057c565b5080600190816200011391906200057c565b505050620001366200012a6200016660201b60201c565b6200016e60201b60201c565b6200016060405180608001604052806052815260200162004d0a605291396200023460201b60201c565b620006e6565b600033905090565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b620002446200016660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff166200026a620002d860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620002c3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002ba90620006c4565b60405180910390fd5b80600b9081620002d491906200057c565b5050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200038457607f821691505b6020821081036200039a57620003996200033c565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620004047fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620003c5565b620004108683620003c5565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b60006200045d62000457620004518462000428565b62000432565b62000428565b9050919050565b6000819050919050565b62000479836200043c565b62000491620004888262000464565b848454620003d2565b825550505050565b600090565b620004a862000499565b620004b58184846200046e565b505050565b5b81811015620004dd57620004d16000826200049e565b600181019050620004bb565b5050565b601f8211156200052c57620004f681620003a0565b6200050184620003b5565b8101602085101562000511578190505b620005296200052085620003b5565b830182620004ba565b50505b505050565b600082821c905092915050565b6000620005516000198460080262000531565b1980831691505092915050565b60006200056c83836200053e565b9150826002028217905092915050565b620005878262000302565b67ffffffffffffffff811115620005a357620005a26200030d565b5b620005af82546200036b565b620005bc828285620004e1565b600060209050601f831160018114620005f45760008415620005df578287015190505b620005eb85826200055e565b8655506200065b565b601f1984166200060486620003a0565b60005b828110156200062e5784890151825560018201915060208501945060208101905062000607565b868310156200064e57848901516200064a601f8916826200053e565b8355505b6001600288020188555050505b505050505050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000620006ac60208362000663565b9150620006b98262000674565b602082019050919050565b60006020820190508181036000830152620006df816200069d565b9050919050565b61461480620006f66000396000f3fe60806040526004361061020f5760003560e01c806355f804b311610118578063a22cb465116100a0578063d5abeb011161006f578063d5abeb011461077f578063d936547e146107aa578063da3ef23f146107e7578063e985e9c514610810578063f2fde38b1461084d5761020f565b8063a22cb465146106c5578063b88d4fde146106ee578063c668286214610717578063c87b56dd146107425761020f565b806370a08231116100e757806370a08231146105f2578063715018a61461062f5780637f00c7a6146106465780638da5cb5b1461066f57806395d89b411461069a5761020f565b806355f804b3146105365780635c975abb1461055f5780636352211e1461058a5780636c0360eb146105c75761020f565b80632f745c591161019b57806342842e0e1161016a57806342842e0e14610441578063438b63001461046a57806344a0d68a146104a75780634a4c560d146104d05780634f6ccce7146104f95761020f565b80632f745c59146103b557806330cc7ae0146103f25780633ccfd60b1461041b57806340c10f19146104255761020f565b8063095ea7b3116101e2578063095ea7b3146102e257806313faede61461030b57806318160ddd14610336578063239c70ae1461036157806323b872dd1461038c5761020f565b806301ffc9a71461021457806302329a291461025157806306fdde031461027a578063081812fc146102a5575b600080fd5b34801561022057600080fd5b5061023b60048036038101906102369190612da3565b610876565b6040516102489190612deb565b60405180910390f35b34801561025d57600080fd5b5061027860048036038101906102739190612e32565b6108f0565b005b34801561028657600080fd5b5061028f610989565b60405161029c9190612ef8565b60405180910390f35b3480156102b157600080fd5b506102cc60048036038101906102c79190612f50565b610a1b565b6040516102d99190612fbe565b60405180910390f35b3480156102ee57600080fd5b5061030960048036038101906103049190613005565b610aa0565b005b34801561031757600080fd5b50610320610bb7565b60405161032d9190613054565b60405180910390f35b34801561034257600080fd5b5061034b610bbd565b6040516103589190613054565b60405180910390f35b34801561036d57600080fd5b50610376610bca565b6040516103839190613054565b60405180910390f35b34801561039857600080fd5b506103b360048036038101906103ae919061306f565b610bd0565b005b3480156103c157600080fd5b506103dc60048036038101906103d79190613005565b610c30565b6040516103e99190613054565b60405180910390f35b3480156103fe57600080fd5b50610419600480360381019061041491906130c2565b610cd5565b005b610423610dac565b005b61043f600480360381019061043a9190613005565b610ea8565b005b34801561044d57600080fd5b506104686004803603810190610463919061306f565b610fee565b005b34801561047657600080fd5b50610491600480360381019061048c91906130c2565b61100e565b60405161049e91906131ad565b60405180910390f35b3480156104b357600080fd5b506104ce60048036038101906104c99190612f50565b6110bc565b005b3480156104dc57600080fd5b506104f760048036038101906104f291906130c2565b611142565b005b34801561050557600080fd5b50610520600480360381019061051b9190612f50565b611219565b60405161052d9190613054565b60405180910390f35b34801561054257600080fd5b5061055d60048036038101906105589190613304565b61128a565b005b34801561056b57600080fd5b50610574611319565b6040516105819190612deb565b60405180910390f35b34801561059657600080fd5b506105b160048036038101906105ac9190612f50565b61132c565b6040516105be9190612fbe565b60405180910390f35b3480156105d357600080fd5b506105dc6113dd565b6040516105e99190612ef8565b60405180910390f35b3480156105fe57600080fd5b50610619600480360381019061061491906130c2565b61146b565b6040516106269190613054565b60405180910390f35b34801561063b57600080fd5b50610644611522565b005b34801561065257600080fd5b5061066d60048036038101906106689190612f50565b6115aa565b005b34801561067b57600080fd5b50610684611630565b6040516106919190612fbe565b60405180910390f35b3480156106a657600080fd5b506106af61165a565b6040516106bc9190612ef8565b60405180910390f35b3480156106d157600080fd5b506106ec60048036038101906106e7919061334d565b6116ec565b005b3480156106fa57600080fd5b506107156004803603810190610710919061342e565b611702565b005b34801561072357600080fd5b5061072c611764565b6040516107399190612ef8565b60405180910390f35b34801561074e57600080fd5b5061076960048036038101906107649190612f50565b6117f2565b6040516107769190612ef8565b60405180910390f35b34801561078b57600080fd5b5061079461189c565b6040516107a19190613054565b60405180910390f35b3480156107b657600080fd5b506107d160048036038101906107cc91906130c2565b6118a2565b6040516107de9190612deb565b60405180910390f35b3480156107f357600080fd5b5061080e60048036038101906108099190613304565b6118c2565b005b34801561081c57600080fd5b50610837600480360381019061083291906134b1565b611951565b6040516108449190612deb565b60405180910390f35b34801561085957600080fd5b50610874600480360381019061086f91906130c2565b6119e5565b005b60007f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806108e957506108e882611adc565b5b9050919050565b6108f8611bbe565b73ffffffffffffffffffffffffffffffffffffffff16610916611630565b73ffffffffffffffffffffffffffffffffffffffff161461096c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109639061353d565b60405180910390fd5b80601060006101000a81548160ff02191690831515021790555050565b6060600080546109989061358c565b80601f01602080910402602001604051908101604052809291908181526020018280546109c49061358c565b8015610a115780601f106109e657610100808354040283529160200191610a11565b820191906000526020600020905b8154815290600101906020018083116109f457829003601f168201915b5050505050905090565b6000610a2682611bc6565b610a65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a5c9061362f565b60405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610aab8261132c565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610b1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b12906136c1565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610b3a611bbe565b73ffffffffffffffffffffffffffffffffffffffff161480610b695750610b6881610b63611bbe565b611951565b5b610ba8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9f90613753565b60405180910390fd5b610bb28383611c32565b505050565b600d5481565b6000600880549050905090565b600f5481565b610be1610bdb611bbe565b82611ceb565b610c20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c17906137e5565b60405180910390fd5b610c2b838383611dc9565b505050565b6000610c3b8361146b565b8210610c7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7390613877565b60405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b610cdd611bbe565b73ffffffffffffffffffffffffffffffffffffffff16610cfb611630565b73ffffffffffffffffffffffffffffffffffffffff1614610d51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d489061353d565b60405180910390fd5b6000601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610db4611bbe565b73ffffffffffffffffffffffffffffffffffffffff16610dd2611630565b73ffffffffffffffffffffffffffffffffffffffff1614610e28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1f9061353d565b60405180910390fd5b6000610e32611630565b73ffffffffffffffffffffffffffffffffffffffff1647604051610e55906138c8565b60006040518083038185875af1925050503d8060008114610e92576040519150601f19603f3d011682016040523d82523d6000602084013e610e97565b606091505b5050905080610ea557600080fd5b50565b6000610eb2610bbd565b9050601060009054906101000a900460ff1615610ece57600080fd5b60008211610edb57600080fd5b600f54821115610eea57600080fd5b600e548282610ef9919061390c565b1115610f0457600080fd5b610f0c611630565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610fb25760011515601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514610fb15781600d54610fa49190613962565b341015610fb057600080fd5b5b5b6000600190505b828111610fe857610fd5848284610fd0919061390c565b61202f565b8080610fe0906139bc565b915050610fb9565b50505050565b61100983838360405180602001604052806000815250611702565b505050565b6060600061101b8361146b565b905060008167ffffffffffffffff811115611039576110386131d9565b5b6040519080825280602002602001820160405280156110675781602001602082028036833780820191505090505b50905060005b828110156110b15761107f8582610c30565b82828151811061109257611091613a04565b5b60200260200101818152505080806110a9906139bc565b91505061106d565b508092505050919050565b6110c4611bbe565b73ffffffffffffffffffffffffffffffffffffffff166110e2611630565b73ffffffffffffffffffffffffffffffffffffffff1614611138576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112f9061353d565b60405180910390fd5b80600d8190555050565b61114a611bbe565b73ffffffffffffffffffffffffffffffffffffffff16611168611630565b73ffffffffffffffffffffffffffffffffffffffff16146111be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b59061353d565b60405180910390fd5b6001601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000611223610bbd565b8210611264576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125b90613aa5565b60405180910390fd5b6008828154811061127857611277613a04565b5b90600052602060002001549050919050565b611292611bbe565b73ffffffffffffffffffffffffffffffffffffffff166112b0611630565b73ffffffffffffffffffffffffffffffffffffffff1614611306576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112fd9061353d565b60405180910390fd5b80600b90816113159190613c71565b5050565b601060009054906101000a900460ff1681565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036113d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113cb90613db5565b60405180910390fd5b80915050919050565b600b80546113ea9061358c565b80601f01602080910402602001604051908101604052809291908181526020018280546114169061358c565b80156114635780601f1061143857610100808354040283529160200191611463565b820191906000526020600020905b81548152906001019060200180831161144657829003601f168201915b505050505081565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036114db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d290613e47565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61152a611bbe565b73ffffffffffffffffffffffffffffffffffffffff16611548611630565b73ffffffffffffffffffffffffffffffffffffffff161461159e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115959061353d565b60405180910390fd5b6115a8600061204d565b565b6115b2611bbe565b73ffffffffffffffffffffffffffffffffffffffff166115d0611630565b73ffffffffffffffffffffffffffffffffffffffff1614611626576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161d9061353d565b60405180910390fd5b80600f8190555050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600180546116699061358c565b80601f01602080910402602001604051908101604052809291908181526020018280546116959061358c565b80156116e25780601f106116b7576101008083540402835291602001916116e2565b820191906000526020600020905b8154815290600101906020018083116116c557829003601f168201915b5050505050905090565b6116fe6116f7611bbe565b8383612113565b5050565b61171361170d611bbe565b83611ceb565b611752576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611749906137e5565b60405180910390fd5b61175e8484848461227f565b50505050565b600c80546117719061358c565b80601f016020809104026020016040519081016040528092919081815260200182805461179d9061358c565b80156117ea5780601f106117bf576101008083540402835291602001916117ea565b820191906000526020600020905b8154815290600101906020018083116117cd57829003601f168201915b505050505081565b60606117fd82611bc6565b61183c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183390613ed9565b60405180910390fd5b60006118466122db565b905060008151116118665760405180602001604052806000815250611894565b806118708461236d565b600c60405160200161188493929190613fb8565b6040516020818303038152906040525b915050919050565b600e5481565b60116020528060005260406000206000915054906101000a900460ff1681565b6118ca611bbe565b73ffffffffffffffffffffffffffffffffffffffff166118e8611630565b73ffffffffffffffffffffffffffffffffffffffff161461193e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119359061353d565b60405180910390fd5b80600c908161194d9190613c71565b5050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6119ed611bbe565b73ffffffffffffffffffffffffffffffffffffffff16611a0b611630565b73ffffffffffffffffffffffffffffffffffffffff1614611a61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a589061353d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611ad0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ac79061405b565b60405180910390fd5b611ad98161204d565b50565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611ba757507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80611bb75750611bb6826124cd565b5b9050919050565b600033905090565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16611ca58361132c565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000611cf682611bc6565b611d35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2c906140ed565b60405180910390fd5b6000611d408361132c565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480611daf57508373ffffffffffffffffffffffffffffffffffffffff16611d9784610a1b565b73ffffffffffffffffffffffffffffffffffffffff16145b80611dc05750611dbf8185611951565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16611de98261132c565b73ffffffffffffffffffffffffffffffffffffffff1614611e3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e369061417f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611eae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ea590614211565b60405180910390fd5b611eb9838383612537565b611ec4600082611c32565b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611f149190614231565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611f6b919061390c565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a461202a838383612649565b505050565b61204982826040518060200160405280600081525061264e565b5050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612181576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612178906142b1565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516122729190612deb565b60405180910390a3505050565b61228a848484611dc9565b612296848484846126a9565b6122d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122cc90614343565b60405180910390fd5b50505050565b6060600b80546122ea9061358c565b80601f01602080910402602001604051908101604052809291908181526020018280546123169061358c565b80156123635780601f1061233857610100808354040283529160200191612363565b820191906000526020600020905b81548152906001019060200180831161234657829003601f168201915b5050505050905090565b6060600082036123b4576040518060400160405280600181526020017f300000000000000000000000000000000000000000000000000000000000000081525090506124c8565b600082905060005b600082146123e65780806123cf906139bc565b915050600a826123df9190614392565b91506123bc565b60008167ffffffffffffffff811115612402576124016131d9565b5b6040519080825280601f01601f1916602001820160405280156124345781602001600182028036833780820191505090505b5090505b600085146124c15760018261244d9190614231565b9150600a8561245c91906143c3565b6030612468919061390c565b60f81b81838151811061247e5761247d613a04565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a856124ba9190614392565b9450612438565b8093505050505b919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b612542838383612830565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036125845761257f81612835565b6125c3565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146125c2576125c1838261287e565b5b5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361260557612600816129eb565b612644565b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614612643576126428282612abc565b5b5b505050565b505050565b6126588383612b3b565b61266560008484846126a9565b6126a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161269b90614343565b60405180910390fd5b505050565b60006126ca8473ffffffffffffffffffffffffffffffffffffffff16612d14565b15612823578373ffffffffffffffffffffffffffffffffffffffff1663150b7a026126f3611bbe565b8786866040518563ffffffff1660e01b81526004016127159493929190614449565b6020604051808303816000875af192505050801561275157506040513d601f19601f8201168201806040525081019061274e91906144aa565b60015b6127d3573d8060008114612781576040519150601f19603f3d011682016040523d82523d6000602084013e612786565b606091505b5060008151036127cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127c290614343565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050612828565b600190505b949350505050565b505050565b6008805490506009600083815260200190815260200160002081905550600881908060018154018082558091505060019003906000526020600020016000909190919091505550565b6000600161288b8461146b565b6128959190614231565b905060006007600084815260200190815260200160002054905081811461297a576000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002054905080600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002081905550816007600083815260200190815260200160002081905550505b6007600084815260200190815260200160002060009055600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000905550505050565b600060016008805490506129ff9190614231565b9050600060096000848152602001908152602001600020549050600060088381548110612a2f57612a2e613a04565b5b906000526020600020015490508060088381548110612a5157612a50613a04565b5b906000526020600020018190555081600960008381526020019081526020016000208190555060096000858152602001908152602001600020600090556008805480612aa057612a9f6144d7565b5b6001900381819060005260206000200160009055905550505050565b6000612ac78361146b565b905081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002081905550806007600084815260200190815260200160002081905550505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612baa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ba190614552565b60405180910390fd5b612bb381611bc6565b15612bf3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bea906145be565b60405180910390fd5b612bff60008383612537565b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612c4f919061390c565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4612d1060008383612649565b5050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b612d8081612d4b565b8114612d8b57600080fd5b50565b600081359050612d9d81612d77565b92915050565b600060208284031215612db957612db8612d41565b5b6000612dc784828501612d8e565b91505092915050565b60008115159050919050565b612de581612dd0565b82525050565b6000602082019050612e006000830184612ddc565b92915050565b612e0f81612dd0565b8114612e1a57600080fd5b50565b600081359050612e2c81612e06565b92915050565b600060208284031215612e4857612e47612d41565b5b6000612e5684828501612e1d565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612e99578082015181840152602081019050612e7e565b83811115612ea8576000848401525b50505050565b6000601f19601f8301169050919050565b6000612eca82612e5f565b612ed48185612e6a565b9350612ee4818560208601612e7b565b612eed81612eae565b840191505092915050565b60006020820190508181036000830152612f128184612ebf565b905092915050565b6000819050919050565b612f2d81612f1a565b8114612f3857600080fd5b50565b600081359050612f4a81612f24565b92915050565b600060208284031215612f6657612f65612d41565b5b6000612f7484828501612f3b565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612fa882612f7d565b9050919050565b612fb881612f9d565b82525050565b6000602082019050612fd36000830184612faf565b92915050565b612fe281612f9d565b8114612fed57600080fd5b50565b600081359050612fff81612fd9565b92915050565b6000806040838503121561301c5761301b612d41565b5b600061302a85828601612ff0565b925050602061303b85828601612f3b565b9150509250929050565b61304e81612f1a565b82525050565b60006020820190506130696000830184613045565b92915050565b60008060006060848603121561308857613087612d41565b5b600061309686828701612ff0565b93505060206130a786828701612ff0565b92505060406130b886828701612f3b565b9150509250925092565b6000602082840312156130d8576130d7612d41565b5b60006130e684828501612ff0565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61312481612f1a565b82525050565b6000613136838361311b565b60208301905092915050565b6000602082019050919050565b600061315a826130ef565b61316481856130fa565b935061316f8361310b565b8060005b838110156131a0578151613187888261312a565b975061319283613142565b925050600181019050613173565b5085935050505092915050565b600060208201905081810360008301526131c7818461314f565b905092915050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61321182612eae565b810181811067ffffffffffffffff821117156132305761322f6131d9565b5b80604052505050565b6000613243612d37565b905061324f8282613208565b919050565b600067ffffffffffffffff82111561326f5761326e6131d9565b5b61327882612eae565b9050602081019050919050565b82818337600083830152505050565b60006132a76132a284613254565b613239565b9050828152602081018484840111156132c3576132c26131d4565b5b6132ce848285613285565b509392505050565b600082601f8301126132eb576132ea6131cf565b5b81356132fb848260208601613294565b91505092915050565b60006020828403121561331a57613319612d41565b5b600082013567ffffffffffffffff81111561333857613337612d46565b5b613344848285016132d6565b91505092915050565b6000806040838503121561336457613363612d41565b5b600061337285828601612ff0565b925050602061338385828601612e1d565b9150509250929050565b600067ffffffffffffffff8211156133a8576133a76131d9565b5b6133b182612eae565b9050602081019050919050565b60006133d16133cc8461338d565b613239565b9050828152602081018484840111156133ed576133ec6131d4565b5b6133f8848285613285565b509392505050565b600082601f830112613415576134146131cf565b5b81356134258482602086016133be565b91505092915050565b6000806000806080858703121561344857613447612d41565b5b600061345687828801612ff0565b945050602061346787828801612ff0565b935050604061347887828801612f3b565b925050606085013567ffffffffffffffff81111561349957613498612d46565b5b6134a587828801613400565b91505092959194509250565b600080604083850312156134c8576134c7612d41565b5b60006134d685828601612ff0565b92505060206134e785828601612ff0565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613527602083612e6a565b9150613532826134f1565b602082019050919050565b600060208201905081810360008301526135568161351a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806135a457607f821691505b6020821081036135b7576135b661355d565b5b50919050565b7f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b6000613619602c83612e6a565b9150613624826135bd565b604082019050919050565b600060208201905081810360008301526136488161360c565b9050919050565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b60006136ab602183612e6a565b91506136b68261364f565b604082019050919050565b600060208201905081810360008301526136da8161369e565b9050919050565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000602082015250565b600061373d603883612e6a565b9150613748826136e1565b604082019050919050565b6000602082019050818103600083015261376c81613730565b9050919050565b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b60006137cf603183612e6a565b91506137da82613773565b604082019050919050565b600060208201905081810360008301526137fe816137c2565b9050919050565b7f455243373231456e756d657261626c653a206f776e657220696e646578206f7560008201527f74206f6620626f756e6473000000000000000000000000000000000000000000602082015250565b6000613861602b83612e6a565b915061386c82613805565b604082019050919050565b6000602082019050818103600083015261389081613854565b9050919050565b600081905092915050565b50565b60006138b2600083613897565b91506138bd826138a2565b600082019050919050565b60006138d3826138a5565b9150819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061391782612f1a565b915061392283612f1a565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613957576139566138dd565b5b828201905092915050565b600061396d82612f1a565b915061397883612f1a565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156139b1576139b06138dd565b5b828202905092915050565b60006139c782612f1a565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036139f9576139f86138dd565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60008201527f7574206f6620626f756e64730000000000000000000000000000000000000000602082015250565b6000613a8f602c83612e6a565b9150613a9a82613a33565b604082019050919050565b60006020820190508181036000830152613abe81613a82565b9050919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302613b277fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82613aea565b613b318683613aea565b95508019841693508086168417925050509392505050565b6000819050919050565b6000613b6e613b69613b6484612f1a565b613b49565b612f1a565b9050919050565b6000819050919050565b613b8883613b53565b613b9c613b9482613b75565b848454613af7565b825550505050565b600090565b613bb1613ba4565b613bbc818484613b7f565b505050565b5b81811015613be057613bd5600082613ba9565b600181019050613bc2565b5050565b601f821115613c2557613bf681613ac5565b613bff84613ada565b81016020851015613c0e578190505b613c22613c1a85613ada565b830182613bc1565b50505b505050565b600082821c905092915050565b6000613c4860001984600802613c2a565b1980831691505092915050565b6000613c618383613c37565b9150826002028217905092915050565b613c7a82612e5f565b67ffffffffffffffff811115613c9357613c926131d9565b5b613c9d825461358c565b613ca8828285613be4565b600060209050601f831160018114613cdb5760008415613cc9578287015190505b613cd38582613c55565b865550613d3b565b601f198416613ce986613ac5565b60005b82811015613d1157848901518255600182019150602085019450602081019050613cec565b86831015613d2e5784890151613d2a601f891682613c37565b8355505b6001600288020188555050505b505050505050565b7f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008201527f656e7420746f6b656e0000000000000000000000000000000000000000000000602082015250565b6000613d9f602983612e6a565b9150613daa82613d43565b604082019050919050565b60006020820190508181036000830152613dce81613d92565b9050919050565b7f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b6000613e31602a83612e6a565b9150613e3c82613dd5565b604082019050919050565b60006020820190508181036000830152613e6081613e24565b9050919050565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b6000613ec3602f83612e6a565b9150613ece82613e67565b604082019050919050565b60006020820190508181036000830152613ef281613eb6565b9050919050565b600081905092915050565b6000613f0f82612e5f565b613f198185613ef9565b9350613f29818560208601612e7b565b80840191505092915050565b60008154613f428161358c565b613f4c8186613ef9565b94506001821660008114613f675760018114613f7c57613faf565b60ff1983168652811515820286019350613faf565b613f8585613ac5565b60005b83811015613fa757815481890152600182019150602081019050613f88565b838801955050505b50505092915050565b6000613fc48286613f04565b9150613fd08285613f04565b9150613fdc8284613f35565b9150819050949350505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614045602683612e6a565b915061405082613fe9565b604082019050919050565b6000602082019050818103600083015261407481614038565b9050919050565b7f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b60006140d7602c83612e6a565b91506140e28261407b565b604082019050919050565b60006020820190508181036000830152614106816140ca565b9050919050565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b6000614169602583612e6a565b91506141748261410d565b604082019050919050565b600060208201905081810360008301526141988161415c565b9050919050565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006141fb602483612e6a565b91506142068261419f565b604082019050919050565b6000602082019050818103600083015261422a816141ee565b9050919050565b600061423c82612f1a565b915061424783612f1a565b92508282101561425a576142596138dd565b5b828203905092915050565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b600061429b601983612e6a565b91506142a682614265565b602082019050919050565b600060208201905081810360008301526142ca8161428e565b9050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b600061432d603283612e6a565b9150614338826142d1565b604082019050919050565b6000602082019050818103600083015261435c81614320565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061439d82612f1a565b91506143a883612f1a565b9250826143b8576143b7614363565b5b828204905092915050565b60006143ce82612f1a565b91506143d983612f1a565b9250826143e9576143e8614363565b5b828206905092915050565b600081519050919050565b600082825260208201905092915050565b600061441b826143f4565b61442581856143ff565b9350614435818560208601612e7b565b61443e81612eae565b840191505092915050565b600060808201905061445e6000830187612faf565b61446b6020830186612faf565b6144786040830185613045565b818103606083015261448a8184614410565b905095945050505050565b6000815190506144a481612d77565b92915050565b6000602082840312156144c0576144bf612d41565b5b60006144ce84828501614495565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b600061453c602083612e6a565b915061454782614506565b602082019050919050565b6000602082019050818103600083015261456b8161452f565b9050919050565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b60006145a8601c83612e6a565b91506145b382614572565b602082019050919050565b600060208201905081810360008301526145d78161459b565b905091905056fea2646970667358221220329fc3a696b27ea4bd25272f4897be9e2fa06ed1e4bc5e45f207caf98b6438c264736f6c634300080f003368747470733a2f2f6261667962656961366c697a6376743467366d786671623332343579776a74753461626b7a69626664646a3436726e667a64683474686d7a6165792e697066732e7733732e6c696e6b2f

Deployed ByteCode Sourcemap

19980:2781:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17090:224;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22327:73;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10017:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11100:221;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10681:411;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20127:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17586:113;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20197:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11664:286;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17322:256;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22507:100;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22613:145;;;:::i;:::-;;20597:501;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11958:185;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21104:348;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21887:80;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22407:93;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17707:233;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22095:98;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20234:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9770:239;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20059:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9554:208;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2240:103;;;;;;;;;;;;;:::i;:::-;;21973:116;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2021:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10125:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11329:155;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12153:328;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20085:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21458:423;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20161:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20265:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22199:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11492:164;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2351:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17090:224;17192:4;17231:35;17216:50;;;:11;:50;;;;:90;;;;17270:36;17294:11;17270:23;:36::i;:::-;17216:90;17209:97;;17090:224;;;:::o;22327:73::-;2165:12;:10;:12::i;:::-;2154:23;;:7;:5;:7::i;:::-;:23;;;2146:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22388:6:::1;22379;;:15;;;;;;;;;;;;;;;;;;22327:73:::0;:::o;10017:100::-;10071:13;10104:5;10097:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10017:100;:::o;11100:221::-;11176:7;11204:16;11212:7;11204;:16::i;:::-;11196:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;11289:15;:24;11305:7;11289:24;;;;;;;;;;;;;;;;;;;;;11282:31;;11100:221;;;:::o;10681:411::-;10762:13;10778:23;10793:7;10778:14;:23::i;:::-;10762:39;;10826:5;10820:11;;:2;:11;;;10812:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;10920:5;10904:21;;:12;:10;:12::i;:::-;:21;;;:62;;;;10929:37;10946:5;10953:12;:10;:12::i;:::-;10929:16;:37::i;:::-;10904:62;10882:168;;;;;;;;;;;;:::i;:::-;;;;;;;;;11063:21;11072:2;11076:7;11063:8;:21::i;:::-;10751:341;10681:411;;:::o;20127:29::-;;;;:::o;17586:113::-;17647:7;17674:10;:17;;;;17667:24;;17586:113;:::o;20197:32::-;;;;:::o;11664:286::-;11806:41;11825:12;:10;:12::i;:::-;11839:7;11806:18;:41::i;:::-;11798:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;11914:28;11924:4;11930:2;11934:7;11914:9;:28::i;:::-;11664:286;;;:::o;17322:256::-;17419:7;17455:23;17472:5;17455:16;:23::i;:::-;17447:5;:31;17439:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;17544:12;:19;17557:5;17544:19;;;;;;;;;;;;;;;:26;17564:5;17544:26;;;;;;;;;;;;17537:33;;17322:256;;;;:::o;22507:100::-;2165:12;:10;:12::i;:::-;2154:23;;:7;:5;:7::i;:::-;:23;;;2146:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22596:5:::1;22575:11;:18;22587:5;22575:18;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;22507:100:::0;:::o;22613:145::-;2165:12;:10;:12::i;:::-;2154:23;;:7;:5;:7::i;:::-;:23;;;2146:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22666:7:::1;22687;:5;:7::i;:::-;22679:21;;22708;22679:55;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22665:69;;;22749:2;22741:11;;;::::0;::::1;;22658:100;22613:145::o:0;20597:501::-;20667:14;20684:13;:11;:13::i;:::-;20667:30;;20713:6;;;;;;;;;;;20712:7;20704:16;;;;;;20749:1;20735:11;:15;20727:24;;;;;;20781:13;;20766:11;:28;;20758:37;;;;;;20834:9;;20819:11;20810:6;:20;;;;:::i;:::-;:33;;20802:42;;;;;;20871:7;:5;:7::i;:::-;20857:21;;:10;:21;;;20853:146;;20921:4;20894:31;;:11;:23;20906:10;20894:23;;;;;;;;;;;;;;;;;;;;;;;;;:31;;;20891:101;;20968:11;20961:4;;:18;;;;:::i;:::-;20948:9;:31;;20940:40;;;;;;20891:101;20853:146;21012:9;21024:1;21012:13;;21007:86;21032:11;21027:1;:16;21007:86;;21059:26;21069:3;21083:1;21074:6;:10;;;;:::i;:::-;21059:9;:26::i;:::-;21045:3;;;;;:::i;:::-;;;;21007:86;;;;20660:438;20597:501;;:::o;11958:185::-;12096:39;12113:4;12119:2;12123:7;12096:39;;;;;;;;;;;;:16;:39::i;:::-;11958:185;;;:::o;21104:348::-;21179:16;21207:23;21233:17;21243:6;21233:9;:17::i;:::-;21207:43;;21257:25;21299:15;21285:30;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21257:58;;21327:9;21322:103;21342:15;21338:1;:19;21322:103;;;21387:30;21407:6;21415:1;21387:19;:30::i;:::-;21373:8;21382:1;21373:11;;;;;;;;:::i;:::-;;;;;;;:44;;;;;21359:3;;;;;:::i;:::-;;;;21322:103;;;;21438:8;21431:15;;;;21104:348;;;:::o;21887:80::-;2165:12;:10;:12::i;:::-;2154:23;;:7;:5;:7::i;:::-;:23;;;2146:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21953:8:::1;21946:4;:15;;;;21887:80:::0;:::o;22407:93::-;2165:12;:10;:12::i;:::-;2154:23;;:7;:5;:7::i;:::-;:23;;;2146:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22490:4:::1;22469:11;:18;22481:5;22469:18;;;;;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;22407:93:::0;:::o;17707:233::-;17782:7;17818:30;:28;:30::i;:::-;17810:5;:38;17802:95;;;;;;;;;;;;:::i;:::-;;;;;;;;;17915:10;17926:5;17915:17;;;;;;;;:::i;:::-;;;;;;;;;;17908:24;;17707:233;;;:::o;22095:98::-;2165:12;:10;:12::i;:::-;2154:23;;:7;:5;:7::i;:::-;:23;;;2146:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22176:11:::1;22166:7;:21;;;;;;:::i;:::-;;22095:98:::0;:::o;20234:26::-;;;;;;;;;;;;;:::o;9770:239::-;9842:7;9862:13;9878:7;:16;9886:7;9878:16;;;;;;;;;;;;;;;;;;;;;9862:32;;9930:1;9913:19;;:5;:19;;;9905:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;9996:5;9989:12;;;9770:239;;;:::o;20059:21::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;9554:208::-;9626:7;9671:1;9654:19;;:5;:19;;;9646:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;9738:9;:16;9748:5;9738:16;;;;;;;;;;;;;;;;9731:23;;9554:208;;;:::o;2240:103::-;2165:12;:10;:12::i;:::-;2154:23;;:7;:5;:7::i;:::-;:23;;;2146:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2305:30:::1;2332:1;2305:18;:30::i;:::-;2240:103::o:0;21973:116::-;2165:12;:10;:12::i;:::-;2154:23;;:7;:5;:7::i;:::-;:23;;;2146:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22066:17:::1;22050:13;:33;;;;21973:116:::0;:::o;2021:87::-;2067:7;2094:6;;;;;;;;;;;2087:13;;2021:87;:::o;10125:104::-;10181:13;10214:7;10207:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10125:104;:::o;11329:155::-;11424:52;11443:12;:10;:12::i;:::-;11457:8;11467;11424:18;:52::i;:::-;11329:155;;:::o;12153:328::-;12328:41;12347:12;:10;:12::i;:::-;12361:7;12328:18;:41::i;:::-;12320:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;12434:39;12448:4;12454:2;12458:7;12467:5;12434:13;:39::i;:::-;12153:328;;;;:::o;20085:37::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;21458:423::-;21556:13;21597:16;21605:7;21597;:16::i;:::-;21581:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;21687:28;21718:10;:8;:10::i;:::-;21687:41;;21773:1;21748:14;21742:28;:32;:133;;;;;;;;;;;;;;;;;21810:14;21826:18;:7;:16;:18::i;:::-;21846:13;21793:67;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;21742:133;21735:140;;;21458:423;;;:::o;20161:31::-;;;;:::o;20265:43::-;;;;;;;;;;;;;;;;;;;;;;:::o;22199:122::-;2165:12;:10;:12::i;:::-;2154:23;;:7;:5;:7::i;:::-;:23;;;2146:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22298:17:::1;22282:13;:33;;;;;;:::i;:::-;;22199:122:::0;:::o;11492:164::-;11589:4;11613:18;:25;11632:5;11613:25;;;;;;;;;;;;;;;:35;11639:8;11613:35;;;;;;;;;;;;;;;;;;;;;;;;;11606:42;;11492:164;;;;:::o;2351:201::-;2165:12;:10;:12::i;:::-;2154:23;;:7;:5;:7::i;:::-;:23;;;2146:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2460:1:::1;2440:22;;:8;:22;;::::0;2432:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2516:28;2535:8;2516:18;:28::i;:::-;2351:201:::0;:::o;9241:305::-;9343:4;9395:25;9380:40;;;:11;:40;;;;:105;;;;9452:33;9437:48;;;:11;:48;;;;9380:105;:158;;;;9502:36;9526:11;9502:23;:36::i;:::-;9380:158;9360:178;;9241:305;;;:::o;1548:98::-;1601:7;1628:10;1621:17;;1548:98;:::o;12812:127::-;12877:4;12929:1;12901:30;;:7;:16;12909:7;12901:16;;;;;;;;;;;;;;;;;;;;;:30;;;;12894:37;;12812:127;;;:::o;15178:174::-;15280:2;15253:15;:24;15269:7;15253:24;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;15336:7;15332:2;15298:46;;15307:23;15322:7;15307:14;:23::i;:::-;15298:46;;;;;;;;;;;;15178:174;;:::o;12947:348::-;13040:4;13065:16;13073:7;13065;:16::i;:::-;13057:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;13141:13;13157:23;13172:7;13157:14;:23::i;:::-;13141:39;;13210:5;13199:16;;:7;:16;;;:51;;;;13243:7;13219:31;;:20;13231:7;13219:11;:20::i;:::-;:31;;;13199:51;:87;;;;13254:32;13271:5;13278:7;13254:16;:32::i;:::-;13199:87;13191:96;;;12947:348;;;;:::o;14597:573::-;14756:4;14729:31;;:23;14744:7;14729:14;:23::i;:::-;:31;;;14721:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;14835:1;14821:16;;:2;:16;;;14813:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;14891:39;14912:4;14918:2;14922:7;14891:20;:39::i;:::-;14943:29;14960:1;14964:7;14943:8;:29::i;:::-;15004:1;14985:9;:15;14995:4;14985:15;;;;;;;;;;;;;;;;:20;;;;;;;:::i;:::-;;;;;;;;15033:1;15016:9;:13;15026:2;15016:13;;;;;;;;;;;;;;;;:18;;;;;;;:::i;:::-;;;;;;;;15064:2;15045:7;:16;15053:7;15045:16;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;15103:7;15099:2;15084:27;;15093:4;15084:27;;;;;;;;;;;;15124:38;15144:4;15150:2;15154:7;15124:19;:38::i;:::-;14597:573;;;:::o;13303:110::-;13379:26;13389:2;13393:7;13379:26;;;;;;;;;;;;:9;:26::i;:::-;13303:110;;:::o;2558:191::-;2632:16;2651:6;;;;;;;;;;;2632:25;;2677:8;2668:6;;:17;;;;;;;;;;;;;;;;;;2732:8;2701:40;;2722:8;2701:40;;;;;;;;;;;;2621:128;2558:191;:::o;15360:315::-;15515:8;15506:17;;:5;:17;;;15498:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;15602:8;15564:18;:25;15583:5;15564:25;;;;;;;;;;;;;;;:35;15590:8;15564:35;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;15648:8;15626:41;;15641:5;15626:41;;;15658:8;15626:41;;;;;;:::i;:::-;;;;;;;;15360:315;;;:::o;12489:::-;12646:28;12656:4;12662:2;12666:7;12646:9;:28::i;:::-;12693:48;12716:4;12722:2;12726:7;12735:5;12693:22;:48::i;:::-;12685:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;12489:315;;;;:::o;20489:102::-;20549:13;20578:7;20571:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20489:102;:::o;150:532::-;206:13;245:1;236:5;:10;232:53;;263:10;;;;;;;;;;;;;;;;;;;;;232:53;295:12;310:5;295:20;;326:14;351:78;366:1;358:4;:9;351:78;;384:8;;;;;:::i;:::-;;;;415:2;407:10;;;;;:::i;:::-;;;351:78;;;439:19;471:6;461:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;439:39;;489:154;505:1;496:5;:10;489:154;;533:1;523:11;;;;;:::i;:::-;;;600:2;592:5;:10;;;;:::i;:::-;579:2;:24;;;;:::i;:::-;566:39;;549:6;556;549:14;;;;;;;;:::i;:::-;;;;;:56;;;;;;;;;;;629:2;620:11;;;;;:::i;:::-;;;489:154;;;667:6;653:21;;;;;150:532;;;;:::o;6658:157::-;6743:4;6782:25;6767:40;;;:11;:40;;;;6760:47;;6658:157;;;:::o;17948:589::-;18092:45;18119:4;18125:2;18129:7;18092:26;:45::i;:::-;18170:1;18154:18;;:4;:18;;;18150:187;;18189:40;18221:7;18189:31;:40::i;:::-;18150:187;;;18259:2;18251:10;;:4;:10;;;18247:90;;18278:47;18311:4;18317:7;18278:32;:47::i;:::-;18247:90;18150:187;18365:1;18351:16;;:2;:16;;;18347:183;;18384:45;18421:7;18384:36;:45::i;:::-;18347:183;;;18457:4;18451:10;;:2;:10;;;18447:83;;18478:40;18506:2;18510:7;18478:27;:40::i;:::-;18447:83;18347:183;17948:589;;;:::o;16624:125::-;;;;:::o;13421:321::-;13551:18;13557:2;13561:7;13551:5;:18::i;:::-;13602:54;13633:1;13637:2;13641:7;13650:5;13602:22;:54::i;:::-;13580:154;;;;;;;;;;;;:::i;:::-;;;;;;;;;13421:321;;;:::o;15683:799::-;15838:4;15859:15;:2;:13;;;:15::i;:::-;15855:620;;;15911:2;15895:36;;;15932:12;:10;:12::i;:::-;15946:4;15952:7;15961:5;15895:72;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;15891:529;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16154:1;16137:6;:13;:18;16133:272;;16180:60;;;;;;;;;;:::i;:::-;;;;;;;;16133:272;16355:6;16349:13;16340:6;16336:2;16332:15;16325:38;15891:529;16028:41;;;16018:51;;;:6;:51;;;;16011:58;;;;;15855:620;16459:4;16452:11;;15683:799;;;;;;;:::o;16490:126::-;;;;:::o;18774:164::-;18878:10;:17;;;;18851:15;:24;18867:7;18851:24;;;;;;;;;;;:44;;;;18906:10;18922:7;18906:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18774:164;:::o;18946:557::-;19040:22;19090:1;19065:22;19082:4;19065:16;:22::i;:::-;:26;;;;:::i;:::-;19040:51;;19102:18;19123:17;:26;19141:7;19123:26;;;;;;;;;;;;19102:47;;19180:14;19166:10;:28;19162:236;;19211:19;19233:12;:18;19246:4;19233:18;;;;;;;;;;;;;;;:34;19252:14;19233:34;;;;;;;;;;;;19211:56;;19317:11;19284:12;:18;19297:4;19284:18;;;;;;;;;;;;;;;:30;19303:10;19284:30;;;;;;;;;;;:44;;;;19376:10;19343:17;:30;19361:11;19343:30;;;;;;;;;;;:43;;;;19196:202;19162:236;19417:17;:26;19435:7;19417:26;;;;;;;;;;;19410:33;;;19461:12;:18;19474:4;19461:18;;;;;;;;;;;;;;;:34;19480:14;19461:34;;;;;;;;;;;19454:41;;;19027:476;;18946:557;;:::o;19511:427::-;19595:22;19640:1;19620:10;:17;;;;:21;;;;:::i;:::-;19595:46;;19652:18;19673:15;:24;19689:7;19673:24;;;;;;;;;;;;19652:45;;19710:19;19732:10;19743:14;19732:26;;;;;;;;:::i;:::-;;;;;;;;;;19710:48;;19796:11;19771:10;19782;19771:22;;;;;;;;:::i;:::-;;;;;;;;;:36;;;;19849:10;19818:15;:28;19834:11;19818:28;;;;;;;;;;;:41;;;;19879:15;:24;19895:7;19879:24;;;;;;;;;;;19872:31;;;19914:10;:16;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;19582:356;;;19511:427;:::o;18545:221::-;18630:14;18647:20;18664:2;18647:16;:20::i;:::-;18630:37;;18705:7;18678:12;:16;18691:2;18678:16;;;;;;;;;;;;;;;:24;18695:6;18678:24;;;;;;;;;;;:34;;;;18752:6;18723:17;:26;18741:7;18723:26;;;;;;;;;;;:35;;;;18619:147;18545:221;;:::o;13750:439::-;13844:1;13830:16;;:2;:16;;;13822:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;13903:16;13911:7;13903;:16::i;:::-;13902:17;13894:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;13965:45;13994:1;13998:2;14002:7;13965:20;:45::i;:::-;14040:1;14023:9;:13;14033:2;14023:13;;;;;;;;;;;;;;;;:18;;;;;;;:::i;:::-;;;;;;;;14071:2;14052:7;:16;14060:7;14052:16;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;14116:7;14112:2;14091:33;;14108:1;14091:33;;;;;;;;;;;;14137:44;14165:1;14169:2;14173:7;14137:19;:44::i;:::-;13750:439;;:::o;2806:115::-;2866:4;2912:1;2890:7;:19;;;:23;2883:30;;2806:115;;;:::o;7:75:1:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:149;370:7;410:66;403:5;399:78;388:89;;334:149;;;:::o;489:120::-;561:23;578:5;561:23;:::i;:::-;554:5;551:34;541:62;;599:1;596;589:12;541:62;489:120;:::o;615:137::-;660:5;698:6;685:20;676:29;;714:32;740:5;714:32;:::i;:::-;615:137;;;;:::o;758:327::-;816:6;865:2;853:9;844:7;840:23;836:32;833:119;;;871:79;;:::i;:::-;833:119;991:1;1016:52;1060:7;1051:6;1040:9;1036:22;1016:52;:::i;:::-;1006:62;;962:116;758:327;;;;:::o;1091:90::-;1125:7;1168:5;1161:13;1154:21;1143:32;;1091:90;;;:::o;1187:109::-;1268:21;1283:5;1268:21;:::i;:::-;1263:3;1256:34;1187:109;;:::o;1302:210::-;1389:4;1427:2;1416:9;1412:18;1404:26;;1440:65;1502:1;1491:9;1487:17;1478:6;1440:65;:::i;:::-;1302:210;;;;:::o;1518:116::-;1588:21;1603:5;1588:21;:::i;:::-;1581:5;1578:32;1568:60;;1624:1;1621;1614:12;1568:60;1518:116;:::o;1640:133::-;1683:5;1721:6;1708:20;1699:29;;1737:30;1761:5;1737:30;:::i;:::-;1640:133;;;;:::o;1779:323::-;1835:6;1884:2;1872:9;1863:7;1859:23;1855:32;1852:119;;;1890:79;;:::i;:::-;1852:119;2010:1;2035:50;2077:7;2068:6;2057:9;2053:22;2035:50;:::i;:::-;2025:60;;1981:114;1779:323;;;;:::o;2108:99::-;2160:6;2194:5;2188:12;2178:22;;2108:99;;;:::o;2213:169::-;2297:11;2331:6;2326:3;2319:19;2371:4;2366:3;2362:14;2347:29;;2213:169;;;;:::o;2388:307::-;2456:1;2466:113;2480:6;2477:1;2474:13;2466:113;;;2565:1;2560:3;2556:11;2550:18;2546:1;2541:3;2537:11;2530:39;2502:2;2499:1;2495:10;2490:15;;2466:113;;;2597:6;2594:1;2591:13;2588:101;;;2677:1;2668:6;2663:3;2659:16;2652:27;2588:101;2437:258;2388:307;;;:::o;2701:102::-;2742:6;2793:2;2789:7;2784:2;2777:5;2773:14;2769:28;2759:38;;2701:102;;;:::o;2809:364::-;2897:3;2925:39;2958:5;2925:39;:::i;:::-;2980:71;3044:6;3039:3;2980:71;:::i;:::-;2973:78;;3060:52;3105:6;3100:3;3093:4;3086:5;3082:16;3060:52;:::i;:::-;3137:29;3159:6;3137:29;:::i;:::-;3132:3;3128:39;3121:46;;2901:272;2809:364;;;;:::o;3179:313::-;3292:4;3330:2;3319:9;3315:18;3307:26;;3379:9;3373:4;3369:20;3365:1;3354:9;3350:17;3343:47;3407:78;3480:4;3471:6;3407:78;:::i;:::-;3399:86;;3179:313;;;;:::o;3498:77::-;3535:7;3564:5;3553:16;;3498:77;;;:::o;3581:122::-;3654:24;3672:5;3654:24;:::i;:::-;3647:5;3644:35;3634:63;;3693:1;3690;3683:12;3634:63;3581:122;:::o;3709:139::-;3755:5;3793:6;3780:20;3771:29;;3809:33;3836:5;3809:33;:::i;:::-;3709:139;;;;:::o;3854:329::-;3913:6;3962:2;3950:9;3941:7;3937:23;3933:32;3930:119;;;3968:79;;:::i;:::-;3930:119;4088:1;4113:53;4158:7;4149:6;4138:9;4134:22;4113:53;:::i;:::-;4103:63;;4059:117;3854:329;;;;:::o;4189:126::-;4226:7;4266:42;4259:5;4255:54;4244:65;;4189:126;;;:::o;4321:96::-;4358:7;4387:24;4405:5;4387:24;:::i;:::-;4376:35;;4321:96;;;:::o;4423:118::-;4510:24;4528:5;4510:24;:::i;:::-;4505:3;4498:37;4423:118;;:::o;4547:222::-;4640:4;4678:2;4667:9;4663:18;4655:26;;4691:71;4759:1;4748:9;4744:17;4735:6;4691:71;:::i;:::-;4547:222;;;;:::o;4775:122::-;4848:24;4866:5;4848:24;:::i;:::-;4841:5;4838:35;4828:63;;4887:1;4884;4877:12;4828:63;4775:122;:::o;4903:139::-;4949:5;4987:6;4974:20;4965:29;;5003:33;5030:5;5003:33;:::i;:::-;4903:139;;;;:::o;5048:474::-;5116:6;5124;5173:2;5161:9;5152:7;5148:23;5144:32;5141:119;;;5179:79;;:::i;:::-;5141:119;5299:1;5324:53;5369:7;5360:6;5349:9;5345:22;5324:53;:::i;:::-;5314:63;;5270:117;5426:2;5452:53;5497:7;5488:6;5477:9;5473:22;5452:53;:::i;:::-;5442:63;;5397:118;5048:474;;;;;:::o;5528:118::-;5615:24;5633:5;5615:24;:::i;:::-;5610:3;5603:37;5528:118;;:::o;5652:222::-;5745:4;5783:2;5772:9;5768:18;5760:26;;5796:71;5864:1;5853:9;5849:17;5840:6;5796:71;:::i;:::-;5652:222;;;;:::o;5880:619::-;5957:6;5965;5973;6022:2;6010:9;6001:7;5997:23;5993:32;5990:119;;;6028:79;;:::i;:::-;5990:119;6148:1;6173:53;6218:7;6209:6;6198:9;6194:22;6173:53;:::i;:::-;6163:63;;6119:117;6275:2;6301:53;6346:7;6337:6;6326:9;6322:22;6301:53;:::i;:::-;6291:63;;6246:118;6403:2;6429:53;6474:7;6465:6;6454:9;6450:22;6429:53;:::i;:::-;6419:63;;6374:118;5880:619;;;;;:::o;6505:329::-;6564:6;6613:2;6601:9;6592:7;6588:23;6584:32;6581:119;;;6619:79;;:::i;:::-;6581:119;6739:1;6764:53;6809:7;6800:6;6789:9;6785:22;6764:53;:::i;:::-;6754:63;;6710:117;6505:329;;;;:::o;6840:114::-;6907:6;6941:5;6935:12;6925:22;;6840:114;;;:::o;6960:184::-;7059:11;7093:6;7088:3;7081:19;7133:4;7128:3;7124:14;7109:29;;6960:184;;;;:::o;7150:132::-;7217:4;7240:3;7232:11;;7270:4;7265:3;7261:14;7253:22;;7150:132;;;:::o;7288:108::-;7365:24;7383:5;7365:24;:::i;:::-;7360:3;7353:37;7288:108;;:::o;7402:179::-;7471:10;7492:46;7534:3;7526:6;7492:46;:::i;:::-;7570:4;7565:3;7561:14;7547:28;;7402:179;;;;:::o;7587:113::-;7657:4;7689;7684:3;7680:14;7672:22;;7587:113;;;:::o;7736:732::-;7855:3;7884:54;7932:5;7884:54;:::i;:::-;7954:86;8033:6;8028:3;7954:86;:::i;:::-;7947:93;;8064:56;8114:5;8064:56;:::i;:::-;8143:7;8174:1;8159:284;8184:6;8181:1;8178:13;8159:284;;;8260:6;8254:13;8287:63;8346:3;8331:13;8287:63;:::i;:::-;8280:70;;8373:60;8426:6;8373:60;:::i;:::-;8363:70;;8219:224;8206:1;8203;8199:9;8194:14;;8159:284;;;8163:14;8459:3;8452:10;;7860:608;;;7736:732;;;;:::o;8474:373::-;8617:4;8655:2;8644:9;8640:18;8632:26;;8704:9;8698:4;8694:20;8690:1;8679:9;8675:17;8668:47;8732:108;8835:4;8826:6;8732:108;:::i;:::-;8724:116;;8474:373;;;;:::o;8853:117::-;8962:1;8959;8952:12;8976:117;9085:1;9082;9075:12;9099:180;9147:77;9144:1;9137:88;9244:4;9241:1;9234:15;9268:4;9265:1;9258:15;9285:281;9368:27;9390:4;9368:27;:::i;:::-;9360:6;9356:40;9498:6;9486:10;9483:22;9462:18;9450:10;9447:34;9444:62;9441:88;;;9509:18;;:::i;:::-;9441:88;9549:10;9545:2;9538:22;9328:238;9285:281;;:::o;9572:129::-;9606:6;9633:20;;:::i;:::-;9623:30;;9662:33;9690:4;9682:6;9662:33;:::i;:::-;9572:129;;;:::o;9707:308::-;9769:4;9859:18;9851:6;9848:30;9845:56;;;9881:18;;:::i;:::-;9845:56;9919:29;9941:6;9919:29;:::i;:::-;9911:37;;10003:4;9997;9993:15;9985:23;;9707:308;;;:::o;10021:154::-;10105:6;10100:3;10095;10082:30;10167:1;10158:6;10153:3;10149:16;10142:27;10021:154;;;:::o;10181:412::-;10259:5;10284:66;10300:49;10342:6;10300:49;:::i;:::-;10284:66;:::i;:::-;10275:75;;10373:6;10366:5;10359:21;10411:4;10404:5;10400:16;10449:3;10440:6;10435:3;10431:16;10428:25;10425:112;;;10456:79;;:::i;:::-;10425:112;10546:41;10580:6;10575:3;10570;10546:41;:::i;:::-;10265:328;10181:412;;;;;:::o;10613:340::-;10669:5;10718:3;10711:4;10703:6;10699:17;10695:27;10685:122;;10726:79;;:::i;:::-;10685:122;10843:6;10830:20;10868:79;10943:3;10935:6;10928:4;10920:6;10916:17;10868:79;:::i;:::-;10859:88;;10675:278;10613:340;;;;:::o;10959:509::-;11028:6;11077:2;11065:9;11056:7;11052:23;11048:32;11045:119;;;11083:79;;:::i;:::-;11045:119;11231:1;11220:9;11216:17;11203:31;11261:18;11253:6;11250:30;11247:117;;;11283:79;;:::i;:::-;11247:117;11388:63;11443:7;11434:6;11423:9;11419:22;11388:63;:::i;:::-;11378:73;;11174:287;10959:509;;;;:::o;11474:468::-;11539:6;11547;11596:2;11584:9;11575:7;11571:23;11567:32;11564:119;;;11602:79;;:::i;:::-;11564:119;11722:1;11747:53;11792:7;11783:6;11772:9;11768:22;11747:53;:::i;:::-;11737:63;;11693:117;11849:2;11875:50;11917:7;11908:6;11897:9;11893:22;11875:50;:::i;:::-;11865:60;;11820:115;11474:468;;;;;:::o;11948:307::-;12009:4;12099:18;12091:6;12088:30;12085:56;;;12121:18;;:::i;:::-;12085:56;12159:29;12181:6;12159:29;:::i;:::-;12151:37;;12243:4;12237;12233:15;12225:23;;11948:307;;;:::o;12261:410::-;12338:5;12363:65;12379:48;12420:6;12379:48;:::i;:::-;12363:65;:::i;:::-;12354:74;;12451:6;12444:5;12437:21;12489:4;12482:5;12478:16;12527:3;12518:6;12513:3;12509:16;12506:25;12503:112;;;12534:79;;:::i;:::-;12503:112;12624:41;12658:6;12653:3;12648;12624:41;:::i;:::-;12344:327;12261:410;;;;;:::o;12690:338::-;12745:5;12794:3;12787:4;12779:6;12775:17;12771:27;12761:122;;12802:79;;:::i;:::-;12761:122;12919:6;12906:20;12944:78;13018:3;13010:6;13003:4;12995:6;12991:17;12944:78;:::i;:::-;12935:87;;12751:277;12690:338;;;;:::o;13034:943::-;13129:6;13137;13145;13153;13202:3;13190:9;13181:7;13177:23;13173:33;13170:120;;;13209:79;;:::i;:::-;13170:120;13329:1;13354:53;13399:7;13390:6;13379:9;13375:22;13354:53;:::i;:::-;13344:63;;13300:117;13456:2;13482:53;13527:7;13518:6;13507:9;13503:22;13482:53;:::i;:::-;13472:63;;13427:118;13584:2;13610:53;13655:7;13646:6;13635:9;13631:22;13610:53;:::i;:::-;13600:63;;13555:118;13740:2;13729:9;13725:18;13712:32;13771:18;13763:6;13760:30;13757:117;;;13793:79;;:::i;:::-;13757:117;13898:62;13952:7;13943:6;13932:9;13928:22;13898:62;:::i;:::-;13888:72;;13683:287;13034:943;;;;;;;:::o;13983:474::-;14051:6;14059;14108:2;14096:9;14087:7;14083:23;14079:32;14076:119;;;14114:79;;:::i;:::-;14076:119;14234:1;14259:53;14304:7;14295:6;14284:9;14280:22;14259:53;:::i;:::-;14249:63;;14205:117;14361:2;14387:53;14432:7;14423:6;14412:9;14408:22;14387:53;:::i;:::-;14377:63;;14332:118;13983:474;;;;;:::o;14463:182::-;14603:34;14599:1;14591:6;14587:14;14580:58;14463:182;:::o;14651:366::-;14793:3;14814:67;14878:2;14873:3;14814:67;:::i;:::-;14807:74;;14890:93;14979:3;14890:93;:::i;:::-;15008:2;15003:3;14999:12;14992:19;;14651:366;;;:::o;15023:419::-;15189:4;15227:2;15216:9;15212:18;15204:26;;15276:9;15270:4;15266:20;15262:1;15251:9;15247:17;15240:47;15304:131;15430:4;15304:131;:::i;:::-;15296:139;;15023:419;;;:::o;15448:180::-;15496:77;15493:1;15486:88;15593:4;15590:1;15583:15;15617:4;15614:1;15607:15;15634:320;15678:6;15715:1;15709:4;15705:12;15695:22;;15762:1;15756:4;15752:12;15783:18;15773:81;;15839:4;15831:6;15827:17;15817:27;;15773:81;15901:2;15893:6;15890:14;15870:18;15867:38;15864:84;;15920:18;;:::i;:::-;15864:84;15685:269;15634:320;;;:::o;15960:231::-;16100:34;16096:1;16088:6;16084:14;16077:58;16169:14;16164:2;16156:6;16152:15;16145:39;15960:231;:::o;16197:366::-;16339:3;16360:67;16424:2;16419:3;16360:67;:::i;:::-;16353:74;;16436:93;16525:3;16436:93;:::i;:::-;16554:2;16549:3;16545:12;16538:19;;16197:366;;;:::o;16569:419::-;16735:4;16773:2;16762:9;16758:18;16750:26;;16822:9;16816:4;16812:20;16808:1;16797:9;16793:17;16786:47;16850:131;16976:4;16850:131;:::i;:::-;16842:139;;16569:419;;;:::o;16994:220::-;17134:34;17130:1;17122:6;17118:14;17111:58;17203:3;17198:2;17190:6;17186:15;17179:28;16994:220;:::o;17220:366::-;17362:3;17383:67;17447:2;17442:3;17383:67;:::i;:::-;17376:74;;17459:93;17548:3;17459:93;:::i;:::-;17577:2;17572:3;17568:12;17561:19;;17220:366;;;:::o;17592:419::-;17758:4;17796:2;17785:9;17781:18;17773:26;;17845:9;17839:4;17835:20;17831:1;17820:9;17816:17;17809:47;17873:131;17999:4;17873:131;:::i;:::-;17865:139;;17592:419;;;:::o;18017:243::-;18157:34;18153:1;18145:6;18141:14;18134:58;18226:26;18221:2;18213:6;18209:15;18202:51;18017:243;:::o;18266:366::-;18408:3;18429:67;18493:2;18488:3;18429:67;:::i;:::-;18422:74;;18505:93;18594:3;18505:93;:::i;:::-;18623:2;18618:3;18614:12;18607:19;;18266:366;;;:::o;18638:419::-;18804:4;18842:2;18831:9;18827:18;18819:26;;18891:9;18885:4;18881:20;18877:1;18866:9;18862:17;18855:47;18919:131;19045:4;18919:131;:::i;:::-;18911:139;;18638:419;;;:::o;19063:236::-;19203:34;19199:1;19191:6;19187:14;19180:58;19272:19;19267:2;19259:6;19255:15;19248:44;19063:236;:::o;19305:366::-;19447:3;19468:67;19532:2;19527:3;19468:67;:::i;:::-;19461:74;;19544:93;19633:3;19544:93;:::i;:::-;19662:2;19657:3;19653:12;19646:19;;19305:366;;;:::o;19677:419::-;19843:4;19881:2;19870:9;19866:18;19858:26;;19930:9;19924:4;19920:20;19916:1;19905:9;19901:17;19894:47;19958:131;20084:4;19958:131;:::i;:::-;19950:139;;19677:419;;;:::o;20102:230::-;20242:34;20238:1;20230:6;20226:14;20219:58;20311:13;20306:2;20298:6;20294:15;20287:38;20102:230;:::o;20338:366::-;20480:3;20501:67;20565:2;20560:3;20501:67;:::i;:::-;20494:74;;20577:93;20666:3;20577:93;:::i;:::-;20695:2;20690:3;20686:12;20679:19;;20338:366;;;:::o;20710:419::-;20876:4;20914:2;20903:9;20899:18;20891:26;;20963:9;20957:4;20953:20;20949:1;20938:9;20934:17;20927:47;20991:131;21117:4;20991:131;:::i;:::-;20983:139;;20710:419;;;:::o;21135:147::-;21236:11;21273:3;21258:18;;21135:147;;;;:::o;21288:114::-;;:::o;21408:398::-;21567:3;21588:83;21669:1;21664:3;21588:83;:::i;:::-;21581:90;;21680:93;21769:3;21680:93;:::i;:::-;21798:1;21793:3;21789:11;21782:18;;21408:398;;;:::o;21812:379::-;21996:3;22018:147;22161:3;22018:147;:::i;:::-;22011:154;;22182:3;22175:10;;21812:379;;;:::o;22197:180::-;22245:77;22242:1;22235:88;22342:4;22339:1;22332:15;22366:4;22363:1;22356:15;22383:305;22423:3;22442:20;22460:1;22442:20;:::i;:::-;22437:25;;22476:20;22494:1;22476:20;:::i;:::-;22471:25;;22630:1;22562:66;22558:74;22555:1;22552:81;22549:107;;;22636:18;;:::i;:::-;22549:107;22680:1;22677;22673:9;22666:16;;22383:305;;;;:::o;22694:348::-;22734:7;22757:20;22775:1;22757:20;:::i;:::-;22752:25;;22791:20;22809:1;22791:20;:::i;:::-;22786:25;;22979:1;22911:66;22907:74;22904:1;22901:81;22896:1;22889:9;22882:17;22878:105;22875:131;;;22986:18;;:::i;:::-;22875:131;23034:1;23031;23027:9;23016:20;;22694:348;;;;:::o;23048:233::-;23087:3;23110:24;23128:5;23110:24;:::i;:::-;23101:33;;23156:66;23149:5;23146:77;23143:103;;23226:18;;:::i;:::-;23143:103;23273:1;23266:5;23262:13;23255:20;;23048:233;;;:::o;23287:180::-;23335:77;23332:1;23325:88;23432:4;23429:1;23422:15;23456:4;23453:1;23446:15;23473:231;23613:34;23609:1;23601:6;23597:14;23590:58;23682:14;23677:2;23669:6;23665:15;23658:39;23473:231;:::o;23710:366::-;23852:3;23873:67;23937:2;23932:3;23873:67;:::i;:::-;23866:74;;23949:93;24038:3;23949:93;:::i;:::-;24067:2;24062:3;24058:12;24051:19;;23710:366;;;:::o;24082:419::-;24248:4;24286:2;24275:9;24271:18;24263:26;;24335:9;24329:4;24325:20;24321:1;24310:9;24306:17;24299:47;24363:131;24489:4;24363:131;:::i;:::-;24355:139;;24082:419;;;:::o;24507:141::-;24556:4;24579:3;24571:11;;24602:3;24599:1;24592:14;24636:4;24633:1;24623:18;24615:26;;24507:141;;;:::o;24654:93::-;24691:6;24738:2;24733;24726:5;24722:14;24718:23;24708:33;;24654:93;;;:::o;24753:107::-;24797:8;24847:5;24841:4;24837:16;24816:37;;24753:107;;;;:::o;24866:393::-;24935:6;24985:1;24973:10;24969:18;25008:97;25038:66;25027:9;25008:97;:::i;:::-;25126:39;25156:8;25145:9;25126:39;:::i;:::-;25114:51;;25198:4;25194:9;25187:5;25183:21;25174:30;;25247:4;25237:8;25233:19;25226:5;25223:30;25213:40;;24942:317;;24866:393;;;;;:::o;25265:60::-;25293:3;25314:5;25307:12;;25265:60;;;:::o;25331:142::-;25381:9;25414:53;25432:34;25441:24;25459:5;25441:24;:::i;:::-;25432:34;:::i;:::-;25414:53;:::i;:::-;25401:66;;25331:142;;;:::o;25479:75::-;25522:3;25543:5;25536:12;;25479:75;;;:::o;25560:269::-;25670:39;25701:7;25670:39;:::i;:::-;25731:91;25780:41;25804:16;25780:41;:::i;:::-;25772:6;25765:4;25759:11;25731:91;:::i;:::-;25725:4;25718:105;25636:193;25560:269;;;:::o;25835:73::-;25880:3;25835:73;:::o;25914:189::-;25991:32;;:::i;:::-;26032:65;26090:6;26082;26076:4;26032:65;:::i;:::-;25967:136;25914:189;;:::o;26109:186::-;26169:120;26186:3;26179:5;26176:14;26169:120;;;26240:39;26277:1;26270:5;26240:39;:::i;:::-;26213:1;26206:5;26202:13;26193:22;;26169:120;;;26109:186;;:::o;26301:543::-;26402:2;26397:3;26394:11;26391:446;;;26436:38;26468:5;26436:38;:::i;:::-;26520:29;26538:10;26520:29;:::i;:::-;26510:8;26506:44;26703:2;26691:10;26688:18;26685:49;;;26724:8;26709:23;;26685:49;26747:80;26803:22;26821:3;26803:22;:::i;:::-;26793:8;26789:37;26776:11;26747:80;:::i;:::-;26406:431;;26391:446;26301:543;;;:::o;26850:117::-;26904:8;26954:5;26948:4;26944:16;26923:37;;26850:117;;;;:::o;26973:169::-;27017:6;27050:51;27098:1;27094:6;27086:5;27083:1;27079:13;27050:51;:::i;:::-;27046:56;27131:4;27125;27121:15;27111:25;;27024:118;26973:169;;;;:::o;27147:295::-;27223:4;27369:29;27394:3;27388:4;27369:29;:::i;:::-;27361:37;;27431:3;27428:1;27424:11;27418:4;27415:21;27407:29;;27147:295;;;;:::o;27447:1395::-;27564:37;27597:3;27564:37;:::i;:::-;27666:18;27658:6;27655:30;27652:56;;;27688:18;;:::i;:::-;27652:56;27732:38;27764:4;27758:11;27732:38;:::i;:::-;27817:67;27877:6;27869;27863:4;27817:67;:::i;:::-;27911:1;27935:4;27922:17;;27967:2;27959:6;27956:14;27984:1;27979:618;;;;28641:1;28658:6;28655:77;;;28707:9;28702:3;28698:19;28692:26;28683:35;;28655:77;28758:67;28818:6;28811:5;28758:67;:::i;:::-;28752:4;28745:81;28614:222;27949:887;;27979:618;28031:4;28027:9;28019:6;28015:22;28065:37;28097:4;28065:37;:::i;:::-;28124:1;28138:208;28152:7;28149:1;28146:14;28138:208;;;28231:9;28226:3;28222:19;28216:26;28208:6;28201:42;28282:1;28274:6;28270:14;28260:24;;28329:2;28318:9;28314:18;28301:31;;28175:4;28172:1;28168:12;28163:17;;28138:208;;;28374:6;28365:7;28362:19;28359:179;;;28432:9;28427:3;28423:19;28417:26;28475:48;28517:4;28509:6;28505:17;28494:9;28475:48;:::i;:::-;28467:6;28460:64;28382:156;28359:179;28584:1;28580;28572:6;28568:14;28564:22;28558:4;28551:36;27986:611;;;27949:887;;27539:1303;;;27447:1395;;:::o;28848:228::-;28988:34;28984:1;28976:6;28972:14;28965:58;29057:11;29052:2;29044:6;29040:15;29033:36;28848:228;:::o;29082:366::-;29224:3;29245:67;29309:2;29304:3;29245:67;:::i;:::-;29238:74;;29321:93;29410:3;29321:93;:::i;:::-;29439:2;29434:3;29430:12;29423:19;;29082:366;;;:::o;29454:419::-;29620:4;29658:2;29647:9;29643:18;29635:26;;29707:9;29701:4;29697:20;29693:1;29682:9;29678:17;29671:47;29735:131;29861:4;29735:131;:::i;:::-;29727:139;;29454:419;;;:::o;29879:229::-;30019:34;30015:1;30007:6;30003:14;29996:58;30088:12;30083:2;30075:6;30071:15;30064:37;29879:229;:::o;30114:366::-;30256:3;30277:67;30341:2;30336:3;30277:67;:::i;:::-;30270:74;;30353:93;30442:3;30353:93;:::i;:::-;30471:2;30466:3;30462:12;30455:19;;30114:366;;;:::o;30486:419::-;30652:4;30690:2;30679:9;30675:18;30667:26;;30739:9;30733:4;30729:20;30725:1;30714:9;30710:17;30703:47;30767:131;30893:4;30767:131;:::i;:::-;30759:139;;30486:419;;;:::o;30911:234::-;31051:34;31047:1;31039:6;31035:14;31028:58;31120:17;31115:2;31107:6;31103:15;31096:42;30911:234;:::o;31151:366::-;31293:3;31314:67;31378:2;31373:3;31314:67;:::i;:::-;31307:74;;31390:93;31479:3;31390:93;:::i;:::-;31508:2;31503:3;31499:12;31492:19;;31151:366;;;:::o;31523:419::-;31689:4;31727:2;31716:9;31712:18;31704:26;;31776:9;31770:4;31766:20;31762:1;31751:9;31747:17;31740:47;31804:131;31930:4;31804:131;:::i;:::-;31796:139;;31523:419;;;:::o;31948:148::-;32050:11;32087:3;32072:18;;31948:148;;;;:::o;32102:377::-;32208:3;32236:39;32269:5;32236:39;:::i;:::-;32291:89;32373:6;32368:3;32291:89;:::i;:::-;32284:96;;32389:52;32434:6;32429:3;32422:4;32415:5;32411:16;32389:52;:::i;:::-;32466:6;32461:3;32457:16;32450:23;;32212:267;32102:377;;;;:::o;32509:874::-;32612:3;32649:5;32643:12;32678:36;32704:9;32678:36;:::i;:::-;32730:89;32812:6;32807:3;32730:89;:::i;:::-;32723:96;;32850:1;32839:9;32835:17;32866:1;32861:166;;;;33041:1;33036:341;;;;32828:549;;32861:166;32945:4;32941:9;32930;32926:25;32921:3;32914:38;33007:6;33000:14;32993:22;32985:6;32981:35;32976:3;32972:45;32965:52;;32861:166;;33036:341;33103:38;33135:5;33103:38;:::i;:::-;33163:1;33177:154;33191:6;33188:1;33185:13;33177:154;;;33265:7;33259:14;33255:1;33250:3;33246:11;33239:35;33315:1;33306:7;33302:15;33291:26;;33213:4;33210:1;33206:12;33201:17;;33177:154;;;33360:6;33355:3;33351:16;33344:23;;33043:334;;32828:549;;32616:767;;32509:874;;;;:::o;33389:589::-;33614:3;33636:95;33727:3;33718:6;33636:95;:::i;:::-;33629:102;;33748:95;33839:3;33830:6;33748:95;:::i;:::-;33741:102;;33860:92;33948:3;33939:6;33860:92;:::i;:::-;33853:99;;33969:3;33962:10;;33389:589;;;;;;:::o;33984:225::-;34124:34;34120:1;34112:6;34108:14;34101:58;34193:8;34188:2;34180:6;34176:15;34169:33;33984:225;:::o;34215:366::-;34357:3;34378:67;34442:2;34437:3;34378:67;:::i;:::-;34371:74;;34454:93;34543:3;34454:93;:::i;:::-;34572:2;34567:3;34563:12;34556:19;;34215:366;;;:::o;34587:419::-;34753:4;34791:2;34780:9;34776:18;34768:26;;34840:9;34834:4;34830:20;34826:1;34815:9;34811:17;34804:47;34868:131;34994:4;34868:131;:::i;:::-;34860:139;;34587:419;;;:::o;35012:231::-;35152:34;35148:1;35140:6;35136:14;35129:58;35221:14;35216:2;35208:6;35204:15;35197:39;35012:231;:::o;35249:366::-;35391:3;35412:67;35476:2;35471:3;35412:67;:::i;:::-;35405:74;;35488:93;35577:3;35488:93;:::i;:::-;35606:2;35601:3;35597:12;35590:19;;35249:366;;;:::o;35621:419::-;35787:4;35825:2;35814:9;35810:18;35802:26;;35874:9;35868:4;35864:20;35860:1;35849:9;35845:17;35838:47;35902:131;36028:4;35902:131;:::i;:::-;35894:139;;35621:419;;;:::o;36046:224::-;36186:34;36182:1;36174:6;36170:14;36163:58;36255:7;36250:2;36242:6;36238:15;36231:32;36046:224;:::o;36276:366::-;36418:3;36439:67;36503:2;36498:3;36439:67;:::i;:::-;36432:74;;36515:93;36604:3;36515:93;:::i;:::-;36633:2;36628:3;36624:12;36617:19;;36276:366;;;:::o;36648:419::-;36814:4;36852:2;36841:9;36837:18;36829:26;;36901:9;36895:4;36891:20;36887:1;36876:9;36872:17;36865:47;36929:131;37055:4;36929:131;:::i;:::-;36921:139;;36648:419;;;:::o;37073:223::-;37213:34;37209:1;37201:6;37197:14;37190:58;37282:6;37277:2;37269:6;37265:15;37258:31;37073:223;:::o;37302:366::-;37444:3;37465:67;37529:2;37524:3;37465:67;:::i;:::-;37458:74;;37541:93;37630:3;37541:93;:::i;:::-;37659:2;37654:3;37650:12;37643:19;;37302:366;;;:::o;37674:419::-;37840:4;37878:2;37867:9;37863:18;37855:26;;37927:9;37921:4;37917:20;37913:1;37902:9;37898:17;37891:47;37955:131;38081:4;37955:131;:::i;:::-;37947:139;;37674:419;;;:::o;38099:191::-;38139:4;38159:20;38177:1;38159:20;:::i;:::-;38154:25;;38193:20;38211:1;38193:20;:::i;:::-;38188:25;;38232:1;38229;38226:8;38223:34;;;38237:18;;:::i;:::-;38223:34;38282:1;38279;38275:9;38267:17;;38099:191;;;;:::o;38296:175::-;38436:27;38432:1;38424:6;38420:14;38413:51;38296:175;:::o;38477:366::-;38619:3;38640:67;38704:2;38699:3;38640:67;:::i;:::-;38633:74;;38716:93;38805:3;38716:93;:::i;:::-;38834:2;38829:3;38825:12;38818:19;;38477:366;;;:::o;38849:419::-;39015:4;39053:2;39042:9;39038:18;39030:26;;39102:9;39096:4;39092:20;39088:1;39077:9;39073:17;39066:47;39130:131;39256:4;39130:131;:::i;:::-;39122:139;;38849:419;;;:::o;39274:237::-;39414:34;39410:1;39402:6;39398:14;39391:58;39483:20;39478:2;39470:6;39466:15;39459:45;39274:237;:::o;39517:366::-;39659:3;39680:67;39744:2;39739:3;39680:67;:::i;:::-;39673:74;;39756:93;39845:3;39756:93;:::i;:::-;39874:2;39869:3;39865:12;39858:19;;39517:366;;;:::o;39889:419::-;40055:4;40093:2;40082:9;40078:18;40070:26;;40142:9;40136:4;40132:20;40128:1;40117:9;40113:17;40106:47;40170:131;40296:4;40170:131;:::i;:::-;40162:139;;39889:419;;;:::o;40314:180::-;40362:77;40359:1;40352:88;40459:4;40456:1;40449:15;40483:4;40480:1;40473:15;40500:185;40540:1;40557:20;40575:1;40557:20;:::i;:::-;40552:25;;40591:20;40609:1;40591:20;:::i;:::-;40586:25;;40630:1;40620:35;;40635:18;;:::i;:::-;40620:35;40677:1;40674;40670:9;40665:14;;40500:185;;;;:::o;40691:176::-;40723:1;40740:20;40758:1;40740:20;:::i;:::-;40735:25;;40774:20;40792:1;40774:20;:::i;:::-;40769:25;;40813:1;40803:35;;40818:18;;:::i;:::-;40803:35;40859:1;40856;40852:9;40847:14;;40691:176;;;;:::o;40873:98::-;40924:6;40958:5;40952:12;40942:22;;40873:98;;;:::o;40977:168::-;41060:11;41094:6;41089:3;41082:19;41134:4;41129:3;41125:14;41110:29;;40977:168;;;;:::o;41151:360::-;41237:3;41265:38;41297:5;41265:38;:::i;:::-;41319:70;41382:6;41377:3;41319:70;:::i;:::-;41312:77;;41398:52;41443:6;41438:3;41431:4;41424:5;41420:16;41398:52;:::i;:::-;41475:29;41497:6;41475:29;:::i;:::-;41470:3;41466:39;41459:46;;41241:270;41151:360;;;;:::o;41517:640::-;41712:4;41750:3;41739:9;41735:19;41727:27;;41764:71;41832:1;41821:9;41817:17;41808:6;41764:71;:::i;:::-;41845:72;41913:2;41902:9;41898:18;41889:6;41845:72;:::i;:::-;41927;41995:2;41984:9;41980:18;41971:6;41927:72;:::i;:::-;42046:9;42040:4;42036:20;42031:2;42020:9;42016:18;42009:48;42074:76;42145:4;42136:6;42074:76;:::i;:::-;42066:84;;41517:640;;;;;;;:::o;42163:141::-;42219:5;42250:6;42244:13;42235:22;;42266:32;42292:5;42266:32;:::i;:::-;42163:141;;;;:::o;42310:349::-;42379:6;42428:2;42416:9;42407:7;42403:23;42399:32;42396:119;;;42434:79;;:::i;:::-;42396:119;42554:1;42579:63;42634:7;42625:6;42614:9;42610:22;42579:63;:::i;:::-;42569:73;;42525:127;42310:349;;;;:::o;42665:180::-;42713:77;42710:1;42703:88;42810:4;42807:1;42800:15;42834:4;42831:1;42824:15;42851:182;42991:34;42987:1;42979:6;42975:14;42968:58;42851:182;:::o;43039:366::-;43181:3;43202:67;43266:2;43261:3;43202:67;:::i;:::-;43195:74;;43278:93;43367:3;43278:93;:::i;:::-;43396:2;43391:3;43387:12;43380:19;;43039:366;;;:::o;43411:419::-;43577:4;43615:2;43604:9;43600:18;43592:26;;43664:9;43658:4;43654:20;43650:1;43639:9;43635:17;43628:47;43692:131;43818:4;43692:131;:::i;:::-;43684:139;;43411:419;;;:::o;43836:178::-;43976:30;43972:1;43964:6;43960:14;43953:54;43836:178;:::o;44020:366::-;44162:3;44183:67;44247:2;44242:3;44183:67;:::i;:::-;44176:74;;44259:93;44348:3;44259:93;:::i;:::-;44377:2;44372:3;44368:12;44361:19;;44020:366;;;:::o;44392:419::-;44558:4;44596:2;44585:9;44581:18;44573:26;;44645:9;44639:4;44635:20;44631:1;44620:9;44616:17;44609:47;44673:131;44799:4;44673:131;:::i;:::-;44665:139;;44392:419;;;:::o

Swarm Source

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